From 84956d69d261c3ac8e67466a370681d9890a4f99 Mon Sep 17 00:00:00 2001 From: Grigory Fedyukovich Date: Tue, 14 Mar 2017 22:38:49 -0700 Subject: [PATCH 01/40] Benchmarks for JSyn --- README.md | 22 +- .../PRODUCER_CONSUMER_2_base_skolem.smt2 | 22 + .../PRODUCER_CONSUMER_2_extend_skolem.smt2 | 52 + ...SYNAPSE_2_e8_1118_e7_1043_base_skolem.smt2 | 21 + ...NAPSE_2_e8_1118_e7_1043_extend_skolem.smt2 | 46 + .../SYNAPSE_4_e8_420_e8_1525_base_skolem.smt2 | 26 + ...YNAPSE_4_e8_420_e8_1525_extend_skolem.smt2 | 28 + bench/skolems/car_1_extend_skolem.smt2 | 18 + bench/skolems/car_2_base1_skolem.smt2 | 14 + bench/skolems/car_2_base2_skolem.smt2 | 16 + bench/skolems/car_2_extend_skolem.smt2 | 18 + bench/skolems/car_3_base1_skolem.smt2 | 14 + bench/skolems/car_3_base2_skolem.smt2 | 16 + bench/skolems/car_3_e2_695_base1_skolem.smt2 | 14 + bench/skolems/car_3_e2_695_base2_skolem.smt2 | 16 + bench/skolems/car_3_e2_695_extend_skolem.smt2 | 18 + bench/skolems/car_3_e7_626_base_skolem.smt2 | 14 + bench/skolems/car_3_e7_626_extend_skolem.smt2 | 18 + bench/skolems/car_3_e8_33_base_skolem.smt2 | 14 + .../car_3_e8_33_e2_1010_base_skolem.smt2 | 14 + .../car_3_e8_33_e2_1010_extend_skolem.smt2 | 18 + .../car_3_e8_33_e7_220_base_skolem.smt2 | 14 + .../car_3_e8_33_e7_220_extend_skolem.smt2 | 18 + bench/skolems/car_3_e8_33_extend_skolem.smt2 | 18 + bench/skolems/car_3_extend_skolem.smt2 | 18 + .../car_4_e3_57_e4_1047_base_skolem.smt2 | 14 + .../car_4_e3_57_e4_1047_extend_skolem.smt2 | 18 + .../car_4_e3_57_e6_784_base_skolem.smt2 | 14 + .../car_4_e3_57_e6_784_extend_skolem.smt2 | 18 + bench/skolems/car_4_e7_592_base1_skolem.smt2 | 14 + bench/skolems/car_4_e7_592_base2_skolem.smt2 | 16 + bench/skolems/car_4_e7_592_extend_skolem.smt2 | 18 + bench/skolems/car_4_e8_118_base_skolem.smt2 | 14 + bench/skolems/car_4_e8_118_extend_skolem.smt2 | 18 + .../skolems/car_all_e2_108_base1_skolem.smt2 | 15 + .../skolems/car_all_e2_108_base2_skolem.smt2 | 19 + .../skolems/car_all_e2_108_extend_skolem.smt2 | 21 + .../car_all_e2_142_e8_194_base1_skolem.smt2 | 15 + .../car_all_e2_142_e8_194_base2_skolem.smt2 | 19 + .../car_all_e2_142_e8_194_extend_skolem.smt2 | 21 + .../car_all_e3_1068_e4_275_base_skolem.smt2 | 15 + .../car_all_e3_1068_e4_275_extend_skolem.smt2 | 21 + .../car_all_e3_1068_e6_790_base1_skolem.smt2 | 15 + .../car_all_e3_1068_e6_790_base2_skolem.smt2 | 19 + .../car_all_e3_1068_e6_790_extend_skolem.smt2 | 21 + .../skolems/car_all_e8_856_base1_skolem.smt2 | 15 + .../skolems/car_all_e8_856_base2_skolem.smt2 | 19 + .../skolems/car_all_e8_856_extend_skolem.smt2 | 21 + bench/skolems/cd_base1_skolem.smt2 | 40 + bench/skolems/cd_base2_skolem.smt2 | 53 + bench/skolems/cd_base3_skolem.smt2 | 69 + .../cd_e7_621_e8_714_base1_skolem.smt2 | 18 + .../cd_e7_621_e8_714_base2_skolem.smt2 | 33 + .../cd_e7_621_e8_714_extend_skolem.smt2 | 56 + bench/skolems/cd_extend_skolem.smt2 | 126 + .../cruise_controller_01_base_skolem.smt2 | 2454 +++++++++++++++++ .../cruise_controller_02_base_skolem.smt2 | 2454 +++++++++++++++++ .../cruise_controller_06_base_skolem.smt2 | 5 + .../cruise_controller_06_extend_skolem.smt2 | 5 + .../cruise_controller_07_base_skolem.smt2 | 5 + .../cruise_controller_07_extend_skolem.smt2 | 5 + .../cruise_controller_09_base_skolem.smt2 | 9 + .../cruise_controller_09_extend_skolem.smt2 | 18 + .../cruise_controller_11_base_skolem.smt2 | 6 + .../cruise_controller_11_extend_skolem.smt2 | 6 + .../cruise_controller_15_base_skolem.smt2 | 6 + .../cruise_controller_15_extend_skolem.smt2 | 6 + .../cruise_controller_16_base_skolem.smt2 | 6 + .../cruise_controller_16_extend_skolem.smt2 | 6 + .../cruise_controller_17_base1_skolem.smt2 | 9 + .../cruise_controller_17_base2_skolem.smt2 | 9 + .../cruise_controller_17_extend_skolem.smt2 | 10 + .../cruise_controller_20_base_skolem.smt2 | 9 + .../cruise_controller_20_extend_skolem.smt2 | 11 + .../cruise_controller_23_base_skolem.smt2 | 5 + .../cruise_controller_23_extend_skolem.smt2 | 5 + bench/skolems/ex3_e7_590_base_skolem.smt2 | 5 + .../ex3_e7_590_e7_590_base_skolem.smt2 | 5 + .../ex3_e7_590_e7_590_extend_skolem.smt2 | 8 + .../ex3_e7_590_e8_550_base_skolem.smt2 | 5 + .../ex3_e7_590_e8_550_extend_skolem.smt2 | 8 + bench/skolems/ex3_e7_590_extend_skolem.smt2 | 8 + bench/skolems/ex3_e8_120_base_skolem.smt2 | 5 + bench/skolems/ex3_e8_120_extend_skolem.smt2 | 8 + .../ex3_e8_381_e7_224_base_skolem.smt2 | 5 + .../ex3_e8_381_e7_224_extend_skolem.smt2 | 8 + bench/skolems/example_base1_skolem.smt2 | 18 + bench/skolems/example_base2_skolem.smt2 | 69 + bench/skolems/example_base3_skolem.smt2 | 67 + bench/skolems/example_extend_skolem.smt2 | 103 + .../fast_1_e7_2044_e8_1396_base_skolem.smt2 | 5 + .../fast_1_e7_2044_e8_1396_extend_skolem.smt2 | 15 + bench/skolems/fast_1_e8_747_base1_skolem.smt2 | 5 + bench/skolems/fast_1_e8_747_base2_skolem.smt2 | 14 + .../fast_1_e8_747_e8_1041_base_skolem.smt2 | 5 + .../fast_1_e8_747_e8_1041_extend_skolem.smt2 | 15 + .../skolems/fast_1_e8_747_extend_skolem.smt2 | 15 + .../fast_2_e7_2526_e8_1145_base1_skolem.smt2 | 37 + .../fast_2_e7_2526_e8_1145_base2_skolem.smt2 | 66 + .../fast_2_e7_2526_e8_1145_extend_skolem.smt2 | 72 + bench/skolems/fast_2_e8_460_base_skolem.smt2 | 37 + .../fast_2_e8_460_e8_1920_base_skolem.smt2 | 37 + .../fast_2_e8_460_e8_1920_extend_skolem.smt2 | 24 + .../skolems/fast_2_e8_460_extend_skolem.smt2 | 24 + bench/skolems/hysteresis_1_base_skolem.smt2 | 6 + bench/skolems/hysteresis_1_extend_skolem.smt2 | 6 + bench/skolems/hysteresis_2_base_skolem.smt2 | 5 + bench/skolems/hysteresis_2_extend_skolem.smt2 | 6 + bench/skolems/hysteresis_3_base_skolem.smt2 | 5 + bench/skolems/hysteresis_3_extend_skolem.smt2 | 6 + bench/skolems/hysteresis_all_base_skolem.smt2 | 6 + .../skolems/hysteresis_all_extend_skolem.smt2 | 11 + bench/skolems/newexample_base1_skolem.smt2 | 23 + bench/skolems/newexample_base2_skolem.smt2 | 56 + bench/skolems/newexample_base3_skolem.smt2 | 78 + bench/skolems/newexample_extend_skolem.smt2 | 93 + bench/skolems/rtp_1_base_skolem.smt2 | 115 + bench/skolems/rtp_1_extend_skolem.smt2 | 118 + bench/skolems/speed_e7_207_base_skolem.smt2 | 6 + .../speed_e7_207_e7_538_base_skolem.smt2 | 6 + .../speed_e7_207_e7_538_extend_skolem.smt2 | 6 + .../speed_e7_207_e8_507_base1_skolem.smt2 | 6 + .../speed_e7_207_e8_507_base2_skolem.smt2 | 6 + .../speed_e7_207_e8_507_extend_skolem.smt2 | 6 + bench/skolems/speed_e7_207_extend_skolem.smt2 | 6 + bench/skolems/speed_e8_136_base_skolem.smt2 | 6 + bench/skolems/speed_e8_136_extend_skolem.smt2 | 6 + .../speed_e8_649_e7_709_base_skolem.smt2 | 6 + .../speed_e8_649_e7_709_extend_skolem.smt2 | 6 + .../skolems/tramway_e7_1834_base1_skolem.smt2 | 76 + .../skolems/tramway_e7_1834_base2_skolem.smt2 | 109 + .../skolems/tramway_e7_1834_base3_skolem.smt2 | 109 + .../skolems/tramway_e7_1834_base4_skolem.smt2 | 109 + .../tramway_e7_1834_e7_2363_base1_skolem.smt2 | 79 + .../tramway_e7_1834_e7_2363_base2_skolem.smt2 | 108 + .../tramway_e7_1834_e7_2363_base3_skolem.smt2 | 108 + .../tramway_e7_1834_e7_2363_base4_skolem.smt2 | 108 + ...tramway_e7_1834_e7_2363_extend_skolem.smt2 | 215 ++ .../tramway_e7_1834_extend_skolem.smt2 | 216 ++ .../PRODUCER_CONSUMER_2_base_s_part.smt2 | 25 + .../PRODUCER_CONSUMER_2_base_t_part.smt2 | 25 + .../PRODUCER_CONSUMER_2_extend_s_part.smt2 | 26 + .../PRODUCER_CONSUMER_2_extend_t_part.smt2 | 26 + ...SYNAPSE_2_e8_1118_e7_1043_base_s_part.smt2 | 25 + ...SYNAPSE_2_e8_1118_e7_1043_base_t_part.smt2 | 25 + ...NAPSE_2_e8_1118_e7_1043_extend_s_part.smt2 | 26 + ...NAPSE_2_e8_1118_e7_1043_extend_t_part.smt2 | 26 + .../SYNAPSE_4_e8_420_e8_1525_base_s_part.smt2 | 23 + .../SYNAPSE_4_e8_420_e8_1525_base_t_part.smt2 | 23 + ...YNAPSE_4_e8_420_e8_1525_extend_s_part.smt2 | 24 + ...YNAPSE_4_e8_420_e8_1525_extend_t_part.smt2 | 24 + bench/tasks/car_1_extend_s_part.smt2 | 20 + bench/tasks/car_1_extend_t_part.smt2 | 20 + bench/tasks/car_2_base1_s_part.smt2 | 19 + bench/tasks/car_2_base1_t_part.smt2 | 18 + bench/tasks/car_2_base2_s_part.smt2 | 27 + bench/tasks/car_2_base2_t_part.smt2 | 18 + bench/tasks/car_2_extend_s_part.smt2 | 20 + bench/tasks/car_2_extend_t_part.smt2 | 19 + bench/tasks/car_3_base1_s_part.smt2 | 19 + bench/tasks/car_3_base1_t_part.smt2 | 17 + bench/tasks/car_3_base2_s_part.smt2 | 25 + bench/tasks/car_3_base2_t_part.smt2 | 24 + bench/tasks/car_3_e2_695_base1_s_part.smt2 | 18 + bench/tasks/car_3_e2_695_base1_t_part.smt2 | 17 + bench/tasks/car_3_e2_695_base2_s_part.smt2 | 27 + bench/tasks/car_3_e2_695_base2_t_part.smt2 | 24 + bench/tasks/car_3_e2_695_extend_s_part.smt2 | 20 + bench/tasks/car_3_e2_695_extend_t_part.smt2 | 18 + bench/tasks/car_3_e7_626_base_s_part.smt2 | 17 + bench/tasks/car_3_e7_626_base_t_part.smt2 | 17 + bench/tasks/car_3_e7_626_extend_s_part.smt2 | 18 + bench/tasks/car_3_e7_626_extend_t_part.smt2 | 18 + bench/tasks/car_3_e8_33_base_s_part.smt2 | 17 + bench/tasks/car_3_e8_33_base_t_part.smt2 | 17 + .../car_3_e8_33_e2_1010_base_s_part.smt2 | 17 + .../car_3_e8_33_e2_1010_base_t_part.smt2 | 17 + .../car_3_e8_33_e2_1010_extend_s_part.smt2 | 18 + .../car_3_e8_33_e2_1010_extend_t_part.smt2 | 18 + .../tasks/car_3_e8_33_e7_220_base_s_part.smt2 | 19 + .../tasks/car_3_e8_33_e7_220_base_t_part.smt2 | 17 + .../car_3_e8_33_e7_220_extend_s_part.smt2 | 20 + .../car_3_e8_33_e7_220_extend_t_part.smt2 | 18 + bench/tasks/car_3_e8_33_extend_s_part.smt2 | 18 + bench/tasks/car_3_e8_33_extend_t_part.smt2 | 18 + bench/tasks/car_3_extend_s_part.smt2 | 20 + bench/tasks/car_3_extend_t_part.smt2 | 19 + .../car_4_e3_57_e4_1047_base_s_part.smt2 | 19 + .../car_4_e3_57_e4_1047_base_t_part.smt2 | 17 + .../car_4_e3_57_e4_1047_extend_s_part.smt2 | 18 + .../car_4_e3_57_e4_1047_extend_t_part.smt2 | 18 + .../tasks/car_4_e3_57_e6_784_base_s_part.smt2 | 19 + .../tasks/car_4_e3_57_e6_784_base_t_part.smt2 | 17 + .../car_4_e3_57_e6_784_extend_s_part.smt2 | 20 + .../car_4_e3_57_e6_784_extend_t_part.smt2 | 18 + bench/tasks/car_4_e7_592_base1_s_part.smt2 | 19 + bench/tasks/car_4_e7_592_base1_t_part.smt2 | 17 + bench/tasks/car_4_e7_592_base2_s_part.smt2 | 25 + bench/tasks/car_4_e7_592_base2_t_part.smt2 | 23 + bench/tasks/car_4_e7_592_extend_s_part.smt2 | 20 + bench/tasks/car_4_e7_592_extend_t_part.smt2 | 18 + bench/tasks/car_4_e8_118_base_s_part.smt2 | 19 + bench/tasks/car_4_e8_118_base_t_part.smt2 | 17 + bench/tasks/car_4_e8_118_extend_s_part.smt2 | 20 + bench/tasks/car_4_e8_118_extend_t_part.smt2 | 18 + bench/tasks/car_all_e2_108_base1_s_part.smt2 | 19 + bench/tasks/car_all_e2_108_base1_t_part.smt2 | 19 + bench/tasks/car_all_e2_108_base2_s_part.smt2 | 30 + bench/tasks/car_all_e2_108_base2_t_part.smt2 | 26 + bench/tasks/car_all_e2_108_extend_s_part.smt2 | 20 + bench/tasks/car_all_e2_108_extend_t_part.smt2 | 20 + .../car_all_e2_142_e8_194_base1_s_part.smt2 | 19 + .../car_all_e2_142_e8_194_base1_t_part.smt2 | 19 + .../car_all_e2_142_e8_194_base2_s_part.smt2 | 30 + .../car_all_e2_142_e8_194_base2_t_part.smt2 | 26 + .../car_all_e2_142_e8_194_extend_s_part.smt2 | 20 + .../car_all_e2_142_e8_194_extend_t_part.smt2 | 20 + .../car_all_e3_1068_e4_275_base_s_part.smt2 | 19 + .../car_all_e3_1068_e4_275_base_t_part.smt2 | 19 + .../car_all_e3_1068_e4_275_extend_s_part.smt2 | 20 + .../car_all_e3_1068_e4_275_extend_t_part.smt2 | 20 + .../car_all_e3_1068_e6_790_base1_s_part.smt2 | 19 + .../car_all_e3_1068_e6_790_base1_t_part.smt2 | 19 + .../car_all_e3_1068_e6_790_base2_s_part.smt2 | 30 + .../car_all_e3_1068_e6_790_base2_t_part.smt2 | 26 + .../car_all_e3_1068_e6_790_extend_s_part.smt2 | 20 + .../car_all_e3_1068_e6_790_extend_t_part.smt2 | 20 + bench/tasks/car_all_e8_856_base1_s_part.smt2 | 19 + bench/tasks/car_all_e8_856_base1_t_part.smt2 | 19 + bench/tasks/car_all_e8_856_base2_s_part.smt2 | 28 + bench/tasks/car_all_e8_856_base2_t_part.smt2 | 26 + bench/tasks/car_all_e8_856_extend_s_part.smt2 | 20 + bench/tasks/car_all_e8_856_extend_t_part.smt2 | 20 + bench/tasks/cd_base1_s_part.smt2 | 37 + bench/tasks/cd_base1_t_part.smt2 | 37 + bench/tasks/cd_base2_s_part.smt2 | 55 + bench/tasks/cd_base2_t_part.smt2 | 53 + bench/tasks/cd_base3_s_part.smt2 | 73 + bench/tasks/cd_base3_t_part.smt2 | 69 + .../tasks/cd_e7_621_e8_714_base1_s_part.smt2 | 25 + .../tasks/cd_e7_621_e8_714_base1_t_part.smt2 | 25 + .../tasks/cd_e7_621_e8_714_base2_s_part.smt2 | 37 + .../tasks/cd_e7_621_e8_714_base2_t_part.smt2 | 35 + .../tasks/cd_e7_621_e8_714_extend_s_part.smt2 | 26 + .../tasks/cd_e7_621_e8_714_extend_t_part.smt2 | 26 + bench/tasks/cd_extend_s_part.smt2 | 38 + bench/tasks/cd_extend_t_part.smt2 | 38 + .../cruise_controller_01_base_s_part.smt2 | 161 ++ .../cruise_controller_01_base_t_part.smt2 | 160 ++ .../cruise_controller_01_extend_s_part.smt2 | 240 ++ .../cruise_controller_01_extend_t_part.smt2 | 238 ++ .../cruise_controller_02_base_s_part.smt2 | 160 ++ .../cruise_controller_02_base_t_part.smt2 | 161 ++ .../cruise_controller_02_extend_s_part.smt2 | 240 ++ .../cruise_controller_02_extend_t_part.smt2 | 162 ++ .../cruise_controller_06_base_s_part.smt2 | 9 + .../cruise_controller_06_base_t_part.smt2 | 9 + .../cruise_controller_06_extend_s_part.smt2 | 10 + .../cruise_controller_06_extend_t_part.smt2 | 10 + .../cruise_controller_07_base_s_part.smt2 | 9 + .../cruise_controller_07_base_t_part.smt2 | 9 + .../cruise_controller_07_extend_s_part.smt2 | 10 + .../cruise_controller_07_extend_t_part.smt2 | 10 + .../cruise_controller_09_base_s_part.smt2 | 11 + .../cruise_controller_09_base_t_part.smt2 | 11 + .../cruise_controller_09_extend_s_part.smt2 | 12 + .../cruise_controller_09_extend_t_part.smt2 | 12 + .../cruise_controller_11_base_s_part.smt2 | 11 + .../cruise_controller_11_base_t_part.smt2 | 11 + .../cruise_controller_11_extend_s_part.smt2 | 12 + .../cruise_controller_11_extend_t_part.smt2 | 12 + .../cruise_controller_15_base_s_part.smt2 | 11 + .../cruise_controller_15_base_t_part.smt2 | 11 + .../cruise_controller_15_extend_s_part.smt2 | 12 + .../cruise_controller_15_extend_t_part.smt2 | 12 + .../cruise_controller_16_base_s_part.smt2 | 11 + .../cruise_controller_16_base_t_part.smt2 | 11 + .../cruise_controller_16_extend_s_part.smt2 | 12 + .../cruise_controller_16_extend_t_part.smt2 | 12 + .../cruise_controller_17_base1_s_part.smt2 | 11 + .../cruise_controller_17_base1_t_part.smt2 | 11 + .../cruise_controller_17_base2_s_part.smt2 | 16 + .../cruise_controller_17_base2_t_part.smt2 | 14 + .../cruise_controller_17_extend_s_part.smt2 | 12 + .../cruise_controller_17_extend_t_part.smt2 | 12 + .../cruise_controller_20_base_s_part.smt2 | 11 + .../cruise_controller_20_base_t_part.smt2 | 11 + .../cruise_controller_20_extend_s_part.smt2 | 12 + .../cruise_controller_20_extend_t_part.smt2 | 12 + .../cruise_controller_23_base_s_part.smt2 | 9 + .../cruise_controller_23_base_t_part.smt2 | 9 + .../cruise_controller_23_extend_s_part.smt2 | 10 + .../cruise_controller_23_extend_t_part.smt2 | 10 + bench/tasks/ex3_e7_590_base_s_part.smt2 | 11 + bench/tasks/ex3_e7_590_base_t_part.smt2 | 11 + .../tasks/ex3_e7_590_e7_590_base_s_part.smt2 | 11 + .../tasks/ex3_e7_590_e7_590_base_t_part.smt2 | 11 + .../ex3_e7_590_e7_590_extend_s_part.smt2 | 12 + .../ex3_e7_590_e7_590_extend_t_part.smt2 | 12 + .../tasks/ex3_e7_590_e8_550_base_s_part.smt2 | 11 + .../tasks/ex3_e7_590_e8_550_base_t_part.smt2 | 11 + .../ex3_e7_590_e8_550_extend_s_part.smt2 | 12 + .../ex3_e7_590_e8_550_extend_t_part.smt2 | 12 + bench/tasks/ex3_e7_590_extend_s_part.smt2 | 12 + bench/tasks/ex3_e7_590_extend_t_part.smt2 | 12 + bench/tasks/ex3_e8_120_base_s_part.smt2 | 11 + bench/tasks/ex3_e8_120_base_t_part.smt2 | 11 + bench/tasks/ex3_e8_120_extend_s_part.smt2 | 12 + bench/tasks/ex3_e8_120_extend_t_part.smt2 | 12 + .../tasks/ex3_e8_381_e7_224_base_s_part.smt2 | 11 + .../tasks/ex3_e8_381_e7_224_base_t_part.smt2 | 11 + .../ex3_e8_381_e7_224_extend_s_part.smt2 | 12 + .../ex3_e8_381_e7_224_extend_t_part.smt2 | 12 + bench/tasks/example_base1_s_part.smt2 | 23 + bench/tasks/example_base1_t_part.smt2 | 23 + bench/tasks/example_base2_s_part.smt2 | 34 + bench/tasks/example_base2_t_part.smt2 | 32 + bench/tasks/example_base3_s_part.smt2 | 45 + bench/tasks/example_base3_t_part.smt2 | 41 + bench/tasks/example_extend_s_part.smt2 | 35 + bench/tasks/example_extend_t_part.smt2 | 33 + .../fast_1_e7_2044_e8_1396_base_s_part.smt2 | 15 + .../fast_1_e7_2044_e8_1396_base_t_part.smt2 | 15 + .../fast_1_e7_2044_e8_1396_extend_s_part.smt2 | 16 + .../fast_1_e7_2044_e8_1396_extend_t_part.smt2 | 16 + bench/tasks/fast_1_e8_747_base1_s_part.smt2 | 15 + bench/tasks/fast_1_e8_747_base1_t_part.smt2 | 15 + bench/tasks/fast_1_e8_747_base2_s_part.smt2 | 22 + bench/tasks/fast_1_e8_747_base2_t_part.smt2 | 20 + .../fast_1_e8_747_e8_1041_base_s_part.smt2 | 15 + .../fast_1_e8_747_e8_1041_base_t_part.smt2 | 15 + .../fast_1_e8_747_e8_1041_extend_s_part.smt2 | 16 + .../fast_1_e8_747_e8_1041_extend_t_part.smt2 | 16 + bench/tasks/fast_1_e8_747_extend_s_part.smt2 | 16 + bench/tasks/fast_1_e8_747_extend_t_part.smt2 | 16 + .../fast_2_e7_2526_e8_1145_base1_s_part.smt2 | 49 + .../fast_2_e7_2526_e8_1145_base1_t_part.smt2 | 49 + .../fast_2_e7_2526_e8_1145_base2_s_part.smt2 | 73 + .../fast_2_e7_2526_e8_1145_base2_t_part.smt2 | 71 + .../fast_2_e7_2526_e8_1145_extend_s_part.smt2 | 50 + .../fast_2_e7_2526_e8_1145_extend_t_part.smt2 | 50 + bench/tasks/fast_2_e8_460_base_s_part.smt2 | 49 + bench/tasks/fast_2_e8_460_base_t_part.smt2 | 49 + .../fast_2_e8_460_e8_1920_base_s_part.smt2 | 49 + .../fast_2_e8_460_e8_1920_base_t_part.smt2 | 49 + .../fast_2_e8_460_e8_1920_extend_s_part.smt2 | 50 + .../fast_2_e8_460_e8_1920_extend_t_part.smt2 | 50 + bench/tasks/fast_2_e8_460_extend_s_part.smt2 | 50 + bench/tasks/fast_2_e8_460_extend_t_part.smt2 | 50 + bench/tasks/hysteresis_1_base_s_part.smt2 | 11 + bench/tasks/hysteresis_1_base_t_part.smt2 | 11 + bench/tasks/hysteresis_1_extend_s_part.smt2 | 12 + bench/tasks/hysteresis_1_extend_t_part.smt2 | 12 + bench/tasks/hysteresis_2_base_s_part.smt2 | 11 + bench/tasks/hysteresis_2_base_t_part.smt2 | 11 + bench/tasks/hysteresis_2_extend_s_part.smt2 | 12 + bench/tasks/hysteresis_2_extend_t_part.smt2 | 12 + bench/tasks/hysteresis_3_base_s_part.smt2 | 11 + bench/tasks/hysteresis_3_base_t_part.smt2 | 11 + bench/tasks/hysteresis_3_extend_s_part.smt2 | 12 + bench/tasks/hysteresis_3_extend_t_part.smt2 | 12 + bench/tasks/hysteresis_all_base_s_part.smt2 | 11 + bench/tasks/hysteresis_all_base_t_part.smt2 | 11 + bench/tasks/hysteresis_all_extend_s_part.smt2 | 12 + bench/tasks/hysteresis_all_extend_t_part.smt2 | 12 + bench/tasks/newexample_base1_s_part.smt2 | 25 + bench/tasks/newexample_base1_t_part.smt2 | 25 + bench/tasks/newexample_base2_s_part.smt2 | 37 + bench/tasks/newexample_base2_t_part.smt2 | 35 + bench/tasks/newexample_base3_s_part.smt2 | 49 + bench/tasks/newexample_base3_t_part.smt2 | 45 + bench/tasks/newexample_extend_s_part.smt2 | 38 + bench/tasks/newexample_extend_t_part.smt2 | 36 + bench/tasks/rtp_1_base_s_part.smt2 | 37 + bench/tasks/rtp_1_base_t_part.smt2 | 37 + bench/tasks/rtp_1_extend_s_part.smt2 | 38 + bench/tasks/rtp_1_extend_t_part.smt2 | 38 + bench/tasks/speed_e7_207_base_s_part.smt2 | 11 + bench/tasks/speed_e7_207_base_t_part.smt2 | 11 + .../speed_e7_207_e7_538_base_s_part.smt2 | 11 + .../speed_e7_207_e7_538_base_t_part.smt2 | 11 + .../speed_e7_207_e7_538_extend_s_part.smt2 | 12 + .../speed_e7_207_e7_538_extend_t_part.smt2 | 12 + .../speed_e7_207_e8_507_base1_s_part.smt2 | 11 + .../speed_e7_207_e8_507_base1_t_part.smt2 | 11 + .../speed_e7_207_e8_507_base2_s_part.smt2 | 16 + .../speed_e7_207_e8_507_base2_t_part.smt2 | 14 + .../speed_e7_207_e8_507_extend_s_part.smt2 | 12 + .../speed_e7_207_e8_507_extend_t_part.smt2 | 12 + bench/tasks/speed_e7_207_extend_s_part.smt2 | 12 + bench/tasks/speed_e7_207_extend_t_part.smt2 | 12 + bench/tasks/speed_e8_136_base_s_part.smt2 | 11 + bench/tasks/speed_e8_136_base_t_part.smt2 | 11 + bench/tasks/speed_e8_136_extend_s_part.smt2 | 12 + bench/tasks/speed_e8_136_extend_t_part.smt2 | 12 + .../speed_e8_649_e7_709_base_s_part.smt2 | 11 + .../speed_e8_649_e7_709_base_t_part.smt2 | 11 + .../speed_e8_649_e7_709_extend_s_part.smt2 | 12 + .../speed_e8_649_e7_709_extend_t_part.smt2 | 12 + bench/tasks/tramway_e7_1834_base1_s_part.smt2 | 61 + bench/tasks/tramway_e7_1834_base1_t_part.smt2 | 61 + bench/tasks/tramway_e7_1834_base2_s_part.smt2 | 91 + bench/tasks/tramway_e7_1834_base2_t_part.smt2 | 89 + bench/tasks/tramway_e7_1834_base3_s_part.smt2 | 121 + bench/tasks/tramway_e7_1834_base3_t_part.smt2 | 117 + bench/tasks/tramway_e7_1834_base4_s_part.smt2 | 151 + bench/tasks/tramway_e7_1834_base4_t_part.smt2 | 145 + .../tramway_e7_1834_e7_2363_base1_s_part.smt2 | 61 + .../tramway_e7_1834_e7_2363_base1_t_part.smt2 | 61 + .../tramway_e7_1834_e7_2363_base2_s_part.smt2 | 91 + .../tramway_e7_1834_e7_2363_base2_t_part.smt2 | 89 + .../tramway_e7_1834_e7_2363_base3_s_part.smt2 | 121 + .../tramway_e7_1834_e7_2363_base3_t_part.smt2 | 117 + .../tramway_e7_1834_e7_2363_base4_s_part.smt2 | 151 + .../tramway_e7_1834_e7_2363_base4_t_part.smt2 | 145 + ...tramway_e7_1834_e7_2363_extend_s_part.smt2 | 62 + ...tramway_e7_1834_e7_2363_extend_t_part.smt2 | 63 + .../tasks/tramway_e7_1834_extend_s_part.smt2 | 62 + .../tasks/tramway_e7_1834_extend_t_part.smt2 | 62 + 419 files changed, 17605 insertions(+), 4 deletions(-) create mode 100644 bench/skolems/PRODUCER_CONSUMER_2_base_skolem.smt2 create mode 100644 bench/skolems/PRODUCER_CONSUMER_2_extend_skolem.smt2 create mode 100644 bench/skolems/SYNAPSE_2_e8_1118_e7_1043_base_skolem.smt2 create mode 100644 bench/skolems/SYNAPSE_2_e8_1118_e7_1043_extend_skolem.smt2 create mode 100644 bench/skolems/SYNAPSE_4_e8_420_e8_1525_base_skolem.smt2 create mode 100644 bench/skolems/SYNAPSE_4_e8_420_e8_1525_extend_skolem.smt2 create mode 100644 bench/skolems/car_1_extend_skolem.smt2 create mode 100644 bench/skolems/car_2_base1_skolem.smt2 create mode 100644 bench/skolems/car_2_base2_skolem.smt2 create mode 100644 bench/skolems/car_2_extend_skolem.smt2 create mode 100644 bench/skolems/car_3_base1_skolem.smt2 create mode 100644 bench/skolems/car_3_base2_skolem.smt2 create mode 100644 bench/skolems/car_3_e2_695_base1_skolem.smt2 create mode 100644 bench/skolems/car_3_e2_695_base2_skolem.smt2 create mode 100644 bench/skolems/car_3_e2_695_extend_skolem.smt2 create mode 100644 bench/skolems/car_3_e7_626_base_skolem.smt2 create mode 100644 bench/skolems/car_3_e7_626_extend_skolem.smt2 create mode 100644 bench/skolems/car_3_e8_33_base_skolem.smt2 create mode 100644 bench/skolems/car_3_e8_33_e2_1010_base_skolem.smt2 create mode 100644 bench/skolems/car_3_e8_33_e2_1010_extend_skolem.smt2 create mode 100644 bench/skolems/car_3_e8_33_e7_220_base_skolem.smt2 create mode 100644 bench/skolems/car_3_e8_33_e7_220_extend_skolem.smt2 create mode 100644 bench/skolems/car_3_e8_33_extend_skolem.smt2 create mode 100644 bench/skolems/car_3_extend_skolem.smt2 create mode 100644 bench/skolems/car_4_e3_57_e4_1047_base_skolem.smt2 create mode 100644 bench/skolems/car_4_e3_57_e4_1047_extend_skolem.smt2 create mode 100644 bench/skolems/car_4_e3_57_e6_784_base_skolem.smt2 create mode 100644 bench/skolems/car_4_e3_57_e6_784_extend_skolem.smt2 create mode 100644 bench/skolems/car_4_e7_592_base1_skolem.smt2 create mode 100644 bench/skolems/car_4_e7_592_base2_skolem.smt2 create mode 100644 bench/skolems/car_4_e7_592_extend_skolem.smt2 create mode 100644 bench/skolems/car_4_e8_118_base_skolem.smt2 create mode 100644 bench/skolems/car_4_e8_118_extend_skolem.smt2 create mode 100644 bench/skolems/car_all_e2_108_base1_skolem.smt2 create mode 100644 bench/skolems/car_all_e2_108_base2_skolem.smt2 create mode 100644 bench/skolems/car_all_e2_108_extend_skolem.smt2 create mode 100644 bench/skolems/car_all_e2_142_e8_194_base1_skolem.smt2 create mode 100644 bench/skolems/car_all_e2_142_e8_194_base2_skolem.smt2 create mode 100644 bench/skolems/car_all_e2_142_e8_194_extend_skolem.smt2 create mode 100644 bench/skolems/car_all_e3_1068_e4_275_base_skolem.smt2 create mode 100644 bench/skolems/car_all_e3_1068_e4_275_extend_skolem.smt2 create mode 100644 bench/skolems/car_all_e3_1068_e6_790_base1_skolem.smt2 create mode 100644 bench/skolems/car_all_e3_1068_e6_790_base2_skolem.smt2 create mode 100644 bench/skolems/car_all_e3_1068_e6_790_extend_skolem.smt2 create mode 100644 bench/skolems/car_all_e8_856_base1_skolem.smt2 create mode 100644 bench/skolems/car_all_e8_856_base2_skolem.smt2 create mode 100644 bench/skolems/car_all_e8_856_extend_skolem.smt2 create mode 100644 bench/skolems/cd_base1_skolem.smt2 create mode 100644 bench/skolems/cd_base2_skolem.smt2 create mode 100644 bench/skolems/cd_base3_skolem.smt2 create mode 100644 bench/skolems/cd_e7_621_e8_714_base1_skolem.smt2 create mode 100644 bench/skolems/cd_e7_621_e8_714_base2_skolem.smt2 create mode 100644 bench/skolems/cd_e7_621_e8_714_extend_skolem.smt2 create mode 100644 bench/skolems/cd_extend_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_01_base_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_02_base_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_06_base_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_06_extend_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_07_base_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_07_extend_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_09_base_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_09_extend_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_11_base_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_11_extend_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_15_base_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_15_extend_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_16_base_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_16_extend_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_17_base1_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_17_base2_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_17_extend_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_20_base_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_20_extend_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_23_base_skolem.smt2 create mode 100644 bench/skolems/cruise_controller_23_extend_skolem.smt2 create mode 100644 bench/skolems/ex3_e7_590_base_skolem.smt2 create mode 100644 bench/skolems/ex3_e7_590_e7_590_base_skolem.smt2 create mode 100644 bench/skolems/ex3_e7_590_e7_590_extend_skolem.smt2 create mode 100644 bench/skolems/ex3_e7_590_e8_550_base_skolem.smt2 create mode 100644 bench/skolems/ex3_e7_590_e8_550_extend_skolem.smt2 create mode 100644 bench/skolems/ex3_e7_590_extend_skolem.smt2 create mode 100644 bench/skolems/ex3_e8_120_base_skolem.smt2 create mode 100644 bench/skolems/ex3_e8_120_extend_skolem.smt2 create mode 100644 bench/skolems/ex3_e8_381_e7_224_base_skolem.smt2 create mode 100644 bench/skolems/ex3_e8_381_e7_224_extend_skolem.smt2 create mode 100644 bench/skolems/example_base1_skolem.smt2 create mode 100644 bench/skolems/example_base2_skolem.smt2 create mode 100644 bench/skolems/example_base3_skolem.smt2 create mode 100644 bench/skolems/example_extend_skolem.smt2 create mode 100644 bench/skolems/fast_1_e7_2044_e8_1396_base_skolem.smt2 create mode 100644 bench/skolems/fast_1_e7_2044_e8_1396_extend_skolem.smt2 create mode 100644 bench/skolems/fast_1_e8_747_base1_skolem.smt2 create mode 100644 bench/skolems/fast_1_e8_747_base2_skolem.smt2 create mode 100644 bench/skolems/fast_1_e8_747_e8_1041_base_skolem.smt2 create mode 100644 bench/skolems/fast_1_e8_747_e8_1041_extend_skolem.smt2 create mode 100644 bench/skolems/fast_1_e8_747_extend_skolem.smt2 create mode 100644 bench/skolems/fast_2_e7_2526_e8_1145_base1_skolem.smt2 create mode 100644 bench/skolems/fast_2_e7_2526_e8_1145_base2_skolem.smt2 create mode 100644 bench/skolems/fast_2_e7_2526_e8_1145_extend_skolem.smt2 create mode 100644 bench/skolems/fast_2_e8_460_base_skolem.smt2 create mode 100644 bench/skolems/fast_2_e8_460_e8_1920_base_skolem.smt2 create mode 100644 bench/skolems/fast_2_e8_460_e8_1920_extend_skolem.smt2 create mode 100644 bench/skolems/fast_2_e8_460_extend_skolem.smt2 create mode 100644 bench/skolems/hysteresis_1_base_skolem.smt2 create mode 100644 bench/skolems/hysteresis_1_extend_skolem.smt2 create mode 100644 bench/skolems/hysteresis_2_base_skolem.smt2 create mode 100644 bench/skolems/hysteresis_2_extend_skolem.smt2 create mode 100644 bench/skolems/hysteresis_3_base_skolem.smt2 create mode 100644 bench/skolems/hysteresis_3_extend_skolem.smt2 create mode 100644 bench/skolems/hysteresis_all_base_skolem.smt2 create mode 100644 bench/skolems/hysteresis_all_extend_skolem.smt2 create mode 100644 bench/skolems/newexample_base1_skolem.smt2 create mode 100644 bench/skolems/newexample_base2_skolem.smt2 create mode 100644 bench/skolems/newexample_base3_skolem.smt2 create mode 100644 bench/skolems/newexample_extend_skolem.smt2 create mode 100644 bench/skolems/rtp_1_base_skolem.smt2 create mode 100644 bench/skolems/rtp_1_extend_skolem.smt2 create mode 100644 bench/skolems/speed_e7_207_base_skolem.smt2 create mode 100644 bench/skolems/speed_e7_207_e7_538_base_skolem.smt2 create mode 100644 bench/skolems/speed_e7_207_e7_538_extend_skolem.smt2 create mode 100644 bench/skolems/speed_e7_207_e8_507_base1_skolem.smt2 create mode 100644 bench/skolems/speed_e7_207_e8_507_base2_skolem.smt2 create mode 100644 bench/skolems/speed_e7_207_e8_507_extend_skolem.smt2 create mode 100644 bench/skolems/speed_e7_207_extend_skolem.smt2 create mode 100644 bench/skolems/speed_e8_136_base_skolem.smt2 create mode 100644 bench/skolems/speed_e8_136_extend_skolem.smt2 create mode 100644 bench/skolems/speed_e8_649_e7_709_base_skolem.smt2 create mode 100644 bench/skolems/speed_e8_649_e7_709_extend_skolem.smt2 create mode 100644 bench/skolems/tramway_e7_1834_base1_skolem.smt2 create mode 100644 bench/skolems/tramway_e7_1834_base2_skolem.smt2 create mode 100644 bench/skolems/tramway_e7_1834_base3_skolem.smt2 create mode 100644 bench/skolems/tramway_e7_1834_base4_skolem.smt2 create mode 100644 bench/skolems/tramway_e7_1834_e7_2363_base1_skolem.smt2 create mode 100644 bench/skolems/tramway_e7_1834_e7_2363_base2_skolem.smt2 create mode 100644 bench/skolems/tramway_e7_1834_e7_2363_base3_skolem.smt2 create mode 100644 bench/skolems/tramway_e7_1834_e7_2363_base4_skolem.smt2 create mode 100644 bench/skolems/tramway_e7_1834_e7_2363_extend_skolem.smt2 create mode 100644 bench/skolems/tramway_e7_1834_extend_skolem.smt2 create mode 100755 bench/tasks/PRODUCER_CONSUMER_2_base_s_part.smt2 create mode 100755 bench/tasks/PRODUCER_CONSUMER_2_base_t_part.smt2 create mode 100755 bench/tasks/PRODUCER_CONSUMER_2_extend_s_part.smt2 create mode 100755 bench/tasks/PRODUCER_CONSUMER_2_extend_t_part.smt2 create mode 100755 bench/tasks/SYNAPSE_2_e8_1118_e7_1043_base_s_part.smt2 create mode 100755 bench/tasks/SYNAPSE_2_e8_1118_e7_1043_base_t_part.smt2 create mode 100755 bench/tasks/SYNAPSE_2_e8_1118_e7_1043_extend_s_part.smt2 create mode 100755 bench/tasks/SYNAPSE_2_e8_1118_e7_1043_extend_t_part.smt2 create mode 100755 bench/tasks/SYNAPSE_4_e8_420_e8_1525_base_s_part.smt2 create mode 100755 bench/tasks/SYNAPSE_4_e8_420_e8_1525_base_t_part.smt2 create mode 100755 bench/tasks/SYNAPSE_4_e8_420_e8_1525_extend_s_part.smt2 create mode 100755 bench/tasks/SYNAPSE_4_e8_420_e8_1525_extend_t_part.smt2 create mode 100755 bench/tasks/car_1_extend_s_part.smt2 create mode 100755 bench/tasks/car_1_extend_t_part.smt2 create mode 100755 bench/tasks/car_2_base1_s_part.smt2 create mode 100755 bench/tasks/car_2_base1_t_part.smt2 create mode 100755 bench/tasks/car_2_base2_s_part.smt2 create mode 100755 bench/tasks/car_2_base2_t_part.smt2 create mode 100755 bench/tasks/car_2_extend_s_part.smt2 create mode 100755 bench/tasks/car_2_extend_t_part.smt2 create mode 100755 bench/tasks/car_3_base1_s_part.smt2 create mode 100755 bench/tasks/car_3_base1_t_part.smt2 create mode 100755 bench/tasks/car_3_base2_s_part.smt2 create mode 100755 bench/tasks/car_3_base2_t_part.smt2 create mode 100755 bench/tasks/car_3_e2_695_base1_s_part.smt2 create mode 100755 bench/tasks/car_3_e2_695_base1_t_part.smt2 create mode 100755 bench/tasks/car_3_e2_695_base2_s_part.smt2 create mode 100755 bench/tasks/car_3_e2_695_base2_t_part.smt2 create mode 100755 bench/tasks/car_3_e2_695_extend_s_part.smt2 create mode 100755 bench/tasks/car_3_e2_695_extend_t_part.smt2 create mode 100755 bench/tasks/car_3_e7_626_base_s_part.smt2 create mode 100755 bench/tasks/car_3_e7_626_base_t_part.smt2 create mode 100755 bench/tasks/car_3_e7_626_extend_s_part.smt2 create mode 100755 bench/tasks/car_3_e7_626_extend_t_part.smt2 create mode 100755 bench/tasks/car_3_e8_33_base_s_part.smt2 create mode 100755 bench/tasks/car_3_e8_33_base_t_part.smt2 create mode 100755 bench/tasks/car_3_e8_33_e2_1010_base_s_part.smt2 create mode 100755 bench/tasks/car_3_e8_33_e2_1010_base_t_part.smt2 create mode 100755 bench/tasks/car_3_e8_33_e2_1010_extend_s_part.smt2 create mode 100755 bench/tasks/car_3_e8_33_e2_1010_extend_t_part.smt2 create mode 100755 bench/tasks/car_3_e8_33_e7_220_base_s_part.smt2 create mode 100755 bench/tasks/car_3_e8_33_e7_220_base_t_part.smt2 create mode 100755 bench/tasks/car_3_e8_33_e7_220_extend_s_part.smt2 create mode 100755 bench/tasks/car_3_e8_33_e7_220_extend_t_part.smt2 create mode 100755 bench/tasks/car_3_e8_33_extend_s_part.smt2 create mode 100755 bench/tasks/car_3_e8_33_extend_t_part.smt2 create mode 100755 bench/tasks/car_3_extend_s_part.smt2 create mode 100755 bench/tasks/car_3_extend_t_part.smt2 create mode 100755 bench/tasks/car_4_e3_57_e4_1047_base_s_part.smt2 create mode 100755 bench/tasks/car_4_e3_57_e4_1047_base_t_part.smt2 create mode 100755 bench/tasks/car_4_e3_57_e4_1047_extend_s_part.smt2 create mode 100755 bench/tasks/car_4_e3_57_e4_1047_extend_t_part.smt2 create mode 100755 bench/tasks/car_4_e3_57_e6_784_base_s_part.smt2 create mode 100755 bench/tasks/car_4_e3_57_e6_784_base_t_part.smt2 create mode 100755 bench/tasks/car_4_e3_57_e6_784_extend_s_part.smt2 create mode 100755 bench/tasks/car_4_e3_57_e6_784_extend_t_part.smt2 create mode 100755 bench/tasks/car_4_e7_592_base1_s_part.smt2 create mode 100755 bench/tasks/car_4_e7_592_base1_t_part.smt2 create mode 100755 bench/tasks/car_4_e7_592_base2_s_part.smt2 create mode 100755 bench/tasks/car_4_e7_592_base2_t_part.smt2 create mode 100755 bench/tasks/car_4_e7_592_extend_s_part.smt2 create mode 100755 bench/tasks/car_4_e7_592_extend_t_part.smt2 create mode 100755 bench/tasks/car_4_e8_118_base_s_part.smt2 create mode 100755 bench/tasks/car_4_e8_118_base_t_part.smt2 create mode 100755 bench/tasks/car_4_e8_118_extend_s_part.smt2 create mode 100755 bench/tasks/car_4_e8_118_extend_t_part.smt2 create mode 100755 bench/tasks/car_all_e2_108_base1_s_part.smt2 create mode 100755 bench/tasks/car_all_e2_108_base1_t_part.smt2 create mode 100755 bench/tasks/car_all_e2_108_base2_s_part.smt2 create mode 100755 bench/tasks/car_all_e2_108_base2_t_part.smt2 create mode 100755 bench/tasks/car_all_e2_108_extend_s_part.smt2 create mode 100755 bench/tasks/car_all_e2_108_extend_t_part.smt2 create mode 100755 bench/tasks/car_all_e2_142_e8_194_base1_s_part.smt2 create mode 100755 bench/tasks/car_all_e2_142_e8_194_base1_t_part.smt2 create mode 100755 bench/tasks/car_all_e2_142_e8_194_base2_s_part.smt2 create mode 100755 bench/tasks/car_all_e2_142_e8_194_base2_t_part.smt2 create mode 100755 bench/tasks/car_all_e2_142_e8_194_extend_s_part.smt2 create mode 100755 bench/tasks/car_all_e2_142_e8_194_extend_t_part.smt2 create mode 100755 bench/tasks/car_all_e3_1068_e4_275_base_s_part.smt2 create mode 100755 bench/tasks/car_all_e3_1068_e4_275_base_t_part.smt2 create mode 100755 bench/tasks/car_all_e3_1068_e4_275_extend_s_part.smt2 create mode 100755 bench/tasks/car_all_e3_1068_e4_275_extend_t_part.smt2 create mode 100755 bench/tasks/car_all_e3_1068_e6_790_base1_s_part.smt2 create mode 100755 bench/tasks/car_all_e3_1068_e6_790_base1_t_part.smt2 create mode 100755 bench/tasks/car_all_e3_1068_e6_790_base2_s_part.smt2 create mode 100755 bench/tasks/car_all_e3_1068_e6_790_base2_t_part.smt2 create mode 100755 bench/tasks/car_all_e3_1068_e6_790_extend_s_part.smt2 create mode 100755 bench/tasks/car_all_e3_1068_e6_790_extend_t_part.smt2 create mode 100755 bench/tasks/car_all_e8_856_base1_s_part.smt2 create mode 100755 bench/tasks/car_all_e8_856_base1_t_part.smt2 create mode 100755 bench/tasks/car_all_e8_856_base2_s_part.smt2 create mode 100755 bench/tasks/car_all_e8_856_base2_t_part.smt2 create mode 100755 bench/tasks/car_all_e8_856_extend_s_part.smt2 create mode 100644 bench/tasks/car_all_e8_856_extend_t_part.smt2 create mode 100755 bench/tasks/cd_base1_s_part.smt2 create mode 100755 bench/tasks/cd_base1_t_part.smt2 create mode 100755 bench/tasks/cd_base2_s_part.smt2 create mode 100755 bench/tasks/cd_base2_t_part.smt2 create mode 100755 bench/tasks/cd_base3_s_part.smt2 create mode 100755 bench/tasks/cd_base3_t_part.smt2 create mode 100755 bench/tasks/cd_e7_621_e8_714_base1_s_part.smt2 create mode 100755 bench/tasks/cd_e7_621_e8_714_base1_t_part.smt2 create mode 100755 bench/tasks/cd_e7_621_e8_714_base2_s_part.smt2 create mode 100755 bench/tasks/cd_e7_621_e8_714_base2_t_part.smt2 create mode 100755 bench/tasks/cd_e7_621_e8_714_extend_s_part.smt2 create mode 100755 bench/tasks/cd_e7_621_e8_714_extend_t_part.smt2 create mode 100755 bench/tasks/cd_extend_s_part.smt2 create mode 100755 bench/tasks/cd_extend_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_01_base_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_01_base_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_01_extend_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_01_extend_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_02_base_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_02_base_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_02_extend_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_02_extend_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_06_base_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_06_base_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_06_extend_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_06_extend_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_07_base_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_07_base_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_07_extend_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_07_extend_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_09_base_s_part.smt2 create mode 100644 bench/tasks/cruise_controller_09_base_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_09_extend_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_09_extend_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_11_base_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_11_base_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_11_extend_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_11_extend_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_15_base_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_15_base_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_15_extend_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_15_extend_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_16_base_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_16_base_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_16_extend_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_16_extend_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_17_base1_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_17_base1_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_17_base2_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_17_base2_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_17_extend_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_17_extend_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_20_base_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_20_base_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_20_extend_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_20_extend_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_23_base_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_23_base_t_part.smt2 create mode 100755 bench/tasks/cruise_controller_23_extend_s_part.smt2 create mode 100755 bench/tasks/cruise_controller_23_extend_t_part.smt2 create mode 100755 bench/tasks/ex3_e7_590_base_s_part.smt2 create mode 100755 bench/tasks/ex3_e7_590_base_t_part.smt2 create mode 100755 bench/tasks/ex3_e7_590_e7_590_base_s_part.smt2 create mode 100755 bench/tasks/ex3_e7_590_e7_590_base_t_part.smt2 create mode 100755 bench/tasks/ex3_e7_590_e7_590_extend_s_part.smt2 create mode 100755 bench/tasks/ex3_e7_590_e7_590_extend_t_part.smt2 create mode 100755 bench/tasks/ex3_e7_590_e8_550_base_s_part.smt2 create mode 100755 bench/tasks/ex3_e7_590_e8_550_base_t_part.smt2 create mode 100755 bench/tasks/ex3_e7_590_e8_550_extend_s_part.smt2 create mode 100755 bench/tasks/ex3_e7_590_e8_550_extend_t_part.smt2 create mode 100755 bench/tasks/ex3_e7_590_extend_s_part.smt2 create mode 100755 bench/tasks/ex3_e7_590_extend_t_part.smt2 create mode 100755 bench/tasks/ex3_e8_120_base_s_part.smt2 create mode 100755 bench/tasks/ex3_e8_120_base_t_part.smt2 create mode 100755 bench/tasks/ex3_e8_120_extend_s_part.smt2 create mode 100755 bench/tasks/ex3_e8_120_extend_t_part.smt2 create mode 100755 bench/tasks/ex3_e8_381_e7_224_base_s_part.smt2 create mode 100755 bench/tasks/ex3_e8_381_e7_224_base_t_part.smt2 create mode 100755 bench/tasks/ex3_e8_381_e7_224_extend_s_part.smt2 create mode 100755 bench/tasks/ex3_e8_381_e7_224_extend_t_part.smt2 create mode 100755 bench/tasks/example_base1_s_part.smt2 create mode 100755 bench/tasks/example_base1_t_part.smt2 create mode 100755 bench/tasks/example_base2_s_part.smt2 create mode 100755 bench/tasks/example_base2_t_part.smt2 create mode 100755 bench/tasks/example_base3_s_part.smt2 create mode 100755 bench/tasks/example_base3_t_part.smt2 create mode 100755 bench/tasks/example_extend_s_part.smt2 create mode 100755 bench/tasks/example_extend_t_part.smt2 create mode 100755 bench/tasks/fast_1_e7_2044_e8_1396_base_s_part.smt2 create mode 100755 bench/tasks/fast_1_e7_2044_e8_1396_base_t_part.smt2 create mode 100755 bench/tasks/fast_1_e7_2044_e8_1396_extend_s_part.smt2 create mode 100755 bench/tasks/fast_1_e7_2044_e8_1396_extend_t_part.smt2 create mode 100755 bench/tasks/fast_1_e8_747_base1_s_part.smt2 create mode 100755 bench/tasks/fast_1_e8_747_base1_t_part.smt2 create mode 100755 bench/tasks/fast_1_e8_747_base2_s_part.smt2 create mode 100755 bench/tasks/fast_1_e8_747_base2_t_part.smt2 create mode 100755 bench/tasks/fast_1_e8_747_e8_1041_base_s_part.smt2 create mode 100755 bench/tasks/fast_1_e8_747_e8_1041_base_t_part.smt2 create mode 100755 bench/tasks/fast_1_e8_747_e8_1041_extend_s_part.smt2 create mode 100755 bench/tasks/fast_1_e8_747_e8_1041_extend_t_part.smt2 create mode 100755 bench/tasks/fast_1_e8_747_extend_s_part.smt2 create mode 100755 bench/tasks/fast_1_e8_747_extend_t_part.smt2 create mode 100755 bench/tasks/fast_2_e7_2526_e8_1145_base1_s_part.smt2 create mode 100755 bench/tasks/fast_2_e7_2526_e8_1145_base1_t_part.smt2 create mode 100755 bench/tasks/fast_2_e7_2526_e8_1145_base2_s_part.smt2 create mode 100755 bench/tasks/fast_2_e7_2526_e8_1145_base2_t_part.smt2 create mode 100755 bench/tasks/fast_2_e7_2526_e8_1145_extend_s_part.smt2 create mode 100755 bench/tasks/fast_2_e7_2526_e8_1145_extend_t_part.smt2 create mode 100755 bench/tasks/fast_2_e8_460_base_s_part.smt2 create mode 100755 bench/tasks/fast_2_e8_460_base_t_part.smt2 create mode 100755 bench/tasks/fast_2_e8_460_e8_1920_base_s_part.smt2 create mode 100755 bench/tasks/fast_2_e8_460_e8_1920_base_t_part.smt2 create mode 100755 bench/tasks/fast_2_e8_460_e8_1920_extend_s_part.smt2 create mode 100755 bench/tasks/fast_2_e8_460_e8_1920_extend_t_part.smt2 create mode 100755 bench/tasks/fast_2_e8_460_extend_s_part.smt2 create mode 100755 bench/tasks/fast_2_e8_460_extend_t_part.smt2 create mode 100755 bench/tasks/hysteresis_1_base_s_part.smt2 create mode 100755 bench/tasks/hysteresis_1_base_t_part.smt2 create mode 100755 bench/tasks/hysteresis_1_extend_s_part.smt2 create mode 100755 bench/tasks/hysteresis_1_extend_t_part.smt2 create mode 100755 bench/tasks/hysteresis_2_base_s_part.smt2 create mode 100755 bench/tasks/hysteresis_2_base_t_part.smt2 create mode 100755 bench/tasks/hysteresis_2_extend_s_part.smt2 create mode 100755 bench/tasks/hysteresis_2_extend_t_part.smt2 create mode 100755 bench/tasks/hysteresis_3_base_s_part.smt2 create mode 100755 bench/tasks/hysteresis_3_base_t_part.smt2 create mode 100755 bench/tasks/hysteresis_3_extend_s_part.smt2 create mode 100755 bench/tasks/hysteresis_3_extend_t_part.smt2 create mode 100755 bench/tasks/hysteresis_all_base_s_part.smt2 create mode 100755 bench/tasks/hysteresis_all_base_t_part.smt2 create mode 100755 bench/tasks/hysteresis_all_extend_s_part.smt2 create mode 100755 bench/tasks/hysteresis_all_extend_t_part.smt2 create mode 100755 bench/tasks/newexample_base1_s_part.smt2 create mode 100755 bench/tasks/newexample_base1_t_part.smt2 create mode 100755 bench/tasks/newexample_base2_s_part.smt2 create mode 100755 bench/tasks/newexample_base2_t_part.smt2 create mode 100755 bench/tasks/newexample_base3_s_part.smt2 create mode 100755 bench/tasks/newexample_base3_t_part.smt2 create mode 100755 bench/tasks/newexample_extend_s_part.smt2 create mode 100755 bench/tasks/newexample_extend_t_part.smt2 create mode 100755 bench/tasks/rtp_1_base_s_part.smt2 create mode 100755 bench/tasks/rtp_1_base_t_part.smt2 create mode 100755 bench/tasks/rtp_1_extend_s_part.smt2 create mode 100755 bench/tasks/rtp_1_extend_t_part.smt2 create mode 100755 bench/tasks/speed_e7_207_base_s_part.smt2 create mode 100755 bench/tasks/speed_e7_207_base_t_part.smt2 create mode 100755 bench/tasks/speed_e7_207_e7_538_base_s_part.smt2 create mode 100755 bench/tasks/speed_e7_207_e7_538_base_t_part.smt2 create mode 100755 bench/tasks/speed_e7_207_e7_538_extend_s_part.smt2 create mode 100755 bench/tasks/speed_e7_207_e7_538_extend_t_part.smt2 create mode 100755 bench/tasks/speed_e7_207_e8_507_base1_s_part.smt2 create mode 100755 bench/tasks/speed_e7_207_e8_507_base1_t_part.smt2 create mode 100755 bench/tasks/speed_e7_207_e8_507_base2_s_part.smt2 create mode 100755 bench/tasks/speed_e7_207_e8_507_base2_t_part.smt2 create mode 100755 bench/tasks/speed_e7_207_e8_507_extend_s_part.smt2 create mode 100755 bench/tasks/speed_e7_207_e8_507_extend_t_part.smt2 create mode 100755 bench/tasks/speed_e7_207_extend_s_part.smt2 create mode 100755 bench/tasks/speed_e7_207_extend_t_part.smt2 create mode 100755 bench/tasks/speed_e8_136_base_s_part.smt2 create mode 100755 bench/tasks/speed_e8_136_base_t_part.smt2 create mode 100755 bench/tasks/speed_e8_136_extend_s_part.smt2 create mode 100755 bench/tasks/speed_e8_136_extend_t_part.smt2 create mode 100755 bench/tasks/speed_e8_649_e7_709_base_s_part.smt2 create mode 100755 bench/tasks/speed_e8_649_e7_709_base_t_part.smt2 create mode 100755 bench/tasks/speed_e8_649_e7_709_extend_s_part.smt2 create mode 100755 bench/tasks/speed_e8_649_e7_709_extend_t_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_base1_s_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_base1_t_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_base2_s_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_base2_t_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_base3_s_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_base3_t_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_base4_s_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_base4_t_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_e7_2363_base1_s_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_e7_2363_base1_t_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_e7_2363_base2_s_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_e7_2363_base2_t_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_e7_2363_base3_s_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_e7_2363_base3_t_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_e7_2363_base4_s_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_e7_2363_base4_t_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_e7_2363_extend_s_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_e7_2363_extend_t_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_extend_s_part.smt2 create mode 100755 bench/tasks/tramway_e7_1834_extend_t_part.smt2 diff --git a/README.md b/README.md index 2e88b4ccc..dd2e8e1ac 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,27 @@ -#About# +About +===== -Skolemizer for AE-formulas in LIA/LRA based on the SeaHorn verification framework and the Z3 SMT solver. This is the main computational engine used in the Incremental Model Checking (LPAR'15, CAV'16) and in the Program Synthesis from Assume-Guarantee contracts (preprint). +Skolemizer for AE-formulas in LIA/LRA based on the Expression library of SeaHorn and the Z3 SMT solver. This is the main computational engine used in the Incremental Model Checking (LPAR'15, CAV'16) and in the Program Synthesis from Assume-Guarantee contracts (preprint). -#Installation# +Installation +============ + +Compiles with gcc-5 (on Linux) and clang-700 (on Mac). Assumes preinstalled Gmp and Boost (libboost-system1.55-dev) packages. * `cd aeval ; mkdir build ; cd build` * `cmake ../` * `make` to build dependencies (Z3 and LLVM) * `make` to build AE-VAL -The binary of AE-VAL can be found in `build/tools/aeval/` +The binary of AE-VAL can be found in `build/tools/aeval/`. +Benchmarks +========== + +Each benchmark is split into two files (for the universal and the existential parts of the formula). AE-VAL either returns `Valid` (with a skolem) or `Invalid`. Collection of the formulas can be found at `bench/tasks/` and the expected skolems at `bench/skolems/`. + +For example, if AE-VAL is run with the following input: + +`./build/tools/aeval/aeval bench/tasks/fast_1_e8_747_extend_s_part.smt2 bench/tasks/fast_1_e8_747_extend_t_part.smt2 ` + +Then, the output is `Valid` and the synthesized skolem should be close enough to the formula in `bench/skolems/fast_1_e8_747_extend_skolem.smt2`. \ No newline at end of file diff --git a/bench/skolems/PRODUCER_CONSUMER_2_base_skolem.smt2 b/bench/skolems/PRODUCER_CONSUMER_2_base_skolem.smt2 new file mode 100644 index 000000000..979f888b6 --- /dev/null +++ b/bench/skolems/PRODUCER_CONSUMER_2_base_skolem.smt2 @@ -0,0 +1,22 @@ +(declare-fun $V74_X$2 () Bool) +(declare-fun $V87_First$2 () Int) +(declare-fun $V79_Sofar$2 () Bool) +(declare-fun $etat1$0 () Bool) +(declare-fun $V31_env$2 () Bool) +(declare-fun $a_init$0 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V26_i$2 () Int) +(declare-fun $etat3$0 () Bool) +(declare-fun $etat2$0 () Bool) + +(assert (let ((a!1 (and (not $etat1$0) (not (and $etat2$0 $etat3$0)) (> $a_init$0 0)))) +(let ((a!2 (and (= $OK$2 (or (not a!1) (>= 0 0))) + (= $V31_env$2 a!1) + (= $V26_i$2 0) + (= $V79_Sofar$2 (not (and $etat2$0 $etat3$0))) + (= $V87_First$2 $a_init$0) + (= $V74_X$2 (not (and $etat2$0 $etat3$0)))))) + (ite (and $etat2$0 $etat3$0) + a!2 + (ite (or (not $etat2$0) (not $etat3$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/PRODUCER_CONSUMER_2_extend_skolem.smt2 b/bench/skolems/PRODUCER_CONSUMER_2_extend_skolem.smt2 new file mode 100644 index 000000000..77da0e2b6 --- /dev/null +++ b/bench/skolems/PRODUCER_CONSUMER_2_extend_skolem.smt2 @@ -0,0 +1,52 @@ +(declare-fun $V87_First$2 () Int) +(declare-fun $V74_X$2 () Bool) +(declare-fun $etat1$0 () Bool) +(declare-fun $V26_i$2 () Int) +(declare-fun %init () Bool) +(declare-fun $V31_env$2 () Bool) +(declare-fun $V79_Sofar$~1 () Bool) +(declare-fun $V79_Sofar$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V87_First$~1 () Int) +(declare-fun $a_init$0 () Int) +(declare-fun $etat3$0 () Bool) +(declare-fun $etat2$0 () Bool) + +(assert (let ((a!1 (and %init (= (+ (* (- 1) $a_init$0) $V87_First$~1) 0))) + (a!2 (ite %init + (not (and $etat2$0 $etat3$0)) + (and (not (and $etat2$0 $etat3$0)) $V79_Sofar$~1))) + (a!6 (and (not %init) (= (+ (* (- 1) $V87_First$~1) $a_init$0) 0)))) +(let ((a!3 (and (and (ite %init (not $etat1$0) true) a!2) (> $V87_First$~1 0))) + (a!5 (and (or (not $etat2$0) (not $etat3$0)) + (or %init (and (not %init) $V79_Sofar$~1)) + (or a!1 (not %init)))) + (a!7 (and (and (ite %init (not $etat1$0) true) a!2) (> $a_init$0 0))) + (a!9 (and (or (not $etat2$0) (not $etat3$0)) + (or %init (and (not %init) $V79_Sofar$~1)) + (or %init a!6)))) +(let ((a!4 (and (= $OK$2 (or (not a!3) (>= 0 0))) + (= $V31_env$2 a!3) + (= $V26_i$2 0) + (= $V79_Sofar$2 a!2) + (= $V87_First$2 $V87_First$~1) + (= $V74_X$2 (not (and $etat2$0 $etat3$0))))) + (a!8 (and (= $OK$2 (or (>= 0 0) (not a!7))) + (= $V31_env$2 a!7) + (= $V26_i$2 0) + (= $V79_Sofar$2 a!2) + (= $V87_First$2 $a_init$0) + (= $V74_X$2 (not (and $etat2$0 $etat3$0)))))) +(let ((a!10 (ite a!5 + a!4 + (ite (and $etat2$0 $etat3$0 (or %init a!6)) + a!8 + (ite a!9 a!8 true))))) +(let ((a!11 (ite (and (or (not $etat2$0) (not $etat3$0)) + (not %init) + (not $V79_Sofar$~1) + (or a!1 (not %init))) + a!4 + a!10))) + (ite (and $etat2$0 $etat3$0 (or a!1 (not %init))) a!4 a!11))))))) +(check-sat) diff --git a/bench/skolems/SYNAPSE_2_e8_1118_e7_1043_base_skolem.smt2 b/bench/skolems/SYNAPSE_2_e8_1118_e7_1043_base_skolem.smt2 new file mode 100644 index 000000000..8d7519d56 --- /dev/null +++ b/bench/skolems/SYNAPSE_2_e8_1118_e7_1043_base_skolem.smt2 @@ -0,0 +1,21 @@ +(declare-fun $V83_X$2 () Bool) +(declare-fun $V28_valid_s$2 () Int) +(declare-fun $V27_invalid_s$2 () Int) +(declare-fun $init_invalid_s$0 () Int) +(declare-fun $e_s2$0 () Bool) +(declare-fun $e_s3$0 () Bool) +(declare-fun $e_s1$0 () Bool) +(declare-fun $V29_dirty_s$2 () Int) +(declare-fun $V31_env$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (and (not (or (and $e_s1$0 $e_s2$0 $e_s1$0 $e_s3$0) + (and $e_s2$0 $e_s3$0))) + (>= $init_invalid_s$0 0)))) + (and (= $OK$2 true) + (= $V31_env$2 a!1) + (= $V27_invalid_s$2 0) + (= $V28_valid_s$2 0) + (= $V29_dirty_s$2 0) + (= $V83_X$2 a!1)))) +(check-sat) diff --git a/bench/skolems/SYNAPSE_2_e8_1118_e7_1043_extend_skolem.smt2 b/bench/skolems/SYNAPSE_2_e8_1118_e7_1043_extend_skolem.smt2 new file mode 100644 index 000000000..8bec3e5e8 --- /dev/null +++ b/bench/skolems/SYNAPSE_2_e8_1118_e7_1043_extend_skolem.smt2 @@ -0,0 +1,46 @@ +(declare-fun $V83_X$2 () Bool) +(declare-fun $V29_dirty_s$2 () Int) +(declare-fun $V27_invalid_s$2 () Int) +(declare-fun $V31_env$2 () Bool) +(declare-fun $V31_env$~1 () Bool) +(declare-fun $V29_dirty_s$~1 () Int) +(declare-fun $V27_invalid_s$~1 () Int) +(declare-fun %init () Bool) +(declare-fun $V28_valid_s$~1 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $e_s3$0 () Bool) +(declare-fun $e_s1$0 () Bool) +(declare-fun $V28_valid_s$2 () Int) +(declare-fun $init_invalid_s$0 () Int) +(declare-fun $e_s2$0 () Bool) + +(assert (let ((a!1 (and (not (or (and $e_s1$0 $e_s2$0 $e_s1$0 $e_s3$0) + (and $e_s2$0 $e_s3$0))) + (>= $init_invalid_s$0 0))) + (a!2 (+ $V27_invalid_s$~1 + $V28_valid_s$~1 + $V29_dirty_s$~1 + (* (- 1) 0) + (* (- 1) 0)))) +(let ((a!3 (or (not (ite %init a!1 (or a!1 $V31_env$~1))) + (ite %init + true + (= (+ a!2 0 0) + (+ $V27_invalid_s$~1 $V28_valid_s$~1 $V29_dirty_s$~1)))))) +(let ((a!4 (and (= $OK$2 a!3) + (= $V31_env$2 (ite %init a!1 (or a!1 $V31_env$~1))) + (= $V27_invalid_s$2 a!2) + (= $V28_valid_s$2 0) + (= $V29_dirty_s$2 0) + (= $V83_X$2 a!1)))) +(let ((a!5 (ite (and (or (not $e_s1$0) (not $e_s2$0) (not $e_s3$0)) + (or (not $e_s2$0) (not $e_s3$0)) + (>= $init_invalid_s$0 0)) + a!4 + true))) + (ite (or (and $e_s1$0 $e_s2$0 $e_s3$0) + (and $e_s2$0 $e_s3$0) + (not (>= $init_invalid_s$0 0))) + a!4 + a!5)))))) +(check-sat) diff --git a/bench/skolems/SYNAPSE_4_e8_420_e8_1525_base_skolem.smt2 b/bench/skolems/SYNAPSE_4_e8_420_e8_1525_base_skolem.smt2 new file mode 100644 index 000000000..fb26bcb56 --- /dev/null +++ b/bench/skolems/SYNAPSE_4_e8_420_e8_1525_base_skolem.smt2 @@ -0,0 +1,26 @@ +(declare-fun $V84_X$2 () Bool) +(declare-fun $V31_env$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $init_invalid_s$0 () Int) +(declare-fun $e_s3$0 () Bool) +(declare-fun $V28_valid_s$2 () Int) +(declare-fun $e_s2$0 () Bool) +(declare-fun $V29_dirty_s$2 () Int) +(declare-fun $e_s1$0 () Bool) + +(assert (let ((a!1 (and (not (and $e_s1$0 $e_s2$0 $e_s1$0 $e_s3$0 $e_s2$0 $e_s3$0)) + (>= $init_invalid_s$0 0)))) +(let ((a!2 (and (= $OK$2 (or (< 0 1) (not a!1) (< 0 1))) + (= $V31_env$2 a!1) + (= $V29_dirty_s$2 0) + (= $V28_valid_s$2 0) + (= $V84_X$2 a!1)))) +(let ((a!3 (ite (or (and $e_s1$0 $e_s2$0 $e_s3$0) + (not (>= $init_invalid_s$0 0))) + a!2 + true))) + (ite (and (or (not $e_s1$0) (not $e_s2$0) (not $e_s3$0)) + (>= $init_invalid_s$0 0)) + a!2 + a!3))))) +(check-sat) diff --git a/bench/skolems/SYNAPSE_4_e8_420_e8_1525_extend_skolem.smt2 b/bench/skolems/SYNAPSE_4_e8_420_e8_1525_extend_skolem.smt2 new file mode 100644 index 000000000..f51cb0246 --- /dev/null +++ b/bench/skolems/SYNAPSE_4_e8_420_e8_1525_extend_skolem.smt2 @@ -0,0 +1,28 @@ +(declare-fun %init () Bool) +(declare-fun $init_invalid_s$0 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V84_X$2 () Bool) +(declare-fun $e_s3$0 () Bool) +(declare-fun $V28_valid_s$2 () Int) +(declare-fun $V29_dirty_s$2 () Int) +(declare-fun $V31_env$2 () Bool) +(declare-fun $V31_env$~1 () Bool) +(declare-fun $e_s2$0 () Bool) +(declare-fun $e_s1$0 () Bool) + +(assert (let ((a!1 (and (not (and $e_s1$0 $e_s2$0 $e_s1$0 $e_s3$0 $e_s2$0 $e_s3$0)) + (>= $init_invalid_s$0 0)))) +(let ((a!2 (or (< 0 1) (not (ite %init a!1 (and a!1 $V31_env$~1))) (< 0 1)))) +(let ((a!3 (and (= $OK$2 a!2) + (= $V31_env$2 (ite %init a!1 (and a!1 $V31_env$~1))) + (= $V29_dirty_s$2 0) + (= $V28_valid_s$2 0) + (= $V84_X$2 a!1)))) +(let ((a!4 (ite (and (or (not $e_s1$0) (not $e_s2$0) (not $e_s3$0)) + (>= $init_invalid_s$0 0)) + a!3 + true))) + (ite (or (and $e_s1$0 $e_s2$0 $e_s3$0) (not (>= $init_invalid_s$0 0))) + a!3 + a!4)))))) +(check-sat) diff --git a/bench/skolems/car_1_extend_skolem.smt2 b/bench/skolems/car_1_extend_skolem.smt2 new file mode 100644 index 000000000..0efbd5d0d --- /dev/null +++ b/bench/skolems/car_1_extend_skolem.smt2 @@ -0,0 +1,18 @@ +(declare-fun $V91_X$2 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $V33_env$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun %init () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (and (and (not (and $m$0 $s$0)) (< 32766 32767)) $V33_env$~1)) + (a!3 (= $V91_X$2 (and (not (and $m$0 $s$0)) (< 32766 32767))))) +(let ((a!2 (ite %init (and (not (and $m$0 $s$0)) (< 32766 32767)) a!1))) +(let ((a!4 (and (= $OK$2 (or (not a!2) (>= 32766 0))) + (= $V33_env$2 a!2) + (= $V27_dist$2 32766) + a!3))) + (ite (or (not $m$0) (not $s$0)) a!4 (ite (and $m$0 $s$0) a!4 true)))))) +(check-sat) diff --git a/bench/skolems/car_2_base1_skolem.smt2 b/bench/skolems/car_2_base1_skolem.smt2 new file mode 100644 index 000000000..2a9966a3e --- /dev/null +++ b/bench/skolems/car_2_base1_skolem.smt2 @@ -0,0 +1,14 @@ +(declare-fun $V91_X$2 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $V33_env$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (or (not (not (and $m$0 $s$0))) (< 10 11)))) +(let ((a!2 (and (= $OK$2 a!1) + (= $V33_env$2 (not (and $m$0 $s$0))) + (= $V27_dist$2 10) + (= $V91_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_2_base2_skolem.smt2 b/bench/skolems/car_2_base2_skolem.smt2 new file mode 100644 index 000000000..2609d2754 --- /dev/null +++ b/bench/skolems/car_2_base2_skolem.smt2 @@ -0,0 +1,16 @@ +(declare-fun $V91_X$3 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $V27_dist$3 () Int) +(declare-fun $V33_env$3 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $m$1 () Bool) + +(assert (let ((a!1 (not (and $V33_env$0 (not (and $m$1 $s$1))))) + (a!2 (= $V33_env$3 (and $V33_env$0 (not (and $m$1 $s$1)))))) +(let ((a!3 (and (= $OK$3 (or a!1 (< 10 11))) + a!2 + (= $V27_dist$3 10) + (= $V91_X$3 (not (and $m$1 $s$1)))))) + (ite (or (not $m$1) (not $s$1)) a!3 (ite (and $m$1 $s$1) a!3 true))))) +(check-sat) diff --git a/bench/skolems/car_2_extend_skolem.smt2 b/bench/skolems/car_2_extend_skolem.smt2 new file mode 100644 index 000000000..b58125073 --- /dev/null +++ b/bench/skolems/car_2_extend_skolem.smt2 @@ -0,0 +1,18 @@ +(declare-fun $V27_dist$2 () Int) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun %init () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V91_X$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (ite %init + (not (and $m$0 $s$0)) + (and (not (and $m$0 $s$0)) $V33_env$~1)))) +(let ((a!2 (and (= $OK$2 (or (not a!1) (< 10 11))) + (= $V33_env$2 a!1) + (= $V27_dist$2 10) + (= $V91_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_3_base1_skolem.smt2 b/bench/skolems/car_3_base1_skolem.smt2 new file mode 100644 index 000000000..7aa585754 --- /dev/null +++ b/bench/skolems/car_3_base1_skolem.smt2 @@ -0,0 +1,14 @@ +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V90_X$2 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (or (not (not (and $m$0 $s$0))) (< 3 4)))) +(let ((a!2 (and (= $OK$2 a!1) + (= $V33_env$2 (not (and $m$0 $s$0))) + (= $V28_speed$2 3) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_3_base2_skolem.smt2 b/bench/skolems/car_3_base2_skolem.smt2 new file mode 100644 index 000000000..83103df32 --- /dev/null +++ b/bench/skolems/car_3_base2_skolem.smt2 @@ -0,0 +1,16 @@ +(declare-fun $V28_speed$3 () Int) +(declare-fun $V33_env$3 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V90_X$3 () Bool) +(declare-fun $m$1 () Bool) + +(assert (let ((a!1 (not (and $V33_env$0 (not (and $m$1 $s$1))))) + (a!2 (= $V33_env$3 (and $V33_env$0 (not (and $m$1 $s$1)))))) +(let ((a!3 (and (= $OK$3 (or a!1 (< 3 4))) + a!2 + (= $V28_speed$3 3) + (= $V90_X$3 (not (and $m$1 $s$1)))))) + (ite (or (not $m$1) (not $s$1)) a!3 (ite (and $m$1 $s$1) a!3 true))))) +(check-sat) diff --git a/bench/skolems/car_3_e2_695_base1_skolem.smt2 b/bench/skolems/car_3_e2_695_base1_skolem.smt2 new file mode 100644 index 000000000..3ab464d68 --- /dev/null +++ b/bench/skolems/car_3_e2_695_base1_skolem.smt2 @@ -0,0 +1,14 @@ +(declare-fun $V28_speed$2 () Int) +(declare-fun $V90_X$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (or (not (not (and $m$0 $s$0))) (< 3 4)))) +(let ((a!2 (and (= $OK$2 a!1) + (= $V33_env$2 (not (and $m$0 $s$0))) + (= $V28_speed$2 3) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_3_e2_695_base2_skolem.smt2 b/bench/skolems/car_3_e2_695_base2_skolem.smt2 new file mode 100644 index 000000000..8b8ded291 --- /dev/null +++ b/bench/skolems/car_3_e2_695_base2_skolem.smt2 @@ -0,0 +1,16 @@ +(declare-fun $V90_X$3 () Bool) +(declare-fun $V28_speed$3 () Int) +(declare-fun $V33_env$0 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V33_env$3 () Bool) +(declare-fun $m$1 () Bool) + +(assert (let ((a!1 (not (and $V33_env$0 (not (and $m$1 $s$1))))) + (a!2 (= $V33_env$3 (and $V33_env$0 (not (and $m$1 $s$1)))))) +(let ((a!3 (and (= $OK$3 (or a!1 (< 3 4))) + a!2 + (= $V28_speed$3 3) + (= $V90_X$3 (not (and $m$1 $s$1)))))) + (ite (or (not $m$1) (not $s$1)) a!3 (ite (and $m$1 $s$1) a!3 true))))) +(check-sat) diff --git a/bench/skolems/car_3_e2_695_extend_skolem.smt2 b/bench/skolems/car_3_e2_695_extend_skolem.smt2 new file mode 100644 index 000000000..b644d28c5 --- /dev/null +++ b/bench/skolems/car_3_e2_695_extend_skolem.smt2 @@ -0,0 +1,18 @@ +(declare-fun $V90_X$2 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun %init () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (ite %init + (not (and $m$0 $s$0)) + (and (not (and $m$0 $s$0)) $V33_env$~1)))) +(let ((a!2 (and (= $OK$2 (or (not a!1) (< 3 4))) + (= $V33_env$2 a!1) + (= $V28_speed$2 3) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_3_e7_626_base_skolem.smt2 b/bench/skolems/car_3_e7_626_base_skolem.smt2 new file mode 100644 index 000000000..3ab464d68 --- /dev/null +++ b/bench/skolems/car_3_e7_626_base_skolem.smt2 @@ -0,0 +1,14 @@ +(declare-fun $V28_speed$2 () Int) +(declare-fun $V90_X$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (or (not (not (and $m$0 $s$0))) (< 3 4)))) +(let ((a!2 (and (= $OK$2 a!1) + (= $V33_env$2 (not (and $m$0 $s$0))) + (= $V28_speed$2 3) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_3_e7_626_extend_skolem.smt2 b/bench/skolems/car_3_e7_626_extend_skolem.smt2 new file mode 100644 index 000000000..f2b4170ab --- /dev/null +++ b/bench/skolems/car_3_e7_626_extend_skolem.smt2 @@ -0,0 +1,18 @@ +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$2 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun %init () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(declare-fun $s$0 () Bool) + +(assert (let ((a!1 (ite %init + (not (and $m$0 $s$0)) + (or (not (and $m$0 $s$0)) $V33_env$~1)))) +(let ((a!2 (and (= $OK$2 (or (not a!1) (< 3 4))) + (= $V33_env$2 a!1) + (= $V28_speed$2 3) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_3_e8_33_base_skolem.smt2 b/bench/skolems/car_3_e8_33_base_skolem.smt2 new file mode 100644 index 000000000..f48460363 --- /dev/null +++ b/bench/skolems/car_3_e8_33_base_skolem.smt2 @@ -0,0 +1,14 @@ +(declare-fun $OK$2 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(declare-fun $s$0 () Bool) + +(assert (let ((a!1 (or (not (not (and $m$0 $s$0))) (< 3 4)))) +(let ((a!2 (and (= $OK$2 a!1) + (= $V33_env$2 (not (and $m$0 $s$0))) + (= $V28_speed$2 3) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_3_e8_33_e2_1010_base_skolem.smt2 b/bench/skolems/car_3_e8_33_e2_1010_base_skolem.smt2 new file mode 100644 index 000000000..b15f3ad14 --- /dev/null +++ b/bench/skolems/car_3_e8_33_e2_1010_base_skolem.smt2 @@ -0,0 +1,14 @@ +(declare-fun $OK$2 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$2 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V90_X$2 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (or (not (not (and $m$0 $s$0))) (< 3 4)))) +(let ((a!2 (and (= $OK$2 a!1) + (= $V33_env$2 (not (and $m$0 $s$0))) + (= $V28_speed$2 3) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_3_e8_33_e2_1010_extend_skolem.smt2 b/bench/skolems/car_3_e8_33_e2_1010_extend_skolem.smt2 new file mode 100644 index 000000000..0a37878c5 --- /dev/null +++ b/bench/skolems/car_3_e8_33_e2_1010_extend_skolem.smt2 @@ -0,0 +1,18 @@ +(declare-fun $V90_X$2 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$~1 () Bool) +(declare-fun %init () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (ite %init + (not (and $m$0 $s$0)) + (or (not (and $m$0 $s$0)) $V33_env$~1)))) +(let ((a!2 (and (= $OK$2 (or (not a!1) (< 3 4))) + (= $V33_env$2 a!1) + (= $V28_speed$2 3) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_3_e8_33_e7_220_base_skolem.smt2 b/bench/skolems/car_3_e8_33_e7_220_base_skolem.smt2 new file mode 100644 index 000000000..478857cef --- /dev/null +++ b/bench/skolems/car_3_e8_33_e7_220_base_skolem.smt2 @@ -0,0 +1,14 @@ +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $s$0 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (or (not (not (and $m$0 $s$0))) (< 3 4)))) +(let ((a!2 (and (= $OK$2 a!1) + (= $V33_env$2 (not (and $m$0 $s$0))) + (= $V28_speed$2 3) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_3_e8_33_e7_220_extend_skolem.smt2 b/bench/skolems/car_3_e8_33_e7_220_extend_skolem.smt2 new file mode 100644 index 000000000..c91f5b68b --- /dev/null +++ b/bench/skolems/car_3_e8_33_e7_220_extend_skolem.smt2 @@ -0,0 +1,18 @@ +(declare-fun $V90_X$2 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$2 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun %init () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (ite %init + (not (and $m$0 $s$0)) + (or (not (and $m$0 $s$0)) $V33_env$~1)))) +(let ((a!2 (and (= $OK$2 (or (not a!1) (< 3 4))) + (= $V33_env$2 a!1) + (= $V28_speed$2 3) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_3_e8_33_extend_skolem.smt2 b/bench/skolems/car_3_e8_33_extend_skolem.smt2 new file mode 100644 index 000000000..b644d28c5 --- /dev/null +++ b/bench/skolems/car_3_e8_33_extend_skolem.smt2 @@ -0,0 +1,18 @@ +(declare-fun $V90_X$2 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun %init () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (ite %init + (not (and $m$0 $s$0)) + (and (not (and $m$0 $s$0)) $V33_env$~1)))) +(let ((a!2 (and (= $OK$2 (or (not a!1) (< 3 4))) + (= $V33_env$2 a!1) + (= $V28_speed$2 3) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_3_extend_skolem.smt2 b/bench/skolems/car_3_extend_skolem.smt2 new file mode 100644 index 000000000..790641272 --- /dev/null +++ b/bench/skolems/car_3_extend_skolem.smt2 @@ -0,0 +1,18 @@ +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun %init () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (ite %init + (not (and $m$0 $s$0)) + (and (not (and $m$0 $s$0)) $V33_env$~1)))) +(let ((a!2 (and (= $OK$2 (or (not a!1) (< 3 4))) + (= $V33_env$2 a!1) + (= $V28_speed$2 3) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_4_e3_57_e4_1047_base_skolem.smt2 b/bench/skolems/car_4_e3_57_e4_1047_base_skolem.smt2 new file mode 100644 index 000000000..b7039899a --- /dev/null +++ b/bench/skolems/car_4_e3_57_e4_1047_base_skolem.smt2 @@ -0,0 +1,14 @@ +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (or (not (not (and $m$0 $s$0))) (>= 0 0)))) +(let ((a!2 (and (= $OK$2 a!1) + (= $V33_env$2 (not (and $m$0 $s$0))) + (= $V28_speed$2 0) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_4_e3_57_e4_1047_extend_skolem.smt2 b/bench/skolems/car_4_e3_57_e4_1047_extend_skolem.smt2 new file mode 100644 index 000000000..d0f2d54dd --- /dev/null +++ b/bench/skolems/car_4_e3_57_e4_1047_extend_skolem.smt2 @@ -0,0 +1,18 @@ +(declare-fun $V90_X$2 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun %init () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (ite %init + (not (and $m$0 $s$0)) + (and (not (and $m$0 $s$0)) $V33_env$~1)))) +(let ((a!2 (and (= $OK$2 (or (not a!1) (>= 0 0))) + (= $V33_env$2 a!1) + (= $V28_speed$2 0) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_4_e3_57_e6_784_base_skolem.smt2 b/bench/skolems/car_4_e3_57_e6_784_base_skolem.smt2 new file mode 100644 index 000000000..3652b0a01 --- /dev/null +++ b/bench/skolems/car_4_e3_57_e6_784_base_skolem.smt2 @@ -0,0 +1,14 @@ +(declare-fun $V90_X$2 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (or (not (not (and $m$0 $s$0))) (>= 0 0)))) +(let ((a!2 (and (= $OK$2 a!1) + (= $V33_env$2 (not (and $m$0 $s$0))) + (= $V28_speed$2 0) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_4_e3_57_e6_784_extend_skolem.smt2 b/bench/skolems/car_4_e3_57_e6_784_extend_skolem.smt2 new file mode 100644 index 000000000..97ae70dba --- /dev/null +++ b/bench/skolems/car_4_e3_57_e6_784_extend_skolem.smt2 @@ -0,0 +1,18 @@ +(declare-fun $V90_X$2 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$2 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun %init () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (ite %init + (not (and $m$0 $s$0)) + (and (not (and $m$0 $s$0)) $V33_env$~1)))) +(let ((a!2 (and (= $OK$2 (or (not a!1) (>= 0 0))) + (= $V33_env$2 a!1) + (= $V28_speed$2 0) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_4_e7_592_base1_skolem.smt2 b/bench/skolems/car_4_e7_592_base1_skolem.smt2 new file mode 100644 index 000000000..545535a5a --- /dev/null +++ b/bench/skolems/car_4_e7_592_base1_skolem.smt2 @@ -0,0 +1,14 @@ +(declare-fun $V90_X$2 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $s$0 () Bool) + +(assert (let ((a!1 (or (not (not (and $m$0 $s$0))) (>= 0 0)))) +(let ((a!2 (and (= $OK$2 a!1) + (= $V33_env$2 (not (and $m$0 $s$0))) + (= $V28_speed$2 0) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_4_e7_592_base2_skolem.smt2 b/bench/skolems/car_4_e7_592_base2_skolem.smt2 new file mode 100644 index 000000000..0f1ec4e1a --- /dev/null +++ b/bench/skolems/car_4_e7_592_base2_skolem.smt2 @@ -0,0 +1,16 @@ +(declare-fun $V28_speed$3 () Int) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V33_env$3 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V90_X$3 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $m$1 () Bool) + +(assert (let ((a!1 (not (or $V33_env$0 (not (and $m$1 $s$1))))) + (a!2 (= $V33_env$3 (or $V33_env$0 (not (and $m$1 $s$1)))))) +(let ((a!3 (and (= $OK$3 (or a!1 (>= 0 0))) + a!2 + (= $V28_speed$3 0) + (= $V90_X$3 (not (and $m$1 $s$1)))))) + (ite (or (not $m$1) (not $s$1)) a!3 (ite (and $m$1 $s$1) a!3 true))))) +(check-sat) diff --git a/bench/skolems/car_4_e7_592_extend_skolem.smt2 b/bench/skolems/car_4_e7_592_extend_skolem.smt2 new file mode 100644 index 000000000..430ec31ab --- /dev/null +++ b/bench/skolems/car_4_e7_592_extend_skolem.smt2 @@ -0,0 +1,18 @@ +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun %init () Bool) +(declare-fun $V90_X$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (ite %init + (not (and $m$0 $s$0)) + (or (not (and $m$0 $s$0)) $V33_env$~1)))) +(let ((a!2 (and (= $OK$2 (or (not a!1) (>= 0 0))) + (= $V33_env$2 a!1) + (= $V28_speed$2 0) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_4_e8_118_base_skolem.smt2 b/bench/skolems/car_4_e8_118_base_skolem.smt2 new file mode 100644 index 000000000..545535a5a --- /dev/null +++ b/bench/skolems/car_4_e8_118_base_skolem.smt2 @@ -0,0 +1,14 @@ +(declare-fun $V90_X$2 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $s$0 () Bool) + +(assert (let ((a!1 (or (not (not (and $m$0 $s$0))) (>= 0 0)))) +(let ((a!2 (and (= $OK$2 a!1) + (= $V33_env$2 (not (and $m$0 $s$0))) + (= $V28_speed$2 0) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_4_e8_118_extend_skolem.smt2 b/bench/skolems/car_4_e8_118_extend_skolem.smt2 new file mode 100644 index 000000000..e2a06aa8f --- /dev/null +++ b/bench/skolems/car_4_e8_118_extend_skolem.smt2 @@ -0,0 +1,18 @@ +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun %init () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V90_X$2 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (ite %init + (not (and $m$0 $s$0)) + (and (not (and $m$0 $s$0)) $V33_env$~1)))) +(let ((a!2 (and (= $OK$2 (or (not a!1) (>= 0 0))) + (= $V33_env$2 a!1) + (= $V28_speed$2 0) + (= $V90_X$2 (not (and $m$0 $s$0)))))) + (ite (and $m$0 $s$0) a!2 (ite (or (not $m$0) (not $s$0)) a!2 true))))) +(check-sat) diff --git a/bench/skolems/car_all_e2_108_base1_skolem.smt2 b/bench/skolems/car_all_e2_108_base1_skolem.smt2 new file mode 100644 index 000000000..a2c63ba2d --- /dev/null +++ b/bench/skolems/car_all_e2_108_base1_skolem.smt2 @@ -0,0 +1,15 @@ +(declare-fun $V92_X$2 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (not (and (not (and $m$0 $s$0)) (< 10 32767)))) + (a!3 (= $V33_env$2 (and (not (and $m$0 $s$0)) (< 10 32767)))) + (a!4 (= $V92_X$2 (and (not (and $m$0 $s$0)) (< 10 32767))))) +(let ((a!2 (= $OK$2 (or a!1 (and (>= 0 0) (>= 10 0) (< 10 11) (< 0 4)))))) +(let ((a!5 (and a!2 a!3 (= $V27_dist$2 10) (= $V28_speed$2 0) a!4))) + (ite (and $m$0 $s$0) a!5 (ite (or (not $m$0) (not $s$0)) a!5 true)))))) +(check-sat) diff --git a/bench/skolems/car_all_e2_108_base2_skolem.smt2 b/bench/skolems/car_all_e2_108_base2_skolem.smt2 new file mode 100644 index 000000000..ddf7916e0 --- /dev/null +++ b/bench/skolems/car_all_e2_108_base2_skolem.smt2 @@ -0,0 +1,19 @@ +(declare-fun $V92_X$3 () Bool) +(declare-fun $V28_speed$3 () Int) +(declare-fun $OK$3 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V27_dist$3 () Int) +(declare-fun $m$1 () Bool) +(declare-fun $V33_env$3 () Bool) +(declare-fun $s$1 () Bool) + +(assert (let ((a!1 (and $V33_env$0 (and (not (and $m$1 $s$1)) (< 10 32767)))) + (a!3 (= $V92_X$3 (and (not (and $m$1 $s$1)) (< 10 32767))))) +(let ((a!2 (= $OK$3 (or (not a!1) (and (>= 0 0) (>= 10 0) (< 10 11) (< 0 4)))))) +(let ((a!4 (and a!2 + (= $V33_env$3 a!1) + (= $V27_dist$3 10) + (= $V28_speed$3 0) + a!3))) + (ite (or (not $m$1) (not $s$1)) a!4 (ite (and $m$1 $s$1) a!4 true)))))) +(check-sat) diff --git a/bench/skolems/car_all_e2_108_extend_skolem.smt2 b/bench/skolems/car_all_e2_108_extend_skolem.smt2 new file mode 100644 index 000000000..5e82d3d39 --- /dev/null +++ b/bench/skolems/car_all_e2_108_extend_skolem.smt2 @@ -0,0 +1,21 @@ +(declare-fun $V92_X$2 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun %init () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (and (and (not (and $m$0 $s$0)) (< 10 32767)) $V33_env$~1)) + (a!4 (= $V92_X$2 (and (not (and $m$0 $s$0)) (< 10 32767))))) +(let ((a!2 (ite %init (and (not (and $m$0 $s$0)) (< 10 32767)) a!1))) +(let ((a!3 (= $OK$2 (or (not a!2) (and (>= 0 0) (>= 10 0) (< 10 11) (< 0 4)))))) +(let ((a!5 (and a!3 + (= $V33_env$2 a!2) + (= $V27_dist$2 10) + (= $V28_speed$2 0) + a!4))) + (ite (or (not $m$0) (not $s$0)) a!5 (ite (and $m$0 $s$0) a!5 true))))))) +(check-sat) diff --git a/bench/skolems/car_all_e2_142_e8_194_base1_skolem.smt2 b/bench/skolems/car_all_e2_142_e8_194_base1_skolem.smt2 new file mode 100644 index 000000000..91e123d27 --- /dev/null +++ b/bench/skolems/car_all_e2_142_e8_194_base1_skolem.smt2 @@ -0,0 +1,15 @@ +(declare-fun $V28_speed$2 () Int) +(declare-fun $V27_dist$2 () Int) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V92_X$2 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (not (and (not (and $m$0 $s$0)) (< 10 32767)))) + (a!3 (= $V33_env$2 (and (not (and $m$0 $s$0)) (< 10 32767)))) + (a!4 (= $V92_X$2 (and (not (and $m$0 $s$0)) (< 10 32767))))) +(let ((a!2 (= $OK$2 (or a!1 (and (>= 0 0) (>= 10 0) (< 10 11) (< 0 4)))))) +(let ((a!5 (and a!2 a!3 (= $V27_dist$2 10) (= $V28_speed$2 0) a!4))) + (ite (and $m$0 $s$0) a!5 (ite (or (not $m$0) (not $s$0)) a!5 true)))))) +(check-sat) diff --git a/bench/skolems/car_all_e2_142_e8_194_base2_skolem.smt2 b/bench/skolems/car_all_e2_142_e8_194_base2_skolem.smt2 new file mode 100644 index 000000000..31d7b1c84 --- /dev/null +++ b/bench/skolems/car_all_e2_142_e8_194_base2_skolem.smt2 @@ -0,0 +1,19 @@ +(declare-fun $V92_X$3 () Bool) +(declare-fun $V28_speed$3 () Int) +(declare-fun $V27_dist$3 () Int) +(declare-fun $m$1 () Bool) +(declare-fun $V33_env$3 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $s$1 () Bool) + +(assert (let ((a!1 (and $V33_env$0 (and (not (and $m$1 $s$1)) (< 10 32767)))) + (a!3 (= $V92_X$3 (and (not (and $m$1 $s$1)) (< 10 32767))))) +(let ((a!2 (= $OK$3 (or (not a!1) (and (>= 0 0) (>= 10 0) (< 10 11) (< 0 4)))))) +(let ((a!4 (and a!2 + (= $V33_env$3 a!1) + (= $V27_dist$3 10) + (= $V28_speed$3 0) + a!3))) + (ite (or (not $m$1) (not $s$1)) a!4 (ite (and $m$1 $s$1) a!4 true)))))) +(check-sat) diff --git a/bench/skolems/car_all_e2_142_e8_194_extend_skolem.smt2 b/bench/skolems/car_all_e2_142_e8_194_extend_skolem.smt2 new file mode 100644 index 000000000..710244908 --- /dev/null +++ b/bench/skolems/car_all_e2_142_e8_194_extend_skolem.smt2 @@ -0,0 +1,21 @@ +(declare-fun $V92_X$2 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun %init () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $s$0 () Bool) + +(assert (let ((a!1 (and (and (not (and $m$0 $s$0)) (< 10 32767)) $V33_env$~1)) + (a!4 (= $V92_X$2 (and (not (and $m$0 $s$0)) (< 10 32767))))) +(let ((a!2 (ite %init (and (not (and $m$0 $s$0)) (< 10 32767)) a!1))) +(let ((a!3 (= $OK$2 (or (not a!2) (and (>= 0 0) (>= 10 0) (< 10 11) (< 0 4)))))) +(let ((a!5 (and a!3 + (= $V33_env$2 a!2) + (= $V27_dist$2 10) + (= $V28_speed$2 0) + a!4))) + (ite (or (not $m$0) (not $s$0)) a!5 (ite (and $m$0 $s$0) a!5 true))))))) +(check-sat) diff --git a/bench/skolems/car_all_e3_1068_e4_275_base_skolem.smt2 b/bench/skolems/car_all_e3_1068_e4_275_base_skolem.smt2 new file mode 100644 index 000000000..91e123d27 --- /dev/null +++ b/bench/skolems/car_all_e3_1068_e4_275_base_skolem.smt2 @@ -0,0 +1,15 @@ +(declare-fun $V28_speed$2 () Int) +(declare-fun $V27_dist$2 () Int) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V92_X$2 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (not (and (not (and $m$0 $s$0)) (< 10 32767)))) + (a!3 (= $V33_env$2 (and (not (and $m$0 $s$0)) (< 10 32767)))) + (a!4 (= $V92_X$2 (and (not (and $m$0 $s$0)) (< 10 32767))))) +(let ((a!2 (= $OK$2 (or a!1 (and (>= 0 0) (>= 10 0) (< 10 11) (< 0 4)))))) +(let ((a!5 (and a!2 a!3 (= $V27_dist$2 10) (= $V28_speed$2 0) a!4))) + (ite (and $m$0 $s$0) a!5 (ite (or (not $m$0) (not $s$0)) a!5 true)))))) +(check-sat) diff --git a/bench/skolems/car_all_e3_1068_e4_275_extend_skolem.smt2 b/bench/skolems/car_all_e3_1068_e4_275_extend_skolem.smt2 new file mode 100644 index 000000000..c3dec6a58 --- /dev/null +++ b/bench/skolems/car_all_e3_1068_e4_275_extend_skolem.smt2 @@ -0,0 +1,21 @@ +(declare-fun $V92_X$2 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $V27_dist$2 () Int) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun %init () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (and (and (not (and $m$0 $s$0)) (< 10 32767)) $V33_env$~1)) + (a!4 (= $V92_X$2 (and (not (and $m$0 $s$0)) (< 10 32767))))) +(let ((a!2 (ite %init (and (not (and $m$0 $s$0)) (< 10 32767)) a!1))) +(let ((a!3 (= $OK$2 (or (not a!2) (and (>= 0 0) (>= 10 0) (< 10 11) (< 0 4)))))) +(let ((a!5 (and a!3 + (= $V33_env$2 a!2) + (= $V27_dist$2 10) + (= $V28_speed$2 0) + a!4))) + (ite (or (not $m$0) (not $s$0)) a!5 (ite (and $m$0 $s$0) a!5 true))))))) +(check-sat) diff --git a/bench/skolems/car_all_e3_1068_e6_790_base1_skolem.smt2 b/bench/skolems/car_all_e3_1068_e6_790_base1_skolem.smt2 new file mode 100644 index 000000000..0f7a20ecf --- /dev/null +++ b/bench/skolems/car_all_e3_1068_e6_790_base1_skolem.smt2 @@ -0,0 +1,15 @@ +(declare-fun $V92_X$2 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (not (and (not (and $m$0 $s$0)) (< 10 32767)))) + (a!3 (= $V33_env$2 (and (not (and $m$0 $s$0)) (< 10 32767)))) + (a!4 (= $V92_X$2 (and (not (and $m$0 $s$0)) (< 10 32767))))) +(let ((a!2 (= $OK$2 (or a!1 (and (>= 0 0) (>= 10 0) (< 10 11) (< 0 4)))))) +(let ((a!5 (and a!2 a!3 (= $V27_dist$2 10) (= $V28_speed$2 0) a!4))) + (ite (and $m$0 $s$0) a!5 (ite (or (not $m$0) (not $s$0)) a!5 true)))))) +(check-sat) diff --git a/bench/skolems/car_all_e3_1068_e6_790_base2_skolem.smt2 b/bench/skolems/car_all_e3_1068_e6_790_base2_skolem.smt2 new file mode 100644 index 000000000..ec5602e64 --- /dev/null +++ b/bench/skolems/car_all_e3_1068_e6_790_base2_skolem.smt2 @@ -0,0 +1,19 @@ +(declare-fun $V92_X$3 () Bool) +(declare-fun $V28_speed$3 () Int) +(declare-fun $V27_dist$3 () Int) +(declare-fun $V33_env$3 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $m$1 () Bool) + +(assert (let ((a!1 (and $V33_env$0 (and (not (and $m$1 $s$1)) (< 10 32767)))) + (a!3 (= $V92_X$3 (and (not (and $m$1 $s$1)) (< 10 32767))))) +(let ((a!2 (= $OK$3 (or (not a!1) (and (>= 0 0) (>= 10 0) (< 10 11) (< 0 4)))))) +(let ((a!4 (and a!2 + (= $V33_env$3 a!1) + (= $V27_dist$3 10) + (= $V28_speed$3 0) + a!3))) + (ite (or (not $m$1) (not $s$1)) a!4 (ite (and $m$1 $s$1) a!4 true)))))) +(check-sat) diff --git a/bench/skolems/car_all_e3_1068_e6_790_extend_skolem.smt2 b/bench/skolems/car_all_e3_1068_e6_790_extend_skolem.smt2 new file mode 100644 index 000000000..0b1ef3f2c --- /dev/null +++ b/bench/skolems/car_all_e3_1068_e6_790_extend_skolem.smt2 @@ -0,0 +1,21 @@ +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $s$0 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun %init () Bool) +(declare-fun $V92_X$2 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (and (and (not (and $m$0 $s$0)) (< 10 32767)) $V33_env$~1)) + (a!4 (= $V92_X$2 (and (not (and $m$0 $s$0)) (< 10 32767))))) +(let ((a!2 (ite %init (and (not (and $m$0 $s$0)) (< 10 32767)) a!1))) +(let ((a!3 (= $OK$2 (or (not a!2) (and (>= 0 0) (>= 10 0) (< 10 11) (< 0 4)))))) +(let ((a!5 (and a!3 + (= $V33_env$2 a!2) + (= $V27_dist$2 10) + (= $V28_speed$2 0) + a!4))) + (ite (or (not $m$0) (not $s$0)) a!5 (ite (and $m$0 $s$0) a!5 true))))))) +(check-sat) diff --git a/bench/skolems/car_all_e8_856_base1_skolem.smt2 b/bench/skolems/car_all_e8_856_base1_skolem.smt2 new file mode 100644 index 000000000..91e123d27 --- /dev/null +++ b/bench/skolems/car_all_e8_856_base1_skolem.smt2 @@ -0,0 +1,15 @@ +(declare-fun $V28_speed$2 () Int) +(declare-fun $V27_dist$2 () Int) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V92_X$2 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (not (and (not (and $m$0 $s$0)) (< 10 32767)))) + (a!3 (= $V33_env$2 (and (not (and $m$0 $s$0)) (< 10 32767)))) + (a!4 (= $V92_X$2 (and (not (and $m$0 $s$0)) (< 10 32767))))) +(let ((a!2 (= $OK$2 (or a!1 (and (>= 0 0) (>= 10 0) (< 10 11) (< 0 4)))))) +(let ((a!5 (and a!2 a!3 (= $V27_dist$2 10) (= $V28_speed$2 0) a!4))) + (ite (and $m$0 $s$0) a!5 (ite (or (not $m$0) (not $s$0)) a!5 true)))))) +(check-sat) diff --git a/bench/skolems/car_all_e8_856_base2_skolem.smt2 b/bench/skolems/car_all_e8_856_base2_skolem.smt2 new file mode 100644 index 000000000..7904bc567 --- /dev/null +++ b/bench/skolems/car_all_e8_856_base2_skolem.smt2 @@ -0,0 +1,19 @@ +(declare-fun $V28_speed$3 () Int) +(declare-fun $V27_dist$3 () Int) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V92_X$3 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $V33_env$3 () Bool) +(declare-fun $m$1 () Bool) + +(assert (let ((a!1 (and $V33_env$0 (and (not (and $m$1 $s$1)) (< 10 32767)))) + (a!3 (= $V92_X$3 (and (not (and $m$1 $s$1)) (< 10 32767))))) +(let ((a!2 (= $OK$3 (or (not a!1) (and (>= 0 0) (>= 10 0) (< 10 11) (< 0 4)))))) +(let ((a!4 (and a!2 + (= $V33_env$3 a!1) + (= $V27_dist$3 10) + (= $V28_speed$3 0) + a!3))) + (ite (or (not $m$1) (not $s$1)) a!4 (ite (and $m$1 $s$1) a!4 true)))))) +(check-sat) diff --git a/bench/skolems/car_all_e8_856_extend_skolem.smt2 b/bench/skolems/car_all_e8_856_extend_skolem.smt2 new file mode 100644 index 000000000..5e82d3d39 --- /dev/null +++ b/bench/skolems/car_all_e8_856_extend_skolem.smt2 @@ -0,0 +1,21 @@ +(declare-fun $V92_X$2 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun %init () Bool) +(declare-fun $m$0 () Bool) + +(assert (let ((a!1 (and (and (not (and $m$0 $s$0)) (< 10 32767)) $V33_env$~1)) + (a!4 (= $V92_X$2 (and (not (and $m$0 $s$0)) (< 10 32767))))) +(let ((a!2 (ite %init (and (not (and $m$0 $s$0)) (< 10 32767)) a!1))) +(let ((a!3 (= $OK$2 (or (not a!2) (and (>= 0 0) (>= 10 0) (< 10 11) (< 0 4)))))) +(let ((a!5 (and a!3 + (= $V33_env$2 a!2) + (= $V27_dist$2 10) + (= $V28_speed$2 0) + a!4))) + (ite (or (not $m$0) (not $s$0)) a!5 (ite (and $m$0 $s$0) a!5 true))))))) +(check-sat) diff --git a/bench/skolems/cd_base1_skolem.smt2 b/bench/skolems/cd_base1_skolem.smt2 new file mode 100644 index 000000000..4c1e8079c --- /dev/null +++ b/bench/skolems/cd_base1_skolem.smt2 @@ -0,0 +1,40 @@ +(declare-fun $Property~0.cpt$2 () Int) +(declare-fun $Property~0.acceptable$2 () Bool) +(declare-fun $Property~0.speed$2 () Int) +(declare-fun $speed$2 () Int) +(declare-fun $Sofar~0.X$2 () Bool) +(declare-fun $minus$2 () Bool) +(declare-fun $Environment~0.minus$2 () Bool) +(declare-fun $diff$0 () Int) +(declare-fun $plus$2 () Bool) +(declare-fun $Environment~0.plus$2 () Bool) +(declare-fun $Environment~0.diff$2 () Int) +(declare-fun $Property~0.ok$2 () Bool) +(declare-fun $Sofar~0.Sofar$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $realistic$2 () Bool) +(declare-fun $Environment~0.ok$2 () Bool) + +(assert (let ((a!1 (and true (>= $diff$0 1) (<= $diff$0 4) (<= (- 0 4) $diff$0)))) +(let ((a!2 (and (= $realistic$2 a!1) + (= $Environment~0.ok$2 a!1) + (= $OK$2 true) + (= $Sofar~0.Sofar$2 (and (< 8 16) a!1 (<= 0 8))) + (= $Property~0.ok$2 true) + (= $Environment~0.diff$2 $diff$0) + (= $Environment~0.plus$2 false) + (= $plus$2 false) + (= $Environment~0.minus$2 false) + (= $minus$2 false) + (= $Sofar~0.X$2 (and (< 8 16) a!1 (<= 0 8))) + (= $speed$2 8) + (= $Property~0.speed$2 8) + (= $Property~0.acceptable$2 true) + (= $Property~0.cpt$2 0)))) +(let ((a!3 (ite (or (not (<= (- 4) $diff$0)) + (not (<= $diff$0 4)) + (not (>= $diff$0 1))) + a!2 + true))) + (ite (and (<= (- 4) $diff$0) (<= $diff$0 4) (>= $diff$0 1)) a!2 a!3))))) +(check-sat) diff --git a/bench/skolems/cd_base2_skolem.smt2 b/bench/skolems/cd_base2_skolem.smt2 new file mode 100644 index 000000000..7a4967503 --- /dev/null +++ b/bench/skolems/cd_base2_skolem.smt2 @@ -0,0 +1,53 @@ +(declare-fun $Property~0.acceptable$3 () Bool) +(declare-fun $speed$3 () Int) +(declare-fun $minus$3 () Bool) +(declare-fun $plus$3 () Bool) +(declare-fun $Environment~0.plus$3 () Bool) +(declare-fun $Environment~0.diff$3 () Int) +(declare-fun $Sofar~0.Sofar$3 () Bool) +(declare-fun $realistic$3 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $Environment~0.minus$3 () Bool) +(declare-fun $diff$1 () Int) +(declare-fun $Environment~0.plus$0 () Bool) +(declare-fun $Property~0.ok$3 () Bool) +(declare-fun $Sofar~0.X$3 () Bool) +(declare-fun $Environment~0.ok$3 () Bool) +(declare-fun $Sofar~0.Sofar$0 () Bool) +(declare-fun $Property~0.cpt$3 () Int) +(declare-fun $Environment~0.minus$0 () Bool) +(declare-fun $Property~0.speed$3 () Int) +(declare-fun $Property~0.cpt$0 () Int) + +(assert (let ((a!1 (and (ite $Environment~0.minus$0 (<= $diff$1 (- 0 1)) true) + (ite $Environment~0.plus$0 (>= $diff$1 1) true) + (<= $diff$1 4) + (<= (- 0 4) $diff$1))) + (a!4 (or (not (<= (- 4) $diff$1)) + (not (<= $diff$1 4)) + (and $Environment~0.plus$0 (not (>= $diff$1 1))) + (and $Environment~0.minus$0 (not (<= $diff$1 (- 1))))))) +(let ((a!2 (and $Sofar~0.Sofar$0 (and (< 8 16) a!1 (<= 0 8))))) +(let ((a!3 (and (= $realistic$3 a!1) + (= $Environment~0.ok$3 a!1) + (= $OK$3 (or (<= $Property~0.cpt$0 7) (not a!2))) + (= $Sofar~0.Sofar$3 a!2) + (= $Property~0.ok$3 (<= $Property~0.cpt$0 7)) + (= $Environment~0.diff$3 $diff$1) + (= $Environment~0.plus$3 false) + (= $plus$3 false) + (= $Environment~0.minus$3 false) + (= $minus$3 false) + (= $Sofar~0.X$3 (and (< 8 16) a!1 (<= 0 8))) + (= $speed$3 8) + (= $Property~0.speed$3 8) + (= $Property~0.acceptable$3 true) + (= $Property~0.cpt$3 0)))) + (ite (and (or (not $Sofar~0.Sofar$0) (<= $Property~0.cpt$0 7)) + (<= (- 4) $diff$1) + (<= $diff$1 4) + (or (not $Environment~0.plus$0) (>= $diff$1 1)) + (or (not $Environment~0.minus$0) (<= $diff$1 (- 1)))) + a!3 + (ite a!4 a!3 true)))))) +(check-sat) diff --git a/bench/skolems/cd_base3_skolem.smt2 b/bench/skolems/cd_base3_skolem.smt2 new file mode 100644 index 000000000..21871cc43 --- /dev/null +++ b/bench/skolems/cd_base3_skolem.smt2 @@ -0,0 +1,69 @@ +(declare-fun $speed$4 () Int) +(declare-fun $Environment~0.minus$4 () Bool) +(declare-fun $plus$4 () Bool) +(declare-fun $Environment~0.plus$4 () Bool) +(declare-fun $minus$4 () Bool) +(declare-fun $Environment~0.diff$4 () Int) +(declare-fun $OK$4 () Bool) +(declare-fun $Property~0.cpt$1 () Int) +(declare-fun $Sofar~0.Sofar$4 () Bool) +(declare-fun $Property~0.ok$4 () Bool) +(declare-fun $Environment~0.ok$4 () Bool) +(declare-fun $Property~0.acceptable$4 () Bool) +(declare-fun $realistic$4 () Bool) +(declare-fun $Property~0.cpt$4 () Int) +(declare-fun $Sofar~0.Sofar$1 () Bool) +(declare-fun $Property~0.speed$4 () Int) +(declare-fun $Environment~0.plus$1 () Bool) +(declare-fun $diff$2 () Int) +(declare-fun $Sofar~0.X$4 () Bool) +(declare-fun $Environment~0.minus$1 () Bool) + +(assert (let ((a!1 (and (ite $Environment~0.minus$1 (<= $diff$2 (- 0 1)) true) + (ite $Environment~0.plus$1 (>= $diff$2 1) true) + (<= $diff$2 4) + (<= (- 0 4) $diff$2))) + (a!4 (or (not (<= (- 4) $diff$2)) + (not (<= $diff$2 4)) + (and $Environment~0.plus$1 (not (>= $diff$2 1))) + (and $Environment~0.minus$1 (not (<= $diff$2 (- 1))))))) +(let ((a!2 (and $Sofar~0.Sofar$1 (and (< 8 16) a!1 (<= 0 8)))) + (a!5 (and $Sofar~0.Sofar$1 (and (< 13 16) a!1 (<= 0 13))))) +(let ((a!3 (and (= $realistic$4 a!1) + (= $Environment~0.ok$4 a!1) + (= $OK$4 (or (<= $Property~0.cpt$1 7) (not a!2))) + (= $Sofar~0.Sofar$4 a!2) + (= $Property~0.ok$4 (<= $Property~0.cpt$1 7)) + (= $Environment~0.diff$4 $diff$2) + (= $Environment~0.plus$4 false) + (= $plus$4 false) + (= $Environment~0.minus$4 false) + (= $minus$4 false) + (= $Sofar~0.X$4 (and (< 8 16) a!1 (<= 0 8))) + (= $speed$4 8) + (= $Property~0.speed$4 8) + (= $Property~0.acceptable$4 true) + (= $Property~0.cpt$4 0))) + (a!6 (and (= $realistic$4 a!1) + (= $Environment~0.ok$4 a!1) + (= $OK$4 (or (<= $Property~0.cpt$1 7) (not a!5))) + (= $Sofar~0.Sofar$4 a!5) + (= $Property~0.ok$4 (<= $Property~0.cpt$1 7)) + (= $Environment~0.diff$4 $diff$2) + (= $Environment~0.plus$4 false) + (= $plus$4 false) + (= $Environment~0.minus$4 false) + (= $minus$4 false) + (= $Sofar~0.X$4 (and (< 13 16) a!1 (<= 0 13))) + (= $speed$4 13) + (= $Property~0.speed$4 13) + (= $Property~0.acceptable$4 false) + (= $Property~0.cpt$4 (+ $Property~0.cpt$1 1))))) + (ite (and (or (not $Sofar~0.Sofar$1) (<= $Property~0.cpt$1 7)) + (<= (- 4) $diff$2) + (<= $diff$2 4) + (or (not $Environment~0.plus$1) (>= $diff$2 1)) + (or (not $Environment~0.minus$1) (<= $diff$2 (- 1)))) + a!3 + (ite a!4 a!6 true)))))) +(check-sat) diff --git a/bench/skolems/cd_e7_621_e8_714_base1_skolem.smt2 b/bench/skolems/cd_e7_621_e8_714_base1_skolem.smt2 new file mode 100644 index 000000000..f0df2ae41 --- /dev/null +++ b/bench/skolems/cd_e7_621_e8_714_base1_skolem.smt2 @@ -0,0 +1,18 @@ +(declare-fun $V109_cpt$2 () Int) +(declare-fun $V25_realistic$2 () Bool) +(declare-fun $V93_X$2 () Bool) +(declare-fun $diff$0 () Int) +(declare-fun $V110_acceptable$2 () Bool) +(declare-fun $V22_speed$2 () Int) +(declare-fun $V98_Sofar$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (and true (<= (- 0 4) $diff$0) (<= $diff$0 4) (>= $diff$0 1)))) + (and (= $OK$2 true) + (= $V98_Sofar$2 (and (< 8 16) a!1 (<= 0 8))) + (= $V25_realistic$2 a!1) + (= $V93_X$2 (and (< 8 16) a!1 (<= 0 8))) + (= $V22_speed$2 8) + (= $V109_cpt$2 0) + (= $V110_acceptable$2 true)))) +(check-sat) diff --git a/bench/skolems/cd_e7_621_e8_714_base2_skolem.smt2 b/bench/skolems/cd_e7_621_e8_714_base2_skolem.smt2 new file mode 100644 index 000000000..fb4457d4d --- /dev/null +++ b/bench/skolems/cd_e7_621_e8_714_base2_skolem.smt2 @@ -0,0 +1,33 @@ +(declare-fun $V22_speed$3 () Int) +(declare-fun $V109_cpt$3 () Int) +(declare-fun $V25_realistic$3 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $V24_minus$0 () Bool) +(declare-fun $V109_cpt$0 () Int) +(declare-fun $V98_Sofar$0 () Bool) +(declare-fun $V98_Sofar$3 () Bool) +(declare-fun $V110_acceptable$3 () Bool) +(declare-fun $V23_plus$0 () Bool) +(declare-fun $V93_X$3 () Bool) +(declare-fun $diff$1 () Int) + +(assert (let ((a!1 (or (not (<= (- 4) $diff$1)) + (not (<= $diff$1 4)) + (and $V23_plus$0 (not (>= $diff$1 1))) + (and $V24_minus$0 (not (<= $diff$1 (- 1)))) + (not $V98_Sofar$0) + (<= $V109_cpt$0 7))) + (a!2 (and (<= (- 0 4) $diff$1) + (<= $diff$1 4) + (ite $V23_plus$0 (>= $diff$1 1) true) + (ite $V24_minus$0 (<= $diff$1 (- 0 1)) true)))) +(let ((a!3 (and $V98_Sofar$0 (and (< 8 16) a!2 (<= 0 8))))) +(let ((a!4 (and (= $OK$3 (or (<= $V109_cpt$0 7) (not a!3))) + (= $V98_Sofar$3 a!3) + (= $V25_realistic$3 a!2) + (= $V93_X$3 (and (< 8 16) a!2 (<= 0 8))) + (= $V22_speed$3 8) + (= $V109_cpt$3 0) + (= $V110_acceptable$3 true)))) + (ite a!1 a!4 true))))) +(check-sat) diff --git a/bench/skolems/cd_e7_621_e8_714_extend_skolem.smt2 b/bench/skolems/cd_e7_621_e8_714_extend_skolem.smt2 new file mode 100644 index 000000000..fa2f48c86 --- /dev/null +++ b/bench/skolems/cd_e7_621_e8_714_extend_skolem.smt2 @@ -0,0 +1,56 @@ +(declare-fun $V109_cpt$2 () Int) +(declare-fun $V23_plus$~1 () Bool) +(declare-fun $V22_speed$2 () Int) +(declare-fun $V98_Sofar$2 () Bool) +(declare-fun $V93_X$2 () Bool) +(declare-fun $V25_realistic$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V98_Sofar$~1 () Bool) +(declare-fun $V109_cpt$~1 () Int) +(declare-fun $diff$0 () Int) +(declare-fun $V24_minus$~1 () Bool) +(declare-fun $V110_acceptable$2 () Bool) +(declare-fun %init () Bool) + +(assert (let ((a!1 (or (not (<= (- 4) $diff$0)) + (not (<= $diff$0 4)) + (and (or %init $V23_plus$~1) (not (>= $diff$0 1))) + (and (not %init) $V24_minus$~1 (not (<= $diff$0 (- 1)))))) + (a!2 (or (not (<= (- 4) $diff$0)) + (not (<= $diff$0 4)) + (and (or %init $V23_plus$~1) (not (>= $diff$0 1))) + (and (not %init) $V24_minus$~1 (not (<= $diff$0 (- 1)))) + (not $V98_Sofar$~1))) + (a!3 (and (and (<= (- 0 4) $diff$0) (<= $diff$0 4)) + (ite (ite true true $V23_plus$~1) (>= $diff$0 1) true) + (ite (ite true false $V24_minus$~1) (<= $diff$0 (- 0 1)) true))) + (a!4 (and (and (<= (- 0 4) $diff$0) (<= $diff$0 4)) + (ite (ite %init true $V23_plus$~1) (>= $diff$0 1) true) + (ite (ite %init false $V24_minus$~1) (<= $diff$0 (- 0 1)) true)))) +(let ((a!5 (ite %init + (and (< 8 16) a!3 (<= 0 8)) + (and (and (< 8 16) a!4 (<= 0 8)) $V98_Sofar$~1))) + (a!8 (ite %init + (and (< (- 1) 16) a!3 (<= 0 (- 1))) + (and (and (< (- 1) 16) a!4 (<= 0 (- 1))) $V98_Sofar$~1)))) +(let ((a!6 (= $OK$2 (or (ite %init true (<= $V109_cpt$~1 7)) (not a!5)))) + (a!9 (= $OK$2 (or (ite %init true (<= $V109_cpt$~1 7)) (not a!8))))) +(let ((a!7 (and a!6 + (= $V98_Sofar$2 a!5) + (= $V25_realistic$2 a!4) + (= $V93_X$2 (and (< 8 16) a!4 (<= 0 8))) + (= $V22_speed$2 8) + (= $V109_cpt$2 0) + (= $V110_acceptable$2 true))) + (a!10 (and a!9 + (= $V98_Sofar$2 a!8) + (= $V25_realistic$2 a!4) + (= $V93_X$2 (and (< (- 1) 16) a!4 (<= 0 (- 1)))) + (= $V22_speed$2 (- 1)) + (= $V109_cpt$2 (+ 1 $V109_cpt$~1)) + (= $V110_acceptable$2 false)))) +(let ((a!11 (ite (or (and %init (= $V109_cpt$~1 (- 1))) (not %init)) a!10 true))) + (ite (or (and %init a!1) (and (not %init) a!2) %init (<= $V109_cpt$~1 7)) + a!7 + a!11))))))) +(check-sat) diff --git a/bench/skolems/cd_extend_skolem.smt2 b/bench/skolems/cd_extend_skolem.smt2 new file mode 100644 index 000000000..c81f21b22 --- /dev/null +++ b/bench/skolems/cd_extend_skolem.smt2 @@ -0,0 +1,126 @@ +(declare-fun $Sofar~0.X$2 () Bool) +(declare-fun $plus$2 () Bool) +(declare-fun $Property~0.speed$2 () Int) +(declare-fun $Sofar~0.Sofar$~1 () Bool) +(declare-fun $Environment~0.diff$2 () Int) +(declare-fun $Property~0.ok$2 () Bool) +(declare-fun $Sofar~0.Sofar$2 () Bool) +(declare-fun $Environment~0.minus$~1 () Bool) +(declare-fun $Environment~0.ok$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $Property~0.acceptable$2 () Bool) +(declare-fun $Environment~0.plus$2 () Bool) +(declare-fun $realistic$2 () Bool) +(declare-fun $minus$2 () Bool) +(declare-fun $Property~0.cpt$~1 () Int) +(declare-fun $Environment~0.minus$2 () Bool) +(declare-fun $Environment~0.plus$~1 () Bool) +(declare-fun %init () Bool) +(declare-fun $Property~0.cpt$2 () Int) +(declare-fun $speed$2 () Int) +(declare-fun $diff$0 () Int) + +(assert (let ((a!1 (or (not (<= (- 4) $diff$0)) + (not (<= $diff$0 4)) + (and (or %init $Environment~0.plus$~1) (not (>= $diff$0 1))) + (and (not %init) + $Environment~0.minus$~1 + (not (<= $diff$0 (- 1)))))) + (a!3 (and (ite (ite %init false $Environment~0.minus$~1) + (<= $diff$0 (- 0 1)) + true) + (ite (ite %init true $Environment~0.plus$~1) + (>= $diff$0 1) + true) + (and (<= $diff$0 4) (<= (- 0 4) $diff$0)))) + (a!4 (and (ite (ite true false $Environment~0.minus$~1) + (<= $diff$0 (- 0 1)) + true) + (ite (ite true true $Environment~0.plus$~1) (>= $diff$0 1) true) + (and (<= $diff$0 4) (<= (- 0 4) $diff$0)))) + (a!9 (and (<= (- 4) $diff$0) + (<= $diff$0 4) + (or (and (not %init) (not $Environment~0.plus$~1)) + (>= $diff$0 1)) + (or %init (not $Environment~0.minus$~1) (<= $diff$0 (- 1))) + (or %init (and (not %init) (= $Property~0.cpt$~1 (- 1)))))) + (a!14 (and (<= (- 4) $diff$0) + (<= $diff$0 4) + (or (and (not %init) (not $Environment~0.plus$~1)) + (>= $diff$0 1)) + (or %init (not $Environment~0.minus$~1) (<= $diff$0 (- 1))) + (or (and %init (= $Property~0.cpt$~1 (- 1))) (not %init))))) +(let ((a!2 (and a!1 (or %init (and (not %init) (= $Property~0.cpt$~1 (- 1)))))) + (a!5 (ite %init + (and (< 13 16) a!4 (<= 0 13)) + (and (and (< 13 16) a!3 (<= 0 13)) $Sofar~0.Sofar$~1))) + (a!7 (= $Sofar~0.X$2 (and (< 13 16) a!3 (<= 0 13)))) + (a!10 (ite %init + (and (< 16 16) a!4 (<= 0 16)) + (and (and (< 16 16) a!3 (<= 0 16)) $Sofar~0.Sofar$~1))) + (a!12 (= $Sofar~0.X$2 (and (< 16 16) a!3 (<= 0 16)))) + (a!16 (and a!1 (or (and %init (= $Property~0.cpt$~1 (- 1))) (not %init))))) +(let ((a!6 (= $OK$2 (or (ite %init true (<= $Property~0.cpt$~1 7)) (not a!5)))) + (a!11 (= $OK$2 (or (ite %init true (<= $Property~0.cpt$~1 7)) (not a!10))))) +(let ((a!8 (and (= $realistic$2 a!3) + (= $Environment~0.ok$2 a!3) + a!6 + (= $Sofar~0.Sofar$2 a!5) + (= $Property~0.ok$2 (ite %init true (<= $Property~0.cpt$~1 7))) + (= $Environment~0.diff$2 $diff$0) + (= $Environment~0.plus$2 false) + (= $plus$2 false) + (= $Environment~0.minus$2 false) + (= $minus$2 false) + a!7 + (= $speed$2 13) + (= $Property~0.speed$2 13) + (= $Property~0.acceptable$2 false) + (= $Property~0.cpt$2 0))) + (a!13 (and (= $realistic$2 a!3) + (= $Environment~0.ok$2 a!3) + a!11 + (= $Sofar~0.Sofar$2 a!10) + (= $Property~0.ok$2 (ite %init true (<= $Property~0.cpt$~1 7))) + (= $Environment~0.diff$2 $diff$0) + (= $Environment~0.plus$2 false) + (= $plus$2 false) + (= $Environment~0.minus$2 false) + (= $minus$2 false) + a!12 + (= $speed$2 16) + (= $Property~0.speed$2 16) + (= $Property~0.acceptable$2 false) + (= $Property~0.cpt$2 0))) + (a!15 (and (= $realistic$2 a!3) + (= $Environment~0.ok$2 a!3) + a!11 + (= $Sofar~0.Sofar$2 a!10) + (= $Property~0.ok$2 (ite %init true (<= $Property~0.cpt$~1 7))) + (= $Environment~0.diff$2 $diff$0) + (= $Environment~0.plus$2 false) + (= $plus$2 false) + (= $Environment~0.minus$2 false) + (= $minus$2 false) + a!12 + (= $speed$2 16) + (= $Property~0.speed$2 16) + (= $Property~0.acceptable$2 false) + (= $Property~0.cpt$2 (+ 1 $Property~0.cpt$~1)))) + (a!17 (and (= $realistic$2 a!3) + (= $Environment~0.ok$2 a!3) + a!6 + (= $Sofar~0.Sofar$2 a!5) + (= $Property~0.ok$2 (ite %init true (<= $Property~0.cpt$~1 7))) + (= $Environment~0.diff$2 $diff$0) + (= $Environment~0.plus$2 false) + (= $plus$2 false) + (= $Environment~0.minus$2 false) + (= $minus$2 false) + a!7 + (= $speed$2 13) + (= $Property~0.speed$2 13) + (= $Property~0.acceptable$2 false) + (= $Property~0.cpt$2 (+ 1 $Property~0.cpt$~1))))) + (ite a!2 a!8 (ite a!9 a!13 (ite a!14 a!15 (ite a!16 a!17 true))))))))) +(check-sat) diff --git a/bench/skolems/cruise_controller_01_base_skolem.smt2 b/bench/skolems/cruise_controller_01_base_skolem.smt2 new file mode 100644 index 000000000..310c9ef46 --- /dev/null +++ b/bench/skolems/cruise_controller_01_base_skolem.smt2 @@ -0,0 +1,2454 @@ +(declare-fun $OK$2 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + () + Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + () + Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + () + Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + () + Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + () + Bool) +(declare-fun $cancel$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + () + Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + () + Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + () + Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + () + Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + () + Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + () + Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + () + Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + () + Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + () + Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + () + Int) +(declare-fun $carSpeed$0 () Real) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + () + Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + () + Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + () + Int) +(declare-fun $accelResume$0 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + () + Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + () + Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$2 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$2 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$2 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + () + Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + () + Bool) +(declare-fun $carGear$0 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + () + Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + () + Int) +(declare-fun $onOff$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + () + Bool) +(declare-fun $decelSet$0 () Bool) +(declare-fun $validInputs$0 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + () + Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + () + Bool) +(declare-fun $brakePedal$0 () Bool) + +(assert (let ((a!1 (or $cancel$0 + $brakePedal$0 + (not (= $carGear$0 3)) + (not (>= $carSpeed$0 15.0)) + (not $validInputs$0))) + (a!2 (and $validInputs$0 + (>= $carSpeed$0 (to_real (div 150 10))) + (not $cancel$0) + (not $brakePedal$0) + (= $carGear$0 3)))) +(let ((a!3 (ite (and (not $accelResume$0) + (not $decelSet$0) + $onOff$0 + (not $cancel$0) + (not $brakePedal$0) + (= $carGear$0 3) + (>= $carSpeed$0 15.0) + $validInputs$0) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 1) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + (ite (and (not $accelResume$0) (not $decelSet$0) $onOff$0 a!1) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + true)))) +(let ((a!4 (ite (and $accelResume$0 + (not $decelSet$0) + $onOff$0 + (not $cancel$0) + (not $brakePedal$0) + (= $carGear$0 3) + (>= $carSpeed$0 15.0) + $validInputs$0) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 1) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + (ite (and $accelResume$0 (not $decelSet$0) $onOff$0 a!1) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + a!3)))) +(let ((a!5 (ite (and $accelResume$0 (not $decelSet$0) (not $onOff$0) a!1) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + (ite (and $accelResume$0 + (not $decelSet$0) + (not $onOff$0) + (not $cancel$0) + (not $brakePedal$0) + (= $carGear$0 3) + (>= $carSpeed$0 15.0) + $validInputs$0) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + a!4)))) +(let ((a!6 (ite (and (not $accelResume$0) + (not $decelSet$0) + (not $onOff$0) + (not $cancel$0) + (not $brakePedal$0) + (= $carGear$0 3) + (>= $carSpeed$0 15.0) + $validInputs$0) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + (ite (and (not $accelResume$0) + (not $decelSet$0) + (not $onOff$0) + a!1) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + a!5)))) +(let ((a!7 (ite (and $accelResume$0 + $decelSet$0 + (not $onOff$0) + (not $cancel$0) + (not $brakePedal$0) + (= $carGear$0 3) + (>= $carSpeed$0 15.0) + $validInputs$0) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + (ite (and (not $accelResume$0) + $decelSet$0 + (not $onOff$0) + (not $cancel$0) + (not $brakePedal$0) + (= $carGear$0 3) + (>= $carSpeed$0 15.0) + $validInputs$0) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + a!6)))) +(let ((a!8 (ite (and $accelResume$0 $decelSet$0 $onOff$0 a!1) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 1) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + (ite (and $accelResume$0 + $decelSet$0 + $onOff$0 + (not $cancel$0) + (not $brakePedal$0) + (= $carGear$0 3) + (>= $carSpeed$0 15.0) + $validInputs$0) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + a!7)))) +(let ((a!9 (ite (and (not $accelResume$0) $decelSet$0 (not $onOff$0) a!1) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + (ite (and $accelResume$0 $decelSet$0 (not $onOff$0) a!1) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + a!8)))) + (ite (and (not $accelResume$0) $decelSet$0 $onOff$0 a!1) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 1) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 0) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + (ite (and (not $accelResume$0) + $decelSet$0 + $onOff$0 + (not $cancel$0) + (not $brakePedal$0) + (= $carGear$0 3) + (>= $carSpeed$0 15.0) + $validInputs$0) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 1) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + a!9))))))))))) +(check-sat) diff --git a/bench/skolems/cruise_controller_02_base_skolem.smt2 b/bench/skolems/cruise_controller_02_base_skolem.smt2 new file mode 100644 index 000000000..2bd2407fc --- /dev/null +++ b/bench/skolems/cruise_controller_02_base_skolem.smt2 @@ -0,0 +1,2454 @@ +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + () + Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + () + Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + () + Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + () + Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + () + Int) +(declare-fun $accelResume$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + () + Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + () + Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + () + Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + () + Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + () + Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$2 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + () + Bool) +(declare-fun $brakePedal$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + () + Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + () + Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + () + Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + () + Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + () + Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + () + Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + () + Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$2 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + () + Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + () + Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + () + Int) +(declare-fun $validInputs$0 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$2 () Int) +(declare-fun $carSpeed$0 () Real) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + () + Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + () + Bool) +(declare-fun $carGear$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + () + Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + () + Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + () + Bool) +(declare-fun $decelSet$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + () + Int) +(declare-fun $cancel$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + () + Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + () + Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + () + Int) +(declare-fun $onOff$0 () Bool) + +(assert (let ((a!1 (or $cancel$0 + $brakePedal$0 + (not (= $carGear$0 3)) + (not (>= $carSpeed$0 15.0)) + (not $validInputs$0))) + (a!2 (and $validInputs$0 + (>= $carSpeed$0 (to_real (div 150 10))) + (not $cancel$0) + (not $brakePedal$0) + (= $carGear$0 3)))) +(let ((a!3 (ite (and $accelResume$0 + (not $decelSet$0) + $onOff$0 + (not $cancel$0) + (not $brakePedal$0) + (= $carGear$0 3) + (>= $carSpeed$0 15.0) + $validInputs$0) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 1) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + (ite (and $accelResume$0 (not $decelSet$0) $onOff$0 a!1) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + true)))) +(let ((a!4 (ite (and (not $accelResume$0) + (not $decelSet$0) + $onOff$0 + (not $cancel$0) + (not $brakePedal$0) + (= $carGear$0 3) + (>= $carSpeed$0 15.0) + $validInputs$0) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 1) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + (ite (and (not $accelResume$0) (not $decelSet$0) $onOff$0 a!1) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + a!3)))) +(let ((a!5 (ite (and $accelResume$0 + (not $decelSet$0) + (not $onOff$0) + (not $cancel$0) + (not $brakePedal$0) + (= $carGear$0 3) + (>= $carSpeed$0 15.0) + $validInputs$0) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + (ite (and $accelResume$0 (not $decelSet$0) (not $onOff$0) a!1) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + a!4)))) +(let ((a!6 (ite (and (not $accelResume$0) + (not $decelSet$0) + (not $onOff$0) + (not $cancel$0) + (not $brakePedal$0) + (= $carGear$0 3) + (>= $carSpeed$0 15.0) + $validInputs$0) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + (ite (and (not $accelResume$0) + (not $decelSet$0) + (not $onOff$0) + a!1) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + a!5)))) +(let ((a!7 (ite (and $accelResume$0 $decelSet$0 $onOff$0 a!1) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 1) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + (ite (and $accelResume$0 + $decelSet$0 + $onOff$0 + (not $cancel$0) + (not $brakePedal$0) + (= $carGear$0 3) + (>= $carSpeed$0 15.0) + $validInputs$0) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + a!6)))) +(let ((a!8 (ite (and $accelResume$0 + $decelSet$0 + (not $onOff$0) + (not $cancel$0) + (not $brakePedal$0) + (= $carGear$0 3) + (>= $carSpeed$0 15.0) + $validInputs$0) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + (ite (and $accelResume$0 $decelSet$0 (not $onOff$0) a!1) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + a!7)))) +(let ((a!9 (ite (and (not $accelResume$0) $decelSet$0 (not $onOff$0) a!1) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + (ite (and (not $accelResume$0) + $decelSet$0 + (not $onOff$0) + (not $cancel$0) + (not $brakePedal$0) + (= $carGear$0 3) + (>= $carSpeed$0 15.0) + $validInputs$0) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + a!8)))) + (ite (and (not $accelResume$0) $decelSet$0 $onOff$0 a!1) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 1) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 0) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + (ite (and (not $accelResume$0) + $decelSet$0 + $onOff$0 + (not $cancel$0) + (not $brakePedal$0) + (= $carGear$0 3) + (>= $carSpeed$0 15.0) + $validInputs$0) + (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 + 0) + (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 + 1) + (= $chart_CruiseController_ModeLogic_mode_logic_onOff$2 1) + (= $chart_CruiseController_ModeLogic_mode_logic_decel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_set$2 0) + (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 + false) + (= $chart_CruiseController_ModeLogic_mode_logic_accel$2 0) + (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 + 1) + (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 + a!2) + (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 + true) + (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 + 0) + (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 + 1) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 1) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 7) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 + false) + (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 + 4) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 + 0) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 + false) + (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 + 0) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 + 3) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 + true) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 + 2) + (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 + true) + (= $OK$2 true)) + a!9))))))))))) +(check-sat) diff --git a/bench/skolems/cruise_controller_06_base_skolem.smt2 b/bench/skolems/cruise_controller_06_base_skolem.smt2 new file mode 100644 index 000000000..71e44964e --- /dev/null +++ b/bench/skolems/cruise_controller_06_base_skolem.smt2 @@ -0,0 +1,5 @@ +(declare-fun $cruiseThrottle$2 () Real) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $cruiseThrottle$2 0.0))) +(check-sat) diff --git a/bench/skolems/cruise_controller_06_extend_skolem.smt2 b/bench/skolems/cruise_controller_06_extend_skolem.smt2 new file mode 100644 index 000000000..71e44964e --- /dev/null +++ b/bench/skolems/cruise_controller_06_extend_skolem.smt2 @@ -0,0 +1,5 @@ +(declare-fun $cruiseThrottle$2 () Real) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $cruiseThrottle$2 0.0))) +(check-sat) diff --git a/bench/skolems/cruise_controller_07_base_skolem.smt2 b/bench/skolems/cruise_controller_07_base_skolem.smt2 new file mode 100644 index 000000000..b2eaeae9e --- /dev/null +++ b/bench/skolems/cruise_controller_07_base_skolem.smt2 @@ -0,0 +1,5 @@ +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $desiredSpeed$2 0.0))) +(check-sat) diff --git a/bench/skolems/cruise_controller_07_extend_skolem.smt2 b/bench/skolems/cruise_controller_07_extend_skolem.smt2 new file mode 100644 index 000000000..b2eaeae9e --- /dev/null +++ b/bench/skolems/cruise_controller_07_extend_skolem.smt2 @@ -0,0 +1,5 @@ +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $desiredSpeed$2 0.0))) +(check-sat) diff --git a/bench/skolems/cruise_controller_09_base_skolem.smt2 b/bench/skolems/cruise_controller_09_base_skolem.smt2 new file mode 100644 index 000000000..9a46a4d50 --- /dev/null +++ b/bench/skolems/cruise_controller_09_base_skolem.smt2 @@ -0,0 +1,9 @@ +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $carSpeed$0 () Real) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (= 0.0 (ite true (to_real (div 0 10)) $desiredSpeed$~1)))) +(let ((a!2 (or a!1 (= 0.0 $carSpeed$0) (= 0.0 (to_real (div 0 10)))))) + (and (= $OK$2 a!2) (= $desiredSpeed$2 0.0))))) +(check-sat) diff --git a/bench/skolems/cruise_controller_09_extend_skolem.smt2 b/bench/skolems/cruise_controller_09_extend_skolem.smt2 new file mode 100644 index 000000000..97e7ea18b --- /dev/null +++ b/bench/skolems/cruise_controller_09_extend_skolem.smt2 @@ -0,0 +1,18 @@ +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $carSpeed$0 () Real) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$2 () Bool) +(declare-fun %init () Bool) + +(assert (let ((a!1 (= $desiredSpeed$~1 + (ite %init (to_real (div 0 10)) $desiredSpeed$~1)))) +(let ((a!2 (or (= $desiredSpeed$~1 (to_real (div 0 10))) + (= $desiredSpeed$~1 $carSpeed$0) + a!1))) + (ite (or (and %init (= $desiredSpeed$~1 0.0)) + (not %init) + (= $desiredSpeed$~1 $carSpeed$0) + (= $desiredSpeed$~1 0.0)) + (and (= $OK$2 a!2) (= $desiredSpeed$2 $desiredSpeed$~1)) + (and (= $OK$2 true) (= $desiredSpeed$2 $carSpeed$0)))))) +(check-sat) diff --git a/bench/skolems/cruise_controller_11_base_skolem.smt2 b/bench/skolems/cruise_controller_11_base_skolem.smt2 new file mode 100644 index 000000000..1846944fa --- /dev/null +++ b/bench/skolems/cruise_controller_11_base_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $mode$2 () Int) +(declare-fun $cruiseThrottle$2 () Real) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $mode$2 4) (= $cruiseThrottle$2 0.0))) +(check-sat) diff --git a/bench/skolems/cruise_controller_11_extend_skolem.smt2 b/bench/skolems/cruise_controller_11_extend_skolem.smt2 new file mode 100644 index 000000000..731f2a89a --- /dev/null +++ b/bench/skolems/cruise_controller_11_extend_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $cruiseThrottle$2 () Real) +(declare-fun $mode$2 () Int) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $mode$2 4) (= $cruiseThrottle$2 0.0))) +(check-sat) diff --git a/bench/skolems/cruise_controller_15_base_skolem.smt2 b/bench/skolems/cruise_controller_15_base_skolem.smt2 new file mode 100644 index 000000000..5fd96a6b2 --- /dev/null +++ b/bench/skolems/cruise_controller_15_base_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $mode$2 () Int) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $mode$2 4) (= $desiredSpeed$2 0.0))) +(check-sat) diff --git a/bench/skolems/cruise_controller_15_extend_skolem.smt2 b/bench/skolems/cruise_controller_15_extend_skolem.smt2 new file mode 100644 index 000000000..5fd96a6b2 --- /dev/null +++ b/bench/skolems/cruise_controller_15_extend_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $mode$2 () Int) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $mode$2 4) (= $desiredSpeed$2 0.0))) +(check-sat) diff --git a/bench/skolems/cruise_controller_16_base_skolem.smt2 b/bench/skolems/cruise_controller_16_base_skolem.smt2 new file mode 100644 index 000000000..b26bef49e --- /dev/null +++ b/bench/skolems/cruise_controller_16_base_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $mode$2 () Int) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $mode$2 7) (= $desiredSpeed$2 0.0))) +(check-sat) diff --git a/bench/skolems/cruise_controller_16_extend_skolem.smt2 b/bench/skolems/cruise_controller_16_extend_skolem.smt2 new file mode 100644 index 000000000..8a0d3a5c4 --- /dev/null +++ b/bench/skolems/cruise_controller_16_extend_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $mode$2 () Int) +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $mode$2 7) (= $desiredSpeed$2 0.0))) +(check-sat) diff --git a/bench/skolems/cruise_controller_17_base1_skolem.smt2 b/bench/skolems/cruise_controller_17_base1_skolem.smt2 new file mode 100644 index 000000000..5d25eb2b8 --- /dev/null +++ b/bench/skolems/cruise_controller_17_base1_skolem.smt2 @@ -0,0 +1,9 @@ +(declare-fun $cruiseThrottle$2 () Real) +(declare-fun $mode$2 () Int) +(declare-fun $cruiseThrottle$~1 () Real) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (= 0.0 (ite true (to_real (div 0 10)) $cruiseThrottle$~1)))) +(let ((a!2 (= $OK$2 (or (not (= 5 4)) a!1)))) + (and a!2 (= $mode$2 5) (= $cruiseThrottle$2 0.0))))) +(check-sat) diff --git a/bench/skolems/cruise_controller_17_base2_skolem.smt2 b/bench/skolems/cruise_controller_17_base2_skolem.smt2 new file mode 100644 index 000000000..882786101 --- /dev/null +++ b/bench/skolems/cruise_controller_17_base2_skolem.smt2 @@ -0,0 +1,9 @@ +(declare-fun $cruiseThrottle$3 () Real) +(declare-fun $mode$3 () Int) +(declare-fun $cruiseThrottle$0 () Real) +(declare-fun $OK$3 () Bool) + +(assert (let ((a!1 (= 0.0 (ite false (to_real (div 0 10)) $cruiseThrottle$0)))) +(let ((a!2 (= $OK$3 (or (not (= 5 4)) a!1)))) + (and a!2 (= $mode$3 5) (= $cruiseThrottle$3 0.0))))) +(check-sat) diff --git a/bench/skolems/cruise_controller_17_extend_skolem.smt2 b/bench/skolems/cruise_controller_17_extend_skolem.smt2 new file mode 100644 index 000000000..d68aa9b35 --- /dev/null +++ b/bench/skolems/cruise_controller_17_extend_skolem.smt2 @@ -0,0 +1,10 @@ +(declare-fun $mode$2 () Int) +(declare-fun $cruiseThrottle$~1 () Real) +(declare-fun %init () Bool) +(declare-fun $cruiseThrottle$2 () Real) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (= 0.0 (ite %init (to_real (div 0 10)) $cruiseThrottle$~1)))) +(let ((a!2 (= $OK$2 (or (not (= 5 4)) a!1)))) + (and a!2 (= $mode$2 5) (= $cruiseThrottle$2 0.0))))) +(check-sat) diff --git a/bench/skolems/cruise_controller_20_base_skolem.smt2 b/bench/skolems/cruise_controller_20_base_skolem.smt2 new file mode 100644 index 000000000..d6381d45e --- /dev/null +++ b/bench/skolems/cruise_controller_20_base_skolem.smt2 @@ -0,0 +1,9 @@ +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $mode$~1 () Int) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (= 0.0 (ite true (to_real (div 0 10)) $desiredSpeed$~1)))) +(let ((a!2 (or (not (ite true false (= $mode$~1 4))) a!1))) + (and (= $OK$2 a!2) (= $desiredSpeed$2 0.0))))) +(check-sat) diff --git a/bench/skolems/cruise_controller_20_extend_skolem.smt2 b/bench/skolems/cruise_controller_20_extend_skolem.smt2 new file mode 100644 index 000000000..8b9ec1072 --- /dev/null +++ b/bench/skolems/cruise_controller_20_extend_skolem.smt2 @@ -0,0 +1,11 @@ +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $mode$~1 () Int) +(declare-fun %init () Bool) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (= $desiredSpeed$~1 + (ite %init (to_real (div 0 10)) $desiredSpeed$~1)))) +(let ((a!2 (or (not (ite %init false (= $mode$~1 4))) a!1))) + (and (= $OK$2 a!2) (= $desiredSpeed$2 $desiredSpeed$~1))))) +(check-sat) diff --git a/bench/skolems/cruise_controller_23_base_skolem.smt2 b/bench/skolems/cruise_controller_23_base_skolem.smt2 new file mode 100644 index 000000000..52737cc99 --- /dev/null +++ b/bench/skolems/cruise_controller_23_base_skolem.smt2 @@ -0,0 +1,5 @@ +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $desiredSpeed$2 15.0))) +(check-sat) diff --git a/bench/skolems/cruise_controller_23_extend_skolem.smt2 b/bench/skolems/cruise_controller_23_extend_skolem.smt2 new file mode 100644 index 000000000..52737cc99 --- /dev/null +++ b/bench/skolems/cruise_controller_23_extend_skolem.smt2 @@ -0,0 +1,5 @@ +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $desiredSpeed$2 15.0))) +(check-sat) diff --git a/bench/skolems/ex3_e7_590_base_skolem.smt2 b/bench/skolems/ex3_e7_590_base_skolem.smt2 new file mode 100644 index 000000000..5aa6b3923 --- /dev/null +++ b/bench/skolems/ex3_e7_590_base_skolem.smt2 @@ -0,0 +1,5 @@ +(declare-fun $V19_late$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V19_late$2 true))) +(check-sat) diff --git a/bench/skolems/ex3_e7_590_e7_590_base_skolem.smt2 b/bench/skolems/ex3_e7_590_e7_590_base_skolem.smt2 new file mode 100644 index 000000000..5aa6b3923 --- /dev/null +++ b/bench/skolems/ex3_e7_590_e7_590_base_skolem.smt2 @@ -0,0 +1,5 @@ +(declare-fun $V19_late$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V19_late$2 true))) +(check-sat) diff --git a/bench/skolems/ex3_e7_590_e7_590_extend_skolem.smt2 b/bench/skolems/ex3_e7_590_e7_590_extend_skolem.smt2 new file mode 100644 index 000000000..35ef85f38 --- /dev/null +++ b/bench/skolems/ex3_e7_590_e7_590_extend_skolem.smt2 @@ -0,0 +1,8 @@ +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun %init () Bool) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (= $OK$2 (ite %init true (or (not $V20_early$~1) (not false)))))) + (and a!1 (= $V19_late$2 false)))) +(check-sat) diff --git a/bench/skolems/ex3_e7_590_e8_550_base_skolem.smt2 b/bench/skolems/ex3_e7_590_e8_550_base_skolem.smt2 new file mode 100644 index 000000000..5aa6b3923 --- /dev/null +++ b/bench/skolems/ex3_e7_590_e8_550_base_skolem.smt2 @@ -0,0 +1,5 @@ +(declare-fun $V19_late$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V19_late$2 true))) +(check-sat) diff --git a/bench/skolems/ex3_e7_590_e8_550_extend_skolem.smt2 b/bench/skolems/ex3_e7_590_e8_550_extend_skolem.smt2 new file mode 100644 index 000000000..746e89c88 --- /dev/null +++ b/bench/skolems/ex3_e7_590_e8_550_extend_skolem.smt2 @@ -0,0 +1,8 @@ +(declare-fun $V19_late$2 () Bool) +(declare-fun %init () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (= $OK$2 (ite %init true (or (not $V20_early$~1) (not false)))))) + (and a!1 (= $V19_late$2 false)))) +(check-sat) diff --git a/bench/skolems/ex3_e7_590_extend_skolem.smt2 b/bench/skolems/ex3_e7_590_extend_skolem.smt2 new file mode 100644 index 000000000..4ef6b3682 --- /dev/null +++ b/bench/skolems/ex3_e7_590_extend_skolem.smt2 @@ -0,0 +1,8 @@ +(declare-fun %init () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (= $OK$2 (ite %init true (or (not $V20_early$~1) (not false)))))) + (and a!1 (= $V19_late$2 false)))) +(check-sat) diff --git a/bench/skolems/ex3_e8_120_base_skolem.smt2 b/bench/skolems/ex3_e8_120_base_skolem.smt2 new file mode 100644 index 000000000..5aa6b3923 --- /dev/null +++ b/bench/skolems/ex3_e8_120_base_skolem.smt2 @@ -0,0 +1,5 @@ +(declare-fun $V19_late$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V19_late$2 true))) +(check-sat) diff --git a/bench/skolems/ex3_e8_120_extend_skolem.smt2 b/bench/skolems/ex3_e8_120_extend_skolem.smt2 new file mode 100644 index 000000000..746e89c88 --- /dev/null +++ b/bench/skolems/ex3_e8_120_extend_skolem.smt2 @@ -0,0 +1,8 @@ +(declare-fun $V19_late$2 () Bool) +(declare-fun %init () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (= $OK$2 (ite %init true (or (not $V20_early$~1) (not false)))))) + (and a!1 (= $V19_late$2 false)))) +(check-sat) diff --git a/bench/skolems/ex3_e8_381_e7_224_base_skolem.smt2 b/bench/skolems/ex3_e8_381_e7_224_base_skolem.smt2 new file mode 100644 index 000000000..5aa6b3923 --- /dev/null +++ b/bench/skolems/ex3_e8_381_e7_224_base_skolem.smt2 @@ -0,0 +1,5 @@ +(declare-fun $V19_late$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V19_late$2 true))) +(check-sat) diff --git a/bench/skolems/ex3_e8_381_e7_224_extend_skolem.smt2 b/bench/skolems/ex3_e8_381_e7_224_extend_skolem.smt2 new file mode 100644 index 000000000..746e89c88 --- /dev/null +++ b/bench/skolems/ex3_e8_381_e7_224_extend_skolem.smt2 @@ -0,0 +1,8 @@ +(declare-fun $V19_late$2 () Bool) +(declare-fun %init () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (= $OK$2 (ite %init true (or (not $V20_early$~1) (not false)))))) + (and a!1 (= $V19_late$2 false)))) +(check-sat) diff --git a/bench/skolems/example_base1_skolem.smt2 b/bench/skolems/example_base1_skolem.smt2 new file mode 100644 index 000000000..a185f3345 --- /dev/null +++ b/bench/skolems/example_base1_skolem.smt2 @@ -0,0 +1,18 @@ +(declare-fun $prop4$2 () Bool) +(declare-fun $state$2 () Int) +(declare-fun $prop3$2 () Bool) +(declare-fun $prop2$2 () Bool) +(declare-fun $prop_all$2 () Bool) +(declare-fun $prop1$2 () Bool) +(declare-fun $bias_max$2 () Bool) +(declare-fun $bias$2 () Int) + +(assert (and (= $bias$2 0) + (= $bias_max$2 false) + (= $prop1$2 true) + (= $state$2 0) + (= $prop2$2 true) + (= $prop3$2 true) + (= $prop4$2 true) + (= $prop_all$2 true))) +(check-sat) diff --git a/bench/skolems/example_base2_skolem.smt2 b/bench/skolems/example_base2_skolem.smt2 new file mode 100644 index 000000000..47641fc89 --- /dev/null +++ b/bench/skolems/example_base2_skolem.smt2 @@ -0,0 +1,69 @@ +(declare-fun $prop_all$3 () Bool) +(declare-fun $prop1$3 () Bool) +(declare-fun $prop3$3 () Bool) +(declare-fun $prop4$3 () Bool) +(declare-fun $prop2$3 () Bool) +(declare-fun $state$3 () Int) +(declare-fun $bias$3 () Int) +(declare-fun $state$0 () Int) +(declare-fun $bias_max$3 () Bool) +(declare-fun $bias$0 () Int) +(declare-fun $bias_max$0 () Bool) +(declare-fun $x$1 () Bool) + +(assert (let ((a!1 (and (not $x$1) + (not (<= 3 $bias$0)) + (not (<= $bias$0 (- 1))) + (not $bias_max$0) + (or (not (= $state$0 0)) (not $x$1)) + (or (not (= $state$0 0)) $x$1))) + (a!2 (or $bias_max$0 + (>= (+ (- 1) $bias$0) 2) + (<= (+ (- 1) $bias$0) (- 0 2)))) + (a!3 (or (= (+ (- 1) $bias$0) 0) (not (= 3 0)))) + (a!4 (or (not (and (= $state$0 0) $x$1)) (= 3 2))) + (a!5 (or (not (and (= $state$0 0) (not $x$1))) (= 3 1))) + (a!6 (and (not $x$1) + (not (<= 3 $bias$0)) + (not (<= $bias$0 (- 1))) + (not $bias_max$0) + (or (not (= $state$0 0)) (not $x$1)))) + (a!7 (or (= (+ (- 1) $bias$0) 0) (not (= 1 0)))) + (a!8 (or (not (and (= $state$0 0) $x$1)) (= 1 2))) + (a!11 (and $x$1 + (not (<= 1 $bias$0)) + (not (<= $bias$0 (- 3))) + (not $bias_max$0) + (or (not (= $state$0 0)) $x$1))) + (a!12 (or $bias_max$0 (>= (+ 1 $bias$0) 2) (<= (+ 1 $bias$0) (- 0 2)))) + (a!13 (or (= (+ 1 $bias$0) 0) (not (= 2 0)))) + (a!14 (or (not (and (= $state$0 0) (not $x$1))) (= 2 1)))) +(let ((a!9 (= $prop_all$3 (and (or (not a!2) (= 1 3)) true a!7 a!8))) + (a!15 (= $prop_all$3 (and (or (not a!12) (= 2 3)) a!14 true a!13)))) +(let ((a!10 (and (= $bias$3 (+ (- 1) $bias$0)) + (= $bias_max$3 a!2) + (= $prop1$3 a!7) + (= $state$3 1) + (= $prop2$3 a!8) + (= $prop3$3 true) + (= $prop4$3 (or (not a!2) (= 1 3))) + a!9)) + (a!16 (and (= $bias$3 (+ 1 $bias$0)) + (= $bias_max$3 a!12) + (= $prop1$3 a!13) + (= $state$3 2) + (= $prop2$3 true) + (= $prop3$3 a!14) + (= $prop4$3 (or (not a!12) (= 2 3))) + a!15))) + (ite a!1 + (and (= $bias$3 (+ (- 1) $bias$0)) + (= $bias_max$3 a!2) + (= $prop1$3 a!3) + (= $state$3 3) + (= $prop2$3 a!4) + (= $prop3$3 a!5) + (= $prop4$3 true) + (= $prop_all$3 (and true a!5 a!3 a!4))) + (ite a!6 a!10 (ite a!11 a!16 true))))))) +(check-sat) diff --git a/bench/skolems/example_base3_skolem.smt2 b/bench/skolems/example_base3_skolem.smt2 new file mode 100644 index 000000000..33e8599d7 --- /dev/null +++ b/bench/skolems/example_base3_skolem.smt2 @@ -0,0 +1,67 @@ +(declare-fun $prop4$4 () Bool) +(declare-fun $state$4 () Int) +(declare-fun $prop_all$4 () Bool) +(declare-fun $bias$4 () Int) +(declare-fun $prop3$4 () Bool) +(declare-fun $prop2$4 () Bool) +(declare-fun $state$1 () Int) +(declare-fun $prop1$4 () Bool) +(declare-fun $bias_max$4 () Bool) +(declare-fun $bias_max$1 () Bool) +(declare-fun $bias$1 () Int) +(declare-fun $x$2 () Bool) + +(assert (let ((a!1 (and (or (and $x$2 (= $bias$1 (- 1))) (and (not $x$2) (= $bias$1 1))) + (not $bias_max$1) + (or (not (= $state$1 0)) (not $x$2)) + (or (not (= $state$1 0)) $x$2))) + (a!2 (= $bias_max$4 (or $bias_max$1 (>= 0 2) (<= 0 (- 0 2))))) + (a!3 (or (not (and (= $state$1 0) $x$2)) (= 3 2))) + (a!4 (or (not (and (= $state$1 0) (not $x$2))) (= 3 1))) + (a!5 (and $x$2 + (or (>= $bias$1 1) (<= $bias$1 (- 3)) $bias_max$1) + (or (not (= $state$1 0)) (not $x$2)) + (or (not (= $state$1 0)) $x$2))) + (a!6 (= $bias_max$4 + (or $bias_max$1 (>= (+ 1 $bias$1) 2) (<= (+ 1 $bias$1) (- 0 2))))) + (a!7 (or (= (+ 1 $bias$1) 0) (not (= 3 0)))) + (a!8 (and (not $x$2) + (or (>= $bias$1 3) (<= $bias$1 (- 1)) $bias_max$1) + (or (not (= $state$1 0)) (not $x$2)) + (or (not (= $state$1 0)) $x$2))) + (a!9 (= $bias_max$4 + (or $bias_max$1 + (>= (+ (- 1) $bias$1) 2) + (<= (+ (- 1) $bias$1) (- 0 2))))) + (a!10 (or (not (= 3 0)) (= (+ (- 1) $bias$1) 0)))) +(let ((a!11 (ite a!8 + (and (= $bias$4 (+ (- 1) $bias$1)) + a!9 + (= $prop1$4 a!10) + (= $state$4 3) + (= $prop2$4 a!3) + (= $prop3$4 a!4) + (= $prop4$4 true) + (= $prop_all$4 (and true a!4 a!3 a!10))) + true))) +(let ((a!12 (ite a!5 + (and (= $bias$4 (+ 1 $bias$1)) + a!6 + (= $prop1$4 a!7) + (= $state$4 3) + (= $prop2$4 a!3) + (= $prop3$4 a!4) + (= $prop4$4 true) + (= $prop_all$4 (and true a!4 a!3 a!7))) + a!11))) + (ite a!1 + (and (= $bias$4 0) + a!2 + (= $prop1$4 true) + (= $state$4 3) + (= $prop2$4 a!3) + (= $prop3$4 a!4) + (= $prop4$4 true) + (= $prop_all$4 (and true a!4 true a!3))) + a!12))))) +(check-sat) diff --git a/bench/skolems/example_extend_skolem.smt2 b/bench/skolems/example_extend_skolem.smt2 new file mode 100644 index 000000000..dc815c759 --- /dev/null +++ b/bench/skolems/example_extend_skolem.smt2 @@ -0,0 +1,103 @@ +(declare-fun $prop3$3 () Bool) +(declare-fun $prop2$3 () Bool) +(declare-fun $prop1$3 () Bool) +(declare-fun $state$3 () Int) +(declare-fun $prop4$3 () Bool) +(declare-fun $bias$3 () Int) +(declare-fun $prop_all$3 () Bool) +(declare-fun $bias_max$0 () Bool) +(declare-fun $bias_max$3 () Bool) +(declare-fun $state$0 () Int) +(declare-fun $x$1 () Bool) +(declare-fun $bias$0 () Int) + +(assert (let ((a!1 (and (not $x$1) + (not (<= 3 $bias$0)) + (not (<= $bias$0 (- 1))) + (not $bias_max$0) + (or (not (= $state$0 0)) (not $x$1)) + (or (not (= $state$0 0)) $x$1))) + (a!2 (or $bias_max$0 + (>= (+ (- 1) $bias$0) 2) + (<= (+ (- 1) $bias$0) (- 0 2)))) + (a!3 (or (= (+ (- 1) $bias$0) 0) (not (= 3 0)))) + (a!4 (or (not (and (= $state$0 0) $x$1)) (= 3 2))) + (a!5 (or (not (and (= $state$0 0) (not $x$1))) (= 3 1))) + (a!7 (and (not $x$1) + (not (<= 3 $bias$0)) + (not (<= $bias$0 (- 1))) + (not $bias_max$0) + (or (not (= $state$0 0)) (not $x$1)))) + (a!8 (or (= (+ (- 1) $bias$0) 0) (not (= 1 0)))) + (a!9 (or (not (and (= $state$0 0) $x$1)) (= 1 2))) + (a!12 (and (not $x$1) + (or (>= $bias$0 3) (<= $bias$0 (- 1)) $bias_max$0) + (or (not (= $state$0 0)) (not $x$1)) + (or (not (= $state$0 0)) $x$1))) + (a!13 (and (or (and $x$1 (= $bias$0 (- 1))) + (and (not $x$1) (= $bias$0 1))) + (not $bias_max$0) + (or (not (= $state$0 0)) (not $x$1)) + (or (not (= $state$0 0)) $x$1))) + (a!14 (= $bias_max$3 (or $bias_max$0 (>= 0 2) (<= 0 (- 0 2))))) + (a!15 (and $x$1 + (or (>= $bias$0 1) (<= $bias$0 (- 3)) $bias_max$0) + (or (not (= $state$0 0)) (not $x$1)) + (or (not (= $state$0 0)) $x$1))) + (a!16 (or $bias_max$0 (>= (+ 1 $bias$0) 2) (<= (+ 1 $bias$0) (- 0 2)))) + (a!17 (or (not (= 3 0)) (= (+ 1 $bias$0) 0))) + (a!18 (and $x$1 + (not (<= 1 $bias$0)) + (not (<= $bias$0 (- 3))) + (not $bias_max$0) + (or (not (= $state$0 0)) $x$1))) + (a!19 (or (= (+ 1 $bias$0) 0) (not (= 2 0)))) + (a!20 (or (not (and (= $state$0 0) (not $x$1))) (= 2 1)))) +(let ((a!6 (and (= $bias$3 (+ (- 1) $bias$0)) + (= $bias_max$3 a!2) + (= $prop1$3 a!3) + (= $state$3 3) + (= $prop2$3 a!4) + (= $prop3$3 a!5) + (= $prop4$3 true) + (= $prop_all$3 (and true a!5 a!3 a!4)))) + (a!10 (= $prop_all$3 (and (or (not a!2) (= 1 3)) true a!8 a!9))) + (a!21 (= $prop_all$3 (and (or (not a!16) (= 2 3)) a!20 true a!19)))) +(let ((a!11 (and (= $bias$3 (+ (- 1) $bias$0)) + (= $bias_max$3 a!2) + (= $prop1$3 a!8) + (= $state$3 1) + (= $prop2$3 a!9) + (= $prop3$3 true) + (= $prop4$3 (or (not a!2) (= 1 3))) + a!10)) + (a!22 (and (= $bias$3 (+ 1 $bias$0)) + (= $bias_max$3 a!16) + (= $prop1$3 a!19) + (= $state$3 2) + (= $prop2$3 true) + (= $prop3$3 a!20) + (= $prop4$3 (or (not a!16) (= 2 3))) + a!21))) +(let ((a!23 (ite a!15 + (and (= $bias$3 (+ 1 $bias$0)) + (= $bias_max$3 a!16) + (= $prop1$3 a!17) + (= $state$3 3) + (= $prop2$3 a!4) + (= $prop3$3 a!5) + (= $prop4$3 true) + (= $prop_all$3 (and true a!5 a!4 a!17))) + (ite a!18 a!22 true)))) +(let ((a!24 (ite a!13 + (and (= $bias$3 0) + a!14 + (= $prop1$3 true) + (= $state$3 3) + (= $prop2$3 a!4) + (= $prop3$3 a!5) + (= $prop4$3 true) + (= $prop_all$3 (and true a!5 true a!4))) + a!23))) + (ite a!1 a!6 (ite a!7 a!11 (ite a!12 a!6 a!24))))))))) +(check-sat) diff --git a/bench/skolems/fast_1_e7_2044_e8_1396_base_skolem.smt2 b/bench/skolems/fast_1_e7_2044_e8_1396_base_skolem.smt2 new file mode 100644 index 000000000..7fbd91717 --- /dev/null +++ b/bench/skolems/fast_1_e7_2044_e8_1396_base_skolem.smt2 @@ -0,0 +1,5 @@ +(declare-fun $V83_cca$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V83_cca$2 true))) +(check-sat) diff --git a/bench/skolems/fast_1_e7_2044_e8_1396_extend_skolem.smt2 b/bench/skolems/fast_1_e7_2044_e8_1396_extend_skolem.smt2 new file mode 100644 index 000000000..99845e7a7 --- /dev/null +++ b/bench/skolems/fast_1_e7_2044_e8_1396_extend_skolem.smt2 @@ -0,0 +1,15 @@ +(declare-fun $ccr$0 () Bool) +(declare-fun $V83_cca$2 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun %init () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (or (ite %init false (and $ccseti$0 (not $ccseti$~1))) + (ite %init false (and $ccsetd$0 (not $ccsetd$~1))) + (ite %init false (and $ccr$0 (not $ccr$~1)))))) + (and (= $OK$2 (ite (ite %init false false) a!1 true)) (= $V83_cca$2 false)))) +(check-sat) diff --git a/bench/skolems/fast_1_e8_747_base1_skolem.smt2 b/bench/skolems/fast_1_e8_747_base1_skolem.smt2 new file mode 100644 index 000000000..7fbd91717 --- /dev/null +++ b/bench/skolems/fast_1_e8_747_base1_skolem.smt2 @@ -0,0 +1,5 @@ +(declare-fun $V83_cca$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V83_cca$2 true))) +(check-sat) diff --git a/bench/skolems/fast_1_e8_747_base2_skolem.smt2 b/bench/skolems/fast_1_e8_747_base2_skolem.smt2 new file mode 100644 index 000000000..86b908261 --- /dev/null +++ b/bench/skolems/fast_1_e8_747_base2_skolem.smt2 @@ -0,0 +1,14 @@ +(declare-fun $ccr$0 () Bool) +(declare-fun $V83_cca$3 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccsetd$1 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccr$1 () Bool) +(declare-fun $ccseti$1 () Bool) + +(assert (let ((a!1 (or (ite false false (and $ccseti$1 (not $ccseti$0))) + (ite false false (and $ccsetd$1 (not $ccsetd$0))) + (ite false false (and $ccr$1 (not $ccr$0)))))) + (and (= $OK$3 (ite false a!1 true)) (= $V83_cca$3 false)))) +(check-sat) diff --git a/bench/skolems/fast_1_e8_747_e8_1041_base_skolem.smt2 b/bench/skolems/fast_1_e8_747_e8_1041_base_skolem.smt2 new file mode 100644 index 000000000..7fbd91717 --- /dev/null +++ b/bench/skolems/fast_1_e8_747_e8_1041_base_skolem.smt2 @@ -0,0 +1,5 @@ +(declare-fun $V83_cca$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V83_cca$2 true))) +(check-sat) diff --git a/bench/skolems/fast_1_e8_747_e8_1041_extend_skolem.smt2 b/bench/skolems/fast_1_e8_747_e8_1041_extend_skolem.smt2 new file mode 100644 index 000000000..b62b3ad67 --- /dev/null +++ b/bench/skolems/fast_1_e8_747_e8_1041_extend_skolem.smt2 @@ -0,0 +1,15 @@ +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $V83_cca$2 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun %init () Bool) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (or (ite %init false (and $ccseti$0 (not $ccseti$~1))) + (ite %init false (and $ccsetd$0 (not $ccsetd$~1))) + (ite %init false (and $ccr$0 (not $ccr$~1)))))) + (and (= $OK$2 (ite (ite %init false false) a!1 true)) (= $V83_cca$2 false)))) +(check-sat) diff --git a/bench/skolems/fast_1_e8_747_extend_skolem.smt2 b/bench/skolems/fast_1_e8_747_extend_skolem.smt2 new file mode 100644 index 000000000..99845e7a7 --- /dev/null +++ b/bench/skolems/fast_1_e8_747_extend_skolem.smt2 @@ -0,0 +1,15 @@ +(declare-fun $ccr$0 () Bool) +(declare-fun $V83_cca$2 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun %init () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (or (ite %init false (and $ccseti$0 (not $ccseti$~1))) + (ite %init false (and $ccsetd$0 (not $ccsetd$~1))) + (ite %init false (and $ccr$0 (not $ccr$~1)))))) + (and (= $OK$2 (ite (ite %init false false) a!1 true)) (= $V83_cca$2 false)))) +(check-sat) diff --git a/bench/skolems/fast_2_e7_2526_e8_1145_base1_skolem.smt2 b/bench/skolems/fast_2_e7_2526_e8_1145_base1_skolem.smt2 new file mode 100644 index 000000000..9322e9799 --- /dev/null +++ b/bench/skolems/fast_2_e7_2526_e8_1145_base1_skolem.smt2 @@ -0,0 +1,37 @@ +(declare-fun $V87_cca$2 () Bool) +(declare-fun $V84_p3$2 () Bool) +(declare-fun $V86_ccont$2 () Bool) +(declare-fun $V82_p1$2 () Bool) +(declare-fun $cccanc$0 () Bool) +(declare-fun $sdok$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $accok$0 () Bool) +(declare-fun $sdok$0 () Bool) +(declare-fun $qfok$0 () Bool) +(declare-fun $battok$0 () Bool) +(declare-fun $V85_p4$2 () Bool) +(declare-fun $bpa$0 () Bool) +(declare-fun $V83_p2$2 () Bool) +(declare-fun $gearok$0 () Bool) +(declare-fun $vs$0 () Int) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (not (and true + (not $bpa$0) + $battok$0 + $gearok$0 + $qfok$0 + (ite true false (and $sdok$~1 $sdok$0)) + (<= 35 $vs$0) + (<= $vs$0 200) + (ite true false (and $~flatten0$~1 $accok$0)) + (not $cccanc$0))))) +(let ((a!2 (= $OK$2 (and true true true (ite a!1 (not false) true))))) + (and a!2 + (= $V82_p1$2 true) + (= $V83_p2$2 (ite a!1 (not false) true)) + (= $V84_p3$2 true) + (= $V85_p4$2 true) + (= $V87_cca$2 false) + (= $V86_ccont$2 true))))) +(check-sat) diff --git a/bench/skolems/fast_2_e7_2526_e8_1145_base2_skolem.smt2 b/bench/skolems/fast_2_e7_2526_e8_1145_base2_skolem.smt2 new file mode 100644 index 000000000..52a68497f --- /dev/null +++ b/bench/skolems/fast_2_e7_2526_e8_1145_base2_skolem.smt2 @@ -0,0 +1,66 @@ +(declare-fun $V85_p4$3 () Bool) +(declare-fun $V83_p2$3 () Bool) +(declare-fun $V86_ccont$3 () Bool) +(declare-fun $cccanc$1 () Bool) +(declare-fun $V87_cca$3 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $sdok$1 () Bool) +(declare-fun $accok$1 () Bool) +(declare-fun $qfok$1 () Bool) +(declare-fun $sdok$0 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $gearok$1 () Bool) +(declare-fun $cconoff$0 () Bool) +(declare-fun $ccd$1 () Bool) +(declare-fun $bpa$1 () Bool) +(declare-fun $battok$1 () Bool) +(declare-fun $igsw$0 () Bool) +(declare-fun $vs$1 () Int) +(declare-fun $V86_ccont$0 () Bool) +(declare-fun $V82_p1$3 () Bool) +(declare-fun $igsw$1 () Bool) +(declare-fun $V84_p3$3 () Bool) +(declare-fun $cconoff$1 () Bool) + +(assert (let ((a!1 (not (or (and $igsw$1 (not $igsw$0)) (and (not $igsw$1) $igsw$0)))) + (a!2 (not (and true + (not $bpa$1) + $battok$1 + $gearok$1 + $qfok$1 + (ite false false (and $sdok$0 $sdok$1)) + (<= 35 $vs$1) + (<= $vs$1 200) + (ite false false (and $~flatten0$0 $accok$1)) + (not $cccanc$1)))) + (a!3 (ite false + false + (or (and $igsw$1 (not $igsw$0)) (and (not $igsw$1) $igsw$0)))) + (a!5 (ite (or (and (not $igsw$0) $igsw$1) (and $igsw$0 (not $igsw$1))) + (not false) + true))) +(let ((a!4 (and (not a!3) + (not $ccd$1) + (ite false false (and $cconoff$1 (not $cconoff$0)))))) +(let ((a!6 (and true + (ite a!2 (not false) true) + (ite (and true (not $V86_ccont$0)) a!4 true) + a!5)) + (a!7 (= $V84_p3$3 (ite (and true (not $V86_ccont$0)) a!4 true)))) +(let ((a!8 (and (= $OK$3 a!6) + (= $V82_p1$3 true) + (= $V83_p2$3 (ite a!2 (not false) true)) + a!7 + (= $V85_p4$3 a!5) + (= $V87_cca$3 false) + (= $V86_ccont$3 true)))) + (ite (or $V86_ccont$0 (and a!1 (not $ccd$1) $cconoff$1 (not $cconoff$0))) + a!8 + (and (= $OK$3 (and true a!5)) + (= $V82_p1$3 true) + (= $V83_p2$3 true) + (= $V84_p3$3 true) + (= $V85_p4$3 a!5) + (= $V87_cca$3 false) + (= $V86_ccont$3 false)))))))) +(check-sat) diff --git a/bench/skolems/fast_2_e7_2526_e8_1145_extend_skolem.smt2 b/bench/skolems/fast_2_e7_2526_e8_1145_extend_skolem.smt2 new file mode 100644 index 000000000..c13373541 --- /dev/null +++ b/bench/skolems/fast_2_e7_2526_e8_1145_extend_skolem.smt2 @@ -0,0 +1,72 @@ +(declare-fun $V85_p4$2 () Bool) +(declare-fun $V83_p2$2 () Bool) +(declare-fun $V82_p1$2 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $V87_cca$2 () Bool) +(declare-fun $cccanc$0 () Bool) +(declare-fun $sdok$0 () Bool) +(declare-fun $cconoff$0 () Bool) +(declare-fun $vs$0 () Int) +(declare-fun $qfok$0 () Bool) +(declare-fun %init () Bool) +(declare-fun $battok$0 () Bool) +(declare-fun $cconoff$~1 () Bool) +(declare-fun $igsw$~1 () Bool) +(declare-fun $bpa$0 () Bool) +(declare-fun $V84_p3$2 () Bool) +(declare-fun $sdok$~1 () Bool) +(declare-fun $ccd$0 () Bool) +(declare-fun $gearok$0 () Bool) +(declare-fun $accok$0 () Bool) +(declare-fun $igsw$0 () Bool) +(declare-fun $V86_ccont$2 () Bool) +(declare-fun $V86_ccont$~1 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (and (not %init) + (or (and $igsw$0 (not $igsw$~1)) (and (not $igsw$0) $igsw$~1)))) + (a!3 (not (and true + (not $bpa$0) + $battok$0 + $gearok$0 + $qfok$0 + (ite %init false (and $sdok$~1 $sdok$0)) + (<= 35 $vs$0) + (<= $vs$0 200) + (ite %init false (and $~flatten0$~1 $accok$0)) + (not $cccanc$0)))) + (a!4 (ite %init + false + (or (and $igsw$0 (not $igsw$~1)) (and (not $igsw$0) $igsw$~1))))) +(let ((a!2 (or (not (and (not %init) (not $V86_ccont$~1))) + (and (not a!1) + (not $ccd$0) + (not %init) + $cconoff$0 + (not $cconoff$~1)))) + (a!5 (and (not a!4) + (not $ccd$0) + (ite %init false (and $cconoff$0 (not $cconoff$~1))))) + (a!9 (= $OK$2 (and true (ite a!4 (not false) true))))) +(let ((a!6 (ite (ite %init false (and true (not $V86_ccont$~1))) a!5 true)) + (a!10 (and a!9 + (= $V82_p1$2 true) + (= $V83_p2$2 true) + (= $V84_p3$2 true) + (= $V85_p4$2 (ite a!4 (not false) true)) + (= $V87_cca$2 false) + (= $V86_ccont$2 false)))) +(let ((a!7 (= $OK$2 + (and true + (ite a!3 (not false) true) + a!6 + (ite a!4 (not false) true))))) +(let ((a!8 (and a!7 + (= $V82_p1$2 true) + (= $V83_p2$2 (ite a!3 (not false) true)) + (= $V84_p3$2 a!6) + (= $V85_p4$2 (ite a!4 (not false) true)) + (= $V87_cca$2 false) + (= $V86_ccont$2 true)))) + (ite a!2 a!8 a!10))))))) +(check-sat) diff --git a/bench/skolems/fast_2_e8_460_base_skolem.smt2 b/bench/skolems/fast_2_e8_460_base_skolem.smt2 new file mode 100644 index 000000000..8e885351a --- /dev/null +++ b/bench/skolems/fast_2_e8_460_base_skolem.smt2 @@ -0,0 +1,37 @@ +(declare-fun $V85_p4$2 () Bool) +(declare-fun $V84_p3$2 () Bool) +(declare-fun $V83_p2$2 () Bool) +(declare-fun $V82_p1$2 () Bool) +(declare-fun $cccanc$0 () Bool) +(declare-fun $accok$0 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $vs$0 () Int) +(declare-fun $sdok$0 () Bool) +(declare-fun $sdok$~1 () Bool) +(declare-fun $V87_cca$2 () Bool) +(declare-fun $battok$0 () Bool) +(declare-fun $V86_ccont$2 () Bool) +(declare-fun $qfok$0 () Bool) +(declare-fun $gearok$0 () Bool) +(declare-fun $bpa$0 () Bool) + +(assert (let ((a!1 (not (and true + (not $bpa$0) + $battok$0 + $gearok$0 + $qfok$0 + (ite true false (and $sdok$~1 $sdok$0)) + (<= 35 $vs$0) + (<= $vs$0 200) + (ite true false (and $~flatten0$~1 $accok$0)) + (not $cccanc$0))))) +(let ((a!2 (= $OK$2 (and true true true (ite a!1 (not false) true))))) + (and a!2 + (= $V82_p1$2 true) + (= $V83_p2$2 (ite a!1 (not false) true)) + (= $V84_p3$2 true) + (= $V85_p4$2 true) + (= $V87_cca$2 false) + (= $V86_ccont$2 true))))) +(check-sat) diff --git a/bench/skolems/fast_2_e8_460_e8_1920_base_skolem.smt2 b/bench/skolems/fast_2_e8_460_e8_1920_base_skolem.smt2 new file mode 100644 index 000000000..2f215edf5 --- /dev/null +++ b/bench/skolems/fast_2_e8_460_e8_1920_base_skolem.smt2 @@ -0,0 +1,37 @@ +(declare-fun $V86_ccont$2 () Bool) +(declare-fun $V87_cca$2 () Bool) +(declare-fun $V84_p3$2 () Bool) +(declare-fun $V83_p2$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $gearok$0 () Bool) +(declare-fun $cccanc$0 () Bool) +(declare-fun $V85_p4$2 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $accok$0 () Bool) +(declare-fun $vs$0 () Int) +(declare-fun $sdok$0 () Bool) +(declare-fun $battok$0 () Bool) +(declare-fun $sdok$~1 () Bool) +(declare-fun $V82_p1$2 () Bool) +(declare-fun $qfok$0 () Bool) +(declare-fun $bpa$0 () Bool) + +(assert (let ((a!1 (not (and true + (not $bpa$0) + $battok$0 + $gearok$0 + $qfok$0 + (ite true false (and $sdok$~1 $sdok$0)) + (<= 35 $vs$0) + (<= $vs$0 200) + (ite true false (and $~flatten0$~1 $accok$0)) + (not $cccanc$0))))) +(let ((a!2 (= $OK$2 (and true true true (ite a!1 (not false) true))))) + (and a!2 + (= $V82_p1$2 true) + (= $V83_p2$2 (ite a!1 (not false) true)) + (= $V84_p3$2 true) + (= $V85_p4$2 true) + (= $V87_cca$2 false) + (= $V86_ccont$2 true))))) +(check-sat) diff --git a/bench/skolems/fast_2_e8_460_e8_1920_extend_skolem.smt2 b/bench/skolems/fast_2_e8_460_e8_1920_extend_skolem.smt2 new file mode 100644 index 000000000..144702f93 --- /dev/null +++ b/bench/skolems/fast_2_e8_460_e8_1920_extend_skolem.smt2 @@ -0,0 +1,24 @@ +(declare-fun $V87_cca$2 () Bool) +(declare-fun $V83_p2$2 () Bool) +(declare-fun $V86_ccont$2 () Bool) +(declare-fun $V82_p1$2 () Bool) +(declare-fun $igsw$~1 () Bool) +(declare-fun $igsw$0 () Bool) +(declare-fun $V85_p4$2 () Bool) +(declare-fun $V84_p3$2 () Bool) +(declare-fun %init () Bool) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (ite (ite %init + false + (and $igsw$0 (not $igsw$~1) (not $igsw$0) $igsw$~1)) + (not false) + true))) + (and (= $OK$2 (and true a!1)) + (= $V82_p1$2 true) + (= $V83_p2$2 true) + (= $V84_p3$2 true) + (= $V85_p4$2 a!1) + (= $V87_cca$2 false) + (= $V86_ccont$2 false)))) +(check-sat) diff --git a/bench/skolems/fast_2_e8_460_extend_skolem.smt2 b/bench/skolems/fast_2_e8_460_extend_skolem.smt2 new file mode 100644 index 000000000..073d738d7 --- /dev/null +++ b/bench/skolems/fast_2_e8_460_extend_skolem.smt2 @@ -0,0 +1,24 @@ +(declare-fun $V86_ccont$2 () Bool) +(declare-fun $V87_cca$2 () Bool) +(declare-fun $V84_p3$2 () Bool) +(declare-fun $V82_p1$2 () Bool) +(declare-fun $igsw$~1 () Bool) +(declare-fun %init () Bool) +(declare-fun $V85_p4$2 () Bool) +(declare-fun $V83_p2$2 () Bool) +(declare-fun $igsw$0 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (ite (ite %init + false + (and $igsw$0 (not $igsw$~1) (not $igsw$0) $igsw$~1)) + (not false) + true))) + (and (= $OK$2 (and true a!1)) + (= $V82_p1$2 true) + (= $V83_p2$2 true) + (= $V84_p3$2 true) + (= $V85_p4$2 a!1) + (= $V87_cca$2 false) + (= $V86_ccont$2 false)))) +(check-sat) diff --git a/bench/skolems/hysteresis_1_base_skolem.smt2 b/bench/skolems/hysteresis_1_base_skolem.smt2 new file mode 100644 index 000000000..437754233 --- /dev/null +++ b/bench/skolems/hysteresis_1_base_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $V20_early$2 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V19_late$2 false) (= $V20_early$2 true))) +(check-sat) diff --git a/bench/skolems/hysteresis_1_extend_skolem.smt2 b/bench/skolems/hysteresis_1_extend_skolem.smt2 new file mode 100644 index 000000000..437754233 --- /dev/null +++ b/bench/skolems/hysteresis_1_extend_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $V20_early$2 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V19_late$2 false) (= $V20_early$2 true))) +(check-sat) diff --git a/bench/skolems/hysteresis_2_base_skolem.smt2 b/bench/skolems/hysteresis_2_base_skolem.smt2 new file mode 100644 index 000000000..5aa6b3923 --- /dev/null +++ b/bench/skolems/hysteresis_2_base_skolem.smt2 @@ -0,0 +1,5 @@ +(declare-fun $V19_late$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V19_late$2 true))) +(check-sat) diff --git a/bench/skolems/hysteresis_2_extend_skolem.smt2 b/bench/skolems/hysteresis_2_extend_skolem.smt2 new file mode 100644 index 000000000..9f6554447 --- /dev/null +++ b/bench/skolems/hysteresis_2_extend_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $V19_late$2 () Bool) +(declare-fun %init () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 (ite %init true (not false))) (= $V19_late$2 false))) +(check-sat) diff --git a/bench/skolems/hysteresis_3_base_skolem.smt2 b/bench/skolems/hysteresis_3_base_skolem.smt2 new file mode 100644 index 000000000..9d2f6672d --- /dev/null +++ b/bench/skolems/hysteresis_3_base_skolem.smt2 @@ -0,0 +1,5 @@ +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V20_early$2 true))) +(check-sat) diff --git a/bench/skolems/hysteresis_3_extend_skolem.smt2 b/bench/skolems/hysteresis_3_extend_skolem.smt2 new file mode 100644 index 000000000..865fa169d --- /dev/null +++ b/bench/skolems/hysteresis_3_extend_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $V20_early$2 () Bool) +(declare-fun %init () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 (ite %init true (not false))) (= $V20_early$2 false))) +(check-sat) diff --git a/bench/skolems/hysteresis_all_base_skolem.smt2 b/bench/skolems/hysteresis_all_base_skolem.smt2 new file mode 100644 index 000000000..437754233 --- /dev/null +++ b/bench/skolems/hysteresis_all_base_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $V20_early$2 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V19_late$2 false) (= $V20_early$2 true))) +(check-sat) diff --git a/bench/skolems/hysteresis_all_extend_skolem.smt2 b/bench/skolems/hysteresis_all_extend_skolem.smt2 new file mode 100644 index 000000000..a7f1a651c --- /dev/null +++ b/bench/skolems/hysteresis_all_extend_skolem.smt2 @@ -0,0 +1,11 @@ +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun %init () Bool) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (= $OK$2 + (and (not false) + (ite %init true (not false)) + (ite %init true (not false)))))) + (and a!1 (= $V19_late$2 false) (= $V20_early$2 false)))) +(check-sat) diff --git a/bench/skolems/newexample_base1_skolem.smt2 b/bench/skolems/newexample_base1_skolem.smt2 new file mode 100644 index 000000000..b3b84eb20 --- /dev/null +++ b/bench/skolems/newexample_base1_skolem.smt2 @@ -0,0 +1,23 @@ +(declare-fun $guarantee_all$2 () Bool) +(declare-fun $guarantee5$2 () Bool) +(declare-fun $guarantee4$2 () Bool) +(declare-fun $guarantee3$2 () Bool) +(declare-fun $guarantee2$2 () Bool) +(declare-fun $bias_max$2 () Bool) +(declare-fun $state$2 () Int) +(declare-fun $guarantee1$2 () Bool) +(declare-fun $bias$2 () Int) +(declare-fun $x$0 () Int) + +(assert (ite (or (= $x$0 0) (= $x$0 1)) + (and (= $bias$2 0) + (= $bias_max$2 false) + (= $guarantee1$2 true) + (= $state$2 3) + (= $guarantee2$2 true) + (= $guarantee3$2 true) + (= $guarantee4$2 true) + (= $guarantee5$2 true) + (= $guarantee_all$2 true)) + true)) +(check-sat) diff --git a/bench/skolems/newexample_base2_skolem.smt2 b/bench/skolems/newexample_base2_skolem.smt2 new file mode 100644 index 000000000..189b0aa85 --- /dev/null +++ b/bench/skolems/newexample_base2_skolem.smt2 @@ -0,0 +1,56 @@ +(declare-fun $guarantee_all$3 () Bool) +(declare-fun $guarantee5$3 () Bool) +(declare-fun $guarantee4$3 () Bool) +(declare-fun $state$3 () Int) +(declare-fun $guarantee2$3 () Bool) +(declare-fun $state$0 () Int) +(declare-fun $bias_max$0 () Bool) +(declare-fun $guarantee3$3 () Bool) +(declare-fun $guarantee1$3 () Bool) +(declare-fun $bias_max$3 () Bool) +(declare-fun $bias$3 () Int) +(declare-fun $x$1 () Int) +(declare-fun $bias$0 () Int) + +(assert (let ((a!1 (and (= $x$1 1) + (not (<= 1 $bias$0)) + (not (<= $bias$0 (- 3))) + (not $bias_max$0) + (or (not (= $state$0 0)) (not (= $x$1 0))) + (or (= $x$1 0) (= $x$1 1)))) + (a!2 (or $bias_max$0 (>= (+ 1 $bias$0) 2) (<= (+ 1 $bias$0) (- 0 2)))) + (a!3 (or (= (+ 1 $bias$0) 0) (not (= 2 0)))) + (a!4 (or (not (and (= $state$0 0) (= $x$1 0))) (= 2 1))) + (a!7 (and (not (= $x$1 1)) + (not (<= 3 $bias$0)) + (not (<= $bias$0 (- 1))) + (not $bias_max$0) + (or (not (= $state$0 0)) (not (= $x$1 1))) + (or (= $x$1 0) (= $x$1 1)))) + (a!8 (or $bias_max$0 + (>= (+ (- 1) $bias$0) 2) + (<= (+ (- 1) $bias$0) (- 0 2)))) + (a!9 (or (= (+ (- 1) $bias$0) 0) (not (= 1 0)))) + (a!10 (or (not (and (= $state$0 0) (= $x$1 1))) (= 1 2)))) +(let ((a!5 (= $guarantee_all$3 (and true (or (not a!2) (= 2 3)) a!4 true a!3))) + (a!11 (= $guarantee_all$3 (and true (or (not a!8) (= 1 3)) true a!9 a!10)))) +(let ((a!6 (and (= $bias$3 (+ 1 $bias$0)) + (= $bias_max$3 a!2) + (= $guarantee1$3 a!3) + (= $state$3 2) + (= $guarantee2$3 true) + (= $guarantee3$3 a!4) + (= $guarantee4$3 (or (not a!2) (= 2 3))) + (= $guarantee5$3 true) + a!5)) + (a!12 (and (= $bias$3 (+ (- 1) $bias$0)) + (= $bias_max$3 a!8) + (= $guarantee1$3 a!9) + (= $state$3 1) + (= $guarantee2$3 a!10) + (= $guarantee3$3 true) + (= $guarantee4$3 (or (not a!8) (= 1 3))) + (= $guarantee5$3 true) + a!11))) + (ite a!1 a!6 (ite a!7 a!12 true)))))) +(check-sat) diff --git a/bench/skolems/newexample_base3_skolem.smt2 b/bench/skolems/newexample_base3_skolem.smt2 new file mode 100644 index 000000000..6dff6ef09 --- /dev/null +++ b/bench/skolems/newexample_base3_skolem.smt2 @@ -0,0 +1,78 @@ +(declare-fun $guarantee5$4 () Bool) +(declare-fun $bias$1 () Int) +(declare-fun $guarantee4$4 () Bool) +(declare-fun $guarantee1$4 () Bool) +(declare-fun $bias_max$4 () Bool) +(declare-fun $bias$4 () Int) +(declare-fun $state$1 () Int) +(declare-fun $x$2 () Int) +(declare-fun $guarantee2$4 () Bool) +(declare-fun $bias_max$1 () Bool) +(declare-fun $guarantee3$4 () Bool) +(declare-fun $guarantee_all$4 () Bool) +(declare-fun $state$4 () Int) + +(assert (let ((a!1 (or (and (= $x$2 1) (= $bias$1 (- 1))) + (and (not (= $x$2 1)) (= $bias$1 1)))) + (a!3 (or $bias_max$1 (>= 0 2) (<= 0 (- 0 2)))) + (a!4 (or (not (and (= $state$1 0) (= $x$2 1))) (= 0 2))) + (a!5 (or (not (and (= $state$1 0) (= $x$2 0))) (= 0 1))) + (a!8 (and (= $x$2 1) + (or (>= $bias$1 1) (<= $bias$1 (- 3)) $bias_max$1) + (or (not (= $state$1 0)) (not (= $x$2 1))) + (or (not (= $state$1 0)) (not (= $x$2 0))) + (or (= $x$2 0) (= $x$2 1)))) + (a!9 (= $bias_max$4 + (or $bias_max$1 (>= (+ 1 $bias$1) 2) (<= (+ 1 $bias$1) (- 0 2))))) + (a!10 (or (= (+ 1 $bias$1) 0) (not (= 3 0)))) + (a!11 (or (not (and (= $state$1 0) (= $x$2 1))) (= 3 2))) + (a!12 (or (not (and (= $state$1 0) (= $x$2 0))) (= 3 1))) + (a!13 (and (not (= $x$2 1)) + (or (>= $bias$1 3) (<= $bias$1 (- 1)) $bias_max$1) + (or (not (= $state$1 0)) (not (= $x$2 1))) + (or (not (= $state$1 0)) (not (= $x$2 0))) + (or (= $x$2 0) (= $x$2 1)))) + (a!14 (= $bias_max$4 + (or $bias_max$1 + (>= (+ (- 1) $bias$1) 2) + (<= (+ (- 1) $bias$1) (- 0 2))))) + (a!15 (or (not (= 3 0)) (= (+ (- 1) $bias$1) 0)))) +(let ((a!2 (and a!1 + (not $bias_max$1) + (or (not (= $state$1 0)) (not (= $x$2 1))) + (or (not (= $state$1 0)) (not (= $x$2 0))) + (or (= $x$2 0) (= $x$2 1)))) + (a!6 (= $guarantee_all$4 (and true (or (not a!3) (= 0 3)) a!5 true a!4))) + (a!16 (ite a!13 + (and (= $bias$4 (+ (- 1) $bias$1)) + a!14 + (= $guarantee1$4 a!15) + (= $state$4 3) + (= $guarantee2$4 a!11) + (= $guarantee3$4 a!12) + (= $guarantee4$4 true) + (= $guarantee5$4 true) + (= $guarantee_all$4 (and true true a!12 a!11 a!15))) + true))) +(let ((a!7 (and (= $bias$4 0) + (= $bias_max$4 a!3) + (= $guarantee1$4 true) + (= $state$4 0) + (= $guarantee2$4 a!4) + (= $guarantee3$4 a!5) + (= $guarantee4$4 (or (not a!3) (= 0 3))) + (= $guarantee5$4 true) + a!6)) + (a!17 (ite a!8 + (and (= $bias$4 (+ 1 $bias$1)) + a!9 + (= $guarantee1$4 a!10) + (= $state$4 3) + (= $guarantee2$4 a!11) + (= $guarantee3$4 a!12) + (= $guarantee4$4 true) + (= $guarantee5$4 true) + (= $guarantee_all$4 (and true true a!12 a!10 a!11))) + a!16))) + (ite a!2 a!7 a!17))))) +(check-sat) diff --git a/bench/skolems/newexample_extend_skolem.smt2 b/bench/skolems/newexample_extend_skolem.smt2 new file mode 100644 index 000000000..b48184448 --- /dev/null +++ b/bench/skolems/newexample_extend_skolem.smt2 @@ -0,0 +1,93 @@ +(declare-fun $guarantee5$3 () Bool) +(declare-fun $guarantee4$3 () Bool) +(declare-fun $guarantee3$3 () Bool) +(declare-fun $guarantee1$3 () Bool) +(declare-fun $state$0 () Int) +(declare-fun $bias_max$0 () Bool) +(declare-fun $state$3 () Int) +(declare-fun $bias$3 () Int) +(declare-fun $guarantee2$3 () Bool) +(declare-fun $bias$0 () Int) +(declare-fun $bias_max$3 () Bool) +(declare-fun $guarantee_all$3 () Bool) +(declare-fun $x$1 () Int) + +(assert (let ((a!1 (and (= $x$1 1) + (not (<= 1 $bias$0)) + (not (<= $bias$0 (- 3))) + (not $bias_max$0) + (or (not (= $state$0 0)) (not (= $x$1 0))) + (or (= $x$1 0) (= $x$1 1)))) + (a!2 (or $bias_max$0 (>= (+ 1 $bias$0) 2) (<= (+ 1 $bias$0) (- 0 2)))) + (a!3 (or (= (+ 1 $bias$0) 0) (not (= 2 0)))) + (a!4 (or (not (and (= $state$0 0) (= $x$1 0))) (= 2 1))) + (a!7 (and (= $x$1 1) + (or (>= $bias$0 1) (<= $bias$0 (- 3)) $bias_max$0) + (or (not (= $state$0 0)) (not (= $x$1 1))) + (or (not (= $state$0 0)) (not (= $x$1 0))) + (or (= $x$1 0) (= $x$1 1)))) + (a!8 (or (= (+ 1 $bias$0) 0) (not (= 3 0)))) + (a!9 (or (not (and (= $state$0 0) (= $x$1 1))) (= 3 2))) + (a!10 (or (not (and (= $state$0 0) (= $x$1 0))) (= 3 1))) + (a!11 (and (not (= $x$1 1)) + (not (<= 3 $bias$0)) + (not (<= $bias$0 (- 1))) + (not $bias_max$0) + (or (not (= $state$0 0)) (not (= $x$1 1))) + (or (= $x$1 0) (= $x$1 1)))) + (a!12 (or $bias_max$0 + (>= (+ (- 1) $bias$0) 2) + (<= (+ (- 1) $bias$0) (- 0 2)))) + (a!13 (or (= (+ (- 1) $bias$0) 0) (not (= 1 0)))) + (a!14 (or (not (and (= $state$0 0) (= $x$1 1))) (= 1 2))) + (a!17 (and (not (= $x$1 1)) + (or (>= $bias$0 3) (<= $bias$0 (- 1)) $bias_max$0) + (or (not (= $state$0 0)) (not (= $x$1 1))) + (or (not (= $state$0 0)) (not (= $x$1 0))) + (or (= $x$1 0) (= $x$1 1)))) + (a!18 (or (not (= 3 0)) (= (+ (- 1) $bias$0) 0)))) +(let ((a!5 (= $guarantee_all$3 (and true (or (not a!2) (= 2 3)) a!4 true a!3))) + (a!15 (= $guarantee_all$3 + (and true (or (not a!12) (= 1 3)) true a!13 a!14))) + (a!19 (ite a!17 + (and (= $bias$3 (+ (- 1) $bias$0)) + (= $bias_max$3 a!12) + (= $guarantee1$3 a!18) + (= $state$3 3) + (= $guarantee2$3 a!9) + (= $guarantee3$3 a!10) + (= $guarantee4$3 true) + (= $guarantee5$3 true) + (= $guarantee_all$3 (and true true a!10 a!9 a!18))) + true))) +(let ((a!6 (and (= $bias$3 (+ 1 $bias$0)) + (= $bias_max$3 a!2) + (= $guarantee1$3 a!3) + (= $state$3 2) + (= $guarantee2$3 true) + (= $guarantee3$3 a!4) + (= $guarantee4$3 (or (not a!2) (= 2 3))) + (= $guarantee5$3 true) + a!5)) + (a!16 (and (= $bias$3 (+ (- 1) $bias$0)) + (= $bias_max$3 a!12) + (= $guarantee1$3 a!13) + (= $state$3 1) + (= $guarantee2$3 a!14) + (= $guarantee3$3 true) + (= $guarantee4$3 (or (not a!12) (= 1 3))) + (= $guarantee5$3 true) + a!15))) +(let ((a!20 (ite a!7 + (and (= $bias$3 (+ 1 $bias$0)) + (= $bias_max$3 a!2) + (= $guarantee1$3 a!8) + (= $state$3 3) + (= $guarantee2$3 a!9) + (= $guarantee3$3 a!10) + (= $guarantee4$3 true) + (= $guarantee5$3 true) + (= $guarantee_all$3 (and true true a!10 a!8 a!9))) + (ite a!11 a!16 a!19)))) + (ite a!1 a!6 a!20)))))) +(check-sat) diff --git a/bench/skolems/rtp_1_base_skolem.smt2 b/bench/skolems/rtp_1_base_skolem.smt2 new file mode 100644 index 000000000..1497582d4 --- /dev/null +++ b/bench/skolems/rtp_1_base_skolem.smt2 @@ -0,0 +1,115 @@ +(declare-fun $V170_X$2 () Bool) +(declare-fun $V76_erreur$2 () Bool) +(declare-fun $V175_Sofar$2 () Bool) +(declare-fun $e12$0 () Bool) +(declare-fun $e11$0 () Bool) +(declare-fun $e04$0 () Bool) +(declare-fun $e10$0 () Bool) +(declare-fun $e09$0 () Bool) +(declare-fun $e08$0 () Bool) +(declare-fun $e03$0 () Bool) +(declare-fun $e07$0 () Bool) +(declare-fun $e05$0 () Bool) +(declare-fun $e01$0 () Bool) +(declare-fun $e06$0 () Bool) +(declare-fun $e02$0 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (and (and (and (not $e01$0) (not $e02$0)) (not $e03$0)) (not $e04$0))) + (a!4 (and (not $e12$0) + (not $e11$0) + (not $e10$0) + (not $e09$0) + (not $e08$0) + (not $e07$0) + (not $e06$0) + (not $e05$0) + (and (and (not $e01$0) (not $e02$0)) (not $e03$0)) + $e04$0))) +(let ((a!2 (and (and (and a!1 (not $e05$0)) (not $e06$0)) (not $e07$0))) + (a!5 (and (not $e12$0) + (not $e11$0) + (not $e10$0) + (not $e09$0) + (not $e08$0) + (and (and a!1 (not $e05$0)) (not $e06$0)) + $e07$0))) +(let ((a!3 (and (and (and a!2 (not $e08$0)) (not $e09$0)) (not $e10$0))) + (a!6 (and (not $e12$0) + (not $e11$0) + (and (and a!2 (not $e08$0)) (not $e09$0)) + $e10$0))) +(let ((a!7 (or (and (and a!3 (not $e11$0)) $e12$0) + (and (and a!3 (not $e11$0)) (not $e12$0)) + (and (not $e12$0) + (not $e11$0) + (not $e10$0) + (not $e09$0) + (not $e08$0) + (not $e07$0) + (not $e06$0) + (not $e05$0) + (not $e04$0) + (not $e03$0) + $e01$0 + (not $e02$0)) + (and (not $e12$0) + (not $e11$0) + (not $e10$0) + (not $e09$0) + (not $e08$0) + (not $e07$0) + (not $e06$0) + (not $e05$0) + (not $e04$0) + (not $e03$0) + (not $e01$0) + $e02$0) + (and (not $e12$0) + (not $e11$0) + (not $e10$0) + (not $e09$0) + (not $e08$0) + (not $e07$0) + (not $e06$0) + (not $e05$0) + (not $e04$0) + (and (not $e01$0) (not $e02$0)) + $e03$0) + a!4 + (and (not $e12$0) + (not $e11$0) + (not $e10$0) + (not $e09$0) + (not $e08$0) + (not $e07$0) + (not $e06$0) + a!1 + $e05$0) + (and (not $e12$0) + (not $e11$0) + (not $e10$0) + (not $e09$0) + (not $e08$0) + (not $e07$0) + (and a!1 (not $e05$0)) + $e06$0) + a!5 + (and (not $e12$0) + (not $e11$0) + (not $e10$0) + (not $e09$0) + a!2 + $e08$0) + (and (not $e12$0) + (not $e11$0) + (not $e10$0) + (and a!2 (not $e08$0)) + $e09$0) + a!6 + (and (not $e12$0) a!3 $e11$0)))) + (and (= $OK$2 (or (not a!7) (not false))) + (= $V175_Sofar$2 a!7) + (= $V76_erreur$2 false) + (= $V170_X$2 a!7))))))) +(check-sat) diff --git a/bench/skolems/rtp_1_extend_skolem.smt2 b/bench/skolems/rtp_1_extend_skolem.smt2 new file mode 100644 index 000000000..2c08a722a --- /dev/null +++ b/bench/skolems/rtp_1_extend_skolem.smt2 @@ -0,0 +1,118 @@ +(declare-fun $V170_X$2 () Bool) +(declare-fun $V175_Sofar$~1 () Bool) +(declare-fun $e11$0 () Bool) +(declare-fun $V175_Sofar$2 () Bool) +(declare-fun $e10$0 () Bool) +(declare-fun $e12$0 () Bool) +(declare-fun $e06$0 () Bool) +(declare-fun $e09$0 () Bool) +(declare-fun $e02$0 () Bool) +(declare-fun $e07$0 () Bool) +(declare-fun $e04$0 () Bool) +(declare-fun $e05$0 () Bool) +(declare-fun $e01$0 () Bool) +(declare-fun $V76_erreur$2 () Bool) +(declare-fun $e08$0 () Bool) +(declare-fun $e03$0 () Bool) +(declare-fun %init () Bool) +(declare-fun $OK$2 () Bool) + +(assert (let ((a!1 (and (and (and (not $e01$0) (not $e02$0)) (not $e03$0)) (not $e04$0))) + (a!4 (and (not $e12$0) + (not $e11$0) + (not $e10$0) + (not $e09$0) + (not $e08$0) + (not $e07$0) + (not $e06$0) + (not $e05$0) + (and (and (not $e01$0) (not $e02$0)) (not $e03$0)) + $e04$0))) +(let ((a!2 (and (and (and a!1 (not $e05$0)) (not $e06$0)) (not $e07$0))) + (a!5 (and (not $e12$0) + (not $e11$0) + (not $e10$0) + (not $e09$0) + (not $e08$0) + (and (and a!1 (not $e05$0)) (not $e06$0)) + $e07$0))) +(let ((a!3 (and (and (and a!2 (not $e08$0)) (not $e09$0)) (not $e10$0))) + (a!6 (and (not $e12$0) + (not $e11$0) + (and (and a!2 (not $e08$0)) (not $e09$0)) + $e10$0))) +(let ((a!7 (or (and (and a!3 (not $e11$0)) $e12$0) + (and (and a!3 (not $e11$0)) (not $e12$0)) + (and (not $e12$0) + (not $e11$0) + (not $e10$0) + (not $e09$0) + (not $e08$0) + (not $e07$0) + (not $e06$0) + (not $e05$0) + (not $e04$0) + (not $e03$0) + $e01$0 + (not $e02$0)) + (and (not $e12$0) + (not $e11$0) + (not $e10$0) + (not $e09$0) + (not $e08$0) + (not $e07$0) + (not $e06$0) + (not $e05$0) + (not $e04$0) + (not $e03$0) + (not $e01$0) + $e02$0) + (and (not $e12$0) + (not $e11$0) + (not $e10$0) + (not $e09$0) + (not $e08$0) + (not $e07$0) + (not $e06$0) + (not $e05$0) + (not $e04$0) + (and (not $e01$0) (not $e02$0)) + $e03$0) + a!4 + (and (not $e12$0) + (not $e11$0) + (not $e10$0) + (not $e09$0) + (not $e08$0) + (not $e07$0) + (not $e06$0) + a!1 + $e05$0) + (and (not $e12$0) + (not $e11$0) + (not $e10$0) + (not $e09$0) + (not $e08$0) + (not $e07$0) + (and a!1 (not $e05$0)) + $e06$0) + a!5 + (and (not $e12$0) + (not $e11$0) + (not $e10$0) + (not $e09$0) + a!2 + $e08$0) + (and (not $e12$0) + (not $e11$0) + (not $e10$0) + (and a!2 (not $e08$0)) + $e09$0) + a!6 + (and (not $e12$0) a!3 $e11$0)))) +(let ((a!8 (or (not (ite %init a!7 (and a!7 $V175_Sofar$~1))) (not false)))) + (and (= $OK$2 a!8) + (= $V175_Sofar$2 (ite %init a!7 (and a!7 $V175_Sofar$~1))) + (= $V76_erreur$2 false) + (= $V170_X$2 a!7)))))))) +(check-sat) diff --git a/bench/skolems/speed_e7_207_base_skolem.smt2 b/bench/skolems/speed_e7_207_base_skolem.smt2 new file mode 100644 index 000000000..437754233 --- /dev/null +++ b/bench/skolems/speed_e7_207_base_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $V20_early$2 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V19_late$2 false) (= $V20_early$2 true))) +(check-sat) diff --git a/bench/skolems/speed_e7_207_e7_538_base_skolem.smt2 b/bench/skolems/speed_e7_207_e7_538_base_skolem.smt2 new file mode 100644 index 000000000..437754233 --- /dev/null +++ b/bench/skolems/speed_e7_207_e7_538_base_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $V20_early$2 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V19_late$2 false) (= $V20_early$2 true))) +(check-sat) diff --git a/bench/skolems/speed_e7_207_e7_538_extend_skolem.smt2 b/bench/skolems/speed_e7_207_e7_538_extend_skolem.smt2 new file mode 100644 index 000000000..437754233 --- /dev/null +++ b/bench/skolems/speed_e7_207_e7_538_extend_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $V20_early$2 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V19_late$2 false) (= $V20_early$2 true))) +(check-sat) diff --git a/bench/skolems/speed_e7_207_e8_507_base1_skolem.smt2 b/bench/skolems/speed_e7_207_e8_507_base1_skolem.smt2 new file mode 100644 index 000000000..437754233 --- /dev/null +++ b/bench/skolems/speed_e7_207_e8_507_base1_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $V20_early$2 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V19_late$2 false) (= $V20_early$2 true))) +(check-sat) diff --git a/bench/skolems/speed_e7_207_e8_507_base2_skolem.smt2 b/bench/skolems/speed_e7_207_e8_507_base2_skolem.smt2 new file mode 100644 index 000000000..9c4d24ce8 --- /dev/null +++ b/bench/skolems/speed_e7_207_e8_507_base2_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $V20_early$3 () Bool) +(declare-fun $V19_late$3 () Bool) +(declare-fun $OK$3 () Bool) + +(assert (and (= $OK$3 true) (= $V19_late$3 false) (= $V20_early$3 true))) +(check-sat) diff --git a/bench/skolems/speed_e7_207_e8_507_extend_skolem.smt2 b/bench/skolems/speed_e7_207_e8_507_extend_skolem.smt2 new file mode 100644 index 000000000..437754233 --- /dev/null +++ b/bench/skolems/speed_e7_207_e8_507_extend_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $V20_early$2 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V19_late$2 false) (= $V20_early$2 true))) +(check-sat) diff --git a/bench/skolems/speed_e7_207_extend_skolem.smt2 b/bench/skolems/speed_e7_207_extend_skolem.smt2 new file mode 100644 index 000000000..437754233 --- /dev/null +++ b/bench/skolems/speed_e7_207_extend_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $V20_early$2 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V19_late$2 false) (= $V20_early$2 true))) +(check-sat) diff --git a/bench/skolems/speed_e8_136_base_skolem.smt2 b/bench/skolems/speed_e8_136_base_skolem.smt2 new file mode 100644 index 000000000..437754233 --- /dev/null +++ b/bench/skolems/speed_e8_136_base_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $V20_early$2 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V19_late$2 false) (= $V20_early$2 true))) +(check-sat) diff --git a/bench/skolems/speed_e8_136_extend_skolem.smt2 b/bench/skolems/speed_e8_136_extend_skolem.smt2 new file mode 100644 index 000000000..437754233 --- /dev/null +++ b/bench/skolems/speed_e8_136_extend_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $V20_early$2 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V19_late$2 false) (= $V20_early$2 true))) +(check-sat) diff --git a/bench/skolems/speed_e8_649_e7_709_base_skolem.smt2 b/bench/skolems/speed_e8_649_e7_709_base_skolem.smt2 new file mode 100644 index 000000000..437754233 --- /dev/null +++ b/bench/skolems/speed_e8_649_e7_709_base_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $V20_early$2 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V19_late$2 false) (= $V20_early$2 true))) +(check-sat) diff --git a/bench/skolems/speed_e8_649_e7_709_extend_skolem.smt2 b/bench/skolems/speed_e8_649_e7_709_extend_skolem.smt2 new file mode 100644 index 000000000..437754233 --- /dev/null +++ b/bench/skolems/speed_e8_649_e7_709_extend_skolem.smt2 @@ -0,0 +1,6 @@ +(declare-fun $V20_early$2 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $OK$2 () Bool) + +(assert (and (= $OK$2 true) (= $V19_late$2 false) (= $V20_early$2 true))) +(check-sat) diff --git a/bench/skolems/tramway_e7_1834_base1_skolem.smt2 b/bench/skolems/tramway_e7_1834_base1_skolem.smt2 new file mode 100644 index 000000000..585131ccc --- /dev/null +++ b/bench/skolems/tramway_e7_1834_base1_skolem.smt2 @@ -0,0 +1,76 @@ +(declare-fun $~flatten0$2 () Bool) +(declare-fun $V274_X$2 () Bool) +(declare-fun $V61_close_door$2 () Bool) +(declare-fun $V276_X$2 () Bool) +(declare-fun $V273_X$2 () Bool) +(declare-fun $V60_open_door$2 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$2 + () + Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$2 () Bool) +(declare-fun $V253_between_A_and_X$2 () Bool) +(declare-fun $V252_X$2 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$2 () Bool) +(declare-fun $V264_env_ok$2 () Bool) +(declare-fun $V271_warning_start_only_in_station$2 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$2 () Bool) +(declare-fun $V58_env_always_ok$2 () Bool) +(declare-fun $V59_prop_ok$2 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$2 + () + Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $V269_initially_not_in_station$2 () Bool) +(declare-fun $V275_X$2 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V268_door_initially_closed$2 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$2 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$2 () Bool) +(declare-fun $door_is_open$0 () Bool) + +(assert (let ((a!1 (not (and (not $door_is_open$0) + (not $in_station$0) + (or (not $warning_start$0) $in_station$0)))) + (a!2 (= (ite true false (or (not $in_station$0) (not $V275_X$~1))) + (ite true false (or (not $warning_start$0) (not $V276_X$~1))))) + (a!5 (= $V59_prop_ok$2 + (and true (or $in_station$0 (not $door_is_open$0)))))) +(let ((a!3 (and true + (not $in_station$0) + true + (not $door_is_open$0) + a!2 + (or $in_station$0 (not $warning_start$0))))) +(let ((a!4 (or (not a!3) (and true (or $in_station$0 (not $door_is_open$0)))))) +(let ((a!6 (and (= $OK$2 a!4) + (= $V58_env_always_ok$2 a!3) + a!5 + (= $V264_env_ok$2 a!3) + (= $V250_door_doesnt_open_out_of_station$2 + (or $in_station$0 (not $door_is_open$0))) + (= $V251_door_opens_before_leaving_station$2 true) + (= $V253_between_A_and_X$2 false) + (= $V252_X$2 (not $in_station$0)) + (= $V266_door_doesnt_open_if_not_asked$2 true) + (= $V265_door_doesnt_close_if_not_asked$2 true) + (= $V267_tramway_doesnt_start_if_not_door_ok$2 true) + (= $V268_door_initially_closed$2 (not $door_is_open$0)) + (= $V269_initially_not_in_station$2 (not $in_station$0)) + (= $V270_warning_start_and_in_station_go_down_simultaneously$2 + a!2) + (= $V271_warning_start_only_in_station$2 + (or $in_station$0 (not $warning_start$0))) + (= $V272_warning_start_cant_become_true_when_door_is_opening$2 + true) + (= $V60_open_door$2 true) + (= $V273_X$2 (not $door_is_open$0)) + (= $V61_close_door$2 true) + (= $V274_X$2 (not $in_station$0)) + (= $V275_X$2 (not $in_station$0)) + (= $V276_X$2 (not $warning_start$0)) + (= $~flatten0$2 false)))) + (ite (or a!1 (not $door_is_open$0) $in_station$0) a!6 true)))))) +(check-sat) diff --git a/bench/skolems/tramway_e7_1834_base2_skolem.smt2 b/bench/skolems/tramway_e7_1834_base2_skolem.smt2 new file mode 100644 index 000000000..87ac13b78 --- /dev/null +++ b/bench/skolems/tramway_e7_1834_base2_skolem.smt2 @@ -0,0 +1,109 @@ +(declare-fun $~flatten0$3 () Bool) +(declare-fun $V275_X$3 () Bool) +(declare-fun $V274_X$3 () Bool) +(declare-fun $V273_X$3 () Bool) +(declare-fun $V60_open_door$3 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$3 + () + Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$3 + () + Bool) +(declare-fun $V276_X$3 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$3 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$3 () Bool) +(declare-fun $V269_initially_not_in_station$3 () Bool) +(declare-fun $V252_X$0 () Bool) +(declare-fun $V252_X$3 () Bool) +(declare-fun $V253_between_A_and_X$3 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V268_door_initially_closed$3 () Bool) +(declare-fun $V59_prop_ok$3 () Bool) +(declare-fun $V264_env_ok$3 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$3 () Bool) +(declare-fun $V58_env_always_ok$3 () Bool) +(declare-fun $V253_between_A_and_X$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $in_station$1 () Bool) +(declare-fun $V58_env_always_ok$0 () Bool) +(declare-fun $V61_close_door$3 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$3 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $V62_door_ok$0 () Bool) +(declare-fun $V276_X$0 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $warning_start$1 () Bool) +(declare-fun $V273_X$0 () Bool) +(declare-fun $door_is_open$1 () Bool) +(declare-fun $V271_warning_start_only_in_station$3 () Bool) +(declare-fun $V275_X$0 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$3 () Bool) +(declare-fun $V274_X$0 () Bool) +(declare-fun $request_door$0 () Bool) + +(assert (let ((a!1 (or (not (or (not $in_station$1) (not $V274_X$0))) $V62_door_ok$0)) + (a!3 (and (or (and $request_door$0 (not $warning_start$0)) + (and (not $~flatten0$0) $V253_between_A_and_X$0)) + (or (not $in_station$1) (not $V252_X$0)))) + (a!5 (or false (not (or (not $door_is_open$1) (not $V273_X$0))))) + (a!6 (or $V62_door_ok$0 (not (or (not $in_station$1) (not $V274_X$0))))) + (a!7 (= (ite false false (or (not $in_station$1) (not $V275_X$0))) + (ite false false (or (not $warning_start$1) (not $V276_X$0))))) + (a!8 (or (not (or $warning_start$1 (not $warning_start$0))) (not true))) + (a!10 (ite (and (not $warning_start$0) $request_door$0) + true + (ite (ite false false $~flatten0$0) + false + $V253_between_A_and_X$0)))) +(let ((a!2 (and (not (or (not $door_is_open$1) (not $V273_X$0))) + a!1 + (= (or (not $in_station$1) (not $V275_X$0)) + (or (not $warning_start$1) (not $V276_X$0))) + (or (not $warning_start$1) $in_station$1) + (not (or $warning_start$1 (not $warning_start$0))) + $V58_env_always_ok$0)) + (a!9 (and true + true + true + a!5 + a!6 + a!7 + (or $in_station$1 (not $warning_start$1)) + a!8)) + (a!11 (and a!10 + (ite false false (or (not $in_station$1) (not $V252_X$0)))))) +(let ((a!4 (or (not a!2) + (and (or (not $door_is_open$1) $in_station$1) (not a!3)))) + (a!12 (or (not (and $V58_env_always_ok$0 a!9)) + (and (or $in_station$1 (not $door_is_open$1)) (not a!11)))) + (a!13 (= $V59_prop_ok$3 + (and (or $in_station$1 (not $door_is_open$1)) (not a!11))))) +(let ((a!14 (and (= $OK$3 a!12) + (= $V58_env_always_ok$3 (and $V58_env_always_ok$0 a!9)) + a!13 + (= $V264_env_ok$3 a!9) + (= $V250_door_doesnt_open_out_of_station$3 + (or $in_station$1 (not $door_is_open$1))) + (= $V251_door_opens_before_leaving_station$3 (not a!11)) + (= $V253_between_A_and_X$3 a!10) + (= $V252_X$3 (not $in_station$1)) + (= $V266_door_doesnt_open_if_not_asked$3 a!5) + (= $V265_door_doesnt_close_if_not_asked$3 true) + (= $V267_tramway_doesnt_start_if_not_door_ok$3 a!6) + (= $V268_door_initially_closed$3 true) + (= $V269_initially_not_in_station$3 true) + (= $V270_warning_start_and_in_station_go_down_simultaneously$3 + a!7) + (= $V271_warning_start_only_in_station$3 + (or $in_station$1 (not $warning_start$1))) + (= $V272_warning_start_cant_become_true_when_door_is_opening$3 + a!8) + (= $V60_open_door$3 true) + (= $V273_X$3 (not $door_is_open$1)) + (= $V61_close_door$3 false) + (= $V274_X$3 (not $in_station$1)) + (= $V275_X$3 (not $in_station$1)) + (= $V276_X$3 (not $warning_start$1)) + (= $~flatten0$3 $door_is_open$0)))) + (ite a!4 a!14 true)))))) +(check-sat) diff --git a/bench/skolems/tramway_e7_1834_base3_skolem.smt2 b/bench/skolems/tramway_e7_1834_base3_skolem.smt2 new file mode 100644 index 000000000..632bbf408 --- /dev/null +++ b/bench/skolems/tramway_e7_1834_base3_skolem.smt2 @@ -0,0 +1,109 @@ +(declare-fun $~flatten0$4 () Bool) +(declare-fun $V275_X$4 () Bool) +(declare-fun $V61_close_door$4 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$4 + () + Bool) +(declare-fun $door_is_open$1 () Bool) +(declare-fun $V271_warning_start_only_in_station$4 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$4 + () + Bool) +(declare-fun $V269_initially_not_in_station$4 () Bool) +(declare-fun $V268_door_initially_closed$4 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$4 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$4 () Bool) +(declare-fun $V264_env_ok$4 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$4 () Bool) +(declare-fun $V253_between_A_and_X$4 () Bool) +(declare-fun $V252_X$4 () Bool) +(declare-fun $V252_X$1 () Bool) +(declare-fun $V58_env_always_ok$1 () Bool) +(declare-fun $~flatten0$1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$4 () Bool) +(declare-fun $in_station$2 () Bool) +(declare-fun $V59_prop_ok$4 () Bool) +(declare-fun $V273_X$4 () Bool) +(declare-fun $OK$4 () Bool) +(declare-fun $V276_X$4 () Bool) +(declare-fun $V274_X$4 () Bool) +(declare-fun $V275_X$1 () Bool) +(declare-fun $V253_between_A_and_X$1 () Bool) +(declare-fun $request_door$1 () Bool) +(declare-fun $warning_start$1 () Bool) +(declare-fun $V58_env_always_ok$4 () Bool) +(declare-fun $V274_X$1 () Bool) +(declare-fun $V276_X$1 () Bool) +(declare-fun $door_is_open$2 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$4 () Bool) +(declare-fun $V60_open_door$4 () Bool) +(declare-fun $warning_start$2 () Bool) +(declare-fun $V273_X$1 () Bool) +(declare-fun $V62_door_ok$1 () Bool) + +(assert (let ((a!1 (or (not (or (not $in_station$2) (not $V274_X$1))) $V62_door_ok$1)) + (a!3 (and (or (and $request_door$1 (not $warning_start$1)) + (and (not $~flatten0$1) $V253_between_A_and_X$1)) + (or (not $in_station$2) (not $V252_X$1)))) + (a!5 (or false (not (or (not $door_is_open$2) (not $V273_X$1))))) + (a!6 (or $V62_door_ok$1 (not (or (not $in_station$2) (not $V274_X$1))))) + (a!7 (= (ite false false (or (not $in_station$2) (not $V275_X$1))) + (ite false false (or (not $warning_start$2) (not $V276_X$1))))) + (a!8 (or (not (or $warning_start$2 (not $warning_start$1))) (not true))) + (a!10 (ite (and (not $warning_start$1) $request_door$1) + true + (ite (ite false false $~flatten0$1) + false + $V253_between_A_and_X$1)))) +(let ((a!2 (and (not (or (not $door_is_open$2) (not $V273_X$1))) + a!1 + (= (or (not $in_station$2) (not $V275_X$1)) + (or (not $warning_start$2) (not $V276_X$1))) + (or (not $warning_start$2) $in_station$2) + (not (or $warning_start$2 (not $warning_start$1))) + $V58_env_always_ok$1)) + (a!9 (and true + true + true + a!5 + a!6 + a!7 + (or $in_station$2 (not $warning_start$2)) + a!8)) + (a!11 (and a!10 + (ite false false (or (not $in_station$2) (not $V252_X$1)))))) +(let ((a!4 (or (not a!2) + (and (or (not $door_is_open$2) $in_station$2) (not a!3)))) + (a!12 (or (not (and $V58_env_always_ok$1 a!9)) + (and (or $in_station$2 (not $door_is_open$2)) (not a!11)))) + (a!13 (= $V59_prop_ok$4 + (and (or $in_station$2 (not $door_is_open$2)) (not a!11))))) +(let ((a!14 (and (= $OK$4 a!12) + (= $V58_env_always_ok$4 (and $V58_env_always_ok$1 a!9)) + a!13 + (= $V264_env_ok$4 a!9) + (= $V250_door_doesnt_open_out_of_station$4 + (or $in_station$2 (not $door_is_open$2))) + (= $V251_door_opens_before_leaving_station$4 (not a!11)) + (= $V253_between_A_and_X$4 a!10) + (= $V252_X$4 (not $in_station$2)) + (= $V266_door_doesnt_open_if_not_asked$4 a!5) + (= $V265_door_doesnt_close_if_not_asked$4 true) + (= $V267_tramway_doesnt_start_if_not_door_ok$4 a!6) + (= $V268_door_initially_closed$4 true) + (= $V269_initially_not_in_station$4 true) + (= $V270_warning_start_and_in_station_go_down_simultaneously$4 + a!7) + (= $V271_warning_start_only_in_station$4 + (or $in_station$2 (not $warning_start$2))) + (= $V272_warning_start_cant_become_true_when_door_is_opening$4 + a!8) + (= $V60_open_door$4 true) + (= $V273_X$4 (not $door_is_open$2)) + (= $V61_close_door$4 false) + (= $V274_X$4 (not $in_station$2)) + (= $V275_X$4 (not $in_station$2)) + (= $V276_X$4 (not $warning_start$2)) + (= $~flatten0$4 $door_is_open$1)))) + (ite a!4 a!14 true)))))) +(check-sat) diff --git a/bench/skolems/tramway_e7_1834_base4_skolem.smt2 b/bench/skolems/tramway_e7_1834_base4_skolem.smt2 new file mode 100644 index 000000000..2870bd811 --- /dev/null +++ b/bench/skolems/tramway_e7_1834_base4_skolem.smt2 @@ -0,0 +1,109 @@ +(declare-fun $~flatten0$5 () Bool) +(declare-fun $V276_X$5 () Bool) +(declare-fun $V275_X$5 () Bool) +(declare-fun $V274_X$5 () Bool) +(declare-fun $V61_close_door$5 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$5 + () + Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$5 + () + Bool) +(declare-fun $V268_door_initially_closed$5 () Bool) +(declare-fun $V273_X$5 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$5 () Bool) +(declare-fun $V253_between_A_and_X$5 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$5 () Bool) +(declare-fun $V252_X$5 () Bool) +(declare-fun $V269_initially_not_in_station$5 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$5 () Bool) +(declare-fun $V59_prop_ok$5 () Bool) +(declare-fun $OK$5 () Bool) +(declare-fun $V253_between_A_and_X$2 () Bool) +(declare-fun $V252_X$2 () Bool) +(declare-fun $V271_warning_start_only_in_station$5 () Bool) +(declare-fun $~flatten0$2 () Bool) +(declare-fun $request_door$2 () Bool) +(declare-fun $warning_start$2 () Bool) +(declare-fun $V276_X$2 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$5 () Bool) +(declare-fun $V274_X$2 () Bool) +(declare-fun $V62_door_ok$2 () Bool) +(declare-fun $V58_env_always_ok$2 () Bool) +(declare-fun $in_station$3 () Bool) +(declare-fun $warning_start$3 () Bool) +(declare-fun $V275_X$2 () Bool) +(declare-fun $V60_open_door$5 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$5 () Bool) +(declare-fun $V273_X$2 () Bool) +(declare-fun $V264_env_ok$5 () Bool) +(declare-fun $V58_env_always_ok$5 () Bool) +(declare-fun $door_is_open$2 () Bool) +(declare-fun $door_is_open$3 () Bool) + +(assert (let ((a!1 (or (not (or (not $in_station$3) (not $V274_X$2))) $V62_door_ok$2)) + (a!3 (and (or (and $request_door$2 (not $warning_start$2)) + (and (not $~flatten0$2) $V253_between_A_and_X$2)) + (or (not $in_station$3) (not $V252_X$2)))) + (a!5 (or false (not (or (not $door_is_open$3) (not $V273_X$2))))) + (a!6 (or $V62_door_ok$2 (not (or (not $in_station$3) (not $V274_X$2))))) + (a!7 (= (ite false false (or (not $in_station$3) (not $V275_X$2))) + (ite false false (or (not $warning_start$3) (not $V276_X$2))))) + (a!8 (or (not (or $warning_start$3 (not $warning_start$2))) (not true))) + (a!10 (ite (and (not $warning_start$2) $request_door$2) + true + (ite (ite false false $~flatten0$2) + false + $V253_between_A_and_X$2)))) +(let ((a!2 (and (not (or (not $door_is_open$3) (not $V273_X$2))) + a!1 + (= (or (not $in_station$3) (not $V275_X$2)) + (or (not $warning_start$3) (not $V276_X$2))) + (or (not $warning_start$3) $in_station$3) + (not (or $warning_start$3 (not $warning_start$2))) + $V58_env_always_ok$2)) + (a!9 (and true + true + true + a!5 + a!6 + a!7 + (or $in_station$3 (not $warning_start$3)) + a!8)) + (a!11 (and a!10 + (ite false false (or (not $in_station$3) (not $V252_X$2)))))) +(let ((a!4 (or (not a!2) + (and (or (not $door_is_open$3) $in_station$3) (not a!3)))) + (a!12 (or (not (and $V58_env_always_ok$2 a!9)) + (and (or $in_station$3 (not $door_is_open$3)) (not a!11)))) + (a!13 (= $V59_prop_ok$5 + (and (or $in_station$3 (not $door_is_open$3)) (not a!11))))) +(let ((a!14 (and (= $OK$5 a!12) + (= $V58_env_always_ok$5 (and $V58_env_always_ok$2 a!9)) + a!13 + (= $V264_env_ok$5 a!9) + (= $V250_door_doesnt_open_out_of_station$5 + (or $in_station$3 (not $door_is_open$3))) + (= $V251_door_opens_before_leaving_station$5 (not a!11)) + (= $V253_between_A_and_X$5 a!10) + (= $V252_X$5 (not $in_station$3)) + (= $V266_door_doesnt_open_if_not_asked$5 a!5) + (= $V265_door_doesnt_close_if_not_asked$5 true) + (= $V267_tramway_doesnt_start_if_not_door_ok$5 a!6) + (= $V268_door_initially_closed$5 true) + (= $V269_initially_not_in_station$5 true) + (= $V270_warning_start_and_in_station_go_down_simultaneously$5 + a!7) + (= $V271_warning_start_only_in_station$5 + (or $in_station$3 (not $warning_start$3))) + (= $V272_warning_start_cant_become_true_when_door_is_opening$5 + a!8) + (= $V60_open_door$5 true) + (= $V273_X$5 (not $door_is_open$3)) + (= $V61_close_door$5 false) + (= $V274_X$5 (not $in_station$3)) + (= $V275_X$5 (not $in_station$3)) + (= $V276_X$5 (not $warning_start$3)) + (= $~flatten0$5 $door_is_open$2)))) + (ite a!4 a!14 true)))))) +(check-sat) diff --git a/bench/skolems/tramway_e7_1834_e7_2363_base1_skolem.smt2 b/bench/skolems/tramway_e7_1834_e7_2363_base1_skolem.smt2 new file mode 100644 index 000000000..5ff48d09d --- /dev/null +++ b/bench/skolems/tramway_e7_1834_e7_2363_base1_skolem.smt2 @@ -0,0 +1,79 @@ +(declare-fun $~flatten0$2 () Bool) +(declare-fun $V276_X$2 () Bool) +(declare-fun $V274_X$2 () Bool) +(declare-fun $V61_close_door$2 () Bool) +(declare-fun $V273_X$2 () Bool) +(declare-fun $V60_open_door$2 () Bool) +(declare-fun $V271_warning_start_only_in_station$2 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$2 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$2 + () + Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$2 + () + Bool) +(declare-fun $V268_door_initially_closed$2 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $V253_between_A_and_X$2 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V59_prop_ok$2 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$2 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$2 () Bool) +(declare-fun $V264_env_ok$2 () Bool) +(declare-fun $V275_X$2 () Bool) +(declare-fun $V252_X$2 () Bool) +(declare-fun $V58_env_always_ok$2 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V269_initially_not_in_station$2 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$2 () Bool) +(declare-fun $warning_start$0 () Bool) + +(assert (let ((a!1 (not (and (not $door_is_open$0) + (not $in_station$0) + (or (not $warning_start$0) $in_station$0)))) + (a!2 (= (ite true false (or (not $in_station$0) (not $V275_X$~1))) + (ite true false (or (not $warning_start$0) (not $V276_X$~1))))) + (a!4 (or false (ite true false (or (not $in_station$0) (not $V252_X$~1)))))) +(let ((a!3 (and true + (not $in_station$0) + true + (not $door_is_open$0) + a!2 + (or $in_station$0 (not $warning_start$0)))) + (a!6 (= $V59_prop_ok$2 + (and (or $in_station$0 (not $door_is_open$0)) (not a!4))))) +(let ((a!5 (or (not a!3) + (and (or $in_station$0 (not $door_is_open$0)) (not a!4))))) +(let ((a!7 (and (= $OK$2 a!5) + (= $V58_env_always_ok$2 a!3) + a!6 + (= $V264_env_ok$2 a!3) + (= $V250_door_doesnt_open_out_of_station$2 + (or $in_station$0 (not $door_is_open$0))) + (= $V251_door_opens_before_leaving_station$2 (not a!4)) + (= $V253_between_A_and_X$2 false) + (= $V252_X$2 (not $in_station$0)) + (= $V266_door_doesnt_open_if_not_asked$2 true) + (= $V265_door_doesnt_close_if_not_asked$2 true) + (= $V267_tramway_doesnt_start_if_not_door_ok$2 true) + (= $V268_door_initially_closed$2 (not $door_is_open$0)) + (= $V269_initially_not_in_station$2 (not $in_station$0)) + (= $V270_warning_start_and_in_station_go_down_simultaneously$2 + a!2) + (= $V271_warning_start_only_in_station$2 + (or $in_station$0 (not $warning_start$0))) + (= $V272_warning_start_cant_become_true_when_door_is_opening$2 + true) + (= $V60_open_door$2 true) + (= $V273_X$2 (not $door_is_open$0)) + (= $V61_close_door$2 true) + (= $V274_X$2 (not $in_station$0)) + (= $V275_X$2 (not $in_station$0)) + (= $V276_X$2 (not $warning_start$0)) + (= $~flatten0$2 false)))) + (ite (or a!1 (not $door_is_open$0) $in_station$0) a!7 true)))))) +(check-sat) diff --git a/bench/skolems/tramway_e7_1834_e7_2363_base2_skolem.smt2 b/bench/skolems/tramway_e7_1834_e7_2363_base2_skolem.smt2 new file mode 100644 index 000000000..ea4c66c07 --- /dev/null +++ b/bench/skolems/tramway_e7_1834_e7_2363_base2_skolem.smt2 @@ -0,0 +1,108 @@ +(declare-fun $~flatten0$3 () Bool) +(declare-fun $V273_X$3 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$3 + () + Bool) +(declare-fun $V271_warning_start_only_in_station$3 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$3 + () + Bool) +(declare-fun $V274_X$3 () Bool) +(declare-fun $V268_door_initially_closed$3 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$3 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$3 () Bool) +(declare-fun $V60_open_door$3 () Bool) +(declare-fun $V253_between_A_and_X$3 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$3 () Bool) +(declare-fun $V264_env_ok$3 () Bool) +(declare-fun $V252_X$0 () Bool) +(declare-fun $V58_env_always_ok$3 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$3 () Bool) +(declare-fun $V252_X$3 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $V62_door_ok$0 () Bool) +(declare-fun $V253_between_A_and_X$0 () Bool) +(declare-fun $V59_prop_ok$3 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $V276_X$0 () Bool) +(declare-fun $warning_start$1 () Bool) +(declare-fun $V61_close_door$3 () Bool) +(declare-fun $V269_initially_not_in_station$3 () Bool) +(declare-fun $V275_X$0 () Bool) +(declare-fun $V58_env_always_ok$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V276_X$3 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$3 () Bool) +(declare-fun $in_station$1 () Bool) +(declare-fun $V273_X$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $V274_X$0 () Bool) +(declare-fun $V275_X$3 () Bool) +(declare-fun $door_is_open$1 () Bool) + +(assert (let ((a!1 (or (not (or (not $in_station$1) (not $V274_X$0))) $V62_door_ok$0)) + (a!3 (not (or (and $request_door$0 (not $warning_start$0)) + (and (not $~flatten0$0) $V253_between_A_and_X$0) + (not $in_station$1) + (not $V252_X$0)))) + (a!5 (or false (not (or (not $door_is_open$1) (not $V273_X$0))))) + (a!6 (or $V62_door_ok$0 (not (or (not $in_station$1) (not $V274_X$0))))) + (a!7 (= (ite false false (or (not $in_station$1) (not $V275_X$0))) + (ite false false (or (not $warning_start$1) (not $V276_X$0))))) + (a!8 (or (not (or $warning_start$1 (not $warning_start$0))) (not true))) + (a!10 (ite (and (not $warning_start$0) $request_door$0) + true + (ite (ite false false $~flatten0$0) + false + $V253_between_A_and_X$0)))) +(let ((a!2 (and (not (or (not $door_is_open$1) (not $V273_X$0))) + a!1 + (= (or (not $in_station$1) (not $V275_X$0)) + (or (not $warning_start$1) (not $V276_X$0))) + (or (not $warning_start$1) $in_station$1) + (not (or $warning_start$1 (not $warning_start$0))) + $V58_env_always_ok$0)) + (a!9 (and true + true + true + a!5 + a!6 + a!7 + (or $in_station$1 (not $warning_start$1)) + a!8)) + (a!11 (or a!10 (ite false false (or (not $in_station$1) (not $V252_X$0)))))) +(let ((a!4 (or (not a!2) (and (or (not $door_is_open$1) $in_station$1) a!3))) + (a!12 (or (not (and $V58_env_always_ok$0 a!9)) + (and (or $in_station$1 (not $door_is_open$1)) (not a!11)))) + (a!13 (= $V59_prop_ok$3 + (and (or $in_station$1 (not $door_is_open$1)) (not a!11))))) +(let ((a!14 (and (= $OK$3 a!12) + (= $V58_env_always_ok$3 (and $V58_env_always_ok$0 a!9)) + a!13 + (= $V264_env_ok$3 a!9) + (= $V250_door_doesnt_open_out_of_station$3 + (or $in_station$1 (not $door_is_open$1))) + (= $V251_door_opens_before_leaving_station$3 (not a!11)) + (= $V253_between_A_and_X$3 a!10) + (= $V252_X$3 (not $in_station$1)) + (= $V266_door_doesnt_open_if_not_asked$3 a!5) + (= $V265_door_doesnt_close_if_not_asked$3 true) + (= $V267_tramway_doesnt_start_if_not_door_ok$3 a!6) + (= $V268_door_initially_closed$3 true) + (= $V269_initially_not_in_station$3 true) + (= $V270_warning_start_and_in_station_go_down_simultaneously$3 + a!7) + (= $V271_warning_start_only_in_station$3 + (or $in_station$1 (not $warning_start$1))) + (= $V272_warning_start_cant_become_true_when_door_is_opening$3 + a!8) + (= $V60_open_door$3 true) + (= $V273_X$3 (not $door_is_open$1)) + (= $V61_close_door$3 false) + (= $V274_X$3 (not $in_station$1)) + (= $V275_X$3 (not $in_station$1)) + (= $V276_X$3 (not $warning_start$1)) + (= $~flatten0$3 $door_is_open$0)))) + (ite a!4 a!14 true)))))) +(check-sat) diff --git a/bench/skolems/tramway_e7_1834_e7_2363_base3_skolem.smt2 b/bench/skolems/tramway_e7_1834_e7_2363_base3_skolem.smt2 new file mode 100644 index 000000000..96819db79 --- /dev/null +++ b/bench/skolems/tramway_e7_1834_e7_2363_base3_skolem.smt2 @@ -0,0 +1,108 @@ +(declare-fun $door_is_open$1 () Bool) +(declare-fun $V275_X$4 () Bool) +(declare-fun $V274_X$4 () Bool) +(declare-fun $~flatten0$4 () Bool) +(declare-fun $V273_X$4 () Bool) +(declare-fun $V60_open_door$4 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$4 + () + Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$4 + () + Bool) +(declare-fun $V269_initially_not_in_station$4 () Bool) +(declare-fun $V268_door_initially_closed$4 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$4 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$4 () Bool) +(declare-fun $V264_env_ok$4 () Bool) +(declare-fun $V276_X$4 () Bool) +(declare-fun $V59_prop_ok$4 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$4 () Bool) +(declare-fun $OK$4 () Bool) +(declare-fun $~flatten0$1 () Bool) +(declare-fun $V252_X$4 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$4 () Bool) +(declare-fun $warning_start$1 () Bool) +(declare-fun $V252_X$1 () Bool) +(declare-fun $V253_between_A_and_X$1 () Bool) +(declare-fun $V61_close_door$4 () Bool) +(declare-fun $door_is_open$2 () Bool) +(declare-fun $V62_door_ok$1 () Bool) +(declare-fun $V58_env_always_ok$1 () Bool) +(declare-fun $V274_X$1 () Bool) +(declare-fun $V275_X$1 () Bool) +(declare-fun $warning_start$2 () Bool) +(declare-fun $in_station$2 () Bool) +(declare-fun $V253_between_A_and_X$4 () Bool) +(declare-fun $V271_warning_start_only_in_station$4 () Bool) +(declare-fun $V58_env_always_ok$4 () Bool) +(declare-fun $V276_X$1 () Bool) +(declare-fun $V273_X$1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$4 () Bool) +(declare-fun $request_door$1 () Bool) + +(assert (let ((a!1 (or (not (or (not $in_station$2) (not $V274_X$1))) $V62_door_ok$1)) + (a!3 (not (or (and $request_door$1 (not $warning_start$1)) + (and (not $~flatten0$1) $V253_between_A_and_X$1) + (not $in_station$2) + (not $V252_X$1)))) + (a!5 (or false (not (or (not $door_is_open$2) (not $V273_X$1))))) + (a!6 (or $V62_door_ok$1 (not (or (not $in_station$2) (not $V274_X$1))))) + (a!7 (= (ite false false (or (not $in_station$2) (not $V275_X$1))) + (ite false false (or (not $warning_start$2) (not $V276_X$1))))) + (a!8 (or (not (or $warning_start$2 (not $warning_start$1))) (not true))) + (a!10 (ite (and (not $warning_start$1) $request_door$1) + true + (ite (ite false false $~flatten0$1) + false + $V253_between_A_and_X$1)))) +(let ((a!2 (and (not (or (not $door_is_open$2) (not $V273_X$1))) + a!1 + (= (or (not $in_station$2) (not $V275_X$1)) + (or (not $warning_start$2) (not $V276_X$1))) + (or (not $warning_start$2) $in_station$2) + (not (or $warning_start$2 (not $warning_start$1))) + $V58_env_always_ok$1)) + (a!9 (and true + true + true + a!5 + a!6 + a!7 + (or $in_station$2 (not $warning_start$2)) + a!8)) + (a!11 (or a!10 (ite false false (or (not $in_station$2) (not $V252_X$1)))))) +(let ((a!4 (or (not a!2) (and (or (not $door_is_open$2) $in_station$2) a!3))) + (a!12 (or (not (and $V58_env_always_ok$1 a!9)) + (and (or $in_station$2 (not $door_is_open$2)) (not a!11)))) + (a!13 (= $V59_prop_ok$4 + (and (or $in_station$2 (not $door_is_open$2)) (not a!11))))) +(let ((a!14 (and (= $OK$4 a!12) + (= $V58_env_always_ok$4 (and $V58_env_always_ok$1 a!9)) + a!13 + (= $V264_env_ok$4 a!9) + (= $V250_door_doesnt_open_out_of_station$4 + (or $in_station$2 (not $door_is_open$2))) + (= $V251_door_opens_before_leaving_station$4 (not a!11)) + (= $V253_between_A_and_X$4 a!10) + (= $V252_X$4 (not $in_station$2)) + (= $V266_door_doesnt_open_if_not_asked$4 a!5) + (= $V265_door_doesnt_close_if_not_asked$4 true) + (= $V267_tramway_doesnt_start_if_not_door_ok$4 a!6) + (= $V268_door_initially_closed$4 true) + (= $V269_initially_not_in_station$4 true) + (= $V270_warning_start_and_in_station_go_down_simultaneously$4 + a!7) + (= $V271_warning_start_only_in_station$4 + (or $in_station$2 (not $warning_start$2))) + (= $V272_warning_start_cant_become_true_when_door_is_opening$4 + a!8) + (= $V60_open_door$4 true) + (= $V273_X$4 (not $door_is_open$2)) + (= $V61_close_door$4 false) + (= $V274_X$4 (not $in_station$2)) + (= $V275_X$4 (not $in_station$2)) + (= $V276_X$4 (not $warning_start$2)) + (= $~flatten0$4 $door_is_open$1)))) + (ite a!4 a!14 true)))))) +(check-sat) diff --git a/bench/skolems/tramway_e7_1834_e7_2363_base4_skolem.smt2 b/bench/skolems/tramway_e7_1834_e7_2363_base4_skolem.smt2 new file mode 100644 index 000000000..167346bd0 --- /dev/null +++ b/bench/skolems/tramway_e7_1834_e7_2363_base4_skolem.smt2 @@ -0,0 +1,108 @@ +(declare-fun $~flatten0$5 () Bool) +(declare-fun $V275_X$5 () Bool) +(declare-fun $V61_close_door$5 () Bool) +(declare-fun $V268_door_initially_closed$5 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$5 () Bool) +(declare-fun $V271_warning_start_only_in_station$5 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$5 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$5 + () + Bool) +(declare-fun $V253_between_A_and_X$5 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$5 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$5 () Bool) +(declare-fun $V264_env_ok$5 () Bool) +(declare-fun $OK$5 () Bool) +(declare-fun $V269_initially_not_in_station$5 () Bool) +(declare-fun $V252_X$2 () Bool) +(declare-fun $~flatten0$2 () Bool) +(declare-fun $V276_X$2 () Bool) +(declare-fun $V273_X$2 () Bool) +(declare-fun $V252_X$5 () Bool) +(declare-fun $V60_open_door$5 () Bool) +(declare-fun $warning_start$3 () Bool) +(declare-fun $V59_prop_ok$5 () Bool) +(declare-fun $V275_X$2 () Bool) +(declare-fun $V276_X$5 () Bool) +(declare-fun $V274_X$5 () Bool) +(declare-fun $V62_door_ok$2 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$5 + () + Bool) +(declare-fun $request_door$2 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$5 () Bool) +(declare-fun $V253_between_A_and_X$2 () Bool) +(declare-fun $door_is_open$3 () Bool) +(declare-fun $in_station$3 () Bool) +(declare-fun $V274_X$2 () Bool) +(declare-fun $V58_env_always_ok$2 () Bool) +(declare-fun $door_is_open$2 () Bool) +(declare-fun $V273_X$5 () Bool) +(declare-fun $V58_env_always_ok$5 () Bool) +(declare-fun $warning_start$2 () Bool) + +(assert (let ((a!1 (or (not (or (not $in_station$3) (not $V274_X$2))) $V62_door_ok$2)) + (a!3 (not (or (and $request_door$2 (not $warning_start$2)) + (and (not $~flatten0$2) $V253_between_A_and_X$2) + (not $in_station$3) + (not $V252_X$2)))) + (a!5 (or false (not (or (not $door_is_open$3) (not $V273_X$2))))) + (a!6 (or $V62_door_ok$2 (not (or (not $in_station$3) (not $V274_X$2))))) + (a!7 (= (ite false false (or (not $in_station$3) (not $V275_X$2))) + (ite false false (or (not $warning_start$3) (not $V276_X$2))))) + (a!8 (or (not (or $warning_start$3 (not $warning_start$2))) (not true))) + (a!10 (ite (and (not $warning_start$2) $request_door$2) + true + (ite (ite false false $~flatten0$2) + false + $V253_between_A_and_X$2)))) +(let ((a!2 (and (not (or (not $door_is_open$3) (not $V273_X$2))) + a!1 + (= (or (not $in_station$3) (not $V275_X$2)) + (or (not $warning_start$3) (not $V276_X$2))) + (or (not $warning_start$3) $in_station$3) + (not (or $warning_start$3 (not $warning_start$2))) + $V58_env_always_ok$2)) + (a!9 (and true + true + true + a!5 + a!6 + a!7 + (or $in_station$3 (not $warning_start$3)) + a!8)) + (a!11 (or a!10 (ite false false (or (not $in_station$3) (not $V252_X$2)))))) +(let ((a!4 (or (not a!2) (and (or (not $door_is_open$3) $in_station$3) a!3))) + (a!12 (or (not (and $V58_env_always_ok$2 a!9)) + (and (or $in_station$3 (not $door_is_open$3)) (not a!11)))) + (a!13 (= $V59_prop_ok$5 + (and (or $in_station$3 (not $door_is_open$3)) (not a!11))))) +(let ((a!14 (and (= $OK$5 a!12) + (= $V58_env_always_ok$5 (and $V58_env_always_ok$2 a!9)) + a!13 + (= $V264_env_ok$5 a!9) + (= $V250_door_doesnt_open_out_of_station$5 + (or $in_station$3 (not $door_is_open$3))) + (= $V251_door_opens_before_leaving_station$5 (not a!11)) + (= $V253_between_A_and_X$5 a!10) + (= $V252_X$5 (not $in_station$3)) + (= $V266_door_doesnt_open_if_not_asked$5 a!5) + (= $V265_door_doesnt_close_if_not_asked$5 true) + (= $V267_tramway_doesnt_start_if_not_door_ok$5 a!6) + (= $V268_door_initially_closed$5 true) + (= $V269_initially_not_in_station$5 true) + (= $V270_warning_start_and_in_station_go_down_simultaneously$5 + a!7) + (= $V271_warning_start_only_in_station$5 + (or $in_station$3 (not $warning_start$3))) + (= $V272_warning_start_cant_become_true_when_door_is_opening$5 + a!8) + (= $V60_open_door$5 true) + (= $V273_X$5 (not $door_is_open$3)) + (= $V61_close_door$5 false) + (= $V274_X$5 (not $in_station$3)) + (= $V275_X$5 (not $in_station$3)) + (= $V276_X$5 (not $warning_start$3)) + (= $~flatten0$5 $door_is_open$2)))) + (ite a!4 a!14 true)))))) +(check-sat) diff --git a/bench/skolems/tramway_e7_1834_e7_2363_extend_skolem.smt2 b/bench/skolems/tramway_e7_1834_e7_2363_extend_skolem.smt2 new file mode 100644 index 000000000..7bb5c88f2 --- /dev/null +++ b/bench/skolems/tramway_e7_1834_e7_2363_extend_skolem.smt2 @@ -0,0 +1,215 @@ +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V276_X$2 () Bool) +(declare-fun $V275_X$2 () Bool) +(declare-fun $V274_X$2 () Bool) +(declare-fun $V61_close_door$2 () Bool) +(declare-fun $V273_X$2 () Bool) +(declare-fun $V271_warning_start_only_in_station$2 () Bool) +(declare-fun $V268_door_initially_closed$2 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$2 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$2 + () + Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$2 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$2 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$2 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$2 () Bool) +(declare-fun $V264_env_ok$2 () Bool) +(declare-fun $V58_env_always_ok$2 () Bool) +(declare-fun $V269_initially_not_in_station$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$2 + () + Bool) +(declare-fun $V253_between_A_and_X$2 () Bool) +(declare-fun $request_door$~1 () Bool) +(declare-fun $V60_open_door$2 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V252_X$2 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $~flatten0$2 () Bool) +(declare-fun $V59_prop_ok$2 () Bool) +(declare-fun %init () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $in_station$0 () Bool) + +(assert (let ((a!1 (not (and (not %init) (or (not $door_is_open$0) (not $V273_X$~1))))) + (a!2 (not (and (not %init) (or (not $in_station$0) (not $V274_X$~1))))) + (a!3 (= (and (not %init) (or (not $in_station$0) (not $V275_X$~1))) + (and (not %init) (or (not $warning_start$0) (not $V276_X$~1))))) + (a!4 (not (and (not %init) (or $warning_start$0 (not $warning_start$~1))))) + (a!7 (and (not (and (not %init) $~flatten0$~1)) + (not %init) + $V253_between_A_and_X$~1)) + (a!10 (not (ite true false (or (not $door_is_open$0) (not $V273_X$~1))))) + (a!11 (not (ite true false (or (not $in_station$0) (not $V274_X$~1))))) + (a!12 (= (ite true false (or (not $in_station$0) (not $V275_X$~1))) + (ite true false (or (not $warning_start$0) (not $V276_X$~1))))) + (a!13 (not (ite true false (or $warning_start$0 (not $warning_start$~1))))) + (a!14 (not (ite %init false (or (not $door_is_open$0) (not $V273_X$~1))))) + (a!15 (not (ite %init false (or (not $in_station$0) (not $V274_X$~1))))) + (a!16 (= (ite %init false (or (not $in_station$0) (not $V275_X$~1))) + (ite %init false (or (not $warning_start$0) (not $V276_X$~1))))) + (a!17 (not (ite %init false (or $warning_start$0 (not $warning_start$~1))))) + (a!20 (ite (ite %init + false + (and $request_door$~1 (not $warning_start$~1))) + true + (ite (ite %init false $~flatten0$~1) + false + (ite %init false $V253_between_A_and_X$~1)))) + (a!25 (not (and (not %init) (or $door_is_open$0 (not $door_is_open$~1))))) + (a!29 (not (ite true false (or $door_is_open$0 (not $door_is_open$~1))))) + (a!30 (not (ite %init false (or $door_is_open$0 (not $door_is_open$~1)))))) +(let ((a!5 (and a!1 + (or a!2 (and (not %init) $V62_door_ok$~1)) + (or (not %init) (not $door_is_open$0)) + (or (not %init) (not $in_station$0)) + a!3 + (or (not $warning_start$0) $in_station$0) + a!4)) + (a!6 (and a!1 + (or a!2 (and (not %init) $V62_door_ok$~1)) + (or (not %init) (not $door_is_open$0)) + (or (not %init) (not $in_station$0)) + a!3 + (or (not $warning_start$0) $in_station$0) + a!4 + $V58_env_always_ok$~1)) + (a!8 (or (and (not %init) $request_door$~1 (not $warning_start$~1)) + a!7 + (and (not %init) (or (not $in_station$0) (not $V252_X$~1))))) + (a!18 (and (ite %init (not $in_station$0) true) + (ite %init (not $door_is_open$0) true) + true + (or false a!14) + (or (ite %init false $V62_door_ok$~1) a!15) + a!16 + (or $in_station$0 (not $warning_start$0)) + (or a!17 (not true)))) + (a!21 (or a!20 + (ite %init false (or (not $in_station$0) (not $V252_X$~1))))) + (a!26 (and a!1 + a!25 + (or a!2 (and (not %init) $V62_door_ok$~1)) + (or (not %init) (not $door_is_open$0)) + (or (not %init) (not $in_station$0)) + a!3 + (or (not $warning_start$0) $in_station$0))) + (a!27 (and a!1 + a!25 + (or a!2 (and (not %init) $V62_door_ok$~1)) + (or (not %init) (not $door_is_open$0)) + (or (not %init) (not $in_station$0)) + a!3 + (or (not $warning_start$0) $in_station$0) + $V58_env_always_ok$~1)) + (a!31 (and (or $in_station$0 (not $warning_start$0)) + a!16 + (ite %init (not $in_station$0) true) + (ite %init (not $door_is_open$0) true) + (or (ite %init false $V62_door_ok$~1) a!15) + (or false a!14) + (or false a!30) + (or a!17 (not false))))) +(let ((a!9 (or (not (ite %init a!5 a!6)) + (and (or (not $door_is_open$0) $in_station$0) (not a!8)))) + (a!19 (ite %init + (and (ite true (not $in_station$0) true) + (ite true (not $door_is_open$0) true) + true + (or false a!10) + (or (ite true false $V62_door_ok$~1) a!11) + a!12 + (or $in_station$0 (not $warning_start$0)) + (or a!13 (not true))) + (and a!18 $V58_env_always_ok$~1))) + (a!23 (= $V59_prop_ok$2 + (and (or $in_station$0 (not $door_is_open$0)) (not a!21)))) + (a!28 (or (not (ite %init a!26 a!27)) + (and (or (not $door_is_open$0) $in_station$0) (not a!8)))) + (a!32 (ite %init + (and (or $in_station$0 (not $warning_start$0)) + a!12 + (ite true (not $in_station$0) true) + (ite true (not $door_is_open$0) true) + (or (ite true false $V62_door_ok$~1) a!11) + (or false a!10) + (or false a!29) + (or a!13 (not false))) + (and a!31 $V58_env_always_ok$~1)))) +(let ((a!22 (or (not a!19) + (and (or $in_station$0 (not $door_is_open$0)) (not a!21)))) + (a!33 (or (and (or $in_station$0 (not $door_is_open$0)) (not a!21)) + (not a!32)))) +(let ((a!24 (and (= $OK$2 a!22) + (= $V58_env_always_ok$2 a!19) + a!23 + (= $V264_env_ok$2 a!18) + (= $V250_door_doesnt_open_out_of_station$2 + (or $in_station$0 (not $door_is_open$0))) + (= $V251_door_opens_before_leaving_station$2 (not a!21)) + (= $V253_between_A_and_X$2 a!20) + (= $V252_X$2 (not $in_station$0)) + (= $V266_door_doesnt_open_if_not_asked$2 (or false a!14)) + (= $V265_door_doesnt_close_if_not_asked$2 true) + (= $V267_tramway_doesnt_start_if_not_door_ok$2 + (or (ite %init false $V62_door_ok$~1) a!15)) + (= $V268_door_initially_closed$2 + (ite %init (not $door_is_open$0) true)) + (= $V269_initially_not_in_station$2 + (ite %init (not $in_station$0) true)) + (= $V270_warning_start_and_in_station_go_down_simultaneously$2 + a!16) + (= $V271_warning_start_only_in_station$2 + (or $in_station$0 (not $warning_start$0))) + (= $V272_warning_start_cant_become_true_when_door_is_opening$2 + (or a!17 (not true))) + (= $V60_open_door$2 true) + (= $V273_X$2 (not $door_is_open$0)) + (= $V61_close_door$2 false) + (= $V274_X$2 (not $in_station$0)) + (= $V275_X$2 (not $in_station$0)) + (= $V276_X$2 (not $warning_start$0)) + (= $~flatten0$2 (ite %init false $door_is_open$~1)))) + (a!34 (and (= $OK$2 a!33) + (= $V58_env_always_ok$2 a!32) + a!23 + (= $V264_env_ok$2 a!31) + (= $V250_door_doesnt_open_out_of_station$2 + (or $in_station$0 (not $door_is_open$0))) + (= $V251_door_opens_before_leaving_station$2 (not a!21)) + (= $V253_between_A_and_X$2 a!20) + (= $V252_X$2 (not $in_station$0)) + (= $V266_door_doesnt_open_if_not_asked$2 (or false a!14)) + (= $V265_door_doesnt_close_if_not_asked$2 (or false a!30)) + (= $V267_tramway_doesnt_start_if_not_door_ok$2 + (or (ite %init false $V62_door_ok$~1) a!15)) + (= $V268_door_initially_closed$2 + (ite %init (not $door_is_open$0) true)) + (= $V269_initially_not_in_station$2 + (ite %init (not $in_station$0) true)) + (= $V270_warning_start_and_in_station_go_down_simultaneously$2 + a!16) + (= $V271_warning_start_only_in_station$2 + (or $in_station$0 (not $warning_start$0))) + (= $V272_warning_start_cant_become_true_when_door_is_opening$2 + (or a!17 (not false))) + (= $V60_open_door$2 false) + (= $V273_X$2 (not $door_is_open$0)) + (= $V61_close_door$2 false) + (= $V274_X$2 (not $in_station$0)) + (= $V275_X$2 (not $in_station$0)) + (= $V276_X$2 (not $warning_start$0)) + (= $~flatten0$2 (ite %init false $door_is_open$~1))))) + (ite a!9 a!24 (ite a!28 a!34 true)))))))) +(check-sat) diff --git a/bench/skolems/tramway_e7_1834_extend_skolem.smt2 b/bench/skolems/tramway_e7_1834_extend_skolem.smt2 new file mode 100644 index 000000000..979b5a301 --- /dev/null +++ b/bench/skolems/tramway_e7_1834_extend_skolem.smt2 @@ -0,0 +1,216 @@ +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $~flatten0$2 () Bool) +(declare-fun $V276_X$2 () Bool) +(declare-fun $V275_X$2 () Bool) +(declare-fun $V274_X$2 () Bool) +(declare-fun $V60_open_door$2 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$2 + () + Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$2 + () + Bool) +(declare-fun $V269_initially_not_in_station$2 () Bool) +(declare-fun $V268_door_initially_closed$2 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$2 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $V59_prop_ok$2 () Bool) +(declare-fun $V252_X$2 () Bool) +(declare-fun $V61_close_door$2 () Bool) +(declare-fun $V253_between_A_and_X$2 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$2 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$2 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$2 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $V264_env_ok$2 () Bool) +(declare-fun $V273_X$2 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $request_door$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$2 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V58_env_always_ok$2 () Bool) +(declare-fun $V271_warning_start_only_in_station$2 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun %init () Bool) +(declare-fun $in_station$0 () Bool) + +(assert (let ((a!1 (not (and (not %init) (or (not $door_is_open$0) (not $V273_X$~1))))) + (a!2 (not (and (not %init) (or (not $in_station$0) (not $V274_X$~1))))) + (a!3 (= (and (not %init) (or (not $in_station$0) (not $V275_X$~1))) + (and (not %init) (or (not $warning_start$0) (not $V276_X$~1))))) + (a!4 (not (and (not %init) (or $warning_start$0 (not $warning_start$~1))))) + (a!7 (and (not (and (not %init) $~flatten0$~1)) + (not %init) + $V253_between_A_and_X$~1)) + (a!10 (not (ite true false (or (not $door_is_open$0) (not $V273_X$~1))))) + (a!11 (not (ite true false (or (not $in_station$0) (not $V274_X$~1))))) + (a!12 (= (ite true false (or (not $in_station$0) (not $V275_X$~1))) + (ite true false (or (not $warning_start$0) (not $V276_X$~1))))) + (a!13 (not (ite true false (or $warning_start$0 (not $warning_start$~1))))) + (a!14 (not (ite %init false (or (not $door_is_open$0) (not $V273_X$~1))))) + (a!15 (not (ite %init false (or (not $in_station$0) (not $V274_X$~1))))) + (a!16 (= (ite %init false (or (not $in_station$0) (not $V275_X$~1))) + (ite %init false (or (not $warning_start$0) (not $V276_X$~1))))) + (a!17 (not (ite %init false (or $warning_start$0 (not $warning_start$~1))))) + (a!20 (ite (ite %init + false + (and $request_door$~1 (not $warning_start$~1))) + true + (ite (ite %init false $~flatten0$~1) + false + (ite %init false $V253_between_A_and_X$~1)))) + (a!25 (not (and (not %init) (or $door_is_open$0 (not $door_is_open$~1))))) + (a!29 (not (ite true false (or $door_is_open$0 (not $door_is_open$~1))))) + (a!30 (not (ite %init false (or $door_is_open$0 (not $door_is_open$~1)))))) +(let ((a!5 (and a!1 + (or a!2 (and (not %init) $V62_door_ok$~1)) + (or (not %init) (not $door_is_open$0)) + (or (not %init) (not $in_station$0)) + a!3 + (or (not $warning_start$0) $in_station$0) + a!4)) + (a!6 (and a!1 + (or a!2 (and (not %init) $V62_door_ok$~1)) + (or (not %init) (not $door_is_open$0)) + (or (not %init) (not $in_station$0)) + a!3 + (or (not $warning_start$0) $in_station$0) + a!4 + $V58_env_always_ok$~1)) + (a!8 (and (or (and (not %init) $request_door$~1 (not $warning_start$~1)) + a!7) + (not %init) + (or (not $in_station$0) (not $V252_X$~1)))) + (a!18 (and (ite %init (not $in_station$0) true) + (ite %init (not $door_is_open$0) true) + true + (or false a!14) + (or (ite %init false $V62_door_ok$~1) a!15) + a!16 + (or $in_station$0 (not $warning_start$0)) + (or a!17 (not true)))) + (a!21 (and a!20 + (ite %init false (or (not $in_station$0) (not $V252_X$~1))))) + (a!26 (and a!1 + a!25 + (or a!2 (and (not %init) $V62_door_ok$~1)) + (or (not %init) (not $door_is_open$0)) + (or (not %init) (not $in_station$0)) + a!3 + (or (not $warning_start$0) $in_station$0))) + (a!27 (and a!1 + a!25 + (or a!2 (and (not %init) $V62_door_ok$~1)) + (or (not %init) (not $door_is_open$0)) + (or (not %init) (not $in_station$0)) + a!3 + (or (not $warning_start$0) $in_station$0) + $V58_env_always_ok$~1)) + (a!31 (and (or $in_station$0 (not $warning_start$0)) + a!16 + (ite %init (not $in_station$0) true) + (ite %init (not $door_is_open$0) true) + (or (ite %init false $V62_door_ok$~1) a!15) + (or false a!14) + (or false a!30) + (or a!17 (not false))))) +(let ((a!9 (or (not (ite %init a!5 a!6)) + (and (or (not $door_is_open$0) $in_station$0) (not a!8)))) + (a!19 (ite %init + (and (ite true (not $in_station$0) true) + (ite true (not $door_is_open$0) true) + true + (or false a!10) + (or (ite true false $V62_door_ok$~1) a!11) + a!12 + (or $in_station$0 (not $warning_start$0)) + (or a!13 (not true))) + (and a!18 $V58_env_always_ok$~1))) + (a!23 (= $V59_prop_ok$2 + (and (or $in_station$0 (not $door_is_open$0)) (not a!21)))) + (a!28 (or (not (ite %init a!26 a!27)) + (and (or (not $door_is_open$0) $in_station$0) (not a!8)))) + (a!32 (ite %init + (and (or $in_station$0 (not $warning_start$0)) + a!12 + (ite true (not $in_station$0) true) + (ite true (not $door_is_open$0) true) + (or (ite true false $V62_door_ok$~1) a!11) + (or false a!10) + (or false a!29) + (or a!13 (not false))) + (and a!31 $V58_env_always_ok$~1)))) +(let ((a!22 (or (not a!19) + (and (or $in_station$0 (not $door_is_open$0)) (not a!21)))) + (a!33 (or (and (or $in_station$0 (not $door_is_open$0)) (not a!21)) + (not a!32)))) +(let ((a!24 (and (= $OK$2 a!22) + (= $V58_env_always_ok$2 a!19) + a!23 + (= $V264_env_ok$2 a!18) + (= $V250_door_doesnt_open_out_of_station$2 + (or $in_station$0 (not $door_is_open$0))) + (= $V251_door_opens_before_leaving_station$2 (not a!21)) + (= $V253_between_A_and_X$2 a!20) + (= $V252_X$2 (not $in_station$0)) + (= $V266_door_doesnt_open_if_not_asked$2 (or false a!14)) + (= $V265_door_doesnt_close_if_not_asked$2 true) + (= $V267_tramway_doesnt_start_if_not_door_ok$2 + (or (ite %init false $V62_door_ok$~1) a!15)) + (= $V268_door_initially_closed$2 + (ite %init (not $door_is_open$0) true)) + (= $V269_initially_not_in_station$2 + (ite %init (not $in_station$0) true)) + (= $V270_warning_start_and_in_station_go_down_simultaneously$2 + a!16) + (= $V271_warning_start_only_in_station$2 + (or $in_station$0 (not $warning_start$0))) + (= $V272_warning_start_cant_become_true_when_door_is_opening$2 + (or a!17 (not true))) + (= $V60_open_door$2 true) + (= $V273_X$2 (not $door_is_open$0)) + (= $V61_close_door$2 false) + (= $V274_X$2 (not $in_station$0)) + (= $V275_X$2 (not $in_station$0)) + (= $V276_X$2 (not $warning_start$0)) + (= $~flatten0$2 (ite %init false $door_is_open$~1)))) + (a!34 (and (= $OK$2 a!33) + (= $V58_env_always_ok$2 a!32) + a!23 + (= $V264_env_ok$2 a!31) + (= $V250_door_doesnt_open_out_of_station$2 + (or $in_station$0 (not $door_is_open$0))) + (= $V251_door_opens_before_leaving_station$2 (not a!21)) + (= $V253_between_A_and_X$2 a!20) + (= $V252_X$2 (not $in_station$0)) + (= $V266_door_doesnt_open_if_not_asked$2 (or false a!14)) + (= $V265_door_doesnt_close_if_not_asked$2 (or false a!30)) + (= $V267_tramway_doesnt_start_if_not_door_ok$2 + (or (ite %init false $V62_door_ok$~1) a!15)) + (= $V268_door_initially_closed$2 + (ite %init (not $door_is_open$0) true)) + (= $V269_initially_not_in_station$2 + (ite %init (not $in_station$0) true)) + (= $V270_warning_start_and_in_station_go_down_simultaneously$2 + a!16) + (= $V271_warning_start_only_in_station$2 + (or $in_station$0 (not $warning_start$0))) + (= $V272_warning_start_cant_become_true_when_door_is_opening$2 + (or a!17 (not false))) + (= $V60_open_door$2 false) + (= $V273_X$2 (not $door_is_open$0)) + (= $V61_close_door$2 false) + (= $V274_X$2 (not $in_station$0)) + (= $V275_X$2 (not $in_station$0)) + (= $V276_X$2 (not $warning_start$0)) + (= $~flatten0$2 (ite %init false $door_is_open$~1))))) + (ite a!9 a!24 (ite a!28 a!34 true)))))))) +(check-sat) diff --git a/bench/tasks/PRODUCER_CONSUMER_2_base_s_part.smt2 b/bench/tasks/PRODUCER_CONSUMER_2_base_s_part.smt2 new file mode 100755 index 000000000..fef2590b9 --- /dev/null +++ b/bench/tasks/PRODUCER_CONSUMER_2_base_s_part.smt2 @@ -0,0 +1,25 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($etat1$0 Bool) ($etat2$0 Bool) ($etat3$0 Bool) ($a_init$0 Int) ($V26_i$0 Int) ($OK$0 Bool) ($V31_env$0 Bool) ($V74_X$0 Bool) ($V79_Sofar$0 Bool) ($V87_First$0 Int) ($etat1$1 Bool) ($etat2$1 Bool) ($etat3$1 Bool) ($a_init$1 Int) ($V26_i$1 Int) ($OK$1 Bool) ($V31_env$1 Bool) ($V74_X$1 Bool) ($V79_Sofar$1 Bool) ($V87_First$1 Int)) Bool (and (= $OK$1 (=> $V31_env$1 (>= $V26_i$1 0))) (= $V31_env$1 (and (and $V79_Sofar$1 (ite %init (not $etat1$1) true)) (> $V87_First$1 0))) (= $V74_X$1 (not (and $etat2$1 $etat3$1))) (= $V79_Sofar$1 (ite %init $V74_X$1 (and $V74_X$1 $V79_Sofar$0))) (= $V87_First$1 (ite %init $a_init$1 $V87_First$0)))) +; Universally quantified variables +(declare-fun $etat1$~1 () Bool) +(declare-fun $etat2$~1 () Bool) +(declare-fun $etat3$~1 () Bool) +(declare-fun $a_init$~1 () Int) +(declare-fun $V26_i$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V31_env$~1 () Bool) +(declare-fun $V74_X$~1 () Bool) +(declare-fun $V79_Sofar$~1 () Bool) +(declare-fun $V87_First$~1 () Int) +(declare-fun $etat1$0 () Bool) +(declare-fun $etat2$0 () Bool) +(declare-fun $etat3$0 () Bool) +(declare-fun $a_init$0 () Int) +(declare-fun $V26_i$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V31_env$0 () Bool) +(declare-fun $V74_X$0 () Bool) +(declare-fun $V79_Sofar$0 () Bool) +(declare-fun $V87_First$0 () Int) +(assert (T true $etat1$~1 $etat2$~1 $etat3$~1 $a_init$~1 $V26_i$~1 $OK$~1 $V31_env$~1 $V74_X$~1 $V79_Sofar$~1 $V87_First$~1 $etat1$0 $etat2$0 $etat3$0 $a_init$0 $V26_i$0 $OK$0 $V31_env$0 $V74_X$0 $V79_Sofar$0 $V87_First$0)) diff --git a/bench/tasks/PRODUCER_CONSUMER_2_base_t_part.smt2 b/bench/tasks/PRODUCER_CONSUMER_2_base_t_part.smt2 new file mode 100755 index 000000000..eb9df018e --- /dev/null +++ b/bench/tasks/PRODUCER_CONSUMER_2_base_t_part.smt2 @@ -0,0 +1,25 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($etat1$0 Bool) ($etat2$0 Bool) ($etat3$0 Bool) ($a_init$0 Int) ($V26_i$0 Int) ($OK$0 Bool) ($V31_env$0 Bool) ($V74_X$0 Bool) ($V79_Sofar$0 Bool) ($V87_First$0 Int) ($etat1$1 Bool) ($etat2$1 Bool) ($etat3$1 Bool) ($a_init$1 Int) ($V26_i$1 Int) ($OK$1 Bool) ($V31_env$1 Bool) ($V74_X$1 Bool) ($V79_Sofar$1 Bool) ($V87_First$1 Int)) Bool (and (= $OK$1 (=> $V31_env$1 (>= $V26_i$1 0))) (= $V31_env$1 (and (and $V79_Sofar$1 (ite %init (not $etat1$1) true)) (> $V87_First$1 0))) (= $V74_X$1 (not (and $etat2$1 $etat3$1))) (= $V79_Sofar$1 (ite %init $V74_X$1 (and $V74_X$1 $V79_Sofar$0))) (= $V87_First$1 (ite %init $a_init$1 $V87_First$0)))) +; Universally quantified variables +(declare-fun $etat1$~1 () Bool) +(declare-fun $etat2$~1 () Bool) +(declare-fun $etat3$~1 () Bool) +(declare-fun $a_init$~1 () Int) +(declare-fun $V26_i$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V31_env$~1 () Bool) +(declare-fun $V74_X$~1 () Bool) +(declare-fun $V79_Sofar$~1 () Bool) +(declare-fun $V87_First$~1 () Int) +(declare-fun $etat1$0 () Bool) +(declare-fun $etat2$0 () Bool) +(declare-fun $etat3$0 () Bool) +(declare-fun $a_init$0 () Int) +(declare-fun $V26_i$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V31_env$2 () Bool) +(declare-fun $V74_X$2 () Bool) +(declare-fun $V79_Sofar$2 () Bool) +(declare-fun $V87_First$2 () Int) +(assert (and (T true $etat1$~1 $etat2$~1 $etat3$~1 $a_init$~1 $V26_i$~1 $OK$~1 $V31_env$~1 $V74_X$~1 $V79_Sofar$~1 $V87_First$~1 $etat1$0 $etat2$0 $etat3$0 $a_init$0 $V26_i$2 $OK$2 $V31_env$2 $V74_X$2 $V79_Sofar$2 $V87_First$2) $OK$2)) diff --git a/bench/tasks/PRODUCER_CONSUMER_2_extend_s_part.smt2 b/bench/tasks/PRODUCER_CONSUMER_2_extend_s_part.smt2 new file mode 100755 index 000000000..fd3b62fe4 --- /dev/null +++ b/bench/tasks/PRODUCER_CONSUMER_2_extend_s_part.smt2 @@ -0,0 +1,26 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($etat1$0 Bool) ($etat2$0 Bool) ($etat3$0 Bool) ($a_init$0 Int) ($V26_i$0 Int) ($OK$0 Bool) ($V31_env$0 Bool) ($V74_X$0 Bool) ($V79_Sofar$0 Bool) ($V87_First$0 Int) ($etat1$1 Bool) ($etat2$1 Bool) ($etat3$1 Bool) ($a_init$1 Int) ($V26_i$1 Int) ($OK$1 Bool) ($V31_env$1 Bool) ($V74_X$1 Bool) ($V79_Sofar$1 Bool) ($V87_First$1 Int)) Bool (and (= $OK$1 (=> $V31_env$1 (>= $V26_i$1 0))) (= $V31_env$1 (and (and $V79_Sofar$1 (ite %init (not $etat1$1) true)) (> $V87_First$1 0))) (= $V74_X$1 (not (and $etat2$1 $etat3$1))) (= $V79_Sofar$1 (ite %init $V74_X$1 (and $V74_X$1 $V79_Sofar$0))) (= $V87_First$1 (ite %init $a_init$1 $V87_First$0)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $etat1$~1 () Bool) +(declare-fun $etat2$~1 () Bool) +(declare-fun $etat3$~1 () Bool) +(declare-fun $a_init$~1 () Int) +(declare-fun $V26_i$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V31_env$~1 () Bool) +(declare-fun $V74_X$~1 () Bool) +(declare-fun $V79_Sofar$~1 () Bool) +(declare-fun $V87_First$~1 () Int) +(declare-fun $etat1$0 () Bool) +(declare-fun $etat2$0 () Bool) +(declare-fun $etat3$0 () Bool) +(declare-fun $a_init$0 () Int) +(declare-fun $V26_i$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V31_env$0 () Bool) +(declare-fun $V74_X$0 () Bool) +(declare-fun $V79_Sofar$0 () Bool) +(declare-fun $V87_First$0 () Int) +(assert (T %init $etat1$~1 $etat2$~1 $etat3$~1 $a_init$~1 $V26_i$~1 $OK$~1 $V31_env$~1 $V74_X$~1 $V79_Sofar$~1 $V87_First$~1 $etat1$0 $etat2$0 $etat3$0 $a_init$0 $V26_i$0 $OK$0 $V31_env$0 $V74_X$0 $V79_Sofar$0 $V87_First$0)) diff --git a/bench/tasks/PRODUCER_CONSUMER_2_extend_t_part.smt2 b/bench/tasks/PRODUCER_CONSUMER_2_extend_t_part.smt2 new file mode 100755 index 000000000..717231b54 --- /dev/null +++ b/bench/tasks/PRODUCER_CONSUMER_2_extend_t_part.smt2 @@ -0,0 +1,26 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($etat1$0 Bool) ($etat2$0 Bool) ($etat3$0 Bool) ($a_init$0 Int) ($V26_i$0 Int) ($OK$0 Bool) ($V31_env$0 Bool) ($V74_X$0 Bool) ($V79_Sofar$0 Bool) ($V87_First$0 Int) ($etat1$1 Bool) ($etat2$1 Bool) ($etat3$1 Bool) ($a_init$1 Int) ($V26_i$1 Int) ($OK$1 Bool) ($V31_env$1 Bool) ($V74_X$1 Bool) ($V79_Sofar$1 Bool) ($V87_First$1 Int)) Bool (and (= $OK$1 (=> $V31_env$1 (>= $V26_i$1 0))) (= $V31_env$1 (and (and $V79_Sofar$1 (ite %init (not $etat1$1) true)) (> $V87_First$1 0))) (= $V74_X$1 (not (and $etat2$1 $etat3$1))) (= $V79_Sofar$1 (ite %init $V74_X$1 (and $V74_X$1 $V79_Sofar$0))) (= $V87_First$1 (ite %init $a_init$1 $V87_First$0)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $etat1$~1 () Bool) +(declare-fun $etat2$~1 () Bool) +(declare-fun $etat3$~1 () Bool) +(declare-fun $a_init$~1 () Int) +(declare-fun $V26_i$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V31_env$~1 () Bool) +(declare-fun $V74_X$~1 () Bool) +(declare-fun $V79_Sofar$~1 () Bool) +(declare-fun $V87_First$~1 () Int) +(declare-fun $etat1$0 () Bool) +(declare-fun $etat2$0 () Bool) +(declare-fun $etat3$0 () Bool) +(declare-fun $a_init$0 () Int) +(declare-fun $V26_i$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V31_env$2 () Bool) +(declare-fun $V74_X$2 () Bool) +(declare-fun $V79_Sofar$2 () Bool) +(declare-fun $V87_First$2 () Int) +(assert (and (T %init $etat1$~1 $etat2$~1 $etat3$~1 $a_init$~1 $V26_i$~1 $OK$~1 $V31_env$~1 $V74_X$~1 $V79_Sofar$~1 $V87_First$~1 $etat1$0 $etat2$0 $etat3$0 $a_init$0 $V26_i$2 $OK$2 $V31_env$2 $V74_X$2 $V79_Sofar$2 $V87_First$2) $OK$2)) diff --git a/bench/tasks/SYNAPSE_2_e8_1118_e7_1043_base_s_part.smt2 b/bench/tasks/SYNAPSE_2_e8_1118_e7_1043_base_s_part.smt2 new file mode 100755 index 000000000..19576ab31 --- /dev/null +++ b/bench/tasks/SYNAPSE_2_e8_1118_e7_1043_base_s_part.smt2 @@ -0,0 +1,25 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($e_s1$0 Bool) ($e_s2$0 Bool) ($e_s3$0 Bool) ($init_invalid_s$0 Int) ($V27_invalid_s$0 Int) ($V28_valid_s$0 Int) ($V29_dirty_s$0 Int) ($OK$0 Bool) ($V31_env$0 Bool) ($V83_X$0 Bool) ($e_s1$1 Bool) ($e_s2$1 Bool) ($e_s3$1 Bool) ($init_invalid_s$1 Int) ($V27_invalid_s$1 Int) ($V28_valid_s$1 Int) ($V29_dirty_s$1 Int) ($OK$1 Bool) ($V31_env$1 Bool) ($V83_X$1 Bool)) Bool (and (= $OK$1 (=> $V31_env$1 (ite %init true (= (+ (+ $V27_invalid_s$1 $V28_valid_s$1) $V29_dirty_s$1) (+ (+ $V27_invalid_s$0 $V28_valid_s$0) $V29_dirty_s$0))))) (= $V31_env$1 (ite %init $V83_X$1 (or $V83_X$1 $V31_env$0))) (= $V83_X$1 (and (not (or (and (and (and $e_s1$1 $e_s2$1) $e_s1$1) $e_s3$1) (and $e_s2$1 $e_s3$1))) (>= $init_invalid_s$1 0))))) +; Universally quantified variables +(declare-fun $e_s1$~1 () Bool) +(declare-fun $e_s2$~1 () Bool) +(declare-fun $e_s3$~1 () Bool) +(declare-fun $init_invalid_s$~1 () Int) +(declare-fun $V27_invalid_s$~1 () Int) +(declare-fun $V28_valid_s$~1 () Int) +(declare-fun $V29_dirty_s$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V31_env$~1 () Bool) +(declare-fun $V83_X$~1 () Bool) +(declare-fun $e_s1$0 () Bool) +(declare-fun $e_s2$0 () Bool) +(declare-fun $e_s3$0 () Bool) +(declare-fun $init_invalid_s$0 () Int) +(declare-fun $V27_invalid_s$0 () Int) +(declare-fun $V28_valid_s$0 () Int) +(declare-fun $V29_dirty_s$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V31_env$0 () Bool) +(declare-fun $V83_X$0 () Bool) +(assert (T true $e_s1$~1 $e_s2$~1 $e_s3$~1 $init_invalid_s$~1 $V27_invalid_s$~1 $V28_valid_s$~1 $V29_dirty_s$~1 $OK$~1 $V31_env$~1 $V83_X$~1 $e_s1$0 $e_s2$0 $e_s3$0 $init_invalid_s$0 $V27_invalid_s$0 $V28_valid_s$0 $V29_dirty_s$0 $OK$0 $V31_env$0 $V83_X$0)) diff --git a/bench/tasks/SYNAPSE_2_e8_1118_e7_1043_base_t_part.smt2 b/bench/tasks/SYNAPSE_2_e8_1118_e7_1043_base_t_part.smt2 new file mode 100755 index 000000000..d4d09383e --- /dev/null +++ b/bench/tasks/SYNAPSE_2_e8_1118_e7_1043_base_t_part.smt2 @@ -0,0 +1,25 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($e_s1$0 Bool) ($e_s2$0 Bool) ($e_s3$0 Bool) ($init_invalid_s$0 Int) ($V27_invalid_s$0 Int) ($V28_valid_s$0 Int) ($V29_dirty_s$0 Int) ($OK$0 Bool) ($V31_env$0 Bool) ($V83_X$0 Bool) ($e_s1$1 Bool) ($e_s2$1 Bool) ($e_s3$1 Bool) ($init_invalid_s$1 Int) ($V27_invalid_s$1 Int) ($V28_valid_s$1 Int) ($V29_dirty_s$1 Int) ($OK$1 Bool) ($V31_env$1 Bool) ($V83_X$1 Bool)) Bool (and (= $OK$1 (=> $V31_env$1 (ite %init true (= (+ (+ $V27_invalid_s$1 $V28_valid_s$1) $V29_dirty_s$1) (+ (+ $V27_invalid_s$0 $V28_valid_s$0) $V29_dirty_s$0))))) (= $V31_env$1 (ite %init $V83_X$1 (or $V83_X$1 $V31_env$0))) (= $V83_X$1 (and (not (or (and (and (and $e_s1$1 $e_s2$1) $e_s1$1) $e_s3$1) (and $e_s2$1 $e_s3$1))) (>= $init_invalid_s$1 0))))) +; Universally quantified variables +(declare-fun $e_s1$~1 () Bool) +(declare-fun $e_s2$~1 () Bool) +(declare-fun $e_s3$~1 () Bool) +(declare-fun $init_invalid_s$~1 () Int) +(declare-fun $V27_invalid_s$~1 () Int) +(declare-fun $V28_valid_s$~1 () Int) +(declare-fun $V29_dirty_s$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V31_env$~1 () Bool) +(declare-fun $V83_X$~1 () Bool) +(declare-fun $e_s1$0 () Bool) +(declare-fun $e_s2$0 () Bool) +(declare-fun $e_s3$0 () Bool) +(declare-fun $init_invalid_s$0 () Int) +(declare-fun $V27_invalid_s$2 () Int) +(declare-fun $V28_valid_s$2 () Int) +(declare-fun $V29_dirty_s$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V31_env$2 () Bool) +(declare-fun $V83_X$2 () Bool) +(assert (and (T true $e_s1$~1 $e_s2$~1 $e_s3$~1 $init_invalid_s$~1 $V27_invalid_s$~1 $V28_valid_s$~1 $V29_dirty_s$~1 $OK$~1 $V31_env$~1 $V83_X$~1 $e_s1$0 $e_s2$0 $e_s3$0 $init_invalid_s$0 $V27_invalid_s$2 $V28_valid_s$2 $V29_dirty_s$2 $OK$2 $V31_env$2 $V83_X$2) $OK$2)) diff --git a/bench/tasks/SYNAPSE_2_e8_1118_e7_1043_extend_s_part.smt2 b/bench/tasks/SYNAPSE_2_e8_1118_e7_1043_extend_s_part.smt2 new file mode 100755 index 000000000..db5f83468 --- /dev/null +++ b/bench/tasks/SYNAPSE_2_e8_1118_e7_1043_extend_s_part.smt2 @@ -0,0 +1,26 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($e_s1$0 Bool) ($e_s2$0 Bool) ($e_s3$0 Bool) ($init_invalid_s$0 Int) ($V27_invalid_s$0 Int) ($V28_valid_s$0 Int) ($V29_dirty_s$0 Int) ($OK$0 Bool) ($V31_env$0 Bool) ($V83_X$0 Bool) ($e_s1$1 Bool) ($e_s2$1 Bool) ($e_s3$1 Bool) ($init_invalid_s$1 Int) ($V27_invalid_s$1 Int) ($V28_valid_s$1 Int) ($V29_dirty_s$1 Int) ($OK$1 Bool) ($V31_env$1 Bool) ($V83_X$1 Bool)) Bool (and (= $OK$1 (=> $V31_env$1 (ite %init true (= (+ (+ $V27_invalid_s$1 $V28_valid_s$1) $V29_dirty_s$1) (+ (+ $V27_invalid_s$0 $V28_valid_s$0) $V29_dirty_s$0))))) (= $V31_env$1 (ite %init $V83_X$1 (or $V83_X$1 $V31_env$0))) (= $V83_X$1 (and (not (or (and (and (and $e_s1$1 $e_s2$1) $e_s1$1) $e_s3$1) (and $e_s2$1 $e_s3$1))) (>= $init_invalid_s$1 0))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $e_s1$~1 () Bool) +(declare-fun $e_s2$~1 () Bool) +(declare-fun $e_s3$~1 () Bool) +(declare-fun $init_invalid_s$~1 () Int) +(declare-fun $V27_invalid_s$~1 () Int) +(declare-fun $V28_valid_s$~1 () Int) +(declare-fun $V29_dirty_s$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V31_env$~1 () Bool) +(declare-fun $V83_X$~1 () Bool) +(declare-fun $e_s1$0 () Bool) +(declare-fun $e_s2$0 () Bool) +(declare-fun $e_s3$0 () Bool) +(declare-fun $init_invalid_s$0 () Int) +(declare-fun $V27_invalid_s$0 () Int) +(declare-fun $V28_valid_s$0 () Int) +(declare-fun $V29_dirty_s$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V31_env$0 () Bool) +(declare-fun $V83_X$0 () Bool) +(assert (T %init $e_s1$~1 $e_s2$~1 $e_s3$~1 $init_invalid_s$~1 $V27_invalid_s$~1 $V28_valid_s$~1 $V29_dirty_s$~1 $OK$~1 $V31_env$~1 $V83_X$~1 $e_s1$0 $e_s2$0 $e_s3$0 $init_invalid_s$0 $V27_invalid_s$0 $V28_valid_s$0 $V29_dirty_s$0 $OK$0 $V31_env$0 $V83_X$0)) diff --git a/bench/tasks/SYNAPSE_2_e8_1118_e7_1043_extend_t_part.smt2 b/bench/tasks/SYNAPSE_2_e8_1118_e7_1043_extend_t_part.smt2 new file mode 100755 index 000000000..6f9f1215c --- /dev/null +++ b/bench/tasks/SYNAPSE_2_e8_1118_e7_1043_extend_t_part.smt2 @@ -0,0 +1,26 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($e_s1$0 Bool) ($e_s2$0 Bool) ($e_s3$0 Bool) ($init_invalid_s$0 Int) ($V27_invalid_s$0 Int) ($V28_valid_s$0 Int) ($V29_dirty_s$0 Int) ($OK$0 Bool) ($V31_env$0 Bool) ($V83_X$0 Bool) ($e_s1$1 Bool) ($e_s2$1 Bool) ($e_s3$1 Bool) ($init_invalid_s$1 Int) ($V27_invalid_s$1 Int) ($V28_valid_s$1 Int) ($V29_dirty_s$1 Int) ($OK$1 Bool) ($V31_env$1 Bool) ($V83_X$1 Bool)) Bool (and (= $OK$1 (=> $V31_env$1 (ite %init true (= (+ (+ $V27_invalid_s$1 $V28_valid_s$1) $V29_dirty_s$1) (+ (+ $V27_invalid_s$0 $V28_valid_s$0) $V29_dirty_s$0))))) (= $V31_env$1 (ite %init $V83_X$1 (or $V83_X$1 $V31_env$0))) (= $V83_X$1 (and (not (or (and (and (and $e_s1$1 $e_s2$1) $e_s1$1) $e_s3$1) (and $e_s2$1 $e_s3$1))) (>= $init_invalid_s$1 0))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $e_s1$~1 () Bool) +(declare-fun $e_s2$~1 () Bool) +(declare-fun $e_s3$~1 () Bool) +(declare-fun $init_invalid_s$~1 () Int) +(declare-fun $V27_invalid_s$~1 () Int) +(declare-fun $V28_valid_s$~1 () Int) +(declare-fun $V29_dirty_s$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V31_env$~1 () Bool) +(declare-fun $V83_X$~1 () Bool) +(declare-fun $e_s1$0 () Bool) +(declare-fun $e_s2$0 () Bool) +(declare-fun $e_s3$0 () Bool) +(declare-fun $init_invalid_s$0 () Int) +(declare-fun $V27_invalid_s$2 () Int) +(declare-fun $V28_valid_s$2 () Int) +(declare-fun $V29_dirty_s$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V31_env$2 () Bool) +(declare-fun $V83_X$2 () Bool) +(assert (and (T %init $e_s1$~1 $e_s2$~1 $e_s3$~1 $init_invalid_s$~1 $V27_invalid_s$~1 $V28_valid_s$~1 $V29_dirty_s$~1 $OK$~1 $V31_env$~1 $V83_X$~1 $e_s1$0 $e_s2$0 $e_s3$0 $init_invalid_s$0 $V27_invalid_s$2 $V28_valid_s$2 $V29_dirty_s$2 $OK$2 $V31_env$2 $V83_X$2) $OK$2)) diff --git a/bench/tasks/SYNAPSE_4_e8_420_e8_1525_base_s_part.smt2 b/bench/tasks/SYNAPSE_4_e8_420_e8_1525_base_s_part.smt2 new file mode 100755 index 000000000..b16f81fe4 --- /dev/null +++ b/bench/tasks/SYNAPSE_4_e8_420_e8_1525_base_s_part.smt2 @@ -0,0 +1,23 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($e_s1$0 Bool) ($e_s2$0 Bool) ($e_s3$0 Bool) ($init_invalid_s$0 Int) ($V28_valid_s$0 Int) ($V29_dirty_s$0 Int) ($OK$0 Bool) ($V31_env$0 Bool) ($V84_X$0 Bool) ($e_s1$1 Bool) ($e_s2$1 Bool) ($e_s3$1 Bool) ($init_invalid_s$1 Int) ($V28_valid_s$1 Int) ($V29_dirty_s$1 Int) ($OK$1 Bool) ($V31_env$1 Bool) ($V84_X$1 Bool)) Bool (and (= $OK$1 (or (=> $V31_env$1 (< $V29_dirty_s$1 1)) (< $V28_valid_s$1 1))) (= $V31_env$1 (ite %init $V84_X$1 (and $V84_X$1 $V31_env$0))) (= $V84_X$1 (and (not (and (and (and (and (and $e_s1$1 $e_s2$1) $e_s1$1) $e_s3$1) $e_s2$1) $e_s3$1)) (>= $init_invalid_s$1 0))))) +; Universally quantified variables +(declare-fun $e_s1$~1 () Bool) +(declare-fun $e_s2$~1 () Bool) +(declare-fun $e_s3$~1 () Bool) +(declare-fun $init_invalid_s$~1 () Int) +(declare-fun $V28_valid_s$~1 () Int) +(declare-fun $V29_dirty_s$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V31_env$~1 () Bool) +(declare-fun $V84_X$~1 () Bool) +(declare-fun $e_s1$0 () Bool) +(declare-fun $e_s2$0 () Bool) +(declare-fun $e_s3$0 () Bool) +(declare-fun $init_invalid_s$0 () Int) +(declare-fun $V28_valid_s$0 () Int) +(declare-fun $V29_dirty_s$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V31_env$0 () Bool) +(declare-fun $V84_X$0 () Bool) +(assert (T true $e_s1$~1 $e_s2$~1 $e_s3$~1 $init_invalid_s$~1 $V28_valid_s$~1 $V29_dirty_s$~1 $OK$~1 $V31_env$~1 $V84_X$~1 $e_s1$0 $e_s2$0 $e_s3$0 $init_invalid_s$0 $V28_valid_s$0 $V29_dirty_s$0 $OK$0 $V31_env$0 $V84_X$0)) diff --git a/bench/tasks/SYNAPSE_4_e8_420_e8_1525_base_t_part.smt2 b/bench/tasks/SYNAPSE_4_e8_420_e8_1525_base_t_part.smt2 new file mode 100755 index 000000000..03a6b004e --- /dev/null +++ b/bench/tasks/SYNAPSE_4_e8_420_e8_1525_base_t_part.smt2 @@ -0,0 +1,23 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($e_s1$0 Bool) ($e_s2$0 Bool) ($e_s3$0 Bool) ($init_invalid_s$0 Int) ($V28_valid_s$0 Int) ($V29_dirty_s$0 Int) ($OK$0 Bool) ($V31_env$0 Bool) ($V84_X$0 Bool) ($e_s1$1 Bool) ($e_s2$1 Bool) ($e_s3$1 Bool) ($init_invalid_s$1 Int) ($V28_valid_s$1 Int) ($V29_dirty_s$1 Int) ($OK$1 Bool) ($V31_env$1 Bool) ($V84_X$1 Bool)) Bool (and (= $OK$1 (or (=> $V31_env$1 (< $V29_dirty_s$1 1)) (< $V28_valid_s$1 1))) (= $V31_env$1 (ite %init $V84_X$1 (and $V84_X$1 $V31_env$0))) (= $V84_X$1 (and (not (and (and (and (and (and $e_s1$1 $e_s2$1) $e_s1$1) $e_s3$1) $e_s2$1) $e_s3$1)) (>= $init_invalid_s$1 0))))) +; Universally quantified variables +(declare-fun $e_s1$~1 () Bool) +(declare-fun $e_s2$~1 () Bool) +(declare-fun $e_s3$~1 () Bool) +(declare-fun $init_invalid_s$~1 () Int) +(declare-fun $V28_valid_s$~1 () Int) +(declare-fun $V29_dirty_s$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V31_env$~1 () Bool) +(declare-fun $V84_X$~1 () Bool) +(declare-fun $e_s1$0 () Bool) +(declare-fun $e_s2$0 () Bool) +(declare-fun $e_s3$0 () Bool) +(declare-fun $init_invalid_s$0 () Int) +(declare-fun $V28_valid_s$2 () Int) +(declare-fun $V29_dirty_s$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V31_env$2 () Bool) +(declare-fun $V84_X$2 () Bool) +(assert (and (T true $e_s1$~1 $e_s2$~1 $e_s3$~1 $init_invalid_s$~1 $V28_valid_s$~1 $V29_dirty_s$~1 $OK$~1 $V31_env$~1 $V84_X$~1 $e_s1$0 $e_s2$0 $e_s3$0 $init_invalid_s$0 $V28_valid_s$2 $V29_dirty_s$2 $OK$2 $V31_env$2 $V84_X$2) $OK$2)) diff --git a/bench/tasks/SYNAPSE_4_e8_420_e8_1525_extend_s_part.smt2 b/bench/tasks/SYNAPSE_4_e8_420_e8_1525_extend_s_part.smt2 new file mode 100755 index 000000000..f8ed5b8d0 --- /dev/null +++ b/bench/tasks/SYNAPSE_4_e8_420_e8_1525_extend_s_part.smt2 @@ -0,0 +1,24 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($e_s1$0 Bool) ($e_s2$0 Bool) ($e_s3$0 Bool) ($init_invalid_s$0 Int) ($V28_valid_s$0 Int) ($V29_dirty_s$0 Int) ($OK$0 Bool) ($V31_env$0 Bool) ($V84_X$0 Bool) ($e_s1$1 Bool) ($e_s2$1 Bool) ($e_s3$1 Bool) ($init_invalid_s$1 Int) ($V28_valid_s$1 Int) ($V29_dirty_s$1 Int) ($OK$1 Bool) ($V31_env$1 Bool) ($V84_X$1 Bool)) Bool (and (= $OK$1 (or (=> $V31_env$1 (< $V29_dirty_s$1 1)) (< $V28_valid_s$1 1))) (= $V31_env$1 (ite %init $V84_X$1 (and $V84_X$1 $V31_env$0))) (= $V84_X$1 (and (not (and (and (and (and (and $e_s1$1 $e_s2$1) $e_s1$1) $e_s3$1) $e_s2$1) $e_s3$1)) (>= $init_invalid_s$1 0))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $e_s1$~1 () Bool) +(declare-fun $e_s2$~1 () Bool) +(declare-fun $e_s3$~1 () Bool) +(declare-fun $init_invalid_s$~1 () Int) +(declare-fun $V28_valid_s$~1 () Int) +(declare-fun $V29_dirty_s$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V31_env$~1 () Bool) +(declare-fun $V84_X$~1 () Bool) +(declare-fun $e_s1$0 () Bool) +(declare-fun $e_s2$0 () Bool) +(declare-fun $e_s3$0 () Bool) +(declare-fun $init_invalid_s$0 () Int) +(declare-fun $V28_valid_s$0 () Int) +(declare-fun $V29_dirty_s$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V31_env$0 () Bool) +(declare-fun $V84_X$0 () Bool) +(assert (T %init $e_s1$~1 $e_s2$~1 $e_s3$~1 $init_invalid_s$~1 $V28_valid_s$~1 $V29_dirty_s$~1 $OK$~1 $V31_env$~1 $V84_X$~1 $e_s1$0 $e_s2$0 $e_s3$0 $init_invalid_s$0 $V28_valid_s$0 $V29_dirty_s$0 $OK$0 $V31_env$0 $V84_X$0)) diff --git a/bench/tasks/SYNAPSE_4_e8_420_e8_1525_extend_t_part.smt2 b/bench/tasks/SYNAPSE_4_e8_420_e8_1525_extend_t_part.smt2 new file mode 100755 index 000000000..8efcc409e --- /dev/null +++ b/bench/tasks/SYNAPSE_4_e8_420_e8_1525_extend_t_part.smt2 @@ -0,0 +1,24 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($e_s1$0 Bool) ($e_s2$0 Bool) ($e_s3$0 Bool) ($init_invalid_s$0 Int) ($V28_valid_s$0 Int) ($V29_dirty_s$0 Int) ($OK$0 Bool) ($V31_env$0 Bool) ($V84_X$0 Bool) ($e_s1$1 Bool) ($e_s2$1 Bool) ($e_s3$1 Bool) ($init_invalid_s$1 Int) ($V28_valid_s$1 Int) ($V29_dirty_s$1 Int) ($OK$1 Bool) ($V31_env$1 Bool) ($V84_X$1 Bool)) Bool (and (= $OK$1 (or (=> $V31_env$1 (< $V29_dirty_s$1 1)) (< $V28_valid_s$1 1))) (= $V31_env$1 (ite %init $V84_X$1 (and $V84_X$1 $V31_env$0))) (= $V84_X$1 (and (not (and (and (and (and (and $e_s1$1 $e_s2$1) $e_s1$1) $e_s3$1) $e_s2$1) $e_s3$1)) (>= $init_invalid_s$1 0))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $e_s1$~1 () Bool) +(declare-fun $e_s2$~1 () Bool) +(declare-fun $e_s3$~1 () Bool) +(declare-fun $init_invalid_s$~1 () Int) +(declare-fun $V28_valid_s$~1 () Int) +(declare-fun $V29_dirty_s$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V31_env$~1 () Bool) +(declare-fun $V84_X$~1 () Bool) +(declare-fun $e_s1$0 () Bool) +(declare-fun $e_s2$0 () Bool) +(declare-fun $e_s3$0 () Bool) +(declare-fun $init_invalid_s$0 () Int) +(declare-fun $V28_valid_s$2 () Int) +(declare-fun $V29_dirty_s$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V31_env$2 () Bool) +(declare-fun $V84_X$2 () Bool) +(assert (and (T %init $e_s1$~1 $e_s2$~1 $e_s3$~1 $init_invalid_s$~1 $V28_valid_s$~1 $V29_dirty_s$~1 $OK$~1 $V31_env$~1 $V84_X$~1 $e_s1$0 $e_s2$0 $e_s3$0 $init_invalid_s$0 $V28_valid_s$2 $V29_dirty_s$2 $OK$2 $V31_env$2 $V84_X$2) $OK$2)) diff --git a/bench/tasks/car_1_extend_s_part.smt2 b/bench/tasks/car_1_extend_s_part.smt2 new file mode 100755 index 000000000..ae5a0ac9e --- /dev/null +++ b/bench/tasks/car_1_extend_s_part.smt2 @@ -0,0 +1,20 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V91_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V91_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V27_dist$1 0))) (= $V33_env$1 (ite %init $V91_X$1 (and $V91_X$1 $V33_env$0))) (= $V91_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V91_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V91_X$0 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T %init $m$~1 $s$~1 $V27_dist$~1 $OK$~1 $V33_env$~1 $V91_X$~1 $m$0 $s$0 $V27_dist$0 $OK$0 $V33_env$0 $V91_X$0)) diff --git a/bench/tasks/car_1_extend_t_part.smt2 b/bench/tasks/car_1_extend_t_part.smt2 new file mode 100755 index 000000000..031473a4e --- /dev/null +++ b/bench/tasks/car_1_extend_t_part.smt2 @@ -0,0 +1,20 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V91_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V91_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V27_dist$1 0))) (= $V33_env$1 (ite %init $V91_X$1 (and $V91_X$1 $V33_env$0))) (= $V91_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V91_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V91_X$2 () Bool) + +; Assertion for existential part of the formula +(assert (and (T %init $m$~1 $s$~1 $V27_dist$~1 $OK$~1 $V33_env$~1 $V91_X$~1 $m$0 $s$0 $V27_dist$2 $OK$2 $V33_env$2 $V91_X$2) $OK$2)) diff --git a/bench/tasks/car_2_base1_s_part.smt2 b/bench/tasks/car_2_base1_s_part.smt2 new file mode 100755 index 000000000..ed5d328ed --- /dev/null +++ b/bench/tasks/car_2_base1_s_part.smt2 @@ -0,0 +1,19 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V91_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V91_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V27_dist$1 11))) (= $V33_env$1 (ite %init $V91_X$1 (and $V91_X$1 $V33_env$0))) (= $V91_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V91_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V91_X$0 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T true $m$~1 $s$~1 $V27_dist$~1 $OK$~1 $V33_env$~1 $V91_X$~1 $m$0 $s$0 $V27_dist$0 $OK$0 $V33_env$0 $V91_X$0)) diff --git a/bench/tasks/car_2_base1_t_part.smt2 b/bench/tasks/car_2_base1_t_part.smt2 new file mode 100755 index 000000000..1d516c8c2 --- /dev/null +++ b/bench/tasks/car_2_base1_t_part.smt2 @@ -0,0 +1,18 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V91_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V91_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V27_dist$1 11))) (= $V33_env$1 (ite %init $V91_X$1 (and $V91_X$1 $V33_env$0))) (= $V91_X$1 (not (and $m$1 $s$1))))) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V91_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V91_X$2 () Bool) + +; Assertion for existential part of the formula +(assert (and (T true $m$~1 $s$~1 $V27_dist$~1 $OK$~1 $V33_env$~1 $V91_X$~1 $m$0 $s$0 $V27_dist$2 $OK$2 $V33_env$2 $V91_X$2) $OK$2)) diff --git a/bench/tasks/car_2_base2_s_part.smt2 b/bench/tasks/car_2_base2_s_part.smt2 new file mode 100755 index 000000000..1572bbe0a --- /dev/null +++ b/bench/tasks/car_2_base2_s_part.smt2 @@ -0,0 +1,27 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V91_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V91_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V27_dist$1 11))) (= $V33_env$1 (ite %init $V91_X$1 (and $V91_X$1 $V33_env$0))) (= $V91_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V91_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V91_X$0 () Bool) +(declare-fun $m$1 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V27_dist$1 () Int) +(declare-fun $OK$1 () Bool) +(declare-fun $V33_env$1 () Bool) +(declare-fun $V91_X$1 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T true $m$~1 $s$~1 $V27_dist$~1 $OK$~1 $V33_env$~1 $V91_X$~1 $m$0 $s$0 $V27_dist$0 $OK$0 $V33_env$0 $V91_X$0)) +(assert $OK$0) +(assert (T false $m$0 $s$0 $V27_dist$0 $OK$0 $V33_env$0 $V91_X$0 $m$1 $s$1 $V27_dist$1 $OK$1 $V33_env$1 $V91_X$1)) diff --git a/bench/tasks/car_2_base2_t_part.smt2 b/bench/tasks/car_2_base2_t_part.smt2 new file mode 100755 index 000000000..5d9c3df3a --- /dev/null +++ b/bench/tasks/car_2_base2_t_part.smt2 @@ -0,0 +1,18 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V91_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V91_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V27_dist$1 11))) (= $V33_env$1 (ite %init $V91_X$1 (and $V91_X$1 $V33_env$0))) (= $V91_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V91_X$0 () Bool) +(declare-fun $m$1 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V27_dist$3 () Int) +(declare-fun $OK$3 () Bool) +(declare-fun $V33_env$3 () Bool) +(declare-fun $V91_X$3 () Bool) +; Assertion for existential part of the formula +(assert (and (T false $m$0 $s$0 $V27_dist$0 $OK$0 $V33_env$0 $V91_X$0 $m$1 $s$1 $V27_dist$3 $OK$3 $V33_env$3 $V91_X$3) $OK$3)) diff --git a/bench/tasks/car_2_extend_s_part.smt2 b/bench/tasks/car_2_extend_s_part.smt2 new file mode 100755 index 000000000..7c8df658b --- /dev/null +++ b/bench/tasks/car_2_extend_s_part.smt2 @@ -0,0 +1,20 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V91_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V91_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V27_dist$1 11))) (= $V33_env$1 (ite %init $V91_X$1 (and $V91_X$1 $V33_env$0))) (= $V91_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V91_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V91_X$0 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T %init $m$~1 $s$~1 $V27_dist$~1 $OK$~1 $V33_env$~1 $V91_X$~1 $m$0 $s$0 $V27_dist$0 $OK$0 $V33_env$0 $V91_X$0)) diff --git a/bench/tasks/car_2_extend_t_part.smt2 b/bench/tasks/car_2_extend_t_part.smt2 new file mode 100755 index 000000000..9d62d76de --- /dev/null +++ b/bench/tasks/car_2_extend_t_part.smt2 @@ -0,0 +1,19 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V91_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V91_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V27_dist$1 11))) (= $V33_env$1 (ite %init $V91_X$1 (and $V91_X$1 $V33_env$0))) (= $V91_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V91_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V91_X$2 () Bool) +; Assertion for existential part of the formula +(assert (and (T %init $m$~1 $s$~1 $V27_dist$~1 $OK$~1 $V33_env$~1 $V91_X$~1 $m$0 $s$0 $V27_dist$2 $OK$2 $V33_env$2 $V91_X$2) $OK$2)) diff --git a/bench/tasks/car_3_base1_s_part.smt2 b/bench/tasks/car_3_base1_s_part.smt2 new file mode 100755 index 000000000..2dc013ae1 --- /dev/null +++ b/bench/tasks/car_3_base1_s_part.smt2 @@ -0,0 +1,19 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_3_base1_t_part.smt2 b/bench/tasks/car_3_base1_t_part.smt2 new file mode 100755 index 000000000..e8feae0aa --- /dev/null +++ b/bench/tasks/car_3_base1_t_part.smt2 @@ -0,0 +1,17 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(assert (and (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_3_base2_s_part.smt2 b/bench/tasks/car_3_base2_s_part.smt2 new file mode 100755 index 000000000..e52559d6a --- /dev/null +++ b/bench/tasks/car_3_base2_s_part.smt2 @@ -0,0 +1,25 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +(declare-fun $m$1 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V28_speed$1 () Int) +(declare-fun $OK$1 () Bool) +(declare-fun $V33_env$1 () Bool) +(declare-fun $V90_X$1 () Bool) +(assert (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) +(assert $OK$0) +(assert (T false $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0 $m$1 $s$1 $V28_speed$1 $OK$1 $V33_env$1 $V90_X$1)) diff --git a/bench/tasks/car_3_base2_t_part.smt2 b/bench/tasks/car_3_base2_t_part.smt2 new file mode 100755 index 000000000..b20f05d52 --- /dev/null +++ b/bench/tasks/car_3_base2_t_part.smt2 @@ -0,0 +1,24 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +(declare-fun $m$1 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V28_speed$3 () Int) +(declare-fun $OK$3 () Bool) +(declare-fun $V33_env$3 () Bool) +(declare-fun $V90_X$3 () Bool) +; Assertion for existential part of the formula +(assert (and (T false $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0 $m$1 $s$1 $V28_speed$3 $OK$3 $V33_env$3 $V90_X$3) $OK$3)) diff --git a/bench/tasks/car_3_e2_695_base1_s_part.smt2 b/bench/tasks/car_3_e2_695_base1_s_part.smt2 new file mode 100755 index 000000000..edabd2a52 --- /dev/null +++ b/bench/tasks/car_3_e2_695_base1_s_part.smt2 @@ -0,0 +1,18 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +; Assertions for universal part of the formula +(assert (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_3_e2_695_base1_t_part.smt2 b/bench/tasks/car_3_e2_695_base1_t_part.smt2 new file mode 100755 index 000000000..e8feae0aa --- /dev/null +++ b/bench/tasks/car_3_e2_695_base1_t_part.smt2 @@ -0,0 +1,17 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(assert (and (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_3_e2_695_base2_s_part.smt2 b/bench/tasks/car_3_e2_695_base2_s_part.smt2 new file mode 100755 index 000000000..2f84fe627 --- /dev/null +++ b/bench/tasks/car_3_e2_695_base2_s_part.smt2 @@ -0,0 +1,27 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +(declare-fun $m$1 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V28_speed$1 () Int) +(declare-fun $OK$1 () Bool) +(declare-fun $V33_env$1 () Bool) +(declare-fun $V90_X$1 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) +(assert $OK$0) +(assert (T false $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0 $m$1 $s$1 $V28_speed$1 $OK$1 $V33_env$1 $V90_X$1)) diff --git a/bench/tasks/car_3_e2_695_base2_t_part.smt2 b/bench/tasks/car_3_e2_695_base2_t_part.smt2 new file mode 100755 index 000000000..b20f05d52 --- /dev/null +++ b/bench/tasks/car_3_e2_695_base2_t_part.smt2 @@ -0,0 +1,24 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +(declare-fun $m$1 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V28_speed$3 () Int) +(declare-fun $OK$3 () Bool) +(declare-fun $V33_env$3 () Bool) +(declare-fun $V90_X$3 () Bool) +; Assertion for existential part of the formula +(assert (and (T false $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0 $m$1 $s$1 $V28_speed$3 $OK$3 $V33_env$3 $V90_X$3) $OK$3)) diff --git a/bench/tasks/car_3_e2_695_extend_s_part.smt2 b/bench/tasks/car_3_e2_695_extend_s_part.smt2 new file mode 100755 index 000000000..34d1d9333 --- /dev/null +++ b/bench/tasks/car_3_e2_695_extend_s_part.smt2 @@ -0,0 +1,20 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_3_e2_695_extend_t_part.smt2 b/bench/tasks/car_3_e2_695_extend_t_part.smt2 new file mode 100755 index 000000000..b22eadb41 --- /dev/null +++ b/bench/tasks/car_3_e2_695_extend_t_part.smt2 @@ -0,0 +1,18 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(assert (and (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_3_e7_626_base_s_part.smt2 b/bench/tasks/car_3_e7_626_base_s_part.smt2 new file mode 100755 index 000000000..6e4211881 --- /dev/null +++ b/bench/tasks/car_3_e7_626_base_s_part.smt2 @@ -0,0 +1,17 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (or $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +(assert (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_3_e7_626_base_t_part.smt2 b/bench/tasks/car_3_e7_626_base_t_part.smt2 new file mode 100755 index 000000000..d7bf16f6a --- /dev/null +++ b/bench/tasks/car_3_e7_626_base_t_part.smt2 @@ -0,0 +1,17 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (or $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(assert (and (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_3_e7_626_extend_s_part.smt2 b/bench/tasks/car_3_e7_626_extend_s_part.smt2 new file mode 100755 index 000000000..c10090a9b --- /dev/null +++ b/bench/tasks/car_3_e7_626_extend_s_part.smt2 @@ -0,0 +1,18 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (or $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +(assert (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_3_e7_626_extend_t_part.smt2 b/bench/tasks/car_3_e7_626_extend_t_part.smt2 new file mode 100755 index 000000000..552e478d5 --- /dev/null +++ b/bench/tasks/car_3_e7_626_extend_t_part.smt2 @@ -0,0 +1,18 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (or $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(assert (and (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_3_e8_33_base_s_part.smt2 b/bench/tasks/car_3_e8_33_base_s_part.smt2 new file mode 100755 index 000000000..4e51fcd15 --- /dev/null +++ b/bench/tasks/car_3_e8_33_base_s_part.smt2 @@ -0,0 +1,17 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +(assert (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_3_e8_33_base_t_part.smt2 b/bench/tasks/car_3_e8_33_base_t_part.smt2 new file mode 100755 index 000000000..e8feae0aa --- /dev/null +++ b/bench/tasks/car_3_e8_33_base_t_part.smt2 @@ -0,0 +1,17 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(assert (and (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_3_e8_33_e2_1010_base_s_part.smt2 b/bench/tasks/car_3_e8_33_e2_1010_base_s_part.smt2 new file mode 100755 index 000000000..4e51fcd15 --- /dev/null +++ b/bench/tasks/car_3_e8_33_e2_1010_base_s_part.smt2 @@ -0,0 +1,17 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +(assert (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_3_e8_33_e2_1010_base_t_part.smt2 b/bench/tasks/car_3_e8_33_e2_1010_base_t_part.smt2 new file mode 100755 index 000000000..e8feae0aa --- /dev/null +++ b/bench/tasks/car_3_e8_33_e2_1010_base_t_part.smt2 @@ -0,0 +1,17 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(assert (and (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_3_e8_33_e2_1010_extend_s_part.smt2 b/bench/tasks/car_3_e8_33_e2_1010_extend_s_part.smt2 new file mode 100755 index 000000000..c10090a9b --- /dev/null +++ b/bench/tasks/car_3_e8_33_e2_1010_extend_s_part.smt2 @@ -0,0 +1,18 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (or $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +(assert (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_3_e8_33_e2_1010_extend_t_part.smt2 b/bench/tasks/car_3_e8_33_e2_1010_extend_t_part.smt2 new file mode 100755 index 000000000..552e478d5 --- /dev/null +++ b/bench/tasks/car_3_e8_33_e2_1010_extend_t_part.smt2 @@ -0,0 +1,18 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (or $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(assert (and (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_3_e8_33_e7_220_base_s_part.smt2 b/bench/tasks/car_3_e8_33_e7_220_base_s_part.smt2 new file mode 100755 index 000000000..3ca67d934 --- /dev/null +++ b/bench/tasks/car_3_e8_33_e7_220_base_s_part.smt2 @@ -0,0 +1,19 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (or $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_3_e8_33_e7_220_base_t_part.smt2 b/bench/tasks/car_3_e8_33_e7_220_base_t_part.smt2 new file mode 100755 index 000000000..d7bf16f6a --- /dev/null +++ b/bench/tasks/car_3_e8_33_e7_220_base_t_part.smt2 @@ -0,0 +1,17 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (or $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(assert (and (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_3_e8_33_e7_220_extend_s_part.smt2 b/bench/tasks/car_3_e8_33_e7_220_extend_s_part.smt2 new file mode 100755 index 000000000..2d14abad6 --- /dev/null +++ b/bench/tasks/car_3_e8_33_e7_220_extend_s_part.smt2 @@ -0,0 +1,20 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (or $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_3_e8_33_e7_220_extend_t_part.smt2 b/bench/tasks/car_3_e8_33_e7_220_extend_t_part.smt2 new file mode 100755 index 000000000..552e478d5 --- /dev/null +++ b/bench/tasks/car_3_e8_33_e7_220_extend_t_part.smt2 @@ -0,0 +1,18 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (or $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(assert (and (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_3_e8_33_extend_s_part.smt2 b/bench/tasks/car_3_e8_33_extend_s_part.smt2 new file mode 100755 index 000000000..f43c2137a --- /dev/null +++ b/bench/tasks/car_3_e8_33_extend_s_part.smt2 @@ -0,0 +1,18 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +(assert (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_3_e8_33_extend_t_part.smt2 b/bench/tasks/car_3_e8_33_extend_t_part.smt2 new file mode 100755 index 000000000..b22eadb41 --- /dev/null +++ b/bench/tasks/car_3_e8_33_extend_t_part.smt2 @@ -0,0 +1,18 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(assert (and (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_3_extend_s_part.smt2 b/bench/tasks/car_3_extend_s_part.smt2 new file mode 100755 index 000000000..34d1d9333 --- /dev/null +++ b/bench/tasks/car_3_extend_s_part.smt2 @@ -0,0 +1,20 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_3_extend_t_part.smt2 b/bench/tasks/car_3_extend_t_part.smt2 new file mode 100755 index 000000000..6f6b2fe3c --- /dev/null +++ b/bench/tasks/car_3_extend_t_part.smt2 @@ -0,0 +1,19 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (< $V28_speed$1 4))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +; Assertion for existential part of the formula +(assert (and (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_4_e3_57_e4_1047_base_s_part.smt2 b/bench/tasks/car_4_e3_57_e4_1047_base_s_part.smt2 new file mode 100755 index 000000000..4940ece2c --- /dev/null +++ b/bench/tasks/car_4_e3_57_e4_1047_base_s_part.smt2 @@ -0,0 +1,19 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V28_speed$1 0))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_4_e3_57_e4_1047_base_t_part.smt2 b/bench/tasks/car_4_e3_57_e4_1047_base_t_part.smt2 new file mode 100755 index 000000000..67418708a --- /dev/null +++ b/bench/tasks/car_4_e3_57_e4_1047_base_t_part.smt2 @@ -0,0 +1,17 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V28_speed$1 0))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(assert (and (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_4_e3_57_e4_1047_extend_s_part.smt2 b/bench/tasks/car_4_e3_57_e4_1047_extend_s_part.smt2 new file mode 100755 index 000000000..495a00378 --- /dev/null +++ b/bench/tasks/car_4_e3_57_e4_1047_extend_s_part.smt2 @@ -0,0 +1,18 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V28_speed$1 0))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +(assert (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_4_e3_57_e4_1047_extend_t_part.smt2 b/bench/tasks/car_4_e3_57_e4_1047_extend_t_part.smt2 new file mode 100755 index 000000000..a7fc582f5 --- /dev/null +++ b/bench/tasks/car_4_e3_57_e4_1047_extend_t_part.smt2 @@ -0,0 +1,18 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V28_speed$1 0))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(assert (and (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_4_e3_57_e6_784_base_s_part.smt2 b/bench/tasks/car_4_e3_57_e6_784_base_s_part.smt2 new file mode 100755 index 000000000..4940ece2c --- /dev/null +++ b/bench/tasks/car_4_e3_57_e6_784_base_s_part.smt2 @@ -0,0 +1,19 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V28_speed$1 0))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_4_e3_57_e6_784_base_t_part.smt2 b/bench/tasks/car_4_e3_57_e6_784_base_t_part.smt2 new file mode 100755 index 000000000..67418708a --- /dev/null +++ b/bench/tasks/car_4_e3_57_e6_784_base_t_part.smt2 @@ -0,0 +1,17 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V28_speed$1 0))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(assert (and (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_4_e3_57_e6_784_extend_s_part.smt2 b/bench/tasks/car_4_e3_57_e6_784_extend_s_part.smt2 new file mode 100755 index 000000000..641dc6023 --- /dev/null +++ b/bench/tasks/car_4_e3_57_e6_784_extend_s_part.smt2 @@ -0,0 +1,20 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V28_speed$1 0))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_4_e3_57_e6_784_extend_t_part.smt2 b/bench/tasks/car_4_e3_57_e6_784_extend_t_part.smt2 new file mode 100755 index 000000000..a7fc582f5 --- /dev/null +++ b/bench/tasks/car_4_e3_57_e6_784_extend_t_part.smt2 @@ -0,0 +1,18 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V28_speed$1 0))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(assert (and (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_4_e7_592_base1_s_part.smt2 b/bench/tasks/car_4_e7_592_base1_s_part.smt2 new file mode 100755 index 000000000..1eb95c92d --- /dev/null +++ b/bench/tasks/car_4_e7_592_base1_s_part.smt2 @@ -0,0 +1,19 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V28_speed$1 0))) (= $V33_env$1 (ite %init $V90_X$1 (or $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_4_e7_592_base1_t_part.smt2 b/bench/tasks/car_4_e7_592_base1_t_part.smt2 new file mode 100755 index 000000000..617d1d3b8 --- /dev/null +++ b/bench/tasks/car_4_e7_592_base1_t_part.smt2 @@ -0,0 +1,17 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V28_speed$1 0))) (= $V33_env$1 (ite %init $V90_X$1 (or $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(assert (and (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_4_e7_592_base2_s_part.smt2 b/bench/tasks/car_4_e7_592_base2_s_part.smt2 new file mode 100755 index 000000000..4a8c399e8 --- /dev/null +++ b/bench/tasks/car_4_e7_592_base2_s_part.smt2 @@ -0,0 +1,25 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V28_speed$1 0))) (= $V33_env$1 (ite %init $V90_X$1 (or $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +(declare-fun $m$1 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V28_speed$1 () Int) +(declare-fun $OK$1 () Bool) +(declare-fun $V33_env$1 () Bool) +(declare-fun $V90_X$1 () Bool) +(assert (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) +(assert $OK$0) +(assert (T false $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0 $m$1 $s$1 $V28_speed$1 $OK$1 $V33_env$1 $V90_X$1)) diff --git a/bench/tasks/car_4_e7_592_base2_t_part.smt2 b/bench/tasks/car_4_e7_592_base2_t_part.smt2 new file mode 100755 index 000000000..18aa875a3 --- /dev/null +++ b/bench/tasks/car_4_e7_592_base2_t_part.smt2 @@ -0,0 +1,23 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V28_speed$1 0))) (= $V33_env$1 (ite %init $V90_X$1 (or $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +(declare-fun $m$1 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V28_speed$3 () Int) +(declare-fun $OK$3 () Bool) +(declare-fun $V33_env$3 () Bool) +(declare-fun $V90_X$3 () Bool) +(assert (and (T false $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0 $m$1 $s$1 $V28_speed$3 $OK$3 $V33_env$3 $V90_X$3) $OK$3)) diff --git a/bench/tasks/car_4_e7_592_extend_s_part.smt2 b/bench/tasks/car_4_e7_592_extend_s_part.smt2 new file mode 100755 index 000000000..19abafdde --- /dev/null +++ b/bench/tasks/car_4_e7_592_extend_s_part.smt2 @@ -0,0 +1,20 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V28_speed$1 0))) (= $V33_env$1 (ite %init $V90_X$1 (or $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_4_e7_592_extend_t_part.smt2 b/bench/tasks/car_4_e7_592_extend_t_part.smt2 new file mode 100755 index 000000000..11466cc92 --- /dev/null +++ b/bench/tasks/car_4_e7_592_extend_t_part.smt2 @@ -0,0 +1,18 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V28_speed$1 0))) (= $V33_env$1 (ite %init $V90_X$1 (or $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(assert (and (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_4_e8_118_base_s_part.smt2 b/bench/tasks/car_4_e8_118_base_s_part.smt2 new file mode 100755 index 000000000..4940ece2c --- /dev/null +++ b/bench/tasks/car_4_e8_118_base_s_part.smt2 @@ -0,0 +1,19 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V28_speed$1 0))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_4_e8_118_base_t_part.smt2 b/bench/tasks/car_4_e8_118_base_t_part.smt2 new file mode 100755 index 000000000..67418708a --- /dev/null +++ b/bench/tasks/car_4_e8_118_base_t_part.smt2 @@ -0,0 +1,17 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V28_speed$1 0))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(assert (and (T true $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_4_e8_118_extend_s_part.smt2 b/bench/tasks/car_4_e8_118_extend_s_part.smt2 new file mode 100755 index 000000000..641dc6023 --- /dev/null +++ b/bench/tasks/car_4_e8_118_extend_s_part.smt2 @@ -0,0 +1,20 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V28_speed$1 0))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V90_X$0 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$0 $OK$0 $V33_env$0 $V90_X$0)) diff --git a/bench/tasks/car_4_e8_118_extend_t_part.smt2 b/bench/tasks/car_4_e8_118_extend_t_part.smt2 new file mode 100755 index 000000000..a7fc582f5 --- /dev/null +++ b/bench/tasks/car_4_e8_118_extend_t_part.smt2 @@ -0,0 +1,18 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V90_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V90_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (>= $V28_speed$1 0))) (= $V33_env$1 (ite %init $V90_X$1 (and $V90_X$1 $V33_env$0))) (= $V90_X$1 (not (and $m$1 $s$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V90_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V90_X$2 () Bool) +(assert (and (T %init $m$~1 $s$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V90_X$~1 $m$0 $s$0 $V28_speed$2 $OK$2 $V33_env$2 $V90_X$2) $OK$2)) diff --git a/bench/tasks/car_all_e2_108_base1_s_part.smt2 b/bench/tasks/car_all_e2_108_base1_s_part.smt2 new file mode 100755 index 000000000..7c7bccf53 --- /dev/null +++ b/bench/tasks/car_all_e2_108_base1_s_part.smt2 @@ -0,0 +1,19 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V92_X$0 () Bool) +(assert (T true $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0)) diff --git a/bench/tasks/car_all_e2_108_base1_t_part.smt2 b/bench/tasks/car_all_e2_108_base1_t_part.smt2 new file mode 100755 index 000000000..0b97574b5 --- /dev/null +++ b/bench/tasks/car_all_e2_108_base1_t_part.smt2 @@ -0,0 +1,19 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V92_X$2 () Bool) +(assert (and (T true $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$2 $V28_speed$2 $OK$2 $V33_env$2 $V92_X$2) $OK$2)) diff --git a/bench/tasks/car_all_e2_108_base2_s_part.smt2 b/bench/tasks/car_all_e2_108_base2_s_part.smt2 new file mode 100755 index 000000000..a81fd57d9 --- /dev/null +++ b/bench/tasks/car_all_e2_108_base2_s_part.smt2 @@ -0,0 +1,30 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V92_X$0 () Bool) +(declare-fun $m$1 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V27_dist$1 () Int) +(declare-fun $V28_speed$1 () Int) +(declare-fun $OK$1 () Bool) +(declare-fun $V33_env$1 () Bool) +(declare-fun $V92_X$1 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T true $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0)) +(assert $OK$0) +(assert (T false $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0 $m$1 $s$1 $V27_dist$1 $V28_speed$1 $OK$1 $V33_env$1 $V92_X$1)) diff --git a/bench/tasks/car_all_e2_108_base2_t_part.smt2 b/bench/tasks/car_all_e2_108_base2_t_part.smt2 new file mode 100755 index 000000000..47858ac64 --- /dev/null +++ b/bench/tasks/car_all_e2_108_base2_t_part.smt2 @@ -0,0 +1,26 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V92_X$0 () Bool) +(declare-fun $m$1 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V27_dist$3 () Int) +(declare-fun $V28_speed$3 () Int) +(declare-fun $OK$3 () Bool) +(declare-fun $V33_env$3 () Bool) +(declare-fun $V92_X$3 () Bool) +(assert (and (T false $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0 $m$1 $s$1 $V27_dist$3 $V28_speed$3 $OK$3 $V33_env$3 $V92_X$3) $OK$3)) diff --git a/bench/tasks/car_all_e2_108_extend_s_part.smt2 b/bench/tasks/car_all_e2_108_extend_s_part.smt2 new file mode 100755 index 000000000..d762fecfa --- /dev/null +++ b/bench/tasks/car_all_e2_108_extend_s_part.smt2 @@ -0,0 +1,20 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V92_X$0 () Bool) +(assert (T %init $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0)) diff --git a/bench/tasks/car_all_e2_108_extend_t_part.smt2 b/bench/tasks/car_all_e2_108_extend_t_part.smt2 new file mode 100755 index 000000000..9240b1361 --- /dev/null +++ b/bench/tasks/car_all_e2_108_extend_t_part.smt2 @@ -0,0 +1,20 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V92_X$2 () Bool) +(assert (and (T %init $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$2 $V28_speed$2 $OK$2 $V33_env$2 $V92_X$2) $OK$2)) diff --git a/bench/tasks/car_all_e2_142_e8_194_base1_s_part.smt2 b/bench/tasks/car_all_e2_142_e8_194_base1_s_part.smt2 new file mode 100755 index 000000000..7c7bccf53 --- /dev/null +++ b/bench/tasks/car_all_e2_142_e8_194_base1_s_part.smt2 @@ -0,0 +1,19 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V92_X$0 () Bool) +(assert (T true $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0)) diff --git a/bench/tasks/car_all_e2_142_e8_194_base1_t_part.smt2 b/bench/tasks/car_all_e2_142_e8_194_base1_t_part.smt2 new file mode 100755 index 000000000..0b97574b5 --- /dev/null +++ b/bench/tasks/car_all_e2_142_e8_194_base1_t_part.smt2 @@ -0,0 +1,19 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V92_X$2 () Bool) +(assert (and (T true $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$2 $V28_speed$2 $OK$2 $V33_env$2 $V92_X$2) $OK$2)) diff --git a/bench/tasks/car_all_e2_142_e8_194_base2_s_part.smt2 b/bench/tasks/car_all_e2_142_e8_194_base2_s_part.smt2 new file mode 100755 index 000000000..a81fd57d9 --- /dev/null +++ b/bench/tasks/car_all_e2_142_e8_194_base2_s_part.smt2 @@ -0,0 +1,30 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V92_X$0 () Bool) +(declare-fun $m$1 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V27_dist$1 () Int) +(declare-fun $V28_speed$1 () Int) +(declare-fun $OK$1 () Bool) +(declare-fun $V33_env$1 () Bool) +(declare-fun $V92_X$1 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T true $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0)) +(assert $OK$0) +(assert (T false $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0 $m$1 $s$1 $V27_dist$1 $V28_speed$1 $OK$1 $V33_env$1 $V92_X$1)) diff --git a/bench/tasks/car_all_e2_142_e8_194_base2_t_part.smt2 b/bench/tasks/car_all_e2_142_e8_194_base2_t_part.smt2 new file mode 100755 index 000000000..47858ac64 --- /dev/null +++ b/bench/tasks/car_all_e2_142_e8_194_base2_t_part.smt2 @@ -0,0 +1,26 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V92_X$0 () Bool) +(declare-fun $m$1 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V27_dist$3 () Int) +(declare-fun $V28_speed$3 () Int) +(declare-fun $OK$3 () Bool) +(declare-fun $V33_env$3 () Bool) +(declare-fun $V92_X$3 () Bool) +(assert (and (T false $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0 $m$1 $s$1 $V27_dist$3 $V28_speed$3 $OK$3 $V33_env$3 $V92_X$3) $OK$3)) diff --git a/bench/tasks/car_all_e2_142_e8_194_extend_s_part.smt2 b/bench/tasks/car_all_e2_142_e8_194_extend_s_part.smt2 new file mode 100755 index 000000000..d762fecfa --- /dev/null +++ b/bench/tasks/car_all_e2_142_e8_194_extend_s_part.smt2 @@ -0,0 +1,20 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V92_X$0 () Bool) +(assert (T %init $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0)) diff --git a/bench/tasks/car_all_e2_142_e8_194_extend_t_part.smt2 b/bench/tasks/car_all_e2_142_e8_194_extend_t_part.smt2 new file mode 100755 index 000000000..9240b1361 --- /dev/null +++ b/bench/tasks/car_all_e2_142_e8_194_extend_t_part.smt2 @@ -0,0 +1,20 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V92_X$2 () Bool) +(assert (and (T %init $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$2 $V28_speed$2 $OK$2 $V33_env$2 $V92_X$2) $OK$2)) diff --git a/bench/tasks/car_all_e3_1068_e4_275_base_s_part.smt2 b/bench/tasks/car_all_e3_1068_e4_275_base_s_part.smt2 new file mode 100755 index 000000000..7c7bccf53 --- /dev/null +++ b/bench/tasks/car_all_e3_1068_e4_275_base_s_part.smt2 @@ -0,0 +1,19 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V92_X$0 () Bool) +(assert (T true $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0)) diff --git a/bench/tasks/car_all_e3_1068_e4_275_base_t_part.smt2 b/bench/tasks/car_all_e3_1068_e4_275_base_t_part.smt2 new file mode 100755 index 000000000..0b97574b5 --- /dev/null +++ b/bench/tasks/car_all_e3_1068_e4_275_base_t_part.smt2 @@ -0,0 +1,19 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V92_X$2 () Bool) +(assert (and (T true $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$2 $V28_speed$2 $OK$2 $V33_env$2 $V92_X$2) $OK$2)) diff --git a/bench/tasks/car_all_e3_1068_e4_275_extend_s_part.smt2 b/bench/tasks/car_all_e3_1068_e4_275_extend_s_part.smt2 new file mode 100755 index 000000000..d762fecfa --- /dev/null +++ b/bench/tasks/car_all_e3_1068_e4_275_extend_s_part.smt2 @@ -0,0 +1,20 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V92_X$0 () Bool) +(assert (T %init $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0)) diff --git a/bench/tasks/car_all_e3_1068_e4_275_extend_t_part.smt2 b/bench/tasks/car_all_e3_1068_e4_275_extend_t_part.smt2 new file mode 100755 index 000000000..9240b1361 --- /dev/null +++ b/bench/tasks/car_all_e3_1068_e4_275_extend_t_part.smt2 @@ -0,0 +1,20 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V92_X$2 () Bool) +(assert (and (T %init $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$2 $V28_speed$2 $OK$2 $V33_env$2 $V92_X$2) $OK$2)) diff --git a/bench/tasks/car_all_e3_1068_e6_790_base1_s_part.smt2 b/bench/tasks/car_all_e3_1068_e6_790_base1_s_part.smt2 new file mode 100755 index 000000000..7c7bccf53 --- /dev/null +++ b/bench/tasks/car_all_e3_1068_e6_790_base1_s_part.smt2 @@ -0,0 +1,19 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V92_X$0 () Bool) +(assert (T true $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0)) diff --git a/bench/tasks/car_all_e3_1068_e6_790_base1_t_part.smt2 b/bench/tasks/car_all_e3_1068_e6_790_base1_t_part.smt2 new file mode 100755 index 000000000..0b97574b5 --- /dev/null +++ b/bench/tasks/car_all_e3_1068_e6_790_base1_t_part.smt2 @@ -0,0 +1,19 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V92_X$2 () Bool) +(assert (and (T true $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$2 $V28_speed$2 $OK$2 $V33_env$2 $V92_X$2) $OK$2)) diff --git a/bench/tasks/car_all_e3_1068_e6_790_base2_s_part.smt2 b/bench/tasks/car_all_e3_1068_e6_790_base2_s_part.smt2 new file mode 100755 index 000000000..a81fd57d9 --- /dev/null +++ b/bench/tasks/car_all_e3_1068_e6_790_base2_s_part.smt2 @@ -0,0 +1,30 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V92_X$0 () Bool) +(declare-fun $m$1 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V27_dist$1 () Int) +(declare-fun $V28_speed$1 () Int) +(declare-fun $OK$1 () Bool) +(declare-fun $V33_env$1 () Bool) +(declare-fun $V92_X$1 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T true $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0)) +(assert $OK$0) +(assert (T false $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0 $m$1 $s$1 $V27_dist$1 $V28_speed$1 $OK$1 $V33_env$1 $V92_X$1)) diff --git a/bench/tasks/car_all_e3_1068_e6_790_base2_t_part.smt2 b/bench/tasks/car_all_e3_1068_e6_790_base2_t_part.smt2 new file mode 100755 index 000000000..47858ac64 --- /dev/null +++ b/bench/tasks/car_all_e3_1068_e6_790_base2_t_part.smt2 @@ -0,0 +1,26 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V92_X$0 () Bool) +(declare-fun $m$1 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V27_dist$3 () Int) +(declare-fun $V28_speed$3 () Int) +(declare-fun $OK$3 () Bool) +(declare-fun $V33_env$3 () Bool) +(declare-fun $V92_X$3 () Bool) +(assert (and (T false $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0 $m$1 $s$1 $V27_dist$3 $V28_speed$3 $OK$3 $V33_env$3 $V92_X$3) $OK$3)) diff --git a/bench/tasks/car_all_e3_1068_e6_790_extend_s_part.smt2 b/bench/tasks/car_all_e3_1068_e6_790_extend_s_part.smt2 new file mode 100755 index 000000000..d762fecfa --- /dev/null +++ b/bench/tasks/car_all_e3_1068_e6_790_extend_s_part.smt2 @@ -0,0 +1,20 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V92_X$0 () Bool) +(assert (T %init $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0)) diff --git a/bench/tasks/car_all_e3_1068_e6_790_extend_t_part.smt2 b/bench/tasks/car_all_e3_1068_e6_790_extend_t_part.smt2 new file mode 100755 index 000000000..9240b1361 --- /dev/null +++ b/bench/tasks/car_all_e3_1068_e6_790_extend_t_part.smt2 @@ -0,0 +1,20 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V92_X$2 () Bool) +(assert (and (T %init $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$2 $V28_speed$2 $OK$2 $V33_env$2 $V92_X$2) $OK$2)) diff --git a/bench/tasks/car_all_e8_856_base1_s_part.smt2 b/bench/tasks/car_all_e8_856_base1_s_part.smt2 new file mode 100755 index 000000000..7c7bccf53 --- /dev/null +++ b/bench/tasks/car_all_e8_856_base1_s_part.smt2 @@ -0,0 +1,19 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V92_X$0 () Bool) +(assert (T true $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0)) diff --git a/bench/tasks/car_all_e8_856_base1_t_part.smt2 b/bench/tasks/car_all_e8_856_base1_t_part.smt2 new file mode 100755 index 000000000..0b97574b5 --- /dev/null +++ b/bench/tasks/car_all_e8_856_base1_t_part.smt2 @@ -0,0 +1,19 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V92_X$2 () Bool) +(assert (and (T true $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$2 $V28_speed$2 $OK$2 $V33_env$2 $V92_X$2) $OK$2)) diff --git a/bench/tasks/car_all_e8_856_base2_s_part.smt2 b/bench/tasks/car_all_e8_856_base2_s_part.smt2 new file mode 100755 index 000000000..46761d7e4 --- /dev/null +++ b/bench/tasks/car_all_e8_856_base2_s_part.smt2 @@ -0,0 +1,28 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V92_X$0 () Bool) +(declare-fun $m$1 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V27_dist$1 () Int) +(declare-fun $V28_speed$1 () Int) +(declare-fun $OK$1 () Bool) +(declare-fun $V33_env$1 () Bool) +(declare-fun $V92_X$1 () Bool) +(assert (T true $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0)) +(assert $OK$0) +(assert (T false $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0 $m$1 $s$1 $V27_dist$1 $V28_speed$1 $OK$1 $V33_env$1 $V92_X$1)) diff --git a/bench/tasks/car_all_e8_856_base2_t_part.smt2 b/bench/tasks/car_all_e8_856_base2_t_part.smt2 new file mode 100755 index 000000000..47858ac64 --- /dev/null +++ b/bench/tasks/car_all_e8_856_base2_t_part.smt2 @@ -0,0 +1,26 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V92_X$0 () Bool) +(declare-fun $m$1 () Bool) +(declare-fun $s$1 () Bool) +(declare-fun $V27_dist$3 () Int) +(declare-fun $V28_speed$3 () Int) +(declare-fun $OK$3 () Bool) +(declare-fun $V33_env$3 () Bool) +(declare-fun $V92_X$3 () Bool) +(assert (and (T false $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0 $m$1 $s$1 $V27_dist$3 $V28_speed$3 $OK$3 $V33_env$3 $V92_X$3) $OK$3)) diff --git a/bench/tasks/car_all_e8_856_extend_s_part.smt2 b/bench/tasks/car_all_e8_856_extend_s_part.smt2 new file mode 100755 index 000000000..d762fecfa --- /dev/null +++ b/bench/tasks/car_all_e8_856_extend_s_part.smt2 @@ -0,0 +1,20 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$0 () Int) +(declare-fun $V28_speed$0 () Int) +(declare-fun $OK$0 () Bool) +(declare-fun $V33_env$0 () Bool) +(declare-fun $V92_X$0 () Bool) +(assert (T %init $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$0 $V28_speed$0 $OK$0 $V33_env$0 $V92_X$0)) diff --git a/bench/tasks/car_all_e8_856_extend_t_part.smt2 b/bench/tasks/car_all_e8_856_extend_t_part.smt2 new file mode 100644 index 000000000..9240b1361 --- /dev/null +++ b/bench/tasks/car_all_e8_856_extend_t_part.smt2 @@ -0,0 +1,20 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($m$0 Bool) ($s$0 Bool) ($V27_dist$0 Int) ($V28_speed$0 Int) ($OK$0 Bool) ($V33_env$0 Bool) ($V92_X$0 Bool) ($m$1 Bool) ($s$1 Bool) ($V27_dist$1 Int) ($V28_speed$1 Int) ($OK$1 Bool) ($V33_env$1 Bool) ($V92_X$1 Bool)) Bool (and (= $OK$1 (=> $V33_env$1 (and (and (and (>= $V27_dist$1 0) (< $V27_dist$1 11)) (< $V28_speed$1 4)) (>= $V28_speed$1 0)))) (= $V33_env$1 (ite %init $V92_X$1 (and $V92_X$1 $V33_env$0))) (= $V92_X$1 (and (not (and $m$1 $s$1)) (< $V27_dist$1 32767))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $m$~1 () Bool) +(declare-fun $s$~1 () Bool) +(declare-fun $V27_dist$~1 () Int) +(declare-fun $V28_speed$~1 () Int) +(declare-fun $OK$~1 () Bool) +(declare-fun $V33_env$~1 () Bool) +(declare-fun $V92_X$~1 () Bool) +(declare-fun $m$0 () Bool) +(declare-fun $s$0 () Bool) +(declare-fun $V27_dist$2 () Int) +(declare-fun $V28_speed$2 () Int) +(declare-fun $OK$2 () Bool) +(declare-fun $V33_env$2 () Bool) +(declare-fun $V92_X$2 () Bool) +(assert (and (T %init $m$~1 $s$~1 $V27_dist$~1 $V28_speed$~1 $OK$~1 $V33_env$~1 $V92_X$~1 $m$0 $s$0 $V27_dist$2 $V28_speed$2 $OK$2 $V33_env$2 $V92_X$2) $OK$2)) diff --git a/bench/tasks/cd_base1_s_part.smt2 b/bench/tasks/cd_base1_s_part.smt2 new file mode 100755 index 000000000..e2b083906 --- /dev/null +++ b/bench/tasks/cd_base1_s_part.smt2 @@ -0,0 +1,37 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($diff$0 Int) ($speed$0 Int) ($plus$0 Bool) ($minus$0 Bool) ($OK$0 Bool) ($realistic$0 Bool) ($Environment~0.diff$0 Int) ($Environment~0.plus$0 Bool) ($Environment~0.minus$0 Bool) ($Environment~0.ok$0 Bool) ($Sofar~0.X$0 Bool) ($Sofar~0.Sofar$0 Bool) ($Property~0.speed$0 Int) ($Property~0.ok$0 Bool) ($Property~0.cpt$0 Int) ($Property~0.acceptable$0 Bool) ($diff$1 Int) ($speed$1 Int) ($plus$1 Bool) ($minus$1 Bool) ($OK$1 Bool) ($realistic$1 Bool) ($Environment~0.diff$1 Int) ($Environment~0.plus$1 Bool) ($Environment~0.minus$1 Bool) ($Environment~0.ok$1 Bool) ($Sofar~0.X$1 Bool) ($Sofar~0.Sofar$1 Bool) ($Property~0.speed$1 Int) ($Property~0.ok$1 Bool) ($Property~0.cpt$1 Int) ($Property~0.acceptable$1 Bool)) Bool (and (= $realistic$1 $Environment~0.ok$1) (= $OK$1 (=> $Sofar~0.Sofar$1 $Property~0.ok$1)) (= $Environment~0.diff$1 $diff$1) (= $Environment~0.plus$1 $plus$1) (= $Environment~0.minus$1 $minus$1) (= $Environment~0.ok$1 (and (and (and (<= (- 0 4) $Environment~0.diff$1) (<= $Environment~0.diff$1 4)) (ite (ite %init true $Environment~0.plus$0) (>= $Environment~0.diff$1 1) true)) (ite (ite %init false $Environment~0.minus$0) (<= $Environment~0.diff$1 (- 0 1)) true))) (= $Sofar~0.X$1 (and (and $realistic$1 (<= 0 $speed$1)) (< $speed$1 16))) (= $Sofar~0.Sofar$1 (ite %init $Sofar~0.X$1 (and $Sofar~0.X$1 $Sofar~0.Sofar$0))) (= $Property~0.speed$1 $speed$1) (= $Property~0.acceptable$1 (and (<= 8 $Property~0.speed$1) (<= $Property~0.speed$1 12))) (= $Property~0.cpt$1 (ite %init 0 (ite $Property~0.acceptable$1 0 (+ $Property~0.cpt$0 1)))) (= $Property~0.ok$1 (ite %init true (<= $Property~0.cpt$0 7))))) +; Universally quantified variables +(declare-fun $diff$~1 () Int) +(declare-fun $speed$~1 () Int) +(declare-fun $plus$~1 () Bool) +(declare-fun $minus$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $realistic$~1 () Bool) +(declare-fun $Environment~0.diff$~1 () Int) +(declare-fun $Environment~0.plus$~1 () Bool) +(declare-fun $Environment~0.minus$~1 () Bool) +(declare-fun $Environment~0.ok$~1 () Bool) +(declare-fun $Sofar~0.X$~1 () Bool) +(declare-fun $Sofar~0.Sofar$~1 () Bool) +(declare-fun $Property~0.speed$~1 () Int) +(declare-fun $Property~0.ok$~1 () Bool) +(declare-fun $Property~0.cpt$~1 () Int) +(declare-fun $Property~0.acceptable$~1 () Bool) +(declare-fun $diff$0 () Int) +(declare-fun $speed$0 () Int) +(declare-fun $plus$0 () Bool) +(declare-fun $minus$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $realistic$0 () Bool) +(declare-fun $Environment~0.diff$0 () Int) +(declare-fun $Environment~0.plus$0 () Bool) +(declare-fun $Environment~0.minus$0 () Bool) +(declare-fun $Environment~0.ok$0 () Bool) +(declare-fun $Sofar~0.X$0 () Bool) +(declare-fun $Sofar~0.Sofar$0 () Bool) +(declare-fun $Property~0.speed$0 () Int) +(declare-fun $Property~0.ok$0 () Bool) +(declare-fun $Property~0.cpt$0 () Int) +(declare-fun $Property~0.acceptable$0 () Bool) +(assert (T true $diff$~1 $speed$~1 $plus$~1 $minus$~1 $OK$~1 $realistic$~1 $Environment~0.diff$~1 $Environment~0.plus$~1 $Environment~0.minus$~1 $Environment~0.ok$~1 $Sofar~0.X$~1 $Sofar~0.Sofar$~1 $Property~0.speed$~1 $Property~0.ok$~1 $Property~0.cpt$~1 $Property~0.acceptable$~1 $diff$0 $speed$0 $plus$0 $minus$0 $OK$0 $realistic$0 $Environment~0.diff$0 $Environment~0.plus$0 $Environment~0.minus$0 $Environment~0.ok$0 $Sofar~0.X$0 $Sofar~0.Sofar$0 $Property~0.speed$0 $Property~0.ok$0 $Property~0.cpt$0 $Property~0.acceptable$0)) diff --git a/bench/tasks/cd_base1_t_part.smt2 b/bench/tasks/cd_base1_t_part.smt2 new file mode 100755 index 000000000..b53b83d01 --- /dev/null +++ b/bench/tasks/cd_base1_t_part.smt2 @@ -0,0 +1,37 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($diff$0 Int) ($speed$0 Int) ($plus$0 Bool) ($minus$0 Bool) ($OK$0 Bool) ($realistic$0 Bool) ($Environment~0.diff$0 Int) ($Environment~0.plus$0 Bool) ($Environment~0.minus$0 Bool) ($Environment~0.ok$0 Bool) ($Sofar~0.X$0 Bool) ($Sofar~0.Sofar$0 Bool) ($Property~0.speed$0 Int) ($Property~0.ok$0 Bool) ($Property~0.cpt$0 Int) ($Property~0.acceptable$0 Bool) ($diff$1 Int) ($speed$1 Int) ($plus$1 Bool) ($minus$1 Bool) ($OK$1 Bool) ($realistic$1 Bool) ($Environment~0.diff$1 Int) ($Environment~0.plus$1 Bool) ($Environment~0.minus$1 Bool) ($Environment~0.ok$1 Bool) ($Sofar~0.X$1 Bool) ($Sofar~0.Sofar$1 Bool) ($Property~0.speed$1 Int) ($Property~0.ok$1 Bool) ($Property~0.cpt$1 Int) ($Property~0.acceptable$1 Bool)) Bool (and (= $realistic$1 $Environment~0.ok$1) (= $OK$1 (=> $Sofar~0.Sofar$1 $Property~0.ok$1)) (= $Environment~0.diff$1 $diff$1) (= $Environment~0.plus$1 $plus$1) (= $Environment~0.minus$1 $minus$1) (= $Environment~0.ok$1 (and (and (and (<= (- 0 4) $Environment~0.diff$1) (<= $Environment~0.diff$1 4)) (ite (ite %init true $Environment~0.plus$0) (>= $Environment~0.diff$1 1) true)) (ite (ite %init false $Environment~0.minus$0) (<= $Environment~0.diff$1 (- 0 1)) true))) (= $Sofar~0.X$1 (and (and $realistic$1 (<= 0 $speed$1)) (< $speed$1 16))) (= $Sofar~0.Sofar$1 (ite %init $Sofar~0.X$1 (and $Sofar~0.X$1 $Sofar~0.Sofar$0))) (= $Property~0.speed$1 $speed$1) (= $Property~0.acceptable$1 (and (<= 8 $Property~0.speed$1) (<= $Property~0.speed$1 12))) (= $Property~0.cpt$1 (ite %init 0 (ite $Property~0.acceptable$1 0 (+ $Property~0.cpt$0 1)))) (= $Property~0.ok$1 (ite %init true (<= $Property~0.cpt$0 7))))) +; Universally quantified variables +(declare-fun $diff$~1 () Int) +(declare-fun $speed$~1 () Int) +(declare-fun $plus$~1 () Bool) +(declare-fun $minus$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $realistic$~1 () Bool) +(declare-fun $Environment~0.diff$~1 () Int) +(declare-fun $Environment~0.plus$~1 () Bool) +(declare-fun $Environment~0.minus$~1 () Bool) +(declare-fun $Environment~0.ok$~1 () Bool) +(declare-fun $Sofar~0.X$~1 () Bool) +(declare-fun $Sofar~0.Sofar$~1 () Bool) +(declare-fun $Property~0.speed$~1 () Int) +(declare-fun $Property~0.ok$~1 () Bool) +(declare-fun $Property~0.cpt$~1 () Int) +(declare-fun $Property~0.acceptable$~1 () Bool) +(declare-fun $diff$0 () Int) +(declare-fun $speed$2 () Int) +(declare-fun $plus$2 () Bool) +(declare-fun $minus$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $realistic$2 () Bool) +(declare-fun $Environment~0.diff$2 () Int) +(declare-fun $Environment~0.plus$2 () Bool) +(declare-fun $Environment~0.minus$2 () Bool) +(declare-fun $Environment~0.ok$2 () Bool) +(declare-fun $Sofar~0.X$2 () Bool) +(declare-fun $Sofar~0.Sofar$2 () Bool) +(declare-fun $Property~0.speed$2 () Int) +(declare-fun $Property~0.ok$2 () Bool) +(declare-fun $Property~0.cpt$2 () Int) +(declare-fun $Property~0.acceptable$2 () Bool) +(assert (and (T true $diff$~1 $speed$~1 $plus$~1 $minus$~1 $OK$~1 $realistic$~1 $Environment~0.diff$~1 $Environment~0.plus$~1 $Environment~0.minus$~1 $Environment~0.ok$~1 $Sofar~0.X$~1 $Sofar~0.Sofar$~1 $Property~0.speed$~1 $Property~0.ok$~1 $Property~0.cpt$~1 $Property~0.acceptable$~1 $diff$0 $speed$2 $plus$2 $minus$2 $OK$2 $realistic$2 $Environment~0.diff$2 $Environment~0.plus$2 $Environment~0.minus$2 $Environment~0.ok$2 $Sofar~0.X$2 $Sofar~0.Sofar$2 $Property~0.speed$2 $Property~0.ok$2 $Property~0.cpt$2 $Property~0.acceptable$2) $OK$2)) diff --git a/bench/tasks/cd_base2_s_part.smt2 b/bench/tasks/cd_base2_s_part.smt2 new file mode 100755 index 000000000..136ffd566 --- /dev/null +++ b/bench/tasks/cd_base2_s_part.smt2 @@ -0,0 +1,55 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($diff$0 Int) ($speed$0 Int) ($plus$0 Bool) ($minus$0 Bool) ($OK$0 Bool) ($realistic$0 Bool) ($Environment~0.diff$0 Int) ($Environment~0.plus$0 Bool) ($Environment~0.minus$0 Bool) ($Environment~0.ok$0 Bool) ($Sofar~0.X$0 Bool) ($Sofar~0.Sofar$0 Bool) ($Property~0.speed$0 Int) ($Property~0.ok$0 Bool) ($Property~0.cpt$0 Int) ($Property~0.acceptable$0 Bool) ($diff$1 Int) ($speed$1 Int) ($plus$1 Bool) ($minus$1 Bool) ($OK$1 Bool) ($realistic$1 Bool) ($Environment~0.diff$1 Int) ($Environment~0.plus$1 Bool) ($Environment~0.minus$1 Bool) ($Environment~0.ok$1 Bool) ($Sofar~0.X$1 Bool) ($Sofar~0.Sofar$1 Bool) ($Property~0.speed$1 Int) ($Property~0.ok$1 Bool) ($Property~0.cpt$1 Int) ($Property~0.acceptable$1 Bool)) Bool (and (= $realistic$1 $Environment~0.ok$1) (= $OK$1 (=> $Sofar~0.Sofar$1 $Property~0.ok$1)) (= $Environment~0.diff$1 $diff$1) (= $Environment~0.plus$1 $plus$1) (= $Environment~0.minus$1 $minus$1) (= $Environment~0.ok$1 (and (and (and (<= (- 0 4) $Environment~0.diff$1) (<= $Environment~0.diff$1 4)) (ite (ite %init true $Environment~0.plus$0) (>= $Environment~0.diff$1 1) true)) (ite (ite %init false $Environment~0.minus$0) (<= $Environment~0.diff$1 (- 0 1)) true))) (= $Sofar~0.X$1 (and (and $realistic$1 (<= 0 $speed$1)) (< $speed$1 16))) (= $Sofar~0.Sofar$1 (ite %init $Sofar~0.X$1 (and $Sofar~0.X$1 $Sofar~0.Sofar$0))) (= $Property~0.speed$1 $speed$1) (= $Property~0.acceptable$1 (and (<= 8 $Property~0.speed$1) (<= $Property~0.speed$1 12))) (= $Property~0.cpt$1 (ite %init 0 (ite $Property~0.acceptable$1 0 (+ $Property~0.cpt$0 1)))) (= $Property~0.ok$1 (ite %init true (<= $Property~0.cpt$0 7))))) +; Universally quantified variables +(declare-fun $diff$~1 () Int) +(declare-fun $speed$~1 () Int) +(declare-fun $plus$~1 () Bool) +(declare-fun $minus$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $realistic$~1 () Bool) +(declare-fun $Environment~0.diff$~1 () Int) +(declare-fun $Environment~0.plus$~1 () Bool) +(declare-fun $Environment~0.minus$~1 () Bool) +(declare-fun $Environment~0.ok$~1 () Bool) +(declare-fun $Sofar~0.X$~1 () Bool) +(declare-fun $Sofar~0.Sofar$~1 () Bool) +(declare-fun $Property~0.speed$~1 () Int) +(declare-fun $Property~0.ok$~1 () Bool) +(declare-fun $Property~0.cpt$~1 () Int) +(declare-fun $Property~0.acceptable$~1 () Bool) +(declare-fun $diff$0 () Int) +(declare-fun $speed$0 () Int) +(declare-fun $plus$0 () Bool) +(declare-fun $minus$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $realistic$0 () Bool) +(declare-fun $Environment~0.diff$0 () Int) +(declare-fun $Environment~0.plus$0 () Bool) +(declare-fun $Environment~0.minus$0 () Bool) +(declare-fun $Environment~0.ok$0 () Bool) +(declare-fun $Sofar~0.X$0 () Bool) +(declare-fun $Sofar~0.Sofar$0 () Bool) +(declare-fun $Property~0.speed$0 () Int) +(declare-fun $Property~0.ok$0 () Bool) +(declare-fun $Property~0.cpt$0 () Int) +(declare-fun $Property~0.acceptable$0 () Bool) +(declare-fun $diff$1 () Int) +(declare-fun $speed$1 () Int) +(declare-fun $plus$1 () Bool) +(declare-fun $minus$1 () Bool) +(declare-fun $OK$1 () Bool) +(declare-fun $realistic$1 () Bool) +(declare-fun $Environment~0.diff$1 () Int) +(declare-fun $Environment~0.plus$1 () Bool) +(declare-fun $Environment~0.minus$1 () Bool) +(declare-fun $Environment~0.ok$1 () Bool) +(declare-fun $Sofar~0.X$1 () Bool) +(declare-fun $Sofar~0.Sofar$1 () Bool) +(declare-fun $Property~0.speed$1 () Int) +(declare-fun $Property~0.ok$1 () Bool) +(declare-fun $Property~0.cpt$1 () Int) +(declare-fun $Property~0.acceptable$1 () Bool) +(assert (T true $diff$~1 $speed$~1 $plus$~1 $minus$~1 $OK$~1 $realistic$~1 $Environment~0.diff$~1 $Environment~0.plus$~1 $Environment~0.minus$~1 $Environment~0.ok$~1 $Sofar~0.X$~1 $Sofar~0.Sofar$~1 $Property~0.speed$~1 $Property~0.ok$~1 $Property~0.cpt$~1 $Property~0.acceptable$~1 $diff$0 $speed$0 $plus$0 $minus$0 $OK$0 $realistic$0 $Environment~0.diff$0 $Environment~0.plus$0 $Environment~0.minus$0 $Environment~0.ok$0 $Sofar~0.X$0 $Sofar~0.Sofar$0 $Property~0.speed$0 $Property~0.ok$0 $Property~0.cpt$0 $Property~0.acceptable$0)) +(assert $OK$0) +(assert (T false $diff$0 $speed$0 $plus$0 $minus$0 $OK$0 $realistic$0 $Environment~0.diff$0 $Environment~0.plus$0 $Environment~0.minus$0 $Environment~0.ok$0 $Sofar~0.X$0 $Sofar~0.Sofar$0 $Property~0.speed$0 $Property~0.ok$0 $Property~0.cpt$0 $Property~0.acceptable$0 $diff$1 $speed$1 $plus$1 $minus$1 $OK$1 $realistic$1 $Environment~0.diff$1 $Environment~0.plus$1 $Environment~0.minus$1 $Environment~0.ok$1 $Sofar~0.X$1 $Sofar~0.Sofar$1 $Property~0.speed$1 $Property~0.ok$1 $Property~0.cpt$1 $Property~0.acceptable$1)) diff --git a/bench/tasks/cd_base2_t_part.smt2 b/bench/tasks/cd_base2_t_part.smt2 new file mode 100755 index 000000000..6f192ad09 --- /dev/null +++ b/bench/tasks/cd_base2_t_part.smt2 @@ -0,0 +1,53 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($diff$0 Int) ($speed$0 Int) ($plus$0 Bool) ($minus$0 Bool) ($OK$0 Bool) ($realistic$0 Bool) ($Environment~0.diff$0 Int) ($Environment~0.plus$0 Bool) ($Environment~0.minus$0 Bool) ($Environment~0.ok$0 Bool) ($Sofar~0.X$0 Bool) ($Sofar~0.Sofar$0 Bool) ($Property~0.speed$0 Int) ($Property~0.ok$0 Bool) ($Property~0.cpt$0 Int) ($Property~0.acceptable$0 Bool) ($diff$1 Int) ($speed$1 Int) ($plus$1 Bool) ($minus$1 Bool) ($OK$1 Bool) ($realistic$1 Bool) ($Environment~0.diff$1 Int) ($Environment~0.plus$1 Bool) ($Environment~0.minus$1 Bool) ($Environment~0.ok$1 Bool) ($Sofar~0.X$1 Bool) ($Sofar~0.Sofar$1 Bool) ($Property~0.speed$1 Int) ($Property~0.ok$1 Bool) ($Property~0.cpt$1 Int) ($Property~0.acceptable$1 Bool)) Bool (and (= $realistic$1 $Environment~0.ok$1) (= $OK$1 (=> $Sofar~0.Sofar$1 $Property~0.ok$1)) (= $Environment~0.diff$1 $diff$1) (= $Environment~0.plus$1 $plus$1) (= $Environment~0.minus$1 $minus$1) (= $Environment~0.ok$1 (and (and (and (<= (- 0 4) $Environment~0.diff$1) (<= $Environment~0.diff$1 4)) (ite (ite %init true $Environment~0.plus$0) (>= $Environment~0.diff$1 1) true)) (ite (ite %init false $Environment~0.minus$0) (<= $Environment~0.diff$1 (- 0 1)) true))) (= $Sofar~0.X$1 (and (and $realistic$1 (<= 0 $speed$1)) (< $speed$1 16))) (= $Sofar~0.Sofar$1 (ite %init $Sofar~0.X$1 (and $Sofar~0.X$1 $Sofar~0.Sofar$0))) (= $Property~0.speed$1 $speed$1) (= $Property~0.acceptable$1 (and (<= 8 $Property~0.speed$1) (<= $Property~0.speed$1 12))) (= $Property~0.cpt$1 (ite %init 0 (ite $Property~0.acceptable$1 0 (+ $Property~0.cpt$0 1)))) (= $Property~0.ok$1 (ite %init true (<= $Property~0.cpt$0 7))))) +; Universally quantified variables +(declare-fun $diff$~1 () Int) +(declare-fun $speed$~1 () Int) +(declare-fun $plus$~1 () Bool) +(declare-fun $minus$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $realistic$~1 () Bool) +(declare-fun $Environment~0.diff$~1 () Int) +(declare-fun $Environment~0.plus$~1 () Bool) +(declare-fun $Environment~0.minus$~1 () Bool) +(declare-fun $Environment~0.ok$~1 () Bool) +(declare-fun $Sofar~0.X$~1 () Bool) +(declare-fun $Sofar~0.Sofar$~1 () Bool) +(declare-fun $Property~0.speed$~1 () Int) +(declare-fun $Property~0.ok$~1 () Bool) +(declare-fun $Property~0.cpt$~1 () Int) +(declare-fun $Property~0.acceptable$~1 () Bool) +(declare-fun $diff$0 () Int) +(declare-fun $speed$0 () Int) +(declare-fun $plus$0 () Bool) +(declare-fun $minus$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $realistic$0 () Bool) +(declare-fun $Environment~0.diff$0 () Int) +(declare-fun $Environment~0.plus$0 () Bool) +(declare-fun $Environment~0.minus$0 () Bool) +(declare-fun $Environment~0.ok$0 () Bool) +(declare-fun $Sofar~0.X$0 () Bool) +(declare-fun $Sofar~0.Sofar$0 () Bool) +(declare-fun $Property~0.speed$0 () Int) +(declare-fun $Property~0.ok$0 () Bool) +(declare-fun $Property~0.cpt$0 () Int) +(declare-fun $Property~0.acceptable$0 () Bool) +(declare-fun $diff$1 () Int) +(declare-fun $speed$3 () Int) +(declare-fun $plus$3 () Bool) +(declare-fun $minus$3 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $realistic$3 () Bool) +(declare-fun $Environment~0.diff$3 () Int) +(declare-fun $Environment~0.plus$3 () Bool) +(declare-fun $Environment~0.minus$3 () Bool) +(declare-fun $Environment~0.ok$3 () Bool) +(declare-fun $Sofar~0.X$3 () Bool) +(declare-fun $Sofar~0.Sofar$3 () Bool) +(declare-fun $Property~0.speed$3 () Int) +(declare-fun $Property~0.ok$3 () Bool) +(declare-fun $Property~0.cpt$3 () Int) +(declare-fun $Property~0.acceptable$3 () Bool) +(assert (and (T false $diff$0 $speed$0 $plus$0 $minus$0 $OK$0 $realistic$0 $Environment~0.diff$0 $Environment~0.plus$0 $Environment~0.minus$0 $Environment~0.ok$0 $Sofar~0.X$0 $Sofar~0.Sofar$0 $Property~0.speed$0 $Property~0.ok$0 $Property~0.cpt$0 $Property~0.acceptable$0 $diff$1 $speed$3 $plus$3 $minus$3 $OK$3 $realistic$3 $Environment~0.diff$3 $Environment~0.plus$3 $Environment~0.minus$3 $Environment~0.ok$3 $Sofar~0.X$3 $Sofar~0.Sofar$3 $Property~0.speed$3 $Property~0.ok$3 $Property~0.cpt$3 $Property~0.acceptable$3) $OK$3)) diff --git a/bench/tasks/cd_base3_s_part.smt2 b/bench/tasks/cd_base3_s_part.smt2 new file mode 100755 index 000000000..6cff2e04c --- /dev/null +++ b/bench/tasks/cd_base3_s_part.smt2 @@ -0,0 +1,73 @@ +; K = 3 +; Transition relation +(define-fun T ((%init Bool) ($diff$0 Int) ($speed$0 Int) ($plus$0 Bool) ($minus$0 Bool) ($OK$0 Bool) ($realistic$0 Bool) ($Environment~0.diff$0 Int) ($Environment~0.plus$0 Bool) ($Environment~0.minus$0 Bool) ($Environment~0.ok$0 Bool) ($Sofar~0.X$0 Bool) ($Sofar~0.Sofar$0 Bool) ($Property~0.speed$0 Int) ($Property~0.ok$0 Bool) ($Property~0.cpt$0 Int) ($Property~0.acceptable$0 Bool) ($diff$1 Int) ($speed$1 Int) ($plus$1 Bool) ($minus$1 Bool) ($OK$1 Bool) ($realistic$1 Bool) ($Environment~0.diff$1 Int) ($Environment~0.plus$1 Bool) ($Environment~0.minus$1 Bool) ($Environment~0.ok$1 Bool) ($Sofar~0.X$1 Bool) ($Sofar~0.Sofar$1 Bool) ($Property~0.speed$1 Int) ($Property~0.ok$1 Bool) ($Property~0.cpt$1 Int) ($Property~0.acceptable$1 Bool)) Bool (and (= $realistic$1 $Environment~0.ok$1) (= $OK$1 (=> $Sofar~0.Sofar$1 $Property~0.ok$1)) (= $Environment~0.diff$1 $diff$1) (= $Environment~0.plus$1 $plus$1) (= $Environment~0.minus$1 $minus$1) (= $Environment~0.ok$1 (and (and (and (<= (- 0 4) $Environment~0.diff$1) (<= $Environment~0.diff$1 4)) (ite (ite %init true $Environment~0.plus$0) (>= $Environment~0.diff$1 1) true)) (ite (ite %init false $Environment~0.minus$0) (<= $Environment~0.diff$1 (- 0 1)) true))) (= $Sofar~0.X$1 (and (and $realistic$1 (<= 0 $speed$1)) (< $speed$1 16))) (= $Sofar~0.Sofar$1 (ite %init $Sofar~0.X$1 (and $Sofar~0.X$1 $Sofar~0.Sofar$0))) (= $Property~0.speed$1 $speed$1) (= $Property~0.acceptable$1 (and (<= 8 $Property~0.speed$1) (<= $Property~0.speed$1 12))) (= $Property~0.cpt$1 (ite %init 0 (ite $Property~0.acceptable$1 0 (+ $Property~0.cpt$0 1)))) (= $Property~0.ok$1 (ite %init true (<= $Property~0.cpt$0 7))))) +; Universally quantified variables +(declare-fun $diff$~1 () Int) +(declare-fun $speed$~1 () Int) +(declare-fun $plus$~1 () Bool) +(declare-fun $minus$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $realistic$~1 () Bool) +(declare-fun $Environment~0.diff$~1 () Int) +(declare-fun $Environment~0.plus$~1 () Bool) +(declare-fun $Environment~0.minus$~1 () Bool) +(declare-fun $Environment~0.ok$~1 () Bool) +(declare-fun $Sofar~0.X$~1 () Bool) +(declare-fun $Sofar~0.Sofar$~1 () Bool) +(declare-fun $Property~0.speed$~1 () Int) +(declare-fun $Property~0.ok$~1 () Bool) +(declare-fun $Property~0.cpt$~1 () Int) +(declare-fun $Property~0.acceptable$~1 () Bool) +(declare-fun $diff$0 () Int) +(declare-fun $speed$0 () Int) +(declare-fun $plus$0 () Bool) +(declare-fun $minus$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $realistic$0 () Bool) +(declare-fun $Environment~0.diff$0 () Int) +(declare-fun $Environment~0.plus$0 () Bool) +(declare-fun $Environment~0.minus$0 () Bool) +(declare-fun $Environment~0.ok$0 () Bool) +(declare-fun $Sofar~0.X$0 () Bool) +(declare-fun $Sofar~0.Sofar$0 () Bool) +(declare-fun $Property~0.speed$0 () Int) +(declare-fun $Property~0.ok$0 () Bool) +(declare-fun $Property~0.cpt$0 () Int) +(declare-fun $Property~0.acceptable$0 () Bool) +(declare-fun $diff$1 () Int) +(declare-fun $speed$1 () Int) +(declare-fun $plus$1 () Bool) +(declare-fun $minus$1 () Bool) +(declare-fun $OK$1 () Bool) +(declare-fun $realistic$1 () Bool) +(declare-fun $Environment~0.diff$1 () Int) +(declare-fun $Environment~0.plus$1 () Bool) +(declare-fun $Environment~0.minus$1 () Bool) +(declare-fun $Environment~0.ok$1 () Bool) +(declare-fun $Sofar~0.X$1 () Bool) +(declare-fun $Sofar~0.Sofar$1 () Bool) +(declare-fun $Property~0.speed$1 () Int) +(declare-fun $Property~0.ok$1 () Bool) +(declare-fun $Property~0.cpt$1 () Int) +(declare-fun $Property~0.acceptable$1 () Bool) +(declare-fun $diff$2 () Int) +(declare-fun $speed$2 () Int) +(declare-fun $plus$2 () Bool) +(declare-fun $minus$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $realistic$2 () Bool) +(declare-fun $Environment~0.diff$2 () Int) +(declare-fun $Environment~0.plus$2 () Bool) +(declare-fun $Environment~0.minus$2 () Bool) +(declare-fun $Environment~0.ok$2 () Bool) +(declare-fun $Sofar~0.X$2 () Bool) +(declare-fun $Sofar~0.Sofar$2 () Bool) +(declare-fun $Property~0.speed$2 () Int) +(declare-fun $Property~0.ok$2 () Bool) +(declare-fun $Property~0.cpt$2 () Int) +(declare-fun $Property~0.acceptable$2 () Bool) +(assert (T true $diff$~1 $speed$~1 $plus$~1 $minus$~1 $OK$~1 $realistic$~1 $Environment~0.diff$~1 $Environment~0.plus$~1 $Environment~0.minus$~1 $Environment~0.ok$~1 $Sofar~0.X$~1 $Sofar~0.Sofar$~1 $Property~0.speed$~1 $Property~0.ok$~1 $Property~0.cpt$~1 $Property~0.acceptable$~1 $diff$0 $speed$0 $plus$0 $minus$0 $OK$0 $realistic$0 $Environment~0.diff$0 $Environment~0.plus$0 $Environment~0.minus$0 $Environment~0.ok$0 $Sofar~0.X$0 $Sofar~0.Sofar$0 $Property~0.speed$0 $Property~0.ok$0 $Property~0.cpt$0 $Property~0.acceptable$0)) +(assert $OK$0) +(assert (T false $diff$0 $speed$0 $plus$0 $minus$0 $OK$0 $realistic$0 $Environment~0.diff$0 $Environment~0.plus$0 $Environment~0.minus$0 $Environment~0.ok$0 $Sofar~0.X$0 $Sofar~0.Sofar$0 $Property~0.speed$0 $Property~0.ok$0 $Property~0.cpt$0 $Property~0.acceptable$0 $diff$1 $speed$1 $plus$1 $minus$1 $OK$1 $realistic$1 $Environment~0.diff$1 $Environment~0.plus$1 $Environment~0.minus$1 $Environment~0.ok$1 $Sofar~0.X$1 $Sofar~0.Sofar$1 $Property~0.speed$1 $Property~0.ok$1 $Property~0.cpt$1 $Property~0.acceptable$1)) +(assert $OK$1) +(assert (T false $diff$1 $speed$1 $plus$1 $minus$1 $OK$1 $realistic$1 $Environment~0.diff$1 $Environment~0.plus$1 $Environment~0.minus$1 $Environment~0.ok$1 $Sofar~0.X$1 $Sofar~0.Sofar$1 $Property~0.speed$1 $Property~0.ok$1 $Property~0.cpt$1 $Property~0.acceptable$1 $diff$2 $speed$2 $plus$2 $minus$2 $OK$2 $realistic$2 $Environment~0.diff$2 $Environment~0.plus$2 $Environment~0.minus$2 $Environment~0.ok$2 $Sofar~0.X$2 $Sofar~0.Sofar$2 $Property~0.speed$2 $Property~0.ok$2 $Property~0.cpt$2 $Property~0.acceptable$2)) diff --git a/bench/tasks/cd_base3_t_part.smt2 b/bench/tasks/cd_base3_t_part.smt2 new file mode 100755 index 000000000..894002866 --- /dev/null +++ b/bench/tasks/cd_base3_t_part.smt2 @@ -0,0 +1,69 @@ +; K = 3 +; Transition relation +(define-fun T ((%init Bool) ($diff$0 Int) ($speed$0 Int) ($plus$0 Bool) ($minus$0 Bool) ($OK$0 Bool) ($realistic$0 Bool) ($Environment~0.diff$0 Int) ($Environment~0.plus$0 Bool) ($Environment~0.minus$0 Bool) ($Environment~0.ok$0 Bool) ($Sofar~0.X$0 Bool) ($Sofar~0.Sofar$0 Bool) ($Property~0.speed$0 Int) ($Property~0.ok$0 Bool) ($Property~0.cpt$0 Int) ($Property~0.acceptable$0 Bool) ($diff$1 Int) ($speed$1 Int) ($plus$1 Bool) ($minus$1 Bool) ($OK$1 Bool) ($realistic$1 Bool) ($Environment~0.diff$1 Int) ($Environment~0.plus$1 Bool) ($Environment~0.minus$1 Bool) ($Environment~0.ok$1 Bool) ($Sofar~0.X$1 Bool) ($Sofar~0.Sofar$1 Bool) ($Property~0.speed$1 Int) ($Property~0.ok$1 Bool) ($Property~0.cpt$1 Int) ($Property~0.acceptable$1 Bool)) Bool (and (= $realistic$1 $Environment~0.ok$1) (= $OK$1 (=> $Sofar~0.Sofar$1 $Property~0.ok$1)) (= $Environment~0.diff$1 $diff$1) (= $Environment~0.plus$1 $plus$1) (= $Environment~0.minus$1 $minus$1) (= $Environment~0.ok$1 (and (and (and (<= (- 0 4) $Environment~0.diff$1) (<= $Environment~0.diff$1 4)) (ite (ite %init true $Environment~0.plus$0) (>= $Environment~0.diff$1 1) true)) (ite (ite %init false $Environment~0.minus$0) (<= $Environment~0.diff$1 (- 0 1)) true))) (= $Sofar~0.X$1 (and (and $realistic$1 (<= 0 $speed$1)) (< $speed$1 16))) (= $Sofar~0.Sofar$1 (ite %init $Sofar~0.X$1 (and $Sofar~0.X$1 $Sofar~0.Sofar$0))) (= $Property~0.speed$1 $speed$1) (= $Property~0.acceptable$1 (and (<= 8 $Property~0.speed$1) (<= $Property~0.speed$1 12))) (= $Property~0.cpt$1 (ite %init 0 (ite $Property~0.acceptable$1 0 (+ $Property~0.cpt$0 1)))) (= $Property~0.ok$1 (ite %init true (<= $Property~0.cpt$0 7))))) +; Universally quantified variables +(declare-fun $diff$~1 () Int) +(declare-fun $speed$~1 () Int) +(declare-fun $plus$~1 () Bool) +(declare-fun $minus$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $realistic$~1 () Bool) +(declare-fun $Environment~0.diff$~1 () Int) +(declare-fun $Environment~0.plus$~1 () Bool) +(declare-fun $Environment~0.minus$~1 () Bool) +(declare-fun $Environment~0.ok$~1 () Bool) +(declare-fun $Sofar~0.X$~1 () Bool) +(declare-fun $Sofar~0.Sofar$~1 () Bool) +(declare-fun $Property~0.speed$~1 () Int) +(declare-fun $Property~0.ok$~1 () Bool) +(declare-fun $Property~0.cpt$~1 () Int) +(declare-fun $Property~0.acceptable$~1 () Bool) +(declare-fun $diff$0 () Int) +(declare-fun $speed$0 () Int) +(declare-fun $plus$0 () Bool) +(declare-fun $minus$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $realistic$0 () Bool) +(declare-fun $Environment~0.diff$0 () Int) +(declare-fun $Environment~0.plus$0 () Bool) +(declare-fun $Environment~0.minus$0 () Bool) +(declare-fun $Environment~0.ok$0 () Bool) +(declare-fun $Sofar~0.X$0 () Bool) +(declare-fun $Sofar~0.Sofar$0 () Bool) +(declare-fun $Property~0.speed$0 () Int) +(declare-fun $Property~0.ok$0 () Bool) +(declare-fun $Property~0.cpt$0 () Int) +(declare-fun $Property~0.acceptable$0 () Bool) +(declare-fun $diff$1 () Int) +(declare-fun $speed$1 () Int) +(declare-fun $plus$1 () Bool) +(declare-fun $minus$1 () Bool) +(declare-fun $OK$1 () Bool) +(declare-fun $realistic$1 () Bool) +(declare-fun $Environment~0.diff$1 () Int) +(declare-fun $Environment~0.plus$1 () Bool) +(declare-fun $Environment~0.minus$1 () Bool) +(declare-fun $Environment~0.ok$1 () Bool) +(declare-fun $Sofar~0.X$1 () Bool) +(declare-fun $Sofar~0.Sofar$1 () Bool) +(declare-fun $Property~0.speed$1 () Int) +(declare-fun $Property~0.ok$1 () Bool) +(declare-fun $Property~0.cpt$1 () Int) +(declare-fun $Property~0.acceptable$1 () Bool) +(declare-fun $diff$2 () Int) +(declare-fun $speed$4 () Int) +(declare-fun $plus$4 () Bool) +(declare-fun $minus$4 () Bool) +(declare-fun $OK$4 () Bool) +(declare-fun $realistic$4 () Bool) +(declare-fun $Environment~0.diff$4 () Int) +(declare-fun $Environment~0.plus$4 () Bool) +(declare-fun $Environment~0.minus$4 () Bool) +(declare-fun $Environment~0.ok$4 () Bool) +(declare-fun $Sofar~0.X$4 () Bool) +(declare-fun $Sofar~0.Sofar$4 () Bool) +(declare-fun $Property~0.speed$4 () Int) +(declare-fun $Property~0.ok$4 () Bool) +(declare-fun $Property~0.cpt$4 () Int) +(declare-fun $Property~0.acceptable$4 () Bool) +(assert (and (T false $diff$1 $speed$1 $plus$1 $minus$1 $OK$1 $realistic$1 $Environment~0.diff$1 $Environment~0.plus$1 $Environment~0.minus$1 $Environment~0.ok$1 $Sofar~0.X$1 $Sofar~0.Sofar$1 $Property~0.speed$1 $Property~0.ok$1 $Property~0.cpt$1 $Property~0.acceptable$1 $diff$2 $speed$4 $plus$4 $minus$4 $OK$4 $realistic$4 $Environment~0.diff$4 $Environment~0.plus$4 $Environment~0.minus$4 $Environment~0.ok$4 $Sofar~0.X$4 $Sofar~0.Sofar$4 $Property~0.speed$4 $Property~0.ok$4 $Property~0.cpt$4 $Property~0.acceptable$4) $OK$4)) diff --git a/bench/tasks/cd_e7_621_e8_714_base1_s_part.smt2 b/bench/tasks/cd_e7_621_e8_714_base1_s_part.smt2 new file mode 100755 index 000000000..76e8010b7 --- /dev/null +++ b/bench/tasks/cd_e7_621_e8_714_base1_s_part.smt2 @@ -0,0 +1,25 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($diff$0 Int) ($V22_speed$0 Int) ($V23_plus$0 Bool) ($V24_minus$0 Bool) ($OK$0 Bool) ($V25_realistic$0 Bool) ($V93_X$0 Bool) ($V98_Sofar$0 Bool) ($V109_cpt$0 Int) ($V110_acceptable$0 Bool) ($diff$1 Int) ($V22_speed$1 Int) ($V23_plus$1 Bool) ($V24_minus$1 Bool) ($OK$1 Bool) ($V25_realistic$1 Bool) ($V93_X$1 Bool) ($V98_Sofar$1 Bool) ($V109_cpt$1 Int) ($V110_acceptable$1 Bool)) Bool (and (= $OK$1 (=> $V98_Sofar$1 (ite %init true (<= $V109_cpt$0 7)))) (= $V25_realistic$1 (and (and (and (<= (- 0 4) $diff$1) (<= $diff$1 4)) (ite (ite %init true $V23_plus$0) (>= $diff$1 1) true)) (ite (ite %init false $V24_minus$0) (<= $diff$1 (- 0 1)) true))) (= $V93_X$1 (and (and $V25_realistic$1 (<= 0 $V22_speed$1)) (< $V22_speed$1 16))) (= $V98_Sofar$1 (ite %init $V93_X$1 (and $V93_X$1 $V98_Sofar$0))) (= $V109_cpt$1 (ite %init 0 (ite $V110_acceptable$1 0 (+ $V109_cpt$0 1)))) (= $V110_acceptable$1 (and (<= 8 $V22_speed$1) (<= $V22_speed$1 12))))) +; Universally quantified variables +(declare-fun $diff$~1 () Int) +(declare-fun $V22_speed$~1 () Int) +(declare-fun $V23_plus$~1 () Bool) +(declare-fun $V24_minus$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V25_realistic$~1 () Bool) +(declare-fun $V93_X$~1 () Bool) +(declare-fun $V98_Sofar$~1 () Bool) +(declare-fun $V109_cpt$~1 () Int) +(declare-fun $V110_acceptable$~1 () Bool) +(declare-fun $diff$0 () Int) +(declare-fun $V22_speed$0 () Int) +(declare-fun $V23_plus$0 () Bool) +(declare-fun $V24_minus$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V25_realistic$0 () Bool) +(declare-fun $V93_X$0 () Bool) +(declare-fun $V98_Sofar$0 () Bool) +(declare-fun $V109_cpt$0 () Int) +(declare-fun $V110_acceptable$0 () Bool) +(assert (T true $diff$~1 $V22_speed$~1 $V23_plus$~1 $V24_minus$~1 $OK$~1 $V25_realistic$~1 $V93_X$~1 $V98_Sofar$~1 $V109_cpt$~1 $V110_acceptable$~1 $diff$0 $V22_speed$0 $V23_plus$0 $V24_minus$0 $OK$0 $V25_realistic$0 $V93_X$0 $V98_Sofar$0 $V109_cpt$0 $V110_acceptable$0)) diff --git a/bench/tasks/cd_e7_621_e8_714_base1_t_part.smt2 b/bench/tasks/cd_e7_621_e8_714_base1_t_part.smt2 new file mode 100755 index 000000000..eeaed9993 --- /dev/null +++ b/bench/tasks/cd_e7_621_e8_714_base1_t_part.smt2 @@ -0,0 +1,25 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($diff$0 Int) ($V22_speed$0 Int) ($V23_plus$0 Bool) ($V24_minus$0 Bool) ($OK$0 Bool) ($V25_realistic$0 Bool) ($V93_X$0 Bool) ($V98_Sofar$0 Bool) ($V109_cpt$0 Int) ($V110_acceptable$0 Bool) ($diff$1 Int) ($V22_speed$1 Int) ($V23_plus$1 Bool) ($V24_minus$1 Bool) ($OK$1 Bool) ($V25_realistic$1 Bool) ($V93_X$1 Bool) ($V98_Sofar$1 Bool) ($V109_cpt$1 Int) ($V110_acceptable$1 Bool)) Bool (and (= $OK$1 (=> $V98_Sofar$1 (ite %init true (<= $V109_cpt$0 7)))) (= $V25_realistic$1 (and (and (and (<= (- 0 4) $diff$1) (<= $diff$1 4)) (ite (ite %init true $V23_plus$0) (>= $diff$1 1) true)) (ite (ite %init false $V24_minus$0) (<= $diff$1 (- 0 1)) true))) (= $V93_X$1 (and (and $V25_realistic$1 (<= 0 $V22_speed$1)) (< $V22_speed$1 16))) (= $V98_Sofar$1 (ite %init $V93_X$1 (and $V93_X$1 $V98_Sofar$0))) (= $V109_cpt$1 (ite %init 0 (ite $V110_acceptable$1 0 (+ $V109_cpt$0 1)))) (= $V110_acceptable$1 (and (<= 8 $V22_speed$1) (<= $V22_speed$1 12))))) +; Universally quantified variables +(declare-fun $diff$~1 () Int) +(declare-fun $V22_speed$~1 () Int) +(declare-fun $V23_plus$~1 () Bool) +(declare-fun $V24_minus$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V25_realistic$~1 () Bool) +(declare-fun $V93_X$~1 () Bool) +(declare-fun $V98_Sofar$~1 () Bool) +(declare-fun $V109_cpt$~1 () Int) +(declare-fun $V110_acceptable$~1 () Bool) +(declare-fun $diff$0 () Int) +(declare-fun $V22_speed$2 () Int) +(declare-fun $V23_plus$2 () Bool) +(declare-fun $V24_minus$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V25_realistic$2 () Bool) +(declare-fun $V93_X$2 () Bool) +(declare-fun $V98_Sofar$2 () Bool) +(declare-fun $V109_cpt$2 () Int) +(declare-fun $V110_acceptable$2 () Bool) +(assert (and (T true $diff$~1 $V22_speed$~1 $V23_plus$~1 $V24_minus$~1 $OK$~1 $V25_realistic$~1 $V93_X$~1 $V98_Sofar$~1 $V109_cpt$~1 $V110_acceptable$~1 $diff$0 $V22_speed$2 $V23_plus$2 $V24_minus$2 $OK$2 $V25_realistic$2 $V93_X$2 $V98_Sofar$2 $V109_cpt$2 $V110_acceptable$2) $OK$2)) diff --git a/bench/tasks/cd_e7_621_e8_714_base2_s_part.smt2 b/bench/tasks/cd_e7_621_e8_714_base2_s_part.smt2 new file mode 100755 index 000000000..1ec149e60 --- /dev/null +++ b/bench/tasks/cd_e7_621_e8_714_base2_s_part.smt2 @@ -0,0 +1,37 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($diff$0 Int) ($V22_speed$0 Int) ($V23_plus$0 Bool) ($V24_minus$0 Bool) ($OK$0 Bool) ($V25_realistic$0 Bool) ($V93_X$0 Bool) ($V98_Sofar$0 Bool) ($V109_cpt$0 Int) ($V110_acceptable$0 Bool) ($diff$1 Int) ($V22_speed$1 Int) ($V23_plus$1 Bool) ($V24_minus$1 Bool) ($OK$1 Bool) ($V25_realistic$1 Bool) ($V93_X$1 Bool) ($V98_Sofar$1 Bool) ($V109_cpt$1 Int) ($V110_acceptable$1 Bool)) Bool (and (= $OK$1 (=> $V98_Sofar$1 (ite %init true (<= $V109_cpt$0 7)))) (= $V25_realistic$1 (and (and (and (<= (- 0 4) $diff$1) (<= $diff$1 4)) (ite (ite %init true $V23_plus$0) (>= $diff$1 1) true)) (ite (ite %init false $V24_minus$0) (<= $diff$1 (- 0 1)) true))) (= $V93_X$1 (and (and $V25_realistic$1 (<= 0 $V22_speed$1)) (< $V22_speed$1 16))) (= $V98_Sofar$1 (ite %init $V93_X$1 (and $V93_X$1 $V98_Sofar$0))) (= $V109_cpt$1 (ite %init 0 (ite $V110_acceptable$1 0 (+ $V109_cpt$0 1)))) (= $V110_acceptable$1 (and (<= 8 $V22_speed$1) (<= $V22_speed$1 12))))) +; Universally quantified variables +(declare-fun $diff$~1 () Int) +(declare-fun $V22_speed$~1 () Int) +(declare-fun $V23_plus$~1 () Bool) +(declare-fun $V24_minus$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V25_realistic$~1 () Bool) +(declare-fun $V93_X$~1 () Bool) +(declare-fun $V98_Sofar$~1 () Bool) +(declare-fun $V109_cpt$~1 () Int) +(declare-fun $V110_acceptable$~1 () Bool) +(declare-fun $diff$0 () Int) +(declare-fun $V22_speed$0 () Int) +(declare-fun $V23_plus$0 () Bool) +(declare-fun $V24_minus$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V25_realistic$0 () Bool) +(declare-fun $V93_X$0 () Bool) +(declare-fun $V98_Sofar$0 () Bool) +(declare-fun $V109_cpt$0 () Int) +(declare-fun $V110_acceptable$0 () Bool) +(declare-fun $diff$1 () Int) +(declare-fun $V22_speed$1 () Int) +(declare-fun $V23_plus$1 () Bool) +(declare-fun $V24_minus$1 () Bool) +(declare-fun $OK$1 () Bool) +(declare-fun $V25_realistic$1 () Bool) +(declare-fun $V93_X$1 () Bool) +(declare-fun $V98_Sofar$1 () Bool) +(declare-fun $V109_cpt$1 () Int) +(declare-fun $V110_acceptable$1 () Bool) +(assert (T true $diff$~1 $V22_speed$~1 $V23_plus$~1 $V24_minus$~1 $OK$~1 $V25_realistic$~1 $V93_X$~1 $V98_Sofar$~1 $V109_cpt$~1 $V110_acceptable$~1 $diff$0 $V22_speed$0 $V23_plus$0 $V24_minus$0 $OK$0 $V25_realistic$0 $V93_X$0 $V98_Sofar$0 $V109_cpt$0 $V110_acceptable$0)) +(assert $OK$0) +(assert (T false $diff$0 $V22_speed$0 $V23_plus$0 $V24_minus$0 $OK$0 $V25_realistic$0 $V93_X$0 $V98_Sofar$0 $V109_cpt$0 $V110_acceptable$0 $diff$1 $V22_speed$1 $V23_plus$1 $V24_minus$1 $OK$1 $V25_realistic$1 $V93_X$1 $V98_Sofar$1 $V109_cpt$1 $V110_acceptable$1)) diff --git a/bench/tasks/cd_e7_621_e8_714_base2_t_part.smt2 b/bench/tasks/cd_e7_621_e8_714_base2_t_part.smt2 new file mode 100755 index 000000000..cbd3e910e --- /dev/null +++ b/bench/tasks/cd_e7_621_e8_714_base2_t_part.smt2 @@ -0,0 +1,35 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($diff$0 Int) ($V22_speed$0 Int) ($V23_plus$0 Bool) ($V24_minus$0 Bool) ($OK$0 Bool) ($V25_realistic$0 Bool) ($V93_X$0 Bool) ($V98_Sofar$0 Bool) ($V109_cpt$0 Int) ($V110_acceptable$0 Bool) ($diff$1 Int) ($V22_speed$1 Int) ($V23_plus$1 Bool) ($V24_minus$1 Bool) ($OK$1 Bool) ($V25_realistic$1 Bool) ($V93_X$1 Bool) ($V98_Sofar$1 Bool) ($V109_cpt$1 Int) ($V110_acceptable$1 Bool)) Bool (and (= $OK$1 (=> $V98_Sofar$1 (ite %init true (<= $V109_cpt$0 7)))) (= $V25_realistic$1 (and (and (and (<= (- 0 4) $diff$1) (<= $diff$1 4)) (ite (ite %init true $V23_plus$0) (>= $diff$1 1) true)) (ite (ite %init false $V24_minus$0) (<= $diff$1 (- 0 1)) true))) (= $V93_X$1 (and (and $V25_realistic$1 (<= 0 $V22_speed$1)) (< $V22_speed$1 16))) (= $V98_Sofar$1 (ite %init $V93_X$1 (and $V93_X$1 $V98_Sofar$0))) (= $V109_cpt$1 (ite %init 0 (ite $V110_acceptable$1 0 (+ $V109_cpt$0 1)))) (= $V110_acceptable$1 (and (<= 8 $V22_speed$1) (<= $V22_speed$1 12))))) +; Universally quantified variables +(declare-fun $diff$~1 () Int) +(declare-fun $V22_speed$~1 () Int) +(declare-fun $V23_plus$~1 () Bool) +(declare-fun $V24_minus$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V25_realistic$~1 () Bool) +(declare-fun $V93_X$~1 () Bool) +(declare-fun $V98_Sofar$~1 () Bool) +(declare-fun $V109_cpt$~1 () Int) +(declare-fun $V110_acceptable$~1 () Bool) +(declare-fun $diff$0 () Int) +(declare-fun $V22_speed$0 () Int) +(declare-fun $V23_plus$0 () Bool) +(declare-fun $V24_minus$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V25_realistic$0 () Bool) +(declare-fun $V93_X$0 () Bool) +(declare-fun $V98_Sofar$0 () Bool) +(declare-fun $V109_cpt$0 () Int) +(declare-fun $V110_acceptable$0 () Bool) +(declare-fun $diff$1 () Int) +(declare-fun $V22_speed$3 () Int) +(declare-fun $V23_plus$3 () Bool) +(declare-fun $V24_minus$3 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $V25_realistic$3 () Bool) +(declare-fun $V93_X$3 () Bool) +(declare-fun $V98_Sofar$3 () Bool) +(declare-fun $V109_cpt$3 () Int) +(declare-fun $V110_acceptable$3 () Bool) +(assert (and (T false $diff$0 $V22_speed$0 $V23_plus$0 $V24_minus$0 $OK$0 $V25_realistic$0 $V93_X$0 $V98_Sofar$0 $V109_cpt$0 $V110_acceptable$0 $diff$1 $V22_speed$3 $V23_plus$3 $V24_minus$3 $OK$3 $V25_realistic$3 $V93_X$3 $V98_Sofar$3 $V109_cpt$3 $V110_acceptable$3) $OK$3)) diff --git a/bench/tasks/cd_e7_621_e8_714_extend_s_part.smt2 b/bench/tasks/cd_e7_621_e8_714_extend_s_part.smt2 new file mode 100755 index 000000000..ab3b11f67 --- /dev/null +++ b/bench/tasks/cd_e7_621_e8_714_extend_s_part.smt2 @@ -0,0 +1,26 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($diff$0 Int) ($V22_speed$0 Int) ($V23_plus$0 Bool) ($V24_minus$0 Bool) ($OK$0 Bool) ($V25_realistic$0 Bool) ($V93_X$0 Bool) ($V98_Sofar$0 Bool) ($V109_cpt$0 Int) ($V110_acceptable$0 Bool) ($diff$1 Int) ($V22_speed$1 Int) ($V23_plus$1 Bool) ($V24_minus$1 Bool) ($OK$1 Bool) ($V25_realistic$1 Bool) ($V93_X$1 Bool) ($V98_Sofar$1 Bool) ($V109_cpt$1 Int) ($V110_acceptable$1 Bool)) Bool (and (= $OK$1 (=> $V98_Sofar$1 (ite %init true (<= $V109_cpt$0 7)))) (= $V25_realistic$1 (and (and (and (<= (- 0 4) $diff$1) (<= $diff$1 4)) (ite (ite %init true $V23_plus$0) (>= $diff$1 1) true)) (ite (ite %init false $V24_minus$0) (<= $diff$1 (- 0 1)) true))) (= $V93_X$1 (and (and $V25_realistic$1 (<= 0 $V22_speed$1)) (< $V22_speed$1 16))) (= $V98_Sofar$1 (ite %init $V93_X$1 (and $V93_X$1 $V98_Sofar$0))) (= $V109_cpt$1 (ite %init 0 (ite $V110_acceptable$1 0 (+ $V109_cpt$0 1)))) (= $V110_acceptable$1 (and (<= 8 $V22_speed$1) (<= $V22_speed$1 12))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $diff$~1 () Int) +(declare-fun $V22_speed$~1 () Int) +(declare-fun $V23_plus$~1 () Bool) +(declare-fun $V24_minus$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V25_realistic$~1 () Bool) +(declare-fun $V93_X$~1 () Bool) +(declare-fun $V98_Sofar$~1 () Bool) +(declare-fun $V109_cpt$~1 () Int) +(declare-fun $V110_acceptable$~1 () Bool) +(declare-fun $diff$0 () Int) +(declare-fun $V22_speed$0 () Int) +(declare-fun $V23_plus$0 () Bool) +(declare-fun $V24_minus$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V25_realistic$0 () Bool) +(declare-fun $V93_X$0 () Bool) +(declare-fun $V98_Sofar$0 () Bool) +(declare-fun $V109_cpt$0 () Int) +(declare-fun $V110_acceptable$0 () Bool) +(assert (T %init $diff$~1 $V22_speed$~1 $V23_plus$~1 $V24_minus$~1 $OK$~1 $V25_realistic$~1 $V93_X$~1 $V98_Sofar$~1 $V109_cpt$~1 $V110_acceptable$~1 $diff$0 $V22_speed$0 $V23_plus$0 $V24_minus$0 $OK$0 $V25_realistic$0 $V93_X$0 $V98_Sofar$0 $V109_cpt$0 $V110_acceptable$0)) diff --git a/bench/tasks/cd_e7_621_e8_714_extend_t_part.smt2 b/bench/tasks/cd_e7_621_e8_714_extend_t_part.smt2 new file mode 100755 index 000000000..3c8fb9335 --- /dev/null +++ b/bench/tasks/cd_e7_621_e8_714_extend_t_part.smt2 @@ -0,0 +1,26 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($diff$0 Int) ($V22_speed$0 Int) ($V23_plus$0 Bool) ($V24_minus$0 Bool) ($OK$0 Bool) ($V25_realistic$0 Bool) ($V93_X$0 Bool) ($V98_Sofar$0 Bool) ($V109_cpt$0 Int) ($V110_acceptable$0 Bool) ($diff$1 Int) ($V22_speed$1 Int) ($V23_plus$1 Bool) ($V24_minus$1 Bool) ($OK$1 Bool) ($V25_realistic$1 Bool) ($V93_X$1 Bool) ($V98_Sofar$1 Bool) ($V109_cpt$1 Int) ($V110_acceptable$1 Bool)) Bool (and (= $OK$1 (=> $V98_Sofar$1 (ite %init true (<= $V109_cpt$0 7)))) (= $V25_realistic$1 (and (and (and (<= (- 0 4) $diff$1) (<= $diff$1 4)) (ite (ite %init true $V23_plus$0) (>= $diff$1 1) true)) (ite (ite %init false $V24_minus$0) (<= $diff$1 (- 0 1)) true))) (= $V93_X$1 (and (and $V25_realistic$1 (<= 0 $V22_speed$1)) (< $V22_speed$1 16))) (= $V98_Sofar$1 (ite %init $V93_X$1 (and $V93_X$1 $V98_Sofar$0))) (= $V109_cpt$1 (ite %init 0 (ite $V110_acceptable$1 0 (+ $V109_cpt$0 1)))) (= $V110_acceptable$1 (and (<= 8 $V22_speed$1) (<= $V22_speed$1 12))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $diff$~1 () Int) +(declare-fun $V22_speed$~1 () Int) +(declare-fun $V23_plus$~1 () Bool) +(declare-fun $V24_minus$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V25_realistic$~1 () Bool) +(declare-fun $V93_X$~1 () Bool) +(declare-fun $V98_Sofar$~1 () Bool) +(declare-fun $V109_cpt$~1 () Int) +(declare-fun $V110_acceptable$~1 () Bool) +(declare-fun $diff$0 () Int) +(declare-fun $V22_speed$2 () Int) +(declare-fun $V23_plus$2 () Bool) +(declare-fun $V24_minus$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V25_realistic$2 () Bool) +(declare-fun $V93_X$2 () Bool) +(declare-fun $V98_Sofar$2 () Bool) +(declare-fun $V109_cpt$2 () Int) +(declare-fun $V110_acceptable$2 () Bool) +(assert (and (T %init $diff$~1 $V22_speed$~1 $V23_plus$~1 $V24_minus$~1 $OK$~1 $V25_realistic$~1 $V93_X$~1 $V98_Sofar$~1 $V109_cpt$~1 $V110_acceptable$~1 $diff$0 $V22_speed$2 $V23_plus$2 $V24_minus$2 $OK$2 $V25_realistic$2 $V93_X$2 $V98_Sofar$2 $V109_cpt$2 $V110_acceptable$2) $OK$2)) diff --git a/bench/tasks/cd_extend_s_part.smt2 b/bench/tasks/cd_extend_s_part.smt2 new file mode 100755 index 000000000..eb45c6f98 --- /dev/null +++ b/bench/tasks/cd_extend_s_part.smt2 @@ -0,0 +1,38 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($diff$0 Int) ($speed$0 Int) ($plus$0 Bool) ($minus$0 Bool) ($OK$0 Bool) ($realistic$0 Bool) ($Environment~0.diff$0 Int) ($Environment~0.plus$0 Bool) ($Environment~0.minus$0 Bool) ($Environment~0.ok$0 Bool) ($Sofar~0.X$0 Bool) ($Sofar~0.Sofar$0 Bool) ($Property~0.speed$0 Int) ($Property~0.ok$0 Bool) ($Property~0.cpt$0 Int) ($Property~0.acceptable$0 Bool) ($diff$1 Int) ($speed$1 Int) ($plus$1 Bool) ($minus$1 Bool) ($OK$1 Bool) ($realistic$1 Bool) ($Environment~0.diff$1 Int) ($Environment~0.plus$1 Bool) ($Environment~0.minus$1 Bool) ($Environment~0.ok$1 Bool) ($Sofar~0.X$1 Bool) ($Sofar~0.Sofar$1 Bool) ($Property~0.speed$1 Int) ($Property~0.ok$1 Bool) ($Property~0.cpt$1 Int) ($Property~0.acceptable$1 Bool)) Bool (and (= $realistic$1 $Environment~0.ok$1) (= $OK$1 (=> $Sofar~0.Sofar$1 $Property~0.ok$1)) (= $Environment~0.diff$1 $diff$1) (= $Environment~0.plus$1 $plus$1) (= $Environment~0.minus$1 $minus$1) (= $Environment~0.ok$1 (and (and (and (<= (- 0 4) $Environment~0.diff$1) (<= $Environment~0.diff$1 4)) (ite (ite %init true $Environment~0.plus$0) (>= $Environment~0.diff$1 1) true)) (ite (ite %init false $Environment~0.minus$0) (<= $Environment~0.diff$1 (- 0 1)) true))) (= $Sofar~0.X$1 (and (and $realistic$1 (<= 0 $speed$1)) (< $speed$1 16))) (= $Sofar~0.Sofar$1 (ite %init $Sofar~0.X$1 (and $Sofar~0.X$1 $Sofar~0.Sofar$0))) (= $Property~0.speed$1 $speed$1) (= $Property~0.acceptable$1 (and (<= 8 $Property~0.speed$1) (<= $Property~0.speed$1 12))) (= $Property~0.cpt$1 (ite %init 0 (ite $Property~0.acceptable$1 0 (+ $Property~0.cpt$0 1)))) (= $Property~0.ok$1 (ite %init true (<= $Property~0.cpt$0 7))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $diff$~1 () Int) +(declare-fun $speed$~1 () Int) +(declare-fun $plus$~1 () Bool) +(declare-fun $minus$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $realistic$~1 () Bool) +(declare-fun $Environment~0.diff$~1 () Int) +(declare-fun $Environment~0.plus$~1 () Bool) +(declare-fun $Environment~0.minus$~1 () Bool) +(declare-fun $Environment~0.ok$~1 () Bool) +(declare-fun $Sofar~0.X$~1 () Bool) +(declare-fun $Sofar~0.Sofar$~1 () Bool) +(declare-fun $Property~0.speed$~1 () Int) +(declare-fun $Property~0.ok$~1 () Bool) +(declare-fun $Property~0.cpt$~1 () Int) +(declare-fun $Property~0.acceptable$~1 () Bool) +(declare-fun $diff$0 () Int) +(declare-fun $speed$0 () Int) +(declare-fun $plus$0 () Bool) +(declare-fun $minus$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $realistic$0 () Bool) +(declare-fun $Environment~0.diff$0 () Int) +(declare-fun $Environment~0.plus$0 () Bool) +(declare-fun $Environment~0.minus$0 () Bool) +(declare-fun $Environment~0.ok$0 () Bool) +(declare-fun $Sofar~0.X$0 () Bool) +(declare-fun $Sofar~0.Sofar$0 () Bool) +(declare-fun $Property~0.speed$0 () Int) +(declare-fun $Property~0.ok$0 () Bool) +(declare-fun $Property~0.cpt$0 () Int) +(declare-fun $Property~0.acceptable$0 () Bool) +(assert (T %init $diff$~1 $speed$~1 $plus$~1 $minus$~1 $OK$~1 $realistic$~1 $Environment~0.diff$~1 $Environment~0.plus$~1 $Environment~0.minus$~1 $Environment~0.ok$~1 $Sofar~0.X$~1 $Sofar~0.Sofar$~1 $Property~0.speed$~1 $Property~0.ok$~1 $Property~0.cpt$~1 $Property~0.acceptable$~1 $diff$0 $speed$0 $plus$0 $minus$0 $OK$0 $realistic$0 $Environment~0.diff$0 $Environment~0.plus$0 $Environment~0.minus$0 $Environment~0.ok$0 $Sofar~0.X$0 $Sofar~0.Sofar$0 $Property~0.speed$0 $Property~0.ok$0 $Property~0.cpt$0 $Property~0.acceptable$0)) diff --git a/bench/tasks/cd_extend_t_part.smt2 b/bench/tasks/cd_extend_t_part.smt2 new file mode 100755 index 000000000..18a5f9d55 --- /dev/null +++ b/bench/tasks/cd_extend_t_part.smt2 @@ -0,0 +1,38 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($diff$0 Int) ($speed$0 Int) ($plus$0 Bool) ($minus$0 Bool) ($OK$0 Bool) ($realistic$0 Bool) ($Environment~0.diff$0 Int) ($Environment~0.plus$0 Bool) ($Environment~0.minus$0 Bool) ($Environment~0.ok$0 Bool) ($Sofar~0.X$0 Bool) ($Sofar~0.Sofar$0 Bool) ($Property~0.speed$0 Int) ($Property~0.ok$0 Bool) ($Property~0.cpt$0 Int) ($Property~0.acceptable$0 Bool) ($diff$1 Int) ($speed$1 Int) ($plus$1 Bool) ($minus$1 Bool) ($OK$1 Bool) ($realistic$1 Bool) ($Environment~0.diff$1 Int) ($Environment~0.plus$1 Bool) ($Environment~0.minus$1 Bool) ($Environment~0.ok$1 Bool) ($Sofar~0.X$1 Bool) ($Sofar~0.Sofar$1 Bool) ($Property~0.speed$1 Int) ($Property~0.ok$1 Bool) ($Property~0.cpt$1 Int) ($Property~0.acceptable$1 Bool)) Bool (and (= $realistic$1 $Environment~0.ok$1) (= $OK$1 (=> $Sofar~0.Sofar$1 $Property~0.ok$1)) (= $Environment~0.diff$1 $diff$1) (= $Environment~0.plus$1 $plus$1) (= $Environment~0.minus$1 $minus$1) (= $Environment~0.ok$1 (and (and (and (<= (- 0 4) $Environment~0.diff$1) (<= $Environment~0.diff$1 4)) (ite (ite %init true $Environment~0.plus$0) (>= $Environment~0.diff$1 1) true)) (ite (ite %init false $Environment~0.minus$0) (<= $Environment~0.diff$1 (- 0 1)) true))) (= $Sofar~0.X$1 (and (and $realistic$1 (<= 0 $speed$1)) (< $speed$1 16))) (= $Sofar~0.Sofar$1 (ite %init $Sofar~0.X$1 (and $Sofar~0.X$1 $Sofar~0.Sofar$0))) (= $Property~0.speed$1 $speed$1) (= $Property~0.acceptable$1 (and (<= 8 $Property~0.speed$1) (<= $Property~0.speed$1 12))) (= $Property~0.cpt$1 (ite %init 0 (ite $Property~0.acceptable$1 0 (+ $Property~0.cpt$0 1)))) (= $Property~0.ok$1 (ite %init true (<= $Property~0.cpt$0 7))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $diff$~1 () Int) +(declare-fun $speed$~1 () Int) +(declare-fun $plus$~1 () Bool) +(declare-fun $minus$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $realistic$~1 () Bool) +(declare-fun $Environment~0.diff$~1 () Int) +(declare-fun $Environment~0.plus$~1 () Bool) +(declare-fun $Environment~0.minus$~1 () Bool) +(declare-fun $Environment~0.ok$~1 () Bool) +(declare-fun $Sofar~0.X$~1 () Bool) +(declare-fun $Sofar~0.Sofar$~1 () Bool) +(declare-fun $Property~0.speed$~1 () Int) +(declare-fun $Property~0.ok$~1 () Bool) +(declare-fun $Property~0.cpt$~1 () Int) +(declare-fun $Property~0.acceptable$~1 () Bool) +(declare-fun $diff$0 () Int) +(declare-fun $speed$2 () Int) +(declare-fun $plus$2 () Bool) +(declare-fun $minus$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $realistic$2 () Bool) +(declare-fun $Environment~0.diff$2 () Int) +(declare-fun $Environment~0.plus$2 () Bool) +(declare-fun $Environment~0.minus$2 () Bool) +(declare-fun $Environment~0.ok$2 () Bool) +(declare-fun $Sofar~0.X$2 () Bool) +(declare-fun $Sofar~0.Sofar$2 () Bool) +(declare-fun $Property~0.speed$2 () Int) +(declare-fun $Property~0.ok$2 () Bool) +(declare-fun $Property~0.cpt$2 () Int) +(declare-fun $Property~0.acceptable$2 () Bool) +(assert (and (T %init $diff$~1 $speed$~1 $plus$~1 $minus$~1 $OK$~1 $realistic$~1 $Environment~0.diff$~1 $Environment~0.plus$~1 $Environment~0.minus$~1 $Environment~0.ok$~1 $Sofar~0.X$~1 $Sofar~0.Sofar$~1 $Property~0.speed$~1 $Property~0.ok$~1 $Property~0.cpt$~1 $Property~0.acceptable$~1 $diff$0 $speed$2 $plus$2 $minus$2 $OK$2 $realistic$2 $Environment~0.diff$2 $Environment~0.plus$2 $Environment~0.minus$2 $Environment~0.ok$2 $Sofar~0.X$2 $Sofar~0.Sofar$2 $Property~0.speed$2 $Property~0.ok$2 $Property~0.cpt$2 $Property~0.acceptable$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_01_base_s_part.smt2 b/bench/tasks/cruise_controller_01_base_s_part.smt2 new file mode 100755 index 000000000..98ef44df6 --- /dev/null +++ b/bench/tasks/cruise_controller_01_base_s_part.smt2 @@ -0,0 +1,161 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($onOff$0 Bool) ($decelSet$0 Bool) ($accelResume$0 Bool) ($cancel$0 Bool) ($brakePedal$0 Bool) ($carGear$0 Int) ($carSpeed$0 Real) ($validInputs$0 Bool) ($OK$0 Bool) ($chart_CruiseController_ModeLogic_mode_logic_onOff$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_decel$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_set$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_accel$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 Int) ($chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 Bool) ($chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 Int) ($cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 Bool) ($cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 Bool) ($cruise_controller_CruiseController_ModeLogic_setEvent_Out$0 Bool) ($onOff$1 Bool) ($decelSet$1 Bool) ($accelResume$1 Bool) ($cancel$1 Bool) ($brakePedal$1 Bool) ($carGear$1 Int) ($carSpeed$1 Real) ($validInputs$1 Bool) ($OK$1 Bool) ($chart_CruiseController_ModeLogic_mode_logic_onOff$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_decel$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_set$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_accel$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 Int) ($chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 Bool) ($chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 Int) ($cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 Bool) ($cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 Bool) ($cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 Bool)) Bool (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 (ite %init (ite (<= (ite (>= 0 (ite $accelResume$1 1 0)) 0 (ite $accelResume$1 1 0)) 20) (ite (>= 0 (ite $accelResume$1 1 0)) 0 (ite $accelResume$1 1 0)) 20) (ite (<= (ite (>= 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 20) (ite (>= 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 20))) (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 (ite %init (ite (<= (ite (>= 0 (ite $decelSet$1 1 0)) 0 (ite $decelSet$1 1 0)) 20) (ite (>= 0 (ite $decelSet$1 1 0)) 0 (ite $decelSet$1 1 0)) 20) (ite (<= (ite (>= 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 20) (ite (>= 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 20))) (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 (ite (= $onOff$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 (ite (= (ite (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 20) true false) false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_set$1 (ite (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 (ite (= (ite (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 20) true false) false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 (ite (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 true) (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 (ite %init true (ite $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 false $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0))) (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 (ite %init 0 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0)) (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 (ite $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 (ite $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite (and (not $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1) (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 8))) (ite (and (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1) (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 6))) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1)) $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (and (and (>= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 2) (<= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 8)) (not (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 0)) true false)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (ite (and (>= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 2) (<= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 8)) 0 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1) $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 1)) 1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 1) (and (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 0)) true false) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 1) 0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (and (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 6)) (not (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 0)) true false)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 6)) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 8)) 8 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 8) (and (and (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 8) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 8) (and (and (ite (not (= (ite (= (= (ite (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 false) 0 1) 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 8) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 7) (and (and (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 7) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 4) (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 4) (and (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 1) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 5)) 5 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 4) (and (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 1) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 6)) 6 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 6) (and (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 0) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 6) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 5) (and (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 0) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 5) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$1 (or (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 4) (or (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 5) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 8))) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 8))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 2) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 8)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 7)) 7 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 1)) 1 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 (ite %init false (and (not $accelResume$0) $accelResume$1))) (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 (and (and (and (and (not $cancel$1) (not $brakePedal$1)) (ite (= $carGear$1 3) true false)) (ite (>= $carSpeed$1 (/ 150 10)) true false)) $validInputs$1)) (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 (ite %init false (and (not $decelSet$0) $decelSet$1))) (= $OK$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$1))) +; Universally quantified variables +(declare-fun $onOff$~1 () Bool) +(declare-fun $decelSet$~1 () Bool) +(declare-fun $accelResume$~1 () Bool) +(declare-fun $cancel$~1 () Bool) +(declare-fun $brakePedal$~1 () Bool) +(declare-fun $carGear$~1 () Int) +(declare-fun $carSpeed$~1 () Real) +(declare-fun $validInputs$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$~1 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$~1 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$~1 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$~1 () Bool) +(declare-fun $onOff$0 () Bool) +(declare-fun $decelSet$0 () Bool) +(declare-fun $accelResume$0 () Bool) +(declare-fun $cancel$0 () Bool) +(declare-fun $brakePedal$0 () Bool) +(declare-fun $carGear$0 () Int) +(declare-fun $carSpeed$0 () Real) +(declare-fun $validInputs$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$0 () Bool) +; Existentially quantified variables +; Assertions for universal part of the formula +(assert (T true $onOff$~1 $decelSet$~1 $accelResume$~1 $cancel$~1 $brakePedal$~1 $carGear$~1 $carSpeed$~1 $validInputs$~1 $OK$~1 $chart_CruiseController_ModeLogic_mode_logic_onOff$~1 $chart_CruiseController_ModeLogic_mode_logic_decel$~1 $chart_CruiseController_ModeLogic_mode_logic_set$~1 $chart_CruiseController_ModeLogic_mode_logic_accel$~1 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$~1 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$~1 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$~1 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$~1 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$~1 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$~1 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$~1 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$~1 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$~1 $onOff$0 $decelSet$0 $accelResume$0 $cancel$0 $brakePedal$0 $carGear$0 $carSpeed$0 $validInputs$0 $OK$0 $chart_CruiseController_ModeLogic_mode_logic_onOff$0 $chart_CruiseController_ModeLogic_mode_logic_decel$0 $chart_CruiseController_ModeLogic_mode_logic_set$0 $chart_CruiseController_ModeLogic_mode_logic_accel$0 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$0)) diff --git a/bench/tasks/cruise_controller_01_base_t_part.smt2 b/bench/tasks/cruise_controller_01_base_t_part.smt2 new file mode 100755 index 000000000..293f4a5ea --- /dev/null +++ b/bench/tasks/cruise_controller_01_base_t_part.smt2 @@ -0,0 +1,160 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($onOff$0 Bool) ($decelSet$0 Bool) ($accelResume$0 Bool) ($cancel$0 Bool) ($brakePedal$0 Bool) ($carGear$0 Int) ($carSpeed$0 Real) ($validInputs$0 Bool) ($OK$0 Bool) ($chart_CruiseController_ModeLogic_mode_logic_onOff$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_decel$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_set$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_accel$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 Int) ($chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 Bool) ($chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 Int) ($cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 Bool) ($cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 Bool) ($cruise_controller_CruiseController_ModeLogic_setEvent_Out$0 Bool) ($onOff$1 Bool) ($decelSet$1 Bool) ($accelResume$1 Bool) ($cancel$1 Bool) ($brakePedal$1 Bool) ($carGear$1 Int) ($carSpeed$1 Real) ($validInputs$1 Bool) ($OK$1 Bool) ($chart_CruiseController_ModeLogic_mode_logic_onOff$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_decel$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_set$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_accel$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 Int) ($chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 Bool) ($chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 Int) ($cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 Bool) ($cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 Bool) ($cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 Bool)) Bool (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 (ite %init (ite (<= (ite (>= 0 (ite $accelResume$1 1 0)) 0 (ite $accelResume$1 1 0)) 20) (ite (>= 0 (ite $accelResume$1 1 0)) 0 (ite $accelResume$1 1 0)) 20) (ite (<= (ite (>= 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 20) (ite (>= 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 20))) (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 (ite %init (ite (<= (ite (>= 0 (ite $decelSet$1 1 0)) 0 (ite $decelSet$1 1 0)) 20) (ite (>= 0 (ite $decelSet$1 1 0)) 0 (ite $decelSet$1 1 0)) 20) (ite (<= (ite (>= 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 20) (ite (>= 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 20))) (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 (ite (= $onOff$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 (ite (= (ite (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 20) true false) false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_set$1 (ite (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 (ite (= (ite (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 20) true false) false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 (ite (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 true) (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 (ite %init true (ite $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 false $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0))) (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 (ite %init 0 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0)) (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 (ite $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 (ite $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite (and (not $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1) (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 8))) (ite (and (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1) (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 6))) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1)) $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (and (and (>= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 2) (<= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 8)) (not (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 0)) true false)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (ite (and (>= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 2) (<= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 8)) 0 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1) $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 1)) 1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 1) (and (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 0)) true false) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 1) 0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (and (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 6)) (not (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 0)) true false)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 6)) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 8)) 8 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 8) (and (and (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 8) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 8) (and (and (ite (not (= (ite (= (= (ite (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 false) 0 1) 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 8) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 7) (and (and (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 7) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 4) (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 4) (and (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 1) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 5)) 5 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 4) (and (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 1) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 6)) 6 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 6) (and (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 0) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 6) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 5) (and (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 0) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 5) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$1 (or (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 4) (or (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 5) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 8))) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 8))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 2) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 8)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 7)) 7 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 1)) 1 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 (ite %init false (and (not $accelResume$0) $accelResume$1))) (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 (and (and (and (and (not $cancel$1) (not $brakePedal$1)) (ite (= $carGear$1 3) true false)) (ite (>= $carSpeed$1 (/ 150 10)) true false)) $validInputs$1)) (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 (ite %init false (and (not $decelSet$0) $decelSet$1))) (= $OK$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$1))) +; Universally quantified variables +(declare-fun $onOff$~1 () Bool) +(declare-fun $decelSet$~1 () Bool) +(declare-fun $accelResume$~1 () Bool) +(declare-fun $cancel$~1 () Bool) +(declare-fun $brakePedal$~1 () Bool) +(declare-fun $carGear$~1 () Int) +(declare-fun $carSpeed$~1 () Real) +(declare-fun $validInputs$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$~1 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$~1 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$~1 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$~1 () Bool) +(declare-fun $onOff$0 () Bool) +(declare-fun $decelSet$0 () Bool) +(declare-fun $accelResume$0 () Bool) +(declare-fun $cancel$0 () Bool) +(declare-fun $brakePedal$0 () Bool) +(declare-fun $carGear$0 () Int) +(declare-fun $carSpeed$0 () Real) +(declare-fun $validInputs$0 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$2 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$2 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$2 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$2 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$2 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 () Bool) +; Assertion for existential part of the formula +(assert (and (T true $onOff$~1 $decelSet$~1 $accelResume$~1 $cancel$~1 $brakePedal$~1 $carGear$~1 $carSpeed$~1 $validInputs$~1 $OK$~1 $chart_CruiseController_ModeLogic_mode_logic_onOff$~1 $chart_CruiseController_ModeLogic_mode_logic_decel$~1 $chart_CruiseController_ModeLogic_mode_logic_set$~1 $chart_CruiseController_ModeLogic_mode_logic_accel$~1 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$~1 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$~1 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$~1 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$~1 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$~1 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$~1 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$~1 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$~1 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$~1 $onOff$0 $decelSet$0 $accelResume$0 $cancel$0 $brakePedal$0 $carGear$0 $carSpeed$0 $validInputs$0 $OK$2 $chart_CruiseController_ModeLogic_mode_logic_onOff$2 $chart_CruiseController_ModeLogic_mode_logic_decel$2 $chart_CruiseController_ModeLogic_mode_logic_set$2 $chart_CruiseController_ModeLogic_mode_logic_accel$2 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_01_extend_s_part.smt2 b/bench/tasks/cruise_controller_01_extend_s_part.smt2 new file mode 100755 index 000000000..8412eb265 --- /dev/null +++ b/bench/tasks/cruise_controller_01_extend_s_part.smt2 @@ -0,0 +1,240 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($onOff$0 Bool) ($decelSet$0 Bool) ($accelResume$0 Bool) ($cancel$0 Bool) ($brakePedal$0 Bool) ($carGear$0 Int) ($carSpeed$0 Real) ($validInputs$0 Bool) ($OK$0 Bool) ($chart_CruiseController_ModeLogic_mode_logic_onOff$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_decel$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_set$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_accel$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 Int) ($chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 Bool) ($chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 Int) ($cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 Bool) ($cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 Bool) ($cruise_controller_CruiseController_ModeLogic_setEvent_Out$0 Bool) ($onOff$1 Bool) ($decelSet$1 Bool) ($accelResume$1 Bool) ($cancel$1 Bool) ($brakePedal$1 Bool) ($carGear$1 Int) ($carSpeed$1 Real) ($validInputs$1 Bool) ($OK$1 Bool) ($chart_CruiseController_ModeLogic_mode_logic_onOff$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_decel$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_set$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_accel$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 Int) ($chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 Bool) ($chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 Int) ($cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 Bool) ($cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 Bool) ($cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 Bool)) Bool (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 (ite %init (ite (<= (ite (>= 0 (ite $accelResume$1 1 0)) 0 (ite $accelResume$1 1 0)) 20) (ite (>= 0 (ite $accelResume$1 1 0)) 0 (ite $accelResume$1 1 0)) 20) (ite (<= (ite (>= 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 20) (ite (>= 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 20))) (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 (ite %init (ite (<= (ite (>= 0 (ite $decelSet$1 1 0)) 0 (ite $decelSet$1 1 0)) 20) (ite (>= 0 (ite $decelSet$1 1 0)) 0 (ite $decelSet$1 1 0)) 20) (ite (<= (ite (>= 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 20) (ite (>= 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 20))) (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 (ite (= $onOff$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 (ite (= (ite (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 20) true false) false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_set$1 (ite (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 (ite (= (ite (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 20) true false) false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 (ite (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 true) (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 (ite %init true (ite $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 false $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0))) (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 (ite %init 0 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0)) (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 (ite $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 (ite $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite (and (not $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1) (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 8))) (ite (and (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1) (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 6))) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1)) $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (and (and (>= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 2) (<= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 8)) (not (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 0)) true false)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (ite (and (>= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 2) (<= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 8)) 0 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1) $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 1)) 1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 1) (and (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 0)) true false) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 1) 0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (and (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 6)) (not (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 0)) true false)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 6)) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 8)) 8 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 8) (and (and (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 8) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 8) (and (and (ite (not (= (ite (= (= (ite (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 false) 0 1) 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 8) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 7) (and (and (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 7) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 4) (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 4) (and (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 1) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 5)) 5 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 4) (and (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 1) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 6)) 6 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 6) (and (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 0) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 6) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 5) (and (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 0) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 5) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$1 (or (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 4) (or (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 5) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 8))) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 8))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 2) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 8)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 7)) 7 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 1)) 1 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 (ite %init false (and (not $accelResume$0) $accelResume$1))) (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 (and (and (and (and (not $cancel$1) (not $brakePedal$1)) (ite (= $carGear$1 3) true false)) (ite (>= $carSpeed$1 (/ 150 10)) true false)) $validInputs$1)) (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 (ite %init false (and (not $decelSet$0) $decelSet$1))) (= $OK$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$1))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $onOff$~1 () Bool) +(declare-fun $decelSet$~1 () Bool) +(declare-fun $accelResume$~1 () Bool) +(declare-fun $cancel$~1 () Bool) +(declare-fun $brakePedal$~1 () Bool) +(declare-fun $carGear$~1 () Int) +(declare-fun $carSpeed$~1 () Real) +(declare-fun $validInputs$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$~1 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$~1 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$~1 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$~1 () Bool) +(declare-fun $onOff$0 () Bool) +(declare-fun $decelSet$0 () Bool) +(declare-fun $accelResume$0 () Bool) +(declare-fun $cancel$0 () Bool) +(declare-fun $brakePedal$0 () Bool) +(declare-fun $carGear$0 () Int) +(declare-fun $carSpeed$0 () Real) +(declare-fun $validInputs$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$0 () Bool) +(declare-fun $onOff$1 () Bool) +(declare-fun $decelSet$1 () Bool) +(declare-fun $accelResume$1 () Bool) +(declare-fun $cancel$1 () Bool) +(declare-fun $brakePedal$1 () Bool) +(declare-fun $carGear$1 () Int) +(declare-fun $carSpeed$1 () Real) +(declare-fun $validInputs$1 () Bool) +(declare-fun $OK$1 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 () Bool) +; Assertions for universal part of the formula +(assert (T %init $onOff$~1 $decelSet$~1 $accelResume$~1 $cancel$~1 $brakePedal$~1 $carGear$~1 $carSpeed$~1 $validInputs$~1 $OK$~1 $chart_CruiseController_ModeLogic_mode_logic_onOff$~1 $chart_CruiseController_ModeLogic_mode_logic_decel$~1 $chart_CruiseController_ModeLogic_mode_logic_set$~1 $chart_CruiseController_ModeLogic_mode_logic_accel$~1 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$~1 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$~1 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$~1 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$~1 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$~1 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$~1 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$~1 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$~1 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$~1 $onOff$0 $decelSet$0 $accelResume$0 $cancel$0 $brakePedal$0 $carGear$0 $carSpeed$0 $validInputs$0 $OK$0 $chart_CruiseController_ModeLogic_mode_logic_onOff$0 $chart_CruiseController_ModeLogic_mode_logic_decel$0 $chart_CruiseController_ModeLogic_mode_logic_set$0 $chart_CruiseController_ModeLogic_mode_logic_accel$0 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$0)) +(assert $OK$0) +(assert (T false $onOff$0 $decelSet$0 $accelResume$0 $cancel$0 $brakePedal$0 $carGear$0 $carSpeed$0 $validInputs$0 $OK$0 $chart_CruiseController_ModeLogic_mode_logic_onOff$0 $chart_CruiseController_ModeLogic_mode_logic_decel$0 $chart_CruiseController_ModeLogic_mode_logic_set$0 $chart_CruiseController_ModeLogic_mode_logic_accel$0 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$0 $onOff$1 $decelSet$1 $accelResume$1 $cancel$1 $brakePedal$1 $carGear$1 $carSpeed$1 $validInputs$1 $OK$1 $chart_CruiseController_ModeLogic_mode_logic_onOff$1 $chart_CruiseController_ModeLogic_mode_logic_decel$1 $chart_CruiseController_ModeLogic_mode_logic_set$1 $chart_CruiseController_ModeLogic_mode_logic_accel$1 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1)) diff --git a/bench/tasks/cruise_controller_01_extend_t_part.smt2 b/bench/tasks/cruise_controller_01_extend_t_part.smt2 new file mode 100755 index 000000000..8fed00efe --- /dev/null +++ b/bench/tasks/cruise_controller_01_extend_t_part.smt2 @@ -0,0 +1,238 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($onOff$0 Bool) ($decelSet$0 Bool) ($accelResume$0 Bool) ($cancel$0 Bool) ($brakePedal$0 Bool) ($carGear$0 Int) ($carSpeed$0 Real) ($validInputs$0 Bool) ($OK$0 Bool) ($chart_CruiseController_ModeLogic_mode_logic_onOff$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_decel$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_set$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_accel$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 Int) ($chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 Bool) ($chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 Int) ($cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 Bool) ($cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 Bool) ($cruise_controller_CruiseController_ModeLogic_setEvent_Out$0 Bool) ($onOff$1 Bool) ($decelSet$1 Bool) ($accelResume$1 Bool) ($cancel$1 Bool) ($brakePedal$1 Bool) ($carGear$1 Int) ($carSpeed$1 Real) ($validInputs$1 Bool) ($OK$1 Bool) ($chart_CruiseController_ModeLogic_mode_logic_onOff$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_decel$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_set$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_accel$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 Int) ($chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 Bool) ($chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 Int) ($cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 Bool) ($cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 Bool) ($cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 Bool)) Bool (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 (ite %init (ite (<= (ite (>= 0 (ite $accelResume$1 1 0)) 0 (ite $accelResume$1 1 0)) 20) (ite (>= 0 (ite $accelResume$1 1 0)) 0 (ite $accelResume$1 1 0)) 20) (ite (<= (ite (>= 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 20) (ite (>= 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 20))) (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 (ite %init (ite (<= (ite (>= 0 (ite $decelSet$1 1 0)) 0 (ite $decelSet$1 1 0)) 20) (ite (>= 0 (ite $decelSet$1 1 0)) 0 (ite $decelSet$1 1 0)) 20) (ite (<= (ite (>= 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 20) (ite (>= 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 20))) (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 (ite (= $onOff$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 (ite (= (ite (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 20) true false) false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_set$1 (ite (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 (ite (= (ite (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 20) true false) false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 (ite (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 true) (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 (ite %init true (ite $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 false $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0))) (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 (ite %init 0 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0)) (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 (ite $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 (ite $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite (and (not $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1) (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 8))) (ite (and (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1) (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 6))) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1)) $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (and (and (>= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 2) (<= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 8)) (not (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 0)) true false)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (ite (and (>= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 2) (<= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 8)) 0 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1) $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 1)) 1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 1) (and (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 0)) true false) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 1) 0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (and (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 6)) (not (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 0)) true false)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 6)) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 8)) 8 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 8) (and (and (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 8) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 8) (and (and (ite (not (= (ite (= (= (ite (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 false) 0 1) 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 8) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 7) (and (and (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 7) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 4) (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 4) (and (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 1) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 5)) 5 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 4) (and (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 1) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 6)) 6 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 6) (and (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 0) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 6) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 5) (and (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 0) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 5) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$1 (or (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 4) (or (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 5) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 8))) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 8))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 2) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 8)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 7)) 7 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 1)) 1 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 (ite %init false (and (not $accelResume$0) $accelResume$1))) (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 (and (and (and (and (not $cancel$1) (not $brakePedal$1)) (ite (= $carGear$1 3) true false)) (ite (>= $carSpeed$1 (/ 150 10)) true false)) $validInputs$1)) (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 (ite %init false (and (not $decelSet$0) $decelSet$1))) (= $OK$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$1))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $onOff$~1 () Bool) +(declare-fun $decelSet$~1 () Bool) +(declare-fun $accelResume$~1 () Bool) +(declare-fun $cancel$~1 () Bool) +(declare-fun $brakePedal$~1 () Bool) +(declare-fun $carGear$~1 () Int) +(declare-fun $carSpeed$~1 () Real) +(declare-fun $validInputs$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$~1 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$~1 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$~1 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$~1 () Bool) +(declare-fun $onOff$0 () Bool) +(declare-fun $decelSet$0 () Bool) +(declare-fun $accelResume$0 () Bool) +(declare-fun $cancel$0 () Bool) +(declare-fun $brakePedal$0 () Bool) +(declare-fun $carGear$0 () Int) +(declare-fun $carSpeed$0 () Real) +(declare-fun $validInputs$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$0 () Bool) +(declare-fun $onOff$1 () Bool) +(declare-fun $decelSet$1 () Bool) +(declare-fun $accelResume$1 () Bool) +(declare-fun $cancel$1 () Bool) +(declare-fun $brakePedal$1 () Bool) +(declare-fun $carGear$1 () Int) +(declare-fun $carSpeed$1 () Real) +(declare-fun $validInputs$1 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$3 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$3 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$3 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$3 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$3 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$3 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$3 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$3 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$3 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$3 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$3 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$3 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$3 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$3 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$3 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$3 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$3 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$3 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$3 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$3 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$3 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$3 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$3 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$3 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$3 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$3 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$3 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$3 () Bool) +; Assertion for existential part of the formula +(assert (and (T false $onOff$0 $decelSet$0 $accelResume$0 $cancel$0 $brakePedal$0 $carGear$0 $carSpeed$0 $validInputs$0 $OK$0 $chart_CruiseController_ModeLogic_mode_logic_onOff$0 $chart_CruiseController_ModeLogic_mode_logic_decel$0 $chart_CruiseController_ModeLogic_mode_logic_set$0 $chart_CruiseController_ModeLogic_mode_logic_accel$0 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$0 $onOff$1 $decelSet$1 $accelResume$1 $cancel$1 $brakePedal$1 $carGear$1 $carSpeed$1 $validInputs$1 $OK$3 $chart_CruiseController_ModeLogic_mode_logic_onOff$3 $chart_CruiseController_ModeLogic_mode_logic_decel$3 $chart_CruiseController_ModeLogic_mode_logic_set$3 $chart_CruiseController_ModeLogic_mode_logic_accel$3 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$3 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_02$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$3 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$3 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$3 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$3 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$3 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$3 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$3 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$3 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$3) $OK$3)) diff --git a/bench/tasks/cruise_controller_02_base_s_part.smt2 b/bench/tasks/cruise_controller_02_base_s_part.smt2 new file mode 100755 index 000000000..7e73b24dc --- /dev/null +++ b/bench/tasks/cruise_controller_02_base_s_part.smt2 @@ -0,0 +1,160 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($onOff$0 Bool) ($decelSet$0 Bool) ($accelResume$0 Bool) ($cancel$0 Bool) ($brakePedal$0 Bool) ($carGear$0 Int) ($carSpeed$0 Real) ($validInputs$0 Bool) ($OK$0 Bool) ($chart_CruiseController_ModeLogic_mode_logic_onOff$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_decel$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_set$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_accel$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 Int) ($chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 Bool) ($chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 Int) ($cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 Bool) ($cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 Bool) ($cruise_controller_CruiseController_ModeLogic_setEvent_Out$0 Bool) ($onOff$1 Bool) ($decelSet$1 Bool) ($accelResume$1 Bool) ($cancel$1 Bool) ($brakePedal$1 Bool) ($carGear$1 Int) ($carSpeed$1 Real) ($validInputs$1 Bool) ($OK$1 Bool) ($chart_CruiseController_ModeLogic_mode_logic_onOff$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_decel$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_set$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_accel$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 Int) ($chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 Bool) ($chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 Int) ($cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 Bool) ($cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 Bool) ($cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 Bool)) Bool (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 (ite %init (ite (<= (ite (>= 0 (ite $accelResume$1 1 0)) 0 (ite $accelResume$1 1 0)) 20) (ite (>= 0 (ite $accelResume$1 1 0)) 0 (ite $accelResume$1 1 0)) 20) (ite (<= (ite (>= 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 20) (ite (>= 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 20))) (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 (ite %init (ite (<= (ite (>= 0 (ite $decelSet$1 1 0)) 0 (ite $decelSet$1 1 0)) 20) (ite (>= 0 (ite $decelSet$1 1 0)) 0 (ite $decelSet$1 1 0)) 20) (ite (<= (ite (>= 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 20) (ite (>= 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 20))) (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 (ite (= $onOff$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 (ite (= (ite (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 20) true false) false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_set$1 (ite (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 (ite (= (ite (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 20) true false) false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 (ite (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 true) (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 (ite %init true (ite $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 false $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0))) (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 (ite %init 0 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0)) (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 (ite $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 (ite $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite (and (not $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1) (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 8))) (ite (and (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1) (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 6))) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1)) $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (and (and (>= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 2) (<= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 8)) (not (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 0)) true false)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (ite (and (>= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 2) (<= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 8)) 0 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1) $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 1)) 1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 1) (and (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 0)) true false) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 1) 0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (and (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 6)) (not (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 0)) true false)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 6)) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 8)) 8 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 8) (and (and (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 8) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 8) (and (and (ite (not (= (ite (= (= (ite (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 false) 0 1) 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 8) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 7) (and (and (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 7) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 4) (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 4) (and (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 1) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 5)) 5 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 4) (and (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 1) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 6)) 6 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 6) (and (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 0) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 6) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 5) (and (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 0) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 5) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$1 (or (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 4) (or (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 5) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 8))) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 8))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 2) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 8)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 7)) 7 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 1)) 1 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 (ite %init false (and (not $accelResume$0) $accelResume$1))) (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 (and (and (and (and (not $cancel$1) (not $brakePedal$1)) (ite (= $carGear$1 3) true false)) (ite (>= $carSpeed$1 (/ 150 10)) true false)) $validInputs$1)) (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 (ite %init false (and (not $decelSet$0) $decelSet$1))) (= $OK$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$1))) +; Universally quantified variables +(declare-fun $onOff$~1 () Bool) +(declare-fun $decelSet$~1 () Bool) +(declare-fun $accelResume$~1 () Bool) +(declare-fun $cancel$~1 () Bool) +(declare-fun $brakePedal$~1 () Bool) +(declare-fun $carGear$~1 () Int) +(declare-fun $carSpeed$~1 () Real) +(declare-fun $validInputs$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$~1 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$~1 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$~1 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$~1 () Bool) +(declare-fun $onOff$0 () Bool) +(declare-fun $decelSet$0 () Bool) +(declare-fun $accelResume$0 () Bool) +(declare-fun $cancel$0 () Bool) +(declare-fun $brakePedal$0 () Bool) +(declare-fun $carGear$0 () Int) +(declare-fun $carSpeed$0 () Real) +(declare-fun $validInputs$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$0 () Bool) +; Assertions for universal part of the formula +(assert (T true $onOff$~1 $decelSet$~1 $accelResume$~1 $cancel$~1 $brakePedal$~1 $carGear$~1 $carSpeed$~1 $validInputs$~1 $OK$~1 $chart_CruiseController_ModeLogic_mode_logic_onOff$~1 $chart_CruiseController_ModeLogic_mode_logic_decel$~1 $chart_CruiseController_ModeLogic_mode_logic_set$~1 $chart_CruiseController_ModeLogic_mode_logic_accel$~1 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$~1 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$~1 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$~1 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$~1 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$~1 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$~1 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$~1 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$~1 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$~1 $onOff$0 $decelSet$0 $accelResume$0 $cancel$0 $brakePedal$0 $carGear$0 $carSpeed$0 $validInputs$0 $OK$0 $chart_CruiseController_ModeLogic_mode_logic_onOff$0 $chart_CruiseController_ModeLogic_mode_logic_decel$0 $chart_CruiseController_ModeLogic_mode_logic_set$0 $chart_CruiseController_ModeLogic_mode_logic_accel$0 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$0)) diff --git a/bench/tasks/cruise_controller_02_base_t_part.smt2 b/bench/tasks/cruise_controller_02_base_t_part.smt2 new file mode 100755 index 000000000..8c588b4cc --- /dev/null +++ b/bench/tasks/cruise_controller_02_base_t_part.smt2 @@ -0,0 +1,161 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($onOff$0 Bool) ($decelSet$0 Bool) ($accelResume$0 Bool) ($cancel$0 Bool) ($brakePedal$0 Bool) ($carGear$0 Int) ($carSpeed$0 Real) ($validInputs$0 Bool) ($OK$0 Bool) ($chart_CruiseController_ModeLogic_mode_logic_onOff$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_decel$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_set$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_accel$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 Int) ($chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 Bool) ($chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 Int) ($cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 Bool) ($cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 Bool) ($cruise_controller_CruiseController_ModeLogic_setEvent_Out$0 Bool) ($onOff$1 Bool) ($decelSet$1 Bool) ($accelResume$1 Bool) ($cancel$1 Bool) ($brakePedal$1 Bool) ($carGear$1 Int) ($carSpeed$1 Real) ($validInputs$1 Bool) ($OK$1 Bool) ($chart_CruiseController_ModeLogic_mode_logic_onOff$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_decel$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_set$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_accel$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 Int) ($chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 Bool) ($chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 Int) ($cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 Bool) ($cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 Bool) ($cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 Bool)) Bool (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 (ite %init (ite (<= (ite (>= 0 (ite $accelResume$1 1 0)) 0 (ite $accelResume$1 1 0)) 20) (ite (>= 0 (ite $accelResume$1 1 0)) 0 (ite $accelResume$1 1 0)) 20) (ite (<= (ite (>= 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 20) (ite (>= 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 20))) (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 (ite %init (ite (<= (ite (>= 0 (ite $decelSet$1 1 0)) 0 (ite $decelSet$1 1 0)) 20) (ite (>= 0 (ite $decelSet$1 1 0)) 0 (ite $decelSet$1 1 0)) 20) (ite (<= (ite (>= 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 20) (ite (>= 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 20))) (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 (ite (= $onOff$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 (ite (= (ite (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 20) true false) false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_set$1 (ite (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 (ite (= (ite (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 20) true false) false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 (ite (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 true) (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 (ite %init true (ite $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 false $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0))) (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 (ite %init 0 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0)) (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 (ite $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 (ite $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite (and (not $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1) (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 8))) (ite (and (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1) (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 6))) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1)) $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (and (and (>= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 2) (<= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 8)) (not (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 0)) true false)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (ite (and (>= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 2) (<= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 8)) 0 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1) $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 1)) 1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 1) (and (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 0)) true false) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 1) 0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (and (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 6)) (not (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 0)) true false)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 6)) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 8)) 8 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 8) (and (and (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 8) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 8) (and (and (ite (not (= (ite (= (= (ite (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 false) 0 1) 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 8) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 7) (and (and (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 7) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 4) (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 4) (and (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 1) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 5)) 5 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 4) (and (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 1) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 6)) 6 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 6) (and (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 0) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 6) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 5) (and (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 0) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 5) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$1 (or (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 4) (or (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 5) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 8))) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 8))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 2) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 8)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 7)) 7 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 1)) 1 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 (ite %init false (and (not $accelResume$0) $accelResume$1))) (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 (and (and (and (and (not $cancel$1) (not $brakePedal$1)) (ite (= $carGear$1 3) true false)) (ite (>= $carSpeed$1 (/ 150 10)) true false)) $validInputs$1)) (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 (ite %init false (and (not $decelSet$0) $decelSet$1))) (= $OK$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$1))) +; Universally quantified variables +(declare-fun $onOff$~1 () Bool) +(declare-fun $decelSet$~1 () Bool) +(declare-fun $accelResume$~1 () Bool) +(declare-fun $cancel$~1 () Bool) +(declare-fun $brakePedal$~1 () Bool) +(declare-fun $carGear$~1 () Int) +(declare-fun $carSpeed$~1 () Real) +(declare-fun $validInputs$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$~1 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$~1 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$~1 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$~1 () Bool) +(declare-fun $onOff$0 () Bool) +(declare-fun $decelSet$0 () Bool) +(declare-fun $accelResume$0 () Bool) +(declare-fun $cancel$0 () Bool) +(declare-fun $brakePedal$0 () Bool) +(declare-fun $carGear$0 () Int) +(declare-fun $carSpeed$0 () Real) +(declare-fun $validInputs$0 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$2 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$2 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$2 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$2 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$2 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2 () Bool) + +; Assertion for existential part of the formula +(assert (and (T true $onOff$~1 $decelSet$~1 $accelResume$~1 $cancel$~1 $brakePedal$~1 $carGear$~1 $carSpeed$~1 $validInputs$~1 $OK$~1 $chart_CruiseController_ModeLogic_mode_logic_onOff$~1 $chart_CruiseController_ModeLogic_mode_logic_decel$~1 $chart_CruiseController_ModeLogic_mode_logic_set$~1 $chart_CruiseController_ModeLogic_mode_logic_accel$~1 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$~1 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$~1 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$~1 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$~1 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$~1 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$~1 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$~1 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$~1 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$~1 $onOff$0 $decelSet$0 $accelResume$0 $cancel$0 $brakePedal$0 $carGear$0 $carSpeed$0 $validInputs$0 $OK$2 $chart_CruiseController_ModeLogic_mode_logic_onOff$2 $chart_CruiseController_ModeLogic_mode_logic_decel$2 $chart_CruiseController_ModeLogic_mode_logic_set$2 $chart_CruiseController_ModeLogic_mode_logic_accel$2 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$2 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$2 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$2 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$2 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$2 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$2 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$2 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$2 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$2 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$2 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_02_extend_s_part.smt2 b/bench/tasks/cruise_controller_02_extend_s_part.smt2 new file mode 100755 index 000000000..5c28b866c --- /dev/null +++ b/bench/tasks/cruise_controller_02_extend_s_part.smt2 @@ -0,0 +1,240 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($onOff$0 Bool) ($decelSet$0 Bool) ($accelResume$0 Bool) ($cancel$0 Bool) ($brakePedal$0 Bool) ($carGear$0 Int) ($carSpeed$0 Real) ($validInputs$0 Bool) ($OK$0 Bool) ($chart_CruiseController_ModeLogic_mode_logic_onOff$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_decel$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_set$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_accel$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 Int) ($chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 Bool) ($chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 Int) ($cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 Bool) ($cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 Bool) ($cruise_controller_CruiseController_ModeLogic_setEvent_Out$0 Bool) ($onOff$1 Bool) ($decelSet$1 Bool) ($accelResume$1 Bool) ($cancel$1 Bool) ($brakePedal$1 Bool) ($carGear$1 Int) ($carSpeed$1 Real) ($validInputs$1 Bool) ($OK$1 Bool) ($chart_CruiseController_ModeLogic_mode_logic_onOff$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_decel$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_set$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_accel$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 Int) ($chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 Bool) ($chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 Int) ($cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 Bool) ($cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 Bool) ($cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 Bool)) Bool (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 (ite %init (ite (<= (ite (>= 0 (ite $accelResume$1 1 0)) 0 (ite $accelResume$1 1 0)) 20) (ite (>= 0 (ite $accelResume$1 1 0)) 0 (ite $accelResume$1 1 0)) 20) (ite (<= (ite (>= 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 20) (ite (>= 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 20))) (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 (ite %init (ite (<= (ite (>= 0 (ite $decelSet$1 1 0)) 0 (ite $decelSet$1 1 0)) 20) (ite (>= 0 (ite $decelSet$1 1 0)) 0 (ite $decelSet$1 1 0)) 20) (ite (<= (ite (>= 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 20) (ite (>= 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 20))) (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 (ite (= $onOff$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 (ite (= (ite (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 20) true false) false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_set$1 (ite (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 (ite (= (ite (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 20) true false) false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 (ite (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 true) (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 (ite %init true (ite $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 false $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0))) (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 (ite %init 0 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0)) (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 (ite $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 (ite $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite (and (not $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1) (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 8))) (ite (and (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1) (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 6))) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1)) $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (and (and (>= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 2) (<= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 8)) (not (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 0)) true false)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (ite (and (>= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 2) (<= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 8)) 0 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1) $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 1)) 1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 1) (and (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 0)) true false) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 1) 0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (and (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 6)) (not (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 0)) true false)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 6)) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 8)) 8 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 8) (and (and (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 8) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 8) (and (and (ite (not (= (ite (= (= (ite (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 false) 0 1) 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 8) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 7) (and (and (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 7) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 4) (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 4) (and (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 1) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 5)) 5 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 4) (and (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 1) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 6)) 6 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 6) (and (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 0) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 6) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 5) (and (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 0) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 5) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$1 (or (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 4) (or (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 5) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 8))) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 8))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 2) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 8)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 7)) 7 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 1)) 1 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 (ite %init false (and (not $accelResume$0) $accelResume$1))) (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 (and (and (and (and (not $cancel$1) (not $brakePedal$1)) (ite (= $carGear$1 3) true false)) (ite (>= $carSpeed$1 (/ 150 10)) true false)) $validInputs$1)) (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 (ite %init false (and (not $decelSet$0) $decelSet$1))) (= $OK$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$1))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $onOff$~1 () Bool) +(declare-fun $decelSet$~1 () Bool) +(declare-fun $accelResume$~1 () Bool) +(declare-fun $cancel$~1 () Bool) +(declare-fun $brakePedal$~1 () Bool) +(declare-fun $carGear$~1 () Int) +(declare-fun $carSpeed$~1 () Real) +(declare-fun $validInputs$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$~1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$~1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$~1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$~1 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$~1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$~1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$~1 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$~1 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$~1 () Bool) +(declare-fun $onOff$0 () Bool) +(declare-fun $decelSet$0 () Bool) +(declare-fun $accelResume$0 () Bool) +(declare-fun $cancel$0 () Bool) +(declare-fun $brakePedal$0 () Bool) +(declare-fun $carGear$0 () Int) +(declare-fun $carSpeed$0 () Real) +(declare-fun $validInputs$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$0 () Bool) +(declare-fun $onOff$1 () Bool) +(declare-fun $decelSet$1 () Bool) +(declare-fun $accelResume$1 () Bool) +(declare-fun $cancel$1 () Bool) +(declare-fun $brakePedal$1 () Bool) +(declare-fun $carGear$1 () Int) +(declare-fun $carSpeed$1 () Real) +(declare-fun $validInputs$1 () Bool) +(declare-fun $OK$1 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 () Bool) +; Assertions for universal part of the formula +(assert (T %init $onOff$~1 $decelSet$~1 $accelResume$~1 $cancel$~1 $brakePedal$~1 $carGear$~1 $carSpeed$~1 $validInputs$~1 $OK$~1 $chart_CruiseController_ModeLogic_mode_logic_onOff$~1 $chart_CruiseController_ModeLogic_mode_logic_decel$~1 $chart_CruiseController_ModeLogic_mode_logic_set$~1 $chart_CruiseController_ModeLogic_mode_logic_accel$~1 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$~1 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$~1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$~1 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$~1 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$~1 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$~1 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$~1 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$~1 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$~1 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$~1 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$~1 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$~1 $onOff$0 $decelSet$0 $accelResume$0 $cancel$0 $brakePedal$0 $carGear$0 $carSpeed$0 $validInputs$0 $OK$0 $chart_CruiseController_ModeLogic_mode_logic_onOff$0 $chart_CruiseController_ModeLogic_mode_logic_decel$0 $chart_CruiseController_ModeLogic_mode_logic_set$0 $chart_CruiseController_ModeLogic_mode_logic_accel$0 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$0)) +(assert $OK$0) +(assert (T false $onOff$0 $decelSet$0 $accelResume$0 $cancel$0 $brakePedal$0 $carGear$0 $carSpeed$0 $validInputs$0 $OK$0 $chart_CruiseController_ModeLogic_mode_logic_onOff$0 $chart_CruiseController_ModeLogic_mode_logic_decel$0 $chart_CruiseController_ModeLogic_mode_logic_set$0 $chart_CruiseController_ModeLogic_mode_logic_accel$0 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$0 $onOff$1 $decelSet$1 $accelResume$1 $cancel$1 $brakePedal$1 $carGear$1 $carSpeed$1 $validInputs$1 $OK$1 $chart_CruiseController_ModeLogic_mode_logic_onOff$1 $chart_CruiseController_ModeLogic_mode_logic_decel$1 $chart_CruiseController_ModeLogic_mode_logic_set$1 $chart_CruiseController_ModeLogic_mode_logic_accel$1 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1)) diff --git a/bench/tasks/cruise_controller_02_extend_t_part.smt2 b/bench/tasks/cruise_controller_02_extend_t_part.smt2 new file mode 100755 index 000000000..f6f7d3ff5 --- /dev/null +++ b/bench/tasks/cruise_controller_02_extend_t_part.smt2 @@ -0,0 +1,162 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($onOff$0 Bool) ($decelSet$0 Bool) ($accelResume$0 Bool) ($cancel$0 Bool) ($brakePedal$0 Bool) ($carGear$0 Int) ($carSpeed$0 Real) ($validInputs$0 Bool) ($OK$0 Bool) ($chart_CruiseController_ModeLogic_mode_logic_onOff$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_decel$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_set$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_accel$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 Int) ($chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 Bool) ($chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 Int) ($chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 Int) ($cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 Bool) ($cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 Bool) ($cruise_controller_CruiseController_ModeLogic_setEvent_Out$0 Bool) ($onOff$1 Bool) ($decelSet$1 Bool) ($accelResume$1 Bool) ($cancel$1 Bool) ($brakePedal$1 Bool) ($carGear$1 Int) ($carSpeed$1 Real) ($validInputs$1 Bool) ($OK$1 Bool) ($chart_CruiseController_ModeLogic_mode_logic_onOff$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_decel$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_set$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_accel$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 Int) ($chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 Bool) ($rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 Bool) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 Int) ($rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 Int) ($rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 Bool) ($chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 Int) ($chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 Int) ($cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 Int) ($cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 Bool) ($cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 Bool) ($cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 Bool)) Bool (and (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 (ite %init (ite (<= (ite (>= 0 (ite $accelResume$1 1 0)) 0 (ite $accelResume$1 1 0)) 20) (ite (>= 0 (ite $accelResume$1 1 0)) 0 (ite $accelResume$1 1 0)) 20) (ite (<= (ite (>= 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 20) (ite (>= 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 0 (ite $accelResume$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 1) 0)) 20))) (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 (ite %init (ite (<= (ite (>= 0 (ite $decelSet$1 1 0)) 0 (ite $decelSet$1 1 0)) 20) (ite (>= 0 (ite $decelSet$1 1 0)) 0 (ite $decelSet$1 1 0)) 20) (ite (<= (ite (>= 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 20) (ite (>= 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 0 (ite $decelSet$1 (+ $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 1) 0)) 20))) (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 (ite (= $onOff$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 (ite (= (ite (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$1 20) true false) false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_set$1 (ite (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 (ite (= (ite (= $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$1 20) true false) false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 (ite (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 false) 0 1)) (= $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 true) (= $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 (ite %init true (ite $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 false $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0))) (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 (ite %init 0 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0)) (= $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$1 (ite $chart_CruiseController_ModeLogic_mode_logic____wakeup___$1 (ite $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite (and (not $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1) (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 8))) (ite (and (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1) (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 6))) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1)) $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (and (and (>= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 2) (<= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 8)) (not (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 0)) true false)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (ite (and (>= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 2) (<= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 8)) 0 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1) $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1 1)) 1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 1) (and (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_onOff$1 0)) true false) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 1) 0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (and (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 6)) (not (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 0)) true false)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1 6)) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 8)) 8 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 8) (and (and (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1 8) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 8) (and (and (ite (not (= (ite (= (= (ite (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 false) 0 1) 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1 8) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 7) (and (and (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1) false) 0 1) 0)) true false) (ite (not (= (ite (= (= $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$1 1) false) 0 1) 0)) true false)) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1 7) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 4) (= $chart_CruiseController_ModeLogic_mode_logic_set$1 1))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 4) (and (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 1) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1 5)) 5 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 4) (and (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 1) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1 4) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1 6)) 6 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 6) (and (= $chart_CruiseController_ModeLogic_mode_logic_decel$1 0) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1 (or $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1 6) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (and (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 5) (and (= $chart_CruiseController_ModeLogic_mode_logic_accel$1 0) (not $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$1)))) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (ite (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1 5) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$1)) (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$1 (ite $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$1 (ite (not (= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1 4)) 4 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1) $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$1 (or (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 4) (or (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 5) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 6))) 3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 3) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 6))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 3) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 6)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1 4)) 4 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 (ite (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 8))) 2 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (and (not (and (>= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 2) (<= $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$1 8))) (and (>= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 2) (<= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 8)))) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$1 (ite $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$1 (ite (not (= $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1 7)) 7 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1) $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$1)) (= $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$1 (ite (not (= $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1 1)) 1 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$1)) (= $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$1 (ite %init false (and (not $accelResume$0) $accelResume$1))) (= $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$1 (and (and (and (and (not $cancel$1) (not $brakePedal$1)) (ite (= $carGear$1 3) true false)) (ite (>= $carSpeed$1 (/ 150 10)) true false)) $validInputs$1)) (= $cruise_controller_CruiseController_ModeLogic_setEvent_Out$1 (ite %init false (and (not $decelSet$0) $decelSet$1))) (= $OK$1 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$1))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $onOff$0 () Bool) +(declare-fun $decelSet$0 () Bool) +(declare-fun $accelResume$0 () Bool) +(declare-fun $cancel$0 () Bool) +(declare-fun $brakePedal$0 () Bool) +(declare-fun $carGear$0 () Int) +(declare-fun $carSpeed$0 () Real) +(declare-fun $validInputs$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$0 () Bool) +(declare-fun $onOff$3 () Bool) +(declare-fun $decelSet$3 () Bool) +(declare-fun $accelResume$3 () Bool) +(declare-fun $cancel$3 () Bool) +(declare-fun $brakePedal$3 () Bool) +(declare-fun $carGear$3 () Int) +(declare-fun $carSpeed$3 () Real) +(declare-fun $validInputs$3 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_onOff$3 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_decel$3 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_set$3 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_accel$3 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$3 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic____wakeup___$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$3 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$3 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$3 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$3 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$3 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$3 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$3 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$3 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$3 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$3 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$3 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$3 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$3 () Bool) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$3 () Bool) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$3 () Int) +(declare-fun $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$3 () Int) +(declare-fun $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$3 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$3 () Bool) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$3 () Int) +(declare-fun $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$3 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$3 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$3 () Int) +(declare-fun $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$3 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$3 () Bool) +(declare-fun $cruise_controller_CruiseController_ModeLogic_setEvent_Out$3 () Bool) + +; Assertion for existential part of the formula +(assert (and (T false $onOff$0 $decelSet$0 $accelResume$0 $cancel$0 $brakePedal$0 $carGear$0 $carSpeed$0 $validInputs$0 $OK$0 $chart_CruiseController_ModeLogic_mode_logic_onOff$0 $chart_CruiseController_ModeLogic_mode_logic_decel$0 $chart_CruiseController_ModeLogic_mode_logic_set$0 $chart_CruiseController_ModeLogic_mode_logic_accel$0 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$0 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$0 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$0 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$0 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$0 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$0 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$0 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$0 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$0 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$0 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$0 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$0 $onOff$3 $decelSet$3 $accelResume$3 $cancel$3 $brakePedal$3 $carGear$3 $carSpeed$3 $validInputs$3 $OK$3 $chart_CruiseController_ModeLogic_mode_logic_onOff$3 $chart_CruiseController_ModeLogic_mode_logic_decel$3 $chart_CruiseController_ModeLogic_mode_logic_set$3 $chart_CruiseController_ModeLogic_mode_logic_accel$3 $chart_CruiseController_ModeLogic_mode_logic_safetyCondition$3 $chart_CruiseController_ModeLogic_mode_logic____wakeup___$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_2_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_1$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_1$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_4_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_5_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_2$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_2$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_6_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_7_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_3$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_complete_3$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_8_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_9_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_4$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_10_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_15_states___root$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root2$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_02$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root2$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root1$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_01$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rltCheckEntryStateConsistency_01$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root1$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_1_states___root$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_fired_0$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_Active_rlt_state_3_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_2_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_1$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_1$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_5_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_2$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_2$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_6_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_7_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_fired_3$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_complete_3$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_9_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_On_rlt_state_10_states___root$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_1_states___root$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_fired_0$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_On_rlt_state_3_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_0$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_1_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_fired_1$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_complete_1$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_3_states___root$3 $rlt_eval_CruiseController_ModeLogic_mode_logic_rlt_state_4_states___root$3 $rlt_enter_CruiseController_ModeLogic_mode_logic_rlt_state_2_states___root$3 $chart_CruiseController_ModeLogic_mode_logic_rlt_evtInitStep$3 $chart_CruiseController_ModeLogic_mode_logic_begin_state_states___root$3 $chart_CruiseController_ModeLogic_mode_logic_final_state_states___root$3 $cruise_controller_CruiseController_ModeLogic_DelayOnsetAccel_Bounded_Count_Out$3 $cruise_controller_CruiseController_ModeLogic_DelayOnsetDecel_Bounded_Count_Out$3 $cruise_controller_CruiseController_ModeLogic_resumeEvent_Out$3 $cruise_controller_CruiseController_ModeLogic_safetyCondition_safetyCondition$3 $cruise_controller_CruiseController_ModeLogic_setEvent_Out$3) $OK$3)) diff --git a/bench/tasks/cruise_controller_06_base_s_part.smt2 b/bench/tasks/cruise_controller_06_base_s_part.smt2 new file mode 100755 index 000000000..c569be0d9 --- /dev/null +++ b/bench/tasks/cruise_controller_06_base_s_part.smt2 @@ -0,0 +1,9 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($cruiseThrottle$0 Real) ($OK$0 Bool) ($cruiseThrottle$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (and (>= $cruiseThrottle$1 (/ 0 10)) (<= $cruiseThrottle$1 (/ 1000 10))))) +; Universally quantified variables +(declare-fun $cruiseThrottle$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $cruiseThrottle$0 () Real) +(declare-fun $OK$0 () Bool) +(assert (T true $cruiseThrottle$~1 $OK$~1 $cruiseThrottle$0 $OK$0)) diff --git a/bench/tasks/cruise_controller_06_base_t_part.smt2 b/bench/tasks/cruise_controller_06_base_t_part.smt2 new file mode 100755 index 000000000..eaf956d4a --- /dev/null +++ b/bench/tasks/cruise_controller_06_base_t_part.smt2 @@ -0,0 +1,9 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($cruiseThrottle$0 Real) ($OK$0 Bool) ($cruiseThrottle$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (and (>= $cruiseThrottle$1 (/ 0 10)) (<= $cruiseThrottle$1 (/ 1000 10))))) +; Universally quantified variables +(declare-fun $cruiseThrottle$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $cruiseThrottle$2 () Real) +(declare-fun $OK$2 () Bool) +(assert (and (T true $cruiseThrottle$~1 $OK$~1 $cruiseThrottle$2 $OK$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_06_extend_s_part.smt2 b/bench/tasks/cruise_controller_06_extend_s_part.smt2 new file mode 100755 index 000000000..877e009f0 --- /dev/null +++ b/bench/tasks/cruise_controller_06_extend_s_part.smt2 @@ -0,0 +1,10 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($cruiseThrottle$0 Real) ($OK$0 Bool) ($cruiseThrottle$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (and (>= $cruiseThrottle$1 (/ 0 10)) (<= $cruiseThrottle$1 (/ 1000 10))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $cruiseThrottle$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $cruiseThrottle$0 () Real) +(declare-fun $OK$0 () Bool) +(assert (T %init $cruiseThrottle$~1 $OK$~1 $cruiseThrottle$0 $OK$0)) diff --git a/bench/tasks/cruise_controller_06_extend_t_part.smt2 b/bench/tasks/cruise_controller_06_extend_t_part.smt2 new file mode 100755 index 000000000..6a182bcc5 --- /dev/null +++ b/bench/tasks/cruise_controller_06_extend_t_part.smt2 @@ -0,0 +1,10 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($cruiseThrottle$0 Real) ($OK$0 Bool) ($cruiseThrottle$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (and (>= $cruiseThrottle$1 (/ 0 10)) (<= $cruiseThrottle$1 (/ 1000 10))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $cruiseThrottle$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $cruiseThrottle$2 () Real) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $cruiseThrottle$~1 $OK$~1 $cruiseThrottle$2 $OK$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_07_base_s_part.smt2 b/bench/tasks/cruise_controller_07_base_s_part.smt2 new file mode 100755 index 000000000..191e9d869 --- /dev/null +++ b/bench/tasks/cruise_controller_07_base_s_part.smt2 @@ -0,0 +1,9 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($desiredSpeed$0 Real) ($OK$0 Bool) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (and (>= $desiredSpeed$1 (/ 0 10)) (<= $desiredSpeed$1 (/ 1000 10))))) +; Universally quantified variables +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $desiredSpeed$0 () Real) +(declare-fun $OK$0 () Bool) +(assert (T true $desiredSpeed$~1 $OK$~1 $desiredSpeed$0 $OK$0)) diff --git a/bench/tasks/cruise_controller_07_base_t_part.smt2 b/bench/tasks/cruise_controller_07_base_t_part.smt2 new file mode 100755 index 000000000..b2a7b6d6c --- /dev/null +++ b/bench/tasks/cruise_controller_07_base_t_part.smt2 @@ -0,0 +1,9 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($desiredSpeed$0 Real) ($OK$0 Bool) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (and (>= $desiredSpeed$1 (/ 0 10)) (<= $desiredSpeed$1 (/ 1000 10))))) +; Universally quantified variables +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $OK$2 () Bool) +(assert (and (T true $desiredSpeed$~1 $OK$~1 $desiredSpeed$2 $OK$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_07_extend_s_part.smt2 b/bench/tasks/cruise_controller_07_extend_s_part.smt2 new file mode 100755 index 000000000..148afbbd3 --- /dev/null +++ b/bench/tasks/cruise_controller_07_extend_s_part.smt2 @@ -0,0 +1,10 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($desiredSpeed$0 Real) ($OK$0 Bool) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (and (>= $desiredSpeed$1 (/ 0 10)) (<= $desiredSpeed$1 (/ 1000 10))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $desiredSpeed$0 () Real) +(declare-fun $OK$0 () Bool) +(assert (T %init $desiredSpeed$~1 $OK$~1 $desiredSpeed$0 $OK$0)) diff --git a/bench/tasks/cruise_controller_07_extend_t_part.smt2 b/bench/tasks/cruise_controller_07_extend_t_part.smt2 new file mode 100755 index 000000000..5d1a1b9d2 --- /dev/null +++ b/bench/tasks/cruise_controller_07_extend_t_part.smt2 @@ -0,0 +1,10 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($desiredSpeed$0 Real) ($OK$0 Bool) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (and (>= $desiredSpeed$1 (/ 0 10)) (<= $desiredSpeed$1 (/ 1000 10))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $desiredSpeed$~1 $OK$~1 $desiredSpeed$2 $OK$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_09_base_s_part.smt2 b/bench/tasks/cruise_controller_09_base_s_part.smt2 new file mode 100755 index 000000000..696722788 --- /dev/null +++ b/bench/tasks/cruise_controller_09_base_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($carSpeed$0 Real) ($desiredSpeed$0 Real) ($OK$0 Bool) ($carSpeed$1 Real) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (or (= $desiredSpeed$1 (ite %init (/ 0 10) $desiredSpeed$0)) (= $desiredSpeed$1 $carSpeed$1)) (= $desiredSpeed$1 (/ 0 10))))) +; Universally quantified variables +(declare-fun $carSpeed$~1 () Real) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $carSpeed$0 () Real) +(declare-fun $desiredSpeed$0 () Real) +(declare-fun $OK$0 () Bool) +(assert (T true $carSpeed$~1 $desiredSpeed$~1 $OK$~1 $carSpeed$0 $desiredSpeed$0 $OK$0)) diff --git a/bench/tasks/cruise_controller_09_base_t_part.smt2 b/bench/tasks/cruise_controller_09_base_t_part.smt2 new file mode 100644 index 000000000..31a933b0b --- /dev/null +++ b/bench/tasks/cruise_controller_09_base_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($carSpeed$0 Real) ($desiredSpeed$0 Real) ($OK$0 Bool) ($carSpeed$1 Real) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (or (= $desiredSpeed$1 (ite %init (/ 0 10) $desiredSpeed$0)) (= $desiredSpeed$1 $carSpeed$1)) (= $desiredSpeed$1 (/ 0 10))))) +; Universally quantified variables +(declare-fun $carSpeed$~1 () Real) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $carSpeed$0 () Real) +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $OK$2 () Bool) +(assert (and (T true $carSpeed$~1 $desiredSpeed$~1 $OK$~1 $carSpeed$0 $desiredSpeed$2 $OK$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_09_extend_s_part.smt2 b/bench/tasks/cruise_controller_09_extend_s_part.smt2 new file mode 100755 index 000000000..23748b743 --- /dev/null +++ b/bench/tasks/cruise_controller_09_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($carSpeed$0 Real) ($desiredSpeed$0 Real) ($OK$0 Bool) ($carSpeed$1 Real) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (or (= $desiredSpeed$1 (ite %init (/ 0 10) $desiredSpeed$0)) (= $desiredSpeed$1 $carSpeed$1)) (= $desiredSpeed$1 (/ 0 10))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $carSpeed$~1 () Real) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $carSpeed$0 () Real) +(declare-fun $desiredSpeed$0 () Real) +(declare-fun $OK$0 () Bool) +(assert (T %init $carSpeed$~1 $desiredSpeed$~1 $OK$~1 $carSpeed$0 $desiredSpeed$0 $OK$0)) diff --git a/bench/tasks/cruise_controller_09_extend_t_part.smt2 b/bench/tasks/cruise_controller_09_extend_t_part.smt2 new file mode 100755 index 000000000..1559e1f20 --- /dev/null +++ b/bench/tasks/cruise_controller_09_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($carSpeed$0 Real) ($desiredSpeed$0 Real) ($OK$0 Bool) ($carSpeed$1 Real) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (or (= $desiredSpeed$1 (ite %init (/ 0 10) $desiredSpeed$0)) (= $desiredSpeed$1 $carSpeed$1)) (= $desiredSpeed$1 (/ 0 10))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $carSpeed$~1 () Real) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $carSpeed$0 () Real) +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $carSpeed$~1 $desiredSpeed$~1 $OK$~1 $carSpeed$0 $desiredSpeed$2 $OK$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_11_base_s_part.smt2 b/bench/tasks/cruise_controller_11_base_s_part.smt2 new file mode 100755 index 000000000..152b2c57b --- /dev/null +++ b/bench/tasks/cruise_controller_11_base_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($cruiseThrottle$0 Real) ($OK$0 Bool) ($mode$1 Int) ($cruiseThrottle$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (or (or (= $mode$1 4) (= $mode$1 5)) (= $mode$1 6)) (= $cruiseThrottle$1 (/ 0 10))))) +; Universally quantified variables +(declare-fun $mode$~1 () Int) +(declare-fun $cruiseThrottle$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$0 () Int) +(declare-fun $cruiseThrottle$0 () Real) +(declare-fun $OK$0 () Bool) +(assert (T true $mode$~1 $cruiseThrottle$~1 $OK$~1 $mode$0 $cruiseThrottle$0 $OK$0)) diff --git a/bench/tasks/cruise_controller_11_base_t_part.smt2 b/bench/tasks/cruise_controller_11_base_t_part.smt2 new file mode 100755 index 000000000..fe2ee333d --- /dev/null +++ b/bench/tasks/cruise_controller_11_base_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($cruiseThrottle$0 Real) ($OK$0 Bool) ($mode$1 Int) ($cruiseThrottle$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (or (or (= $mode$1 4) (= $mode$1 5)) (= $mode$1 6)) (= $cruiseThrottle$1 (/ 0 10))))) +; Universally quantified variables +(declare-fun $mode$~1 () Int) +(declare-fun $cruiseThrottle$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$2 () Int) +(declare-fun $cruiseThrottle$2 () Real) +(declare-fun $OK$2 () Bool) +(assert (and (T true $mode$~1 $cruiseThrottle$~1 $OK$~1 $mode$2 $cruiseThrottle$2 $OK$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_11_extend_s_part.smt2 b/bench/tasks/cruise_controller_11_extend_s_part.smt2 new file mode 100755 index 000000000..60062fc92 --- /dev/null +++ b/bench/tasks/cruise_controller_11_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($cruiseThrottle$0 Real) ($OK$0 Bool) ($mode$1 Int) ($cruiseThrottle$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (or (or (= $mode$1 4) (= $mode$1 5)) (= $mode$1 6)) (= $cruiseThrottle$1 (/ 0 10))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $mode$~1 () Int) +(declare-fun $cruiseThrottle$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$0 () Int) +(declare-fun $cruiseThrottle$0 () Real) +(declare-fun $OK$0 () Bool) +(assert (T %init $mode$~1 $cruiseThrottle$~1 $OK$~1 $mode$0 $cruiseThrottle$0 $OK$0)) diff --git a/bench/tasks/cruise_controller_11_extend_t_part.smt2 b/bench/tasks/cruise_controller_11_extend_t_part.smt2 new file mode 100755 index 000000000..954239889 --- /dev/null +++ b/bench/tasks/cruise_controller_11_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($cruiseThrottle$0 Real) ($OK$0 Bool) ($mode$1 Int) ($cruiseThrottle$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (or (or (= $mode$1 4) (= $mode$1 5)) (= $mode$1 6)) (= $cruiseThrottle$1 (/ 0 10))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $mode$~1 () Int) +(declare-fun $cruiseThrottle$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$2 () Int) +(declare-fun $cruiseThrottle$2 () Real) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $mode$~1 $cruiseThrottle$~1 $OK$~1 $mode$2 $cruiseThrottle$2 $OK$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_15_base_s_part.smt2 b/bench/tasks/cruise_controller_15_base_s_part.smt2 new file mode 100755 index 000000000..e33508321 --- /dev/null +++ b/bench/tasks/cruise_controller_15_base_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($desiredSpeed$0 Real) ($OK$0 Bool) ($mode$1 Int) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (not (or (= $mode$1 1) (= $mode$1 3))) (= $desiredSpeed$1 (/ 0 10))))) +; Universally quantified variables +(declare-fun $mode$~1 () Int) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$0 () Int) +(declare-fun $desiredSpeed$0 () Real) +(declare-fun $OK$0 () Bool) +(assert (T true $mode$~1 $desiredSpeed$~1 $OK$~1 $mode$0 $desiredSpeed$0 $OK$0)) diff --git a/bench/tasks/cruise_controller_15_base_t_part.smt2 b/bench/tasks/cruise_controller_15_base_t_part.smt2 new file mode 100755 index 000000000..8988d546a --- /dev/null +++ b/bench/tasks/cruise_controller_15_base_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($desiredSpeed$0 Real) ($OK$0 Bool) ($mode$1 Int) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (not (or (= $mode$1 1) (= $mode$1 3))) (= $desiredSpeed$1 (/ 0 10))))) +; Universally quantified variables +(declare-fun $mode$~1 () Int) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$2 () Int) +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $OK$2 () Bool) +(assert (and (T true $mode$~1 $desiredSpeed$~1 $OK$~1 $mode$2 $desiredSpeed$2 $OK$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_15_extend_s_part.smt2 b/bench/tasks/cruise_controller_15_extend_s_part.smt2 new file mode 100755 index 000000000..08d36716c --- /dev/null +++ b/bench/tasks/cruise_controller_15_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($desiredSpeed$0 Real) ($OK$0 Bool) ($mode$1 Int) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (not (or (= $mode$1 1) (= $mode$1 3))) (= $desiredSpeed$1 (/ 0 10))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $mode$~1 () Int) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$0 () Int) +(declare-fun $desiredSpeed$0 () Real) +(declare-fun $OK$0 () Bool) +(assert (T %init $mode$~1 $desiredSpeed$~1 $OK$~1 $mode$0 $desiredSpeed$0 $OK$0)) diff --git a/bench/tasks/cruise_controller_15_extend_t_part.smt2 b/bench/tasks/cruise_controller_15_extend_t_part.smt2 new file mode 100755 index 000000000..cfd3329a8 --- /dev/null +++ b/bench/tasks/cruise_controller_15_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($desiredSpeed$0 Real) ($OK$0 Bool) ($mode$1 Int) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (not (or (= $mode$1 1) (= $mode$1 3))) (= $desiredSpeed$1 (/ 0 10))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $mode$~1 () Int) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$2 () Int) +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $mode$~1 $desiredSpeed$~1 $OK$~1 $mode$2 $desiredSpeed$2 $OK$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_16_base_s_part.smt2 b/bench/tasks/cruise_controller_16_base_s_part.smt2 new file mode 100755 index 000000000..79e082066 --- /dev/null +++ b/bench/tasks/cruise_controller_16_base_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($desiredSpeed$0 Real) ($OK$0 Bool) ($mode$1 Int) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (not (or (or (or (= $mode$1 4) (= $mode$1 5)) (= $mode$1 6)) (= $mode$1 3))) (>= $desiredSpeed$1 (/ 150 10))))) +; Universally quantified variables +(declare-fun $mode$~1 () Int) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$0 () Int) +(declare-fun $desiredSpeed$0 () Real) +(declare-fun $OK$0 () Bool) +(assert (T true $mode$~1 $desiredSpeed$~1 $OK$~1 $mode$0 $desiredSpeed$0 $OK$0)) diff --git a/bench/tasks/cruise_controller_16_base_t_part.smt2 b/bench/tasks/cruise_controller_16_base_t_part.smt2 new file mode 100755 index 000000000..2251aac06 --- /dev/null +++ b/bench/tasks/cruise_controller_16_base_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($desiredSpeed$0 Real) ($OK$0 Bool) ($mode$1 Int) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (not (or (or (or (= $mode$1 4) (= $mode$1 5)) (= $mode$1 6)) (= $mode$1 3))) (>= $desiredSpeed$1 (/ 150 10))))) +; Universally quantified variables +(declare-fun $mode$~1 () Int) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$2 () Int) +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $OK$2 () Bool) +(assert (and (T true $mode$~1 $desiredSpeed$~1 $OK$~1 $mode$2 $desiredSpeed$2 $OK$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_16_extend_s_part.smt2 b/bench/tasks/cruise_controller_16_extend_s_part.smt2 new file mode 100755 index 000000000..018331d48 --- /dev/null +++ b/bench/tasks/cruise_controller_16_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($desiredSpeed$0 Real) ($OK$0 Bool) ($mode$1 Int) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (not (or (or (or (= $mode$1 4) (= $mode$1 5)) (= $mode$1 6)) (= $mode$1 3))) (>= $desiredSpeed$1 (/ 150 10))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $mode$~1 () Int) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$0 () Int) +(declare-fun $desiredSpeed$0 () Real) +(declare-fun $OK$0 () Bool) +(assert (T %init $mode$~1 $desiredSpeed$~1 $OK$~1 $mode$0 $desiredSpeed$0 $OK$0)) diff --git a/bench/tasks/cruise_controller_16_extend_t_part.smt2 b/bench/tasks/cruise_controller_16_extend_t_part.smt2 new file mode 100755 index 000000000..faa64fd87 --- /dev/null +++ b/bench/tasks/cruise_controller_16_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($desiredSpeed$0 Real) ($OK$0 Bool) ($mode$1 Int) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (not (or (or (or (= $mode$1 4) (= $mode$1 5)) (= $mode$1 6)) (= $mode$1 3))) (>= $desiredSpeed$1 (/ 150 10))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $mode$~1 () Int) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$2 () Int) +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $mode$~1 $desiredSpeed$~1 $OK$~1 $mode$2 $desiredSpeed$2 $OK$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_17_base1_s_part.smt2 b/bench/tasks/cruise_controller_17_base1_s_part.smt2 new file mode 100755 index 000000000..e1c8356f9 --- /dev/null +++ b/bench/tasks/cruise_controller_17_base1_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($cruiseThrottle$0 Real) ($OK$0 Bool) ($mode$1 Int) ($cruiseThrottle$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (not (= $mode$1 4)) (= $cruiseThrottle$1 (ite %init (/ 0 10) $cruiseThrottle$0))))) +; Universally quantified variables +(declare-fun $mode$~1 () Int) +(declare-fun $cruiseThrottle$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$0 () Int) +(declare-fun $cruiseThrottle$0 () Real) +(declare-fun $OK$0 () Bool) +(assert (T true $mode$~1 $cruiseThrottle$~1 $OK$~1 $mode$0 $cruiseThrottle$0 $OK$0)) diff --git a/bench/tasks/cruise_controller_17_base1_t_part.smt2 b/bench/tasks/cruise_controller_17_base1_t_part.smt2 new file mode 100755 index 000000000..218797db2 --- /dev/null +++ b/bench/tasks/cruise_controller_17_base1_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($cruiseThrottle$0 Real) ($OK$0 Bool) ($mode$1 Int) ($cruiseThrottle$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (not (= $mode$1 4)) (= $cruiseThrottle$1 (ite %init (/ 0 10) $cruiseThrottle$0))))) +; Universally quantified variables +(declare-fun $mode$~1 () Int) +(declare-fun $cruiseThrottle$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$2 () Int) +(declare-fun $cruiseThrottle$2 () Real) +(declare-fun $OK$2 () Bool) +(assert (and (T true $mode$~1 $cruiseThrottle$~1 $OK$~1 $mode$2 $cruiseThrottle$2 $OK$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_17_base2_s_part.smt2 b/bench/tasks/cruise_controller_17_base2_s_part.smt2 new file mode 100755 index 000000000..bfe0e6891 --- /dev/null +++ b/bench/tasks/cruise_controller_17_base2_s_part.smt2 @@ -0,0 +1,16 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($cruiseThrottle$0 Real) ($OK$0 Bool) ($mode$1 Int) ($cruiseThrottle$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (not (= $mode$1 4)) (= $cruiseThrottle$1 (ite %init (/ 0 10) $cruiseThrottle$0))))) +; Universally quantified variables +(declare-fun $mode$~1 () Int) +(declare-fun $cruiseThrottle$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$0 () Int) +(declare-fun $cruiseThrottle$0 () Real) +(declare-fun $OK$0 () Bool) +(declare-fun $mode$1 () Int) +(declare-fun $cruiseThrottle$1 () Real) +(declare-fun $OK$1 () Bool) +(assert (T true $mode$~1 $cruiseThrottle$~1 $OK$~1 $mode$0 $cruiseThrottle$0 $OK$0)) +(assert $OK$0) +(assert (T false $mode$0 $cruiseThrottle$0 $OK$0 $mode$1 $cruiseThrottle$1 $OK$1)) diff --git a/bench/tasks/cruise_controller_17_base2_t_part.smt2 b/bench/tasks/cruise_controller_17_base2_t_part.smt2 new file mode 100755 index 000000000..ed848319c --- /dev/null +++ b/bench/tasks/cruise_controller_17_base2_t_part.smt2 @@ -0,0 +1,14 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($cruiseThrottle$0 Real) ($OK$0 Bool) ($mode$1 Int) ($cruiseThrottle$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (not (= $mode$1 4)) (= $cruiseThrottle$1 (ite %init (/ 0 10) $cruiseThrottle$0))))) +; Universally quantified variables +(declare-fun $mode$~1 () Int) +(declare-fun $cruiseThrottle$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$0 () Int) +(declare-fun $cruiseThrottle$0 () Real) +(declare-fun $OK$0 () Bool) +(declare-fun $mode$3 () Int) +(declare-fun $cruiseThrottle$3 () Real) +(declare-fun $OK$3 () Bool) +(assert (and (T false $mode$0 $cruiseThrottle$0 $OK$0 $mode$3 $cruiseThrottle$3 $OK$3) $OK$3)) diff --git a/bench/tasks/cruise_controller_17_extend_s_part.smt2 b/bench/tasks/cruise_controller_17_extend_s_part.smt2 new file mode 100755 index 000000000..0b71b3d75 --- /dev/null +++ b/bench/tasks/cruise_controller_17_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($cruiseThrottle$0 Real) ($OK$0 Bool) ($mode$1 Int) ($cruiseThrottle$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (not (= $mode$1 4)) (= $cruiseThrottle$1 (ite %init (/ 0 10) $cruiseThrottle$0))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $mode$~1 () Int) +(declare-fun $cruiseThrottle$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$0 () Int) +(declare-fun $cruiseThrottle$0 () Real) +(declare-fun $OK$0 () Bool) +(assert (T %init $mode$~1 $cruiseThrottle$~1 $OK$~1 $mode$0 $cruiseThrottle$0 $OK$0)) diff --git a/bench/tasks/cruise_controller_17_extend_t_part.smt2 b/bench/tasks/cruise_controller_17_extend_t_part.smt2 new file mode 100755 index 000000000..2d79fcf0f --- /dev/null +++ b/bench/tasks/cruise_controller_17_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($cruiseThrottle$0 Real) ($OK$0 Bool) ($mode$1 Int) ($cruiseThrottle$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (not (= $mode$1 4)) (= $cruiseThrottle$1 (ite %init (/ 0 10) $cruiseThrottle$0))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $mode$~1 () Int) +(declare-fun $cruiseThrottle$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$2 () Int) +(declare-fun $cruiseThrottle$2 () Real) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $mode$~1 $cruiseThrottle$~1 $OK$~1 $mode$2 $cruiseThrottle$2 $OK$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_20_base_s_part.smt2 b/bench/tasks/cruise_controller_20_base_s_part.smt2 new file mode 100755 index 000000000..7f5fddd69 --- /dev/null +++ b/bench/tasks/cruise_controller_20_base_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($desiredSpeed$0 Real) ($OK$0 Bool) ($mode$1 Int) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (not (ite %init false (= $mode$0 4))) (= $desiredSpeed$1 (ite %init (/ 0 10) $desiredSpeed$0))))) +; Universally quantified variables +(declare-fun $mode$~1 () Int) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$0 () Int) +(declare-fun $desiredSpeed$0 () Real) +(declare-fun $OK$0 () Bool) +(assert (T true $mode$~1 $desiredSpeed$~1 $OK$~1 $mode$0 $desiredSpeed$0 $OK$0)) diff --git a/bench/tasks/cruise_controller_20_base_t_part.smt2 b/bench/tasks/cruise_controller_20_base_t_part.smt2 new file mode 100755 index 000000000..0c6620afa --- /dev/null +++ b/bench/tasks/cruise_controller_20_base_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($desiredSpeed$0 Real) ($OK$0 Bool) ($mode$1 Int) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (not (ite %init false (= $mode$0 4))) (= $desiredSpeed$1 (ite %init (/ 0 10) $desiredSpeed$0))))) +; Universally quantified variables +(declare-fun $mode$~1 () Int) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$2 () Int) +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $OK$2 () Bool) +(assert (and (T true $mode$~1 $desiredSpeed$~1 $OK$~1 $mode$2 $desiredSpeed$2 $OK$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_20_extend_s_part.smt2 b/bench/tasks/cruise_controller_20_extend_s_part.smt2 new file mode 100755 index 000000000..f002984e9 --- /dev/null +++ b/bench/tasks/cruise_controller_20_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($desiredSpeed$0 Real) ($OK$0 Bool) ($mode$1 Int) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (not (ite %init false (= $mode$0 4))) (= $desiredSpeed$1 (ite %init (/ 0 10) $desiredSpeed$0))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $mode$~1 () Int) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$0 () Int) +(declare-fun $desiredSpeed$0 () Real) +(declare-fun $OK$0 () Bool) +(assert (T %init $mode$~1 $desiredSpeed$~1 $OK$~1 $mode$0 $desiredSpeed$0 $OK$0)) diff --git a/bench/tasks/cruise_controller_20_extend_t_part.smt2 b/bench/tasks/cruise_controller_20_extend_t_part.smt2 new file mode 100755 index 000000000..10b01740d --- /dev/null +++ b/bench/tasks/cruise_controller_20_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($mode$0 Int) ($desiredSpeed$0 Real) ($OK$0 Bool) ($mode$1 Int) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (not (ite %init false (= $mode$0 4))) (= $desiredSpeed$1 (ite %init (/ 0 10) $desiredSpeed$0))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $mode$~1 () Int) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $mode$2 () Int) +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $mode$~1 $desiredSpeed$~1 $OK$~1 $mode$2 $desiredSpeed$2 $OK$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_23_base_s_part.smt2 b/bench/tasks/cruise_controller_23_base_s_part.smt2 new file mode 100755 index 000000000..5403bf142 --- /dev/null +++ b/bench/tasks/cruise_controller_23_base_s_part.smt2 @@ -0,0 +1,9 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($desiredSpeed$0 Real) ($OK$0 Bool) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (= $desiredSpeed$1 (/ 0 10)) (>= $desiredSpeed$1 (/ 150 10))))) +; Universally quantified variables +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $desiredSpeed$0 () Real) +(declare-fun $OK$0 () Bool) +(assert (T true $desiredSpeed$~1 $OK$~1 $desiredSpeed$0 $OK$0)) diff --git a/bench/tasks/cruise_controller_23_base_t_part.smt2 b/bench/tasks/cruise_controller_23_base_t_part.smt2 new file mode 100755 index 000000000..b92735d19 --- /dev/null +++ b/bench/tasks/cruise_controller_23_base_t_part.smt2 @@ -0,0 +1,9 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($desiredSpeed$0 Real) ($OK$0 Bool) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (= $desiredSpeed$1 (/ 0 10)) (>= $desiredSpeed$1 (/ 150 10))))) +; Universally quantified variables +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $OK$2 () Bool) +(assert (and (T true $desiredSpeed$~1 $OK$~1 $desiredSpeed$2 $OK$2) $OK$2)) diff --git a/bench/tasks/cruise_controller_23_extend_s_part.smt2 b/bench/tasks/cruise_controller_23_extend_s_part.smt2 new file mode 100755 index 000000000..d6435c41e --- /dev/null +++ b/bench/tasks/cruise_controller_23_extend_s_part.smt2 @@ -0,0 +1,10 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($desiredSpeed$0 Real) ($OK$0 Bool) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (= $desiredSpeed$1 (/ 0 10)) (>= $desiredSpeed$1 (/ 150 10))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $desiredSpeed$0 () Real) +(declare-fun $OK$0 () Bool) +(assert (T %init $desiredSpeed$~1 $OK$~1 $desiredSpeed$0 $OK$0)) diff --git a/bench/tasks/cruise_controller_23_extend_t_part.smt2 b/bench/tasks/cruise_controller_23_extend_t_part.smt2 new file mode 100755 index 000000000..f508c19b7 --- /dev/null +++ b/bench/tasks/cruise_controller_23_extend_t_part.smt2 @@ -0,0 +1,10 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($desiredSpeed$0 Real) ($OK$0 Bool) ($desiredSpeed$1 Real) ($OK$1 Bool)) Bool (= $OK$1 (or (= $desiredSpeed$1 (/ 0 10)) (>= $desiredSpeed$1 (/ 150 10))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $desiredSpeed$~1 () Real) +(declare-fun $OK$~1 () Bool) +(declare-fun $desiredSpeed$2 () Real) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $desiredSpeed$~1 $OK$~1 $desiredSpeed$2 $OK$2) $OK$2)) diff --git a/bench/tasks/ex3_e7_590_base_s_part.smt2 b/bench/tasks/ex3_e7_590_base_s_part.smt2 new file mode 100755 index 000000000..d13dc8b91 --- /dev/null +++ b/bench/tasks/ex3_e7_590_base_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/ex3_e7_590_base_t_part.smt2 b/bench/tasks/ex3_e7_590_base_t_part.smt2 new file mode 100755 index 000000000..666028c52 --- /dev/null +++ b/bench/tasks/ex3_e7_590_base_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/ex3_e7_590_e7_590_base_s_part.smt2 b/bench/tasks/ex3_e7_590_e7_590_base_s_part.smt2 new file mode 100755 index 000000000..d13dc8b91 --- /dev/null +++ b/bench/tasks/ex3_e7_590_e7_590_base_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/ex3_e7_590_e7_590_base_t_part.smt2 b/bench/tasks/ex3_e7_590_e7_590_base_t_part.smt2 new file mode 100755 index 000000000..666028c52 --- /dev/null +++ b/bench/tasks/ex3_e7_590_e7_590_base_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/ex3_e7_590_e7_590_extend_s_part.smt2 b/bench/tasks/ex3_e7_590_e7_590_extend_s_part.smt2 new file mode 100755 index 000000000..5c8c9ae61 --- /dev/null +++ b/bench/tasks/ex3_e7_590_e7_590_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/ex3_e7_590_e7_590_extend_t_part.smt2 b/bench/tasks/ex3_e7_590_e7_590_extend_t_part.smt2 new file mode 100755 index 000000000..85e70cdc6 --- /dev/null +++ b/bench/tasks/ex3_e7_590_e7_590_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/ex3_e7_590_e8_550_base_s_part.smt2 b/bench/tasks/ex3_e7_590_e8_550_base_s_part.smt2 new file mode 100755 index 000000000..d13dc8b91 --- /dev/null +++ b/bench/tasks/ex3_e7_590_e8_550_base_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/ex3_e7_590_e8_550_base_t_part.smt2 b/bench/tasks/ex3_e7_590_e8_550_base_t_part.smt2 new file mode 100755 index 000000000..666028c52 --- /dev/null +++ b/bench/tasks/ex3_e7_590_e8_550_base_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/ex3_e7_590_e8_550_extend_s_part.smt2 b/bench/tasks/ex3_e7_590_e8_550_extend_s_part.smt2 new file mode 100755 index 000000000..5c8c9ae61 --- /dev/null +++ b/bench/tasks/ex3_e7_590_e8_550_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/ex3_e7_590_e8_550_extend_t_part.smt2 b/bench/tasks/ex3_e7_590_e8_550_extend_t_part.smt2 new file mode 100755 index 000000000..85e70cdc6 --- /dev/null +++ b/bench/tasks/ex3_e7_590_e8_550_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/ex3_e7_590_extend_s_part.smt2 b/bench/tasks/ex3_e7_590_extend_s_part.smt2 new file mode 100755 index 000000000..5c8c9ae61 --- /dev/null +++ b/bench/tasks/ex3_e7_590_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/ex3_e7_590_extend_t_part.smt2 b/bench/tasks/ex3_e7_590_extend_t_part.smt2 new file mode 100755 index 000000000..85e70cdc6 --- /dev/null +++ b/bench/tasks/ex3_e7_590_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/ex3_e8_120_base_s_part.smt2 b/bench/tasks/ex3_e8_120_base_s_part.smt2 new file mode 100755 index 000000000..d13dc8b91 --- /dev/null +++ b/bench/tasks/ex3_e8_120_base_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/ex3_e8_120_base_t_part.smt2 b/bench/tasks/ex3_e8_120_base_t_part.smt2 new file mode 100755 index 000000000..666028c52 --- /dev/null +++ b/bench/tasks/ex3_e8_120_base_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/ex3_e8_120_extend_s_part.smt2 b/bench/tasks/ex3_e8_120_extend_s_part.smt2 new file mode 100755 index 000000000..5c8c9ae61 --- /dev/null +++ b/bench/tasks/ex3_e8_120_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/ex3_e8_120_extend_t_part.smt2 b/bench/tasks/ex3_e8_120_extend_t_part.smt2 new file mode 100755 index 000000000..85e70cdc6 --- /dev/null +++ b/bench/tasks/ex3_e8_120_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/ex3_e8_381_e7_224_base_s_part.smt2 b/bench/tasks/ex3_e8_381_e7_224_base_s_part.smt2 new file mode 100755 index 000000000..d13dc8b91 --- /dev/null +++ b/bench/tasks/ex3_e8_381_e7_224_base_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/ex3_e8_381_e7_224_base_t_part.smt2 b/bench/tasks/ex3_e8_381_e7_224_base_t_part.smt2 new file mode 100755 index 000000000..666028c52 --- /dev/null +++ b/bench/tasks/ex3_e8_381_e7_224_base_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/ex3_e8_381_e7_224_extend_s_part.smt2 b/bench/tasks/ex3_e8_381_e7_224_extend_s_part.smt2 new file mode 100755 index 000000000..5c8c9ae61 --- /dev/null +++ b/bench/tasks/ex3_e8_381_e7_224_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/ex3_e8_381_e7_224_extend_t_part.smt2 b/bench/tasks/ex3_e8_381_e7_224_extend_t_part.smt2 new file mode 100755 index 000000000..85e70cdc6 --- /dev/null +++ b/bench/tasks/ex3_e8_381_e7_224_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (or (not $V20_early$0) (not $V19_late$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/example_base1_s_part.smt2 b/bench/tasks/example_base1_s_part.smt2 new file mode 100755 index 000000000..521e263be --- /dev/null +++ b/bench/tasks/example_base1_s_part.smt2 @@ -0,0 +1,23 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($x$0 Bool) ($state$0 Int) ($bias$0 Int) ($prop1$0 Bool) ($prop2$0 Bool) ($prop3$0 Bool) ($prop4$0 Bool) ($prop_all$0 Bool) ($bias_max$0 Bool) ($x$1 Bool) ($state$1 Int) ($bias$1 Int) ($prop1$1 Bool) ($prop2$1 Bool) ($prop3$1 Bool) ($prop4$1 Bool) ($prop_all$1 Bool) ($bias_max$1 Bool)) Bool (and (= $bias$1 (ite %init 0 (+ (ite $x$1 1 (- 0 1)) $bias$0))) (= $bias_max$1 (ite %init false (or (or (>= $bias$1 2) (<= $bias$1 (- 0 2))) $bias_max$0))) (= $prop1$1 (=> (= $state$1 0) (= $bias$1 0))) (= $prop2$1 (ite %init true (=> (and (= $state$0 0) $x$1) (= $state$1 2)))) (= $prop3$1 (ite %init true (=> (and (= $state$0 0) (not $x$1)) (= $state$1 1)))) (= $prop4$1 (=> $bias_max$1 (= $state$1 3))) (= $prop_all$1 (and (and (and $prop1$1 $prop2$1) $prop3$1) $prop4$1)))) +; Universally quantified variables +(declare-fun $x$~1 () Bool) +(declare-fun $state$~1 () Int) +(declare-fun $bias$~1 () Int) +(declare-fun $prop1$~1 () Bool) +(declare-fun $prop2$~1 () Bool) +(declare-fun $prop3$~1 () Bool) +(declare-fun $prop4$~1 () Bool) +(declare-fun $prop_all$~1 () Bool) +(declare-fun $bias_max$~1 () Bool) +(declare-fun $x$0 () Bool) +(declare-fun $state$0 () Int) +(declare-fun $bias$0 () Int) +(declare-fun $prop1$0 () Bool) +(declare-fun $prop2$0 () Bool) +(declare-fun $prop3$0 () Bool) +(declare-fun $prop4$0 () Bool) +(declare-fun $prop_all$0 () Bool) +(declare-fun $bias_max$0 () Bool) +(assert (T true $x$~1 $state$~1 $bias$~1 $prop1$~1 $prop2$~1 $prop3$~1 $prop4$~1 $prop_all$~1 $bias_max$~1 $x$0 $state$0 $bias$0 $prop1$0 $prop2$0 $prop3$0 $prop4$0 $prop_all$0 $bias_max$0)) diff --git a/bench/tasks/example_base1_t_part.smt2 b/bench/tasks/example_base1_t_part.smt2 new file mode 100755 index 000000000..49366dafd --- /dev/null +++ b/bench/tasks/example_base1_t_part.smt2 @@ -0,0 +1,23 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($x$0 Bool) ($state$0 Int) ($bias$0 Int) ($prop1$0 Bool) ($prop2$0 Bool) ($prop3$0 Bool) ($prop4$0 Bool) ($prop_all$0 Bool) ($bias_max$0 Bool) ($x$1 Bool) ($state$1 Int) ($bias$1 Int) ($prop1$1 Bool) ($prop2$1 Bool) ($prop3$1 Bool) ($prop4$1 Bool) ($prop_all$1 Bool) ($bias_max$1 Bool)) Bool (and (= $bias$1 (ite %init 0 (+ (ite $x$1 1 (- 0 1)) $bias$0))) (= $bias_max$1 (ite %init false (or (or (>= $bias$1 2) (<= $bias$1 (- 0 2))) $bias_max$0))) (= $prop1$1 (=> (= $state$1 0) (= $bias$1 0))) (= $prop2$1 (ite %init true (=> (and (= $state$0 0) $x$1) (= $state$1 2)))) (= $prop3$1 (ite %init true (=> (and (= $state$0 0) (not $x$1)) (= $state$1 1)))) (= $prop4$1 (=> $bias_max$1 (= $state$1 3))) (= $prop_all$1 (and (and (and $prop1$1 $prop2$1) $prop3$1) $prop4$1)))) +; Universally quantified variables +(declare-fun $x$~1 () Bool) +(declare-fun $state$~1 () Int) +(declare-fun $bias$~1 () Int) +(declare-fun $prop1$~1 () Bool) +(declare-fun $prop2$~1 () Bool) +(declare-fun $prop3$~1 () Bool) +(declare-fun $prop4$~1 () Bool) +(declare-fun $prop_all$~1 () Bool) +(declare-fun $bias_max$~1 () Bool) +(declare-fun $x$0 () Bool) +(declare-fun $state$2 () Int) +(declare-fun $bias$2 () Int) +(declare-fun $prop1$2 () Bool) +(declare-fun $prop2$2 () Bool) +(declare-fun $prop3$2 () Bool) +(declare-fun $prop4$2 () Bool) +(declare-fun $prop_all$2 () Bool) +(declare-fun $bias_max$2 () Bool) +(assert (and (T true $x$~1 $state$~1 $bias$~1 $prop1$~1 $prop2$~1 $prop3$~1 $prop4$~1 $prop_all$~1 $bias_max$~1 $x$0 $state$2 $bias$2 $prop1$2 $prop2$2 $prop3$2 $prop4$2 $prop_all$2 $bias_max$2) $prop_all$2)) diff --git a/bench/tasks/example_base2_s_part.smt2 b/bench/tasks/example_base2_s_part.smt2 new file mode 100755 index 000000000..81e5e8eb4 --- /dev/null +++ b/bench/tasks/example_base2_s_part.smt2 @@ -0,0 +1,34 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($x$0 Bool) ($state$0 Int) ($bias$0 Int) ($prop1$0 Bool) ($prop2$0 Bool) ($prop3$0 Bool) ($prop4$0 Bool) ($prop_all$0 Bool) ($bias_max$0 Bool) ($x$1 Bool) ($state$1 Int) ($bias$1 Int) ($prop1$1 Bool) ($prop2$1 Bool) ($prop3$1 Bool) ($prop4$1 Bool) ($prop_all$1 Bool) ($bias_max$1 Bool)) Bool (and (= $bias$1 (ite %init 0 (+ (ite $x$1 1 (- 0 1)) $bias$0))) (= $bias_max$1 (ite %init false (or (or (>= $bias$1 2) (<= $bias$1 (- 0 2))) $bias_max$0))) (= $prop1$1 (=> (= $state$1 0) (= $bias$1 0))) (= $prop2$1 (ite %init true (=> (and (= $state$0 0) $x$1) (= $state$1 2)))) (= $prop3$1 (ite %init true (=> (and (= $state$0 0) (not $x$1)) (= $state$1 1)))) (= $prop4$1 (=> $bias_max$1 (= $state$1 3))) (= $prop_all$1 (and (and (and $prop1$1 $prop2$1) $prop3$1) $prop4$1)))) +; Universally quantified variables +(declare-fun $x$~1 () Bool) +(declare-fun $state$~1 () Int) +(declare-fun $bias$~1 () Int) +(declare-fun $prop1$~1 () Bool) +(declare-fun $prop2$~1 () Bool) +(declare-fun $prop3$~1 () Bool) +(declare-fun $prop4$~1 () Bool) +(declare-fun $prop_all$~1 () Bool) +(declare-fun $bias_max$~1 () Bool) +(declare-fun $x$0 () Bool) +(declare-fun $state$0 () Int) +(declare-fun $bias$0 () Int) +(declare-fun $prop1$0 () Bool) +(declare-fun $prop2$0 () Bool) +(declare-fun $prop3$0 () Bool) +(declare-fun $prop4$0 () Bool) +(declare-fun $prop_all$0 () Bool) +(declare-fun $bias_max$0 () Bool) +(declare-fun $x$1 () Bool) +(declare-fun $state$1 () Int) +(declare-fun $bias$1 () Int) +(declare-fun $prop1$1 () Bool) +(declare-fun $prop2$1 () Bool) +(declare-fun $prop3$1 () Bool) +(declare-fun $prop4$1 () Bool) +(declare-fun $prop_all$1 () Bool) +(declare-fun $bias_max$1 () Bool) +(assert (T true $x$~1 $state$~1 $bias$~1 $prop1$~1 $prop2$~1 $prop3$~1 $prop4$~1 $prop_all$~1 $bias_max$~1 $x$0 $state$0 $bias$0 $prop1$0 $prop2$0 $prop3$0 $prop4$0 $prop_all$0 $bias_max$0)) +(assert $prop_all$0) +(assert (T false $x$0 $state$0 $bias$0 $prop1$0 $prop2$0 $prop3$0 $prop4$0 $prop_all$0 $bias_max$0 $x$1 $state$1 $bias$1 $prop1$1 $prop2$1 $prop3$1 $prop4$1 $prop_all$1 $bias_max$1)) diff --git a/bench/tasks/example_base2_t_part.smt2 b/bench/tasks/example_base2_t_part.smt2 new file mode 100755 index 000000000..cd75b87e1 --- /dev/null +++ b/bench/tasks/example_base2_t_part.smt2 @@ -0,0 +1,32 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($x$0 Bool) ($state$0 Int) ($bias$0 Int) ($prop1$0 Bool) ($prop2$0 Bool) ($prop3$0 Bool) ($prop4$0 Bool) ($prop_all$0 Bool) ($bias_max$0 Bool) ($x$1 Bool) ($state$1 Int) ($bias$1 Int) ($prop1$1 Bool) ($prop2$1 Bool) ($prop3$1 Bool) ($prop4$1 Bool) ($prop_all$1 Bool) ($bias_max$1 Bool)) Bool (and (= $bias$1 (ite %init 0 (+ (ite $x$1 1 (- 0 1)) $bias$0))) (= $bias_max$1 (ite %init false (or (or (>= $bias$1 2) (<= $bias$1 (- 0 2))) $bias_max$0))) (= $prop1$1 (=> (= $state$1 0) (= $bias$1 0))) (= $prop2$1 (ite %init true (=> (and (= $state$0 0) $x$1) (= $state$1 2)))) (= $prop3$1 (ite %init true (=> (and (= $state$0 0) (not $x$1)) (= $state$1 1)))) (= $prop4$1 (=> $bias_max$1 (= $state$1 3))) (= $prop_all$1 (and (and (and $prop1$1 $prop2$1) $prop3$1) $prop4$1)))) +; Universally quantified variables +(declare-fun $x$~1 () Bool) +(declare-fun $state$~1 () Int) +(declare-fun $bias$~1 () Int) +(declare-fun $prop1$~1 () Bool) +(declare-fun $prop2$~1 () Bool) +(declare-fun $prop3$~1 () Bool) +(declare-fun $prop4$~1 () Bool) +(declare-fun $prop_all$~1 () Bool) +(declare-fun $bias_max$~1 () Bool) +(declare-fun $x$0 () Bool) +(declare-fun $state$0 () Int) +(declare-fun $bias$0 () Int) +(declare-fun $prop1$0 () Bool) +(declare-fun $prop2$0 () Bool) +(declare-fun $prop3$0 () Bool) +(declare-fun $prop4$0 () Bool) +(declare-fun $prop_all$0 () Bool) +(declare-fun $bias_max$0 () Bool) +(declare-fun $x$1 () Bool) +(declare-fun $state$3 () Int) +(declare-fun $bias$3 () Int) +(declare-fun $prop1$3 () Bool) +(declare-fun $prop2$3 () Bool) +(declare-fun $prop3$3 () Bool) +(declare-fun $prop4$3 () Bool) +(declare-fun $prop_all$3 () Bool) +(declare-fun $bias_max$3 () Bool) +(assert (and (T false $x$0 $state$0 $bias$0 $prop1$0 $prop2$0 $prop3$0 $prop4$0 $prop_all$0 $bias_max$0 $x$1 $state$3 $bias$3 $prop1$3 $prop2$3 $prop3$3 $prop4$3 $prop_all$3 $bias_max$3) $prop_all$3)) diff --git a/bench/tasks/example_base3_s_part.smt2 b/bench/tasks/example_base3_s_part.smt2 new file mode 100755 index 000000000..5d308ec5f --- /dev/null +++ b/bench/tasks/example_base3_s_part.smt2 @@ -0,0 +1,45 @@ +; K = 3 +; Transition relation +(define-fun T ((%init Bool) ($x$0 Bool) ($state$0 Int) ($bias$0 Int) ($prop1$0 Bool) ($prop2$0 Bool) ($prop3$0 Bool) ($prop4$0 Bool) ($prop_all$0 Bool) ($bias_max$0 Bool) ($x$1 Bool) ($state$1 Int) ($bias$1 Int) ($prop1$1 Bool) ($prop2$1 Bool) ($prop3$1 Bool) ($prop4$1 Bool) ($prop_all$1 Bool) ($bias_max$1 Bool)) Bool (and (= $bias$1 (ite %init 0 (+ (ite $x$1 1 (- 0 1)) $bias$0))) (= $bias_max$1 (ite %init false (or (or (>= $bias$1 2) (<= $bias$1 (- 0 2))) $bias_max$0))) (= $prop1$1 (=> (= $state$1 0) (= $bias$1 0))) (= $prop2$1 (ite %init true (=> (and (= $state$0 0) $x$1) (= $state$1 2)))) (= $prop3$1 (ite %init true (=> (and (= $state$0 0) (not $x$1)) (= $state$1 1)))) (= $prop4$1 (=> $bias_max$1 (= $state$1 3))) (= $prop_all$1 (and (and (and $prop1$1 $prop2$1) $prop3$1) $prop4$1)))) +; Universally quantified variables +(declare-fun $x$~1 () Bool) +(declare-fun $state$~1 () Int) +(declare-fun $bias$~1 () Int) +(declare-fun $prop1$~1 () Bool) +(declare-fun $prop2$~1 () Bool) +(declare-fun $prop3$~1 () Bool) +(declare-fun $prop4$~1 () Bool) +(declare-fun $prop_all$~1 () Bool) +(declare-fun $bias_max$~1 () Bool) +(declare-fun $x$0 () Bool) +(declare-fun $state$0 () Int) +(declare-fun $bias$0 () Int) +(declare-fun $prop1$0 () Bool) +(declare-fun $prop2$0 () Bool) +(declare-fun $prop3$0 () Bool) +(declare-fun $prop4$0 () Bool) +(declare-fun $prop_all$0 () Bool) +(declare-fun $bias_max$0 () Bool) +(declare-fun $x$1 () Bool) +(declare-fun $state$1 () Int) +(declare-fun $bias$1 () Int) +(declare-fun $prop1$1 () Bool) +(declare-fun $prop2$1 () Bool) +(declare-fun $prop3$1 () Bool) +(declare-fun $prop4$1 () Bool) +(declare-fun $prop_all$1 () Bool) +(declare-fun $bias_max$1 () Bool) +(declare-fun $x$2 () Bool) +(declare-fun $state$2 () Int) +(declare-fun $bias$2 () Int) +(declare-fun $prop1$2 () Bool) +(declare-fun $prop2$2 () Bool) +(declare-fun $prop3$2 () Bool) +(declare-fun $prop4$2 () Bool) +(declare-fun $prop_all$2 () Bool) +(declare-fun $bias_max$2 () Bool) +(assert (T true $x$~1 $state$~1 $bias$~1 $prop1$~1 $prop2$~1 $prop3$~1 $prop4$~1 $prop_all$~1 $bias_max$~1 $x$0 $state$0 $bias$0 $prop1$0 $prop2$0 $prop3$0 $prop4$0 $prop_all$0 $bias_max$0)) +(assert $prop_all$0) +(assert (T false $x$0 $state$0 $bias$0 $prop1$0 $prop2$0 $prop3$0 $prop4$0 $prop_all$0 $bias_max$0 $x$1 $state$1 $bias$1 $prop1$1 $prop2$1 $prop3$1 $prop4$1 $prop_all$1 $bias_max$1)) +(assert $prop_all$1) +(assert (T false $x$1 $state$1 $bias$1 $prop1$1 $prop2$1 $prop3$1 $prop4$1 $prop_all$1 $bias_max$1 $x$2 $state$2 $bias$2 $prop1$2 $prop2$2 $prop3$2 $prop4$2 $prop_all$2 $bias_max$2)) diff --git a/bench/tasks/example_base3_t_part.smt2 b/bench/tasks/example_base3_t_part.smt2 new file mode 100755 index 000000000..521b21c9c --- /dev/null +++ b/bench/tasks/example_base3_t_part.smt2 @@ -0,0 +1,41 @@ +; K = 3 +; Transition relation +(define-fun T ((%init Bool) ($x$0 Bool) ($state$0 Int) ($bias$0 Int) ($prop1$0 Bool) ($prop2$0 Bool) ($prop3$0 Bool) ($prop4$0 Bool) ($prop_all$0 Bool) ($bias_max$0 Bool) ($x$1 Bool) ($state$1 Int) ($bias$1 Int) ($prop1$1 Bool) ($prop2$1 Bool) ($prop3$1 Bool) ($prop4$1 Bool) ($prop_all$1 Bool) ($bias_max$1 Bool)) Bool (and (= $bias$1 (ite %init 0 (+ (ite $x$1 1 (- 0 1)) $bias$0))) (= $bias_max$1 (ite %init false (or (or (>= $bias$1 2) (<= $bias$1 (- 0 2))) $bias_max$0))) (= $prop1$1 (=> (= $state$1 0) (= $bias$1 0))) (= $prop2$1 (ite %init true (=> (and (= $state$0 0) $x$1) (= $state$1 2)))) (= $prop3$1 (ite %init true (=> (and (= $state$0 0) (not $x$1)) (= $state$1 1)))) (= $prop4$1 (=> $bias_max$1 (= $state$1 3))) (= $prop_all$1 (and (and (and $prop1$1 $prop2$1) $prop3$1) $prop4$1)))) +; Universally quantified variables +(declare-fun $x$~1 () Bool) +(declare-fun $state$~1 () Int) +(declare-fun $bias$~1 () Int) +(declare-fun $prop1$~1 () Bool) +(declare-fun $prop2$~1 () Bool) +(declare-fun $prop3$~1 () Bool) +(declare-fun $prop4$~1 () Bool) +(declare-fun $prop_all$~1 () Bool) +(declare-fun $bias_max$~1 () Bool) +(declare-fun $x$0 () Bool) +(declare-fun $state$0 () Int) +(declare-fun $bias$0 () Int) +(declare-fun $prop1$0 () Bool) +(declare-fun $prop2$0 () Bool) +(declare-fun $prop3$0 () Bool) +(declare-fun $prop4$0 () Bool) +(declare-fun $prop_all$0 () Bool) +(declare-fun $bias_max$0 () Bool) +(declare-fun $x$1 () Bool) +(declare-fun $state$1 () Int) +(declare-fun $bias$1 () Int) +(declare-fun $prop1$1 () Bool) +(declare-fun $prop2$1 () Bool) +(declare-fun $prop3$1 () Bool) +(declare-fun $prop4$1 () Bool) +(declare-fun $prop_all$1 () Bool) +(declare-fun $bias_max$1 () Bool) +(declare-fun $x$2 () Bool) +(declare-fun $state$4 () Int) +(declare-fun $bias$4 () Int) +(declare-fun $prop1$4 () Bool) +(declare-fun $prop2$4 () Bool) +(declare-fun $prop3$4 () Bool) +(declare-fun $prop4$4 () Bool) +(declare-fun $prop_all$4 () Bool) +(declare-fun $bias_max$4 () Bool) +(assert (and (T false $x$1 $state$1 $bias$1 $prop1$1 $prop2$1 $prop3$1 $prop4$1 $prop_all$1 $bias_max$1 $x$2 $state$4 $bias$4 $prop1$4 $prop2$4 $prop3$4 $prop4$4 $prop_all$4 $bias_max$4) $prop_all$4)) diff --git a/bench/tasks/example_extend_s_part.smt2 b/bench/tasks/example_extend_s_part.smt2 new file mode 100755 index 000000000..2a2db202d --- /dev/null +++ b/bench/tasks/example_extend_s_part.smt2 @@ -0,0 +1,35 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($x$0 Bool) ($state$0 Int) ($bias$0 Int) ($prop1$0 Bool) ($prop2$0 Bool) ($prop3$0 Bool) ($prop4$0 Bool) ($prop_all$0 Bool) ($bias_max$0 Bool) ($x$1 Bool) ($state$1 Int) ($bias$1 Int) ($prop1$1 Bool) ($prop2$1 Bool) ($prop3$1 Bool) ($prop4$1 Bool) ($prop_all$1 Bool) ($bias_max$1 Bool)) Bool (and (= $bias$1 (ite %init 0 (+ (ite $x$1 1 (- 0 1)) $bias$0))) (= $bias_max$1 (ite %init false (or (or (>= $bias$1 2) (<= $bias$1 (- 0 2))) $bias_max$0))) (= $prop1$1 (=> (= $state$1 0) (= $bias$1 0))) (= $prop2$1 (ite %init true (=> (and (= $state$0 0) $x$1) (= $state$1 2)))) (= $prop3$1 (ite %init true (=> (and (= $state$0 0) (not $x$1)) (= $state$1 1)))) (= $prop4$1 (=> $bias_max$1 (= $state$1 3))) (= $prop_all$1 (and (and (and $prop1$1 $prop2$1) $prop3$1) $prop4$1)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $x$~1 () Bool) +(declare-fun $state$~1 () Int) +(declare-fun $bias$~1 () Int) +(declare-fun $prop1$~1 () Bool) +(declare-fun $prop2$~1 () Bool) +(declare-fun $prop3$~1 () Bool) +(declare-fun $prop4$~1 () Bool) +(declare-fun $prop_all$~1 () Bool) +(declare-fun $bias_max$~1 () Bool) +(declare-fun $x$0 () Bool) +(declare-fun $state$0 () Int) +(declare-fun $bias$0 () Int) +(declare-fun $prop1$0 () Bool) +(declare-fun $prop2$0 () Bool) +(declare-fun $prop3$0 () Bool) +(declare-fun $prop4$0 () Bool) +(declare-fun $prop_all$0 () Bool) +(declare-fun $bias_max$0 () Bool) +(declare-fun $x$1 () Bool) +(declare-fun $state$1 () Int) +(declare-fun $bias$1 () Int) +(declare-fun $prop1$1 () Bool) +(declare-fun $prop2$1 () Bool) +(declare-fun $prop3$1 () Bool) +(declare-fun $prop4$1 () Bool) +(declare-fun $prop_all$1 () Bool) +(declare-fun $bias_max$1 () Bool) +(assert (T %init $x$~1 $state$~1 $bias$~1 $prop1$~1 $prop2$~1 $prop3$~1 $prop4$~1 $prop_all$~1 $bias_max$~1 $x$0 $state$0 $bias$0 $prop1$0 $prop2$0 $prop3$0 $prop4$0 $prop_all$0 $bias_max$0)) +(assert $prop_all$0) +(assert (T false $x$0 $state$0 $bias$0 $prop1$0 $prop2$0 $prop3$0 $prop4$0 $prop_all$0 $bias_max$0 $x$1 $state$1 $bias$1 $prop1$1 $prop2$1 $prop3$1 $prop4$1 $prop_all$1 $bias_max$1)) diff --git a/bench/tasks/example_extend_t_part.smt2 b/bench/tasks/example_extend_t_part.smt2 new file mode 100755 index 000000000..2b9c0e35f --- /dev/null +++ b/bench/tasks/example_extend_t_part.smt2 @@ -0,0 +1,33 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($x$0 Bool) ($state$0 Int) ($bias$0 Int) ($prop1$0 Bool) ($prop2$0 Bool) ($prop3$0 Bool) ($prop4$0 Bool) ($prop_all$0 Bool) ($bias_max$0 Bool) ($x$1 Bool) ($state$1 Int) ($bias$1 Int) ($prop1$1 Bool) ($prop2$1 Bool) ($prop3$1 Bool) ($prop4$1 Bool) ($prop_all$1 Bool) ($bias_max$1 Bool)) Bool (and (= $bias$1 (ite %init 0 (+ (ite $x$1 1 (- 0 1)) $bias$0))) (= $bias_max$1 (ite %init false (or (or (>= $bias$1 2) (<= $bias$1 (- 0 2))) $bias_max$0))) (= $prop1$1 (=> (= $state$1 0) (= $bias$1 0))) (= $prop2$1 (ite %init true (=> (and (= $state$0 0) $x$1) (= $state$1 2)))) (= $prop3$1 (ite %init true (=> (and (= $state$0 0) (not $x$1)) (= $state$1 1)))) (= $prop4$1 (=> $bias_max$1 (= $state$1 3))) (= $prop_all$1 (and (and (and $prop1$1 $prop2$1) $prop3$1) $prop4$1)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $x$~1 () Bool) +(declare-fun $state$~1 () Int) +(declare-fun $bias$~1 () Int) +(declare-fun $prop1$~1 () Bool) +(declare-fun $prop2$~1 () Bool) +(declare-fun $prop3$~1 () Bool) +(declare-fun $prop4$~1 () Bool) +(declare-fun $prop_all$~1 () Bool) +(declare-fun $bias_max$~1 () Bool) +(declare-fun $x$0 () Bool) +(declare-fun $state$0 () Int) +(declare-fun $bias$0 () Int) +(declare-fun $prop1$0 () Bool) +(declare-fun $prop2$0 () Bool) +(declare-fun $prop3$0 () Bool) +(declare-fun $prop4$0 () Bool) +(declare-fun $prop_all$0 () Bool) +(declare-fun $bias_max$0 () Bool) +(declare-fun $x$1 () Bool) +(declare-fun $state$3 () Int) +(declare-fun $bias$3 () Int) +(declare-fun $prop1$3 () Bool) +(declare-fun $prop2$3 () Bool) +(declare-fun $prop3$3 () Bool) +(declare-fun $prop4$3 () Bool) +(declare-fun $prop_all$3 () Bool) +(declare-fun $bias_max$3 () Bool) +(assert (and (T false $x$0 $state$0 $bias$0 $prop1$0 $prop2$0 $prop3$0 $prop4$0 $prop_all$0 $bias_max$0 $x$1 $state$3 $bias$3 $prop1$3 $prop2$3 $prop3$3 $prop4$3 $prop_all$3 $bias_max$3) $prop_all$3)) diff --git a/bench/tasks/fast_1_e7_2044_e8_1396_base_s_part.smt2 b/bench/tasks/fast_1_e7_2044_e8_1396_base_s_part.smt2 new file mode 100755 index 000000000..f061363fa --- /dev/null +++ b/bench/tasks/fast_1_e7_2044_e8_1396_base_s_part.smt2 @@ -0,0 +1,15 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($V83_cca$0 Bool) ($OK$0 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($V83_cca$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite (ite %init false (and $V83_cca$1 (not $V83_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true))) +; Universally quantified variables +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $V83_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $V83_cca$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T true $ccseti$~1 $ccsetd$~1 $ccr$~1 $V83_cca$~1 $OK$~1 $ccseti$0 $ccsetd$0 $ccr$0 $V83_cca$0 $OK$0)) diff --git a/bench/tasks/fast_1_e7_2044_e8_1396_base_t_part.smt2 b/bench/tasks/fast_1_e7_2044_e8_1396_base_t_part.smt2 new file mode 100755 index 000000000..cb50834ce --- /dev/null +++ b/bench/tasks/fast_1_e7_2044_e8_1396_base_t_part.smt2 @@ -0,0 +1,15 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($V83_cca$0 Bool) ($OK$0 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($V83_cca$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite (ite %init false (and $V83_cca$1 (not $V83_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true))) +; Universally quantified variables +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $V83_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $V83_cca$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T true $ccseti$~1 $ccsetd$~1 $ccr$~1 $V83_cca$~1 $OK$~1 $ccseti$0 $ccsetd$0 $ccr$0 $V83_cca$2 $OK$2) $OK$2)) diff --git a/bench/tasks/fast_1_e7_2044_e8_1396_extend_s_part.smt2 b/bench/tasks/fast_1_e7_2044_e8_1396_extend_s_part.smt2 new file mode 100755 index 000000000..944ca91c4 --- /dev/null +++ b/bench/tasks/fast_1_e7_2044_e8_1396_extend_s_part.smt2 @@ -0,0 +1,16 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($V83_cca$0 Bool) ($OK$0 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($V83_cca$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite (ite %init false (and $V83_cca$1 (not $V83_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $V83_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $V83_cca$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T %init $ccseti$~1 $ccsetd$~1 $ccr$~1 $V83_cca$~1 $OK$~1 $ccseti$0 $ccsetd$0 $ccr$0 $V83_cca$0 $OK$0)) diff --git a/bench/tasks/fast_1_e7_2044_e8_1396_extend_t_part.smt2 b/bench/tasks/fast_1_e7_2044_e8_1396_extend_t_part.smt2 new file mode 100755 index 000000000..79a4a17d2 --- /dev/null +++ b/bench/tasks/fast_1_e7_2044_e8_1396_extend_t_part.smt2 @@ -0,0 +1,16 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($V83_cca$0 Bool) ($OK$0 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($V83_cca$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite (ite %init false (and $V83_cca$1 (not $V83_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $V83_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $V83_cca$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $ccseti$~1 $ccsetd$~1 $ccr$~1 $V83_cca$~1 $OK$~1 $ccseti$0 $ccsetd$0 $ccr$0 $V83_cca$2 $OK$2) $OK$2)) diff --git a/bench/tasks/fast_1_e8_747_base1_s_part.smt2 b/bench/tasks/fast_1_e8_747_base1_s_part.smt2 new file mode 100755 index 000000000..f061363fa --- /dev/null +++ b/bench/tasks/fast_1_e8_747_base1_s_part.smt2 @@ -0,0 +1,15 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($V83_cca$0 Bool) ($OK$0 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($V83_cca$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite (ite %init false (and $V83_cca$1 (not $V83_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true))) +; Universally quantified variables +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $V83_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $V83_cca$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T true $ccseti$~1 $ccsetd$~1 $ccr$~1 $V83_cca$~1 $OK$~1 $ccseti$0 $ccsetd$0 $ccr$0 $V83_cca$0 $OK$0)) diff --git a/bench/tasks/fast_1_e8_747_base1_t_part.smt2 b/bench/tasks/fast_1_e8_747_base1_t_part.smt2 new file mode 100755 index 000000000..cb50834ce --- /dev/null +++ b/bench/tasks/fast_1_e8_747_base1_t_part.smt2 @@ -0,0 +1,15 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($V83_cca$0 Bool) ($OK$0 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($V83_cca$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite (ite %init false (and $V83_cca$1 (not $V83_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true))) +; Universally quantified variables +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $V83_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $V83_cca$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T true $ccseti$~1 $ccsetd$~1 $ccr$~1 $V83_cca$~1 $OK$~1 $ccseti$0 $ccsetd$0 $ccr$0 $V83_cca$2 $OK$2) $OK$2)) diff --git a/bench/tasks/fast_1_e8_747_base2_s_part.smt2 b/bench/tasks/fast_1_e8_747_base2_s_part.smt2 new file mode 100755 index 000000000..3706be97f --- /dev/null +++ b/bench/tasks/fast_1_e8_747_base2_s_part.smt2 @@ -0,0 +1,22 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($V83_cca$0 Bool) ($OK$0 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($V83_cca$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite (ite %init false (and $V83_cca$1 (not $V83_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true))) +; Universally quantified variables +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $V83_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $V83_cca$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $ccseti$1 () Bool) +(declare-fun $ccsetd$1 () Bool) +(declare-fun $ccr$1 () Bool) +(declare-fun $V83_cca$1 () Bool) +(declare-fun $OK$1 () Bool) +(assert (T true $ccseti$~1 $ccsetd$~1 $ccr$~1 $V83_cca$~1 $OK$~1 $ccseti$0 $ccsetd$0 $ccr$0 $V83_cca$0 $OK$0)) +(assert $OK$0) +(assert (T false $ccseti$0 $ccsetd$0 $ccr$0 $V83_cca$0 $OK$0 $ccseti$1 $ccsetd$1 $ccr$1 $V83_cca$1 $OK$1)) diff --git a/bench/tasks/fast_1_e8_747_base2_t_part.smt2 b/bench/tasks/fast_1_e8_747_base2_t_part.smt2 new file mode 100755 index 000000000..125723d54 --- /dev/null +++ b/bench/tasks/fast_1_e8_747_base2_t_part.smt2 @@ -0,0 +1,20 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($V83_cca$0 Bool) ($OK$0 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($V83_cca$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite (ite %init false (and $V83_cca$1 (not $V83_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true))) +; Universally quantified variables +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $V83_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $V83_cca$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $ccseti$1 () Bool) +(declare-fun $ccsetd$1 () Bool) +(declare-fun $ccr$1 () Bool) +(declare-fun $V83_cca$3 () Bool) +(declare-fun $OK$3 () Bool) +(assert (and (T false $ccseti$0 $ccsetd$0 $ccr$0 $V83_cca$0 $OK$0 $ccseti$1 $ccsetd$1 $ccr$1 $V83_cca$3 $OK$3) $OK$3)) diff --git a/bench/tasks/fast_1_e8_747_e8_1041_base_s_part.smt2 b/bench/tasks/fast_1_e8_747_e8_1041_base_s_part.smt2 new file mode 100755 index 000000000..f061363fa --- /dev/null +++ b/bench/tasks/fast_1_e8_747_e8_1041_base_s_part.smt2 @@ -0,0 +1,15 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($V83_cca$0 Bool) ($OK$0 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($V83_cca$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite (ite %init false (and $V83_cca$1 (not $V83_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true))) +; Universally quantified variables +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $V83_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $V83_cca$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T true $ccseti$~1 $ccsetd$~1 $ccr$~1 $V83_cca$~1 $OK$~1 $ccseti$0 $ccsetd$0 $ccr$0 $V83_cca$0 $OK$0)) diff --git a/bench/tasks/fast_1_e8_747_e8_1041_base_t_part.smt2 b/bench/tasks/fast_1_e8_747_e8_1041_base_t_part.smt2 new file mode 100755 index 000000000..cb50834ce --- /dev/null +++ b/bench/tasks/fast_1_e8_747_e8_1041_base_t_part.smt2 @@ -0,0 +1,15 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($V83_cca$0 Bool) ($OK$0 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($V83_cca$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite (ite %init false (and $V83_cca$1 (not $V83_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true))) +; Universally quantified variables +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $V83_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $V83_cca$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T true $ccseti$~1 $ccsetd$~1 $ccr$~1 $V83_cca$~1 $OK$~1 $ccseti$0 $ccsetd$0 $ccr$0 $V83_cca$2 $OK$2) $OK$2)) diff --git a/bench/tasks/fast_1_e8_747_e8_1041_extend_s_part.smt2 b/bench/tasks/fast_1_e8_747_e8_1041_extend_s_part.smt2 new file mode 100755 index 000000000..944ca91c4 --- /dev/null +++ b/bench/tasks/fast_1_e8_747_e8_1041_extend_s_part.smt2 @@ -0,0 +1,16 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($V83_cca$0 Bool) ($OK$0 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($V83_cca$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite (ite %init false (and $V83_cca$1 (not $V83_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $V83_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $V83_cca$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T %init $ccseti$~1 $ccsetd$~1 $ccr$~1 $V83_cca$~1 $OK$~1 $ccseti$0 $ccsetd$0 $ccr$0 $V83_cca$0 $OK$0)) diff --git a/bench/tasks/fast_1_e8_747_e8_1041_extend_t_part.smt2 b/bench/tasks/fast_1_e8_747_e8_1041_extend_t_part.smt2 new file mode 100755 index 000000000..79a4a17d2 --- /dev/null +++ b/bench/tasks/fast_1_e8_747_e8_1041_extend_t_part.smt2 @@ -0,0 +1,16 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($V83_cca$0 Bool) ($OK$0 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($V83_cca$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite (ite %init false (and $V83_cca$1 (not $V83_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $V83_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $V83_cca$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $ccseti$~1 $ccsetd$~1 $ccr$~1 $V83_cca$~1 $OK$~1 $ccseti$0 $ccsetd$0 $ccr$0 $V83_cca$2 $OK$2) $OK$2)) diff --git a/bench/tasks/fast_1_e8_747_extend_s_part.smt2 b/bench/tasks/fast_1_e8_747_extend_s_part.smt2 new file mode 100755 index 000000000..944ca91c4 --- /dev/null +++ b/bench/tasks/fast_1_e8_747_extend_s_part.smt2 @@ -0,0 +1,16 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($V83_cca$0 Bool) ($OK$0 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($V83_cca$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite (ite %init false (and $V83_cca$1 (not $V83_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $V83_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $V83_cca$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T %init $ccseti$~1 $ccsetd$~1 $ccr$~1 $V83_cca$~1 $OK$~1 $ccseti$0 $ccsetd$0 $ccr$0 $V83_cca$0 $OK$0)) diff --git a/bench/tasks/fast_1_e8_747_extend_t_part.smt2 b/bench/tasks/fast_1_e8_747_extend_t_part.smt2 new file mode 100755 index 000000000..79a4a17d2 --- /dev/null +++ b/bench/tasks/fast_1_e8_747_extend_t_part.smt2 @@ -0,0 +1,16 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($V83_cca$0 Bool) ($OK$0 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($V83_cca$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite (ite %init false (and $V83_cca$1 (not $V83_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $V83_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $V83_cca$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $ccseti$~1 $ccsetd$~1 $ccr$~1 $V83_cca$~1 $OK$~1 $ccseti$0 $ccsetd$0 $ccr$0 $V83_cca$2 $OK$2) $OK$2)) diff --git a/bench/tasks/fast_2_e7_2526_e8_1145_base1_s_part.smt2 b/bench/tasks/fast_2_e7_2526_e8_1145_base1_s_part.smt2 new file mode 100755 index 000000000..577ea0ab5 --- /dev/null +++ b/bench/tasks/fast_2_e7_2526_e8_1145_base1_s_part.smt2 @@ -0,0 +1,49 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($igsw$0 Bool) ($ccd$0 Bool) ($cconoff$0 Bool) ($bpa$0 Bool) ($cccanc$0 Bool) ($battok$0 Bool) ($gearok$0 Bool) ($qfok$0 Bool) ($sdok$0 Bool) ($accok$0 Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($vs$0 Int) ($V86_ccont$0 Bool) ($~flatten0$0 Bool) ($V87_cca$0 Bool) ($OK$0 Bool) ($V82_p1$0 Bool) ($V83_p2$0 Bool) ($V84_p3$0 Bool) ($V85_p4$0 Bool) ($igsw$1 Bool) ($ccd$1 Bool) ($cconoff$1 Bool) ($bpa$1 Bool) ($cccanc$1 Bool) ($battok$1 Bool) ($gearok$1 Bool) ($qfok$1 Bool) ($sdok$1 Bool) ($accok$1 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($vs$1 Int) ($V86_ccont$1 Bool) ($~flatten0$1 Bool) ($V87_cca$1 Bool) ($OK$1 Bool) ($V82_p1$1 Bool) ($V83_p2$1 Bool) ($V84_p3$1 Bool) ($V85_p4$1 Bool)) Bool (and (= $OK$1 (and (and (and $V82_p1$1 $V83_p2$1) $V84_p3$1) $V85_p4$1)) (= $V82_p1$1 (ite (ite %init false (and $V87_cca$1 (not $V87_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true)) (= $V83_p2$1 (ite (not (and (and (and (and (and (and (and (and (and $V86_ccont$1 (not $bpa$1)) $battok$1) $gearok$1) $qfok$1) (ite %init false (and $sdok$0 $sdok$1))) (<= 35 $vs$1)) (<= $vs$1 200)) (ite %init false (and $~flatten0$0 $accok$1))) (not $cccanc$1))) (not $V87_cca$1) true)) (= $V84_p3$1 (ite (ite %init false (and $V86_ccont$1 (not $V86_ccont$0))) (and (and (not (ite %init false (or (and $igsw$1 (not $igsw$0)) (and (not $igsw$1) $igsw$0)))) (not $ccd$1)) (ite %init false (and $cconoff$1 (not $cconoff$0)))) true)) (= $V85_p4$1 (ite (ite %init false (or (and $igsw$1 (not $igsw$0)) (and (not $igsw$1) $igsw$0))) (not $V87_cca$1) true)))) +; Universally quantified variables +(declare-fun $igsw$~1 () Bool) +(declare-fun $ccd$~1 () Bool) +(declare-fun $cconoff$~1 () Bool) +(declare-fun $bpa$~1 () Bool) +(declare-fun $cccanc$~1 () Bool) +(declare-fun $battok$~1 () Bool) +(declare-fun $gearok$~1 () Bool) +(declare-fun $qfok$~1 () Bool) +(declare-fun $sdok$~1 () Bool) +(declare-fun $accok$~1 () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $vs$~1 () Int) +(declare-fun $V86_ccont$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $V87_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V82_p1$~1 () Bool) +(declare-fun $V83_p2$~1 () Bool) +(declare-fun $V84_p3$~1 () Bool) +(declare-fun $V85_p4$~1 () Bool) +(declare-fun $igsw$0 () Bool) +(declare-fun $ccd$0 () Bool) +(declare-fun $cconoff$0 () Bool) +(declare-fun $bpa$0 () Bool) +(declare-fun $cccanc$0 () Bool) +(declare-fun $battok$0 () Bool) +(declare-fun $gearok$0 () Bool) +(declare-fun $qfok$0 () Bool) +(declare-fun $sdok$0 () Bool) +(declare-fun $accok$0 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $vs$0 () Int) +(declare-fun $V86_ccont$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $V87_cca$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V82_p1$0 () Bool) +(declare-fun $V83_p2$0 () Bool) +(declare-fun $V84_p3$0 () Bool) +(declare-fun $V85_p4$0 () Bool) +(assert (T true $igsw$~1 $ccd$~1 $cconoff$~1 $bpa$~1 $cccanc$~1 $battok$~1 $gearok$~1 $qfok$~1 $sdok$~1 $accok$~1 $ccseti$~1 $ccsetd$~1 $ccr$~1 $vs$~1 $V86_ccont$~1 $~flatten0$~1 $V87_cca$~1 $OK$~1 $V82_p1$~1 $V83_p2$~1 $V84_p3$~1 $V85_p4$~1 $igsw$0 $ccd$0 $cconoff$0 $bpa$0 $cccanc$0 $battok$0 $gearok$0 $qfok$0 $sdok$0 $accok$0 $ccseti$0 $ccsetd$0 $ccr$0 $vs$0 $V86_ccont$0 $~flatten0$0 $V87_cca$0 $OK$0 $V82_p1$0 $V83_p2$0 $V84_p3$0 $V85_p4$0)) diff --git a/bench/tasks/fast_2_e7_2526_e8_1145_base1_t_part.smt2 b/bench/tasks/fast_2_e7_2526_e8_1145_base1_t_part.smt2 new file mode 100755 index 000000000..c6ba333c9 --- /dev/null +++ b/bench/tasks/fast_2_e7_2526_e8_1145_base1_t_part.smt2 @@ -0,0 +1,49 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($igsw$0 Bool) ($ccd$0 Bool) ($cconoff$0 Bool) ($bpa$0 Bool) ($cccanc$0 Bool) ($battok$0 Bool) ($gearok$0 Bool) ($qfok$0 Bool) ($sdok$0 Bool) ($accok$0 Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($vs$0 Int) ($V86_ccont$0 Bool) ($~flatten0$0 Bool) ($V87_cca$0 Bool) ($OK$0 Bool) ($V82_p1$0 Bool) ($V83_p2$0 Bool) ($V84_p3$0 Bool) ($V85_p4$0 Bool) ($igsw$1 Bool) ($ccd$1 Bool) ($cconoff$1 Bool) ($bpa$1 Bool) ($cccanc$1 Bool) ($battok$1 Bool) ($gearok$1 Bool) ($qfok$1 Bool) ($sdok$1 Bool) ($accok$1 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($vs$1 Int) ($V86_ccont$1 Bool) ($~flatten0$1 Bool) ($V87_cca$1 Bool) ($OK$1 Bool) ($V82_p1$1 Bool) ($V83_p2$1 Bool) ($V84_p3$1 Bool) ($V85_p4$1 Bool)) Bool (and (= $OK$1 (and (and (and $V82_p1$1 $V83_p2$1) $V84_p3$1) $V85_p4$1)) (= $V82_p1$1 (ite (ite %init false (and $V87_cca$1 (not $V87_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true)) (= $V83_p2$1 (ite (not (and (and (and (and (and (and (and (and (and $V86_ccont$1 (not $bpa$1)) $battok$1) $gearok$1) $qfok$1) (ite %init false (and $sdok$0 $sdok$1))) (<= 35 $vs$1)) (<= $vs$1 200)) (ite %init false (and $~flatten0$0 $accok$1))) (not $cccanc$1))) (not $V87_cca$1) true)) (= $V84_p3$1 (ite (ite %init false (and $V86_ccont$1 (not $V86_ccont$0))) (and (and (not (ite %init false (or (and $igsw$1 (not $igsw$0)) (and (not $igsw$1) $igsw$0)))) (not $ccd$1)) (ite %init false (and $cconoff$1 (not $cconoff$0)))) true)) (= $V85_p4$1 (ite (ite %init false (or (and $igsw$1 (not $igsw$0)) (and (not $igsw$1) $igsw$0))) (not $V87_cca$1) true)))) +; Universally quantified variables +(declare-fun $igsw$~1 () Bool) +(declare-fun $ccd$~1 () Bool) +(declare-fun $cconoff$~1 () Bool) +(declare-fun $bpa$~1 () Bool) +(declare-fun $cccanc$~1 () Bool) +(declare-fun $battok$~1 () Bool) +(declare-fun $gearok$~1 () Bool) +(declare-fun $qfok$~1 () Bool) +(declare-fun $sdok$~1 () Bool) +(declare-fun $accok$~1 () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $vs$~1 () Int) +(declare-fun $V86_ccont$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $V87_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V82_p1$~1 () Bool) +(declare-fun $V83_p2$~1 () Bool) +(declare-fun $V84_p3$~1 () Bool) +(declare-fun $V85_p4$~1 () Bool) +(declare-fun $igsw$0 () Bool) +(declare-fun $ccd$0 () Bool) +(declare-fun $cconoff$0 () Bool) +(declare-fun $bpa$0 () Bool) +(declare-fun $cccanc$0 () Bool) +(declare-fun $battok$0 () Bool) +(declare-fun $gearok$0 () Bool) +(declare-fun $qfok$0 () Bool) +(declare-fun $sdok$0 () Bool) +(declare-fun $accok$0 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $vs$0 () Int) +(declare-fun $V86_ccont$2 () Bool) +(declare-fun $~flatten0$2 () Bool) +(declare-fun $V87_cca$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V82_p1$2 () Bool) +(declare-fun $V83_p2$2 () Bool) +(declare-fun $V84_p3$2 () Bool) +(declare-fun $V85_p4$2 () Bool) +(assert (and (T true $igsw$~1 $ccd$~1 $cconoff$~1 $bpa$~1 $cccanc$~1 $battok$~1 $gearok$~1 $qfok$~1 $sdok$~1 $accok$~1 $ccseti$~1 $ccsetd$~1 $ccr$~1 $vs$~1 $V86_ccont$~1 $~flatten0$~1 $V87_cca$~1 $OK$~1 $V82_p1$~1 $V83_p2$~1 $V84_p3$~1 $V85_p4$~1 $igsw$0 $ccd$0 $cconoff$0 $bpa$0 $cccanc$0 $battok$0 $gearok$0 $qfok$0 $sdok$0 $accok$0 $ccseti$0 $ccsetd$0 $ccr$0 $vs$0 $V86_ccont$2 $~flatten0$2 $V87_cca$2 $OK$2 $V82_p1$2 $V83_p2$2 $V84_p3$2 $V85_p4$2) $OK$2)) diff --git a/bench/tasks/fast_2_e7_2526_e8_1145_base2_s_part.smt2 b/bench/tasks/fast_2_e7_2526_e8_1145_base2_s_part.smt2 new file mode 100755 index 000000000..870ee0d4c --- /dev/null +++ b/bench/tasks/fast_2_e7_2526_e8_1145_base2_s_part.smt2 @@ -0,0 +1,73 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($igsw$0 Bool) ($ccd$0 Bool) ($cconoff$0 Bool) ($bpa$0 Bool) ($cccanc$0 Bool) ($battok$0 Bool) ($gearok$0 Bool) ($qfok$0 Bool) ($sdok$0 Bool) ($accok$0 Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($vs$0 Int) ($V86_ccont$0 Bool) ($~flatten0$0 Bool) ($V87_cca$0 Bool) ($OK$0 Bool) ($V82_p1$0 Bool) ($V83_p2$0 Bool) ($V84_p3$0 Bool) ($V85_p4$0 Bool) ($igsw$1 Bool) ($ccd$1 Bool) ($cconoff$1 Bool) ($bpa$1 Bool) ($cccanc$1 Bool) ($battok$1 Bool) ($gearok$1 Bool) ($qfok$1 Bool) ($sdok$1 Bool) ($accok$1 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($vs$1 Int) ($V86_ccont$1 Bool) ($~flatten0$1 Bool) ($V87_cca$1 Bool) ($OK$1 Bool) ($V82_p1$1 Bool) ($V83_p2$1 Bool) ($V84_p3$1 Bool) ($V85_p4$1 Bool)) Bool (and (= $OK$1 (and (and (and $V82_p1$1 $V83_p2$1) $V84_p3$1) $V85_p4$1)) (= $V82_p1$1 (ite (ite %init false (and $V87_cca$1 (not $V87_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true)) (= $V83_p2$1 (ite (not (and (and (and (and (and (and (and (and (and $V86_ccont$1 (not $bpa$1)) $battok$1) $gearok$1) $qfok$1) (ite %init false (and $sdok$0 $sdok$1))) (<= 35 $vs$1)) (<= $vs$1 200)) (ite %init false (and $~flatten0$0 $accok$1))) (not $cccanc$1))) (not $V87_cca$1) true)) (= $V84_p3$1 (ite (ite %init false (and $V86_ccont$1 (not $V86_ccont$0))) (and (and (not (ite %init false (or (and $igsw$1 (not $igsw$0)) (and (not $igsw$1) $igsw$0)))) (not $ccd$1)) (ite %init false (and $cconoff$1 (not $cconoff$0)))) true)) (= $V85_p4$1 (ite (ite %init false (or (and $igsw$1 (not $igsw$0)) (and (not $igsw$1) $igsw$0))) (not $V87_cca$1) true)))) +; Universally quantified variables +(declare-fun $igsw$~1 () Bool) +(declare-fun $ccd$~1 () Bool) +(declare-fun $cconoff$~1 () Bool) +(declare-fun $bpa$~1 () Bool) +(declare-fun $cccanc$~1 () Bool) +(declare-fun $battok$~1 () Bool) +(declare-fun $gearok$~1 () Bool) +(declare-fun $qfok$~1 () Bool) +(declare-fun $sdok$~1 () Bool) +(declare-fun $accok$~1 () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $vs$~1 () Int) +(declare-fun $V86_ccont$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $V87_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V82_p1$~1 () Bool) +(declare-fun $V83_p2$~1 () Bool) +(declare-fun $V84_p3$~1 () Bool) +(declare-fun $V85_p4$~1 () Bool) +(declare-fun $igsw$0 () Bool) +(declare-fun $ccd$0 () Bool) +(declare-fun $cconoff$0 () Bool) +(declare-fun $bpa$0 () Bool) +(declare-fun $cccanc$0 () Bool) +(declare-fun $battok$0 () Bool) +(declare-fun $gearok$0 () Bool) +(declare-fun $qfok$0 () Bool) +(declare-fun $sdok$0 () Bool) +(declare-fun $accok$0 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $vs$0 () Int) +(declare-fun $V86_ccont$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $V87_cca$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V82_p1$0 () Bool) +(declare-fun $V83_p2$0 () Bool) +(declare-fun $V84_p3$0 () Bool) +(declare-fun $V85_p4$0 () Bool) +(declare-fun $igsw$1 () Bool) +(declare-fun $ccd$1 () Bool) +(declare-fun $cconoff$1 () Bool) +(declare-fun $bpa$1 () Bool) +(declare-fun $cccanc$1 () Bool) +(declare-fun $battok$1 () Bool) +(declare-fun $gearok$1 () Bool) +(declare-fun $qfok$1 () Bool) +(declare-fun $sdok$1 () Bool) +(declare-fun $accok$1 () Bool) +(declare-fun $ccseti$1 () Bool) +(declare-fun $ccsetd$1 () Bool) +(declare-fun $ccr$1 () Bool) +(declare-fun $vs$1 () Int) +(declare-fun $V86_ccont$1 () Bool) +(declare-fun $~flatten0$1 () Bool) +(declare-fun $V87_cca$1 () Bool) +(declare-fun $OK$1 () Bool) +(declare-fun $V82_p1$1 () Bool) +(declare-fun $V83_p2$1 () Bool) +(declare-fun $V84_p3$1 () Bool) +(declare-fun $V85_p4$1 () Bool) +(assert (T true $igsw$~1 $ccd$~1 $cconoff$~1 $bpa$~1 $cccanc$~1 $battok$~1 $gearok$~1 $qfok$~1 $sdok$~1 $accok$~1 $ccseti$~1 $ccsetd$~1 $ccr$~1 $vs$~1 $V86_ccont$~1 $~flatten0$~1 $V87_cca$~1 $OK$~1 $V82_p1$~1 $V83_p2$~1 $V84_p3$~1 $V85_p4$~1 $igsw$0 $ccd$0 $cconoff$0 $bpa$0 $cccanc$0 $battok$0 $gearok$0 $qfok$0 $sdok$0 $accok$0 $ccseti$0 $ccsetd$0 $ccr$0 $vs$0 $V86_ccont$0 $~flatten0$0 $V87_cca$0 $OK$0 $V82_p1$0 $V83_p2$0 $V84_p3$0 $V85_p4$0)) +(assert $OK$0) +(assert (T false $igsw$0 $ccd$0 $cconoff$0 $bpa$0 $cccanc$0 $battok$0 $gearok$0 $qfok$0 $sdok$0 $accok$0 $ccseti$0 $ccsetd$0 $ccr$0 $vs$0 $V86_ccont$0 $~flatten0$0 $V87_cca$0 $OK$0 $V82_p1$0 $V83_p2$0 $V84_p3$0 $V85_p4$0 $igsw$1 $ccd$1 $cconoff$1 $bpa$1 $cccanc$1 $battok$1 $gearok$1 $qfok$1 $sdok$1 $accok$1 $ccseti$1 $ccsetd$1 $ccr$1 $vs$1 $V86_ccont$1 $~flatten0$1 $V87_cca$1 $OK$1 $V82_p1$1 $V83_p2$1 $V84_p3$1 $V85_p4$1)) diff --git a/bench/tasks/fast_2_e7_2526_e8_1145_base2_t_part.smt2 b/bench/tasks/fast_2_e7_2526_e8_1145_base2_t_part.smt2 new file mode 100755 index 000000000..983d296bf --- /dev/null +++ b/bench/tasks/fast_2_e7_2526_e8_1145_base2_t_part.smt2 @@ -0,0 +1,71 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($igsw$0 Bool) ($ccd$0 Bool) ($cconoff$0 Bool) ($bpa$0 Bool) ($cccanc$0 Bool) ($battok$0 Bool) ($gearok$0 Bool) ($qfok$0 Bool) ($sdok$0 Bool) ($accok$0 Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($vs$0 Int) ($V86_ccont$0 Bool) ($~flatten0$0 Bool) ($V87_cca$0 Bool) ($OK$0 Bool) ($V82_p1$0 Bool) ($V83_p2$0 Bool) ($V84_p3$0 Bool) ($V85_p4$0 Bool) ($igsw$1 Bool) ($ccd$1 Bool) ($cconoff$1 Bool) ($bpa$1 Bool) ($cccanc$1 Bool) ($battok$1 Bool) ($gearok$1 Bool) ($qfok$1 Bool) ($sdok$1 Bool) ($accok$1 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($vs$1 Int) ($V86_ccont$1 Bool) ($~flatten0$1 Bool) ($V87_cca$1 Bool) ($OK$1 Bool) ($V82_p1$1 Bool) ($V83_p2$1 Bool) ($V84_p3$1 Bool) ($V85_p4$1 Bool)) Bool (and (= $OK$1 (and (and (and $V82_p1$1 $V83_p2$1) $V84_p3$1) $V85_p4$1)) (= $V82_p1$1 (ite (ite %init false (and $V87_cca$1 (not $V87_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true)) (= $V83_p2$1 (ite (not (and (and (and (and (and (and (and (and (and $V86_ccont$1 (not $bpa$1)) $battok$1) $gearok$1) $qfok$1) (ite %init false (and $sdok$0 $sdok$1))) (<= 35 $vs$1)) (<= $vs$1 200)) (ite %init false (and $~flatten0$0 $accok$1))) (not $cccanc$1))) (not $V87_cca$1) true)) (= $V84_p3$1 (ite (ite %init false (and $V86_ccont$1 (not $V86_ccont$0))) (and (and (not (ite %init false (or (and $igsw$1 (not $igsw$0)) (and (not $igsw$1) $igsw$0)))) (not $ccd$1)) (ite %init false (and $cconoff$1 (not $cconoff$0)))) true)) (= $V85_p4$1 (ite (ite %init false (or (and $igsw$1 (not $igsw$0)) (and (not $igsw$1) $igsw$0))) (not $V87_cca$1) true)))) +; Universally quantified variables +(declare-fun $igsw$~1 () Bool) +(declare-fun $ccd$~1 () Bool) +(declare-fun $cconoff$~1 () Bool) +(declare-fun $bpa$~1 () Bool) +(declare-fun $cccanc$~1 () Bool) +(declare-fun $battok$~1 () Bool) +(declare-fun $gearok$~1 () Bool) +(declare-fun $qfok$~1 () Bool) +(declare-fun $sdok$~1 () Bool) +(declare-fun $accok$~1 () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $vs$~1 () Int) +(declare-fun $V86_ccont$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $V87_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V82_p1$~1 () Bool) +(declare-fun $V83_p2$~1 () Bool) +(declare-fun $V84_p3$~1 () Bool) +(declare-fun $V85_p4$~1 () Bool) +(declare-fun $igsw$0 () Bool) +(declare-fun $ccd$0 () Bool) +(declare-fun $cconoff$0 () Bool) +(declare-fun $bpa$0 () Bool) +(declare-fun $cccanc$0 () Bool) +(declare-fun $battok$0 () Bool) +(declare-fun $gearok$0 () Bool) +(declare-fun $qfok$0 () Bool) +(declare-fun $sdok$0 () Bool) +(declare-fun $accok$0 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $vs$0 () Int) +(declare-fun $V86_ccont$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $V87_cca$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V82_p1$0 () Bool) +(declare-fun $V83_p2$0 () Bool) +(declare-fun $V84_p3$0 () Bool) +(declare-fun $V85_p4$0 () Bool) +(declare-fun $igsw$1 () Bool) +(declare-fun $ccd$1 () Bool) +(declare-fun $cconoff$1 () Bool) +(declare-fun $bpa$1 () Bool) +(declare-fun $cccanc$1 () Bool) +(declare-fun $battok$1 () Bool) +(declare-fun $gearok$1 () Bool) +(declare-fun $qfok$1 () Bool) +(declare-fun $sdok$1 () Bool) +(declare-fun $accok$1 () Bool) +(declare-fun $ccseti$1 () Bool) +(declare-fun $ccsetd$1 () Bool) +(declare-fun $ccr$1 () Bool) +(declare-fun $vs$1 () Int) +(declare-fun $V86_ccont$3 () Bool) +(declare-fun $~flatten0$3 () Bool) +(declare-fun $V87_cca$3 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $V82_p1$3 () Bool) +(declare-fun $V83_p2$3 () Bool) +(declare-fun $V84_p3$3 () Bool) +(declare-fun $V85_p4$3 () Bool) +(assert (and (T false $igsw$0 $ccd$0 $cconoff$0 $bpa$0 $cccanc$0 $battok$0 $gearok$0 $qfok$0 $sdok$0 $accok$0 $ccseti$0 $ccsetd$0 $ccr$0 $vs$0 $V86_ccont$0 $~flatten0$0 $V87_cca$0 $OK$0 $V82_p1$0 $V83_p2$0 $V84_p3$0 $V85_p4$0 $igsw$1 $ccd$1 $cconoff$1 $bpa$1 $cccanc$1 $battok$1 $gearok$1 $qfok$1 $sdok$1 $accok$1 $ccseti$1 $ccsetd$1 $ccr$1 $vs$1 $V86_ccont$3 $~flatten0$3 $V87_cca$3 $OK$3 $V82_p1$3 $V83_p2$3 $V84_p3$3 $V85_p4$3) $OK$3)) diff --git a/bench/tasks/fast_2_e7_2526_e8_1145_extend_s_part.smt2 b/bench/tasks/fast_2_e7_2526_e8_1145_extend_s_part.smt2 new file mode 100755 index 000000000..5500a52f2 --- /dev/null +++ b/bench/tasks/fast_2_e7_2526_e8_1145_extend_s_part.smt2 @@ -0,0 +1,50 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($igsw$0 Bool) ($ccd$0 Bool) ($cconoff$0 Bool) ($bpa$0 Bool) ($cccanc$0 Bool) ($battok$0 Bool) ($gearok$0 Bool) ($qfok$0 Bool) ($sdok$0 Bool) ($accok$0 Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($vs$0 Int) ($V86_ccont$0 Bool) ($~flatten0$0 Bool) ($V87_cca$0 Bool) ($OK$0 Bool) ($V82_p1$0 Bool) ($V83_p2$0 Bool) ($V84_p3$0 Bool) ($V85_p4$0 Bool) ($igsw$1 Bool) ($ccd$1 Bool) ($cconoff$1 Bool) ($bpa$1 Bool) ($cccanc$1 Bool) ($battok$1 Bool) ($gearok$1 Bool) ($qfok$1 Bool) ($sdok$1 Bool) ($accok$1 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($vs$1 Int) ($V86_ccont$1 Bool) ($~flatten0$1 Bool) ($V87_cca$1 Bool) ($OK$1 Bool) ($V82_p1$1 Bool) ($V83_p2$1 Bool) ($V84_p3$1 Bool) ($V85_p4$1 Bool)) Bool (and (= $OK$1 (and (and (and $V82_p1$1 $V83_p2$1) $V84_p3$1) $V85_p4$1)) (= $V82_p1$1 (ite (ite %init false (and $V87_cca$1 (not $V87_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true)) (= $V83_p2$1 (ite (not (and (and (and (and (and (and (and (and (and $V86_ccont$1 (not $bpa$1)) $battok$1) $gearok$1) $qfok$1) (ite %init false (and $sdok$0 $sdok$1))) (<= 35 $vs$1)) (<= $vs$1 200)) (ite %init false (and $~flatten0$0 $accok$1))) (not $cccanc$1))) (not $V87_cca$1) true)) (= $V84_p3$1 (ite (ite %init false (and $V86_ccont$1 (not $V86_ccont$0))) (and (and (not (ite %init false (or (and $igsw$1 (not $igsw$0)) (and (not $igsw$1) $igsw$0)))) (not $ccd$1)) (ite %init false (and $cconoff$1 (not $cconoff$0)))) true)) (= $V85_p4$1 (ite (ite %init false (or (and $igsw$1 (not $igsw$0)) (and (not $igsw$1) $igsw$0))) (not $V87_cca$1) true)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $igsw$~1 () Bool) +(declare-fun $ccd$~1 () Bool) +(declare-fun $cconoff$~1 () Bool) +(declare-fun $bpa$~1 () Bool) +(declare-fun $cccanc$~1 () Bool) +(declare-fun $battok$~1 () Bool) +(declare-fun $gearok$~1 () Bool) +(declare-fun $qfok$~1 () Bool) +(declare-fun $sdok$~1 () Bool) +(declare-fun $accok$~1 () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $vs$~1 () Int) +(declare-fun $V86_ccont$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $V87_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V82_p1$~1 () Bool) +(declare-fun $V83_p2$~1 () Bool) +(declare-fun $V84_p3$~1 () Bool) +(declare-fun $V85_p4$~1 () Bool) +(declare-fun $igsw$0 () Bool) +(declare-fun $ccd$0 () Bool) +(declare-fun $cconoff$0 () Bool) +(declare-fun $bpa$0 () Bool) +(declare-fun $cccanc$0 () Bool) +(declare-fun $battok$0 () Bool) +(declare-fun $gearok$0 () Bool) +(declare-fun $qfok$0 () Bool) +(declare-fun $sdok$0 () Bool) +(declare-fun $accok$0 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $vs$0 () Int) +(declare-fun $V86_ccont$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $V87_cca$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V82_p1$0 () Bool) +(declare-fun $V83_p2$0 () Bool) +(declare-fun $V84_p3$0 () Bool) +(declare-fun $V85_p4$0 () Bool) +(assert (T %init $igsw$~1 $ccd$~1 $cconoff$~1 $bpa$~1 $cccanc$~1 $battok$~1 $gearok$~1 $qfok$~1 $sdok$~1 $accok$~1 $ccseti$~1 $ccsetd$~1 $ccr$~1 $vs$~1 $V86_ccont$~1 $~flatten0$~1 $V87_cca$~1 $OK$~1 $V82_p1$~1 $V83_p2$~1 $V84_p3$~1 $V85_p4$~1 $igsw$0 $ccd$0 $cconoff$0 $bpa$0 $cccanc$0 $battok$0 $gearok$0 $qfok$0 $sdok$0 $accok$0 $ccseti$0 $ccsetd$0 $ccr$0 $vs$0 $V86_ccont$0 $~flatten0$0 $V87_cca$0 $OK$0 $V82_p1$0 $V83_p2$0 $V84_p3$0 $V85_p4$0)) diff --git a/bench/tasks/fast_2_e7_2526_e8_1145_extend_t_part.smt2 b/bench/tasks/fast_2_e7_2526_e8_1145_extend_t_part.smt2 new file mode 100755 index 000000000..501eff331 --- /dev/null +++ b/bench/tasks/fast_2_e7_2526_e8_1145_extend_t_part.smt2 @@ -0,0 +1,50 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($igsw$0 Bool) ($ccd$0 Bool) ($cconoff$0 Bool) ($bpa$0 Bool) ($cccanc$0 Bool) ($battok$0 Bool) ($gearok$0 Bool) ($qfok$0 Bool) ($sdok$0 Bool) ($accok$0 Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($vs$0 Int) ($V86_ccont$0 Bool) ($~flatten0$0 Bool) ($V87_cca$0 Bool) ($OK$0 Bool) ($V82_p1$0 Bool) ($V83_p2$0 Bool) ($V84_p3$0 Bool) ($V85_p4$0 Bool) ($igsw$1 Bool) ($ccd$1 Bool) ($cconoff$1 Bool) ($bpa$1 Bool) ($cccanc$1 Bool) ($battok$1 Bool) ($gearok$1 Bool) ($qfok$1 Bool) ($sdok$1 Bool) ($accok$1 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($vs$1 Int) ($V86_ccont$1 Bool) ($~flatten0$1 Bool) ($V87_cca$1 Bool) ($OK$1 Bool) ($V82_p1$1 Bool) ($V83_p2$1 Bool) ($V84_p3$1 Bool) ($V85_p4$1 Bool)) Bool (and (= $OK$1 (and (and (and $V82_p1$1 $V83_p2$1) $V84_p3$1) $V85_p4$1)) (= $V82_p1$1 (ite (ite %init false (and $V87_cca$1 (not $V87_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true)) (= $V83_p2$1 (ite (not (and (and (and (and (and (and (and (and (and $V86_ccont$1 (not $bpa$1)) $battok$1) $gearok$1) $qfok$1) (ite %init false (and $sdok$0 $sdok$1))) (<= 35 $vs$1)) (<= $vs$1 200)) (ite %init false (and $~flatten0$0 $accok$1))) (not $cccanc$1))) (not $V87_cca$1) true)) (= $V84_p3$1 (ite (ite %init false (and $V86_ccont$1 (not $V86_ccont$0))) (and (and (not (ite %init false (or (and $igsw$1 (not $igsw$0)) (and (not $igsw$1) $igsw$0)))) (not $ccd$1)) (ite %init false (and $cconoff$1 (not $cconoff$0)))) true)) (= $V85_p4$1 (ite (ite %init false (or (and $igsw$1 (not $igsw$0)) (and (not $igsw$1) $igsw$0))) (not $V87_cca$1) true)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $igsw$~1 () Bool) +(declare-fun $ccd$~1 () Bool) +(declare-fun $cconoff$~1 () Bool) +(declare-fun $bpa$~1 () Bool) +(declare-fun $cccanc$~1 () Bool) +(declare-fun $battok$~1 () Bool) +(declare-fun $gearok$~1 () Bool) +(declare-fun $qfok$~1 () Bool) +(declare-fun $sdok$~1 () Bool) +(declare-fun $accok$~1 () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $vs$~1 () Int) +(declare-fun $V86_ccont$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $V87_cca$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V82_p1$~1 () Bool) +(declare-fun $V83_p2$~1 () Bool) +(declare-fun $V84_p3$~1 () Bool) +(declare-fun $V85_p4$~1 () Bool) +(declare-fun $igsw$0 () Bool) +(declare-fun $ccd$0 () Bool) +(declare-fun $cconoff$0 () Bool) +(declare-fun $bpa$0 () Bool) +(declare-fun $cccanc$0 () Bool) +(declare-fun $battok$0 () Bool) +(declare-fun $gearok$0 () Bool) +(declare-fun $qfok$0 () Bool) +(declare-fun $sdok$0 () Bool) +(declare-fun $accok$0 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $vs$0 () Int) +(declare-fun $V86_ccont$2 () Bool) +(declare-fun $~flatten0$2 () Bool) +(declare-fun $V87_cca$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V82_p1$2 () Bool) +(declare-fun $V83_p2$2 () Bool) +(declare-fun $V84_p3$2 () Bool) +(declare-fun $V85_p4$2 () Bool) +(assert (and (T %init $igsw$~1 $ccd$~1 $cconoff$~1 $bpa$~1 $cccanc$~1 $battok$~1 $gearok$~1 $qfok$~1 $sdok$~1 $accok$~1 $ccseti$~1 $ccsetd$~1 $ccr$~1 $vs$~1 $V86_ccont$~1 $~flatten0$~1 $V87_cca$~1 $OK$~1 $V82_p1$~1 $V83_p2$~1 $V84_p3$~1 $V85_p4$~1 $igsw$0 $ccd$0 $cconoff$0 $bpa$0 $cccanc$0 $battok$0 $gearok$0 $qfok$0 $sdok$0 $accok$0 $ccseti$0 $ccsetd$0 $ccr$0 $vs$0 $V86_ccont$2 $~flatten0$2 $V87_cca$2 $OK$2 $V82_p1$2 $V83_p2$2 $V84_p3$2 $V85_p4$2) $OK$2)) diff --git a/bench/tasks/fast_2_e8_460_base_s_part.smt2 b/bench/tasks/fast_2_e8_460_base_s_part.smt2 new file mode 100755 index 000000000..3ccdf0bb5 --- /dev/null +++ b/bench/tasks/fast_2_e8_460_base_s_part.smt2 @@ -0,0 +1,49 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($igsw$0 Bool) ($ccd$0 Bool) ($cconoff$0 Bool) ($bpa$0 Bool) ($cccanc$0 Bool) ($battok$0 Bool) ($gearok$0 Bool) ($qfok$0 Bool) ($sdok$0 Bool) ($accok$0 Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($vs$0 Int) ($V86_ccont$0 Bool) ($V87_cca$0 Bool) ($~flatten0$0 Bool) ($OK$0 Bool) ($V82_p1$0 Bool) ($V83_p2$0 Bool) ($V84_p3$0 Bool) ($V85_p4$0 Bool) ($igsw$1 Bool) ($ccd$1 Bool) ($cconoff$1 Bool) ($bpa$1 Bool) ($cccanc$1 Bool) ($battok$1 Bool) ($gearok$1 Bool) ($qfok$1 Bool) ($sdok$1 Bool) ($accok$1 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($vs$1 Int) ($V86_ccont$1 Bool) ($V87_cca$1 Bool) ($~flatten0$1 Bool) ($OK$1 Bool) ($V82_p1$1 Bool) ($V83_p2$1 Bool) ($V84_p3$1 Bool) ($V85_p4$1 Bool)) Bool (and (= $OK$1 (and (and (and $V82_p1$1 $V83_p2$1) $V84_p3$1) $V85_p4$1)) (= $V82_p1$1 (ite (ite %init false (and $V87_cca$1 (not $V87_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true)) (= $V83_p2$1 (ite (not (and (and (and (and (and (and (and (and (and $V86_ccont$1 (not $bpa$1)) $battok$1) $gearok$1) $qfok$1) (ite %init false (and $sdok$0 $sdok$1))) (<= 35 $vs$1)) (<= $vs$1 200)) (ite %init false (and $~flatten0$0 $accok$1))) (not $cccanc$1))) (not $V87_cca$1) true)) (= $V84_p3$1 (ite (ite %init false (and $V86_ccont$1 (not $V86_ccont$0))) (and (and (not (ite %init false (and (and (and $igsw$1 (not $igsw$0)) (not $igsw$1)) $igsw$0))) (not $ccd$1)) (ite %init false (and $cconoff$1 (not $cconoff$0)))) true)) (= $V85_p4$1 (ite (ite %init false (and (and (and $igsw$1 (not $igsw$0)) (not $igsw$1)) $igsw$0)) (not $V87_cca$1) true)))) +; Universally quantified variables +(declare-fun $igsw$~1 () Bool) +(declare-fun $ccd$~1 () Bool) +(declare-fun $cconoff$~1 () Bool) +(declare-fun $bpa$~1 () Bool) +(declare-fun $cccanc$~1 () Bool) +(declare-fun $battok$~1 () Bool) +(declare-fun $gearok$~1 () Bool) +(declare-fun $qfok$~1 () Bool) +(declare-fun $sdok$~1 () Bool) +(declare-fun $accok$~1 () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $vs$~1 () Int) +(declare-fun $V86_ccont$~1 () Bool) +(declare-fun $V87_cca$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V82_p1$~1 () Bool) +(declare-fun $V83_p2$~1 () Bool) +(declare-fun $V84_p3$~1 () Bool) +(declare-fun $V85_p4$~1 () Bool) +(declare-fun $igsw$0 () Bool) +(declare-fun $ccd$0 () Bool) +(declare-fun $cconoff$0 () Bool) +(declare-fun $bpa$0 () Bool) +(declare-fun $cccanc$0 () Bool) +(declare-fun $battok$0 () Bool) +(declare-fun $gearok$0 () Bool) +(declare-fun $qfok$0 () Bool) +(declare-fun $sdok$0 () Bool) +(declare-fun $accok$0 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $vs$0 () Int) +(declare-fun $V86_ccont$0 () Bool) +(declare-fun $V87_cca$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V82_p1$0 () Bool) +(declare-fun $V83_p2$0 () Bool) +(declare-fun $V84_p3$0 () Bool) +(declare-fun $V85_p4$0 () Bool) +(assert (T true $igsw$~1 $ccd$~1 $cconoff$~1 $bpa$~1 $cccanc$~1 $battok$~1 $gearok$~1 $qfok$~1 $sdok$~1 $accok$~1 $ccseti$~1 $ccsetd$~1 $ccr$~1 $vs$~1 $V86_ccont$~1 $V87_cca$~1 $~flatten0$~1 $OK$~1 $V82_p1$~1 $V83_p2$~1 $V84_p3$~1 $V85_p4$~1 $igsw$0 $ccd$0 $cconoff$0 $bpa$0 $cccanc$0 $battok$0 $gearok$0 $qfok$0 $sdok$0 $accok$0 $ccseti$0 $ccsetd$0 $ccr$0 $vs$0 $V86_ccont$0 $V87_cca$0 $~flatten0$0 $OK$0 $V82_p1$0 $V83_p2$0 $V84_p3$0 $V85_p4$0)) diff --git a/bench/tasks/fast_2_e8_460_base_t_part.smt2 b/bench/tasks/fast_2_e8_460_base_t_part.smt2 new file mode 100755 index 000000000..52e14fcad --- /dev/null +++ b/bench/tasks/fast_2_e8_460_base_t_part.smt2 @@ -0,0 +1,49 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($igsw$0 Bool) ($ccd$0 Bool) ($cconoff$0 Bool) ($bpa$0 Bool) ($cccanc$0 Bool) ($battok$0 Bool) ($gearok$0 Bool) ($qfok$0 Bool) ($sdok$0 Bool) ($accok$0 Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($vs$0 Int) ($V86_ccont$0 Bool) ($V87_cca$0 Bool) ($~flatten0$0 Bool) ($OK$0 Bool) ($V82_p1$0 Bool) ($V83_p2$0 Bool) ($V84_p3$0 Bool) ($V85_p4$0 Bool) ($igsw$1 Bool) ($ccd$1 Bool) ($cconoff$1 Bool) ($bpa$1 Bool) ($cccanc$1 Bool) ($battok$1 Bool) ($gearok$1 Bool) ($qfok$1 Bool) ($sdok$1 Bool) ($accok$1 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($vs$1 Int) ($V86_ccont$1 Bool) ($V87_cca$1 Bool) ($~flatten0$1 Bool) ($OK$1 Bool) ($V82_p1$1 Bool) ($V83_p2$1 Bool) ($V84_p3$1 Bool) ($V85_p4$1 Bool)) Bool (and (= $OK$1 (and (and (and $V82_p1$1 $V83_p2$1) $V84_p3$1) $V85_p4$1)) (= $V82_p1$1 (ite (ite %init false (and $V87_cca$1 (not $V87_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true)) (= $V83_p2$1 (ite (not (and (and (and (and (and (and (and (and (and $V86_ccont$1 (not $bpa$1)) $battok$1) $gearok$1) $qfok$1) (ite %init false (and $sdok$0 $sdok$1))) (<= 35 $vs$1)) (<= $vs$1 200)) (ite %init false (and $~flatten0$0 $accok$1))) (not $cccanc$1))) (not $V87_cca$1) true)) (= $V84_p3$1 (ite (ite %init false (and $V86_ccont$1 (not $V86_ccont$0))) (and (and (not (ite %init false (and (and (and $igsw$1 (not $igsw$0)) (not $igsw$1)) $igsw$0))) (not $ccd$1)) (ite %init false (and $cconoff$1 (not $cconoff$0)))) true)) (= $V85_p4$1 (ite (ite %init false (and (and (and $igsw$1 (not $igsw$0)) (not $igsw$1)) $igsw$0)) (not $V87_cca$1) true)))) +; Universally quantified variables +(declare-fun $igsw$~1 () Bool) +(declare-fun $ccd$~1 () Bool) +(declare-fun $cconoff$~1 () Bool) +(declare-fun $bpa$~1 () Bool) +(declare-fun $cccanc$~1 () Bool) +(declare-fun $battok$~1 () Bool) +(declare-fun $gearok$~1 () Bool) +(declare-fun $qfok$~1 () Bool) +(declare-fun $sdok$~1 () Bool) +(declare-fun $accok$~1 () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $vs$~1 () Int) +(declare-fun $V86_ccont$~1 () Bool) +(declare-fun $V87_cca$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V82_p1$~1 () Bool) +(declare-fun $V83_p2$~1 () Bool) +(declare-fun $V84_p3$~1 () Bool) +(declare-fun $V85_p4$~1 () Bool) +(declare-fun $igsw$0 () Bool) +(declare-fun $ccd$0 () Bool) +(declare-fun $cconoff$0 () Bool) +(declare-fun $bpa$0 () Bool) +(declare-fun $cccanc$0 () Bool) +(declare-fun $battok$0 () Bool) +(declare-fun $gearok$0 () Bool) +(declare-fun $qfok$0 () Bool) +(declare-fun $sdok$0 () Bool) +(declare-fun $accok$0 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $vs$0 () Int) +(declare-fun $V86_ccont$2 () Bool) +(declare-fun $V87_cca$2 () Bool) +(declare-fun $~flatten0$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V82_p1$2 () Bool) +(declare-fun $V83_p2$2 () Bool) +(declare-fun $V84_p3$2 () Bool) +(declare-fun $V85_p4$2 () Bool) +(assert (and (T true $igsw$~1 $ccd$~1 $cconoff$~1 $bpa$~1 $cccanc$~1 $battok$~1 $gearok$~1 $qfok$~1 $sdok$~1 $accok$~1 $ccseti$~1 $ccsetd$~1 $ccr$~1 $vs$~1 $V86_ccont$~1 $V87_cca$~1 $~flatten0$~1 $OK$~1 $V82_p1$~1 $V83_p2$~1 $V84_p3$~1 $V85_p4$~1 $igsw$0 $ccd$0 $cconoff$0 $bpa$0 $cccanc$0 $battok$0 $gearok$0 $qfok$0 $sdok$0 $accok$0 $ccseti$0 $ccsetd$0 $ccr$0 $vs$0 $V86_ccont$2 $V87_cca$2 $~flatten0$2 $OK$2 $V82_p1$2 $V83_p2$2 $V84_p3$2 $V85_p4$2) $OK$2)) diff --git a/bench/tasks/fast_2_e8_460_e8_1920_base_s_part.smt2 b/bench/tasks/fast_2_e8_460_e8_1920_base_s_part.smt2 new file mode 100755 index 000000000..3ccdf0bb5 --- /dev/null +++ b/bench/tasks/fast_2_e8_460_e8_1920_base_s_part.smt2 @@ -0,0 +1,49 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($igsw$0 Bool) ($ccd$0 Bool) ($cconoff$0 Bool) ($bpa$0 Bool) ($cccanc$0 Bool) ($battok$0 Bool) ($gearok$0 Bool) ($qfok$0 Bool) ($sdok$0 Bool) ($accok$0 Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($vs$0 Int) ($V86_ccont$0 Bool) ($V87_cca$0 Bool) ($~flatten0$0 Bool) ($OK$0 Bool) ($V82_p1$0 Bool) ($V83_p2$0 Bool) ($V84_p3$0 Bool) ($V85_p4$0 Bool) ($igsw$1 Bool) ($ccd$1 Bool) ($cconoff$1 Bool) ($bpa$1 Bool) ($cccanc$1 Bool) ($battok$1 Bool) ($gearok$1 Bool) ($qfok$1 Bool) ($sdok$1 Bool) ($accok$1 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($vs$1 Int) ($V86_ccont$1 Bool) ($V87_cca$1 Bool) ($~flatten0$1 Bool) ($OK$1 Bool) ($V82_p1$1 Bool) ($V83_p2$1 Bool) ($V84_p3$1 Bool) ($V85_p4$1 Bool)) Bool (and (= $OK$1 (and (and (and $V82_p1$1 $V83_p2$1) $V84_p3$1) $V85_p4$1)) (= $V82_p1$1 (ite (ite %init false (and $V87_cca$1 (not $V87_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true)) (= $V83_p2$1 (ite (not (and (and (and (and (and (and (and (and (and $V86_ccont$1 (not $bpa$1)) $battok$1) $gearok$1) $qfok$1) (ite %init false (and $sdok$0 $sdok$1))) (<= 35 $vs$1)) (<= $vs$1 200)) (ite %init false (and $~flatten0$0 $accok$1))) (not $cccanc$1))) (not $V87_cca$1) true)) (= $V84_p3$1 (ite (ite %init false (and $V86_ccont$1 (not $V86_ccont$0))) (and (and (not (ite %init false (and (and (and $igsw$1 (not $igsw$0)) (not $igsw$1)) $igsw$0))) (not $ccd$1)) (ite %init false (and $cconoff$1 (not $cconoff$0)))) true)) (= $V85_p4$1 (ite (ite %init false (and (and (and $igsw$1 (not $igsw$0)) (not $igsw$1)) $igsw$0)) (not $V87_cca$1) true)))) +; Universally quantified variables +(declare-fun $igsw$~1 () Bool) +(declare-fun $ccd$~1 () Bool) +(declare-fun $cconoff$~1 () Bool) +(declare-fun $bpa$~1 () Bool) +(declare-fun $cccanc$~1 () Bool) +(declare-fun $battok$~1 () Bool) +(declare-fun $gearok$~1 () Bool) +(declare-fun $qfok$~1 () Bool) +(declare-fun $sdok$~1 () Bool) +(declare-fun $accok$~1 () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $vs$~1 () Int) +(declare-fun $V86_ccont$~1 () Bool) +(declare-fun $V87_cca$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V82_p1$~1 () Bool) +(declare-fun $V83_p2$~1 () Bool) +(declare-fun $V84_p3$~1 () Bool) +(declare-fun $V85_p4$~1 () Bool) +(declare-fun $igsw$0 () Bool) +(declare-fun $ccd$0 () Bool) +(declare-fun $cconoff$0 () Bool) +(declare-fun $bpa$0 () Bool) +(declare-fun $cccanc$0 () Bool) +(declare-fun $battok$0 () Bool) +(declare-fun $gearok$0 () Bool) +(declare-fun $qfok$0 () Bool) +(declare-fun $sdok$0 () Bool) +(declare-fun $accok$0 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $vs$0 () Int) +(declare-fun $V86_ccont$0 () Bool) +(declare-fun $V87_cca$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V82_p1$0 () Bool) +(declare-fun $V83_p2$0 () Bool) +(declare-fun $V84_p3$0 () Bool) +(declare-fun $V85_p4$0 () Bool) +(assert (T true $igsw$~1 $ccd$~1 $cconoff$~1 $bpa$~1 $cccanc$~1 $battok$~1 $gearok$~1 $qfok$~1 $sdok$~1 $accok$~1 $ccseti$~1 $ccsetd$~1 $ccr$~1 $vs$~1 $V86_ccont$~1 $V87_cca$~1 $~flatten0$~1 $OK$~1 $V82_p1$~1 $V83_p2$~1 $V84_p3$~1 $V85_p4$~1 $igsw$0 $ccd$0 $cconoff$0 $bpa$0 $cccanc$0 $battok$0 $gearok$0 $qfok$0 $sdok$0 $accok$0 $ccseti$0 $ccsetd$0 $ccr$0 $vs$0 $V86_ccont$0 $V87_cca$0 $~flatten0$0 $OK$0 $V82_p1$0 $V83_p2$0 $V84_p3$0 $V85_p4$0)) diff --git a/bench/tasks/fast_2_e8_460_e8_1920_base_t_part.smt2 b/bench/tasks/fast_2_e8_460_e8_1920_base_t_part.smt2 new file mode 100755 index 000000000..52e14fcad --- /dev/null +++ b/bench/tasks/fast_2_e8_460_e8_1920_base_t_part.smt2 @@ -0,0 +1,49 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($igsw$0 Bool) ($ccd$0 Bool) ($cconoff$0 Bool) ($bpa$0 Bool) ($cccanc$0 Bool) ($battok$0 Bool) ($gearok$0 Bool) ($qfok$0 Bool) ($sdok$0 Bool) ($accok$0 Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($vs$0 Int) ($V86_ccont$0 Bool) ($V87_cca$0 Bool) ($~flatten0$0 Bool) ($OK$0 Bool) ($V82_p1$0 Bool) ($V83_p2$0 Bool) ($V84_p3$0 Bool) ($V85_p4$0 Bool) ($igsw$1 Bool) ($ccd$1 Bool) ($cconoff$1 Bool) ($bpa$1 Bool) ($cccanc$1 Bool) ($battok$1 Bool) ($gearok$1 Bool) ($qfok$1 Bool) ($sdok$1 Bool) ($accok$1 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($vs$1 Int) ($V86_ccont$1 Bool) ($V87_cca$1 Bool) ($~flatten0$1 Bool) ($OK$1 Bool) ($V82_p1$1 Bool) ($V83_p2$1 Bool) ($V84_p3$1 Bool) ($V85_p4$1 Bool)) Bool (and (= $OK$1 (and (and (and $V82_p1$1 $V83_p2$1) $V84_p3$1) $V85_p4$1)) (= $V82_p1$1 (ite (ite %init false (and $V87_cca$1 (not $V87_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true)) (= $V83_p2$1 (ite (not (and (and (and (and (and (and (and (and (and $V86_ccont$1 (not $bpa$1)) $battok$1) $gearok$1) $qfok$1) (ite %init false (and $sdok$0 $sdok$1))) (<= 35 $vs$1)) (<= $vs$1 200)) (ite %init false (and $~flatten0$0 $accok$1))) (not $cccanc$1))) (not $V87_cca$1) true)) (= $V84_p3$1 (ite (ite %init false (and $V86_ccont$1 (not $V86_ccont$0))) (and (and (not (ite %init false (and (and (and $igsw$1 (not $igsw$0)) (not $igsw$1)) $igsw$0))) (not $ccd$1)) (ite %init false (and $cconoff$1 (not $cconoff$0)))) true)) (= $V85_p4$1 (ite (ite %init false (and (and (and $igsw$1 (not $igsw$0)) (not $igsw$1)) $igsw$0)) (not $V87_cca$1) true)))) +; Universally quantified variables +(declare-fun $igsw$~1 () Bool) +(declare-fun $ccd$~1 () Bool) +(declare-fun $cconoff$~1 () Bool) +(declare-fun $bpa$~1 () Bool) +(declare-fun $cccanc$~1 () Bool) +(declare-fun $battok$~1 () Bool) +(declare-fun $gearok$~1 () Bool) +(declare-fun $qfok$~1 () Bool) +(declare-fun $sdok$~1 () Bool) +(declare-fun $accok$~1 () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $vs$~1 () Int) +(declare-fun $V86_ccont$~1 () Bool) +(declare-fun $V87_cca$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V82_p1$~1 () Bool) +(declare-fun $V83_p2$~1 () Bool) +(declare-fun $V84_p3$~1 () Bool) +(declare-fun $V85_p4$~1 () Bool) +(declare-fun $igsw$0 () Bool) +(declare-fun $ccd$0 () Bool) +(declare-fun $cconoff$0 () Bool) +(declare-fun $bpa$0 () Bool) +(declare-fun $cccanc$0 () Bool) +(declare-fun $battok$0 () Bool) +(declare-fun $gearok$0 () Bool) +(declare-fun $qfok$0 () Bool) +(declare-fun $sdok$0 () Bool) +(declare-fun $accok$0 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $vs$0 () Int) +(declare-fun $V86_ccont$2 () Bool) +(declare-fun $V87_cca$2 () Bool) +(declare-fun $~flatten0$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V82_p1$2 () Bool) +(declare-fun $V83_p2$2 () Bool) +(declare-fun $V84_p3$2 () Bool) +(declare-fun $V85_p4$2 () Bool) +(assert (and (T true $igsw$~1 $ccd$~1 $cconoff$~1 $bpa$~1 $cccanc$~1 $battok$~1 $gearok$~1 $qfok$~1 $sdok$~1 $accok$~1 $ccseti$~1 $ccsetd$~1 $ccr$~1 $vs$~1 $V86_ccont$~1 $V87_cca$~1 $~flatten0$~1 $OK$~1 $V82_p1$~1 $V83_p2$~1 $V84_p3$~1 $V85_p4$~1 $igsw$0 $ccd$0 $cconoff$0 $bpa$0 $cccanc$0 $battok$0 $gearok$0 $qfok$0 $sdok$0 $accok$0 $ccseti$0 $ccsetd$0 $ccr$0 $vs$0 $V86_ccont$2 $V87_cca$2 $~flatten0$2 $OK$2 $V82_p1$2 $V83_p2$2 $V84_p3$2 $V85_p4$2) $OK$2)) diff --git a/bench/tasks/fast_2_e8_460_e8_1920_extend_s_part.smt2 b/bench/tasks/fast_2_e8_460_e8_1920_extend_s_part.smt2 new file mode 100755 index 000000000..5e8ee72f3 --- /dev/null +++ b/bench/tasks/fast_2_e8_460_e8_1920_extend_s_part.smt2 @@ -0,0 +1,50 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($igsw$0 Bool) ($ccd$0 Bool) ($cconoff$0 Bool) ($bpa$0 Bool) ($cccanc$0 Bool) ($battok$0 Bool) ($gearok$0 Bool) ($qfok$0 Bool) ($sdok$0 Bool) ($accok$0 Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($vs$0 Int) ($V86_ccont$0 Bool) ($V87_cca$0 Bool) ($~flatten0$0 Bool) ($OK$0 Bool) ($V82_p1$0 Bool) ($V83_p2$0 Bool) ($V84_p3$0 Bool) ($V85_p4$0 Bool) ($igsw$1 Bool) ($ccd$1 Bool) ($cconoff$1 Bool) ($bpa$1 Bool) ($cccanc$1 Bool) ($battok$1 Bool) ($gearok$1 Bool) ($qfok$1 Bool) ($sdok$1 Bool) ($accok$1 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($vs$1 Int) ($V86_ccont$1 Bool) ($V87_cca$1 Bool) ($~flatten0$1 Bool) ($OK$1 Bool) ($V82_p1$1 Bool) ($V83_p2$1 Bool) ($V84_p3$1 Bool) ($V85_p4$1 Bool)) Bool (and (= $OK$1 (and (and (and $V82_p1$1 $V83_p2$1) $V84_p3$1) $V85_p4$1)) (= $V82_p1$1 (ite (ite %init false (and $V87_cca$1 (not $V87_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true)) (= $V83_p2$1 (ite (not (and (and (and (and (and (and (and (and (and $V86_ccont$1 (not $bpa$1)) $battok$1) $gearok$1) $qfok$1) (ite %init false (and $sdok$0 $sdok$1))) (<= 35 $vs$1)) (<= $vs$1 200)) (ite %init false (and $~flatten0$0 $accok$1))) (not $cccanc$1))) (not $V87_cca$1) true)) (= $V84_p3$1 (ite (ite %init false (and $V86_ccont$1 (not $V86_ccont$0))) (and (and (not (ite %init false (and (and (and $igsw$1 (not $igsw$0)) (not $igsw$1)) $igsw$0))) (not $ccd$1)) (ite %init false (and $cconoff$1 (not $cconoff$0)))) true)) (= $V85_p4$1 (ite (ite %init false (and (and (and $igsw$1 (not $igsw$0)) (not $igsw$1)) $igsw$0)) (not $V87_cca$1) true)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $igsw$~1 () Bool) +(declare-fun $ccd$~1 () Bool) +(declare-fun $cconoff$~1 () Bool) +(declare-fun $bpa$~1 () Bool) +(declare-fun $cccanc$~1 () Bool) +(declare-fun $battok$~1 () Bool) +(declare-fun $gearok$~1 () Bool) +(declare-fun $qfok$~1 () Bool) +(declare-fun $sdok$~1 () Bool) +(declare-fun $accok$~1 () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $vs$~1 () Int) +(declare-fun $V86_ccont$~1 () Bool) +(declare-fun $V87_cca$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V82_p1$~1 () Bool) +(declare-fun $V83_p2$~1 () Bool) +(declare-fun $V84_p3$~1 () Bool) +(declare-fun $V85_p4$~1 () Bool) +(declare-fun $igsw$0 () Bool) +(declare-fun $ccd$0 () Bool) +(declare-fun $cconoff$0 () Bool) +(declare-fun $bpa$0 () Bool) +(declare-fun $cccanc$0 () Bool) +(declare-fun $battok$0 () Bool) +(declare-fun $gearok$0 () Bool) +(declare-fun $qfok$0 () Bool) +(declare-fun $sdok$0 () Bool) +(declare-fun $accok$0 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $vs$0 () Int) +(declare-fun $V86_ccont$0 () Bool) +(declare-fun $V87_cca$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V82_p1$0 () Bool) +(declare-fun $V83_p2$0 () Bool) +(declare-fun $V84_p3$0 () Bool) +(declare-fun $V85_p4$0 () Bool) +(assert (T %init $igsw$~1 $ccd$~1 $cconoff$~1 $bpa$~1 $cccanc$~1 $battok$~1 $gearok$~1 $qfok$~1 $sdok$~1 $accok$~1 $ccseti$~1 $ccsetd$~1 $ccr$~1 $vs$~1 $V86_ccont$~1 $V87_cca$~1 $~flatten0$~1 $OK$~1 $V82_p1$~1 $V83_p2$~1 $V84_p3$~1 $V85_p4$~1 $igsw$0 $ccd$0 $cconoff$0 $bpa$0 $cccanc$0 $battok$0 $gearok$0 $qfok$0 $sdok$0 $accok$0 $ccseti$0 $ccsetd$0 $ccr$0 $vs$0 $V86_ccont$0 $V87_cca$0 $~flatten0$0 $OK$0 $V82_p1$0 $V83_p2$0 $V84_p3$0 $V85_p4$0)) diff --git a/bench/tasks/fast_2_e8_460_e8_1920_extend_t_part.smt2 b/bench/tasks/fast_2_e8_460_e8_1920_extend_t_part.smt2 new file mode 100755 index 000000000..f01f7f05e --- /dev/null +++ b/bench/tasks/fast_2_e8_460_e8_1920_extend_t_part.smt2 @@ -0,0 +1,50 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($igsw$0 Bool) ($ccd$0 Bool) ($cconoff$0 Bool) ($bpa$0 Bool) ($cccanc$0 Bool) ($battok$0 Bool) ($gearok$0 Bool) ($qfok$0 Bool) ($sdok$0 Bool) ($accok$0 Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($vs$0 Int) ($V86_ccont$0 Bool) ($V87_cca$0 Bool) ($~flatten0$0 Bool) ($OK$0 Bool) ($V82_p1$0 Bool) ($V83_p2$0 Bool) ($V84_p3$0 Bool) ($V85_p4$0 Bool) ($igsw$1 Bool) ($ccd$1 Bool) ($cconoff$1 Bool) ($bpa$1 Bool) ($cccanc$1 Bool) ($battok$1 Bool) ($gearok$1 Bool) ($qfok$1 Bool) ($sdok$1 Bool) ($accok$1 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($vs$1 Int) ($V86_ccont$1 Bool) ($V87_cca$1 Bool) ($~flatten0$1 Bool) ($OK$1 Bool) ($V82_p1$1 Bool) ($V83_p2$1 Bool) ($V84_p3$1 Bool) ($V85_p4$1 Bool)) Bool (and (= $OK$1 (and (and (and $V82_p1$1 $V83_p2$1) $V84_p3$1) $V85_p4$1)) (= $V82_p1$1 (ite (ite %init false (and $V87_cca$1 (not $V87_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true)) (= $V83_p2$1 (ite (not (and (and (and (and (and (and (and (and (and $V86_ccont$1 (not $bpa$1)) $battok$1) $gearok$1) $qfok$1) (ite %init false (and $sdok$0 $sdok$1))) (<= 35 $vs$1)) (<= $vs$1 200)) (ite %init false (and $~flatten0$0 $accok$1))) (not $cccanc$1))) (not $V87_cca$1) true)) (= $V84_p3$1 (ite (ite %init false (and $V86_ccont$1 (not $V86_ccont$0))) (and (and (not (ite %init false (and (and (and $igsw$1 (not $igsw$0)) (not $igsw$1)) $igsw$0))) (not $ccd$1)) (ite %init false (and $cconoff$1 (not $cconoff$0)))) true)) (= $V85_p4$1 (ite (ite %init false (and (and (and $igsw$1 (not $igsw$0)) (not $igsw$1)) $igsw$0)) (not $V87_cca$1) true)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $igsw$~1 () Bool) +(declare-fun $ccd$~1 () Bool) +(declare-fun $cconoff$~1 () Bool) +(declare-fun $bpa$~1 () Bool) +(declare-fun $cccanc$~1 () Bool) +(declare-fun $battok$~1 () Bool) +(declare-fun $gearok$~1 () Bool) +(declare-fun $qfok$~1 () Bool) +(declare-fun $sdok$~1 () Bool) +(declare-fun $accok$~1 () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $vs$~1 () Int) +(declare-fun $V86_ccont$~1 () Bool) +(declare-fun $V87_cca$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V82_p1$~1 () Bool) +(declare-fun $V83_p2$~1 () Bool) +(declare-fun $V84_p3$~1 () Bool) +(declare-fun $V85_p4$~1 () Bool) +(declare-fun $igsw$0 () Bool) +(declare-fun $ccd$0 () Bool) +(declare-fun $cconoff$0 () Bool) +(declare-fun $bpa$0 () Bool) +(declare-fun $cccanc$0 () Bool) +(declare-fun $battok$0 () Bool) +(declare-fun $gearok$0 () Bool) +(declare-fun $qfok$0 () Bool) +(declare-fun $sdok$0 () Bool) +(declare-fun $accok$0 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $vs$0 () Int) +(declare-fun $V86_ccont$2 () Bool) +(declare-fun $V87_cca$2 () Bool) +(declare-fun $~flatten0$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V82_p1$2 () Bool) +(declare-fun $V83_p2$2 () Bool) +(declare-fun $V84_p3$2 () Bool) +(declare-fun $V85_p4$2 () Bool) +(assert (and (T %init $igsw$~1 $ccd$~1 $cconoff$~1 $bpa$~1 $cccanc$~1 $battok$~1 $gearok$~1 $qfok$~1 $sdok$~1 $accok$~1 $ccseti$~1 $ccsetd$~1 $ccr$~1 $vs$~1 $V86_ccont$~1 $V87_cca$~1 $~flatten0$~1 $OK$~1 $V82_p1$~1 $V83_p2$~1 $V84_p3$~1 $V85_p4$~1 $igsw$0 $ccd$0 $cconoff$0 $bpa$0 $cccanc$0 $battok$0 $gearok$0 $qfok$0 $sdok$0 $accok$0 $ccseti$0 $ccsetd$0 $ccr$0 $vs$0 $V86_ccont$2 $V87_cca$2 $~flatten0$2 $OK$2 $V82_p1$2 $V83_p2$2 $V84_p3$2 $V85_p4$2) $OK$2)) diff --git a/bench/tasks/fast_2_e8_460_extend_s_part.smt2 b/bench/tasks/fast_2_e8_460_extend_s_part.smt2 new file mode 100755 index 000000000..5e8ee72f3 --- /dev/null +++ b/bench/tasks/fast_2_e8_460_extend_s_part.smt2 @@ -0,0 +1,50 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($igsw$0 Bool) ($ccd$0 Bool) ($cconoff$0 Bool) ($bpa$0 Bool) ($cccanc$0 Bool) ($battok$0 Bool) ($gearok$0 Bool) ($qfok$0 Bool) ($sdok$0 Bool) ($accok$0 Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($vs$0 Int) ($V86_ccont$0 Bool) ($V87_cca$0 Bool) ($~flatten0$0 Bool) ($OK$0 Bool) ($V82_p1$0 Bool) ($V83_p2$0 Bool) ($V84_p3$0 Bool) ($V85_p4$0 Bool) ($igsw$1 Bool) ($ccd$1 Bool) ($cconoff$1 Bool) ($bpa$1 Bool) ($cccanc$1 Bool) ($battok$1 Bool) ($gearok$1 Bool) ($qfok$1 Bool) ($sdok$1 Bool) ($accok$1 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($vs$1 Int) ($V86_ccont$1 Bool) ($V87_cca$1 Bool) ($~flatten0$1 Bool) ($OK$1 Bool) ($V82_p1$1 Bool) ($V83_p2$1 Bool) ($V84_p3$1 Bool) ($V85_p4$1 Bool)) Bool (and (= $OK$1 (and (and (and $V82_p1$1 $V83_p2$1) $V84_p3$1) $V85_p4$1)) (= $V82_p1$1 (ite (ite %init false (and $V87_cca$1 (not $V87_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true)) (= $V83_p2$1 (ite (not (and (and (and (and (and (and (and (and (and $V86_ccont$1 (not $bpa$1)) $battok$1) $gearok$1) $qfok$1) (ite %init false (and $sdok$0 $sdok$1))) (<= 35 $vs$1)) (<= $vs$1 200)) (ite %init false (and $~flatten0$0 $accok$1))) (not $cccanc$1))) (not $V87_cca$1) true)) (= $V84_p3$1 (ite (ite %init false (and $V86_ccont$1 (not $V86_ccont$0))) (and (and (not (ite %init false (and (and (and $igsw$1 (not $igsw$0)) (not $igsw$1)) $igsw$0))) (not $ccd$1)) (ite %init false (and $cconoff$1 (not $cconoff$0)))) true)) (= $V85_p4$1 (ite (ite %init false (and (and (and $igsw$1 (not $igsw$0)) (not $igsw$1)) $igsw$0)) (not $V87_cca$1) true)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $igsw$~1 () Bool) +(declare-fun $ccd$~1 () Bool) +(declare-fun $cconoff$~1 () Bool) +(declare-fun $bpa$~1 () Bool) +(declare-fun $cccanc$~1 () Bool) +(declare-fun $battok$~1 () Bool) +(declare-fun $gearok$~1 () Bool) +(declare-fun $qfok$~1 () Bool) +(declare-fun $sdok$~1 () Bool) +(declare-fun $accok$~1 () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $vs$~1 () Int) +(declare-fun $V86_ccont$~1 () Bool) +(declare-fun $V87_cca$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V82_p1$~1 () Bool) +(declare-fun $V83_p2$~1 () Bool) +(declare-fun $V84_p3$~1 () Bool) +(declare-fun $V85_p4$~1 () Bool) +(declare-fun $igsw$0 () Bool) +(declare-fun $ccd$0 () Bool) +(declare-fun $cconoff$0 () Bool) +(declare-fun $bpa$0 () Bool) +(declare-fun $cccanc$0 () Bool) +(declare-fun $battok$0 () Bool) +(declare-fun $gearok$0 () Bool) +(declare-fun $qfok$0 () Bool) +(declare-fun $sdok$0 () Bool) +(declare-fun $accok$0 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $vs$0 () Int) +(declare-fun $V86_ccont$0 () Bool) +(declare-fun $V87_cca$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V82_p1$0 () Bool) +(declare-fun $V83_p2$0 () Bool) +(declare-fun $V84_p3$0 () Bool) +(declare-fun $V85_p4$0 () Bool) +(assert (T %init $igsw$~1 $ccd$~1 $cconoff$~1 $bpa$~1 $cccanc$~1 $battok$~1 $gearok$~1 $qfok$~1 $sdok$~1 $accok$~1 $ccseti$~1 $ccsetd$~1 $ccr$~1 $vs$~1 $V86_ccont$~1 $V87_cca$~1 $~flatten0$~1 $OK$~1 $V82_p1$~1 $V83_p2$~1 $V84_p3$~1 $V85_p4$~1 $igsw$0 $ccd$0 $cconoff$0 $bpa$0 $cccanc$0 $battok$0 $gearok$0 $qfok$0 $sdok$0 $accok$0 $ccseti$0 $ccsetd$0 $ccr$0 $vs$0 $V86_ccont$0 $V87_cca$0 $~flatten0$0 $OK$0 $V82_p1$0 $V83_p2$0 $V84_p3$0 $V85_p4$0)) diff --git a/bench/tasks/fast_2_e8_460_extend_t_part.smt2 b/bench/tasks/fast_2_e8_460_extend_t_part.smt2 new file mode 100755 index 000000000..f01f7f05e --- /dev/null +++ b/bench/tasks/fast_2_e8_460_extend_t_part.smt2 @@ -0,0 +1,50 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($igsw$0 Bool) ($ccd$0 Bool) ($cconoff$0 Bool) ($bpa$0 Bool) ($cccanc$0 Bool) ($battok$0 Bool) ($gearok$0 Bool) ($qfok$0 Bool) ($sdok$0 Bool) ($accok$0 Bool) ($ccseti$0 Bool) ($ccsetd$0 Bool) ($ccr$0 Bool) ($vs$0 Int) ($V86_ccont$0 Bool) ($V87_cca$0 Bool) ($~flatten0$0 Bool) ($OK$0 Bool) ($V82_p1$0 Bool) ($V83_p2$0 Bool) ($V84_p3$0 Bool) ($V85_p4$0 Bool) ($igsw$1 Bool) ($ccd$1 Bool) ($cconoff$1 Bool) ($bpa$1 Bool) ($cccanc$1 Bool) ($battok$1 Bool) ($gearok$1 Bool) ($qfok$1 Bool) ($sdok$1 Bool) ($accok$1 Bool) ($ccseti$1 Bool) ($ccsetd$1 Bool) ($ccr$1 Bool) ($vs$1 Int) ($V86_ccont$1 Bool) ($V87_cca$1 Bool) ($~flatten0$1 Bool) ($OK$1 Bool) ($V82_p1$1 Bool) ($V83_p2$1 Bool) ($V84_p3$1 Bool) ($V85_p4$1 Bool)) Bool (and (= $OK$1 (and (and (and $V82_p1$1 $V83_p2$1) $V84_p3$1) $V85_p4$1)) (= $V82_p1$1 (ite (ite %init false (and $V87_cca$1 (not $V87_cca$0))) (or (or (ite %init false (and $ccseti$1 (not $ccseti$0))) (ite %init false (and $ccsetd$1 (not $ccsetd$0)))) (ite %init false (and $ccr$1 (not $ccr$0)))) true)) (= $V83_p2$1 (ite (not (and (and (and (and (and (and (and (and (and $V86_ccont$1 (not $bpa$1)) $battok$1) $gearok$1) $qfok$1) (ite %init false (and $sdok$0 $sdok$1))) (<= 35 $vs$1)) (<= $vs$1 200)) (ite %init false (and $~flatten0$0 $accok$1))) (not $cccanc$1))) (not $V87_cca$1) true)) (= $V84_p3$1 (ite (ite %init false (and $V86_ccont$1 (not $V86_ccont$0))) (and (and (not (ite %init false (and (and (and $igsw$1 (not $igsw$0)) (not $igsw$1)) $igsw$0))) (not $ccd$1)) (ite %init false (and $cconoff$1 (not $cconoff$0)))) true)) (= $V85_p4$1 (ite (ite %init false (and (and (and $igsw$1 (not $igsw$0)) (not $igsw$1)) $igsw$0)) (not $V87_cca$1) true)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $igsw$~1 () Bool) +(declare-fun $ccd$~1 () Bool) +(declare-fun $cconoff$~1 () Bool) +(declare-fun $bpa$~1 () Bool) +(declare-fun $cccanc$~1 () Bool) +(declare-fun $battok$~1 () Bool) +(declare-fun $gearok$~1 () Bool) +(declare-fun $qfok$~1 () Bool) +(declare-fun $sdok$~1 () Bool) +(declare-fun $accok$~1 () Bool) +(declare-fun $ccseti$~1 () Bool) +(declare-fun $ccsetd$~1 () Bool) +(declare-fun $ccr$~1 () Bool) +(declare-fun $vs$~1 () Int) +(declare-fun $V86_ccont$~1 () Bool) +(declare-fun $V87_cca$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V82_p1$~1 () Bool) +(declare-fun $V83_p2$~1 () Bool) +(declare-fun $V84_p3$~1 () Bool) +(declare-fun $V85_p4$~1 () Bool) +(declare-fun $igsw$0 () Bool) +(declare-fun $ccd$0 () Bool) +(declare-fun $cconoff$0 () Bool) +(declare-fun $bpa$0 () Bool) +(declare-fun $cccanc$0 () Bool) +(declare-fun $battok$0 () Bool) +(declare-fun $gearok$0 () Bool) +(declare-fun $qfok$0 () Bool) +(declare-fun $sdok$0 () Bool) +(declare-fun $accok$0 () Bool) +(declare-fun $ccseti$0 () Bool) +(declare-fun $ccsetd$0 () Bool) +(declare-fun $ccr$0 () Bool) +(declare-fun $vs$0 () Int) +(declare-fun $V86_ccont$2 () Bool) +(declare-fun $V87_cca$2 () Bool) +(declare-fun $~flatten0$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V82_p1$2 () Bool) +(declare-fun $V83_p2$2 () Bool) +(declare-fun $V84_p3$2 () Bool) +(declare-fun $V85_p4$2 () Bool) +(assert (and (T %init $igsw$~1 $ccd$~1 $cconoff$~1 $bpa$~1 $cccanc$~1 $battok$~1 $gearok$~1 $qfok$~1 $sdok$~1 $accok$~1 $ccseti$~1 $ccsetd$~1 $ccr$~1 $vs$~1 $V86_ccont$~1 $V87_cca$~1 $~flatten0$~1 $OK$~1 $V82_p1$~1 $V83_p2$~1 $V84_p3$~1 $V85_p4$~1 $igsw$0 $ccd$0 $cconoff$0 $bpa$0 $cccanc$0 $battok$0 $gearok$0 $qfok$0 $sdok$0 $accok$0 $ccseti$0 $ccsetd$0 $ccr$0 $vs$0 $V86_ccont$2 $V87_cca$2 $~flatten0$2 $OK$2 $V82_p1$2 $V83_p2$2 $V84_p3$2 $V85_p4$2) $OK$2)) diff --git a/bench/tasks/hysteresis_1_base_s_part.smt2 b/bench/tasks/hysteresis_1_base_s_part.smt2 new file mode 100755 index 000000000..b3917e712 --- /dev/null +++ b/bench/tasks/hysteresis_1_base_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/hysteresis_1_base_t_part.smt2 b/bench/tasks/hysteresis_1_base_t_part.smt2 new file mode 100755 index 000000000..b797196f0 --- /dev/null +++ b/bench/tasks/hysteresis_1_base_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/hysteresis_1_extend_s_part.smt2 b/bench/tasks/hysteresis_1_extend_s_part.smt2 new file mode 100755 index 000000000..0399476f3 --- /dev/null +++ b/bench/tasks/hysteresis_1_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/hysteresis_1_extend_t_part.smt2 b/bench/tasks/hysteresis_1_extend_t_part.smt2 new file mode 100755 index 000000000..2ecdd03ce --- /dev/null +++ b/bench/tasks/hysteresis_1_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/hysteresis_2_base_s_part.smt2 b/bench/tasks/hysteresis_2_base_s_part.smt2 new file mode 100755 index 000000000..5109e5383 --- /dev/null +++ b/bench/tasks/hysteresis_2_base_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (not (and $V19_late$1 $V20_early$0))))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/hysteresis_2_base_t_part.smt2 b/bench/tasks/hysteresis_2_base_t_part.smt2 new file mode 100755 index 000000000..dbd3d0c79 --- /dev/null +++ b/bench/tasks/hysteresis_2_base_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (not (and $V19_late$1 $V20_early$0))))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/hysteresis_2_extend_s_part.smt2 b/bench/tasks/hysteresis_2_extend_s_part.smt2 new file mode 100755 index 000000000..8eaaa8f75 --- /dev/null +++ b/bench/tasks/hysteresis_2_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (not (and $V19_late$1 $V20_early$0))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/hysteresis_2_extend_t_part.smt2 b/bench/tasks/hysteresis_2_extend_t_part.smt2 new file mode 100755 index 000000000..0e90188c0 --- /dev/null +++ b/bench/tasks/hysteresis_2_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (not (and $V19_late$1 $V20_early$0))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/hysteresis_3_base_s_part.smt2 b/bench/tasks/hysteresis_3_base_s_part.smt2 new file mode 100755 index 000000000..fc1afa28d --- /dev/null +++ b/bench/tasks/hysteresis_3_base_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (not (and $V19_late$0 $V20_early$1))))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/hysteresis_3_base_t_part.smt2 b/bench/tasks/hysteresis_3_base_t_part.smt2 new file mode 100755 index 000000000..9270b666a --- /dev/null +++ b/bench/tasks/hysteresis_3_base_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (not (and $V19_late$0 $V20_early$1))))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/hysteresis_3_extend_s_part.smt2 b/bench/tasks/hysteresis_3_extend_s_part.smt2 new file mode 100755 index 000000000..c5b622fd3 --- /dev/null +++ b/bench/tasks/hysteresis_3_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (not (and $V19_late$0 $V20_early$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/hysteresis_3_extend_t_part.smt2 b/bench/tasks/hysteresis_3_extend_t_part.smt2 new file mode 100755 index 000000000..cbd3049e1 --- /dev/null +++ b/bench/tasks/hysteresis_3_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (ite %init true (not (and $V19_late$0 $V20_early$1))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/hysteresis_all_base_s_part.smt2 b/bench/tasks/hysteresis_all_base_s_part.smt2 new file mode 100755 index 000000000..2a728e565 --- /dev/null +++ b/bench/tasks/hysteresis_all_base_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (and (and (not (and $V19_late$1 $V20_early$1)) (ite %init true (not (and $V19_late$1 $V20_early$0)))) (ite %init true (not (and $V19_late$0 $V20_early$1)))))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/hysteresis_all_base_t_part.smt2 b/bench/tasks/hysteresis_all_base_t_part.smt2 new file mode 100755 index 000000000..622f32f8b --- /dev/null +++ b/bench/tasks/hysteresis_all_base_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (and (and (not (and $V19_late$1 $V20_early$1)) (ite %init true (not (and $V19_late$1 $V20_early$0)))) (ite %init true (not (and $V19_late$0 $V20_early$1)))))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/hysteresis_all_extend_s_part.smt2 b/bench/tasks/hysteresis_all_extend_s_part.smt2 new file mode 100755 index 000000000..ef145c1d7 --- /dev/null +++ b/bench/tasks/hysteresis_all_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (and (and (not (and $V19_late$1 $V20_early$1)) (ite %init true (not (and $V19_late$1 $V20_early$0)))) (ite %init true (not (and $V19_late$0 $V20_early$1)))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/hysteresis_all_extend_t_part.smt2 b/bench/tasks/hysteresis_all_extend_t_part.smt2 new file mode 100755 index 000000000..cbd0baddb --- /dev/null +++ b/bench/tasks/hysteresis_all_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (and (and (not (and $V19_late$1 $V20_early$1)) (ite %init true (not (and $V19_late$1 $V20_early$0)))) (ite %init true (not (and $V19_late$0 $V20_early$1)))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/newexample_base1_s_part.smt2 b/bench/tasks/newexample_base1_s_part.smt2 new file mode 100755 index 000000000..0a0f2471e --- /dev/null +++ b/bench/tasks/newexample_base1_s_part.smt2 @@ -0,0 +1,25 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($x$0 Int) ($state$0 Int) ($bias$0 Int) ($guarantee1$0 Bool) ($guarantee2$0 Bool) ($guarantee3$0 Bool) ($guarantee4$0 Bool) ($guarantee5$0 Bool) ($guarantee_all$0 Bool) ($bias_max$0 Bool) ($x$1 Int) ($state$1 Int) ($bias$1 Int) ($guarantee1$1 Bool) ($guarantee2$1 Bool) ($guarantee3$1 Bool) ($guarantee4$1 Bool) ($guarantee5$1 Bool) ($guarantee_all$1 Bool) ($bias_max$1 Bool)) Bool (and (= $bias$1 (ite %init 0 (+ (ite (= $x$1 1) 1 (- 0 1)) $bias$0))) (= $bias_max$1 (ite %init false (or (or (>= $bias$1 2) (<= $bias$1 (- 0 2))) $bias_max$0))) (= $guarantee1$1 (=> (= $state$1 0) (= $bias$1 0))) (= $guarantee2$1 (ite %init true (=> (and (= $state$0 0) (= $x$1 1)) (= $state$1 2)))) (= $guarantee3$1 (ite %init true (=> (and (= $state$0 0) (= $x$1 0)) (= $state$1 1)))) (= $guarantee4$1 (=> $bias_max$1 (= $state$1 3))) (= $guarantee5$1 (or (or (or (= $state$1 0) (= $state$1 1)) (= $state$1 2)) (= $state$1 3))) (= $guarantee_all$1 (and (and (and (and $guarantee1$1 $guarantee2$1) $guarantee3$1) $guarantee4$1) $guarantee5$1)) (or (= $x$1 0) (= $x$1 1)))) +; Universally quantified variables +(declare-fun $x$~1 () Int) +(declare-fun $state$~1 () Int) +(declare-fun $bias$~1 () Int) +(declare-fun $guarantee1$~1 () Bool) +(declare-fun $guarantee2$~1 () Bool) +(declare-fun $guarantee3$~1 () Bool) +(declare-fun $guarantee4$~1 () Bool) +(declare-fun $guarantee5$~1 () Bool) +(declare-fun $guarantee_all$~1 () Bool) +(declare-fun $bias_max$~1 () Bool) +(declare-fun $x$0 () Int) +(declare-fun $state$0 () Int) +(declare-fun $bias$0 () Int) +(declare-fun $guarantee1$0 () Bool) +(declare-fun $guarantee2$0 () Bool) +(declare-fun $guarantee3$0 () Bool) +(declare-fun $guarantee4$0 () Bool) +(declare-fun $guarantee5$0 () Bool) +(declare-fun $guarantee_all$0 () Bool) +(declare-fun $bias_max$0 () Bool) +(assert (T true $x$~1 $state$~1 $bias$~1 $guarantee1$~1 $guarantee2$~1 $guarantee3$~1 $guarantee4$~1 $guarantee5$~1 $guarantee_all$~1 $bias_max$~1 $x$0 $state$0 $bias$0 $guarantee1$0 $guarantee2$0 $guarantee3$0 $guarantee4$0 $guarantee5$0 $guarantee_all$0 $bias_max$0)) diff --git a/bench/tasks/newexample_base1_t_part.smt2 b/bench/tasks/newexample_base1_t_part.smt2 new file mode 100755 index 000000000..c591e5db2 --- /dev/null +++ b/bench/tasks/newexample_base1_t_part.smt2 @@ -0,0 +1,25 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($x$0 Int) ($state$0 Int) ($bias$0 Int) ($guarantee1$0 Bool) ($guarantee2$0 Bool) ($guarantee3$0 Bool) ($guarantee4$0 Bool) ($guarantee5$0 Bool) ($guarantee_all$0 Bool) ($bias_max$0 Bool) ($x$1 Int) ($state$1 Int) ($bias$1 Int) ($guarantee1$1 Bool) ($guarantee2$1 Bool) ($guarantee3$1 Bool) ($guarantee4$1 Bool) ($guarantee5$1 Bool) ($guarantee_all$1 Bool) ($bias_max$1 Bool)) Bool (and (= $bias$1 (ite %init 0 (+ (ite (= $x$1 1) 1 (- 0 1)) $bias$0))) (= $bias_max$1 (ite %init false (or (or (>= $bias$1 2) (<= $bias$1 (- 0 2))) $bias_max$0))) (= $guarantee1$1 (=> (= $state$1 0) (= $bias$1 0))) (= $guarantee2$1 (ite %init true (=> (and (= $state$0 0) (= $x$1 1)) (= $state$1 2)))) (= $guarantee3$1 (ite %init true (=> (and (= $state$0 0) (= $x$1 0)) (= $state$1 1)))) (= $guarantee4$1 (=> $bias_max$1 (= $state$1 3))) (= $guarantee5$1 (or (or (or (= $state$1 0) (= $state$1 1)) (= $state$1 2)) (= $state$1 3))) (= $guarantee_all$1 (and (and (and (and $guarantee1$1 $guarantee2$1) $guarantee3$1) $guarantee4$1) $guarantee5$1)) (or (= $x$1 0) (= $x$1 1)))) +; Universally quantified variables +(declare-fun $x$~1 () Int) +(declare-fun $state$~1 () Int) +(declare-fun $bias$~1 () Int) +(declare-fun $guarantee1$~1 () Bool) +(declare-fun $guarantee2$~1 () Bool) +(declare-fun $guarantee3$~1 () Bool) +(declare-fun $guarantee4$~1 () Bool) +(declare-fun $guarantee5$~1 () Bool) +(declare-fun $guarantee_all$~1 () Bool) +(declare-fun $bias_max$~1 () Bool) +(declare-fun $x$0 () Int) +(declare-fun $state$2 () Int) +(declare-fun $bias$2 () Int) +(declare-fun $guarantee1$2 () Bool) +(declare-fun $guarantee2$2 () Bool) +(declare-fun $guarantee3$2 () Bool) +(declare-fun $guarantee4$2 () Bool) +(declare-fun $guarantee5$2 () Bool) +(declare-fun $guarantee_all$2 () Bool) +(declare-fun $bias_max$2 () Bool) +(assert (and (T true $x$~1 $state$~1 $bias$~1 $guarantee1$~1 $guarantee2$~1 $guarantee3$~1 $guarantee4$~1 $guarantee5$~1 $guarantee_all$~1 $bias_max$~1 $x$0 $state$2 $bias$2 $guarantee1$2 $guarantee2$2 $guarantee3$2 $guarantee4$2 $guarantee5$2 $guarantee_all$2 $bias_max$2) $guarantee_all$2)) diff --git a/bench/tasks/newexample_base2_s_part.smt2 b/bench/tasks/newexample_base2_s_part.smt2 new file mode 100755 index 000000000..5cb956056 --- /dev/null +++ b/bench/tasks/newexample_base2_s_part.smt2 @@ -0,0 +1,37 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($x$0 Int) ($state$0 Int) ($bias$0 Int) ($guarantee1$0 Bool) ($guarantee2$0 Bool) ($guarantee3$0 Bool) ($guarantee4$0 Bool) ($guarantee5$0 Bool) ($guarantee_all$0 Bool) ($bias_max$0 Bool) ($x$1 Int) ($state$1 Int) ($bias$1 Int) ($guarantee1$1 Bool) ($guarantee2$1 Bool) ($guarantee3$1 Bool) ($guarantee4$1 Bool) ($guarantee5$1 Bool) ($guarantee_all$1 Bool) ($bias_max$1 Bool)) Bool (and (= $bias$1 (ite %init 0 (+ (ite (= $x$1 1) 1 (- 0 1)) $bias$0))) (= $bias_max$1 (ite %init false (or (or (>= $bias$1 2) (<= $bias$1 (- 0 2))) $bias_max$0))) (= $guarantee1$1 (=> (= $state$1 0) (= $bias$1 0))) (= $guarantee2$1 (ite %init true (=> (and (= $state$0 0) (= $x$1 1)) (= $state$1 2)))) (= $guarantee3$1 (ite %init true (=> (and (= $state$0 0) (= $x$1 0)) (= $state$1 1)))) (= $guarantee4$1 (=> $bias_max$1 (= $state$1 3))) (= $guarantee5$1 (or (or (or (= $state$1 0) (= $state$1 1)) (= $state$1 2)) (= $state$1 3))) (= $guarantee_all$1 (and (and (and (and $guarantee1$1 $guarantee2$1) $guarantee3$1) $guarantee4$1) $guarantee5$1)) (or (= $x$1 0) (= $x$1 1)))) +; Universally quantified variables +(declare-fun $x$~1 () Int) +(declare-fun $state$~1 () Int) +(declare-fun $bias$~1 () Int) +(declare-fun $guarantee1$~1 () Bool) +(declare-fun $guarantee2$~1 () Bool) +(declare-fun $guarantee3$~1 () Bool) +(declare-fun $guarantee4$~1 () Bool) +(declare-fun $guarantee5$~1 () Bool) +(declare-fun $guarantee_all$~1 () Bool) +(declare-fun $bias_max$~1 () Bool) +(declare-fun $x$0 () Int) +(declare-fun $state$0 () Int) +(declare-fun $bias$0 () Int) +(declare-fun $guarantee1$0 () Bool) +(declare-fun $guarantee2$0 () Bool) +(declare-fun $guarantee3$0 () Bool) +(declare-fun $guarantee4$0 () Bool) +(declare-fun $guarantee5$0 () Bool) +(declare-fun $guarantee_all$0 () Bool) +(declare-fun $bias_max$0 () Bool) +(declare-fun $x$1 () Int) +(declare-fun $state$1 () Int) +(declare-fun $bias$1 () Int) +(declare-fun $guarantee1$1 () Bool) +(declare-fun $guarantee2$1 () Bool) +(declare-fun $guarantee3$1 () Bool) +(declare-fun $guarantee4$1 () Bool) +(declare-fun $guarantee5$1 () Bool) +(declare-fun $guarantee_all$1 () Bool) +(declare-fun $bias_max$1 () Bool) +(assert (T true $x$~1 $state$~1 $bias$~1 $guarantee1$~1 $guarantee2$~1 $guarantee3$~1 $guarantee4$~1 $guarantee5$~1 $guarantee_all$~1 $bias_max$~1 $x$0 $state$0 $bias$0 $guarantee1$0 $guarantee2$0 $guarantee3$0 $guarantee4$0 $guarantee5$0 $guarantee_all$0 $bias_max$0)) +(assert $guarantee_all$0) +(assert (T false $x$0 $state$0 $bias$0 $guarantee1$0 $guarantee2$0 $guarantee3$0 $guarantee4$0 $guarantee5$0 $guarantee_all$0 $bias_max$0 $x$1 $state$1 $bias$1 $guarantee1$1 $guarantee2$1 $guarantee3$1 $guarantee4$1 $guarantee5$1 $guarantee_all$1 $bias_max$1)) diff --git a/bench/tasks/newexample_base2_t_part.smt2 b/bench/tasks/newexample_base2_t_part.smt2 new file mode 100755 index 000000000..3d185c457 --- /dev/null +++ b/bench/tasks/newexample_base2_t_part.smt2 @@ -0,0 +1,35 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($x$0 Int) ($state$0 Int) ($bias$0 Int) ($guarantee1$0 Bool) ($guarantee2$0 Bool) ($guarantee3$0 Bool) ($guarantee4$0 Bool) ($guarantee5$0 Bool) ($guarantee_all$0 Bool) ($bias_max$0 Bool) ($x$1 Int) ($state$1 Int) ($bias$1 Int) ($guarantee1$1 Bool) ($guarantee2$1 Bool) ($guarantee3$1 Bool) ($guarantee4$1 Bool) ($guarantee5$1 Bool) ($guarantee_all$1 Bool) ($bias_max$1 Bool)) Bool (and (= $bias$1 (ite %init 0 (+ (ite (= $x$1 1) 1 (- 0 1)) $bias$0))) (= $bias_max$1 (ite %init false (or (or (>= $bias$1 2) (<= $bias$1 (- 0 2))) $bias_max$0))) (= $guarantee1$1 (=> (= $state$1 0) (= $bias$1 0))) (= $guarantee2$1 (ite %init true (=> (and (= $state$0 0) (= $x$1 1)) (= $state$1 2)))) (= $guarantee3$1 (ite %init true (=> (and (= $state$0 0) (= $x$1 0)) (= $state$1 1)))) (= $guarantee4$1 (=> $bias_max$1 (= $state$1 3))) (= $guarantee5$1 (or (or (or (= $state$1 0) (= $state$1 1)) (= $state$1 2)) (= $state$1 3))) (= $guarantee_all$1 (and (and (and (and $guarantee1$1 $guarantee2$1) $guarantee3$1) $guarantee4$1) $guarantee5$1)) (or (= $x$1 0) (= $x$1 1)))) +; Universally quantified variables +(declare-fun $x$~1 () Int) +(declare-fun $state$~1 () Int) +(declare-fun $bias$~1 () Int) +(declare-fun $guarantee1$~1 () Bool) +(declare-fun $guarantee2$~1 () Bool) +(declare-fun $guarantee3$~1 () Bool) +(declare-fun $guarantee4$~1 () Bool) +(declare-fun $guarantee5$~1 () Bool) +(declare-fun $guarantee_all$~1 () Bool) +(declare-fun $bias_max$~1 () Bool) +(declare-fun $x$0 () Int) +(declare-fun $state$0 () Int) +(declare-fun $bias$0 () Int) +(declare-fun $guarantee1$0 () Bool) +(declare-fun $guarantee2$0 () Bool) +(declare-fun $guarantee3$0 () Bool) +(declare-fun $guarantee4$0 () Bool) +(declare-fun $guarantee5$0 () Bool) +(declare-fun $guarantee_all$0 () Bool) +(declare-fun $bias_max$0 () Bool) +(declare-fun $x$1 () Int) +(declare-fun $state$3 () Int) +(declare-fun $bias$3 () Int) +(declare-fun $guarantee1$3 () Bool) +(declare-fun $guarantee2$3 () Bool) +(declare-fun $guarantee3$3 () Bool) +(declare-fun $guarantee4$3 () Bool) +(declare-fun $guarantee5$3 () Bool) +(declare-fun $guarantee_all$3 () Bool) +(declare-fun $bias_max$3 () Bool) +(assert (and (T false $x$0 $state$0 $bias$0 $guarantee1$0 $guarantee2$0 $guarantee3$0 $guarantee4$0 $guarantee5$0 $guarantee_all$0 $bias_max$0 $x$1 $state$3 $bias$3 $guarantee1$3 $guarantee2$3 $guarantee3$3 $guarantee4$3 $guarantee5$3 $guarantee_all$3 $bias_max$3) $guarantee_all$3)) diff --git a/bench/tasks/newexample_base3_s_part.smt2 b/bench/tasks/newexample_base3_s_part.smt2 new file mode 100755 index 000000000..c8968f39c --- /dev/null +++ b/bench/tasks/newexample_base3_s_part.smt2 @@ -0,0 +1,49 @@ +; K = 3 +; Transition relation +(define-fun T ((%init Bool) ($x$0 Int) ($state$0 Int) ($bias$0 Int) ($guarantee1$0 Bool) ($guarantee2$0 Bool) ($guarantee3$0 Bool) ($guarantee4$0 Bool) ($guarantee5$0 Bool) ($guarantee_all$0 Bool) ($bias_max$0 Bool) ($x$1 Int) ($state$1 Int) ($bias$1 Int) ($guarantee1$1 Bool) ($guarantee2$1 Bool) ($guarantee3$1 Bool) ($guarantee4$1 Bool) ($guarantee5$1 Bool) ($guarantee_all$1 Bool) ($bias_max$1 Bool)) Bool (and (= $bias$1 (ite %init 0 (+ (ite (= $x$1 1) 1 (- 0 1)) $bias$0))) (= $bias_max$1 (ite %init false (or (or (>= $bias$1 2) (<= $bias$1 (- 0 2))) $bias_max$0))) (= $guarantee1$1 (=> (= $state$1 0) (= $bias$1 0))) (= $guarantee2$1 (ite %init true (=> (and (= $state$0 0) (= $x$1 1)) (= $state$1 2)))) (= $guarantee3$1 (ite %init true (=> (and (= $state$0 0) (= $x$1 0)) (= $state$1 1)))) (= $guarantee4$1 (=> $bias_max$1 (= $state$1 3))) (= $guarantee5$1 (or (or (or (= $state$1 0) (= $state$1 1)) (= $state$1 2)) (= $state$1 3))) (= $guarantee_all$1 (and (and (and (and $guarantee1$1 $guarantee2$1) $guarantee3$1) $guarantee4$1) $guarantee5$1)) (or (= $x$1 0) (= $x$1 1)))) +; Universally quantified variables +(declare-fun $x$~1 () Int) +(declare-fun $state$~1 () Int) +(declare-fun $bias$~1 () Int) +(declare-fun $guarantee1$~1 () Bool) +(declare-fun $guarantee2$~1 () Bool) +(declare-fun $guarantee3$~1 () Bool) +(declare-fun $guarantee4$~1 () Bool) +(declare-fun $guarantee5$~1 () Bool) +(declare-fun $guarantee_all$~1 () Bool) +(declare-fun $bias_max$~1 () Bool) +(declare-fun $x$0 () Int) +(declare-fun $state$0 () Int) +(declare-fun $bias$0 () Int) +(declare-fun $guarantee1$0 () Bool) +(declare-fun $guarantee2$0 () Bool) +(declare-fun $guarantee3$0 () Bool) +(declare-fun $guarantee4$0 () Bool) +(declare-fun $guarantee5$0 () Bool) +(declare-fun $guarantee_all$0 () Bool) +(declare-fun $bias_max$0 () Bool) +(declare-fun $x$1 () Int) +(declare-fun $state$1 () Int) +(declare-fun $bias$1 () Int) +(declare-fun $guarantee1$1 () Bool) +(declare-fun $guarantee2$1 () Bool) +(declare-fun $guarantee3$1 () Bool) +(declare-fun $guarantee4$1 () Bool) +(declare-fun $guarantee5$1 () Bool) +(declare-fun $guarantee_all$1 () Bool) +(declare-fun $bias_max$1 () Bool) +(declare-fun $x$2 () Int) +(declare-fun $state$2 () Int) +(declare-fun $bias$2 () Int) +(declare-fun $guarantee1$2 () Bool) +(declare-fun $guarantee2$2 () Bool) +(declare-fun $guarantee3$2 () Bool) +(declare-fun $guarantee4$2 () Bool) +(declare-fun $guarantee5$2 () Bool) +(declare-fun $guarantee_all$2 () Bool) +(declare-fun $bias_max$2 () Bool) +(assert (T true $x$~1 $state$~1 $bias$~1 $guarantee1$~1 $guarantee2$~1 $guarantee3$~1 $guarantee4$~1 $guarantee5$~1 $guarantee_all$~1 $bias_max$~1 $x$0 $state$0 $bias$0 $guarantee1$0 $guarantee2$0 $guarantee3$0 $guarantee4$0 $guarantee5$0 $guarantee_all$0 $bias_max$0)) +(assert $guarantee_all$0) +(assert (T false $x$0 $state$0 $bias$0 $guarantee1$0 $guarantee2$0 $guarantee3$0 $guarantee4$0 $guarantee5$0 $guarantee_all$0 $bias_max$0 $x$1 $state$1 $bias$1 $guarantee1$1 $guarantee2$1 $guarantee3$1 $guarantee4$1 $guarantee5$1 $guarantee_all$1 $bias_max$1)) +(assert $guarantee_all$1) +(assert (T false $x$1 $state$1 $bias$1 $guarantee1$1 $guarantee2$1 $guarantee3$1 $guarantee4$1 $guarantee5$1 $guarantee_all$1 $bias_max$1 $x$2 $state$2 $bias$2 $guarantee1$2 $guarantee2$2 $guarantee3$2 $guarantee4$2 $guarantee5$2 $guarantee_all$2 $bias_max$2)) diff --git a/bench/tasks/newexample_base3_t_part.smt2 b/bench/tasks/newexample_base3_t_part.smt2 new file mode 100755 index 000000000..aec031d67 --- /dev/null +++ b/bench/tasks/newexample_base3_t_part.smt2 @@ -0,0 +1,45 @@ +; K = 3 +; Transition relation +(define-fun T ((%init Bool) ($x$0 Int) ($state$0 Int) ($bias$0 Int) ($guarantee1$0 Bool) ($guarantee2$0 Bool) ($guarantee3$0 Bool) ($guarantee4$0 Bool) ($guarantee5$0 Bool) ($guarantee_all$0 Bool) ($bias_max$0 Bool) ($x$1 Int) ($state$1 Int) ($bias$1 Int) ($guarantee1$1 Bool) ($guarantee2$1 Bool) ($guarantee3$1 Bool) ($guarantee4$1 Bool) ($guarantee5$1 Bool) ($guarantee_all$1 Bool) ($bias_max$1 Bool)) Bool (and (= $bias$1 (ite %init 0 (+ (ite (= $x$1 1) 1 (- 0 1)) $bias$0))) (= $bias_max$1 (ite %init false (or (or (>= $bias$1 2) (<= $bias$1 (- 0 2))) $bias_max$0))) (= $guarantee1$1 (=> (= $state$1 0) (= $bias$1 0))) (= $guarantee2$1 (ite %init true (=> (and (= $state$0 0) (= $x$1 1)) (= $state$1 2)))) (= $guarantee3$1 (ite %init true (=> (and (= $state$0 0) (= $x$1 0)) (= $state$1 1)))) (= $guarantee4$1 (=> $bias_max$1 (= $state$1 3))) (= $guarantee5$1 (or (or (or (= $state$1 0) (= $state$1 1)) (= $state$1 2)) (= $state$1 3))) (= $guarantee_all$1 (and (and (and (and $guarantee1$1 $guarantee2$1) $guarantee3$1) $guarantee4$1) $guarantee5$1)) (or (= $x$1 0) (= $x$1 1)))) +; Universally quantified variables +(declare-fun $x$~1 () Int) +(declare-fun $state$~1 () Int) +(declare-fun $bias$~1 () Int) +(declare-fun $guarantee1$~1 () Bool) +(declare-fun $guarantee2$~1 () Bool) +(declare-fun $guarantee3$~1 () Bool) +(declare-fun $guarantee4$~1 () Bool) +(declare-fun $guarantee5$~1 () Bool) +(declare-fun $guarantee_all$~1 () Bool) +(declare-fun $bias_max$~1 () Bool) +(declare-fun $x$0 () Int) +(declare-fun $state$0 () Int) +(declare-fun $bias$0 () Int) +(declare-fun $guarantee1$0 () Bool) +(declare-fun $guarantee2$0 () Bool) +(declare-fun $guarantee3$0 () Bool) +(declare-fun $guarantee4$0 () Bool) +(declare-fun $guarantee5$0 () Bool) +(declare-fun $guarantee_all$0 () Bool) +(declare-fun $bias_max$0 () Bool) +(declare-fun $x$1 () Int) +(declare-fun $state$1 () Int) +(declare-fun $bias$1 () Int) +(declare-fun $guarantee1$1 () Bool) +(declare-fun $guarantee2$1 () Bool) +(declare-fun $guarantee3$1 () Bool) +(declare-fun $guarantee4$1 () Bool) +(declare-fun $guarantee5$1 () Bool) +(declare-fun $guarantee_all$1 () Bool) +(declare-fun $bias_max$1 () Bool) +(declare-fun $x$2 () Int) +(declare-fun $state$4 () Int) +(declare-fun $bias$4 () Int) +(declare-fun $guarantee1$4 () Bool) +(declare-fun $guarantee2$4 () Bool) +(declare-fun $guarantee3$4 () Bool) +(declare-fun $guarantee4$4 () Bool) +(declare-fun $guarantee5$4 () Bool) +(declare-fun $guarantee_all$4 () Bool) +(declare-fun $bias_max$4 () Bool) +(assert (and (T false $x$1 $state$1 $bias$1 $guarantee1$1 $guarantee2$1 $guarantee3$1 $guarantee4$1 $guarantee5$1 $guarantee_all$1 $bias_max$1 $x$2 $state$4 $bias$4 $guarantee1$4 $guarantee2$4 $guarantee3$4 $guarantee4$4 $guarantee5$4 $guarantee_all$4 $bias_max$4) $guarantee_all$4)) diff --git a/bench/tasks/newexample_extend_s_part.smt2 b/bench/tasks/newexample_extend_s_part.smt2 new file mode 100755 index 000000000..5bcf86dc8 --- /dev/null +++ b/bench/tasks/newexample_extend_s_part.smt2 @@ -0,0 +1,38 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($x$0 Int) ($state$0 Int) ($bias$0 Int) ($guarantee1$0 Bool) ($guarantee2$0 Bool) ($guarantee3$0 Bool) ($guarantee4$0 Bool) ($guarantee5$0 Bool) ($guarantee_all$0 Bool) ($bias_max$0 Bool) ($x$1 Int) ($state$1 Int) ($bias$1 Int) ($guarantee1$1 Bool) ($guarantee2$1 Bool) ($guarantee3$1 Bool) ($guarantee4$1 Bool) ($guarantee5$1 Bool) ($guarantee_all$1 Bool) ($bias_max$1 Bool)) Bool (and (= $bias$1 (ite %init 0 (+ (ite (= $x$1 1) 1 (- 0 1)) $bias$0))) (= $bias_max$1 (ite %init false (or (or (>= $bias$1 2) (<= $bias$1 (- 0 2))) $bias_max$0))) (= $guarantee1$1 (=> (= $state$1 0) (= $bias$1 0))) (= $guarantee2$1 (ite %init true (=> (and (= $state$0 0) (= $x$1 1)) (= $state$1 2)))) (= $guarantee3$1 (ite %init true (=> (and (= $state$0 0) (= $x$1 0)) (= $state$1 1)))) (= $guarantee4$1 (=> $bias_max$1 (= $state$1 3))) (= $guarantee5$1 (or (or (or (= $state$1 0) (= $state$1 1)) (= $state$1 2)) (= $state$1 3))) (= $guarantee_all$1 (and (and (and (and $guarantee1$1 $guarantee2$1) $guarantee3$1) $guarantee4$1) $guarantee5$1)) (or (= $x$1 0) (= $x$1 1)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $x$~1 () Int) +(declare-fun $state$~1 () Int) +(declare-fun $bias$~1 () Int) +(declare-fun $guarantee1$~1 () Bool) +(declare-fun $guarantee2$~1 () Bool) +(declare-fun $guarantee3$~1 () Bool) +(declare-fun $guarantee4$~1 () Bool) +(declare-fun $guarantee5$~1 () Bool) +(declare-fun $guarantee_all$~1 () Bool) +(declare-fun $bias_max$~1 () Bool) +(declare-fun $x$0 () Int) +(declare-fun $state$0 () Int) +(declare-fun $bias$0 () Int) +(declare-fun $guarantee1$0 () Bool) +(declare-fun $guarantee2$0 () Bool) +(declare-fun $guarantee3$0 () Bool) +(declare-fun $guarantee4$0 () Bool) +(declare-fun $guarantee5$0 () Bool) +(declare-fun $guarantee_all$0 () Bool) +(declare-fun $bias_max$0 () Bool) +(declare-fun $x$1 () Int) +(declare-fun $state$1 () Int) +(declare-fun $bias$1 () Int) +(declare-fun $guarantee1$1 () Bool) +(declare-fun $guarantee2$1 () Bool) +(declare-fun $guarantee3$1 () Bool) +(declare-fun $guarantee4$1 () Bool) +(declare-fun $guarantee5$1 () Bool) +(declare-fun $guarantee_all$1 () Bool) +(declare-fun $bias_max$1 () Bool) +(assert (T %init $x$~1 $state$~1 $bias$~1 $guarantee1$~1 $guarantee2$~1 $guarantee3$~1 $guarantee4$~1 $guarantee5$~1 $guarantee_all$~1 $bias_max$~1 $x$0 $state$0 $bias$0 $guarantee1$0 $guarantee2$0 $guarantee3$0 $guarantee4$0 $guarantee5$0 $guarantee_all$0 $bias_max$0)) +(assert $guarantee_all$0) +(assert (T false $x$0 $state$0 $bias$0 $guarantee1$0 $guarantee2$0 $guarantee3$0 $guarantee4$0 $guarantee5$0 $guarantee_all$0 $bias_max$0 $x$1 $state$1 $bias$1 $guarantee1$1 $guarantee2$1 $guarantee3$1 $guarantee4$1 $guarantee5$1 $guarantee_all$1 $bias_max$1)) diff --git a/bench/tasks/newexample_extend_t_part.smt2 b/bench/tasks/newexample_extend_t_part.smt2 new file mode 100755 index 000000000..05e5cc26f --- /dev/null +++ b/bench/tasks/newexample_extend_t_part.smt2 @@ -0,0 +1,36 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($x$0 Int) ($state$0 Int) ($bias$0 Int) ($guarantee1$0 Bool) ($guarantee2$0 Bool) ($guarantee3$0 Bool) ($guarantee4$0 Bool) ($guarantee5$0 Bool) ($guarantee_all$0 Bool) ($bias_max$0 Bool) ($x$1 Int) ($state$1 Int) ($bias$1 Int) ($guarantee1$1 Bool) ($guarantee2$1 Bool) ($guarantee3$1 Bool) ($guarantee4$1 Bool) ($guarantee5$1 Bool) ($guarantee_all$1 Bool) ($bias_max$1 Bool)) Bool (and (= $bias$1 (ite %init 0 (+ (ite (= $x$1 1) 1 (- 0 1)) $bias$0))) (= $bias_max$1 (ite %init false (or (or (>= $bias$1 2) (<= $bias$1 (- 0 2))) $bias_max$0))) (= $guarantee1$1 (=> (= $state$1 0) (= $bias$1 0))) (= $guarantee2$1 (ite %init true (=> (and (= $state$0 0) (= $x$1 1)) (= $state$1 2)))) (= $guarantee3$1 (ite %init true (=> (and (= $state$0 0) (= $x$1 0)) (= $state$1 1)))) (= $guarantee4$1 (=> $bias_max$1 (= $state$1 3))) (= $guarantee5$1 (or (or (or (= $state$1 0) (= $state$1 1)) (= $state$1 2)) (= $state$1 3))) (= $guarantee_all$1 (and (and (and (and $guarantee1$1 $guarantee2$1) $guarantee3$1) $guarantee4$1) $guarantee5$1)) (or (= $x$1 0) (= $x$1 1)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $x$~1 () Int) +(declare-fun $state$~1 () Int) +(declare-fun $bias$~1 () Int) +(declare-fun $guarantee1$~1 () Bool) +(declare-fun $guarantee2$~1 () Bool) +(declare-fun $guarantee3$~1 () Bool) +(declare-fun $guarantee4$~1 () Bool) +(declare-fun $guarantee5$~1 () Bool) +(declare-fun $guarantee_all$~1 () Bool) +(declare-fun $bias_max$~1 () Bool) +(declare-fun $x$0 () Int) +(declare-fun $state$0 () Int) +(declare-fun $bias$0 () Int) +(declare-fun $guarantee1$0 () Bool) +(declare-fun $guarantee2$0 () Bool) +(declare-fun $guarantee3$0 () Bool) +(declare-fun $guarantee4$0 () Bool) +(declare-fun $guarantee5$0 () Bool) +(declare-fun $guarantee_all$0 () Bool) +(declare-fun $bias_max$0 () Bool) +(declare-fun $x$1 () Int) +(declare-fun $state$3 () Int) +(declare-fun $bias$3 () Int) +(declare-fun $guarantee1$3 () Bool) +(declare-fun $guarantee2$3 () Bool) +(declare-fun $guarantee3$3 () Bool) +(declare-fun $guarantee4$3 () Bool) +(declare-fun $guarantee5$3 () Bool) +(declare-fun $guarantee_all$3 () Bool) +(declare-fun $bias_max$3 () Bool) +(assert (and (T false $x$0 $state$0 $bias$0 $guarantee1$0 $guarantee2$0 $guarantee3$0 $guarantee4$0 $guarantee5$0 $guarantee_all$0 $bias_max$0 $x$1 $state$3 $bias$3 $guarantee1$3 $guarantee2$3 $guarantee3$3 $guarantee4$3 $guarantee5$3 $guarantee_all$3 $bias_max$3) $guarantee_all$3)) diff --git a/bench/tasks/rtp_1_base_s_part.smt2 b/bench/tasks/rtp_1_base_s_part.smt2 new file mode 100755 index 000000000..219e701ec --- /dev/null +++ b/bench/tasks/rtp_1_base_s_part.smt2 @@ -0,0 +1,37 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($e01$0 Bool) ($e02$0 Bool) ($e03$0 Bool) ($e04$0 Bool) ($e05$0 Bool) ($e06$0 Bool) ($e07$0 Bool) ($e08$0 Bool) ($e09$0 Bool) ($e10$0 Bool) ($e11$0 Bool) ($e12$0 Bool) ($V76_erreur$0 Bool) ($OK$0 Bool) ($V170_X$0 Bool) ($V175_Sofar$0 Bool) ($e01$1 Bool) ($e02$1 Bool) ($e03$1 Bool) ($e04$1 Bool) ($e05$1 Bool) ($e06$1 Bool) ($e07$1 Bool) ($e08$1 Bool) ($e09$1 Bool) ($e10$1 Bool) ($e11$1 Bool) ($e12$1 Bool) ($V76_erreur$1 Bool) ($OK$1 Bool) ($V170_X$1 Bool) ($V175_Sofar$1 Bool)) Bool (and (= $OK$1 (=> $V175_Sofar$1 (not $V76_erreur$1))) (= $V170_X$1 (or (or (or (or (or (or (or (or (or (or (or (or (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1)) (and (and (and (and (and (and (and (and (and (and (and $e01$1 (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) $e02$1) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) $e03$1) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) $e04$1) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) $e05$1) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) $e06$1) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) $e07$1) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) $e08$1) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) $e09$1) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) $e10$1) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) $e11$1) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) $e12$1))) (= $V175_Sofar$1 (ite %init $V170_X$1 (and $V170_X$1 $V175_Sofar$0))))) +; Universally quantified variables +(declare-fun $e01$~1 () Bool) +(declare-fun $e02$~1 () Bool) +(declare-fun $e03$~1 () Bool) +(declare-fun $e04$~1 () Bool) +(declare-fun $e05$~1 () Bool) +(declare-fun $e06$~1 () Bool) +(declare-fun $e07$~1 () Bool) +(declare-fun $e08$~1 () Bool) +(declare-fun $e09$~1 () Bool) +(declare-fun $e10$~1 () Bool) +(declare-fun $e11$~1 () Bool) +(declare-fun $e12$~1 () Bool) +(declare-fun $V76_erreur$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V170_X$~1 () Bool) +(declare-fun $V175_Sofar$~1 () Bool) +(declare-fun $e01$0 () Bool) +(declare-fun $e02$0 () Bool) +(declare-fun $e03$0 () Bool) +(declare-fun $e04$0 () Bool) +(declare-fun $e05$0 () Bool) +(declare-fun $e06$0 () Bool) +(declare-fun $e07$0 () Bool) +(declare-fun $e08$0 () Bool) +(declare-fun $e09$0 () Bool) +(declare-fun $e10$0 () Bool) +(declare-fun $e11$0 () Bool) +(declare-fun $e12$0 () Bool) +(declare-fun $V76_erreur$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V170_X$0 () Bool) +(declare-fun $V175_Sofar$0 () Bool) +(assert (T true $e01$~1 $e02$~1 $e03$~1 $e04$~1 $e05$~1 $e06$~1 $e07$~1 $e08$~1 $e09$~1 $e10$~1 $e11$~1 $e12$~1 $V76_erreur$~1 $OK$~1 $V170_X$~1 $V175_Sofar$~1 $e01$0 $e02$0 $e03$0 $e04$0 $e05$0 $e06$0 $e07$0 $e08$0 $e09$0 $e10$0 $e11$0 $e12$0 $V76_erreur$0 $OK$0 $V170_X$0 $V175_Sofar$0)) diff --git a/bench/tasks/rtp_1_base_t_part.smt2 b/bench/tasks/rtp_1_base_t_part.smt2 new file mode 100755 index 000000000..5b75df46c --- /dev/null +++ b/bench/tasks/rtp_1_base_t_part.smt2 @@ -0,0 +1,37 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($e01$0 Bool) ($e02$0 Bool) ($e03$0 Bool) ($e04$0 Bool) ($e05$0 Bool) ($e06$0 Bool) ($e07$0 Bool) ($e08$0 Bool) ($e09$0 Bool) ($e10$0 Bool) ($e11$0 Bool) ($e12$0 Bool) ($V76_erreur$0 Bool) ($OK$0 Bool) ($V170_X$0 Bool) ($V175_Sofar$0 Bool) ($e01$1 Bool) ($e02$1 Bool) ($e03$1 Bool) ($e04$1 Bool) ($e05$1 Bool) ($e06$1 Bool) ($e07$1 Bool) ($e08$1 Bool) ($e09$1 Bool) ($e10$1 Bool) ($e11$1 Bool) ($e12$1 Bool) ($V76_erreur$1 Bool) ($OK$1 Bool) ($V170_X$1 Bool) ($V175_Sofar$1 Bool)) Bool (and (= $OK$1 (=> $V175_Sofar$1 (not $V76_erreur$1))) (= $V170_X$1 (or (or (or (or (or (or (or (or (or (or (or (or (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1)) (and (and (and (and (and (and (and (and (and (and (and $e01$1 (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) $e02$1) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) $e03$1) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) $e04$1) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) $e05$1) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) $e06$1) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) $e07$1) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) $e08$1) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) $e09$1) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) $e10$1) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) $e11$1) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) $e12$1))) (= $V175_Sofar$1 (ite %init $V170_X$1 (and $V170_X$1 $V175_Sofar$0))))) +; Universally quantified variables +(declare-fun $e01$~1 () Bool) +(declare-fun $e02$~1 () Bool) +(declare-fun $e03$~1 () Bool) +(declare-fun $e04$~1 () Bool) +(declare-fun $e05$~1 () Bool) +(declare-fun $e06$~1 () Bool) +(declare-fun $e07$~1 () Bool) +(declare-fun $e08$~1 () Bool) +(declare-fun $e09$~1 () Bool) +(declare-fun $e10$~1 () Bool) +(declare-fun $e11$~1 () Bool) +(declare-fun $e12$~1 () Bool) +(declare-fun $V76_erreur$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V170_X$~1 () Bool) +(declare-fun $V175_Sofar$~1 () Bool) +(declare-fun $e01$0 () Bool) +(declare-fun $e02$0 () Bool) +(declare-fun $e03$0 () Bool) +(declare-fun $e04$0 () Bool) +(declare-fun $e05$0 () Bool) +(declare-fun $e06$0 () Bool) +(declare-fun $e07$0 () Bool) +(declare-fun $e08$0 () Bool) +(declare-fun $e09$0 () Bool) +(declare-fun $e10$0 () Bool) +(declare-fun $e11$0 () Bool) +(declare-fun $e12$0 () Bool) +(declare-fun $V76_erreur$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V170_X$2 () Bool) +(declare-fun $V175_Sofar$2 () Bool) +(assert (and (T true $e01$~1 $e02$~1 $e03$~1 $e04$~1 $e05$~1 $e06$~1 $e07$~1 $e08$~1 $e09$~1 $e10$~1 $e11$~1 $e12$~1 $V76_erreur$~1 $OK$~1 $V170_X$~1 $V175_Sofar$~1 $e01$0 $e02$0 $e03$0 $e04$0 $e05$0 $e06$0 $e07$0 $e08$0 $e09$0 $e10$0 $e11$0 $e12$0 $V76_erreur$2 $OK$2 $V170_X$2 $V175_Sofar$2) $OK$2)) diff --git a/bench/tasks/rtp_1_extend_s_part.smt2 b/bench/tasks/rtp_1_extend_s_part.smt2 new file mode 100755 index 000000000..9ee3cdaa5 --- /dev/null +++ b/bench/tasks/rtp_1_extend_s_part.smt2 @@ -0,0 +1,38 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($e01$0 Bool) ($e02$0 Bool) ($e03$0 Bool) ($e04$0 Bool) ($e05$0 Bool) ($e06$0 Bool) ($e07$0 Bool) ($e08$0 Bool) ($e09$0 Bool) ($e10$0 Bool) ($e11$0 Bool) ($e12$0 Bool) ($V76_erreur$0 Bool) ($OK$0 Bool) ($V170_X$0 Bool) ($V175_Sofar$0 Bool) ($e01$1 Bool) ($e02$1 Bool) ($e03$1 Bool) ($e04$1 Bool) ($e05$1 Bool) ($e06$1 Bool) ($e07$1 Bool) ($e08$1 Bool) ($e09$1 Bool) ($e10$1 Bool) ($e11$1 Bool) ($e12$1 Bool) ($V76_erreur$1 Bool) ($OK$1 Bool) ($V170_X$1 Bool) ($V175_Sofar$1 Bool)) Bool (and (= $OK$1 (=> $V175_Sofar$1 (not $V76_erreur$1))) (= $V170_X$1 (or (or (or (or (or (or (or (or (or (or (or (or (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1)) (and (and (and (and (and (and (and (and (and (and (and $e01$1 (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) $e02$1) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) $e03$1) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) $e04$1) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) $e05$1) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) $e06$1) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) $e07$1) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) $e08$1) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) $e09$1) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) $e10$1) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) $e11$1) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) $e12$1))) (= $V175_Sofar$1 (ite %init $V170_X$1 (and $V170_X$1 $V175_Sofar$0))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $e01$~1 () Bool) +(declare-fun $e02$~1 () Bool) +(declare-fun $e03$~1 () Bool) +(declare-fun $e04$~1 () Bool) +(declare-fun $e05$~1 () Bool) +(declare-fun $e06$~1 () Bool) +(declare-fun $e07$~1 () Bool) +(declare-fun $e08$~1 () Bool) +(declare-fun $e09$~1 () Bool) +(declare-fun $e10$~1 () Bool) +(declare-fun $e11$~1 () Bool) +(declare-fun $e12$~1 () Bool) +(declare-fun $V76_erreur$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V170_X$~1 () Bool) +(declare-fun $V175_Sofar$~1 () Bool) +(declare-fun $e01$0 () Bool) +(declare-fun $e02$0 () Bool) +(declare-fun $e03$0 () Bool) +(declare-fun $e04$0 () Bool) +(declare-fun $e05$0 () Bool) +(declare-fun $e06$0 () Bool) +(declare-fun $e07$0 () Bool) +(declare-fun $e08$0 () Bool) +(declare-fun $e09$0 () Bool) +(declare-fun $e10$0 () Bool) +(declare-fun $e11$0 () Bool) +(declare-fun $e12$0 () Bool) +(declare-fun $V76_erreur$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V170_X$0 () Bool) +(declare-fun $V175_Sofar$0 () Bool) +(assert (T %init $e01$~1 $e02$~1 $e03$~1 $e04$~1 $e05$~1 $e06$~1 $e07$~1 $e08$~1 $e09$~1 $e10$~1 $e11$~1 $e12$~1 $V76_erreur$~1 $OK$~1 $V170_X$~1 $V175_Sofar$~1 $e01$0 $e02$0 $e03$0 $e04$0 $e05$0 $e06$0 $e07$0 $e08$0 $e09$0 $e10$0 $e11$0 $e12$0 $V76_erreur$0 $OK$0 $V170_X$0 $V175_Sofar$0)) diff --git a/bench/tasks/rtp_1_extend_t_part.smt2 b/bench/tasks/rtp_1_extend_t_part.smt2 new file mode 100755 index 000000000..b5dc93c1f --- /dev/null +++ b/bench/tasks/rtp_1_extend_t_part.smt2 @@ -0,0 +1,38 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($e01$0 Bool) ($e02$0 Bool) ($e03$0 Bool) ($e04$0 Bool) ($e05$0 Bool) ($e06$0 Bool) ($e07$0 Bool) ($e08$0 Bool) ($e09$0 Bool) ($e10$0 Bool) ($e11$0 Bool) ($e12$0 Bool) ($V76_erreur$0 Bool) ($OK$0 Bool) ($V170_X$0 Bool) ($V175_Sofar$0 Bool) ($e01$1 Bool) ($e02$1 Bool) ($e03$1 Bool) ($e04$1 Bool) ($e05$1 Bool) ($e06$1 Bool) ($e07$1 Bool) ($e08$1 Bool) ($e09$1 Bool) ($e10$1 Bool) ($e11$1 Bool) ($e12$1 Bool) ($V76_erreur$1 Bool) ($OK$1 Bool) ($V170_X$1 Bool) ($V175_Sofar$1 Bool)) Bool (and (= $OK$1 (=> $V175_Sofar$1 (not $V76_erreur$1))) (= $V170_X$1 (or (or (or (or (or (or (or (or (or (or (or (or (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1)) (and (and (and (and (and (and (and (and (and (and (and $e01$1 (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) $e02$1) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) $e03$1) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) $e04$1) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) $e05$1) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) $e06$1) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) $e07$1) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) $e08$1) (not $e09$1)) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) $e09$1) (not $e10$1)) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) $e10$1) (not $e11$1)) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) $e11$1) (not $e12$1))) (and (and (and (and (and (and (and (and (and (and (and (not $e01$1) (not $e02$1)) (not $e03$1)) (not $e04$1)) (not $e05$1)) (not $e06$1)) (not $e07$1)) (not $e08$1)) (not $e09$1)) (not $e10$1)) (not $e11$1)) $e12$1))) (= $V175_Sofar$1 (ite %init $V170_X$1 (and $V170_X$1 $V175_Sofar$0))))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $e01$~1 () Bool) +(declare-fun $e02$~1 () Bool) +(declare-fun $e03$~1 () Bool) +(declare-fun $e04$~1 () Bool) +(declare-fun $e05$~1 () Bool) +(declare-fun $e06$~1 () Bool) +(declare-fun $e07$~1 () Bool) +(declare-fun $e08$~1 () Bool) +(declare-fun $e09$~1 () Bool) +(declare-fun $e10$~1 () Bool) +(declare-fun $e11$~1 () Bool) +(declare-fun $e12$~1 () Bool) +(declare-fun $V76_erreur$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V170_X$~1 () Bool) +(declare-fun $V175_Sofar$~1 () Bool) +(declare-fun $e01$0 () Bool) +(declare-fun $e02$0 () Bool) +(declare-fun $e03$0 () Bool) +(declare-fun $e04$0 () Bool) +(declare-fun $e05$0 () Bool) +(declare-fun $e06$0 () Bool) +(declare-fun $e07$0 () Bool) +(declare-fun $e08$0 () Bool) +(declare-fun $e09$0 () Bool) +(declare-fun $e10$0 () Bool) +(declare-fun $e11$0 () Bool) +(declare-fun $e12$0 () Bool) +(declare-fun $V76_erreur$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V170_X$2 () Bool) +(declare-fun $V175_Sofar$2 () Bool) +(assert (and (T %init $e01$~1 $e02$~1 $e03$~1 $e04$~1 $e05$~1 $e06$~1 $e07$~1 $e08$~1 $e09$~1 $e10$~1 $e11$~1 $e12$~1 $V76_erreur$~1 $OK$~1 $V170_X$~1 $V175_Sofar$~1 $e01$0 $e02$0 $e03$0 $e04$0 $e05$0 $e06$0 $e07$0 $e08$0 $e09$0 $e10$0 $e11$0 $e12$0 $V76_erreur$2 $OK$2 $V170_X$2 $V175_Sofar$2) $OK$2)) diff --git a/bench/tasks/speed_e7_207_base_s_part.smt2 b/bench/tasks/speed_e7_207_base_s_part.smt2 new file mode 100755 index 000000000..b3917e712 --- /dev/null +++ b/bench/tasks/speed_e7_207_base_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/speed_e7_207_base_t_part.smt2 b/bench/tasks/speed_e7_207_base_t_part.smt2 new file mode 100755 index 000000000..b797196f0 --- /dev/null +++ b/bench/tasks/speed_e7_207_base_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/speed_e7_207_e7_538_base_s_part.smt2 b/bench/tasks/speed_e7_207_e7_538_base_s_part.smt2 new file mode 100755 index 000000000..b3917e712 --- /dev/null +++ b/bench/tasks/speed_e7_207_e7_538_base_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/speed_e7_207_e7_538_base_t_part.smt2 b/bench/tasks/speed_e7_207_e7_538_base_t_part.smt2 new file mode 100755 index 000000000..b797196f0 --- /dev/null +++ b/bench/tasks/speed_e7_207_e7_538_base_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/speed_e7_207_e7_538_extend_s_part.smt2 b/bench/tasks/speed_e7_207_e7_538_extend_s_part.smt2 new file mode 100755 index 000000000..0399476f3 --- /dev/null +++ b/bench/tasks/speed_e7_207_e7_538_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/speed_e7_207_e7_538_extend_t_part.smt2 b/bench/tasks/speed_e7_207_e7_538_extend_t_part.smt2 new file mode 100755 index 000000000..2ecdd03ce --- /dev/null +++ b/bench/tasks/speed_e7_207_e7_538_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/speed_e7_207_e8_507_base1_s_part.smt2 b/bench/tasks/speed_e7_207_e8_507_base1_s_part.smt2 new file mode 100755 index 000000000..b3917e712 --- /dev/null +++ b/bench/tasks/speed_e7_207_e8_507_base1_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/speed_e7_207_e8_507_base1_t_part.smt2 b/bench/tasks/speed_e7_207_e8_507_base1_t_part.smt2 new file mode 100755 index 000000000..b797196f0 --- /dev/null +++ b/bench/tasks/speed_e7_207_e8_507_base1_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/speed_e7_207_e8_507_base2_s_part.smt2 b/bench/tasks/speed_e7_207_e8_507_base2_s_part.smt2 new file mode 100755 index 000000000..4bfdad883 --- /dev/null +++ b/bench/tasks/speed_e7_207_e8_507_base2_s_part.smt2 @@ -0,0 +1,16 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V19_late$1 () Bool) +(declare-fun $V20_early$1 () Bool) +(declare-fun $OK$1 () Bool) +(assert (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) +(assert $OK$0) +(assert (T false $V19_late$0 $V20_early$0 $OK$0 $V19_late$1 $V20_early$1 $OK$1)) diff --git a/bench/tasks/speed_e7_207_e8_507_base2_t_part.smt2 b/bench/tasks/speed_e7_207_e8_507_base2_t_part.smt2 new file mode 100755 index 000000000..05ab11a52 --- /dev/null +++ b/bench/tasks/speed_e7_207_e8_507_base2_t_part.smt2 @@ -0,0 +1,14 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V19_late$3 () Bool) +(declare-fun $V20_early$3 () Bool) +(declare-fun $OK$3 () Bool) +(assert (and (T false $V19_late$0 $V20_early$0 $OK$0 $V19_late$3 $V20_early$3 $OK$3) $OK$3)) diff --git a/bench/tasks/speed_e7_207_e8_507_extend_s_part.smt2 b/bench/tasks/speed_e7_207_e8_507_extend_s_part.smt2 new file mode 100755 index 000000000..0399476f3 --- /dev/null +++ b/bench/tasks/speed_e7_207_e8_507_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/speed_e7_207_e8_507_extend_t_part.smt2 b/bench/tasks/speed_e7_207_e8_507_extend_t_part.smt2 new file mode 100755 index 000000000..2ecdd03ce --- /dev/null +++ b/bench/tasks/speed_e7_207_e8_507_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/speed_e7_207_extend_s_part.smt2 b/bench/tasks/speed_e7_207_extend_s_part.smt2 new file mode 100755 index 000000000..0399476f3 --- /dev/null +++ b/bench/tasks/speed_e7_207_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/speed_e7_207_extend_t_part.smt2 b/bench/tasks/speed_e7_207_extend_t_part.smt2 new file mode 100755 index 000000000..2ecdd03ce --- /dev/null +++ b/bench/tasks/speed_e7_207_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/speed_e8_136_base_s_part.smt2 b/bench/tasks/speed_e8_136_base_s_part.smt2 new file mode 100755 index 000000000..b3917e712 --- /dev/null +++ b/bench/tasks/speed_e8_136_base_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/speed_e8_136_base_t_part.smt2 b/bench/tasks/speed_e8_136_base_t_part.smt2 new file mode 100755 index 000000000..b797196f0 --- /dev/null +++ b/bench/tasks/speed_e8_136_base_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/speed_e8_136_extend_s_part.smt2 b/bench/tasks/speed_e8_136_extend_s_part.smt2 new file mode 100755 index 000000000..0399476f3 --- /dev/null +++ b/bench/tasks/speed_e8_136_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/speed_e8_136_extend_t_part.smt2 b/bench/tasks/speed_e8_136_extend_t_part.smt2 new file mode 100755 index 000000000..2ecdd03ce --- /dev/null +++ b/bench/tasks/speed_e8_136_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/speed_e8_649_e7_709_base_s_part.smt2 b/bench/tasks/speed_e8_649_e7_709_base_s_part.smt2 new file mode 100755 index 000000000..b3917e712 --- /dev/null +++ b/bench/tasks/speed_e8_649_e7_709_base_s_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/speed_e8_649_e7_709_base_t_part.smt2 b/bench/tasks/speed_e8_649_e7_709_base_t_part.smt2 new file mode 100755 index 000000000..b797196f0 --- /dev/null +++ b/bench/tasks/speed_e8_649_e7_709_base_t_part.smt2 @@ -0,0 +1,11 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T true $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/speed_e8_649_e7_709_extend_s_part.smt2 b/bench/tasks/speed_e8_649_e7_709_extend_s_part.smt2 new file mode 100755 index 000000000..0399476f3 --- /dev/null +++ b/bench/tasks/speed_e8_649_e7_709_extend_s_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$0 () Bool) +(declare-fun $V20_early$0 () Bool) +(declare-fun $OK$0 () Bool) +(assert (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$0 $V20_early$0 $OK$0)) diff --git a/bench/tasks/speed_e8_649_e7_709_extend_t_part.smt2 b/bench/tasks/speed_e8_649_e7_709_extend_t_part.smt2 new file mode 100755 index 000000000..2ecdd03ce --- /dev/null +++ b/bench/tasks/speed_e8_649_e7_709_extend_t_part.smt2 @@ -0,0 +1,12 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($V19_late$0 Bool) ($V20_early$0 Bool) ($OK$0 Bool) ($V19_late$1 Bool) ($V20_early$1 Bool) ($OK$1 Bool)) Bool (= $OK$1 (not (and $V19_late$1 $V20_early$1)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $V19_late$~1 () Bool) +(declare-fun $V20_early$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V19_late$2 () Bool) +(declare-fun $V20_early$2 () Bool) +(declare-fun $OK$2 () Bool) +(assert (and (T %init $V19_late$~1 $V20_early$~1 $OK$~1 $V19_late$2 $V20_early$2 $OK$2) $OK$2)) diff --git a/bench/tasks/tramway_e7_1834_base1_s_part.smt2 b/bench/tasks/tramway_e7_1834_base1_s_part.smt2 new file mode 100755 index 000000000..d445b8cfe --- /dev/null +++ b/bench/tasks/tramway_e7_1834_base1_s_part.smt2 @@ -0,0 +1,61 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($V62_door_ok$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V252_X$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($V62_door_ok$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V252_X$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (and $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V60_open_door$0 () Bool) +(declare-fun $V61_close_door$0 () Bool) +(declare-fun $V62_door_ok$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V58_env_always_ok$0 () Bool) +(declare-fun $V59_prop_ok$0 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$0 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$0 () Bool) +(declare-fun $V252_X$0 () Bool) +(declare-fun $V253_between_A_and_X$0 () Bool) +(declare-fun $V264_env_ok$0 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$0 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$0 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$0 () Bool) +(declare-fun $V268_door_initially_closed$0 () Bool) +(declare-fun $V269_initially_not_in_station$0 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$0 () Bool) +(declare-fun $V271_warning_start_only_in_station$0 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$0 () Bool) +(declare-fun $V273_X$0 () Bool) +(declare-fun $V274_X$0 () Bool) +(declare-fun $V275_X$0 () Bool) +(declare-fun $V276_X$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(assert (T true $request_door$~1 $warning_start$~1 $in_station$~1 $door_is_open$~1 $V60_open_door$~1 $V61_close_door$~1 $V62_door_ok$~1 $OK$~1 $V58_env_always_ok$~1 $V59_prop_ok$~1 $V250_door_doesnt_open_out_of_station$~1 $V251_door_opens_before_leaving_station$~1 $V252_X$~1 $V253_between_A_and_X$~1 $V264_env_ok$~1 $V265_door_doesnt_close_if_not_asked$~1 $V266_door_doesnt_open_if_not_asked$~1 $V267_tramway_doesnt_start_if_not_door_ok$~1 $V268_door_initially_closed$~1 $V269_initially_not_in_station$~1 $V270_warning_start_and_in_station_go_down_simultaneously$~1 $V271_warning_start_only_in_station$~1 $V272_warning_start_cant_become_true_when_door_is_opening$~1 $V273_X$~1 $V274_X$~1 $V275_X$~1 $V276_X$~1 $~flatten0$~1 $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V60_open_door$0 $V61_close_door$0 $V62_door_ok$0 $OK$0 $V58_env_always_ok$0 $V59_prop_ok$0 $V250_door_doesnt_open_out_of_station$0 $V251_door_opens_before_leaving_station$0 $V252_X$0 $V253_between_A_and_X$0 $V264_env_ok$0 $V265_door_doesnt_close_if_not_asked$0 $V266_door_doesnt_open_if_not_asked$0 $V267_tramway_doesnt_start_if_not_door_ok$0 $V268_door_initially_closed$0 $V269_initially_not_in_station$0 $V270_warning_start_and_in_station_go_down_simultaneously$0 $V271_warning_start_only_in_station$0 $V272_warning_start_cant_become_true_when_door_is_opening$0 $V273_X$0 $V274_X$0 $V275_X$0 $V276_X$0 $~flatten0$0)) diff --git a/bench/tasks/tramway_e7_1834_base1_t_part.smt2 b/bench/tasks/tramway_e7_1834_base1_t_part.smt2 new file mode 100755 index 000000000..6936e7dd7 --- /dev/null +++ b/bench/tasks/tramway_e7_1834_base1_t_part.smt2 @@ -0,0 +1,61 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($V62_door_ok$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V252_X$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($V62_door_ok$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V252_X$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (and $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V60_open_door$2 () Bool) +(declare-fun $V61_close_door$2 () Bool) +(declare-fun $V62_door_ok$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V58_env_always_ok$2 () Bool) +(declare-fun $V59_prop_ok$2 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$2 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$2 () Bool) +(declare-fun $V252_X$2 () Bool) +(declare-fun $V253_between_A_and_X$2 () Bool) +(declare-fun $V264_env_ok$2 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$2 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$2 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$2 () Bool) +(declare-fun $V268_door_initially_closed$2 () Bool) +(declare-fun $V269_initially_not_in_station$2 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$2 () Bool) +(declare-fun $V271_warning_start_only_in_station$2 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$2 () Bool) +(declare-fun $V273_X$2 () Bool) +(declare-fun $V274_X$2 () Bool) +(declare-fun $V275_X$2 () Bool) +(declare-fun $V276_X$2 () Bool) +(declare-fun $~flatten0$2 () Bool) +(assert (and (T true $request_door$~1 $warning_start$~1 $in_station$~1 $door_is_open$~1 $V60_open_door$~1 $V61_close_door$~1 $V62_door_ok$~1 $OK$~1 $V58_env_always_ok$~1 $V59_prop_ok$~1 $V250_door_doesnt_open_out_of_station$~1 $V251_door_opens_before_leaving_station$~1 $V252_X$~1 $V253_between_A_and_X$~1 $V264_env_ok$~1 $V265_door_doesnt_close_if_not_asked$~1 $V266_door_doesnt_open_if_not_asked$~1 $V267_tramway_doesnt_start_if_not_door_ok$~1 $V268_door_initially_closed$~1 $V269_initially_not_in_station$~1 $V270_warning_start_and_in_station_go_down_simultaneously$~1 $V271_warning_start_only_in_station$~1 $V272_warning_start_cant_become_true_when_door_is_opening$~1 $V273_X$~1 $V274_X$~1 $V275_X$~1 $V276_X$~1 $~flatten0$~1 $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V60_open_door$2 $V61_close_door$2 $V62_door_ok$2 $OK$2 $V58_env_always_ok$2 $V59_prop_ok$2 $V250_door_doesnt_open_out_of_station$2 $V251_door_opens_before_leaving_station$2 $V252_X$2 $V253_between_A_and_X$2 $V264_env_ok$2 $V265_door_doesnt_close_if_not_asked$2 $V266_door_doesnt_open_if_not_asked$2 $V267_tramway_doesnt_start_if_not_door_ok$2 $V268_door_initially_closed$2 $V269_initially_not_in_station$2 $V270_warning_start_and_in_station_go_down_simultaneously$2 $V271_warning_start_only_in_station$2 $V272_warning_start_cant_become_true_when_door_is_opening$2 $V273_X$2 $V274_X$2 $V275_X$2 $V276_X$2 $~flatten0$2) $OK$2)) diff --git a/bench/tasks/tramway_e7_1834_base2_s_part.smt2 b/bench/tasks/tramway_e7_1834_base2_s_part.smt2 new file mode 100755 index 000000000..2507a6ace --- /dev/null +++ b/bench/tasks/tramway_e7_1834_base2_s_part.smt2 @@ -0,0 +1,91 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($V62_door_ok$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V252_X$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($V62_door_ok$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V252_X$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (and $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V60_open_door$0 () Bool) +(declare-fun $V61_close_door$0 () Bool) +(declare-fun $V62_door_ok$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V58_env_always_ok$0 () Bool) +(declare-fun $V59_prop_ok$0 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$0 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$0 () Bool) +(declare-fun $V252_X$0 () Bool) +(declare-fun $V253_between_A_and_X$0 () Bool) +(declare-fun $V264_env_ok$0 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$0 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$0 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$0 () Bool) +(declare-fun $V268_door_initially_closed$0 () Bool) +(declare-fun $V269_initially_not_in_station$0 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$0 () Bool) +(declare-fun $V271_warning_start_only_in_station$0 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$0 () Bool) +(declare-fun $V273_X$0 () Bool) +(declare-fun $V274_X$0 () Bool) +(declare-fun $V275_X$0 () Bool) +(declare-fun $V276_X$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $request_door$1 () Bool) +(declare-fun $warning_start$1 () Bool) +(declare-fun $in_station$1 () Bool) +(declare-fun $door_is_open$1 () Bool) +(declare-fun $V60_open_door$1 () Bool) +(declare-fun $V61_close_door$1 () Bool) +(declare-fun $V62_door_ok$1 () Bool) +(declare-fun $OK$1 () Bool) +(declare-fun $V58_env_always_ok$1 () Bool) +(declare-fun $V59_prop_ok$1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$1 () Bool) +(declare-fun $V252_X$1 () Bool) +(declare-fun $V253_between_A_and_X$1 () Bool) +(declare-fun $V264_env_ok$1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$1 () Bool) +(declare-fun $V268_door_initially_closed$1 () Bool) +(declare-fun $V269_initially_not_in_station$1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$1 () Bool) +(declare-fun $V271_warning_start_only_in_station$1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$1 () Bool) +(declare-fun $V273_X$1 () Bool) +(declare-fun $V274_X$1 () Bool) +(declare-fun $V275_X$1 () Bool) +(declare-fun $V276_X$1 () Bool) +(declare-fun $~flatten0$1 () Bool) +(assert (T true $request_door$~1 $warning_start$~1 $in_station$~1 $door_is_open$~1 $V60_open_door$~1 $V61_close_door$~1 $V62_door_ok$~1 $OK$~1 $V58_env_always_ok$~1 $V59_prop_ok$~1 $V250_door_doesnt_open_out_of_station$~1 $V251_door_opens_before_leaving_station$~1 $V252_X$~1 $V253_between_A_and_X$~1 $V264_env_ok$~1 $V265_door_doesnt_close_if_not_asked$~1 $V266_door_doesnt_open_if_not_asked$~1 $V267_tramway_doesnt_start_if_not_door_ok$~1 $V268_door_initially_closed$~1 $V269_initially_not_in_station$~1 $V270_warning_start_and_in_station_go_down_simultaneously$~1 $V271_warning_start_only_in_station$~1 $V272_warning_start_cant_become_true_when_door_is_opening$~1 $V273_X$~1 $V274_X$~1 $V275_X$~1 $V276_X$~1 $~flatten0$~1 $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V60_open_door$0 $V61_close_door$0 $V62_door_ok$0 $OK$0 $V58_env_always_ok$0 $V59_prop_ok$0 $V250_door_doesnt_open_out_of_station$0 $V251_door_opens_before_leaving_station$0 $V252_X$0 $V253_between_A_and_X$0 $V264_env_ok$0 $V265_door_doesnt_close_if_not_asked$0 $V266_door_doesnt_open_if_not_asked$0 $V267_tramway_doesnt_start_if_not_door_ok$0 $V268_door_initially_closed$0 $V269_initially_not_in_station$0 $V270_warning_start_and_in_station_go_down_simultaneously$0 $V271_warning_start_only_in_station$0 $V272_warning_start_cant_become_true_when_door_is_opening$0 $V273_X$0 $V274_X$0 $V275_X$0 $V276_X$0 $~flatten0$0)) +(assert $OK$0) +(assert (T false $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V60_open_door$0 $V61_close_door$0 $V62_door_ok$0 $OK$0 $V58_env_always_ok$0 $V59_prop_ok$0 $V250_door_doesnt_open_out_of_station$0 $V251_door_opens_before_leaving_station$0 $V252_X$0 $V253_between_A_and_X$0 $V264_env_ok$0 $V265_door_doesnt_close_if_not_asked$0 $V266_door_doesnt_open_if_not_asked$0 $V267_tramway_doesnt_start_if_not_door_ok$0 $V268_door_initially_closed$0 $V269_initially_not_in_station$0 $V270_warning_start_and_in_station_go_down_simultaneously$0 $V271_warning_start_only_in_station$0 $V272_warning_start_cant_become_true_when_door_is_opening$0 $V273_X$0 $V274_X$0 $V275_X$0 $V276_X$0 $~flatten0$0 $request_door$1 $warning_start$1 $in_station$1 $door_is_open$1 $V60_open_door$1 $V61_close_door$1 $V62_door_ok$1 $OK$1 $V58_env_always_ok$1 $V59_prop_ok$1 $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1 $V252_X$1 $V253_between_A_and_X$1 $V264_env_ok$1 $V265_door_doesnt_close_if_not_asked$1 $V266_door_doesnt_open_if_not_asked$1 $V267_tramway_doesnt_start_if_not_door_ok$1 $V268_door_initially_closed$1 $V269_initially_not_in_station$1 $V270_warning_start_and_in_station_go_down_simultaneously$1 $V271_warning_start_only_in_station$1 $V272_warning_start_cant_become_true_when_door_is_opening$1 $V273_X$1 $V274_X$1 $V275_X$1 $V276_X$1 $~flatten0$1)) diff --git a/bench/tasks/tramway_e7_1834_base2_t_part.smt2 b/bench/tasks/tramway_e7_1834_base2_t_part.smt2 new file mode 100755 index 000000000..2b1204d51 --- /dev/null +++ b/bench/tasks/tramway_e7_1834_base2_t_part.smt2 @@ -0,0 +1,89 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($V62_door_ok$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V252_X$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($V62_door_ok$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V252_X$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (and $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V60_open_door$0 () Bool) +(declare-fun $V61_close_door$0 () Bool) +(declare-fun $V62_door_ok$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V58_env_always_ok$0 () Bool) +(declare-fun $V59_prop_ok$0 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$0 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$0 () Bool) +(declare-fun $V252_X$0 () Bool) +(declare-fun $V253_between_A_and_X$0 () Bool) +(declare-fun $V264_env_ok$0 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$0 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$0 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$0 () Bool) +(declare-fun $V268_door_initially_closed$0 () Bool) +(declare-fun $V269_initially_not_in_station$0 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$0 () Bool) +(declare-fun $V271_warning_start_only_in_station$0 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$0 () Bool) +(declare-fun $V273_X$0 () Bool) +(declare-fun $V274_X$0 () Bool) +(declare-fun $V275_X$0 () Bool) +(declare-fun $V276_X$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $request_door$1 () Bool) +(declare-fun $warning_start$1 () Bool) +(declare-fun $in_station$1 () Bool) +(declare-fun $door_is_open$1 () Bool) +(declare-fun $V60_open_door$3 () Bool) +(declare-fun $V61_close_door$3 () Bool) +(declare-fun $V62_door_ok$3 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $V58_env_always_ok$3 () Bool) +(declare-fun $V59_prop_ok$3 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$3 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$3 () Bool) +(declare-fun $V252_X$3 () Bool) +(declare-fun $V253_between_A_and_X$3 () Bool) +(declare-fun $V264_env_ok$3 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$3 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$3 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$3 () Bool) +(declare-fun $V268_door_initially_closed$3 () Bool) +(declare-fun $V269_initially_not_in_station$3 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$3 () Bool) +(declare-fun $V271_warning_start_only_in_station$3 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$3 () Bool) +(declare-fun $V273_X$3 () Bool) +(declare-fun $V274_X$3 () Bool) +(declare-fun $V275_X$3 () Bool) +(declare-fun $V276_X$3 () Bool) +(declare-fun $~flatten0$3 () Bool) +(assert (and (T false $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V60_open_door$0 $V61_close_door$0 $V62_door_ok$0 $OK$0 $V58_env_always_ok$0 $V59_prop_ok$0 $V250_door_doesnt_open_out_of_station$0 $V251_door_opens_before_leaving_station$0 $V252_X$0 $V253_between_A_and_X$0 $V264_env_ok$0 $V265_door_doesnt_close_if_not_asked$0 $V266_door_doesnt_open_if_not_asked$0 $V267_tramway_doesnt_start_if_not_door_ok$0 $V268_door_initially_closed$0 $V269_initially_not_in_station$0 $V270_warning_start_and_in_station_go_down_simultaneously$0 $V271_warning_start_only_in_station$0 $V272_warning_start_cant_become_true_when_door_is_opening$0 $V273_X$0 $V274_X$0 $V275_X$0 $V276_X$0 $~flatten0$0 $request_door$1 $warning_start$1 $in_station$1 $door_is_open$1 $V60_open_door$3 $V61_close_door$3 $V62_door_ok$3 $OK$3 $V58_env_always_ok$3 $V59_prop_ok$3 $V250_door_doesnt_open_out_of_station$3 $V251_door_opens_before_leaving_station$3 $V252_X$3 $V253_between_A_and_X$3 $V264_env_ok$3 $V265_door_doesnt_close_if_not_asked$3 $V266_door_doesnt_open_if_not_asked$3 $V267_tramway_doesnt_start_if_not_door_ok$3 $V268_door_initially_closed$3 $V269_initially_not_in_station$3 $V270_warning_start_and_in_station_go_down_simultaneously$3 $V271_warning_start_only_in_station$3 $V272_warning_start_cant_become_true_when_door_is_opening$3 $V273_X$3 $V274_X$3 $V275_X$3 $V276_X$3 $~flatten0$3) $OK$3)) diff --git a/bench/tasks/tramway_e7_1834_base3_s_part.smt2 b/bench/tasks/tramway_e7_1834_base3_s_part.smt2 new file mode 100755 index 000000000..49fd2f772 --- /dev/null +++ b/bench/tasks/tramway_e7_1834_base3_s_part.smt2 @@ -0,0 +1,121 @@ +; K = 3 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($V62_door_ok$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V252_X$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($V62_door_ok$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V252_X$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (and $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V60_open_door$0 () Bool) +(declare-fun $V61_close_door$0 () Bool) +(declare-fun $V62_door_ok$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V58_env_always_ok$0 () Bool) +(declare-fun $V59_prop_ok$0 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$0 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$0 () Bool) +(declare-fun $V252_X$0 () Bool) +(declare-fun $V253_between_A_and_X$0 () Bool) +(declare-fun $V264_env_ok$0 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$0 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$0 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$0 () Bool) +(declare-fun $V268_door_initially_closed$0 () Bool) +(declare-fun $V269_initially_not_in_station$0 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$0 () Bool) +(declare-fun $V271_warning_start_only_in_station$0 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$0 () Bool) +(declare-fun $V273_X$0 () Bool) +(declare-fun $V274_X$0 () Bool) +(declare-fun $V275_X$0 () Bool) +(declare-fun $V276_X$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $request_door$1 () Bool) +(declare-fun $warning_start$1 () Bool) +(declare-fun $in_station$1 () Bool) +(declare-fun $door_is_open$1 () Bool) +(declare-fun $V60_open_door$1 () Bool) +(declare-fun $V61_close_door$1 () Bool) +(declare-fun $V62_door_ok$1 () Bool) +(declare-fun $OK$1 () Bool) +(declare-fun $V58_env_always_ok$1 () Bool) +(declare-fun $V59_prop_ok$1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$1 () Bool) +(declare-fun $V252_X$1 () Bool) +(declare-fun $V253_between_A_and_X$1 () Bool) +(declare-fun $V264_env_ok$1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$1 () Bool) +(declare-fun $V268_door_initially_closed$1 () Bool) +(declare-fun $V269_initially_not_in_station$1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$1 () Bool) +(declare-fun $V271_warning_start_only_in_station$1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$1 () Bool) +(declare-fun $V273_X$1 () Bool) +(declare-fun $V274_X$1 () Bool) +(declare-fun $V275_X$1 () Bool) +(declare-fun $V276_X$1 () Bool) +(declare-fun $~flatten0$1 () Bool) +(declare-fun $request_door$2 () Bool) +(declare-fun $warning_start$2 () Bool) +(declare-fun $in_station$2 () Bool) +(declare-fun $door_is_open$2 () Bool) +(declare-fun $V60_open_door$2 () Bool) +(declare-fun $V61_close_door$2 () Bool) +(declare-fun $V62_door_ok$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V58_env_always_ok$2 () Bool) +(declare-fun $V59_prop_ok$2 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$2 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$2 () Bool) +(declare-fun $V252_X$2 () Bool) +(declare-fun $V253_between_A_and_X$2 () Bool) +(declare-fun $V264_env_ok$2 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$2 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$2 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$2 () Bool) +(declare-fun $V268_door_initially_closed$2 () Bool) +(declare-fun $V269_initially_not_in_station$2 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$2 () Bool) +(declare-fun $V271_warning_start_only_in_station$2 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$2 () Bool) +(declare-fun $V273_X$2 () Bool) +(declare-fun $V274_X$2 () Bool) +(declare-fun $V275_X$2 () Bool) +(declare-fun $V276_X$2 () Bool) +(declare-fun $~flatten0$2 () Bool) +(assert (T true $request_door$~1 $warning_start$~1 $in_station$~1 $door_is_open$~1 $V60_open_door$~1 $V61_close_door$~1 $V62_door_ok$~1 $OK$~1 $V58_env_always_ok$~1 $V59_prop_ok$~1 $V250_door_doesnt_open_out_of_station$~1 $V251_door_opens_before_leaving_station$~1 $V252_X$~1 $V253_between_A_and_X$~1 $V264_env_ok$~1 $V265_door_doesnt_close_if_not_asked$~1 $V266_door_doesnt_open_if_not_asked$~1 $V267_tramway_doesnt_start_if_not_door_ok$~1 $V268_door_initially_closed$~1 $V269_initially_not_in_station$~1 $V270_warning_start_and_in_station_go_down_simultaneously$~1 $V271_warning_start_only_in_station$~1 $V272_warning_start_cant_become_true_when_door_is_opening$~1 $V273_X$~1 $V274_X$~1 $V275_X$~1 $V276_X$~1 $~flatten0$~1 $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V60_open_door$0 $V61_close_door$0 $V62_door_ok$0 $OK$0 $V58_env_always_ok$0 $V59_prop_ok$0 $V250_door_doesnt_open_out_of_station$0 $V251_door_opens_before_leaving_station$0 $V252_X$0 $V253_between_A_and_X$0 $V264_env_ok$0 $V265_door_doesnt_close_if_not_asked$0 $V266_door_doesnt_open_if_not_asked$0 $V267_tramway_doesnt_start_if_not_door_ok$0 $V268_door_initially_closed$0 $V269_initially_not_in_station$0 $V270_warning_start_and_in_station_go_down_simultaneously$0 $V271_warning_start_only_in_station$0 $V272_warning_start_cant_become_true_when_door_is_opening$0 $V273_X$0 $V274_X$0 $V275_X$0 $V276_X$0 $~flatten0$0)) +(assert $OK$0) +(assert (T false $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V60_open_door$0 $V61_close_door$0 $V62_door_ok$0 $OK$0 $V58_env_always_ok$0 $V59_prop_ok$0 $V250_door_doesnt_open_out_of_station$0 $V251_door_opens_before_leaving_station$0 $V252_X$0 $V253_between_A_and_X$0 $V264_env_ok$0 $V265_door_doesnt_close_if_not_asked$0 $V266_door_doesnt_open_if_not_asked$0 $V267_tramway_doesnt_start_if_not_door_ok$0 $V268_door_initially_closed$0 $V269_initially_not_in_station$0 $V270_warning_start_and_in_station_go_down_simultaneously$0 $V271_warning_start_only_in_station$0 $V272_warning_start_cant_become_true_when_door_is_opening$0 $V273_X$0 $V274_X$0 $V275_X$0 $V276_X$0 $~flatten0$0 $request_door$1 $warning_start$1 $in_station$1 $door_is_open$1 $V60_open_door$1 $V61_close_door$1 $V62_door_ok$1 $OK$1 $V58_env_always_ok$1 $V59_prop_ok$1 $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1 $V252_X$1 $V253_between_A_and_X$1 $V264_env_ok$1 $V265_door_doesnt_close_if_not_asked$1 $V266_door_doesnt_open_if_not_asked$1 $V267_tramway_doesnt_start_if_not_door_ok$1 $V268_door_initially_closed$1 $V269_initially_not_in_station$1 $V270_warning_start_and_in_station_go_down_simultaneously$1 $V271_warning_start_only_in_station$1 $V272_warning_start_cant_become_true_when_door_is_opening$1 $V273_X$1 $V274_X$1 $V275_X$1 $V276_X$1 $~flatten0$1)) +(assert $OK$1) +(assert (T false $request_door$1 $warning_start$1 $in_station$1 $door_is_open$1 $V60_open_door$1 $V61_close_door$1 $V62_door_ok$1 $OK$1 $V58_env_always_ok$1 $V59_prop_ok$1 $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1 $V252_X$1 $V253_between_A_and_X$1 $V264_env_ok$1 $V265_door_doesnt_close_if_not_asked$1 $V266_door_doesnt_open_if_not_asked$1 $V267_tramway_doesnt_start_if_not_door_ok$1 $V268_door_initially_closed$1 $V269_initially_not_in_station$1 $V270_warning_start_and_in_station_go_down_simultaneously$1 $V271_warning_start_only_in_station$1 $V272_warning_start_cant_become_true_when_door_is_opening$1 $V273_X$1 $V274_X$1 $V275_X$1 $V276_X$1 $~flatten0$1 $request_door$2 $warning_start$2 $in_station$2 $door_is_open$2 $V60_open_door$2 $V61_close_door$2 $V62_door_ok$2 $OK$2 $V58_env_always_ok$2 $V59_prop_ok$2 $V250_door_doesnt_open_out_of_station$2 $V251_door_opens_before_leaving_station$2 $V252_X$2 $V253_between_A_and_X$2 $V264_env_ok$2 $V265_door_doesnt_close_if_not_asked$2 $V266_door_doesnt_open_if_not_asked$2 $V267_tramway_doesnt_start_if_not_door_ok$2 $V268_door_initially_closed$2 $V269_initially_not_in_station$2 $V270_warning_start_and_in_station_go_down_simultaneously$2 $V271_warning_start_only_in_station$2 $V272_warning_start_cant_become_true_when_door_is_opening$2 $V273_X$2 $V274_X$2 $V275_X$2 $V276_X$2 $~flatten0$2)) diff --git a/bench/tasks/tramway_e7_1834_base3_t_part.smt2 b/bench/tasks/tramway_e7_1834_base3_t_part.smt2 new file mode 100755 index 000000000..1d291bf0b --- /dev/null +++ b/bench/tasks/tramway_e7_1834_base3_t_part.smt2 @@ -0,0 +1,117 @@ +; K = 3 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($V62_door_ok$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V252_X$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($V62_door_ok$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V252_X$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (and $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V60_open_door$0 () Bool) +(declare-fun $V61_close_door$0 () Bool) +(declare-fun $V62_door_ok$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V58_env_always_ok$0 () Bool) +(declare-fun $V59_prop_ok$0 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$0 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$0 () Bool) +(declare-fun $V252_X$0 () Bool) +(declare-fun $V253_between_A_and_X$0 () Bool) +(declare-fun $V264_env_ok$0 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$0 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$0 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$0 () Bool) +(declare-fun $V268_door_initially_closed$0 () Bool) +(declare-fun $V269_initially_not_in_station$0 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$0 () Bool) +(declare-fun $V271_warning_start_only_in_station$0 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$0 () Bool) +(declare-fun $V273_X$0 () Bool) +(declare-fun $V274_X$0 () Bool) +(declare-fun $V275_X$0 () Bool) +(declare-fun $V276_X$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $request_door$1 () Bool) +(declare-fun $warning_start$1 () Bool) +(declare-fun $in_station$1 () Bool) +(declare-fun $door_is_open$1 () Bool) +(declare-fun $V60_open_door$1 () Bool) +(declare-fun $V61_close_door$1 () Bool) +(declare-fun $V62_door_ok$1 () Bool) +(declare-fun $OK$1 () Bool) +(declare-fun $V58_env_always_ok$1 () Bool) +(declare-fun $V59_prop_ok$1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$1 () Bool) +(declare-fun $V252_X$1 () Bool) +(declare-fun $V253_between_A_and_X$1 () Bool) +(declare-fun $V264_env_ok$1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$1 () Bool) +(declare-fun $V268_door_initially_closed$1 () Bool) +(declare-fun $V269_initially_not_in_station$1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$1 () Bool) +(declare-fun $V271_warning_start_only_in_station$1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$1 () Bool) +(declare-fun $V273_X$1 () Bool) +(declare-fun $V274_X$1 () Bool) +(declare-fun $V275_X$1 () Bool) +(declare-fun $V276_X$1 () Bool) +(declare-fun $~flatten0$1 () Bool) +(declare-fun $request_door$2 () Bool) +(declare-fun $warning_start$2 () Bool) +(declare-fun $in_station$2 () Bool) +(declare-fun $door_is_open$2 () Bool) +(declare-fun $V60_open_door$4 () Bool) +(declare-fun $V61_close_door$4 () Bool) +(declare-fun $V62_door_ok$4 () Bool) +(declare-fun $OK$4 () Bool) +(declare-fun $V58_env_always_ok$4 () Bool) +(declare-fun $V59_prop_ok$4 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$4 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$4 () Bool) +(declare-fun $V252_X$4 () Bool) +(declare-fun $V253_between_A_and_X$4 () Bool) +(declare-fun $V264_env_ok$4 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$4 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$4 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$4 () Bool) +(declare-fun $V268_door_initially_closed$4 () Bool) +(declare-fun $V269_initially_not_in_station$4 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$4 () Bool) +(declare-fun $V271_warning_start_only_in_station$4 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$4 () Bool) +(declare-fun $V273_X$4 () Bool) +(declare-fun $V274_X$4 () Bool) +(declare-fun $V275_X$4 () Bool) +(declare-fun $V276_X$4 () Bool) +(declare-fun $~flatten0$4 () Bool) +(assert (and (T false $request_door$1 $warning_start$1 $in_station$1 $door_is_open$1 $V60_open_door$1 $V61_close_door$1 $V62_door_ok$1 $OK$1 $V58_env_always_ok$1 $V59_prop_ok$1 $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1 $V252_X$1 $V253_between_A_and_X$1 $V264_env_ok$1 $V265_door_doesnt_close_if_not_asked$1 $V266_door_doesnt_open_if_not_asked$1 $V267_tramway_doesnt_start_if_not_door_ok$1 $V268_door_initially_closed$1 $V269_initially_not_in_station$1 $V270_warning_start_and_in_station_go_down_simultaneously$1 $V271_warning_start_only_in_station$1 $V272_warning_start_cant_become_true_when_door_is_opening$1 $V273_X$1 $V274_X$1 $V275_X$1 $V276_X$1 $~flatten0$1 $request_door$2 $warning_start$2 $in_station$2 $door_is_open$2 $V60_open_door$4 $V61_close_door$4 $V62_door_ok$4 $OK$4 $V58_env_always_ok$4 $V59_prop_ok$4 $V250_door_doesnt_open_out_of_station$4 $V251_door_opens_before_leaving_station$4 $V252_X$4 $V253_between_A_and_X$4 $V264_env_ok$4 $V265_door_doesnt_close_if_not_asked$4 $V266_door_doesnt_open_if_not_asked$4 $V267_tramway_doesnt_start_if_not_door_ok$4 $V268_door_initially_closed$4 $V269_initially_not_in_station$4 $V270_warning_start_and_in_station_go_down_simultaneously$4 $V271_warning_start_only_in_station$4 $V272_warning_start_cant_become_true_when_door_is_opening$4 $V273_X$4 $V274_X$4 $V275_X$4 $V276_X$4 $~flatten0$4) $OK$4)) diff --git a/bench/tasks/tramway_e7_1834_base4_s_part.smt2 b/bench/tasks/tramway_e7_1834_base4_s_part.smt2 new file mode 100755 index 000000000..b21f62753 --- /dev/null +++ b/bench/tasks/tramway_e7_1834_base4_s_part.smt2 @@ -0,0 +1,151 @@ +; K = 4 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($V62_door_ok$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V252_X$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($V62_door_ok$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V252_X$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (and $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V60_open_door$0 () Bool) +(declare-fun $V61_close_door$0 () Bool) +(declare-fun $V62_door_ok$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V58_env_always_ok$0 () Bool) +(declare-fun $V59_prop_ok$0 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$0 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$0 () Bool) +(declare-fun $V252_X$0 () Bool) +(declare-fun $V253_between_A_and_X$0 () Bool) +(declare-fun $V264_env_ok$0 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$0 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$0 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$0 () Bool) +(declare-fun $V268_door_initially_closed$0 () Bool) +(declare-fun $V269_initially_not_in_station$0 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$0 () Bool) +(declare-fun $V271_warning_start_only_in_station$0 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$0 () Bool) +(declare-fun $V273_X$0 () Bool) +(declare-fun $V274_X$0 () Bool) +(declare-fun $V275_X$0 () Bool) +(declare-fun $V276_X$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $request_door$1 () Bool) +(declare-fun $warning_start$1 () Bool) +(declare-fun $in_station$1 () Bool) +(declare-fun $door_is_open$1 () Bool) +(declare-fun $V60_open_door$1 () Bool) +(declare-fun $V61_close_door$1 () Bool) +(declare-fun $V62_door_ok$1 () Bool) +(declare-fun $OK$1 () Bool) +(declare-fun $V58_env_always_ok$1 () Bool) +(declare-fun $V59_prop_ok$1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$1 () Bool) +(declare-fun $V252_X$1 () Bool) +(declare-fun $V253_between_A_and_X$1 () Bool) +(declare-fun $V264_env_ok$1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$1 () Bool) +(declare-fun $V268_door_initially_closed$1 () Bool) +(declare-fun $V269_initially_not_in_station$1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$1 () Bool) +(declare-fun $V271_warning_start_only_in_station$1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$1 () Bool) +(declare-fun $V273_X$1 () Bool) +(declare-fun $V274_X$1 () Bool) +(declare-fun $V275_X$1 () Bool) +(declare-fun $V276_X$1 () Bool) +(declare-fun $~flatten0$1 () Bool) +(declare-fun $request_door$2 () Bool) +(declare-fun $warning_start$2 () Bool) +(declare-fun $in_station$2 () Bool) +(declare-fun $door_is_open$2 () Bool) +(declare-fun $V60_open_door$2 () Bool) +(declare-fun $V61_close_door$2 () Bool) +(declare-fun $V62_door_ok$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V58_env_always_ok$2 () Bool) +(declare-fun $V59_prop_ok$2 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$2 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$2 () Bool) +(declare-fun $V252_X$2 () Bool) +(declare-fun $V253_between_A_and_X$2 () Bool) +(declare-fun $V264_env_ok$2 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$2 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$2 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$2 () Bool) +(declare-fun $V268_door_initially_closed$2 () Bool) +(declare-fun $V269_initially_not_in_station$2 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$2 () Bool) +(declare-fun $V271_warning_start_only_in_station$2 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$2 () Bool) +(declare-fun $V273_X$2 () Bool) +(declare-fun $V274_X$2 () Bool) +(declare-fun $V275_X$2 () Bool) +(declare-fun $V276_X$2 () Bool) +(declare-fun $~flatten0$2 () Bool) +(declare-fun $request_door$3 () Bool) +(declare-fun $warning_start$3 () Bool) +(declare-fun $in_station$3 () Bool) +(declare-fun $door_is_open$3 () Bool) +(declare-fun $V60_open_door$3 () Bool) +(declare-fun $V61_close_door$3 () Bool) +(declare-fun $V62_door_ok$3 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $V58_env_always_ok$3 () Bool) +(declare-fun $V59_prop_ok$3 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$3 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$3 () Bool) +(declare-fun $V252_X$3 () Bool) +(declare-fun $V253_between_A_and_X$3 () Bool) +(declare-fun $V264_env_ok$3 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$3 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$3 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$3 () Bool) +(declare-fun $V268_door_initially_closed$3 () Bool) +(declare-fun $V269_initially_not_in_station$3 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$3 () Bool) +(declare-fun $V271_warning_start_only_in_station$3 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$3 () Bool) +(declare-fun $V273_X$3 () Bool) +(declare-fun $V274_X$3 () Bool) +(declare-fun $V275_X$3 () Bool) +(declare-fun $V276_X$3 () Bool) +(declare-fun $~flatten0$3 () Bool) +(assert (T true $request_door$~1 $warning_start$~1 $in_station$~1 $door_is_open$~1 $V60_open_door$~1 $V61_close_door$~1 $V62_door_ok$~1 $OK$~1 $V58_env_always_ok$~1 $V59_prop_ok$~1 $V250_door_doesnt_open_out_of_station$~1 $V251_door_opens_before_leaving_station$~1 $V252_X$~1 $V253_between_A_and_X$~1 $V264_env_ok$~1 $V265_door_doesnt_close_if_not_asked$~1 $V266_door_doesnt_open_if_not_asked$~1 $V267_tramway_doesnt_start_if_not_door_ok$~1 $V268_door_initially_closed$~1 $V269_initially_not_in_station$~1 $V270_warning_start_and_in_station_go_down_simultaneously$~1 $V271_warning_start_only_in_station$~1 $V272_warning_start_cant_become_true_when_door_is_opening$~1 $V273_X$~1 $V274_X$~1 $V275_X$~1 $V276_X$~1 $~flatten0$~1 $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V60_open_door$0 $V61_close_door$0 $V62_door_ok$0 $OK$0 $V58_env_always_ok$0 $V59_prop_ok$0 $V250_door_doesnt_open_out_of_station$0 $V251_door_opens_before_leaving_station$0 $V252_X$0 $V253_between_A_and_X$0 $V264_env_ok$0 $V265_door_doesnt_close_if_not_asked$0 $V266_door_doesnt_open_if_not_asked$0 $V267_tramway_doesnt_start_if_not_door_ok$0 $V268_door_initially_closed$0 $V269_initially_not_in_station$0 $V270_warning_start_and_in_station_go_down_simultaneously$0 $V271_warning_start_only_in_station$0 $V272_warning_start_cant_become_true_when_door_is_opening$0 $V273_X$0 $V274_X$0 $V275_X$0 $V276_X$0 $~flatten0$0)) +(assert $OK$0) +(assert (T false $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V60_open_door$0 $V61_close_door$0 $V62_door_ok$0 $OK$0 $V58_env_always_ok$0 $V59_prop_ok$0 $V250_door_doesnt_open_out_of_station$0 $V251_door_opens_before_leaving_station$0 $V252_X$0 $V253_between_A_and_X$0 $V264_env_ok$0 $V265_door_doesnt_close_if_not_asked$0 $V266_door_doesnt_open_if_not_asked$0 $V267_tramway_doesnt_start_if_not_door_ok$0 $V268_door_initially_closed$0 $V269_initially_not_in_station$0 $V270_warning_start_and_in_station_go_down_simultaneously$0 $V271_warning_start_only_in_station$0 $V272_warning_start_cant_become_true_when_door_is_opening$0 $V273_X$0 $V274_X$0 $V275_X$0 $V276_X$0 $~flatten0$0 $request_door$1 $warning_start$1 $in_station$1 $door_is_open$1 $V60_open_door$1 $V61_close_door$1 $V62_door_ok$1 $OK$1 $V58_env_always_ok$1 $V59_prop_ok$1 $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1 $V252_X$1 $V253_between_A_and_X$1 $V264_env_ok$1 $V265_door_doesnt_close_if_not_asked$1 $V266_door_doesnt_open_if_not_asked$1 $V267_tramway_doesnt_start_if_not_door_ok$1 $V268_door_initially_closed$1 $V269_initially_not_in_station$1 $V270_warning_start_and_in_station_go_down_simultaneously$1 $V271_warning_start_only_in_station$1 $V272_warning_start_cant_become_true_when_door_is_opening$1 $V273_X$1 $V274_X$1 $V275_X$1 $V276_X$1 $~flatten0$1)) +(assert $OK$1) +(assert (T false $request_door$1 $warning_start$1 $in_station$1 $door_is_open$1 $V60_open_door$1 $V61_close_door$1 $V62_door_ok$1 $OK$1 $V58_env_always_ok$1 $V59_prop_ok$1 $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1 $V252_X$1 $V253_between_A_and_X$1 $V264_env_ok$1 $V265_door_doesnt_close_if_not_asked$1 $V266_door_doesnt_open_if_not_asked$1 $V267_tramway_doesnt_start_if_not_door_ok$1 $V268_door_initially_closed$1 $V269_initially_not_in_station$1 $V270_warning_start_and_in_station_go_down_simultaneously$1 $V271_warning_start_only_in_station$1 $V272_warning_start_cant_become_true_when_door_is_opening$1 $V273_X$1 $V274_X$1 $V275_X$1 $V276_X$1 $~flatten0$1 $request_door$2 $warning_start$2 $in_station$2 $door_is_open$2 $V60_open_door$2 $V61_close_door$2 $V62_door_ok$2 $OK$2 $V58_env_always_ok$2 $V59_prop_ok$2 $V250_door_doesnt_open_out_of_station$2 $V251_door_opens_before_leaving_station$2 $V252_X$2 $V253_between_A_and_X$2 $V264_env_ok$2 $V265_door_doesnt_close_if_not_asked$2 $V266_door_doesnt_open_if_not_asked$2 $V267_tramway_doesnt_start_if_not_door_ok$2 $V268_door_initially_closed$2 $V269_initially_not_in_station$2 $V270_warning_start_and_in_station_go_down_simultaneously$2 $V271_warning_start_only_in_station$2 $V272_warning_start_cant_become_true_when_door_is_opening$2 $V273_X$2 $V274_X$2 $V275_X$2 $V276_X$2 $~flatten0$2)) +(assert $OK$2) +(assert (T false $request_door$2 $warning_start$2 $in_station$2 $door_is_open$2 $V60_open_door$2 $V61_close_door$2 $V62_door_ok$2 $OK$2 $V58_env_always_ok$2 $V59_prop_ok$2 $V250_door_doesnt_open_out_of_station$2 $V251_door_opens_before_leaving_station$2 $V252_X$2 $V253_between_A_and_X$2 $V264_env_ok$2 $V265_door_doesnt_close_if_not_asked$2 $V266_door_doesnt_open_if_not_asked$2 $V267_tramway_doesnt_start_if_not_door_ok$2 $V268_door_initially_closed$2 $V269_initially_not_in_station$2 $V270_warning_start_and_in_station_go_down_simultaneously$2 $V271_warning_start_only_in_station$2 $V272_warning_start_cant_become_true_when_door_is_opening$2 $V273_X$2 $V274_X$2 $V275_X$2 $V276_X$2 $~flatten0$2 $request_door$3 $warning_start$3 $in_station$3 $door_is_open$3 $V60_open_door$3 $V61_close_door$3 $V62_door_ok$3 $OK$3 $V58_env_always_ok$3 $V59_prop_ok$3 $V250_door_doesnt_open_out_of_station$3 $V251_door_opens_before_leaving_station$3 $V252_X$3 $V253_between_A_and_X$3 $V264_env_ok$3 $V265_door_doesnt_close_if_not_asked$3 $V266_door_doesnt_open_if_not_asked$3 $V267_tramway_doesnt_start_if_not_door_ok$3 $V268_door_initially_closed$3 $V269_initially_not_in_station$3 $V270_warning_start_and_in_station_go_down_simultaneously$3 $V271_warning_start_only_in_station$3 $V272_warning_start_cant_become_true_when_door_is_opening$3 $V273_X$3 $V274_X$3 $V275_X$3 $V276_X$3 $~flatten0$3)) diff --git a/bench/tasks/tramway_e7_1834_base4_t_part.smt2 b/bench/tasks/tramway_e7_1834_base4_t_part.smt2 new file mode 100755 index 000000000..925a510e6 --- /dev/null +++ b/bench/tasks/tramway_e7_1834_base4_t_part.smt2 @@ -0,0 +1,145 @@ +; K = 4 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($V62_door_ok$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V252_X$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($V62_door_ok$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V252_X$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (and $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V60_open_door$0 () Bool) +(declare-fun $V61_close_door$0 () Bool) +(declare-fun $V62_door_ok$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V58_env_always_ok$0 () Bool) +(declare-fun $V59_prop_ok$0 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$0 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$0 () Bool) +(declare-fun $V252_X$0 () Bool) +(declare-fun $V253_between_A_and_X$0 () Bool) +(declare-fun $V264_env_ok$0 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$0 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$0 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$0 () Bool) +(declare-fun $V268_door_initially_closed$0 () Bool) +(declare-fun $V269_initially_not_in_station$0 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$0 () Bool) +(declare-fun $V271_warning_start_only_in_station$0 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$0 () Bool) +(declare-fun $V273_X$0 () Bool) +(declare-fun $V274_X$0 () Bool) +(declare-fun $V275_X$0 () Bool) +(declare-fun $V276_X$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $request_door$1 () Bool) +(declare-fun $warning_start$1 () Bool) +(declare-fun $in_station$1 () Bool) +(declare-fun $door_is_open$1 () Bool) +(declare-fun $V60_open_door$1 () Bool) +(declare-fun $V61_close_door$1 () Bool) +(declare-fun $V62_door_ok$1 () Bool) +(declare-fun $OK$1 () Bool) +(declare-fun $V58_env_always_ok$1 () Bool) +(declare-fun $V59_prop_ok$1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$1 () Bool) +(declare-fun $V252_X$1 () Bool) +(declare-fun $V253_between_A_and_X$1 () Bool) +(declare-fun $V264_env_ok$1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$1 () Bool) +(declare-fun $V268_door_initially_closed$1 () Bool) +(declare-fun $V269_initially_not_in_station$1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$1 () Bool) +(declare-fun $V271_warning_start_only_in_station$1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$1 () Bool) +(declare-fun $V273_X$1 () Bool) +(declare-fun $V274_X$1 () Bool) +(declare-fun $V275_X$1 () Bool) +(declare-fun $V276_X$1 () Bool) +(declare-fun $~flatten0$1 () Bool) +(declare-fun $request_door$2 () Bool) +(declare-fun $warning_start$2 () Bool) +(declare-fun $in_station$2 () Bool) +(declare-fun $door_is_open$2 () Bool) +(declare-fun $V60_open_door$2 () Bool) +(declare-fun $V61_close_door$2 () Bool) +(declare-fun $V62_door_ok$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V58_env_always_ok$2 () Bool) +(declare-fun $V59_prop_ok$2 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$2 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$2 () Bool) +(declare-fun $V252_X$2 () Bool) +(declare-fun $V253_between_A_and_X$2 () Bool) +(declare-fun $V264_env_ok$2 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$2 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$2 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$2 () Bool) +(declare-fun $V268_door_initially_closed$2 () Bool) +(declare-fun $V269_initially_not_in_station$2 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$2 () Bool) +(declare-fun $V271_warning_start_only_in_station$2 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$2 () Bool) +(declare-fun $V273_X$2 () Bool) +(declare-fun $V274_X$2 () Bool) +(declare-fun $V275_X$2 () Bool) +(declare-fun $V276_X$2 () Bool) +(declare-fun $~flatten0$2 () Bool) +(declare-fun $request_door$3 () Bool) +(declare-fun $warning_start$3 () Bool) +(declare-fun $in_station$3 () Bool) +(declare-fun $door_is_open$3 () Bool) +(declare-fun $V60_open_door$5 () Bool) +(declare-fun $V61_close_door$5 () Bool) +(declare-fun $V62_door_ok$5 () Bool) +(declare-fun $OK$5 () Bool) +(declare-fun $V58_env_always_ok$5 () Bool) +(declare-fun $V59_prop_ok$5 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$5 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$5 () Bool) +(declare-fun $V252_X$5 () Bool) +(declare-fun $V253_between_A_and_X$5 () Bool) +(declare-fun $V264_env_ok$5 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$5 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$5 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$5 () Bool) +(declare-fun $V268_door_initially_closed$5 () Bool) +(declare-fun $V269_initially_not_in_station$5 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$5 () Bool) +(declare-fun $V271_warning_start_only_in_station$5 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$5 () Bool) +(declare-fun $V273_X$5 () Bool) +(declare-fun $V274_X$5 () Bool) +(declare-fun $V275_X$5 () Bool) +(declare-fun $V276_X$5 () Bool) +(declare-fun $~flatten0$5 () Bool) +(assert (and (T false $request_door$2 $warning_start$2 $in_station$2 $door_is_open$2 $V60_open_door$2 $V61_close_door$2 $V62_door_ok$2 $OK$2 $V58_env_always_ok$2 $V59_prop_ok$2 $V250_door_doesnt_open_out_of_station$2 $V251_door_opens_before_leaving_station$2 $V252_X$2 $V253_between_A_and_X$2 $V264_env_ok$2 $V265_door_doesnt_close_if_not_asked$2 $V266_door_doesnt_open_if_not_asked$2 $V267_tramway_doesnt_start_if_not_door_ok$2 $V268_door_initially_closed$2 $V269_initially_not_in_station$2 $V270_warning_start_and_in_station_go_down_simultaneously$2 $V271_warning_start_only_in_station$2 $V272_warning_start_cant_become_true_when_door_is_opening$2 $V273_X$2 $V274_X$2 $V275_X$2 $V276_X$2 $~flatten0$2 $request_door$3 $warning_start$3 $in_station$3 $door_is_open$3 $V60_open_door$5 $V61_close_door$5 $V62_door_ok$5 $OK$5 $V58_env_always_ok$5 $V59_prop_ok$5 $V250_door_doesnt_open_out_of_station$5 $V251_door_opens_before_leaving_station$5 $V252_X$5 $V253_between_A_and_X$5 $V264_env_ok$5 $V265_door_doesnt_close_if_not_asked$5 $V266_door_doesnt_open_if_not_asked$5 $V267_tramway_doesnt_start_if_not_door_ok$5 $V268_door_initially_closed$5 $V269_initially_not_in_station$5 $V270_warning_start_and_in_station_go_down_simultaneously$5 $V271_warning_start_only_in_station$5 $V272_warning_start_cant_become_true_when_door_is_opening$5 $V273_X$5 $V274_X$5 $V275_X$5 $V276_X$5 $~flatten0$5) $OK$5)) diff --git a/bench/tasks/tramway_e7_1834_e7_2363_base1_s_part.smt2 b/bench/tasks/tramway_e7_1834_e7_2363_base1_s_part.smt2 new file mode 100755 index 000000000..db93d68a9 --- /dev/null +++ b/bench/tasks/tramway_e7_1834_e7_2363_base1_s_part.smt2 @@ -0,0 +1,61 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V62_door_ok$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V252_X$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V62_door_ok$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V252_X$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (or $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V62_door_ok$0 () Bool) +(declare-fun $V60_open_door$0 () Bool) +(declare-fun $V61_close_door$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V58_env_always_ok$0 () Bool) +(declare-fun $V59_prop_ok$0 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$0 () Bool) +(declare-fun $V253_between_A_and_X$0 () Bool) +(declare-fun $V264_env_ok$0 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$0 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$0 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$0 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$0 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$0 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$0 () Bool) +(declare-fun $V252_X$0 () Bool) +(declare-fun $V268_door_initially_closed$0 () Bool) +(declare-fun $V269_initially_not_in_station$0 () Bool) +(declare-fun $V271_warning_start_only_in_station$0 () Bool) +(declare-fun $V273_X$0 () Bool) +(declare-fun $V274_X$0 () Bool) +(declare-fun $V275_X$0 () Bool) +(declare-fun $V276_X$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(assert (T true $request_door$~1 $warning_start$~1 $in_station$~1 $door_is_open$~1 $V62_door_ok$~1 $V60_open_door$~1 $V61_close_door$~1 $OK$~1 $V58_env_always_ok$~1 $V59_prop_ok$~1 $V251_door_opens_before_leaving_station$~1 $V253_between_A_and_X$~1 $V264_env_ok$~1 $V265_door_doesnt_close_if_not_asked$~1 $V266_door_doesnt_open_if_not_asked$~1 $V267_tramway_doesnt_start_if_not_door_ok$~1 $V270_warning_start_and_in_station_go_down_simultaneously$~1 $V272_warning_start_cant_become_true_when_door_is_opening$~1 $V250_door_doesnt_open_out_of_station$~1 $V252_X$~1 $V268_door_initially_closed$~1 $V269_initially_not_in_station$~1 $V271_warning_start_only_in_station$~1 $V273_X$~1 $V274_X$~1 $V275_X$~1 $V276_X$~1 $~flatten0$~1 $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V62_door_ok$0 $V60_open_door$0 $V61_close_door$0 $OK$0 $V58_env_always_ok$0 $V59_prop_ok$0 $V251_door_opens_before_leaving_station$0 $V253_between_A_and_X$0 $V264_env_ok$0 $V265_door_doesnt_close_if_not_asked$0 $V266_door_doesnt_open_if_not_asked$0 $V267_tramway_doesnt_start_if_not_door_ok$0 $V270_warning_start_and_in_station_go_down_simultaneously$0 $V272_warning_start_cant_become_true_when_door_is_opening$0 $V250_door_doesnt_open_out_of_station$0 $V252_X$0 $V268_door_initially_closed$0 $V269_initially_not_in_station$0 $V271_warning_start_only_in_station$0 $V273_X$0 $V274_X$0 $V275_X$0 $V276_X$0 $~flatten0$0)) diff --git a/bench/tasks/tramway_e7_1834_e7_2363_base1_t_part.smt2 b/bench/tasks/tramway_e7_1834_e7_2363_base1_t_part.smt2 new file mode 100755 index 000000000..98248c02e --- /dev/null +++ b/bench/tasks/tramway_e7_1834_e7_2363_base1_t_part.smt2 @@ -0,0 +1,61 @@ +; K = 1 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V62_door_ok$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V252_X$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V62_door_ok$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V252_X$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (or $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V62_door_ok$2 () Bool) +(declare-fun $V60_open_door$2 () Bool) +(declare-fun $V61_close_door$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V58_env_always_ok$2 () Bool) +(declare-fun $V59_prop_ok$2 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$2 () Bool) +(declare-fun $V253_between_A_and_X$2 () Bool) +(declare-fun $V264_env_ok$2 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$2 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$2 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$2 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$2 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$2 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$2 () Bool) +(declare-fun $V252_X$2 () Bool) +(declare-fun $V268_door_initially_closed$2 () Bool) +(declare-fun $V269_initially_not_in_station$2 () Bool) +(declare-fun $V271_warning_start_only_in_station$2 () Bool) +(declare-fun $V273_X$2 () Bool) +(declare-fun $V274_X$2 () Bool) +(declare-fun $V275_X$2 () Bool) +(declare-fun $V276_X$2 () Bool) +(declare-fun $~flatten0$2 () Bool) +(assert (and (T true $request_door$~1 $warning_start$~1 $in_station$~1 $door_is_open$~1 $V62_door_ok$~1 $V60_open_door$~1 $V61_close_door$~1 $OK$~1 $V58_env_always_ok$~1 $V59_prop_ok$~1 $V251_door_opens_before_leaving_station$~1 $V253_between_A_and_X$~1 $V264_env_ok$~1 $V265_door_doesnt_close_if_not_asked$~1 $V266_door_doesnt_open_if_not_asked$~1 $V267_tramway_doesnt_start_if_not_door_ok$~1 $V270_warning_start_and_in_station_go_down_simultaneously$~1 $V272_warning_start_cant_become_true_when_door_is_opening$~1 $V250_door_doesnt_open_out_of_station$~1 $V252_X$~1 $V268_door_initially_closed$~1 $V269_initially_not_in_station$~1 $V271_warning_start_only_in_station$~1 $V273_X$~1 $V274_X$~1 $V275_X$~1 $V276_X$~1 $~flatten0$~1 $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V62_door_ok$2 $V60_open_door$2 $V61_close_door$2 $OK$2 $V58_env_always_ok$2 $V59_prop_ok$2 $V251_door_opens_before_leaving_station$2 $V253_between_A_and_X$2 $V264_env_ok$2 $V265_door_doesnt_close_if_not_asked$2 $V266_door_doesnt_open_if_not_asked$2 $V267_tramway_doesnt_start_if_not_door_ok$2 $V270_warning_start_and_in_station_go_down_simultaneously$2 $V272_warning_start_cant_become_true_when_door_is_opening$2 $V250_door_doesnt_open_out_of_station$2 $V252_X$2 $V268_door_initially_closed$2 $V269_initially_not_in_station$2 $V271_warning_start_only_in_station$2 $V273_X$2 $V274_X$2 $V275_X$2 $V276_X$2 $~flatten0$2) $OK$2)) diff --git a/bench/tasks/tramway_e7_1834_e7_2363_base2_s_part.smt2 b/bench/tasks/tramway_e7_1834_e7_2363_base2_s_part.smt2 new file mode 100755 index 000000000..373525c9a --- /dev/null +++ b/bench/tasks/tramway_e7_1834_e7_2363_base2_s_part.smt2 @@ -0,0 +1,91 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V62_door_ok$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V252_X$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V62_door_ok$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V252_X$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (or $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V62_door_ok$0 () Bool) +(declare-fun $V60_open_door$0 () Bool) +(declare-fun $V61_close_door$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V58_env_always_ok$0 () Bool) +(declare-fun $V59_prop_ok$0 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$0 () Bool) +(declare-fun $V253_between_A_and_X$0 () Bool) +(declare-fun $V264_env_ok$0 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$0 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$0 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$0 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$0 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$0 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$0 () Bool) +(declare-fun $V252_X$0 () Bool) +(declare-fun $V268_door_initially_closed$0 () Bool) +(declare-fun $V269_initially_not_in_station$0 () Bool) +(declare-fun $V271_warning_start_only_in_station$0 () Bool) +(declare-fun $V273_X$0 () Bool) +(declare-fun $V274_X$0 () Bool) +(declare-fun $V275_X$0 () Bool) +(declare-fun $V276_X$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $request_door$1 () Bool) +(declare-fun $warning_start$1 () Bool) +(declare-fun $in_station$1 () Bool) +(declare-fun $door_is_open$1 () Bool) +(declare-fun $V62_door_ok$1 () Bool) +(declare-fun $V60_open_door$1 () Bool) +(declare-fun $V61_close_door$1 () Bool) +(declare-fun $OK$1 () Bool) +(declare-fun $V58_env_always_ok$1 () Bool) +(declare-fun $V59_prop_ok$1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$1 () Bool) +(declare-fun $V253_between_A_and_X$1 () Bool) +(declare-fun $V264_env_ok$1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$1 () Bool) +(declare-fun $V252_X$1 () Bool) +(declare-fun $V268_door_initially_closed$1 () Bool) +(declare-fun $V269_initially_not_in_station$1 () Bool) +(declare-fun $V271_warning_start_only_in_station$1 () Bool) +(declare-fun $V273_X$1 () Bool) +(declare-fun $V274_X$1 () Bool) +(declare-fun $V275_X$1 () Bool) +(declare-fun $V276_X$1 () Bool) +(declare-fun $~flatten0$1 () Bool) +(assert (T true $request_door$~1 $warning_start$~1 $in_station$~1 $door_is_open$~1 $V62_door_ok$~1 $V60_open_door$~1 $V61_close_door$~1 $OK$~1 $V58_env_always_ok$~1 $V59_prop_ok$~1 $V251_door_opens_before_leaving_station$~1 $V253_between_A_and_X$~1 $V264_env_ok$~1 $V265_door_doesnt_close_if_not_asked$~1 $V266_door_doesnt_open_if_not_asked$~1 $V267_tramway_doesnt_start_if_not_door_ok$~1 $V270_warning_start_and_in_station_go_down_simultaneously$~1 $V272_warning_start_cant_become_true_when_door_is_opening$~1 $V250_door_doesnt_open_out_of_station$~1 $V252_X$~1 $V268_door_initially_closed$~1 $V269_initially_not_in_station$~1 $V271_warning_start_only_in_station$~1 $V273_X$~1 $V274_X$~1 $V275_X$~1 $V276_X$~1 $~flatten0$~1 $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V62_door_ok$0 $V60_open_door$0 $V61_close_door$0 $OK$0 $V58_env_always_ok$0 $V59_prop_ok$0 $V251_door_opens_before_leaving_station$0 $V253_between_A_and_X$0 $V264_env_ok$0 $V265_door_doesnt_close_if_not_asked$0 $V266_door_doesnt_open_if_not_asked$0 $V267_tramway_doesnt_start_if_not_door_ok$0 $V270_warning_start_and_in_station_go_down_simultaneously$0 $V272_warning_start_cant_become_true_when_door_is_opening$0 $V250_door_doesnt_open_out_of_station$0 $V252_X$0 $V268_door_initially_closed$0 $V269_initially_not_in_station$0 $V271_warning_start_only_in_station$0 $V273_X$0 $V274_X$0 $V275_X$0 $V276_X$0 $~flatten0$0)) +(assert $OK$0) +(assert (T false $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V62_door_ok$0 $V60_open_door$0 $V61_close_door$0 $OK$0 $V58_env_always_ok$0 $V59_prop_ok$0 $V251_door_opens_before_leaving_station$0 $V253_between_A_and_X$0 $V264_env_ok$0 $V265_door_doesnt_close_if_not_asked$0 $V266_door_doesnt_open_if_not_asked$0 $V267_tramway_doesnt_start_if_not_door_ok$0 $V270_warning_start_and_in_station_go_down_simultaneously$0 $V272_warning_start_cant_become_true_when_door_is_opening$0 $V250_door_doesnt_open_out_of_station$0 $V252_X$0 $V268_door_initially_closed$0 $V269_initially_not_in_station$0 $V271_warning_start_only_in_station$0 $V273_X$0 $V274_X$0 $V275_X$0 $V276_X$0 $~flatten0$0 $request_door$1 $warning_start$1 $in_station$1 $door_is_open$1 $V62_door_ok$1 $V60_open_door$1 $V61_close_door$1 $OK$1 $V58_env_always_ok$1 $V59_prop_ok$1 $V251_door_opens_before_leaving_station$1 $V253_between_A_and_X$1 $V264_env_ok$1 $V265_door_doesnt_close_if_not_asked$1 $V266_door_doesnt_open_if_not_asked$1 $V267_tramway_doesnt_start_if_not_door_ok$1 $V270_warning_start_and_in_station_go_down_simultaneously$1 $V272_warning_start_cant_become_true_when_door_is_opening$1 $V250_door_doesnt_open_out_of_station$1 $V252_X$1 $V268_door_initially_closed$1 $V269_initially_not_in_station$1 $V271_warning_start_only_in_station$1 $V273_X$1 $V274_X$1 $V275_X$1 $V276_X$1 $~flatten0$1)) diff --git a/bench/tasks/tramway_e7_1834_e7_2363_base2_t_part.smt2 b/bench/tasks/tramway_e7_1834_e7_2363_base2_t_part.smt2 new file mode 100755 index 000000000..21bc32b55 --- /dev/null +++ b/bench/tasks/tramway_e7_1834_e7_2363_base2_t_part.smt2 @@ -0,0 +1,89 @@ +; K = 2 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V62_door_ok$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V252_X$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V62_door_ok$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V252_X$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (or $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V62_door_ok$0 () Bool) +(declare-fun $V60_open_door$0 () Bool) +(declare-fun $V61_close_door$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V58_env_always_ok$0 () Bool) +(declare-fun $V59_prop_ok$0 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$0 () Bool) +(declare-fun $V253_between_A_and_X$0 () Bool) +(declare-fun $V264_env_ok$0 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$0 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$0 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$0 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$0 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$0 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$0 () Bool) +(declare-fun $V252_X$0 () Bool) +(declare-fun $V268_door_initially_closed$0 () Bool) +(declare-fun $V269_initially_not_in_station$0 () Bool) +(declare-fun $V271_warning_start_only_in_station$0 () Bool) +(declare-fun $V273_X$0 () Bool) +(declare-fun $V274_X$0 () Bool) +(declare-fun $V275_X$0 () Bool) +(declare-fun $V276_X$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $request_door$1 () Bool) +(declare-fun $warning_start$1 () Bool) +(declare-fun $in_station$1 () Bool) +(declare-fun $door_is_open$1 () Bool) +(declare-fun $V62_door_ok$3 () Bool) +(declare-fun $V60_open_door$3 () Bool) +(declare-fun $V61_close_door$3 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $V58_env_always_ok$3 () Bool) +(declare-fun $V59_prop_ok$3 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$3 () Bool) +(declare-fun $V253_between_A_and_X$3 () Bool) +(declare-fun $V264_env_ok$3 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$3 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$3 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$3 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$3 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$3 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$3 () Bool) +(declare-fun $V252_X$3 () Bool) +(declare-fun $V268_door_initially_closed$3 () Bool) +(declare-fun $V269_initially_not_in_station$3 () Bool) +(declare-fun $V271_warning_start_only_in_station$3 () Bool) +(declare-fun $V273_X$3 () Bool) +(declare-fun $V274_X$3 () Bool) +(declare-fun $V275_X$3 () Bool) +(declare-fun $V276_X$3 () Bool) +(declare-fun $~flatten0$3 () Bool) +(assert (and (T false $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V62_door_ok$0 $V60_open_door$0 $V61_close_door$0 $OK$0 $V58_env_always_ok$0 $V59_prop_ok$0 $V251_door_opens_before_leaving_station$0 $V253_between_A_and_X$0 $V264_env_ok$0 $V265_door_doesnt_close_if_not_asked$0 $V266_door_doesnt_open_if_not_asked$0 $V267_tramway_doesnt_start_if_not_door_ok$0 $V270_warning_start_and_in_station_go_down_simultaneously$0 $V272_warning_start_cant_become_true_when_door_is_opening$0 $V250_door_doesnt_open_out_of_station$0 $V252_X$0 $V268_door_initially_closed$0 $V269_initially_not_in_station$0 $V271_warning_start_only_in_station$0 $V273_X$0 $V274_X$0 $V275_X$0 $V276_X$0 $~flatten0$0 $request_door$1 $warning_start$1 $in_station$1 $door_is_open$1 $V62_door_ok$3 $V60_open_door$3 $V61_close_door$3 $OK$3 $V58_env_always_ok$3 $V59_prop_ok$3 $V251_door_opens_before_leaving_station$3 $V253_between_A_and_X$3 $V264_env_ok$3 $V265_door_doesnt_close_if_not_asked$3 $V266_door_doesnt_open_if_not_asked$3 $V267_tramway_doesnt_start_if_not_door_ok$3 $V270_warning_start_and_in_station_go_down_simultaneously$3 $V272_warning_start_cant_become_true_when_door_is_opening$3 $V250_door_doesnt_open_out_of_station$3 $V252_X$3 $V268_door_initially_closed$3 $V269_initially_not_in_station$3 $V271_warning_start_only_in_station$3 $V273_X$3 $V274_X$3 $V275_X$3 $V276_X$3 $~flatten0$3) $OK$3)) diff --git a/bench/tasks/tramway_e7_1834_e7_2363_base3_s_part.smt2 b/bench/tasks/tramway_e7_1834_e7_2363_base3_s_part.smt2 new file mode 100755 index 000000000..10415b0cd --- /dev/null +++ b/bench/tasks/tramway_e7_1834_e7_2363_base3_s_part.smt2 @@ -0,0 +1,121 @@ +; K = 3 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V62_door_ok$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V252_X$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V62_door_ok$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V252_X$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (or $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V62_door_ok$0 () Bool) +(declare-fun $V60_open_door$0 () Bool) +(declare-fun $V61_close_door$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V58_env_always_ok$0 () Bool) +(declare-fun $V59_prop_ok$0 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$0 () Bool) +(declare-fun $V253_between_A_and_X$0 () Bool) +(declare-fun $V264_env_ok$0 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$0 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$0 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$0 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$0 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$0 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$0 () Bool) +(declare-fun $V252_X$0 () Bool) +(declare-fun $V268_door_initially_closed$0 () Bool) +(declare-fun $V269_initially_not_in_station$0 () Bool) +(declare-fun $V271_warning_start_only_in_station$0 () Bool) +(declare-fun $V273_X$0 () Bool) +(declare-fun $V274_X$0 () Bool) +(declare-fun $V275_X$0 () Bool) +(declare-fun $V276_X$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $request_door$1 () Bool) +(declare-fun $warning_start$1 () Bool) +(declare-fun $in_station$1 () Bool) +(declare-fun $door_is_open$1 () Bool) +(declare-fun $V62_door_ok$1 () Bool) +(declare-fun $V60_open_door$1 () Bool) +(declare-fun $V61_close_door$1 () Bool) +(declare-fun $OK$1 () Bool) +(declare-fun $V58_env_always_ok$1 () Bool) +(declare-fun $V59_prop_ok$1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$1 () Bool) +(declare-fun $V253_between_A_and_X$1 () Bool) +(declare-fun $V264_env_ok$1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$1 () Bool) +(declare-fun $V252_X$1 () Bool) +(declare-fun $V268_door_initially_closed$1 () Bool) +(declare-fun $V269_initially_not_in_station$1 () Bool) +(declare-fun $V271_warning_start_only_in_station$1 () Bool) +(declare-fun $V273_X$1 () Bool) +(declare-fun $V274_X$1 () Bool) +(declare-fun $V275_X$1 () Bool) +(declare-fun $V276_X$1 () Bool) +(declare-fun $~flatten0$1 () Bool) +(declare-fun $request_door$2 () Bool) +(declare-fun $warning_start$2 () Bool) +(declare-fun $in_station$2 () Bool) +(declare-fun $door_is_open$2 () Bool) +(declare-fun $V62_door_ok$2 () Bool) +(declare-fun $V60_open_door$2 () Bool) +(declare-fun $V61_close_door$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V58_env_always_ok$2 () Bool) +(declare-fun $V59_prop_ok$2 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$2 () Bool) +(declare-fun $V253_between_A_and_X$2 () Bool) +(declare-fun $V264_env_ok$2 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$2 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$2 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$2 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$2 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$2 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$2 () Bool) +(declare-fun $V252_X$2 () Bool) +(declare-fun $V268_door_initially_closed$2 () Bool) +(declare-fun $V269_initially_not_in_station$2 () Bool) +(declare-fun $V271_warning_start_only_in_station$2 () Bool) +(declare-fun $V273_X$2 () Bool) +(declare-fun $V274_X$2 () Bool) +(declare-fun $V275_X$2 () Bool) +(declare-fun $V276_X$2 () Bool) +(declare-fun $~flatten0$2 () Bool) +(assert (T true $request_door$~1 $warning_start$~1 $in_station$~1 $door_is_open$~1 $V62_door_ok$~1 $V60_open_door$~1 $V61_close_door$~1 $OK$~1 $V58_env_always_ok$~1 $V59_prop_ok$~1 $V251_door_opens_before_leaving_station$~1 $V253_between_A_and_X$~1 $V264_env_ok$~1 $V265_door_doesnt_close_if_not_asked$~1 $V266_door_doesnt_open_if_not_asked$~1 $V267_tramway_doesnt_start_if_not_door_ok$~1 $V270_warning_start_and_in_station_go_down_simultaneously$~1 $V272_warning_start_cant_become_true_when_door_is_opening$~1 $V250_door_doesnt_open_out_of_station$~1 $V252_X$~1 $V268_door_initially_closed$~1 $V269_initially_not_in_station$~1 $V271_warning_start_only_in_station$~1 $V273_X$~1 $V274_X$~1 $V275_X$~1 $V276_X$~1 $~flatten0$~1 $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V62_door_ok$0 $V60_open_door$0 $V61_close_door$0 $OK$0 $V58_env_always_ok$0 $V59_prop_ok$0 $V251_door_opens_before_leaving_station$0 $V253_between_A_and_X$0 $V264_env_ok$0 $V265_door_doesnt_close_if_not_asked$0 $V266_door_doesnt_open_if_not_asked$0 $V267_tramway_doesnt_start_if_not_door_ok$0 $V270_warning_start_and_in_station_go_down_simultaneously$0 $V272_warning_start_cant_become_true_when_door_is_opening$0 $V250_door_doesnt_open_out_of_station$0 $V252_X$0 $V268_door_initially_closed$0 $V269_initially_not_in_station$0 $V271_warning_start_only_in_station$0 $V273_X$0 $V274_X$0 $V275_X$0 $V276_X$0 $~flatten0$0)) +(assert $OK$0) +(assert (T false $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V62_door_ok$0 $V60_open_door$0 $V61_close_door$0 $OK$0 $V58_env_always_ok$0 $V59_prop_ok$0 $V251_door_opens_before_leaving_station$0 $V253_between_A_and_X$0 $V264_env_ok$0 $V265_door_doesnt_close_if_not_asked$0 $V266_door_doesnt_open_if_not_asked$0 $V267_tramway_doesnt_start_if_not_door_ok$0 $V270_warning_start_and_in_station_go_down_simultaneously$0 $V272_warning_start_cant_become_true_when_door_is_opening$0 $V250_door_doesnt_open_out_of_station$0 $V252_X$0 $V268_door_initially_closed$0 $V269_initially_not_in_station$0 $V271_warning_start_only_in_station$0 $V273_X$0 $V274_X$0 $V275_X$0 $V276_X$0 $~flatten0$0 $request_door$1 $warning_start$1 $in_station$1 $door_is_open$1 $V62_door_ok$1 $V60_open_door$1 $V61_close_door$1 $OK$1 $V58_env_always_ok$1 $V59_prop_ok$1 $V251_door_opens_before_leaving_station$1 $V253_between_A_and_X$1 $V264_env_ok$1 $V265_door_doesnt_close_if_not_asked$1 $V266_door_doesnt_open_if_not_asked$1 $V267_tramway_doesnt_start_if_not_door_ok$1 $V270_warning_start_and_in_station_go_down_simultaneously$1 $V272_warning_start_cant_become_true_when_door_is_opening$1 $V250_door_doesnt_open_out_of_station$1 $V252_X$1 $V268_door_initially_closed$1 $V269_initially_not_in_station$1 $V271_warning_start_only_in_station$1 $V273_X$1 $V274_X$1 $V275_X$1 $V276_X$1 $~flatten0$1)) +(assert $OK$1) +(assert (T false $request_door$1 $warning_start$1 $in_station$1 $door_is_open$1 $V62_door_ok$1 $V60_open_door$1 $V61_close_door$1 $OK$1 $V58_env_always_ok$1 $V59_prop_ok$1 $V251_door_opens_before_leaving_station$1 $V253_between_A_and_X$1 $V264_env_ok$1 $V265_door_doesnt_close_if_not_asked$1 $V266_door_doesnt_open_if_not_asked$1 $V267_tramway_doesnt_start_if_not_door_ok$1 $V270_warning_start_and_in_station_go_down_simultaneously$1 $V272_warning_start_cant_become_true_when_door_is_opening$1 $V250_door_doesnt_open_out_of_station$1 $V252_X$1 $V268_door_initially_closed$1 $V269_initially_not_in_station$1 $V271_warning_start_only_in_station$1 $V273_X$1 $V274_X$1 $V275_X$1 $V276_X$1 $~flatten0$1 $request_door$2 $warning_start$2 $in_station$2 $door_is_open$2 $V62_door_ok$2 $V60_open_door$2 $V61_close_door$2 $OK$2 $V58_env_always_ok$2 $V59_prop_ok$2 $V251_door_opens_before_leaving_station$2 $V253_between_A_and_X$2 $V264_env_ok$2 $V265_door_doesnt_close_if_not_asked$2 $V266_door_doesnt_open_if_not_asked$2 $V267_tramway_doesnt_start_if_not_door_ok$2 $V270_warning_start_and_in_station_go_down_simultaneously$2 $V272_warning_start_cant_become_true_when_door_is_opening$2 $V250_door_doesnt_open_out_of_station$2 $V252_X$2 $V268_door_initially_closed$2 $V269_initially_not_in_station$2 $V271_warning_start_only_in_station$2 $V273_X$2 $V274_X$2 $V275_X$2 $V276_X$2 $~flatten0$2)) diff --git a/bench/tasks/tramway_e7_1834_e7_2363_base3_t_part.smt2 b/bench/tasks/tramway_e7_1834_e7_2363_base3_t_part.smt2 new file mode 100755 index 000000000..6e8f3e4c5 --- /dev/null +++ b/bench/tasks/tramway_e7_1834_e7_2363_base3_t_part.smt2 @@ -0,0 +1,117 @@ +; K = 3 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V62_door_ok$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V252_X$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V62_door_ok$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V252_X$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (or $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V62_door_ok$0 () Bool) +(declare-fun $V60_open_door$0 () Bool) +(declare-fun $V61_close_door$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V58_env_always_ok$0 () Bool) +(declare-fun $V59_prop_ok$0 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$0 () Bool) +(declare-fun $V253_between_A_and_X$0 () Bool) +(declare-fun $V264_env_ok$0 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$0 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$0 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$0 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$0 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$0 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$0 () Bool) +(declare-fun $V252_X$0 () Bool) +(declare-fun $V268_door_initially_closed$0 () Bool) +(declare-fun $V269_initially_not_in_station$0 () Bool) +(declare-fun $V271_warning_start_only_in_station$0 () Bool) +(declare-fun $V273_X$0 () Bool) +(declare-fun $V274_X$0 () Bool) +(declare-fun $V275_X$0 () Bool) +(declare-fun $V276_X$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $request_door$1 () Bool) +(declare-fun $warning_start$1 () Bool) +(declare-fun $in_station$1 () Bool) +(declare-fun $door_is_open$1 () Bool) +(declare-fun $V62_door_ok$1 () Bool) +(declare-fun $V60_open_door$1 () Bool) +(declare-fun $V61_close_door$1 () Bool) +(declare-fun $OK$1 () Bool) +(declare-fun $V58_env_always_ok$1 () Bool) +(declare-fun $V59_prop_ok$1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$1 () Bool) +(declare-fun $V253_between_A_and_X$1 () Bool) +(declare-fun $V264_env_ok$1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$1 () Bool) +(declare-fun $V252_X$1 () Bool) +(declare-fun $V268_door_initially_closed$1 () Bool) +(declare-fun $V269_initially_not_in_station$1 () Bool) +(declare-fun $V271_warning_start_only_in_station$1 () Bool) +(declare-fun $V273_X$1 () Bool) +(declare-fun $V274_X$1 () Bool) +(declare-fun $V275_X$1 () Bool) +(declare-fun $V276_X$1 () Bool) +(declare-fun $~flatten0$1 () Bool) +(declare-fun $request_door$2 () Bool) +(declare-fun $warning_start$2 () Bool) +(declare-fun $in_station$2 () Bool) +(declare-fun $door_is_open$2 () Bool) +(declare-fun $V62_door_ok$4 () Bool) +(declare-fun $V60_open_door$4 () Bool) +(declare-fun $V61_close_door$4 () Bool) +(declare-fun $OK$4 () Bool) +(declare-fun $V58_env_always_ok$4 () Bool) +(declare-fun $V59_prop_ok$4 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$4 () Bool) +(declare-fun $V253_between_A_and_X$4 () Bool) +(declare-fun $V264_env_ok$4 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$4 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$4 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$4 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$4 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$4 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$4 () Bool) +(declare-fun $V252_X$4 () Bool) +(declare-fun $V268_door_initially_closed$4 () Bool) +(declare-fun $V269_initially_not_in_station$4 () Bool) +(declare-fun $V271_warning_start_only_in_station$4 () Bool) +(declare-fun $V273_X$4 () Bool) +(declare-fun $V274_X$4 () Bool) +(declare-fun $V275_X$4 () Bool) +(declare-fun $V276_X$4 () Bool) +(declare-fun $~flatten0$4 () Bool) +(assert (and (T false $request_door$1 $warning_start$1 $in_station$1 $door_is_open$1 $V62_door_ok$1 $V60_open_door$1 $V61_close_door$1 $OK$1 $V58_env_always_ok$1 $V59_prop_ok$1 $V251_door_opens_before_leaving_station$1 $V253_between_A_and_X$1 $V264_env_ok$1 $V265_door_doesnt_close_if_not_asked$1 $V266_door_doesnt_open_if_not_asked$1 $V267_tramway_doesnt_start_if_not_door_ok$1 $V270_warning_start_and_in_station_go_down_simultaneously$1 $V272_warning_start_cant_become_true_when_door_is_opening$1 $V250_door_doesnt_open_out_of_station$1 $V252_X$1 $V268_door_initially_closed$1 $V269_initially_not_in_station$1 $V271_warning_start_only_in_station$1 $V273_X$1 $V274_X$1 $V275_X$1 $V276_X$1 $~flatten0$1 $request_door$2 $warning_start$2 $in_station$2 $door_is_open$2 $V62_door_ok$4 $V60_open_door$4 $V61_close_door$4 $OK$4 $V58_env_always_ok$4 $V59_prop_ok$4 $V251_door_opens_before_leaving_station$4 $V253_between_A_and_X$4 $V264_env_ok$4 $V265_door_doesnt_close_if_not_asked$4 $V266_door_doesnt_open_if_not_asked$4 $V267_tramway_doesnt_start_if_not_door_ok$4 $V270_warning_start_and_in_station_go_down_simultaneously$4 $V272_warning_start_cant_become_true_when_door_is_opening$4 $V250_door_doesnt_open_out_of_station$4 $V252_X$4 $V268_door_initially_closed$4 $V269_initially_not_in_station$4 $V271_warning_start_only_in_station$4 $V273_X$4 $V274_X$4 $V275_X$4 $V276_X$4 $~flatten0$4) $OK$4)) diff --git a/bench/tasks/tramway_e7_1834_e7_2363_base4_s_part.smt2 b/bench/tasks/tramway_e7_1834_e7_2363_base4_s_part.smt2 new file mode 100755 index 000000000..b0175a40c --- /dev/null +++ b/bench/tasks/tramway_e7_1834_e7_2363_base4_s_part.smt2 @@ -0,0 +1,151 @@ +; K = 4 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V62_door_ok$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V252_X$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V62_door_ok$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V252_X$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (or $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V62_door_ok$0 () Bool) +(declare-fun $V60_open_door$0 () Bool) +(declare-fun $V61_close_door$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V58_env_always_ok$0 () Bool) +(declare-fun $V59_prop_ok$0 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$0 () Bool) +(declare-fun $V253_between_A_and_X$0 () Bool) +(declare-fun $V264_env_ok$0 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$0 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$0 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$0 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$0 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$0 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$0 () Bool) +(declare-fun $V252_X$0 () Bool) +(declare-fun $V268_door_initially_closed$0 () Bool) +(declare-fun $V269_initially_not_in_station$0 () Bool) +(declare-fun $V271_warning_start_only_in_station$0 () Bool) +(declare-fun $V273_X$0 () Bool) +(declare-fun $V274_X$0 () Bool) +(declare-fun $V275_X$0 () Bool) +(declare-fun $V276_X$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $request_door$1 () Bool) +(declare-fun $warning_start$1 () Bool) +(declare-fun $in_station$1 () Bool) +(declare-fun $door_is_open$1 () Bool) +(declare-fun $V62_door_ok$1 () Bool) +(declare-fun $V60_open_door$1 () Bool) +(declare-fun $V61_close_door$1 () Bool) +(declare-fun $OK$1 () Bool) +(declare-fun $V58_env_always_ok$1 () Bool) +(declare-fun $V59_prop_ok$1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$1 () Bool) +(declare-fun $V253_between_A_and_X$1 () Bool) +(declare-fun $V264_env_ok$1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$1 () Bool) +(declare-fun $V252_X$1 () Bool) +(declare-fun $V268_door_initially_closed$1 () Bool) +(declare-fun $V269_initially_not_in_station$1 () Bool) +(declare-fun $V271_warning_start_only_in_station$1 () Bool) +(declare-fun $V273_X$1 () Bool) +(declare-fun $V274_X$1 () Bool) +(declare-fun $V275_X$1 () Bool) +(declare-fun $V276_X$1 () Bool) +(declare-fun $~flatten0$1 () Bool) +(declare-fun $request_door$2 () Bool) +(declare-fun $warning_start$2 () Bool) +(declare-fun $in_station$2 () Bool) +(declare-fun $door_is_open$2 () Bool) +(declare-fun $V62_door_ok$2 () Bool) +(declare-fun $V60_open_door$2 () Bool) +(declare-fun $V61_close_door$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V58_env_always_ok$2 () Bool) +(declare-fun $V59_prop_ok$2 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$2 () Bool) +(declare-fun $V253_between_A_and_X$2 () Bool) +(declare-fun $V264_env_ok$2 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$2 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$2 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$2 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$2 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$2 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$2 () Bool) +(declare-fun $V252_X$2 () Bool) +(declare-fun $V268_door_initially_closed$2 () Bool) +(declare-fun $V269_initially_not_in_station$2 () Bool) +(declare-fun $V271_warning_start_only_in_station$2 () Bool) +(declare-fun $V273_X$2 () Bool) +(declare-fun $V274_X$2 () Bool) +(declare-fun $V275_X$2 () Bool) +(declare-fun $V276_X$2 () Bool) +(declare-fun $~flatten0$2 () Bool) +(declare-fun $request_door$3 () Bool) +(declare-fun $warning_start$3 () Bool) +(declare-fun $in_station$3 () Bool) +(declare-fun $door_is_open$3 () Bool) +(declare-fun $V62_door_ok$3 () Bool) +(declare-fun $V60_open_door$3 () Bool) +(declare-fun $V61_close_door$3 () Bool) +(declare-fun $OK$3 () Bool) +(declare-fun $V58_env_always_ok$3 () Bool) +(declare-fun $V59_prop_ok$3 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$3 () Bool) +(declare-fun $V253_between_A_and_X$3 () Bool) +(declare-fun $V264_env_ok$3 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$3 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$3 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$3 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$3 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$3 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$3 () Bool) +(declare-fun $V252_X$3 () Bool) +(declare-fun $V268_door_initially_closed$3 () Bool) +(declare-fun $V269_initially_not_in_station$3 () Bool) +(declare-fun $V271_warning_start_only_in_station$3 () Bool) +(declare-fun $V273_X$3 () Bool) +(declare-fun $V274_X$3 () Bool) +(declare-fun $V275_X$3 () Bool) +(declare-fun $V276_X$3 () Bool) +(declare-fun $~flatten0$3 () Bool) +(assert (T true $request_door$~1 $warning_start$~1 $in_station$~1 $door_is_open$~1 $V62_door_ok$~1 $V60_open_door$~1 $V61_close_door$~1 $OK$~1 $V58_env_always_ok$~1 $V59_prop_ok$~1 $V251_door_opens_before_leaving_station$~1 $V253_between_A_and_X$~1 $V264_env_ok$~1 $V265_door_doesnt_close_if_not_asked$~1 $V266_door_doesnt_open_if_not_asked$~1 $V267_tramway_doesnt_start_if_not_door_ok$~1 $V270_warning_start_and_in_station_go_down_simultaneously$~1 $V272_warning_start_cant_become_true_when_door_is_opening$~1 $V250_door_doesnt_open_out_of_station$~1 $V252_X$~1 $V268_door_initially_closed$~1 $V269_initially_not_in_station$~1 $V271_warning_start_only_in_station$~1 $V273_X$~1 $V274_X$~1 $V275_X$~1 $V276_X$~1 $~flatten0$~1 $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V62_door_ok$0 $V60_open_door$0 $V61_close_door$0 $OK$0 $V58_env_always_ok$0 $V59_prop_ok$0 $V251_door_opens_before_leaving_station$0 $V253_between_A_and_X$0 $V264_env_ok$0 $V265_door_doesnt_close_if_not_asked$0 $V266_door_doesnt_open_if_not_asked$0 $V267_tramway_doesnt_start_if_not_door_ok$0 $V270_warning_start_and_in_station_go_down_simultaneously$0 $V272_warning_start_cant_become_true_when_door_is_opening$0 $V250_door_doesnt_open_out_of_station$0 $V252_X$0 $V268_door_initially_closed$0 $V269_initially_not_in_station$0 $V271_warning_start_only_in_station$0 $V273_X$0 $V274_X$0 $V275_X$0 $V276_X$0 $~flatten0$0)) +(assert $OK$0) +(assert (T false $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V62_door_ok$0 $V60_open_door$0 $V61_close_door$0 $OK$0 $V58_env_always_ok$0 $V59_prop_ok$0 $V251_door_opens_before_leaving_station$0 $V253_between_A_and_X$0 $V264_env_ok$0 $V265_door_doesnt_close_if_not_asked$0 $V266_door_doesnt_open_if_not_asked$0 $V267_tramway_doesnt_start_if_not_door_ok$0 $V270_warning_start_and_in_station_go_down_simultaneously$0 $V272_warning_start_cant_become_true_when_door_is_opening$0 $V250_door_doesnt_open_out_of_station$0 $V252_X$0 $V268_door_initially_closed$0 $V269_initially_not_in_station$0 $V271_warning_start_only_in_station$0 $V273_X$0 $V274_X$0 $V275_X$0 $V276_X$0 $~flatten0$0 $request_door$1 $warning_start$1 $in_station$1 $door_is_open$1 $V62_door_ok$1 $V60_open_door$1 $V61_close_door$1 $OK$1 $V58_env_always_ok$1 $V59_prop_ok$1 $V251_door_opens_before_leaving_station$1 $V253_between_A_and_X$1 $V264_env_ok$1 $V265_door_doesnt_close_if_not_asked$1 $V266_door_doesnt_open_if_not_asked$1 $V267_tramway_doesnt_start_if_not_door_ok$1 $V270_warning_start_and_in_station_go_down_simultaneously$1 $V272_warning_start_cant_become_true_when_door_is_opening$1 $V250_door_doesnt_open_out_of_station$1 $V252_X$1 $V268_door_initially_closed$1 $V269_initially_not_in_station$1 $V271_warning_start_only_in_station$1 $V273_X$1 $V274_X$1 $V275_X$1 $V276_X$1 $~flatten0$1)) +(assert $OK$1) +(assert (T false $request_door$1 $warning_start$1 $in_station$1 $door_is_open$1 $V62_door_ok$1 $V60_open_door$1 $V61_close_door$1 $OK$1 $V58_env_always_ok$1 $V59_prop_ok$1 $V251_door_opens_before_leaving_station$1 $V253_between_A_and_X$1 $V264_env_ok$1 $V265_door_doesnt_close_if_not_asked$1 $V266_door_doesnt_open_if_not_asked$1 $V267_tramway_doesnt_start_if_not_door_ok$1 $V270_warning_start_and_in_station_go_down_simultaneously$1 $V272_warning_start_cant_become_true_when_door_is_opening$1 $V250_door_doesnt_open_out_of_station$1 $V252_X$1 $V268_door_initially_closed$1 $V269_initially_not_in_station$1 $V271_warning_start_only_in_station$1 $V273_X$1 $V274_X$1 $V275_X$1 $V276_X$1 $~flatten0$1 $request_door$2 $warning_start$2 $in_station$2 $door_is_open$2 $V62_door_ok$2 $V60_open_door$2 $V61_close_door$2 $OK$2 $V58_env_always_ok$2 $V59_prop_ok$2 $V251_door_opens_before_leaving_station$2 $V253_between_A_and_X$2 $V264_env_ok$2 $V265_door_doesnt_close_if_not_asked$2 $V266_door_doesnt_open_if_not_asked$2 $V267_tramway_doesnt_start_if_not_door_ok$2 $V270_warning_start_and_in_station_go_down_simultaneously$2 $V272_warning_start_cant_become_true_when_door_is_opening$2 $V250_door_doesnt_open_out_of_station$2 $V252_X$2 $V268_door_initially_closed$2 $V269_initially_not_in_station$2 $V271_warning_start_only_in_station$2 $V273_X$2 $V274_X$2 $V275_X$2 $V276_X$2 $~flatten0$2)) +(assert $OK$2) +(assert (T false $request_door$2 $warning_start$2 $in_station$2 $door_is_open$2 $V62_door_ok$2 $V60_open_door$2 $V61_close_door$2 $OK$2 $V58_env_always_ok$2 $V59_prop_ok$2 $V251_door_opens_before_leaving_station$2 $V253_between_A_and_X$2 $V264_env_ok$2 $V265_door_doesnt_close_if_not_asked$2 $V266_door_doesnt_open_if_not_asked$2 $V267_tramway_doesnt_start_if_not_door_ok$2 $V270_warning_start_and_in_station_go_down_simultaneously$2 $V272_warning_start_cant_become_true_when_door_is_opening$2 $V250_door_doesnt_open_out_of_station$2 $V252_X$2 $V268_door_initially_closed$2 $V269_initially_not_in_station$2 $V271_warning_start_only_in_station$2 $V273_X$2 $V274_X$2 $V275_X$2 $V276_X$2 $~flatten0$2 $request_door$3 $warning_start$3 $in_station$3 $door_is_open$3 $V62_door_ok$3 $V60_open_door$3 $V61_close_door$3 $OK$3 $V58_env_always_ok$3 $V59_prop_ok$3 $V251_door_opens_before_leaving_station$3 $V253_between_A_and_X$3 $V264_env_ok$3 $V265_door_doesnt_close_if_not_asked$3 $V266_door_doesnt_open_if_not_asked$3 $V267_tramway_doesnt_start_if_not_door_ok$3 $V270_warning_start_and_in_station_go_down_simultaneously$3 $V272_warning_start_cant_become_true_when_door_is_opening$3 $V250_door_doesnt_open_out_of_station$3 $V252_X$3 $V268_door_initially_closed$3 $V269_initially_not_in_station$3 $V271_warning_start_only_in_station$3 $V273_X$3 $V274_X$3 $V275_X$3 $V276_X$3 $~flatten0$3)) diff --git a/bench/tasks/tramway_e7_1834_e7_2363_base4_t_part.smt2 b/bench/tasks/tramway_e7_1834_e7_2363_base4_t_part.smt2 new file mode 100755 index 000000000..4c374f8b1 --- /dev/null +++ b/bench/tasks/tramway_e7_1834_e7_2363_base4_t_part.smt2 @@ -0,0 +1,145 @@ +; K = 4 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V62_door_ok$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V252_X$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V62_door_ok$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V252_X$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (or $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V62_door_ok$0 () Bool) +(declare-fun $V60_open_door$0 () Bool) +(declare-fun $V61_close_door$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V58_env_always_ok$0 () Bool) +(declare-fun $V59_prop_ok$0 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$0 () Bool) +(declare-fun $V253_between_A_and_X$0 () Bool) +(declare-fun $V264_env_ok$0 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$0 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$0 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$0 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$0 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$0 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$0 () Bool) +(declare-fun $V252_X$0 () Bool) +(declare-fun $V268_door_initially_closed$0 () Bool) +(declare-fun $V269_initially_not_in_station$0 () Bool) +(declare-fun $V271_warning_start_only_in_station$0 () Bool) +(declare-fun $V273_X$0 () Bool) +(declare-fun $V274_X$0 () Bool) +(declare-fun $V275_X$0 () Bool) +(declare-fun $V276_X$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(declare-fun $request_door$1 () Bool) +(declare-fun $warning_start$1 () Bool) +(declare-fun $in_station$1 () Bool) +(declare-fun $door_is_open$1 () Bool) +(declare-fun $V62_door_ok$1 () Bool) +(declare-fun $V60_open_door$1 () Bool) +(declare-fun $V61_close_door$1 () Bool) +(declare-fun $OK$1 () Bool) +(declare-fun $V58_env_always_ok$1 () Bool) +(declare-fun $V59_prop_ok$1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$1 () Bool) +(declare-fun $V253_between_A_and_X$1 () Bool) +(declare-fun $V264_env_ok$1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$1 () Bool) +(declare-fun $V252_X$1 () Bool) +(declare-fun $V268_door_initially_closed$1 () Bool) +(declare-fun $V269_initially_not_in_station$1 () Bool) +(declare-fun $V271_warning_start_only_in_station$1 () Bool) +(declare-fun $V273_X$1 () Bool) +(declare-fun $V274_X$1 () Bool) +(declare-fun $V275_X$1 () Bool) +(declare-fun $V276_X$1 () Bool) +(declare-fun $~flatten0$1 () Bool) +(declare-fun $request_door$2 () Bool) +(declare-fun $warning_start$2 () Bool) +(declare-fun $in_station$2 () Bool) +(declare-fun $door_is_open$2 () Bool) +(declare-fun $V62_door_ok$2 () Bool) +(declare-fun $V60_open_door$2 () Bool) +(declare-fun $V61_close_door$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V58_env_always_ok$2 () Bool) +(declare-fun $V59_prop_ok$2 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$2 () Bool) +(declare-fun $V253_between_A_and_X$2 () Bool) +(declare-fun $V264_env_ok$2 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$2 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$2 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$2 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$2 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$2 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$2 () Bool) +(declare-fun $V252_X$2 () Bool) +(declare-fun $V268_door_initially_closed$2 () Bool) +(declare-fun $V269_initially_not_in_station$2 () Bool) +(declare-fun $V271_warning_start_only_in_station$2 () Bool) +(declare-fun $V273_X$2 () Bool) +(declare-fun $V274_X$2 () Bool) +(declare-fun $V275_X$2 () Bool) +(declare-fun $V276_X$2 () Bool) +(declare-fun $~flatten0$2 () Bool) +(declare-fun $request_door$3 () Bool) +(declare-fun $warning_start$3 () Bool) +(declare-fun $in_station$3 () Bool) +(declare-fun $door_is_open$3 () Bool) +(declare-fun $V62_door_ok$5 () Bool) +(declare-fun $V60_open_door$5 () Bool) +(declare-fun $V61_close_door$5 () Bool) +(declare-fun $OK$5 () Bool) +(declare-fun $V58_env_always_ok$5 () Bool) +(declare-fun $V59_prop_ok$5 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$5 () Bool) +(declare-fun $V253_between_A_and_X$5 () Bool) +(declare-fun $V264_env_ok$5 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$5 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$5 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$5 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$5 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$5 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$5 () Bool) +(declare-fun $V252_X$5 () Bool) +(declare-fun $V268_door_initially_closed$5 () Bool) +(declare-fun $V269_initially_not_in_station$5 () Bool) +(declare-fun $V271_warning_start_only_in_station$5 () Bool) +(declare-fun $V273_X$5 () Bool) +(declare-fun $V274_X$5 () Bool) +(declare-fun $V275_X$5 () Bool) +(declare-fun $V276_X$5 () Bool) +(declare-fun $~flatten0$5 () Bool) +(assert (and (T false $request_door$2 $warning_start$2 $in_station$2 $door_is_open$2 $V62_door_ok$2 $V60_open_door$2 $V61_close_door$2 $OK$2 $V58_env_always_ok$2 $V59_prop_ok$2 $V251_door_opens_before_leaving_station$2 $V253_between_A_and_X$2 $V264_env_ok$2 $V265_door_doesnt_close_if_not_asked$2 $V266_door_doesnt_open_if_not_asked$2 $V267_tramway_doesnt_start_if_not_door_ok$2 $V270_warning_start_and_in_station_go_down_simultaneously$2 $V272_warning_start_cant_become_true_when_door_is_opening$2 $V250_door_doesnt_open_out_of_station$2 $V252_X$2 $V268_door_initially_closed$2 $V269_initially_not_in_station$2 $V271_warning_start_only_in_station$2 $V273_X$2 $V274_X$2 $V275_X$2 $V276_X$2 $~flatten0$2 $request_door$3 $warning_start$3 $in_station$3 $door_is_open$3 $V62_door_ok$5 $V60_open_door$5 $V61_close_door$5 $OK$5 $V58_env_always_ok$5 $V59_prop_ok$5 $V251_door_opens_before_leaving_station$5 $V253_between_A_and_X$5 $V264_env_ok$5 $V265_door_doesnt_close_if_not_asked$5 $V266_door_doesnt_open_if_not_asked$5 $V267_tramway_doesnt_start_if_not_door_ok$5 $V270_warning_start_and_in_station_go_down_simultaneously$5 $V272_warning_start_cant_become_true_when_door_is_opening$5 $V250_door_doesnt_open_out_of_station$5 $V252_X$5 $V268_door_initially_closed$5 $V269_initially_not_in_station$5 $V271_warning_start_only_in_station$5 $V273_X$5 $V274_X$5 $V275_X$5 $V276_X$5 $~flatten0$5) $OK$5)) diff --git a/bench/tasks/tramway_e7_1834_e7_2363_extend_s_part.smt2 b/bench/tasks/tramway_e7_1834_e7_2363_extend_s_part.smt2 new file mode 100755 index 000000000..288d963f7 --- /dev/null +++ b/bench/tasks/tramway_e7_1834_e7_2363_extend_s_part.smt2 @@ -0,0 +1,62 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V62_door_ok$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V252_X$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V62_door_ok$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V252_X$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (or $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V62_door_ok$0 () Bool) +(declare-fun $V60_open_door$0 () Bool) +(declare-fun $V61_close_door$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V58_env_always_ok$0 () Bool) +(declare-fun $V59_prop_ok$0 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$0 () Bool) +(declare-fun $V253_between_A_and_X$0 () Bool) +(declare-fun $V264_env_ok$0 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$0 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$0 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$0 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$0 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$0 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$0 () Bool) +(declare-fun $V252_X$0 () Bool) +(declare-fun $V268_door_initially_closed$0 () Bool) +(declare-fun $V269_initially_not_in_station$0 () Bool) +(declare-fun $V271_warning_start_only_in_station$0 () Bool) +(declare-fun $V273_X$0 () Bool) +(declare-fun $V274_X$0 () Bool) +(declare-fun $V275_X$0 () Bool) +(declare-fun $V276_X$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(assert (T %init $request_door$~1 $warning_start$~1 $in_station$~1 $door_is_open$~1 $V62_door_ok$~1 $V60_open_door$~1 $V61_close_door$~1 $OK$~1 $V58_env_always_ok$~1 $V59_prop_ok$~1 $V251_door_opens_before_leaving_station$~1 $V253_between_A_and_X$~1 $V264_env_ok$~1 $V265_door_doesnt_close_if_not_asked$~1 $V266_door_doesnt_open_if_not_asked$~1 $V267_tramway_doesnt_start_if_not_door_ok$~1 $V270_warning_start_and_in_station_go_down_simultaneously$~1 $V272_warning_start_cant_become_true_when_door_is_opening$~1 $V250_door_doesnt_open_out_of_station$~1 $V252_X$~1 $V268_door_initially_closed$~1 $V269_initially_not_in_station$~1 $V271_warning_start_only_in_station$~1 $V273_X$~1 $V274_X$~1 $V275_X$~1 $V276_X$~1 $~flatten0$~1 $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V62_door_ok$0 $V60_open_door$0 $V61_close_door$0 $OK$0 $V58_env_always_ok$0 $V59_prop_ok$0 $V251_door_opens_before_leaving_station$0 $V253_between_A_and_X$0 $V264_env_ok$0 $V265_door_doesnt_close_if_not_asked$0 $V266_door_doesnt_open_if_not_asked$0 $V267_tramway_doesnt_start_if_not_door_ok$0 $V270_warning_start_and_in_station_go_down_simultaneously$0 $V272_warning_start_cant_become_true_when_door_is_opening$0 $V250_door_doesnt_open_out_of_station$0 $V252_X$0 $V268_door_initially_closed$0 $V269_initially_not_in_station$0 $V271_warning_start_only_in_station$0 $V273_X$0 $V274_X$0 $V275_X$0 $V276_X$0 $~flatten0$0)) diff --git a/bench/tasks/tramway_e7_1834_e7_2363_extend_t_part.smt2 b/bench/tasks/tramway_e7_1834_e7_2363_extend_t_part.smt2 new file mode 100755 index 000000000..fb2b85215 --- /dev/null +++ b/bench/tasks/tramway_e7_1834_e7_2363_extend_t_part.smt2 @@ -0,0 +1,63 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V62_door_ok$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V252_X$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V62_door_ok$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V252_X$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (or $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V62_door_ok$2 () Bool) +(declare-fun $V60_open_door$2 () Bool) +(declare-fun $V61_close_door$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V58_env_always_ok$2 () Bool) +(declare-fun $V59_prop_ok$2 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$2 () Bool) +(declare-fun $V253_between_A_and_X$2 () Bool) +(declare-fun $V264_env_ok$2 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$2 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$2 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$2 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$2 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$2 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$2 () Bool) +(declare-fun $V252_X$2 () Bool) +(declare-fun $V268_door_initially_closed$2 () Bool) +(declare-fun $V269_initially_not_in_station$2 () Bool) +(declare-fun $V271_warning_start_only_in_station$2 () Bool) +(declare-fun $V273_X$2 () Bool) +(declare-fun $V274_X$2 () Bool) +(declare-fun $V275_X$2 () Bool) +(declare-fun $V276_X$2 () Bool) +(declare-fun $~flatten0$ () Bool) +(declare-fun $~flatten0$2 () Bool) +(assert (and (T %init $request_door$~1 $warning_start$~1 $in_station$~1 $door_is_open$~1 $V62_door_ok$~1 $V60_open_door$~1 $V61_close_door$~1 $OK$~1 $V58_env_always_ok$~1 $V59_prop_ok$~1 $V251_door_opens_before_leaving_station$~1 $V253_between_A_and_X$~1 $V264_env_ok$~1 $V265_door_doesnt_close_if_not_asked$~1 $V266_door_doesnt_open_if_not_asked$~1 $V267_tramway_doesnt_start_if_not_door_ok$~1 $V270_warning_start_and_in_station_go_down_simultaneously$~1 $V272_warning_start_cant_become_true_when_door_is_opening$~1 $V250_door_doesnt_open_out_of_station$~1 $V252_X$~1 $V268_door_initially_closed$~1 $V269_initially_not_in_station$~1 $V271_warning_start_only_in_station$~1 $V273_X$~1 $V274_X$~1 $V275_X$~1 $V276_X$~1 $~flatten0$~1 $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V62_door_ok$2 $V60_open_door$2 $V61_close_door$2 $OK$2 $V58_env_always_ok$2 $V59_prop_ok$2 $V251_door_opens_before_leaving_station$2 $V253_between_A_and_X$2 $V264_env_ok$2 $V265_door_doesnt_close_if_not_asked$2 $V266_door_doesnt_open_if_not_asked$2 $V267_tramway_doesnt_start_if_not_door_ok$2 $V270_warning_start_and_in_station_go_down_simultaneously$2 $V272_warning_start_cant_become_true_when_door_is_opening$2 $V250_door_doesnt_open_out_of_station$2 $V252_X$2 $V268_door_initially_closed$2 $V269_initially_not_in_station$2 $V271_warning_start_only_in_station$2 $V273_X$2 $V274_X$2 $V275_X$2 $V276_X$2 $~flatten0$2) $OK$2)) diff --git a/bench/tasks/tramway_e7_1834_extend_s_part.smt2 b/bench/tasks/tramway_e7_1834_extend_s_part.smt2 new file mode 100755 index 000000000..29834933a --- /dev/null +++ b/bench/tasks/tramway_e7_1834_extend_s_part.smt2 @@ -0,0 +1,62 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($V62_door_ok$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V252_X$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($V62_door_ok$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V252_X$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (and $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V60_open_door$0 () Bool) +(declare-fun $V61_close_door$0 () Bool) +(declare-fun $V62_door_ok$0 () Bool) +(declare-fun $OK$0 () Bool) +(declare-fun $V58_env_always_ok$0 () Bool) +(declare-fun $V59_prop_ok$0 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$0 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$0 () Bool) +(declare-fun $V252_X$0 () Bool) +(declare-fun $V253_between_A_and_X$0 () Bool) +(declare-fun $V264_env_ok$0 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$0 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$0 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$0 () Bool) +(declare-fun $V268_door_initially_closed$0 () Bool) +(declare-fun $V269_initially_not_in_station$0 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$0 () Bool) +(declare-fun $V271_warning_start_only_in_station$0 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$0 () Bool) +(declare-fun $V273_X$0 () Bool) +(declare-fun $V274_X$0 () Bool) +(declare-fun $V275_X$0 () Bool) +(declare-fun $V276_X$0 () Bool) +(declare-fun $~flatten0$0 () Bool) +(assert (T %init $request_door$~1 $warning_start$~1 $in_station$~1 $door_is_open$~1 $V60_open_door$~1 $V61_close_door$~1 $V62_door_ok$~1 $OK$~1 $V58_env_always_ok$~1 $V59_prop_ok$~1 $V250_door_doesnt_open_out_of_station$~1 $V251_door_opens_before_leaving_station$~1 $V252_X$~1 $V253_between_A_and_X$~1 $V264_env_ok$~1 $V265_door_doesnt_close_if_not_asked$~1 $V266_door_doesnt_open_if_not_asked$~1 $V267_tramway_doesnt_start_if_not_door_ok$~1 $V268_door_initially_closed$~1 $V269_initially_not_in_station$~1 $V270_warning_start_and_in_station_go_down_simultaneously$~1 $V271_warning_start_only_in_station$~1 $V272_warning_start_cant_become_true_when_door_is_opening$~1 $V273_X$~1 $V274_X$~1 $V275_X$~1 $V276_X$~1 $~flatten0$~1 $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V60_open_door$0 $V61_close_door$0 $V62_door_ok$0 $OK$0 $V58_env_always_ok$0 $V59_prop_ok$0 $V250_door_doesnt_open_out_of_station$0 $V251_door_opens_before_leaving_station$0 $V252_X$0 $V253_between_A_and_X$0 $V264_env_ok$0 $V265_door_doesnt_close_if_not_asked$0 $V266_door_doesnt_open_if_not_asked$0 $V267_tramway_doesnt_start_if_not_door_ok$0 $V268_door_initially_closed$0 $V269_initially_not_in_station$0 $V270_warning_start_and_in_station_go_down_simultaneously$0 $V271_warning_start_only_in_station$0 $V272_warning_start_cant_become_true_when_door_is_opening$0 $V273_X$0 $V274_X$0 $V275_X$0 $V276_X$0 $~flatten0$0)) diff --git a/bench/tasks/tramway_e7_1834_extend_t_part.smt2 b/bench/tasks/tramway_e7_1834_extend_t_part.smt2 new file mode 100755 index 000000000..86db2774c --- /dev/null +++ b/bench/tasks/tramway_e7_1834_extend_t_part.smt2 @@ -0,0 +1,62 @@ +; K = 0 +; Transition relation +(define-fun T ((%init Bool) ($request_door$0 Bool) ($warning_start$0 Bool) ($in_station$0 Bool) ($door_is_open$0 Bool) ($V60_open_door$0 Bool) ($V61_close_door$0 Bool) ($V62_door_ok$0 Bool) ($OK$0 Bool) ($V58_env_always_ok$0 Bool) ($V59_prop_ok$0 Bool) ($V250_door_doesnt_open_out_of_station$0 Bool) ($V251_door_opens_before_leaving_station$0 Bool) ($V252_X$0 Bool) ($V253_between_A_and_X$0 Bool) ($V264_env_ok$0 Bool) ($V265_door_doesnt_close_if_not_asked$0 Bool) ($V266_door_doesnt_open_if_not_asked$0 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$0 Bool) ($V268_door_initially_closed$0 Bool) ($V269_initially_not_in_station$0 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$0 Bool) ($V271_warning_start_only_in_station$0 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$0 Bool) ($V273_X$0 Bool) ($V274_X$0 Bool) ($V275_X$0 Bool) ($V276_X$0 Bool) ($~flatten0$0 Bool) ($request_door$1 Bool) ($warning_start$1 Bool) ($in_station$1 Bool) ($door_is_open$1 Bool) ($V60_open_door$1 Bool) ($V61_close_door$1 Bool) ($V62_door_ok$1 Bool) ($OK$1 Bool) ($V58_env_always_ok$1 Bool) ($V59_prop_ok$1 Bool) ($V250_door_doesnt_open_out_of_station$1 Bool) ($V251_door_opens_before_leaving_station$1 Bool) ($V252_X$1 Bool) ($V253_between_A_and_X$1 Bool) ($V264_env_ok$1 Bool) ($V265_door_doesnt_close_if_not_asked$1 Bool) ($V266_door_doesnt_open_if_not_asked$1 Bool) ($V267_tramway_doesnt_start_if_not_door_ok$1 Bool) ($V268_door_initially_closed$1 Bool) ($V269_initially_not_in_station$1 Bool) ($V270_warning_start_and_in_station_go_down_simultaneously$1 Bool) ($V271_warning_start_only_in_station$1 Bool) ($V272_warning_start_cant_become_true_when_door_is_opening$1 Bool) ($V273_X$1 Bool) ($V274_X$1 Bool) ($V275_X$1 Bool) ($V276_X$1 Bool) ($~flatten0$1 Bool)) Bool (and (= $OK$1 (=> $V58_env_always_ok$1 $V59_prop_ok$1)) (= $V58_env_always_ok$1 (ite %init $V264_env_ok$1 (and $V264_env_ok$1 $V58_env_always_ok$0))) (= $V59_prop_ok$1 (and $V250_door_doesnt_open_out_of_station$1 $V251_door_opens_before_leaving_station$1)) (= $V250_door_doesnt_open_out_of_station$1 (=> $door_is_open$1 $in_station$1)) (= $V251_door_opens_before_leaving_station$1 (not (and $V253_between_A_and_X$1 (ite %init false (or $V252_X$1 (not $V252_X$0)))))) (= $V252_X$1 (not $in_station$1)) (= $V253_between_A_and_X$1 (ite (ite %init false (and $request_door$0 (not $warning_start$0))) true (ite (ite %init false $~flatten0$0) false (ite %init false $V253_between_A_and_X$0)))) (= $V264_env_ok$1 (and (and (and (and (and (and (and $V266_door_doesnt_open_if_not_asked$1 $V265_door_doesnt_close_if_not_asked$1) $V267_tramway_doesnt_start_if_not_door_ok$1) $V268_door_initially_closed$1) $V269_initially_not_in_station$1) $V270_warning_start_and_in_station_go_down_simultaneously$1) $V271_warning_start_only_in_station$1) $V272_warning_start_cant_become_true_when_door_is_opening$1)) (= $V265_door_doesnt_close_if_not_asked$1 (=> (ite %init false (or $door_is_open$1 (not $door_is_open$0))) $V60_open_door$1)) (= $V266_door_doesnt_open_if_not_asked$1 (=> (ite %init false (or $V273_X$1 (not $V273_X$0))) $V61_close_door$1)) (= $V267_tramway_doesnt_start_if_not_door_ok$1 (=> (ite %init false (or $V274_X$1 (not $V274_X$0))) (ite %init false $V62_door_ok$0))) (= $V268_door_initially_closed$1 (ite %init (not $door_is_open$1) true)) (= $V269_initially_not_in_station$1 (ite %init (not $in_station$1) true)) (= $V270_warning_start_and_in_station_go_down_simultaneously$1 (= (ite %init false (or $V275_X$1 (not $V275_X$0))) (ite %init false (or $V276_X$1 (not $V276_X$0))))) (= $V271_warning_start_only_in_station$1 (=> $warning_start$1 $in_station$1)) (= $V272_warning_start_cant_become_true_when_door_is_opening$1 (=> (ite %init false (or $warning_start$1 (not $warning_start$0))) (not $V60_open_door$1))) (= $V273_X$1 (not $door_is_open$1)) (= $V274_X$1 (not $in_station$1)) (= $V275_X$1 (not $in_station$1)) (= $V276_X$1 (not $warning_start$1)) (= $~flatten0$1 (ite %init false $door_is_open$0)))) +; Universally quantified variables +(declare-fun %init () Bool) +(declare-fun $request_door$~1 () Bool) +(declare-fun $warning_start$~1 () Bool) +(declare-fun $in_station$~1 () Bool) +(declare-fun $door_is_open$~1 () Bool) +(declare-fun $V60_open_door$~1 () Bool) +(declare-fun $V61_close_door$~1 () Bool) +(declare-fun $V62_door_ok$~1 () Bool) +(declare-fun $OK$~1 () Bool) +(declare-fun $V58_env_always_ok$~1 () Bool) +(declare-fun $V59_prop_ok$~1 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$~1 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$~1 () Bool) +(declare-fun $V252_X$~1 () Bool) +(declare-fun $V253_between_A_and_X$~1 () Bool) +(declare-fun $V264_env_ok$~1 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$~1 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$~1 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$~1 () Bool) +(declare-fun $V268_door_initially_closed$~1 () Bool) +(declare-fun $V269_initially_not_in_station$~1 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$~1 () Bool) +(declare-fun $V271_warning_start_only_in_station$~1 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$~1 () Bool) +(declare-fun $V273_X$~1 () Bool) +(declare-fun $V274_X$~1 () Bool) +(declare-fun $V275_X$~1 () Bool) +(declare-fun $V276_X$~1 () Bool) +(declare-fun $~flatten0$~1 () Bool) +(declare-fun $request_door$0 () Bool) +(declare-fun $warning_start$0 () Bool) +(declare-fun $in_station$0 () Bool) +(declare-fun $door_is_open$0 () Bool) +(declare-fun $V60_open_door$2 () Bool) +(declare-fun $V61_close_door$2 () Bool) +(declare-fun $V62_door_ok$2 () Bool) +(declare-fun $OK$2 () Bool) +(declare-fun $V58_env_always_ok$2 () Bool) +(declare-fun $V59_prop_ok$2 () Bool) +(declare-fun $V250_door_doesnt_open_out_of_station$2 () Bool) +(declare-fun $V251_door_opens_before_leaving_station$2 () Bool) +(declare-fun $V252_X$2 () Bool) +(declare-fun $V253_between_A_and_X$2 () Bool) +(declare-fun $V264_env_ok$2 () Bool) +(declare-fun $V265_door_doesnt_close_if_not_asked$2 () Bool) +(declare-fun $V266_door_doesnt_open_if_not_asked$2 () Bool) +(declare-fun $V267_tramway_doesnt_start_if_not_door_ok$2 () Bool) +(declare-fun $V268_door_initially_closed$2 () Bool) +(declare-fun $V269_initially_not_in_station$2 () Bool) +(declare-fun $V270_warning_start_and_in_station_go_down_simultaneously$2 () Bool) +(declare-fun $V271_warning_start_only_in_station$2 () Bool) +(declare-fun $V272_warning_start_cant_become_true_when_door_is_opening$2 () Bool) +(declare-fun $V273_X$2 () Bool) +(declare-fun $V274_X$2 () Bool) +(declare-fun $V275_X$2 () Bool) +(declare-fun $V276_X$2 () Bool) +(declare-fun $~flatten0$2 () Bool) +(assert (and (T %init $request_door$~1 $warning_start$~1 $in_station$~1 $door_is_open$~1 $V60_open_door$~1 $V61_close_door$~1 $V62_door_ok$~1 $OK$~1 $V58_env_always_ok$~1 $V59_prop_ok$~1 $V250_door_doesnt_open_out_of_station$~1 $V251_door_opens_before_leaving_station$~1 $V252_X$~1 $V253_between_A_and_X$~1 $V264_env_ok$~1 $V265_door_doesnt_close_if_not_asked$~1 $V266_door_doesnt_open_if_not_asked$~1 $V267_tramway_doesnt_start_if_not_door_ok$~1 $V268_door_initially_closed$~1 $V269_initially_not_in_station$~1 $V270_warning_start_and_in_station_go_down_simultaneously$~1 $V271_warning_start_only_in_station$~1 $V272_warning_start_cant_become_true_when_door_is_opening$~1 $V273_X$~1 $V274_X$~1 $V275_X$~1 $V276_X$~1 $~flatten0$~1 $request_door$0 $warning_start$0 $in_station$0 $door_is_open$0 $V60_open_door$2 $V61_close_door$2 $V62_door_ok$2 $OK$2 $V58_env_always_ok$2 $V59_prop_ok$2 $V250_door_doesnt_open_out_of_station$2 $V251_door_opens_before_leaving_station$2 $V252_X$2 $V253_between_A_and_X$2 $V264_env_ok$2 $V265_door_doesnt_close_if_not_asked$2 $V266_door_doesnt_open_if_not_asked$2 $V267_tramway_doesnt_start_if_not_door_ok$2 $V268_door_initially_closed$2 $V269_initially_not_in_station$2 $V270_warning_start_and_in_station_go_down_simultaneously$2 $V271_warning_start_only_in_station$2 $V272_warning_start_cant_become_true_when_door_is_opening$2 $V273_X$2 $V274_X$2 $V275_X$2 $V276_X$2 $~flatten0$2) $OK$2)) From 481476c0ef3c7b5816d43643d1c74717459cf5f6 Mon Sep 17 00:00:00 2001 From: Grigory Fedyukovich Date: Thu, 11 May 2017 23:59:14 +0200 Subject: [PATCH 02/40] more accurate Skolems --- include/ae/AeValSolver.hpp | 66 ++++++++++++++++++++++++++++++++++++-- include/ae/ExprSimpl.hpp | 9 +++--- include/ae/SMTUtils.hpp | 2 +- 3 files changed, 68 insertions(+), 9 deletions(-) diff --git a/include/ae/AeValSolver.hpp b/include/ae/AeValSolver.hpp index 19a0cb49f..17192415a 100644 --- a/include/ae/AeValSolver.hpp +++ b/include/ae/AeValSolver.hpp @@ -20,7 +20,7 @@ namespace ufo ExprSet v; // existentially quantified vars ExprVector stVars; - ExprVector tConjs; + ExprSet tConjs; ExprSet usedConjs; ExprMap defMap; ExprSet conflictVars; @@ -178,6 +178,39 @@ namespace ufo } } + /** + * tmp + */ + + void fillTmpDef(bool pos, Expr def, ExprMap& tmpDefMap, bool& addedDependants){ + /*if (bind::isBoolConst(def)){ + tmpDefMap[def] = pos ? mk(efac) : mk(efac); + addedDependants = true; + } else*/ if (isOpX(def) && pos){ + if (bind::isBoolConst(def->left()) || + bind::isIntConst(def->left()) || + bind::isRealConst(def->left())){ + tmpDefMap[def->left()] = def->right(); + addedDependants = true; + } + else if (bind::isBoolConst(def->right()) || + bind::isIntConst(def->right()) || + bind::isRealConst(def->right())){ + tmpDefMap[def->right()] = def->left(); + addedDependants = true; + } + } else if (isOpX(def)){ + fillTmpDef(!pos, def->left(), tmpDefMap, addedDependants); + } else if (isOpX(def)){ + ExprSet cnjs; + getConj(def, cnjs); + for (auto &c : cnjs) fillTmpDef (pos, c, tmpDefMap, addedDependants); + } + else { + outs() << "WARNING! unsupported: " << *def << "\n"; + } + } + /** * Global Skolem function from MBPs and local ones */ @@ -194,6 +227,29 @@ namespace ufo { ExprSet skoledvars; ExprMap substsMap; + ExprMap tmpDefMap; + + // do booleans first + for (auto &exp: v) { + if (!bind::isBoolConst(exp)) continue; + + bool addedDependants = false; + + Expr exp2 = someEvals[i][exp]; + + if (defMap[exp] != NULL && exp2 != NULL) { + Expr def = defMap[exp]; + + if (isOpX(exp2->right())) { + fillTmpDef(true, def, tmpDefMap, addedDependants); + } else if (isOpX(exp2->right())) { + fillTmpDef(false, def, tmpDefMap, addedDependants); + } + } + + if (addedDependants) tmpDefMap[exp] = exp2->right(); + } + for (auto &exp: v) { Expr exp2 = skolMaps[i][exp]; @@ -203,6 +259,10 @@ namespace ufo // GF: todo simplif (?) exp2 = getAssignmentForVar(exp, exp2); } + else if (tmpDefMap[exp] != NULL) + { + exp2 = tmpDefMap[exp]; + } else if (defMap[exp] != NULL) { // GF: todo simplif (?) @@ -217,7 +277,7 @@ namespace ufo exp2 = getDefaultAssignment(exp); } - if (debug) outs() << "compiling skolem [pt1]: " << *exp << " -- > " << *exp2 << "\n"; +// if (debug) outs() << "compiling skolem [pt1]: " << *exp << " --> " << *exp2 << "\n"; substsMap[exp] = exp2; } @@ -229,7 +289,7 @@ namespace ufo for (auto &exp: v) { refreshMapEntry(substsMap, exp); cnjs.push_back(mk(exp, substsMap[exp])); - if (debug) outs() << "compiling skolem [pt2]: " << *exp << " <-----> " << *substsMap[exp]<<"\n"; +// if (debug) outs() << "compiling skolem [pt2]: " << *exp << " <-----> " << *substsMap[exp]<<"\n"; } instantiations.push_back(conjoin(cnjs, efac)); diff --git a/include/ae/ExprSimpl.hpp b/include/ae/ExprSimpl.hpp index d237f08c4..9ca03ba4b 100644 --- a/include/ae/ExprSimpl.hpp +++ b/include/ae/ExprSimpl.hpp @@ -758,7 +758,7 @@ namespace ufo return true; } - inline static void getConj (Expr a, ExprVector &conjs) + inline static void getConj (Expr a, ExprSet &conjs) { if (isOpX(a)) return; if (isOpX(a)){ @@ -766,8 +766,7 @@ namespace ufo getConj(a->arg(i), conjs); } } else { - if(find(conjs.begin(), conjs.end(), a) == conjs.end()) - conjs.push_back(a); + conjs.insert(a); } } @@ -784,12 +783,12 @@ namespace ufo } inline static Expr simplifiedAnd (Expr a, Expr b){ - ExprVector conjs; + ExprSet conjs; getConj(a, conjs); getConj(b, conjs); return (conjs.size() == 0) ? mk(a->getFactory()) : - (conjs.size() == 1) ? conjs[0] : + (conjs.size() == 1) ? *(conjs.begin()) : mknary(conjs); } diff --git a/include/ae/SMTUtils.hpp b/include/ae/SMTUtils.hpp index f3ea498d2..329377046 100644 --- a/include/ae/SMTUtils.hpp +++ b/include/ae/SMTUtils.hpp @@ -143,7 +143,7 @@ namespace ufo Expr removeRedundantConjuncts(Expr exp) { ExprSet newCnjs; - ExprVector conjs; + ExprSet conjs; getConj(exp, conjs); if (conjs.size() < 2) return exp; From c7faf95d0235503afbbd76c0f9cb2f13a540d7cf Mon Sep 17 00:00:00 2001 From: Grigory Fedyukovich Date: Sat, 27 May 2017 10:54:27 -0700 Subject: [PATCH 03/40] optimizing symbolic max / min --- include/ae/AeValSolver.hpp | 230 ++++++++++++++++++------------------- 1 file changed, 110 insertions(+), 120 deletions(-) diff --git a/include/ae/AeValSolver.hpp b/include/ae/AeValSolver.hpp index 17192415a..fcb1ebe35 100644 --- a/include/ae/AeValSolver.hpp +++ b/include/ae/AeValSolver.hpp @@ -9,7 +9,7 @@ using namespace std; using namespace boost; namespace ufo { - + /** engine to solve validity of \forall-\exists formulas and synthesize Skolem relation */ class AeValSolver { @@ -90,7 +90,7 @@ namespace ufo outs() << "."; outs().flush (); ZSolver::Model m = smt.getModel(); - + if (debug && false) { outs() << "\nmodel " << partitioning_size << ":\n"; @@ -103,11 +103,11 @@ namespace ufo } getMBPandSkolem(m); - + smt.pop(); smt.assertExpr(boolop::lneg(projections[partitioning_size++])); if (!smt.solve()) { res = false; break; } - + smt.push(); smt.assertExpr (t); } @@ -149,9 +149,9 @@ namespace ufo for (auto &e: map){ Expr ef = e.first; Expr es = e.second; - + if (debug) outs() << "subst: " << *ef << " <--> " << *es << "\n"; - + if (isOpX(es)){ substs.insert(ineqNegReverter(ef)); } else if (isOpX(es)){ @@ -178,7 +178,7 @@ namespace ufo } } - /** + /** * tmp */ @@ -239,21 +239,21 @@ namespace ufo if (defMap[exp] != NULL && exp2 != NULL) { Expr def = defMap[exp]; - + if (isOpX(exp2->right())) { fillTmpDef(true, def, tmpDefMap, addedDependants); } else if (isOpX(exp2->right())) { fillTmpDef(false, def, tmpDefMap, addedDependants); } - } + } if (addedDependants) tmpDefMap[exp] = exp2->right(); } for (auto &exp: v) { - + Expr exp2 = skolMaps[i][exp]; - + if (exp2 != NULL) { // GF: todo simplif (?) @@ -276,22 +276,22 @@ namespace ufo { exp2 = getDefaultAssignment(exp); } - -// if (debug) outs() << "compiling skolem [pt1]: " << *exp << " --> " << *exp2 << "\n"; - + + // if (debug) outs() << "compiling skolem [pt1]: " << *exp << " --> " << *exp2 << "\n"; + substsMap[exp] = exp2; } - + // get rid of inter-dependencies cascadically: - + ExprVector cnjs; - + for (auto &exp: v) { refreshMapEntry(substsMap, exp); cnjs.push_back(mk(exp, substsMap[exp])); -// if (debug) outs() << "compiling skolem [pt2]: " << *exp << " <-----> " << *substsMap[exp]<<"\n"; + // if (debug) outs() << "compiling skolem [pt2]: " << *exp << " <-----> " << *substsMap[exp]<<"\n"; } - + instantiations.push_back(conjoin(cnjs, efac)); if (debug) outs() << "Sanity check [" < (s,mk (projections[i], instantiations[i])), t) << "\n"; } @@ -304,7 +304,7 @@ namespace ufo Expr skol = simplifiedAnd(skolSkope, sk); - if (true) outs() << "Sanity check: " << u.isImplies(mk(s, skol), t) << "\n"; + if (debug) outs() << "Sanity check: " << u.isImplies(mk(s, skol), t) << "\n"; return skol; } @@ -331,7 +331,7 @@ namespace ufo // get equality (unique per variable) if (std::find(std::begin(usedConjs), std::end (usedConjs), cnj) != std::end(usedConjs)) continue; - + if (isOpX(cnj) ) { if (var == cnj->left()) @@ -354,23 +354,24 @@ namespace ufo /** * Self explanatory */ - void GetSymbolicMax(ExprVector vec, Expr& curMax) + void GetSymbolicMax(ExprSet& vec, Expr& curMax, bool isInt) { - curMax = vec[0]; - for (int i = 1; i < vec.size(); i++){ - if (u.isEquiv(mk(curMax, vec[i]), mk(efac))){ - curMax = vec[i]; - } else if (u.isEquiv(mk(curMax, vec[i]), mk(efac))){ + curMax = *vec.begin(); + for (auto it = vec.begin(); ++it != vec.end(); ){ + auto &a = *it; + if (u.isEquiv(mk(curMax, a), mk(efac))){ + curMax = a; + } else if (u.isEquiv(mk(curMax, a), mk(efac))){ // curMax is OK } else { string ind = lexical_cast (fresh_var_ind++); - string varName = "_aeval_tmp_max_" + ind; - Expr realVarName = mkTerm (varName, efac); - Expr realVar = bind::realConst(realVarName); - + + Expr varName = mkTerm ("_aeval_tmp_max_" + ind, efac); + Expr var = isInt ? bind::intConst(varName) : bind::realConst(varName); + skolSkope = simplifiedAnd(skolSkope, - mk(realVar, mk(mk(curMax, vec[i]), vec[i], curMax))); - curMax = realVar; + mk(var, mk(mk(curMax, a), a, curMax))); + curMax = var; } } } @@ -378,23 +379,24 @@ namespace ufo /** * Self explanatory */ - void GetSymbolicMin(ExprVector vec, Expr& curMin) + void GetSymbolicMin(ExprSet& vec, Expr& curMin, bool isInt) { - curMin = vec[0]; - for (int i = 1; i < vec.size(); i++){ - if (u.isEquiv(mk(curMin, vec[i]), mk(efac))){ - curMin = vec[i]; - } else if (u.isEquiv(mk(curMin, vec[i]), mk(efac))){ + curMin = *vec.begin(); + for (auto it = vec.begin(); ++it != vec.end(); ){ + auto &a = *it; + if (u.isEquiv(mk(curMin, a), mk(efac))){ + curMin = a; + } else if (u.isEquiv(mk(curMin, a), mk(efac))){ // curMin is OK } else { - Expr eqRhs; string ind = lexical_cast (fresh_var_ind++); - string varName = "_aeval_tmp_min_" + ind; - Expr realVarName = mkTerm (varName, efac); - Expr realVar = bind::realConst(realVarName); - eqRhs = mk(mk(curMin, vec[i]), vec[i], curMin); - skolSkope = simplifiedAnd(skolSkope, mk(realVar, eqRhs)); - curMin = realVar; + + Expr varName = mkTerm ("_aeval_tmp_min_" + ind, efac); + Expr var = isInt ? bind::intConst(varName) : bind::realConst(varName); + + skolSkope = simplifiedAnd(skolSkope, + mk(var, mk(mk(curMin, a), a, curMin))); + curMin = var; } } } @@ -402,24 +404,24 @@ namespace ufo /** * Weird thing, never happens in the experiments */ - void GetSymbolicNeg(ExprVector vec, Expr& lower, Expr& upper, Expr& candidate) + void GetSymbolicNeg(ExprSet& vec, Expr& lower, Expr& upper, Expr& candidate, bool isInt) { // TODO: maybe buggy in LIA, due to a naive shrinking of the segment; - for (int i = 0; i < vec.size(); i++){ - - ExprVector forLower; - forLower.push_back(lower); - forLower.push_back(vec[i]); + for (auto &a : vec){ + + ExprSet forLower; + forLower.insert(lower); + forLower.insert(a); Expr updLower; - GetSymbolicMax(forLower, updLower); - - ExprVector forUpper; - forUpper.push_back(upper); - forUpper.push_back(vec[i]); + GetSymbolicMax(forLower, updLower, isInt); + + ExprSet forUpper; + forUpper.insert(upper); + forUpper.insert(a); Expr updUpper; - GetSymbolicMin(forUpper, updUpper); - + GetSymbolicMin(forUpper, updUpper, isInt); + // TODO: do optimizations // first, try to see if there are any concrete values for updLower and updUpper @@ -430,25 +432,9 @@ namespace ufo // second, force the symbolic value for upper upper = mk (mk(updLower, updUpper), updUpper, upper); } - - candidate = mk
(mk(lower, upper), mkTerm (mpq_class (2), efac)); - } - } - - /** - * Aux - */ - void pushVecRedund(ExprVector& vec, Expr a) - { - bool tmp = true; - for (auto& b: vec){ - if (a == b) { - tmp = false; - } else if (lexical_cast(a) == lexical_cast(b)){ - tmp = false; - } + + candidate = mk
(mk(lower, upper), mkTerm (mpz_class (2), efac)); } - if (tmp) vec.push_back(a); } /** @@ -489,9 +475,9 @@ namespace ufo if (!bind::isBoolConst(var) && var != exp->left()) exp = ineqReverter(ineqMover(exp, var)); // TODO: write a similar simplifier fo booleans - + assert (var == exp->left()); - + if (isOpX(exp) || isOpX(exp) || isOpX(exp)){ if (exp->left() == exp->right()) return getDefaultAssignment(var); return exp->right(); @@ -510,84 +496,88 @@ namespace ufo } } else if (isOpX(exp)){ - + exp = u.numericUnderapprox(exp); // try to see if there are only numerals if (isOpX(exp)) return exp->right(); - + bool incomplete = false; - + // split constraints - - ExprVector conjLT; - ExprVector conjGT; - ExprVector conjNEG; - ExprVector conjEG; + + ExprSet conjLT; + ExprSet conjGT; + ExprSet conjNEG; + ExprSet conjEG; for (auto it = exp->args_begin(), end = exp->args_end(); it != end; ++it){ if (isOpX(*it)){ if (var == (*it)->left()) { - pushVecRedund(conjEG, (*it)->right()); + conjEG.insert((*it)->right()); } else { incomplete = true; } } else if (isOpX(*it) || isOpX(*it)){ if (var == (*it)->left()) { - pushVecRedund(conjLT, (*it)->right()); + conjLT.insert((*it)->right()); + } else if (var == (*it)->right()) { + conjGT.insert((*it)->left()); } else { incomplete = true; } } else if (isOpX(*it) || isOpX(*it)){ if (var == (*it)->left()) { - pushVecRedund(conjGT, (*it)->right()); + conjGT.insert((*it)->right()); + } else if (var == (*it)->right()) { + conjLT.insert((*it)->left()); } else { incomplete = true; } } else if (isOpX(*it)){ Expr negated = (*it)->left(); - + if (isOpX(negated)){ - + if (var == negated->left()) { - pushVecRedund(conjNEG, negated->right()); + conjNEG.insert(negated->right()); } else { incomplete = true; } } } } - + // get the assignment (if exists) - + if (conjEG.size() > 0) return *(conjEG.begin()); // GF: maybe try to find the best of them - + if (incomplete) outs() << "WARNING: Some Skolem constraints unsupported\n"; - + // get symbolic max and min - + Expr extraDefsMax = mk(efac); Expr curMax; if (conjGT.size() > 1){ - GetSymbolicMax(conjGT, curMax); + GetSymbolicMax(conjGT, curMax, isInt); } else if (conjGT.size() == 1){ - curMax = conjGT[0]; + curMax = *(conjGT.begin()); } - + Expr extraDefsMin = mk(efac); Expr curMin; - + if (conjLT.size() > 1){ - GetSymbolicMin(conjLT, curMin); + GetSymbolicMin(conjLT, curMin, isInt); } else if (conjLT.size() == 1){ - curMin = conjLT[0]; + curMin = *(conjLT.begin()); } - + // get value in the middle of max and min - + if (conjNEG.size() == 0){ if (conjLT.size() > 0 && conjGT.size() > 0){ - return mk
(mk(curMin, curMax), mkTerm (mpq_class (2), efac)); + return mk
(mk(curMin, curMax), mkTerm (mpz_class (2), efac)); } else { if (conjLT.size() == 0){ return getPlusConst (curMax, isInt, 1); @@ -596,29 +586,29 @@ namespace ufo } } } - + // here and later, we get conjNEG.size() > 0 - + if (conjLT.size() > 0 && conjGT.size() == 0) { - conjNEG.push_back(curMin); - GetSymbolicMin(conjNEG, curMin); + conjNEG.insert(curMin); + GetSymbolicMin(conjNEG, curMin, isInt); return getPlusConst (curMin, isInt, -1); } - + if (conjLT.size() == 0 && conjGT.size() > 0) { - conjNEG.push_back(curMax); - GetSymbolicMax(conjNEG, curMax); + conjNEG.insert(curMax); + GetSymbolicMax(conjNEG, curMax, isInt); return getPlusConst (curMax, isInt, 1); } - + if (conjLT.size() == 0 && conjGT.size() == 0) { - GetSymbolicMax(conjNEG, curMax); + GetSymbolicMax(conjNEG, curMax, isInt); return getPlusConst (curMax, isInt, 1); } - + // now, both conjLT and conjGT are non-empty Expr curMid; - GetSymbolicNeg(conjNEG, curMax, curMin, curMid); + GetSymbolicNeg(conjNEG, curMax, curMin, curMid, isInt); return curMid; } return exp; @@ -631,7 +621,7 @@ namespace ufo { Expr entr = m[var]; if (entr == NULL) return false; - + ExprSet all; filter (entr, bind::IsConst (), inserter (all, all.begin())); @@ -656,7 +646,7 @@ namespace ufo entr = defMap[var]; conflictVars.erase(var); } - + if (entr == NULL) return; if (conflictVars.empty() && findCycles(m, var, var, 1)) From 3520f4ff0e42e2341ad99b9390fd6e08c2c6ebd7 Mon Sep 17 00:00:00 2001 From: Grigory Fedyukovich Date: Fri, 2 Jun 2017 01:49:59 -0700 Subject: [PATCH 04/40] fixed Skolems for some pathological cases --- include/ae/AeValSolver.hpp | 106 ++++++++++++++++++++++++++----------- include/ae/ExprSimpl.hpp | 12 +++++ include/ae/SMTUtils.hpp | 11 ++-- 3 files changed, 90 insertions(+), 39 deletions(-) diff --git a/include/ae/AeValSolver.hpp b/include/ae/AeValSolver.hpp index fcb1ebe35..f43bd156e 100644 --- a/include/ae/AeValSolver.hpp +++ b/include/ae/AeValSolver.hpp @@ -57,7 +57,7 @@ namespace ufo getConj(t, tConjs); for (auto &exp: v) { Expr definition = getDefinitionFormulaFromT(exp); - defMap[exp] = definition; + if (definition != NULL) defMap[exp] = u.simplifyITE(definition); } } @@ -182,35 +182,78 @@ namespace ufo * tmp */ - void fillTmpDef(bool pos, Expr def, ExprMap& tmpDefMap, bool& addedDependants){ - /*if (bind::isBoolConst(def)){ - tmpDefMap[def] = pos ? mk(efac) : mk(efac); - addedDependants = true; - } else*/ if (isOpX(def) && pos){ - if (bind::isBoolConst(def->left()) || - bind::isIntConst(def->left()) || - bind::isRealConst(def->left())){ - tmpDefMap[def->left()] = def->right(); - addedDependants = true; - } - else if (bind::isBoolConst(def->right()) || - bind::isIntConst(def->right()) || - bind::isRealConst(def->right())){ - tmpDefMap[def->right()] = def->left(); - addedDependants = true; + void fillTmpDef(ExprMap& eval, bool pos, Expr def, ExprMap& tmpDefMap){ + + if (isOpX(def)){ + + Expr l = def->left(); + Expr r = def->right(); + + bool hl = find(std::begin(v), std::end (v), l) != std::end(v); + bool hr = find(std::begin(v), std::end (v), r) != std::end(v); + + if (pos){ + + if (hl && (bind::isBoolConst(l) || bind::isIntConst(l) || bind::isRealConst(l))){ + tmpDefMap[l] = r; + } + if (hr && (bind::isBoolConst(r) || bind::isIntConst(r) || bind::isRealConst(r))){ + tmpDefMap[r] = l; + } + if (hl && isOpX(l) && bind::isBoolConst(l->left())){ + tmpDefMap[l->left()] = mk(r); + } + if (hr && isOpX(r) && bind::isBoolConst(r->left())){ + tmpDefMap[r->left()] = mk(l); + } + + } else { + + if (hl && bind::isBoolConst(l)){ + tmpDefMap[l] = mk(r); + } + if (hr && bind::isBoolConst(r)){ + tmpDefMap[r] = mk(l); + } + if (hl && isOpX(l) && bind::isBoolConst(l->left())){ + tmpDefMap[l->left()] = r; + } + if (hr && isOpX(r) && bind::isBoolConst(r->left())){ + tmpDefMap[r->left()] = l; + } } + } else if (isOpX(def)){ - fillTmpDef(!pos, def->left(), tmpDefMap, addedDependants); + + fillTmpDef(eval, !pos, def->left(), tmpDefMap); + + } else if (isOpX(def)){ + + fillTmpDef(eval, pos, mk(def->arg(0), def->arg(1)), tmpDefMap); + fillTmpDef(eval, pos, mk(mk(def->arg(0)), def->arg(2)), tmpDefMap); + + } else if (isOpX(def)){ + + if (pos)fillTmpDef(eval, pos, mk(mk(def->left()), def->right()), tmpDefMap); + } else if (isOpX(def)){ + ExprSet cnjs; getConj(def, cnjs); - for (auto &c : cnjs) fillTmpDef (pos, c, tmpDefMap, addedDependants); + if (pos) for (auto &c : cnjs) fillTmpDef (eval, pos, c, tmpDefMap); + + } else if (isOpX(def)){ + + ExprSet dsjs; + getDisj(def, dsjs); + if (!pos) for (auto &c : dsjs) fillTmpDef (eval, pos, c, tmpDefMap); + } else { - outs() << "WARNING! unsupported: " << *def << "\n"; + if (debug) outs() << "WARNING! unsupported: " << *def << "\n"; } } - + /** * Global Skolem function from MBPs and local ones */ @@ -233,21 +276,21 @@ namespace ufo for (auto &exp: v) { if (!bind::isBoolConst(exp)) continue; - bool addedDependants = false; - + int curSz = tmpDefMap.size(); Expr exp2 = someEvals[i][exp]; if (defMap[exp] != NULL && exp2 != NULL) { + Expr def = defMap[exp]; - + if (isOpX(exp2->right())) { - fillTmpDef(true, def, tmpDefMap, addedDependants); + fillTmpDef(someEvals[i], true, def, tmpDefMap); } else if (isOpX(exp2->right())) { - fillTmpDef(false, def, tmpDefMap, addedDependants); + fillTmpDef(someEvals[i], false, def, tmpDefMap); } } - if (addedDependants) tmpDefMap[exp] = exp2->right(); + if (tmpDefMap.size() > curSz) tmpDefMap[exp] = exp2->right(); } for (auto &exp: v) { @@ -277,7 +320,7 @@ namespace ufo exp2 = getDefaultAssignment(exp); } - // if (debug) outs() << "compiling skolem [pt1]: " << *exp << " --> " << *exp2 << "\n"; + if (debug) outs() << "compiling skolem [pt1]: " << *exp << " --> " << *exp2 << "\n"; substsMap[exp] = exp2; } @@ -289,11 +332,12 @@ namespace ufo for (auto &exp: v) { refreshMapEntry(substsMap, exp); cnjs.push_back(mk(exp, substsMap[exp])); - // if (debug) outs() << "compiling skolem [pt2]: " << *exp << " <-----> " << *substsMap[exp]<<"\n"; } instantiations.push_back(conjoin(cnjs, efac)); - if (debug) outs() << "Sanity check [" < (s,mk (projections[i], instantiations[i])), t) << "\n"; + + if (debug) outs() << "Sanity check [" << i << "]: " << u.isImplies(mk (s, mk (projections[i], instantiations[i])), t) << "\n"; + } Expr sk = mk(efac); @@ -332,7 +376,7 @@ namespace ufo if (std::find(std::begin(usedConjs), std::end (usedConjs), cnj) != std::end(usedConjs)) continue; - if (isOpX(cnj) ) + if (isOpX(cnj)) { if (var == cnj->left()) { diff --git a/include/ae/ExprSimpl.hpp b/include/ae/ExprSimpl.hpp index 9ca03ba4b..645b9f125 100644 --- a/include/ae/ExprSimpl.hpp +++ b/include/ae/ExprSimpl.hpp @@ -770,6 +770,18 @@ namespace ufo } } + inline static void getDisj (Expr a, ExprSet &disjs) + { + if (isOpX(a)) return; + if (isOpX(a)){ + for (unsigned i = 0; i < a->arity(); i++){ + getDisj(a->arg(i), disjs); + } + } else { + disjs.insert(a); + } + } + /** * To rem */ diff --git a/include/ae/SMTUtils.hpp b/include/ae/SMTUtils.hpp index 329377046..e1cbb1577 100644 --- a/include/ae/SMTUtils.hpp +++ b/include/ae/SMTUtils.hpp @@ -84,16 +84,11 @@ namespace ufo Expr br1 = ex->arg(1); Expr br2 = ex->arg(2); - Expr updCond1 = mk(upLevelCond, mk(cond)); - Expr updCond2 = mk(mk(upLevelCond), cond); - - if (!isSat(updCond1)) return br1; - - if (!isSat(updCond2)) return br2; + if (!isSat(upLevelCond)) return simplifyITE(br1, mk(efac)); return mk(cond, - simplifyITE(br1, updCond1), - simplifyITE(br2, updCond2)); + simplifyITE(br1, mk(upLevelCond, cond)), + simplifyITE(br2, mk(upLevelCond, mk(cond)))); } else { return ex; } From 2074488543220e2b35ce3f8ef420695f3733ed48 Mon Sep 17 00:00:00 2001 From: Grigory Fedyukovich Date: Sat, 24 Jun 2017 14:52:40 -0400 Subject: [PATCH 05/40] supported "merging" local skolems and some other corner cases --- include/ae/AeValSolver.hpp | 126 ++++++++++++++++---------------- include/ae/ExprSimpl.hpp | 145 ++++++++++++++++++++++++++++++------- 2 files changed, 180 insertions(+), 91 deletions(-) diff --git a/include/ae/AeValSolver.hpp b/include/ae/AeValSolver.hpp index f43bd156e..a7a5be9c2 100644 --- a/include/ae/AeValSolver.hpp +++ b/include/ae/AeValSolver.hpp @@ -133,6 +133,8 @@ namespace ufo getLocalSkolems(m, exp, map, substsMap, modelMap, pr); } + if (debug) assert(emptyIntersect(pr, v)); + someEvals.push_back(modelMap); skolMaps.push_back(substsMap); projections.push_back(pr); @@ -161,18 +163,24 @@ namespace ufo ef = ineqNegReverter(mk(ef)); } substs.insert(ef); + } else if (es == mbp) { + substs.insert(ineqNegReverter(ef)); + } else if (!(isOp(ef) && isOp(es)) && + !(isOp(ef) && isOp(es)) && + !(isOp(ef) && isOp(es)) && + !(isOp(ef) && isOp(es))){ + substs.insert(mk(ineqNegReverter(ef), ineqNegReverter(es))); } else { - if (es == mbp) substs.insert(ineqNegReverter(ef)); - else if (!(isOp(ef) && isOp(es)) && - !(isOp(ef) && isOp(es))){ - substs.insert(mk(ineqNegReverter(ef), ineqNegReverter(es))); + Expr mergedSides = mergeIneqs(ef, es); + if (mergedSides != NULL) { + substs.insert(mergedSides); } } } if (substs.size() == 0) outs() << "WARNING: subst is empty for " << *exp << "\n"; substsMap[exp] = conjoin(substs, efac); - } - else if (m.eval(exp) != exp){ + + } else if (m.eval(exp) != exp){ if (debug) outs () << "model: " << *exp << " <--> " << *m.eval(exp) << "\n"; modelMap[exp] = mk(exp, m.eval(exp)); } @@ -223,9 +231,13 @@ namespace ufo } } + } else if (isOpX(def)){ + + if (pos) fillTmpDef(eval, !pos, mk(def->left(), def->right()), tmpDefMap); + } else if (isOpX(def)){ - fillTmpDef(eval, !pos, def->left(), tmpDefMap); + if (pos) fillTmpDef(eval, !pos, def->left(), tmpDefMap); } else if (isOpX(def)){ @@ -234,7 +246,7 @@ namespace ufo } else if (isOpX(def)){ - if (pos)fillTmpDef(eval, pos, mk(mk(def->left()), def->right()), tmpDefMap); + if (pos) fillTmpDef(eval, pos, mk(mk(def->left()), def->right()), tmpDefMap); } else if (isOpX(def)){ @@ -271,6 +283,7 @@ namespace ufo ExprSet skoledvars; ExprMap substsMap; ExprMap tmpDefMap; + ExprMap depMap; // do booleans first for (auto &exp: v) { @@ -290,35 +303,20 @@ namespace ufo } } - if (tmpDefMap.size() > curSz) tmpDefMap[exp] = exp2->right(); + if (tmpDefMap.size() > curSz) defMap[exp] = exp2->right(); } for (auto &exp: v) { Expr exp2 = skolMaps[i][exp]; + if (exp2 != NULL) { exp2 = getAssignmentForVar(exp, exp2); } + if (exp2 == NULL) { exp2 = depMap[exp]; } + if (exp2 == NULL) { exp2 = tmpDefMap[exp]; } + if (exp2 == NULL) { exp2 = defMap[exp]; } - if (exp2 != NULL) - { - // GF: todo simplif (?) - exp2 = getAssignmentForVar(exp, exp2); - } - else if (tmpDefMap[exp] != NULL) - { - exp2 = tmpDefMap[exp]; - } - else if (defMap[exp] != NULL) - { - // GF: todo simplif (?) - exp2 = defMap[exp]; - } - else if (someEvals[i][exp] != NULL) - { - exp2 = someEvals[i][exp]->right(); - } - else - { - exp2 = getDefaultAssignment(exp); - } + Expr exp3 = someEvals[i][exp]; + if (exp2 == NULL && exp3 != NULL) { exp2 = exp3->right(); } + if (exp2 == NULL) { exp2 = getDefaultAssignment(exp); } if (debug) outs() << "compiling skolem [pt1]: " << *exp << " --> " << *exp2 << "\n"; @@ -336,7 +334,8 @@ namespace ufo instantiations.push_back(conjoin(cnjs, efac)); - if (debug) outs() << "Sanity check [" << i << "]: " << u.isImplies(mk (s, mk (projections[i], instantiations[i])), t) << "\n"; + if (debug) outs() << "Sanity check [" << i << "]: " << u.isImplies(mk + (mk(s, skolSkope), mk (projections[i], instantiations[i])), t) << "\n"; } Expr sk = mk(efac); @@ -532,6 +531,9 @@ namespace ufo else if (isOpX(exp)){ return getPlusConst (exp->right(), isInt, 1); } + else if (isOpX(exp)){ + return getPlusConst (exp->right(), isInt, 1); + } else assert(0); } else if (isOpX(exp)){ @@ -554,40 +556,44 @@ namespace ufo ExprSet conjNEG; ExprSet conjEG; for (auto it = exp->args_begin(), end = exp->args_end(); it != end; ++it){ - if (isOpX(*it)){ - if (var == (*it)->left()) { - conjEG.insert((*it)->right()); + Expr cnj = *it; + + // GF: little hack; TODO: make a proper rewriter + if (isOpX(cnj) && isOpX(cnj->left())) { + cnj = mk(cnj->left()->left(), cnj->left()->right()); + } + + cnj = ineqReverter(ineqMover(cnj, var)); + + if (isOpX(cnj)){ + if (var == cnj->left()) { + conjEG.insert(cnj->right()); } else { incomplete = true; } } - else if (isOpX(*it) || isOpX(*it)){ - if (var == (*it)->left()) { - conjLT.insert((*it)->right()); - } else if (var == (*it)->right()) { - conjGT.insert((*it)->left()); + else if (isOpX(cnj) || isOpX(cnj)){ + if (var == cnj->left()) { + conjLT.insert(cnj->right()); + } else if (var == cnj->right()) { + conjGT.insert(cnj->left()); } else { incomplete = true; } } - else if (isOpX(*it) || isOpX(*it)){ - if (var == (*it)->left()) { - conjGT.insert((*it)->right()); - } else if (var == (*it)->right()) { - conjLT.insert((*it)->left()); + else if (isOpX(cnj) || isOpX(cnj)){ + if (var == cnj->left()) { + conjGT.insert(cnj->right()); + } else if (var == cnj->right()) { + conjLT.insert(cnj->left()); } else { incomplete = true; } - } else if (isOpX(*it)){ - Expr negated = (*it)->left(); - - if (isOpX(negated)){ - - if (var == negated->left()) { - conjNEG.insert(negated->right()); - } else { - incomplete = true; - } + } else if (isOpX(cnj)){ + if (var == cnj->left()) { + conjNEG.insert(cnj->right()); + } else { + incomplete = true; } } } @@ -596,7 +602,7 @@ namespace ufo if (conjEG.size() > 0) return *(conjEG.begin()); // GF: maybe try to find the best of them - if (incomplete) outs() << "WARNING: Some Skolem constraints unsupported\n"; + if (incomplete && debug) outs() << "WARNING: Some Skolem constraints unsupported\n"; // get symbolic max and min @@ -610,7 +616,6 @@ namespace ufo Expr extraDefsMin = mk(efac); Expr curMin; - if (conjLT.size() > 1){ GetSymbolicMin(conjLT, curMin, isInt); } else if (conjLT.size() == 1){ @@ -631,7 +636,7 @@ namespace ufo } } - // here and later, we get conjNEG.size() > 0 + // here conjNEG.size() > 0 if (conjLT.size() > 0 && conjGT.size() == 0) { conjNEG.insert(curMin); @@ -645,11 +650,6 @@ namespace ufo return getPlusConst (curMax, isInt, 1); } - if (conjLT.size() == 0 && conjGT.size() == 0) { - GetSymbolicMax(conjNEG, curMax, isInt); - return getPlusConst (curMax, isInt, 1); - } - // now, both conjLT and conjGT are non-empty Expr curMid; GetSymbolicNeg(conjNEG, curMax, curMin, curMid, isInt); diff --git a/include/ae/ExprSimpl.hpp b/include/ae/ExprSimpl.hpp index 645b9f125..351a52f7f 100644 --- a/include/ae/ExprSimpl.hpp +++ b/include/ae/ExprSimpl.hpp @@ -78,12 +78,27 @@ namespace ufo * Self explanatory */ inline static Expr additiveInverse(Expr e){ - if (isOpX(e)){ + + if (isOpX(e)){ + return e->left(); + } + else if (isOpX(e)){ + int val = lexical_cast(e); + return mkTerm (mpq_class (-val), e->getFactory()); + } + else if (isOpX(e)){ + int val = lexical_cast(e); + return mkTerm (mpz_class (-val), e->getFactory()); + } + else if (isOpX(e)){ if (lexical_cast(e->left()) == "-1"){ return e->right(); + } else if (e->arity() == 2) { + Expr c = additiveInverse(e->left()); + return mk(c, e->right()); } } - return mk(mkTerm (mpz_class (-1), e->getFactory()), e); + return mk(mkTerm (mpq_class (-1), e->getFactory()), e); } /** @@ -121,20 +136,11 @@ namespace ufo */ template static Expr rewriteHelperN(Expr e){ assert(e->arity() == 2); - Expr minus_one = mkTerm (mpz_class (-1), e->getFactory()); - - Expr l = multZero(e->left(), minus_one); - Expr r = multZero(exprDistributor(e->right()), minus_one); - if (!isOpX(r)) - r = mk(minus_one, mk(minus_one,r)); // a bit of hack - - if (isOpX(l) && isOpX(r)){ - if (lexical_cast(l->left()) == "-1" && - lexical_cast(r->left()) == "-1" ){ - return mk(l->right(), r->right()); - } - } - return e; + if (!isOpX(e->left()) && + !(isOpX(e->left()) && + lexical_cast(e->left()->left()) == "-1") ) return e; + + return mk(additiveInverse(e->left()), additiveInverse(exprDistributor(e->right()))); } /** @@ -157,6 +163,14 @@ namespace ufo } rhs.insert(additiveInverse(a)); } + } else if (isOpX(l)){ + if (IsConstOrItsAdditiveInverse(l->left(), var)){ + lhs = l->left(); + rhs.insert(additiveInverse(l->right())); + } else if (IsConstOrItsAdditiveInverse(l->right(), var)){ + lhs = l->right(); + rhs.insert(additiveInverse(l->left())); + } } else { if (IsConstOrItsAdditiveInverse(l, var)){ lhs = l; @@ -314,6 +328,8 @@ namespace ufo return rewriteHelperN(e); } else if (isOpX(e)){ return rewriteHelperN(e); + } else if (isOpX(e)){ + return rewriteHelperN(e); } return e; } @@ -329,6 +345,10 @@ namespace ufo return mk(e->arg(0), e->arg(1)); } else if (isOpX(e)){ return mk(e->arg(0), e->arg(1)); + } else if (isOpX(e)){ + return mk(e->arg(0), e->arg(1)); + } else if (isOpX(e)){ + return mk(e->arg(0), e->arg(1)); } } return a; @@ -354,6 +374,8 @@ namespace ufo return rewriteHelperM(e, var); } else if (isOpX(e)){ return rewriteHelperM(e, var); + } else if (isOpX(e)){ + return rewriteHelperM(e, var); } return e; } @@ -468,17 +490,19 @@ namespace ufo }; inline static Expr simplifiedPlus (Expr exp, Expr to_skip){ - ExprVector args; - Expr ret; + bool f = false; for (ENode::args_iterator it = exp->args_begin(), end = exp->args_end(); it != end; ++it){ - Expr a = *it; - if (a != to_skip) { - args.push_back (a); - } + if (*it == to_skip) f = true; + else args.push_back (*it); + } + + if (f == false) + { + args.push_back(additiveInverse(to_skip)); } if (args.size() == 1) { @@ -487,7 +511,7 @@ namespace ufo else if (args.size() == 2){ if (isOpX(args[0]) && !isOpX(args[1])) - ret = mk(args[1], args[0]->left()); + ret = mk(args[1], args[0]->left()); else if (!isOpX(args[0]) && isOpX(args[1])) ret = mk(args[0], args[1]->left()); @@ -496,13 +520,11 @@ namespace ufo } else { ret = mknary(args); } - return ret; } // return a - b inline static Expr simplifiedMinus (Expr a, Expr b){ - Expr ret = mk(a, b); if (a == b) { @@ -510,13 +532,12 @@ namespace ufo } else if (isOpX(a)){ - Expr res = simplifiedPlus(a, b); - if (res->arity() == a->arity() - 1) ret = res; + return simplifiedPlus(a, b); } else if (isOpX(b)){ Expr res = simplifiedPlus(b, a); - if (res->arity() == b->arity() - 1) ret = mk(res); + return mk(res); } else if (isOpX(a)){ @@ -811,6 +832,74 @@ namespace ufo if (find(b.begin(), b.end(), var) != b.end()) c.insert(var); return c.size(); } + + // not very pretty method, but.. + inline static Expr reBuildCmp(Expr term, Expr lhs, Expr rhs) + { + if (isOpX(term)){ + return mk(lhs, rhs); + } + if (isOpX(term)){ + return mk(lhs, rhs); + } + if (isOpX(term)){ + return mk(lhs, rhs); + } + if (isOpX(term)){ + return mk(lhs, rhs); + } + if (isOpX(term)){ + return mk(lhs, rhs); + } + assert(isOpX(term)); + return mk(lhs, rhs); + } + + inline static Expr simplIneqMover(Expr exp) + { + exp = ineqNegReverter(exp); + if (lexical_cast(exp->right()) == "0") return exp; + + // GF: find a better way how to move things + exp = reBuildCmp(exp, simplifiedMinus(exp->left(), exp->right()), + mkTerm (mpz_class (0), exp->getFactory())); + return exp; + } + + inline static Expr mergeIneqs(Expr exp1, Expr exp2) + { + Expr res; + + exp1 = simplIneqMover(exp1); + exp2 = simplIneqMover(exp2); + + Expr e1l = exp1->left(); + Expr e2l = exp2->left(); + + // hack for now + if (isOpX(e1l) && isOpX(e1l->left())) return NULL; + if (isOpX(e2l) && isOpX(e2l->left())) return NULL; + + if (isOpX(exp1) && isOpX(exp2)) { + res = mk(e1l, e2l); + } else if (isOpX(exp1) && isOpX(exp2)) { + res = mk(e1l, e2l); + } else if (isOpX(exp1) && isOpX(exp2)) { + res = mk(e1l, e2l); + } else if (isOpX(exp1) && isOpX(exp2)) { + res = mk(e1l, e2l); + } else if (isOpX(exp1) && isOpX(exp2)) { + res = mk(e1l, e2l); + } else if (isOpX(exp1) && isOpX(exp2)) { + res = mk(e1l, e2l); + } else if (isOpX(exp1) && isOpX(exp2)) { + res = mk(e1l, e2l); + } else if (isOpX(exp1) && isOpX(exp2)) { + res = mk(e1l, e2l); + } + + return res; + } } #endif From 037aed839d9092a0a7ff8dff76284b8600ac3260 Mon Sep 17 00:00:00 2001 From: Grigory Fedyukovich Date: Sun, 25 Jun 2017 07:59:30 -0700 Subject: [PATCH 06/40] SMT-based skolem filtering --- include/ae/AeValSolver.hpp | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/include/ae/AeValSolver.hpp b/include/ae/AeValSolver.hpp index a7a5be9c2..c3e912c78 100644 --- a/include/ae/AeValSolver.hpp +++ b/include/ae/AeValSolver.hpp @@ -37,6 +37,7 @@ namespace ufo vector skolMaps; vector someEvals; Expr skolSkope; + Expr tmpConstraints; bool debug; unsigned fresh_var_ind; @@ -252,14 +253,27 @@ namespace ufo ExprSet cnjs; getConj(def, cnjs); - if (pos) for (auto &c : cnjs) fillTmpDef (eval, pos, c, tmpDefMap); + + ExprSet newCnjs; + for (auto &a : cnjs) { + if (!u.isSat(mk(mk (a), tmpConstraints))) newCnjs.insert(a); + } + + if (!pos && newCnjs.size() == 1) fillTmpDef (eval, pos, *newCnjs.begin(), tmpDefMap); + else if (pos) for (auto &c : cnjs) fillTmpDef (eval, pos, c, tmpDefMap); } else if (isOpX(def)){ ExprSet dsjs; getDisj(def, dsjs); - if (!pos) for (auto &c : dsjs) fillTmpDef (eval, pos, c, tmpDefMap); + ExprSet newDsjs; + for (auto &a : dsjs) { + if (u.isSat(mk(a, tmpConstraints))) newDsjs.insert(a); + } + + if (pos && newDsjs.size() == 1) fillTmpDef (eval, pos, *newDsjs.begin(), tmpDefMap); + else if (!pos) for (auto &c : newDsjs) fillTmpDef (eval, pos, c, tmpDefMap); } else { if (debug) outs() << "WARNING! unsupported: " << *def << "\n"; @@ -283,7 +297,15 @@ namespace ufo ExprSet skoledvars; ExprMap substsMap; ExprMap tmpDefMap; - ExprMap depMap; + ExprMap useEvalMap; + + ExprSet acs; + for (auto &exp: v) { + Expr exp2 = skolMaps[i][exp]; + if (exp2 != NULL) acs.insert(exp2); + } + + tmpConstraints = conjoin(acs, efac); // do booleans first for (auto &exp: v) { @@ -303,14 +325,14 @@ namespace ufo } } - if (tmpDefMap.size() > curSz) defMap[exp] = exp2->right(); + if (tmpDefMap.size() > curSz) useEvalMap[exp] = exp2->right(); } for (auto &exp: v) { Expr exp2 = skolMaps[i][exp]; if (exp2 != NULL) { exp2 = getAssignmentForVar(exp, exp2); } - if (exp2 == NULL) { exp2 = depMap[exp]; } + if (exp2 == NULL) { exp2 = useEvalMap[exp]; } if (exp2 == NULL) { exp2 = tmpDefMap[exp]; } if (exp2 == NULL) { exp2 = defMap[exp]; } From bd1e6ee9b6e7ff4d10981f21adf1c00bc21d9e87 Mon Sep 17 00:00:00 2001 From: Grigory Fedyukovich Date: Fri, 30 Jun 2017 21:52:18 +0200 Subject: [PATCH 07/40] printing models for invalid formulas --- include/ae/AeValSolver.hpp | 39 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/include/ae/AeValSolver.hpp b/include/ae/AeValSolver.hpp index c3e912c78..caaa2bf2b 100644 --- a/include/ae/AeValSolver.hpp +++ b/include/ae/AeValSolver.hpp @@ -18,12 +18,14 @@ namespace ufo Expr s; Expr t; ExprSet v; // existentially quantified vars + ExprVector sVars; ExprVector stVars; ExprSet tConjs; ExprSet usedConjs; ExprMap defMap; ExprSet conflictVars; + ExprMap modelInvalid; ExprFactory &efac; EZ3 z3; @@ -54,6 +56,7 @@ namespace ufo partitioning_size(0), debug(0) { + filter (s, bind::IsConst (), back_inserter (sVars)); filter (boolop::land(s,t), bind::IsConst (), back_inserter (stVars)); getConj(t, tConjs); for (auto &exp: v) { @@ -69,10 +72,18 @@ namespace ufo { smt.reset(); smt.assertExpr (s); + if (!smt.solve ()) { outs() << "\nE.v.: -; Iter.: 0; Result: valid\n\n"; return false; + } else { + ZSolver::Model m = smt.getModel(); + + for (auto &e: sVars) + // keep a model in case the formula is invalid + modelInvalid[e] = m.eval(e); } + if (v.size () == 0) { smt.assertExpr (boolop::lneg (t)); @@ -90,6 +101,7 @@ namespace ufo { outs() << "."; outs().flush (); + ZSolver::Model m = smt.getModel(); if (debug && false) @@ -107,7 +119,14 @@ namespace ufo smt.pop(); smt.assertExpr(boolop::lneg(projections[partitioning_size++])); - if (!smt.solve()) { res = false; break; } + if (!smt.solve()) { + res = false; break; + } else { + // keep a model in case the formula is invalid + m = smt.getModel(); + for (auto &e: sVars) + modelInvalid[e] = m.eval(e); + } smt.push(); smt.assertExpr (t); @@ -133,7 +152,7 @@ namespace ufo pr = z3_qe_model_project_skolem (z3, m, exp, pr, map); getLocalSkolems(m, exp, map, substsMap, modelMap, pr); } - + if (debug) assert(emptyIntersect(pr, v)); someEvals.push_back(modelMap); @@ -385,6 +404,21 @@ namespace ufo return mk(s, disjoin(projections, efac)); } + /** + * Model of S /\ \neg T (if AE-formula is invalid) + */ + void printModelNeg() + { + outs () << "(model\n"; + for (auto &var : sVars) + outs () << " (define-fun " << *var << " () " << + (bind::isBoolConst(var) ? "Bool" : (bind::isIntConst(var) ? "Int" : "Real")) + << "\n " << + (var == modelInvalid[var] ? *getDefaultAssignment(var) : *modelInvalid[var]) << ")\n"; + + outs () << ")\n"; + } + /** * Mine the structure of T to get what was assigned to a variable */ @@ -773,6 +807,7 @@ namespace ufo Expr res; if (ae.solve()){ + ae.printModelNeg(); res = ae.getValidSubset(); outs() << "\nvalid subset:\n"; } else { From 580b430010a1e3eaad5507128a678349525fab38 Mon Sep 17 00:00:00 2001 From: Grigory Fedyukovich Date: Wed, 5 Jul 2017 16:21:25 -0700 Subject: [PATCH 08/40] proper handling of rationals while preparing to skolemize --- include/ae/ExprSimpl.hpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/include/ae/ExprSimpl.hpp b/include/ae/ExprSimpl.hpp index 351a52f7f..00d1b3bc0 100644 --- a/include/ae/ExprSimpl.hpp +++ b/include/ae/ExprSimpl.hpp @@ -83,8 +83,16 @@ namespace ufo return e->left(); } else if (isOpX(e)){ - int val = lexical_cast(e); - return mkTerm (mpq_class (-val), e->getFactory()); + string val = lexical_cast(e); + int delim = val.find("/"); + int val1 = stoi(val.substr(0, delim)); + int val2 = stoi(val.substr(delim + 1)); + if (delim < 0) { + return mkTerm (mpq_class (-val1), e->getFactory()); + } else { + string inv_val = to_string(-val1) + "/" + to_string(val2); + return mkTerm (mpq_class (inv_val), e->getFactory()); + } } else if (isOpX(e)){ int val = lexical_cast(e); From a463f06684cddcac1c54f4bf568664fe7de722eb Mon Sep 17 00:00:00 2001 From: Grigory Fedyukovich Date: Thu, 6 Jul 2017 08:34:48 -0700 Subject: [PATCH 09/40] sanity checks for models of invalid formulas --- include/ae/AeValSolver.hpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/include/ae/AeValSolver.hpp b/include/ae/AeValSolver.hpp index caaa2bf2b..3f1b39989 100644 --- a/include/ae/AeValSolver.hpp +++ b/include/ae/AeValSolver.hpp @@ -410,13 +410,25 @@ namespace ufo void printModelNeg() { outs () << "(model\n"; - for (auto &var : sVars) + Expr s_witn = s; + Expr t_witn = t; + for (auto &var : sVars){ + Expr assnmt = var == modelInvalid[var] ? getDefaultAssignment(var) : modelInvalid[var]; + if (debug) { + s_witn = replaceAll(s_witn, var, assnmt); + t_witn = replaceAll(t_witn, var, assnmt); + } + outs () << " (define-fun " << *var << " () " << (bind::isBoolConst(var) ? "Bool" : (bind::isIntConst(var) ? "Int" : "Real")) - << "\n " << - (var == modelInvalid[var] ? *getDefaultAssignment(var) : *modelInvalid[var]) << ")\n"; - + << "\n " << *assnmt << ")\n"; + } outs () << ")\n"; + + if (debug){ + outs () << "Sanity check [model, S-part]: " << !(u.isSat(mk(s_witn))) << "\n"; + outs () << "Sanity check [model, T-part]: " << !(u.isSat(t_witn)) << "\n"; + } } /** From 6901d47f72505f4db1ce0e56e101960a6272ba7e Mon Sep 17 00:00:00 2001 From: Grigory Fedyukovich Date: Mon, 14 Aug 2017 12:03:47 -0700 Subject: [PATCH 10/40] mining Skolem function from negations only --- include/ae/AeValSolver.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/ae/AeValSolver.hpp b/include/ae/AeValSolver.hpp index 3f1b39989..9012cec4b 100644 --- a/include/ae/AeValSolver.hpp +++ b/include/ae/AeValSolver.hpp @@ -718,6 +718,11 @@ namespace ufo return getPlusConst (curMax, isInt, 1); } + if (conjLT.size() == 0 && conjGT.size() == 0) { + GetSymbolicMax(conjNEG, curMax, isInt); + return getPlusConst (curMax, isInt, 1); + } + // now, both conjLT and conjGT are non-empty Expr curMid; GetSymbolicNeg(conjNEG, curMax, curMin, curMid, isInt); From 3c9bfea0ad552f94e5853b81e517d7099dee4245 Mon Sep 17 00:00:00 2001 From: Grigory Fedyukovich Date: Mon, 18 Sep 2017 17:47:05 -0700 Subject: [PATCH 11/40] fixed the wrong application of simplifiedPlus --- include/ae/ExprSimpl.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/ae/ExprSimpl.hpp b/include/ae/ExprSimpl.hpp index 00d1b3bc0..21da57b62 100644 --- a/include/ae/ExprSimpl.hpp +++ b/include/ae/ExprSimpl.hpp @@ -565,7 +565,7 @@ namespace ufo } else if (mkTerm (mpz_class (-1), a->getFactory()) == b) { - ret = simplifiedPlus(a, mkTerm (mpz_class (1), a->getFactory())); + ret = mk(a, mkTerm (mpz_class (1), a->getFactory())); } else if (b == mkTerm (mpz_class (0), a->getFactory())) { From 92124f6046ef0b81cbb6a57040812f66eef7a6c8 Mon Sep 17 00:00:00 2001 From: Grigory Fedyukovich Date: Thu, 28 Sep 2017 13:11:09 -0700 Subject: [PATCH 12/40] cmd-option for the skolem generation / printing --- include/ae/AeValSolver.hpp | 16 ++++++++-------- tools/aeval/Ae.cpp | 32 +++++++++++++++++++++++++++++--- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/include/ae/AeValSolver.hpp b/include/ae/AeValSolver.hpp index 9012cec4b..08f77c73a 100644 --- a/include/ae/AeValSolver.hpp +++ b/include/ae/AeValSolver.hpp @@ -805,7 +805,7 @@ namespace ufo /** * Simple wrapper */ - inline void aeSolveAndSkolemize(Expr s, Expr t) + inline void aeSolveAndSkolemize(Expr s, Expr t, bool skol=true) { ExprSet s_vars; ExprSet t_vars; @@ -821,18 +821,18 @@ namespace ufo outs() << *t << "\n"; AeValSolver ae(s, t, t_quantified); - - Expr res; + if (ae.solve()){ ae.printModelNeg(); - res = ae.getValidSubset(); outs() << "\nvalid subset:\n"; + ae.serialize_formula(ae.getValidSubset()); } else { - res = ae.getSimpleSkolemFunction(); - outs() << "\nextracted skolem:\n"; + if (skol) + { + outs() << "\nextracted skolem:\n"; + ae.serialize_formula(ae.getSimpleSkolemFunction()); + } } - - ae.serialize_formula(res); }; } diff --git a/tools/aeval/Ae.cpp b/tools/aeval/Ae.cpp index a86c0f065..94c4eb675 100644 --- a/tools/aeval/Ae.cpp +++ b/tools/aeval/Ae.cpp @@ -8,6 +8,7 @@ using namespace ufo; * Usage: specify 2 smt2-files that describe the formula \foral x. S(x) => \exists y . T (x, y) * = S-part (over x) * = T-part (over x, y) + * --skol = to print skolem function * * Notably, the tool automatically recognizes x and y based on their appearances in S or T. * @@ -19,6 +20,30 @@ using namespace ufo; * */ +bool getBoolValue(const char * opt, bool defValue, int argc, char ** argv) +{ + for (int i = 1; i < argc; i++) + { + if (strcmp(argv[i], opt) == 0) return true; + } + return defValue; +} + +char * getSmtFileName(int num, int argc, char ** argv) +{ + int num1 = 1; + for (int i = 1; i < argc; i++) + { + int len = strlen(argv[i]); + if (len >= 5 && strcmp(argv[i] + len - 5, ".smt2") == 0) + { + if (num1 == num) return argv[i]; + else num1++; + } + } + return NULL; +} + int main (int argc, char ** argv) { @@ -27,14 +52,15 @@ int main (int argc, char ** argv) ExprVector params; - if (argc != 3) + if (argc < 3 || argc > 4) { outs() << "Unable to parse arguments\n"; return 0; } - aeSolveAndSkolemize(z3_from_smtlib_file (z3, argv [1]), - z3_from_smtlib_file (z3, argv [2])); + aeSolveAndSkolemize(z3_from_smtlib_file (z3, getSmtFileName(1, argc, argv)), + z3_from_smtlib_file (z3, getSmtFileName(2, argc, argv)), + getBoolValue("--skol", false, argc, argv)); return 0; } From 3455ca3cfa67a8d2b33037703fa4b35960e88d3e Mon Sep 17 00:00:00 2001 From: grigoryfedyukovich Date: Fri, 3 Aug 2018 14:24:41 +0300 Subject: [PATCH 13/40] various bugfixes and improvements --- include/ae/AeValSolver.hpp | 1068 ++++++++++++++++++++++-------------- include/ae/ExprSimpl.hpp | 292 ++++++---- include/ae/SMTUtils.hpp | 159 +++++- include/ufo/Expr.hpp | 56 +- tools/aeval/Ae.cpp | 2 + 5 files changed, 1024 insertions(+), 553 deletions(-) diff --git a/include/ae/AeValSolver.hpp b/include/ae/AeValSolver.hpp index 08f77c73a..9e0f77f88 100644 --- a/include/ae/AeValSolver.hpp +++ b/include/ae/AeValSolver.hpp @@ -14,57 +14,127 @@ namespace ufo class AeValSolver { private: - + Expr s; Expr t; ExprSet v; // existentially quantified vars ExprVector sVars; ExprVector stVars; - + ExprSet tConjs; ExprSet usedConjs; ExprMap defMap; - ExprSet conflictVars; + ExprMap cyclicDefs; ExprMap modelInvalid; - + ExprFactory &efac; EZ3 z3; ZSolver smt; SMTUtils u; - + unsigned partitioning_size; ExprVector projections; ExprVector instantiations; - ExprVector interpolants; vector skolMaps; vector someEvals; Expr skolSkope; - Expr tmpConstraints; - + + bool skol; bool debug; unsigned fresh_var_ind; - + public: - - AeValSolver (Expr _s, Expr _t, ExprSet &_v) : - s(_s), t(_t), v(_v), - efac(s->getFactory()), - z3(efac), - smt (z3), - u(efac), - fresh_var_ind(0), - partitioning_size(0), - debug(0) + + AeValSolver (Expr _s, Expr _t, ExprSet &_v, bool _debug, bool _skol) : + s(_s), t(_t), v(_v), + efac(s->getFactory()), + z3(efac), + smt (z3), + u(efac), + fresh_var_ind(0), + partitioning_size(0), + skol(_skol), + debug(_debug) { filter (s, bind::IsConst (), back_inserter (sVars)); filter (boolop::land(s,t), bind::IsConst (), back_inserter (stVars)); getConj(t, tConjs); + + for (auto &exp: v) { + if (!bind::isBoolConst(exp)) continue; + Expr definition = getBoolDefinitionFormulaFromT(exp); + if (definition != NULL) defMap[exp] = u.simplifyITE(definition); + } + for (auto &exp: v) { + if (defMap[exp] != NULL) continue; Expr definition = getDefinitionFormulaFromT(exp); if (definition != NULL) defMap[exp] = u.simplifyITE(definition); } + + splitDefs(defMap, cyclicDefs); + skolSkope = mk(efac); + } + + void splitDefs (ExprMap &m1, ExprMap &m2, int curCnt = 0) + { + ExprMap m3; + ExprMap m4; + for (auto & a : m1) + { + if (a.second == NULL) continue; + if (emptyIntersect(a.second, v)) + { + m3.insert(a); + } + else + { + m4.insert(a); + } + } + if (m3.size() == curCnt) + { + m2 = m4; + return; + } + + for (auto & a : m3) + { + for (auto & b : m1) + { + if (b.second == NULL) continue; + if (a.first != b.first) + { + b.second = replaceAll(b.second, a.first, a.second); + } + } + } + splitDefs(m1, m2, m3.size()); } - + + void assignValues (ExprMap& m, ExprMap& reservedAssignment) + { + for (auto & exp : m) + { + if (bind::isBoolConst(exp.first) || + bind::isIntConst(exp.first) || + bind::isRealConst(exp.first)) + { + if (find(v.begin(),v.end(), exp.second) != v.end()) + { + if (exp.first == m[exp.second]) + { + Expr def = reservedAssignment[exp.first]; + if (def != NULL) + exp.second = reservedAssignment[exp.first]->right(); + else + exp.second = getDefaultAssignment(exp.first); + } + } + } + } + } + /** * Decide validity of \forall s => \exists v . t */ @@ -91,15 +161,14 @@ namespace ufo outs() << "\nE.v.: 0; Iter.: 0; Result: " << (res? "invalid" : "valid") << "\n\n"; return res; } - + smt.push (); smt.assertExpr (t); - + boost::tribool res = true; - + while (smt.solve ()) { - outs() << "."; outs().flush (); ZSolver::Model m = smt.getModel(); @@ -115,10 +184,10 @@ namespace ufo outs() <<"\n"; } - getMBPandSkolem(m); + getMBPandSkolem(m, t, v, ExprMap()); smt.pop(); - smt.assertExpr(boolop::lneg(projections[partitioning_size++])); + smt.assertExpr(boolop::lneg(projections.back())); if (!smt.solve()) { res = false; break; } else { @@ -131,26 +200,26 @@ namespace ufo smt.push(); smt.assertExpr (t); } - + outs() << "\nE.v.: " << v.size() << "; Iter.: " << partitioning_size << "; Result: " << (res? "invalid" : "valid") << "\n\n"; - + return res; } - + /** * Extract MBP and local Skolem */ - void getMBPandSkolem(ZSolver::Model &m) + void getMBPandSkolem(ZSolver::Model &m, Expr pr, ExprSet tmpVars, ExprMap substsMap) { - Expr pr = t; - ExprMap substsMap; ExprMap modelMap; - for (auto &exp: v) + for (auto exp = tmpVars.begin(); exp != tmpVars.end();) { ExprMap map; - pr = z3_qe_model_project_skolem (z3, m, exp, pr, map); - getLocalSkolems(m, exp, map, substsMap, modelMap, pr); + pr = z3_qe_model_project_skolem (z3, m, *exp, pr, map); + if (skol) getLocalSkolems(m, *exp, map, substsMap, modelMap, pr); + Expr var = *exp; + tmpVars.erase(exp++); } if (debug) assert(emptyIntersect(pr, v)); @@ -158,144 +227,137 @@ namespace ufo someEvals.push_back(modelMap); skolMaps.push_back(substsMap); projections.push_back(pr); + partitioning_size++; } - + + void fillSubsts (Expr ef, Expr es, Expr mbp, ExprSet& substs) + { + if (debug) outs() << " subst: " << *ef << " <--> " << *es << "\n"; + + if (!sameBoolOrCmp(ef, es)) + { + substs.insert(mk(ineqNegReverter(ef), ineqNegReverter(es))); + } + else if (isOpX(es)) + { + // useless (just for optim) + } + else if (isOpX(es) || u.implies(mbp, es)) + { + substs.insert(ineqNegReverter(ef)); + } + } + /** * Compute local skolems based on the model */ void getLocalSkolems(ZSolver::Model &m, Expr exp, - ExprMap &map, ExprMap &substsMap, ExprMap &modelMap, Expr& mbp) + ExprMap &map, ExprMap &substsMap, ExprMap &modelMap, Expr& mbp) { if (map.size() > 0){ ExprSet substs; - for (auto &e: map){ - Expr ef = e.first; - Expr es = e.second; - - if (debug) outs() << "subst: " << *ef << " <--> " << *es << "\n"; - - if (isOpX(es)){ - substs.insert(ineqNegReverter(ef)); - } else if (isOpX(es)){ - if (isOpX(ef)){ - ef = ef->arg(0); - } else { - ef = ineqNegReverter(mk(ef)); - } - substs.insert(ef); - } else if (es == mbp) { - substs.insert(ineqNegReverter(ef)); - } else if (!(isOp(ef) && isOp(es)) && - !(isOp(ef) && isOp(es)) && - !(isOp(ef) && isOp(es)) && - !(isOp(ef) && isOp(es))){ - substs.insert(mk(ineqNegReverter(ef), ineqNegReverter(es))); - } else { - Expr mergedSides = mergeIneqs(ef, es); - if (mergedSides != NULL) { - substs.insert(mergedSides); - } - } + for (auto &e: map) fillSubsts(e.first, e.second, mbp, substs); + if (substs.size() == 0) + { + if (debug) outs() << "WARNING: subst is empty for " << *exp << "\n"; } - if (substs.size() == 0) outs() << "WARNING: subst is empty for " << *exp << "\n"; - substsMap[exp] = conjoin(substs, efac); - - } else if (m.eval(exp) != exp){ + else + { + substsMap[exp] = conjoin(substs, efac); + } + } + if (m.eval(exp) != exp){ if (debug) outs () << "model: " << *exp << " <--> " << *m.eval(exp) << "\n"; modelMap[exp] = mk(exp, m.eval(exp)); } } - - /** - * tmp - */ - - void fillTmpDef(ExprMap& eval, bool pos, Expr def, ExprMap& tmpDefMap){ - - if (isOpX(def)){ - - Expr l = def->left(); - Expr r = def->right(); - - bool hl = find(std::begin(v), std::end (v), l) != std::end(v); - bool hr = find(std::begin(v), std::end (v), r) != std::end(v); - - if (pos){ - - if (hl && (bind::isBoolConst(l) || bind::isIntConst(l) || bind::isRealConst(l))){ - tmpDefMap[l] = r; - } - if (hr && (bind::isBoolConst(r) || bind::isIntConst(r) || bind::isRealConst(r))){ - tmpDefMap[r] = l; - } - if (hl && isOpX(l) && bind::isBoolConst(l->left())){ - tmpDefMap[l->left()] = mk(r); - } - if (hr && isOpX(r) && bind::isBoolConst(r->left())){ - tmpDefMap[r->left()] = mk(l); - } - - } else { - - if (hl && bind::isBoolConst(l)){ - tmpDefMap[l] = mk(r); - } - if (hr && bind::isBoolConst(r)){ - tmpDefMap[r] = mk(l); - } - if (hl && isOpX(l) && bind::isBoolConst(l->left())){ - tmpDefMap[l->left()] = r; - } - if (hr && isOpX(r) && bind::isBoolConst(r->left())){ - tmpDefMap[r->left()] = l; - } - } - } else if (isOpX(def)){ - - if (pos) fillTmpDef(eval, !pos, mk(def->left(), def->right()), tmpDefMap); + bool sameBoolOrCmp (Expr ef, Expr es) + { + return (isOp(ef) && isOp(es)) || + (isOp(ef) && isOp(es)) || + (isOp(ef) && isOp(es)) || + (isOp(ef) && isOp(es)); + } - } else if (isOpX(def)){ + Expr getFinalAssignment (int i, Expr var, Expr& tmpSkol) + { + Expr assgn = defMap[var]; + if (assgn != NULL) return assgn; + + assgn = skolMaps[i][var]; + if (assgn != NULL) + return getAssignmentForVar(var, assgn); + + ExprSet pre; + pre.insert(tmpSkol); + pre.insert(skolSkope); + pre.insert(t); + assgn = getCondDefinitionFormula(var, conjoin(pre, efac), false); + if (assgn != NULL) + return assgn; + + Expr eval = someEvals[i][var]; + if (eval != NULL) + return eval->right(); + + return getDefaultAssignment(var); + } - if (pos) fillTmpDef(eval, !pos, def->left(), tmpDefMap); + void getCurrentLocalSkolem (int i) + { + ExprMap substsMap; + Expr tmpSkol = mk(efac); // needed only to get conditionals - } else if (isOpX(def)){ + // first, synthesize skolems from pieces determined by syntax or the MBP process + for (auto &var: v) + { + if (skolMaps[i][var] == NULL && defMap[var] == NULL) continue; - fillTmpDef(eval, pos, mk(def->arg(0), def->arg(1)), tmpDefMap); - fillTmpDef(eval, pos, mk(mk(def->arg(0)), def->arg(2)), tmpDefMap); + Expr val = getFinalAssignment (i, var, tmpSkol); + tmpSkol = mk(tmpSkol, mk(var, val)); + substsMap[var] = val; + } - } else if (isOpX(def)){ + // then, synthesize the rest + for (auto &var: v) + { + if (substsMap[var] != NULL) continue; - if (pos) fillTmpDef(eval, pos, mk(mk(def->left()), def->right()), tmpDefMap); + Expr val = getFinalAssignment (i, var, tmpSkol); + tmpSkol = mk(tmpSkol, mk(var, val)); + substsMap[var] = val; + } - } else if (isOpX(def)){ + // get rid of inter-dependencies cascadically: - ExprSet cnjs; - getConj(def, cnjs); + ExprVector cnjs; + ExprMap cyclicSubsts; + assignValues(substsMap, someEvals[i]); + splitDefs(substsMap, cyclicSubsts); + for (auto & a : cyclicSubsts) + substsMap[a.first] = someEvals[i][a.first]->right(); - ExprSet newCnjs; - for (auto &a : cnjs) { - if (!u.isSat(mk(mk (a), tmpConstraints))) newCnjs.insert(a); + for (auto &var: v) + { + if (substsMap[var] != NULL) + { + assert(emptyIntersect(substsMap[var], v)); + cnjs.push_back(mk(var, substsMap[var])); + if (debug) outs() << "\ncompiling skolem [pt1]: " << *var << " --> " << *substsMap[var] << "\n"; } - - if (!pos && newCnjs.size() == 1) fillTmpDef (eval, pos, *newCnjs.begin(), tmpDefMap); - else if (pos) for (auto &c : cnjs) fillTmpDef (eval, pos, c, tmpDefMap); - - } else if (isOpX(def)){ - - ExprSet dsjs; - getDisj(def, dsjs); - - ExprSet newDsjs; - for (auto &a : dsjs) { - if (u.isSat(mk(a, tmpConstraints))) newDsjs.insert(a); + else + { + assert(0); } - - if (pos && newDsjs.size() == 1) fillTmpDef (eval, pos, *newDsjs.begin(), tmpDefMap); - else if (!pos) for (auto &c : newDsjs) fillTmpDef (eval, pos, c, tmpDefMap); } - else { - if (debug) outs() << "WARNING! unsupported: " << *def << "\n"; + + instantiations.push_back(conjoin(cnjs, efac)); + + if (debug) + { + outs() << "Sanity check [" << i << "]: " << u.implies(mk + (mk(s, skolSkope), mk (projections[i], instantiations[i])), t) << "\n"; } } @@ -304,95 +366,36 @@ namespace ufo */ Expr getSimpleSkolemFunction() { - if (partitioning_size == 0){ - outs() << "WARNING: Skolem can be arbitrary\n"; + assert(skol); + + if (partitioning_size == 0) + { + if (debug) outs() << "WARNING: Skolem can be arbitrary\n"; return mk(efac); } - - skolSkope = mk(efac); - + for (int i = 0; i < partitioning_size; i++) { - ExprSet skoledvars; - ExprMap substsMap; - ExprMap tmpDefMap; - ExprMap useEvalMap; - - ExprSet acs; - for (auto &exp: v) { - Expr exp2 = skolMaps[i][exp]; - if (exp2 != NULL) acs.insert(exp2); - } - - tmpConstraints = conjoin(acs, efac); - - // do booleans first - for (auto &exp: v) { - if (!bind::isBoolConst(exp)) continue; - - int curSz = tmpDefMap.size(); - Expr exp2 = someEvals[i][exp]; - - if (defMap[exp] != NULL && exp2 != NULL) { - - Expr def = defMap[exp]; - - if (isOpX(exp2->right())) { - fillTmpDef(someEvals[i], true, def, tmpDefMap); - } else if (isOpX(exp2->right())) { - fillTmpDef(someEvals[i], false, def, tmpDefMap); - } - } - - if (tmpDefMap.size() > curSz) useEvalMap[exp] = exp2->right(); - } - - for (auto &exp: v) { - - Expr exp2 = skolMaps[i][exp]; - if (exp2 != NULL) { exp2 = getAssignmentForVar(exp, exp2); } - if (exp2 == NULL) { exp2 = useEvalMap[exp]; } - if (exp2 == NULL) { exp2 = tmpDefMap[exp]; } - if (exp2 == NULL) { exp2 = defMap[exp]; } - - Expr exp3 = someEvals[i][exp]; - if (exp2 == NULL && exp3 != NULL) { exp2 = exp3->right(); } - if (exp2 == NULL) { exp2 = getDefaultAssignment(exp); } - - if (debug) outs() << "compiling skolem [pt1]: " << *exp << " --> " << *exp2 << "\n"; - - substsMap[exp] = exp2; - } - - // get rid of inter-dependencies cascadically: + getCurrentLocalSkolem(i); + } - ExprVector cnjs; + Expr sk = mk(efac); - for (auto &exp: v) { - refreshMapEntry(substsMap, exp); - cnjs.push_back(mk(exp, substsMap[exp])); - } + for (int i = partitioning_size - 1; i >= 0; i--) + { + if (isOpX(projections[i]) && isOpX(sk)) + sk = instantiations[i]; + else + sk = mk(projections[i], instantiations[i], sk); + } - instantiations.push_back(conjoin(cnjs, efac)); + Expr skol = simplifiedAnd(skolSkope, sk); - if (debug) outs() << "Sanity check [" << i << "]: " << u.isImplies(mk - (mk(s, skolSkope), mk (projections[i], instantiations[i])), t) << "\n"; + if (debug) outs() << "Sanity check: " << u.implies(mk(s, skol), t) << "\n"; - } - Expr sk = mk(efac); - - for (int i = partitioning_size - 1; i >= 0; i--){ - if (isOpX(projections[i]) && isOpX(sk)) sk = instantiations[i]; - else sk = mk(projections[i], instantiations[i], sk); - } - - Expr skol = simplifiedAnd(skolSkope, sk); - - if (debug) outs() << "Sanity check: " << u.isImplies(mk(s, skol), t) << "\n"; - return skol; } - + /** * Valid Subset of S (if overall AE-formula is invalid) */ @@ -403,7 +406,7 @@ namespace ufo } return mk(s, disjoin(projections, efac)); } - + /** * Model of S /\ \neg T (if AE-formula is invalid) */ @@ -436,32 +439,125 @@ namespace ufo */ Expr getDefinitionFormulaFromT(Expr var) { - Expr def; + ExprSet defs; for (auto & cnj : tConjs) { // get equality (unique per variable) if (std::find(std::begin(usedConjs), std::end (usedConjs), cnj) != std::end(usedConjs)) continue; + if (isOpX(cnj)) + { + if (var == cnj->left() || var == cnj->right()) + { + defs.insert(cnj); + } + } + } + + // now find `the best` one + + if (defs.empty()) return NULL; + + Expr def = *defs.begin(); + for (auto & a : defs) + { + if (!emptyIntersect(a, sVars)) def = a; + } + + usedConjs.insert(def); + return (var == def->left() ? def->right() : def->left()); + } + + /** + * Mine the structure of T to get what was assigned to a variable + */ + Expr getBoolDefinitionFormulaFromT(Expr var) + { + Expr def; + for (auto & cnj : tConjs) + { + if (std::find(std::begin(usedConjs), + std::end (usedConjs), cnj) != std::end(usedConjs)) continue; + + if (bind::isBoolConst(cnj) && var == cnj) + { + def = mk(efac); + usedConjs.insert(cnj); + } + else if (isOpX(cnj) && bind::isBoolConst(cnj->left()) && var == cnj->left()) + { + def = mk(efac); + usedConjs.insert(cnj); + } + } + + if (def != NULL) extendTWithDefs(var, def); + return def; + } + + void extendTWithDefs(Expr var, Expr def) + { + for (auto & cnj : tConjs) + { + if (std::find(std::begin(usedConjs), + std::end (usedConjs), cnj) != std::end(usedConjs)) continue; + if (isOpX(cnj)) { if (var == cnj->left()) { - def = cnj->right(); usedConjs.insert(cnj); - break; + if (def == NULL) + { + def = cnj->right(); + break; + } + else + { + getConj(isOpX(def) ? cnj->right() : mk (cnj->right()), tConjs); + } } else if (var == cnj->right()) { - def = cnj->left(); usedConjs.insert(cnj); - break; + if (def == NULL) + { + def = cnj->left(); + break; + } + else + { + getConj(isOpX(def) ? cnj->left() : mk (cnj->left()), tConjs); + } } + + if (debug && tConjs.empty()) + outs () << "WARNING: getBoolDefinitionFormulaFromT has cleared tConjs\n"; } } - return def; } - + + /** + * Mine the structure of T `conditionally` + */ + Expr getCondDefinitionFormula(Expr var, Expr pre, bool impl) + { + Expr res = NULL; + ExprSet eqs; + ExprSet eqsFilt; + getEqualities(t, var, eqs); + for (auto a : eqs) + { + if (a->right() != a->left() && u.implies(pre, a)) + eqsFilt.insert((a->left() == var) ? a->right() : a->left()); + } + + int maxSz = 0; + for (auto & a : eqsFilt) if (boolop::circSize(a) > maxSz) res = a; + return res; + } + /** * Self explanatory */ @@ -480,13 +576,14 @@ namespace ufo Expr varName = mkTerm ("_aeval_tmp_max_" + ind, efac); Expr var = isInt ? bind::intConst(varName) : bind::realConst(varName); - skolSkope = simplifiedAnd(skolSkope, - mk(var, mk(mk(curMax, a), a, curMax))); + Expr newConstr = mk(var, mk(mk(curMax, a), a, curMax)); + skolSkope = simplifiedAnd(skolSkope, newConstr); + curMax = var; } } } - + /** * Self explanatory */ @@ -505,49 +602,46 @@ namespace ufo Expr varName = mkTerm ("_aeval_tmp_min_" + ind, efac); Expr var = isInt ? bind::intConst(varName) : bind::realConst(varName); - skolSkope = simplifiedAnd(skolSkope, - mk(var, mk(mk(curMin, a), a, curMin))); + Expr newConstr = mk(var, mk(mk(curMin, a), a, curMin)); + skolSkope = simplifiedAnd(skolSkope, newConstr); curMin = var; } } } - - /** - * Weird thing, never happens in the experiments - */ - void GetSymbolicNeg(ExprSet& vec, Expr& lower, Expr& upper, Expr& candidate, bool isInt) + + void GetSymbolicNeq(ExprSet& vec, Expr& lower, Expr& upper, Expr& candidate, bool strict, bool isInt) { - // TODO: maybe buggy in LIA, due to a naive shrinking of the segment; - - for (auto &a : vec){ + Expr var1 = lower; + Expr eps; + if (isInt) + eps = mkTerm (mpz_class (1), efac); + else + eps = mk
(mk(upper, lower), mkTerm (mpq_class (vec.size() + 2), efac)); - ExprSet forLower; - forLower.insert(lower); - forLower.insert(a); - Expr updLower; - GetSymbolicMax(forLower, updLower, isInt); + if (strict) var1 = mk(var1, eps); - ExprSet forUpper; - forUpper.insert(upper); - forUpper.insert(a); - Expr updUpper; - GetSymbolicMin(forUpper, updUpper, isInt); + string ind = lexical_cast (fresh_var_ind++); + Expr varName = mkTerm ("_aeval_tmp_neg_" + ind, efac); + Expr var2 = isInt ? bind::intConst(varName) : bind::realConst(varName); - // TODO: do optimizations + candidate = var2; + for (int i = 0; i <= vec.size(); i++) + { + ExprSet neqqedConstrs; + for (auto &a : vec) neqqedConstrs.insert(mk(a, var1)); - // first, try to see if there are any concrete values for updLower and updUpper - if (updLower == updUpper) { - upper = updUpper; - } - else if (upper != updUpper) { - // second, force the symbolic value for upper - upper = mk (mk(updLower, updUpper), updUpper, upper); - } + string ind = lexical_cast (fresh_var_ind++); + Expr varName = mkTerm ("_aeval_tmp_neg_" + ind, efac); + Expr newVar = isInt ? bind::intConst(varName) : bind::realConst(varName); + + Expr newConstr = mk(var2, mk(disjoin(neqqedConstrs, efac), newVar, var1)); + skolSkope = simplifiedAnd(skolSkope, newConstr); - candidate = mk
(mk(lower, upper), mkTerm (mpz_class (2), efac)); + var1 = mk(var1, eps); + var2 = newVar; } } - + /** * Based on type */ @@ -558,30 +652,41 @@ namespace ufo else // that is, isRealConst(var) == true return mkTerm (mpq_class (0), efac); } - + /** - * Return "e + c" + * Return "e + eps" */ - Expr getPlusConst(Expr e, bool isInt, int c) + Expr plusEps(Expr e, bool isInt) { if (isOpX(e) && isInt) - return mkTerm (mpz_class (c + boost::lexical_cast (e)), efac); - - Expr ce = isInt ? mkTerm (mpz_class (c), efac) : mkTerm (mpq_class (c), efac); - return mk(e, ce); + return mkTerm (mpz_class (boost::lexical_cast (e) + 1), efac); + + return mk(e, mkTerm ((isInt ? mpz_class (1) : mpq_class (1)), efac)); } - + + /** + * Return "e - eps" + */ + Expr minusEps(Expr e, bool isInt) + { + if (isOpX(e) && isInt) + return mkTerm (mpz_class (boost::lexical_cast (e) - 1), efac); + + return mk(e, mkTerm ((isInt ? mpz_class (1) : mpq_class (1)), efac)); + } + /** * Extract function from relation */ Expr getAssignmentForVar(Expr var, Expr exp) { - if (debug) outs () << "getAssignmentForVar " << *var << " in " << *exp << "\n"; - + if (debug) outs () << "getAssignmentForVar " << *var << " in:\n" << *exp << "\n"; + bool isInt = bind::isIntConst(var); - + if (isOp(exp)) { + if (isOpX(exp)) exp = mkNeg(exp->left()); if (!bind::isBoolConst(var) && var != exp->left()) exp = ineqReverter(ineqMover(exp, var)); @@ -594,25 +699,25 @@ namespace ufo return exp->right(); } else if (isOpX(exp)){ - return getPlusConst (exp->right(), isInt, -1); + return minusEps (exp->right(), isInt); } else if (isOpX(exp)){ - return getPlusConst (exp->right(), isInt, 1); + return plusEps (exp->right(), isInt); } else if (isOpX(exp)){ - return getPlusConst (exp->right(), isInt, 1); + return plusEps (exp->right(), isInt); } else assert(0); } else if (isOpX(exp)){ if (isOpX(exp->left())) { - return getPlusConst (getAssignmentForVar(var, exp->left()), isInt, 1); + return plusEps (getAssignmentForVar(var, exp->left()), isInt); } } - else if (isOpX(exp)){ + else if (isOpX(exp)) + { exp = u.numericUnderapprox(exp); // try to see if there are only numerals - if (isOpX(exp)) return exp->right(); bool incomplete = false; @@ -620,27 +725,28 @@ namespace ufo // split constraints ExprSet conjLT; + ExprSet conjLE; ExprSet conjGT; - ExprSet conjNEG; - ExprSet conjEG; - for (auto it = exp->args_begin(), end = exp->args_end(); it != end; ++it){ - Expr cnj = *it; - - // GF: little hack; TODO: make a proper rewriter - if (isOpX(cnj) && isOpX(cnj->left())) { - cnj = mk(cnj->left()->left(), cnj->left()->right()); - } + ExprSet conjGE; + ExprSet conjNEQ; + ExprSet conjEQ; + ExprSet cnjs; + getConj (exp, cnjs); + u.removeRedundantConjuncts(cnjs); + for (auto cnj : cnjs) + { + if (isOpX(cnj)) cnj = mkNeg(cnj->left()); cnj = ineqReverter(ineqMover(cnj, var)); if (isOpX(cnj)){ if (var == cnj->left()) { - conjEG.insert(cnj->right()); + conjEQ.insert(cnj->right()); } else { incomplete = true; } } - else if (isOpX(cnj) || isOpX(cnj)){ + else if (isOpX(cnj)){ if (var == cnj->left()) { conjLT.insert(cnj->right()); } else if (var == cnj->right()) { @@ -649,7 +755,16 @@ namespace ufo incomplete = true; } } - else if (isOpX(cnj) || isOpX(cnj)){ + else if (isOpX(cnj)){ + if (var == cnj->left()) { + conjLE.insert(cnj->right()); + } else if (var == cnj->right()) { + conjGE.insert(cnj->left()); + } else { + incomplete = true; + } + } + else if (isOpX(cnj)){ if (var == cnj->left()) { conjGT.insert(cnj->right()); } else if (var == cnj->right()) { @@ -657,133 +772,279 @@ namespace ufo } else { incomplete = true; } - } else if (isOpX(cnj)){ + } + else if (isOpX(cnj)){ if (var == cnj->left()) { - conjNEG.insert(cnj->right()); + conjGE.insert(cnj->right()); + } else if (var == cnj->right()) { + conjLE.insert(cnj->left()); } else { incomplete = true; } } + else if (isOpX(cnj)){ + if (var == cnj->left()) { + conjNEQ.insert(cnj->right()); + } else { + incomplete = true; + } + } + + if (incomplete && debug) + outs() << "WARNING: This constraint is unsupported: " << *cnj << "\n"; } - // get the assignment (if exists) + // simplify some: + for (auto & b : conjLE) + { + bool toBrk = false; + for (auto & a : conjNEQ) + { + if (a == b) + { + conjLT.insert(a); + conjNEQ.erase(a); + conjLE.erase(b); + toBrk = true; + break; + } + } + if (toBrk) break; + } - if (conjEG.size() > 0) return *(conjEG.begin()); // GF: maybe try to find the best of them + // simplify some: + for (auto & b : conjGE) + { + bool toBrk = false; + for (auto & a : conjNEQ) + { + if (a == b) + { + conjGT.insert(a); + conjNEQ.erase(a); + conjGE.erase(b); + toBrk = true; + break; + } + } + if (toBrk) break; + } - if (incomplete && debug) outs() << "WARNING: Some Skolem constraints unsupported\n"; + // get the assignment (if exists) + + if (conjEQ.size() > 0) return *(conjEQ.begin()); // GF: maybe try to find the best of them // get symbolic max and min - Expr extraDefsMax = mk(efac); - Expr curMax; + Expr curMaxGT; if (conjGT.size() > 1){ - GetSymbolicMax(conjGT, curMax, isInt); + GetSymbolicMax(conjGT, curMaxGT, isInt); } else if (conjGT.size() == 1){ - curMax = *(conjGT.begin()); + curMaxGT = *(conjGT.begin()); } - Expr extraDefsMin = mk(efac); - Expr curMin; + Expr curMaxGE; + if (conjGE.size() > 1){ + GetSymbolicMax(conjGE, curMaxGE, isInt); + } else if (conjGE.size() == 1){ + curMaxGE = *(conjGE.begin()); + } + + Expr curMinLT; if (conjLT.size() > 1){ - GetSymbolicMin(conjLT, curMin, isInt); + GetSymbolicMin(conjLT, curMinLT, isInt); } else if (conjLT.size() == 1){ - curMin = *(conjLT.begin()); + curMinLT = *(conjLT.begin()); + } + + Expr curMinLE; + if (conjLE.size() > 1){ + GetSymbolicMin(conjLE, curMinLE, isInt); + } else if (conjLE.size() == 1){ + curMinLE = *(conjLE.begin()); } // get value in the middle of max and min - if (conjNEG.size() == 0){ - if (conjLT.size() > 0 && conjGT.size() > 0){ - return mk
(mk(curMin, curMax), mkTerm (mpz_class (2), efac)); - } else { - if (conjLT.size() == 0){ - return getPlusConst (curMax, isInt, 1); - } else { - return getPlusConst (curMin, isInt, -1); - } + Expr curMax; + Expr curMin; + + if (curMaxGT != NULL && curMaxGE != NULL){ + curMax = mk(mk(curMaxGT, curMaxGE), curMaxGT, curMaxGE); + } + else if (curMaxGT != NULL) curMax = curMaxGT; + else curMax = curMaxGE; + + if (curMinLT != NULL && curMinLE != NULL){ + curMin = mk(mk(curMinLT, curMinLE), curMinLT, curMinLE); + } + else if (curMinLT != NULL) curMin = curMinLT; + else curMin = curMinLE; + + if (conjNEQ.size() == 0) + { + if (curMinLT == NULL && curMinLE != NULL) + { + return curMinLE; + } + + if (curMaxGT == NULL && curMaxGE != NULL) + { + return curMaxGE; + } + + if (curMinLT != NULL && curMinLE == NULL && curMaxGT == NULL && curMaxGE == NULL) + { + return minusEps(curMinLT, isInt); + } + + if (curMinLT == NULL && curMinLE == NULL && curMaxGT != NULL && curMaxGE == NULL) + { + return plusEps(curMaxGT, isInt); + } + + if (curMinLT != NULL && curMinLE != NULL && curMaxGT == NULL && curMaxGE == NULL) + { + return minusEps(curMin, isInt); + } + + if (curMinLT == NULL && curMinLE == NULL && curMaxGT != NULL && curMaxGE != NULL) + { + return plusEps(curMax, isInt); + } + + if (curMinLT != NULL && curMinLE == NULL && curMaxGT != NULL && curMaxGE == NULL) + { + if (isInt) + return mk(mk(curMinLT, curMaxGT), mkTerm (mpz_class (2), efac)); + else + return mk
(mk(curMinLT, curMaxGT), mkTerm (mpq_class (2), efac)); + } + + if (curMinLT == NULL && curMinLE != NULL && curMaxGT == NULL && curMaxGE != NULL) + { + if (isInt) + return mk(mk(curMinLE, curMaxGE), mkTerm (mpz_class (2), efac)); + else + return mk
(mk(curMinLE, curMaxGE), mkTerm (mpq_class (2), efac)); + } + + if (curMinLT == NULL && curMinLE != NULL && curMaxGT != NULL && curMaxGE == NULL) + { + if (isInt) + return mk(mk(curMinLE, curMaxGT), mkTerm (mpz_class (2), efac)); + else + return mk
(mk(curMinLE, curMaxGT), mkTerm (mpq_class (2), efac)); + } + + if (curMinLT != NULL && curMinLE == NULL && curMaxGT == NULL && curMaxGE != NULL) + { + if (isInt) + return mk(mk(curMinLT, curMaxGE), mkTerm (mpz_class (2), efac)); + else + return mk
(mk(curMinLT, curMaxGE), mkTerm (mpq_class (2), efac)); + } + + if (curMinLT != NULL && curMinLE == NULL && curMaxGT != NULL && curMaxGE != NULL) + { + if (isInt) + return mk(mk(curMinLT, curMax), mkTerm (mpz_class (2), efac)); + else + return mk
(mk(curMinLT, curMax), mkTerm (mpq_class (2), efac)); + } + + if (curMinLT == NULL && curMinLE != NULL && curMaxGT != NULL && curMaxGE != NULL) + { + if (isInt) + return mk(mk(curMinLE, curMax), mkTerm (mpz_class (2), efac)); + else + return mk
(mk(curMinLE, curMax), mkTerm (mpq_class (2), efac)); + } + + if (curMinLT != NULL && curMinLE != NULL && curMaxGT == NULL && curMaxGE != NULL) + { + if (isInt) + return mk(mk(curMin, curMaxGE), mkTerm (mpz_class (2), efac)); + else + return mk
(mk(curMin, curMaxGE), mkTerm (mpq_class (2), efac)); + } + + if (curMinLT != NULL && curMinLE != NULL && curMaxGT != NULL && curMaxGE == NULL) + { + if (isInt) + return mk(mk(curMin, curMaxGT), mkTerm (mpz_class (2), efac)); + else + return mk
(mk(curMin, curMaxGT), mkTerm (mpq_class (2), efac)); + } + + if (curMinLT != NULL && curMinLE != NULL && curMaxGT != NULL && curMaxGE != NULL) + { + if (isInt) + return mk(mk(curMin, curMax), mkTerm (mpz_class (2), efac)); + else + return mk
(mk(curMin, curMax), mkTerm (mpq_class (2), efac)); } + assert(0); + } + + // here conjNEQ.size() > 0 + + Expr tmpMin; + GetSymbolicMin(conjNEQ, tmpMin, isInt); + Expr tmpMax; + GetSymbolicMax(conjNEQ, tmpMax, isInt); + + if (curMinLE == NULL && curMinLT == NULL && curMaxGE == NULL && curMaxGT == NULL) + { + return plusEps(tmpMax, isInt); } - // here conjNEG.size() > 0 + if (curMinLE != NULL && curMinLT == NULL && curMaxGE == NULL && curMaxGT == NULL) + { + return minusEps(mk(mk(curMinLE, tmpMin), curMinLE, tmpMin), isInt); + } - if (conjLT.size() > 0 && conjGT.size() == 0) { - conjNEG.insert(curMin); - GetSymbolicMin(conjNEG, curMin, isInt); - return getPlusConst (curMin, isInt, -1); + if (curMinLE == NULL && curMinLT != NULL && curMaxGE == NULL && curMaxGT == NULL) + { + return minusEps(mk(mk(curMinLT, tmpMin), curMinLT, tmpMin), isInt); } - if (conjLT.size() == 0 && conjGT.size() > 0) { - conjNEG.insert(curMax); - GetSymbolicMax(conjNEG, curMax, isInt); - return getPlusConst (curMax, isInt, 1); + if (curMinLE != NULL && curMinLT != NULL && curMaxGE == NULL && curMaxGT == NULL) + { + return minusEps(mk(mk(curMin, tmpMin), curMin, tmpMin), isInt); } - if (conjLT.size() == 0 && conjGT.size() == 0) { - GetSymbolicMax(conjNEG, curMax, isInt); - return getPlusConst (curMax, isInt, 1); + if (curMinLE == NULL && curMinLT == NULL && curMaxGE != NULL && curMaxGT == NULL) + { + return plusEps(mk(mk(curMaxGE, tmpMax), curMaxGE, tmpMax), isInt); } - // now, both conjLT and conjGT are non-empty + if (curMinLE == NULL && curMinLT == NULL && curMaxGE == NULL && curMaxGT != NULL) + { + return plusEps(mk(mk(curMaxGT, tmpMax), curMaxGT, tmpMax), isInt); + } + + if (curMinLE == NULL && curMinLT == NULL && curMaxGE != NULL && curMaxGT != NULL) + { + return plusEps(mk(mk(curMax, tmpMax), curMax, tmpMax), isInt); + } + + assert (curMinLE != NULL || curMinLT != NULL); + assert (curMaxGE != NULL || curMaxGT != NULL); + + if (curMaxGE == NULL) curMax = curMaxGT; + else curMax = curMaxGE; + + if (curMinLE == NULL) curMin = curMinLT; + else curMin = curMinLE; + Expr curMid; - GetSymbolicNeg(conjNEG, curMax, curMin, curMid, isInt); + GetSymbolicNeq(conjNEQ, curMax, curMin, curMid, (curMaxGE == NULL), isInt); return curMid; } return exp; } - - /** - * Check if there are bounded cycles (at most lvl steps) in the map - */ - bool findCycles(ExprMap &m, Expr var, Expr var2, int lvl=3) - { - Expr entr = m[var]; - if (entr == NULL) return false; - - ExprSet all; - filter (entr, bind::IsConst (), inserter (all, all.begin())); - - if (!emptyIntersect(var2, all)) return true; - - bool res = false; - if (lvl > 0) for (auto& exp: all) res |= findCycles(m, exp, var2, lvl-1); - - return res; - } - - /** - * Unfolding/simplifying of the map with definitions / substitutions - */ - void refreshMapEntry (ExprMap &m, Expr var) - { - if (debug && false) outs() << "refreshMapEntry for " << *var << "\n"; - - Expr entr = m[var]; - if (std::find(std::begin(conflictVars), std::end (conflictVars), var) != std::end(conflictVars)) - { - entr = defMap[var]; - conflictVars.erase(var); - } - - if (entr == NULL) return; - - if (conflictVars.empty() && findCycles(m, var, var, 1)) - { - // FIXME: it does not find all cycles unfortunately - if (debug) outs () << "cycle found for " << *var << "\n"; - conflictVars.insert(var); - } - - ExprSet skv; - filter (entr, bind::IsConst (), inserter (skv, skv.begin())); - - for (auto& exp2: skv) { - refreshMapEntry(m, exp2); - entr = simplifyBool (u.simplifyITE (replaceAll(entr, exp2, m[exp2]))); - } - - m[var] = u.numericUnderapprox(mk(var, entr))->right(); - } - + /** * Actually, just print it to cmd in the smt-lib2 format */ @@ -791,36 +1052,33 @@ namespace ufo { smt.reset(); smt.assertExpr(form); - - string errorInfo; - - if (errorInfo.empty ()) - { - smt.toSmtLib (outs()); - outs().flush (); - } + smt.toSmtLib (outs()); + outs().flush (); } }; - + /** * Simple wrapper */ - inline void aeSolveAndSkolemize(Expr s, Expr t, bool skol=true) + inline void aeSolveAndSkolemize(Expr s, Expr t, bool debug, bool skol) { ExprSet s_vars; ExprSet t_vars; - + filter (s, bind::IsConst (), inserter (s_vars, s_vars.begin())); filter (t, bind::IsConst (), inserter (t_vars, t_vars.begin())); - + ExprSet t_quantified = minusSets(t_vars, s_vars); - - outs() << "S: " << *s << "\n"; - outs() << "T: \\exists "; - for (auto &a: t_quantified) outs() << *a << ", "; - outs() << *t << "\n"; - - AeValSolver ae(s, t, t_quantified); + + if (debug) + { + outs() << "S: " << *s << "\n"; + outs() << "T: \\exists "; + for (auto &a: t_quantified) outs() << *a << ", "; + outs() << *t << "\n"; + } + + AeValSolver ae(s, t, t_quantified, debug, skol); if (ae.solve()){ ae.printModelNeg(); diff --git a/include/ae/ExprSimpl.hpp b/include/ae/ExprSimpl.hpp index 21da57b62..f3e7207fd 100644 --- a/include/ae/ExprSimpl.hpp +++ b/include/ae/ExprSimpl.hpp @@ -8,6 +8,136 @@ using namespace std; using namespace boost; namespace ufo { + + template static Expr conjoin(Range& conjs, ExprFactory &efac){ + return + (conjs.size() == 0) ? mk(efac) : + (conjs.size() == 1) ? *conjs.begin() : + mknary(conjs); + } + + template static Expr disjoin(Range& disjs, ExprFactory &efac){ + return + (disjs.size() == 0) ? mk(efac) : + (disjs.size() == 1) ? *disjs.begin() : + mknary(disjs); + } + + template static Expr mkplus(Range& terms, ExprFactory &efac){ + return + (terms.size() == 0) ? mkTerm (mpz_class (0), efac) : + (terms.size() == 1) ? *terms.begin() : + mknary(terms); + } + + template static Expr mkmult(Range& terms, ExprFactory &efac){ + return + (terms.size() == 0) ? mkTerm (mpz_class (1), efac) : + (terms.size() == 1) ? *terms.begin() : + mknary(terms); + } + + template static bool emptyIntersect(Range1& av, Range2& bv){ + for (auto &var1: av){ + for (auto &var2: bv) if (var1 == var2) return false; + } + return true; + } + + template static bool emptyIntersect(Expr a, Range& bv){ + ExprVector av; + filter (a, bind::IsConst (), inserter(av, av.begin())); + return emptyIntersect(av, bv); + } + + inline static bool emptyIntersect(Expr a, Expr b){ + ExprVector bv; + filter (b, bind::IsConst (), inserter(bv, bv.begin())); + return emptyIntersect(a, bv); + } + + // if at the end disjs is empty, then a == true + inline static void getConj (Expr a, ExprSet &conjs) + { + if (isOpX(a)) return; + if (isOpX(a)){ + conjs.clear(); + conjs.insert(a); + return; + } else if (isOpX(a)){ + for (unsigned i = 0; i < a->arity(); i++){ + getConj(a->arg(i), conjs); + } + } else { + conjs.insert(a); + } + } + + // if at the end disjs is empty, then a == false + inline static void getDisj (Expr a, ExprSet &disjs) + { + if (isOpX(a)) return; + if (isOpX(a)){ + disjs.clear(); + disjs.insert(a); + return; + } else if (isOpX(a)){ + for (unsigned i = 0; i < a->arity(); i++){ + getDisj(a->arg(i), disjs); + } + } else { + disjs.insert(a); + } + } + + inline static Expr reBuildNegCmp(Expr term, Expr lhs, Expr rhs) + { + if (isOpX(term)) + { + return mk(lhs, rhs); + } + if (isOpX(term)) + { + return mk(lhs, rhs); + } + if (isOpX(term)) + { + return mk(lhs, rhs); + } + if (isOpX(term)) + { + return mk(lhs, rhs); + } + if (isOpX(term)) + { + return mk(lhs, rhs); + } + assert(isOpX(term)); + return mk(lhs, rhs); + } + + inline static Expr mkNeg(Expr term) + { + if (isOpX(term)) + { + return term->arg(0); + } + else if (isOpX(term) || isOpX(term)) + { + ExprSet args; + for (int i = 0; i < term->arity(); i++){ + args.insert(mkNeg(term->arg(i))); + } + return isOpX(term) ? disjoin(args, term->getFactory()) : + conjoin (args, term->getFactory()); + } + else if (isOp(term)) + { + return reBuildNegCmp(term, term->arg(0), term->arg(1)); + } + return mk(term); + } + /** * Represent Expr as multiplication */ @@ -15,7 +145,7 @@ namespace ufo if (isOpX(e)){ return e; } else { - return mk(e, mkTerm (mpz_class (1), e->getFactory())); + return mk(mkTerm (mpz_class (1), e->getFactory()), e); } } @@ -61,7 +191,7 @@ namespace ufo /** * Self explanatory */ - inline static bool IsConstOrItsAdditiveInverse(Expr e, Expr var){ + inline static bool isConstOrItsAdditiveInverse(Expr e, Expr var){ if (e == var) { return true; } @@ -78,7 +208,6 @@ namespace ufo * Self explanatory */ inline static Expr additiveInverse(Expr e){ - if (isOpX(e)){ return e->left(); } @@ -106,9 +235,13 @@ namespace ufo return mk(c, e->right()); } } + else if (bind::isIntConst(e)) + return mk(mkTerm (mpz_class (-1), e->getFactory()), e); + + // otherwise could be buggy... return mk(mkTerm (mpq_class (-1), e->getFactory()), e); } - + /** * Commutativity in Addition */ @@ -165,22 +298,22 @@ namespace ufo if (isOpX(l)){ for (unsigned i = 0; i < l->arity (); i++){ Expr a = l->arg(i); - if (IsConstOrItsAdditiveInverse(a, var)){ + if (isConstOrItsAdditiveInverse(a, var)){ lhs = a; continue; } rhs.insert(additiveInverse(a)); } } else if (isOpX(l)){ - if (IsConstOrItsAdditiveInverse(l->left(), var)){ + if (isConstOrItsAdditiveInverse(l->left(), var)){ lhs = l->left(); rhs.insert(additiveInverse(l->right())); - } else if (IsConstOrItsAdditiveInverse(l->right(), var)){ + } else if (isConstOrItsAdditiveInverse(l->right(), var)){ lhs = l->right(); rhs.insert(additiveInverse(l->left())); } } else { - if (IsConstOrItsAdditiveInverse(l, var)){ + if (isConstOrItsAdditiveInverse(l, var)){ lhs = l; } else if (lexical_cast(l) != "0"){ rhs.insert(additiveInverse(l)); @@ -192,14 +325,14 @@ namespace ufo if (isOpX(r)){ for (unsigned i = 0; i < r->arity (); i++){ Expr a = r->arg(i); - if (IsConstOrItsAdditiveInverse(a, var)){ + if (isConstOrItsAdditiveInverse(a, var)){ lhs = additiveInverse(a); continue; } rhs.insert(a); } } else { - if (IsConstOrItsAdditiveInverse(r, var)){ + if (isConstOrItsAdditiveInverse(r, var)){ lhs = additiveInverse(r); } else if (lexical_cast(r) != "0"){ rhs.insert(r); @@ -437,42 +570,26 @@ namespace ufo } return false; } - - template static Expr conjoin(Range& conjs, ExprFactory &efac){ - return - (conjs.size() == 0) ? mk(efac) : - (conjs.size() == 1) ? *conjs.begin() : - mknary(conjs); - } - template static Expr disjoin(Range& disjs, ExprFactory &efac){ - return - (disjs.size() == 0) ? mk(efac) : - (disjs.size() == 1) ? *disjs.begin() : - mknary(disjs); - } - /** * Simplifier Wrapper */ inline static Expr ineqSimplifier(Expr v, Expr exp){ + ExprSet conjs; + getConj(exp, conjs); ExprSet substsMap; - if (isOpX(exp)){ - for (ENode::args_iterator it = exp->args_begin(), end = exp->args_end(); - it != end; ++it){ - Expr cl = *it; - cl = exprMover(*it, v); - cl = ineqMover(cl, v); - cl = ineqReverter (cl); - substsMap.insert(cl); - } - - ineqMerger(substsMap); - equalitySearch(substsMap, v); - return conjoin(substsMap, v->getFactory()); - + for (auto cl : conjs) + { + cl = ineqNegReverter(cl); + cl = exprMover(cl, v); + cl = ineqMover(cl, v); + cl = ineqReverter (cl); + substsMap.insert(cl); } - return exp; + + ineqMerger(substsMap); + equalitySearch(substsMap, v); + return conjoin(substsMap, v->getFactory()); } @@ -759,58 +876,6 @@ namespace ufo return v3; } - inline static bool emptyIntersect(Expr a, Expr b){ - ExprVector av; - ExprVector bv; - - filter (a, bind::IsConst (), inserter(av, av.begin())); - filter (b, bind::IsConst (), inserter(bv, bv.begin())); - - for (auto &var1: av){ - for (auto &var2: bv){ - if (var1 == var2){ - return false; - } - } - } - return true; - } - - inline static bool emptyIntersect(Expr a, ExprSet& bv){ - ExprVector av; - - filter (a, bind::IsConst (), inserter(av, av.begin())); - - for (auto &var1: av){ - for (auto &var2: bv) if (var1 == var2) return false; - } - return true; - } - - inline static void getConj (Expr a, ExprSet &conjs) - { - if (isOpX(a)) return; - if (isOpX(a)){ - for (unsigned i = 0; i < a->arity(); i++){ - getConj(a->arg(i), conjs); - } - } else { - conjs.insert(a); - } - } - - inline static void getDisj (Expr a, ExprSet &disjs) - { - if (isOpX(a)) return; - if (isOpX(a)){ - for (unsigned i = 0; i < a->arity(); i++){ - getDisj(a->arg(i), disjs); - } - } else { - disjs.insert(a); - } - } - /** * To rem */ @@ -874,39 +939,28 @@ namespace ufo return exp; } - inline static Expr mergeIneqs(Expr exp1, Expr exp2) + struct EqMiner : public std::unary_function { - Expr res; + ExprSet& eqs; + Expr& var; - exp1 = simplIneqMover(exp1); - exp2 = simplIneqMover(exp2); + EqMiner (Expr& _var, ExprSet& _eqs): var(_var), eqs(_eqs) {}; - Expr e1l = exp1->left(); - Expr e2l = exp2->left(); - - // hack for now - if (isOpX(e1l) && isOpX(e1l->left())) return NULL; - if (isOpX(e2l) && isOpX(e2l->left())) return NULL; - - if (isOpX(exp1) && isOpX(exp2)) { - res = mk(e1l, e2l); - } else if (isOpX(exp1) && isOpX(exp2)) { - res = mk(e1l, e2l); - } else if (isOpX(exp1) && isOpX(exp2)) { - res = mk(e1l, e2l); - } else if (isOpX(exp1) && isOpX(exp2)) { - res = mk(e1l, e2l); - } else if (isOpX(exp1) && isOpX(exp2)) { - res = mk(e1l, e2l); - } else if (isOpX(exp1) && isOpX(exp2)) { - res = mk(e1l, e2l); - } else if (isOpX(exp1) && isOpX(exp2)) { - res = mk(e1l, e2l); - } else if (isOpX(exp1) && isOpX(exp2)) { - res = mk(e1l, e2l); + VisitAction operator() (Expr exp) + { + if (isOpX(exp) && (exp->left() == var || exp->right() == var)) + { + eqs.insert(exp); + return VisitAction::skipKids (); + } + return VisitAction::doKids (); } + }; - return res; + inline void getEqualities (Expr exp, Expr var, ExprSet& eqs) + { + EqMiner trm (var, eqs); + dagVisit (trm, exp); } } diff --git a/include/ae/SMTUtils.hpp b/include/ae/SMTUtils.hpp index e1cbb1577..d1a38c20f 100644 --- a/include/ae/SMTUtils.hpp +++ b/include/ae/SMTUtils.hpp @@ -24,35 +24,76 @@ namespace ufo z3(efac), smt (z3) {} - + + Expr getModel(ExprVector& vars) + { + ExprVector eqs; + ZSolver::Model m = smt.getModel(); + for (auto & v : vars) if (v != m.eval(v)) + { + eqs.push_back(mk(v, m.eval(v))); + } + return conjoin (eqs, efac); + } + /** * SMT-check */ - bool isSat(Expr a) + bool isSat(Expr a, Expr b) { smt.reset(); smt.assertExpr (a); + smt.assertExpr (b); if (!smt.solve ()) { return false; } return true; } - + + /** + * SMT-check + */ + bool isSat(Expr a, Expr b, Expr c) + { + smt.reset(); + smt.assertExpr (a); + smt.assertExpr (b); + smt.assertExpr (c); + if (!smt.solve ()) { + return false; + } + return true; + } + + /** + * SMT-check + */ + bool isSat(Expr a, bool reset=true) + { + if (reset) smt.reset(); + smt.assertExpr (a); + if (!smt.solve ()) { + return false; + } + return true; + } + /** * SMT-based formula equivalence check */ bool isEquiv(Expr a, Expr b) { - return !isSat(mk(a, mk(b))) && - !isSat(mk(b, mk(a))); + return implies (a, b) && implies (b, a); } /** * SMT-based implication check */ - bool isImplies (Expr a, Expr b) + bool implies (Expr a, Expr b) { - return ! isSat(mk(a, mk(b))); + if (isOpX(b)) return true; + if (isOpX(a)) return true; + return ! isSat(a, mk(b)); } /** @@ -60,7 +101,7 @@ namespace ufo */ bool isTrue(Expr a){ if (isOpX(a)) return true; - return isEquiv(a, mk(efac)); + return !isSat(mk(a)); } /** @@ -68,9 +109,25 @@ namespace ufo */ bool isFalse(Expr a){ if (isOpX(a)) return true; - return isEquiv(a, mk(efac)); + return !isSat(a); } - + + /** + * Check if v has only one sat assignment in phi + */ + bool hasOneModel(Expr v, Expr phi) { + if (isFalse(phi)) return false; + + ZSolver::Model m = smt.getModel(); + Expr val = m.eval(v); + if (v == val) return false; + + ExprSet assumptions; + assumptions.insert(mk(v, val)); + + return (!isSat(conjoin(assumptions, efac), false)); + } + /** * ITE-simplifier (prt 2) */ @@ -84,16 +141,21 @@ namespace ufo Expr br1 = ex->arg(1); Expr br2 = ex->arg(2); - if (!isSat(upLevelCond)) return simplifyITE(br1, mk(efac)); - + Expr updCond1 = mk(upLevelCond, mk(cond)); + Expr updCond2 = mk(mk(upLevelCond), cond); + + if (!isSat(updCond1)) return br1; + + if (!isSat(updCond2)) return br2; + return mk(cond, - simplifyITE(br1, mk(upLevelCond, cond)), - simplifyITE(br2, mk(upLevelCond, mk(cond)))); + simplifyITE(br1, updCond1), + simplifyITE(br2, updCond2)); } else { return ex; } } - + /** * ITE-simplifier (prt 1) */ @@ -132,29 +194,68 @@ namespace ufo return ex; } + /** + * Remove some redundant conjuncts from the set of formulas + */ + void removeRedundantConjuncts(ExprSet& conjs) + { + if (conjs.size() < 2) return; + ExprSet newCnjs = conjs; + + for (auto & cnj : conjs) + { + if (isTrue (cnj)) + { + newCnjs.erase(cnj); + continue; + } + + ExprSet newCnjsTry = newCnjs; + newCnjsTry.erase(cnj); + + if (implies (conjoin(newCnjsTry, efac), cnj)) newCnjs.erase(cnj); + } + conjs = newCnjs; + } + /** * Remove some redundant conjuncts from the formula */ Expr removeRedundantConjuncts(Expr exp) { - ExprSet newCnjs; ExprSet conjs; getConj(exp, conjs); - if (conjs.size() < 2) return exp; + else + { + removeRedundantConjuncts(conjs); + return conjoin(conjs, efac); + } + } + + /** + * Remove some redundant disjuncts from the formula + */ + Expr removeRedundantDisjuncts(Expr exp) + { + ExprSet newDisj; + ExprSet disjs; + getDisj(exp, disjs); - for (auto & cnj : conjs) // GF: todo: incremental solving + if (disjs.size() < 2) return exp; + + for (auto & disj : disjs) // GF: todo: incremental solving { - if (isTrue (cnj)) continue; + if (isFalse (disj)) continue; - if (isEquiv (conjoin(newCnjs, efac), mk(conjoin(newCnjs, efac), cnj))) continue; + if (isEquiv (disjoin(newDisj, efac), mk(disjoin(newDisj, efac), disj))) continue; - newCnjs.insert(cnj); + newDisj.insert(disj); } - return conjoin(newCnjs, efac); + return disjoin(newDisj, efac); } - + /** * Model-based simplification of a formula with 1 (one only) variable */ @@ -173,7 +274,14 @@ namespace ufo } return exp; } - + + void serialize_formula(Expr form) + { + smt.reset(); + smt.assertExpr(form); + smt.toSmtLib (outs()); + outs().flush (); + } }; /** @@ -215,7 +323,6 @@ namespace ufo fp.addRule(allVars, boolop::limp (mk (B, itpApp), errApp)); tribool res; - try { res = fp.query(errApp); } catch (z3::exception &e){ @@ -225,7 +332,7 @@ namespace ufo exit(55); } - if (res) return mk (efac); + if (res) return NULL; return fp.getCoverDelta(itpApp); } diff --git a/include/ufo/Expr.hpp b/include/ufo/Expr.hpp index 9e25c2f9a..3ee754a4e 100644 --- a/include/ufo/Expr.hpp +++ b/include/ufo/Expr.hpp @@ -760,9 +760,9 @@ namespace expr static inline void print (std::ostream &OS, const mpz_class &v, int depth, bool brkt) { - /* print large numbers in hex */ + /* print large numbers in hex if (v >= 65535 || v <= -65535) - OS << std::hex << std::showbase; + OS << std::hex << std::showbase; */ OS << v; @@ -2711,6 +2711,23 @@ namespace expr { return exp == s ? VisitAction::changeTo (t) : VisitAction::doKids (); } }; + struct RAVALL: public std::unary_function + { + ExprVector* s; + ExprVector* t; + unsigned int sz; + + RAVALL (ExprVector* _s, ExprVector* _t) : s(_s), t(_t), sz(_s->size()) { } + VisitAction operator() (Expr exp) const + { + // TODO: could be optimized further, + // e.g., when all elements of s and t have the same type... + for (unsigned int i = 0; i < sz; i++ ) + if (exp == s->at(i)) return VisitAction::changeTo (t->at(i)); + return VisitAction::doKids (); + } + }; + struct RAVSIMP: public std::unary_function { Expr s; @@ -2829,6 +2846,24 @@ namespace expr } }; + template + struct ContainsOp : public std::unary_function + { + bool found; + + ContainsOp () : found(false) {} + + VisitAction operator() (Expr exp) + { + if (found || isOpX(exp)) + { + found = true; + return VisitAction::skipKids (); + } + return VisitAction::doKids (); + } + }; + struct SIZE : public std::unary_function { size_t count; @@ -2896,6 +2931,14 @@ namespace expr return dagVisit (rav, exp); } + // pairwise replacing + inline Expr replaceAll (Expr exp, ExprVector& s, ExprVector& t) + { + assert(s.size() == t.size()); + RAVALL rav(&s, &t); + return dagVisit (rav, exp); + } + /** Replace all occurrences of s by t while simplifying the result */ inline Expr replaceAllSimplify (Expr exp, Expr s, Expr t) { @@ -2983,8 +3026,15 @@ namespace expr CV cv(e2); dagVisit (cv, e1); return cv.found; - } + } + /** Returns true if e1 contains applications of T */ + template inline bool containsOp (Expr e1) + { + ContainsOp co; + dagVisit (co, e1); + return co.found; + } namespace op { diff --git a/tools/aeval/Ae.cpp b/tools/aeval/Ae.cpp index 94c4eb675..fb8ff54a1 100644 --- a/tools/aeval/Ae.cpp +++ b/tools/aeval/Ae.cpp @@ -9,6 +9,7 @@ using namespace ufo; * = S-part (over x) * = T-part (over x, y) * --skol = to print skolem function + * --debug = to print more info and perform sanity checks * * Notably, the tool automatically recognizes x and y based on their appearances in S or T. * @@ -60,6 +61,7 @@ int main (int argc, char ** argv) aeSolveAndSkolemize(z3_from_smtlib_file (z3, getSmtFileName(1, argc, argv)), z3_from_smtlib_file (z3, getSmtFileName(2, argc, argv)), + getBoolValue("--debug", false, argc, argv), getBoolValue("--skol", false, argc, argv)); return 0; From 55873cfe0b3273f198b6ebda2619ec73130f81cb Mon Sep 17 00:00:00 2001 From: grigoryfedyukovich Date: Thu, 6 Sep 2018 10:42:11 -0400 Subject: [PATCH 14/40] simple induction-based SMT solver for ADTs --- bench_adt/heap_insert.smt2 | 43 +++ bench_adt/heap_insert_multi.smt2 | 47 ++++ bench_adt/heap_size.smt2 | 8 + bench_adt/list_append_ass.smt2 | 8 + bench_adt/list_append_len.smt2 | 12 + bench_adt/list_append_nil.smt2 | 8 + bench_adt/list_len.smt2 | 8 + bench_adt/list_len_butlast.smt2 | 19 ++ bench_adt/list_rev.smt2 | 15 + bench_adt/list_rev2.smt2 | 21 ++ bench_adt/list_rev2_append.smt2 | 15 + bench_adt/list_rev2_len.smt2 | 20 ++ bench_adt/list_rev_append.smt2 | 18 ++ bench_adt/queue_amort.smt2 | 32 +++ bench_adt/queue_len.smt2 | 33 +++ bench_adt/queue_popback.smt2 | 34 +++ bench_adt/queue_push.smt2 | 35 +++ bench_adt/queue_push_to_list.smt2 | 39 +++ bench_adt/tree_insert_all_size.smt2 | 21 ++ bench_adt/tree_insert_size.smt2 | 12 + bench_adt/tree_size.smt2 | 8 + include/adt/ADTSolver.hpp | 407 ++++++++++++++++++++++++++++ include/ae/ExprSimpl.hpp | 135 +++++++++ include/ufo/Expr.hpp | 20 +- include/ufo/Smt/Z3n.hpp | 6 +- include/ufo/Smt/ZExprConverter.hpp | 106 +++++--- tools/CMakeLists.txt | 2 +- tools/adt/Adt.cpp | 44 +++ tools/adt/CMakeLists.txt | 4 + 29 files changed, 1126 insertions(+), 54 deletions(-) create mode 100644 bench_adt/heap_insert.smt2 create mode 100644 bench_adt/heap_insert_multi.smt2 create mode 100644 bench_adt/heap_size.smt2 create mode 100644 bench_adt/list_append_ass.smt2 create mode 100644 bench_adt/list_append_len.smt2 create mode 100644 bench_adt/list_append_nil.smt2 create mode 100644 bench_adt/list_len.smt2 create mode 100644 bench_adt/list_len_butlast.smt2 create mode 100644 bench_adt/list_rev.smt2 create mode 100644 bench_adt/list_rev2.smt2 create mode 100644 bench_adt/list_rev2_append.smt2 create mode 100644 bench_adt/list_rev2_len.smt2 create mode 100644 bench_adt/list_rev_append.smt2 create mode 100644 bench_adt/queue_amort.smt2 create mode 100644 bench_adt/queue_len.smt2 create mode 100644 bench_adt/queue_popback.smt2 create mode 100644 bench_adt/queue_push.smt2 create mode 100644 bench_adt/queue_push_to_list.smt2 create mode 100644 bench_adt/tree_insert_all_size.smt2 create mode 100644 bench_adt/tree_insert_size.smt2 create mode 100644 bench_adt/tree_size.smt2 create mode 100644 include/adt/ADTSolver.hpp create mode 100644 tools/adt/Adt.cpp create mode 100644 tools/adt/CMakeLists.txt diff --git a/bench_adt/heap_insert.smt2 b/bench_adt/heap_insert.smt2 new file mode 100644 index 000000000..aca7e872f --- /dev/null +++ b/bench_adt/heap_insert.smt2 @@ -0,0 +1,43 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-datatypes () ((Heap (hleaf) (heap (rk Int) (value Int) (hleft Heap) (hright Heap))))) +(declare-fun rightHeight (Heap) Int) +(assert (= (rightHeight hleaf) 0)) +(assert (forall ((k Int) (v Int) (l Heap) (r Heap)) (= (rightHeight (heap k v l r)) (+ 1 (rightHeight r))))) + +(declare-fun rank (Heap) Int) +(assert (= (rank hleaf) 0)) +(assert (forall ((k Int) (v Int) (l Heap) (r Heap)) (= (rank (heap k v l r)) k))) + +(declare-fun hasLeftistProperty (Heap) Bool) +(assert (hasLeftistProperty hleaf)) +(assert (forall ((k Int) (v Int) (l Heap) (r Heap)) + (= (hasLeftistProperty (heap k v l r)) + (and (hasLeftistProperty l) (hasLeftistProperty r) + (<= (rightHeight r) (rightHeight l)) + (= k (+ 1 (rightHeight r))))))) + +(declare-fun hsize (Heap) Int) +(assert (= (hsize hleaf) 0)) +(assert (forall ((k Int) (v Int) (l Heap) (r Heap)) (= (hsize (heap k v l r)) (+ 1 (+ (hsize l) (hsize r)))))) + +(declare-fun mergea (Int Heap Heap) Heap) +(assert (forall ((v Int) (l Heap) (r Heap)) + (= (mergea v l r) (ite (<= (rank r) (rank l)) (heap (+ 1 (rank r)) v l r) (heap (+ 1 (rank l)) v r l))))) + +(declare-fun merge (Heap Heap) Heap) +(assert (forall ((h Heap)) (= (merge h hleaf) h))) +(assert (forall ((h Heap)) (= (merge hleaf h) h))) +(assert (forall ((k1 Int) (v1 Int) (l1 Heap) (r1 Heap) (k2 Int) (v2 Int) (l2 Heap) (r2 Heap)) + (= (merge (heap k1 v1 l1 r1) (heap k2 v2 l2 r2)) + (ite (< v2 v1) (mergea v1 l1 (merge r1 (heap k2 v2 l2 r2))) + (mergea v2 l2 (merge (heap k1 v1 l1 r1) r2)))))) + +(declare-fun hinsert (Heap Int) Heap) +(assert (forall ((h Heap) (n Int)) (= (hinsert h n) (merge (heap 1 n hleaf hleaf) h)))) + +; extra lemmas +(assert (forall ((x Heap)) (>= (hsize x) 0))) + +(assert (not (forall ((x Heap) (n Int)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert x n)))))) +(check-sat) diff --git a/bench_adt/heap_insert_multi.smt2 b/bench_adt/heap_insert_multi.smt2 new file mode 100644 index 000000000..6c1a48004 --- /dev/null +++ b/bench_adt/heap_insert_multi.smt2 @@ -0,0 +1,47 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-datatypes () ((Heap (hleaf) (heap (rk Int) (value Int) (hleft Heap) (hright Heap))))) +(declare-fun rightHeight (Heap) Int) +(assert (= (rightHeight hleaf) 0)) +(assert (forall ((k Int) (v Int) (l Heap) (r Heap)) (= (rightHeight (heap k v l r)) (+ 1 (rightHeight r))))) + +(declare-fun rank (Heap) Int) +(assert (= (rank hleaf) 0)) +(assert (forall ((k Int) (v Int) (l Heap) (r Heap)) (= (rank (heap k v l r)) k))) + +(declare-fun hasLeftistProperty (Heap) Bool) +(assert (hasLeftistProperty hleaf)) +(assert (forall ((k Int) (v Int) (l Heap) (r Heap)) + (= (hasLeftistProperty (heap k v l r)) + (and (hasLeftistProperty l) (hasLeftistProperty r) + (<= (rightHeight r) (rightHeight l)) + (= k (+ 1 (rightHeight r))))))) + +(declare-fun hsize (Heap) Int) +(assert (= (hsize hleaf) 0)) +(assert (forall ((k Int) (v Int) (l Heap) (r Heap)) (= (hsize (heap k v l r)) (+ 1 (+ (hsize l) (hsize r)))))) + +(declare-fun mergea (Int Heap Heap) Heap) +(assert (forall ((v Int) (l Heap) (r Heap)) + (= (mergea v l r) (ite (<= (rank r) (rank l)) (heap (+ 1 (rank r)) v l r) (heap (+ 1 (rank l)) v r l))))) + +(declare-fun merge (Heap Heap) Heap) +(assert (forall ((h Heap)) (= (merge h hleaf) h))) +(assert (forall ((h Heap)) (= (merge hleaf h) h))) +(assert (forall ((k1 Int) (v1 Int) (l1 Heap) (r1 Heap) (k2 Int) (v2 Int) (l2 Heap) (r2 Heap)) + (= (merge (heap k1 v1 l1 r1) (heap k2 v2 l2 r2)) + (ite (< v2 v1) (mergea v1 l1 (merge r1 (heap k2 v2 l2 r2))) + (mergea v2 l2 (merge (heap k1 v1 l1 r1) r2)))))) + +(declare-fun hinsert (Heap Int) Heap) +(assert (forall ((h Heap) (n Int)) (= (hinsert h n) (merge (heap 1 n hleaf hleaf) h)))) + +(declare-fun hinsert-all (Lst Heap) Heap) +(assert (forall ((h Heap)) (= (hinsert-all nil h) h))) +(assert (forall ((h Heap) (n Int) (l Lst)) (= (hinsert-all (cons n l) h) (hinsert (hinsert-all l h) n)))) + +; extra lemmas +(assert (forall ((x Heap) (n Int)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert x n))))) + +(assert (not (forall ((l Lst) (x Heap)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert-all l x)))))) +(check-sat) diff --git a/bench_adt/heap_size.smt2 b/bench_adt/heap_size.smt2 new file mode 100644 index 000000000..b91d1e4ce --- /dev/null +++ b/bench_adt/heap_size.smt2 @@ -0,0 +1,8 @@ +(declare-datatypes () ((Heap (hleaf) (heap (rk Int) (value Int) (hleft Heap) (hright Heap))))) + +(declare-fun hsize (Heap) Int) +(assert (= (hsize hleaf) 0)) +(assert (forall ((k Int) (v Int) (l Heap) (r Heap)) (= (hsize (heap k v l r)) (+ 1 (+ (hsize l) (hsize r)))))) + +(assert (not (forall ((x Heap)) (>= (hsize x) 0)))) +(check-sat) diff --git a/bench_adt/list_append_ass.smt2 b/bench_adt/list_append_ass.smt2 new file mode 100644 index 000000000..d5efa5605 --- /dev/null +++ b/bench_adt/list_append_ass.smt2 @@ -0,0 +1,8 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Int) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(assert (not (forall ((x Lst) (y Lst) (z Lst)) (= (append x (append y z)) (append (append x y) z))))) +(check-sat) diff --git a/bench_adt/list_append_len.smt2 b/bench_adt/list_append_len.smt2 new file mode 100644 index 000000000..2ea8a127f --- /dev/null +++ b/bench_adt/list_append_len.smt2 @@ -0,0 +1,12 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Int) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Int) +(assert (= (len nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (len (cons x y)) (+ 1 (len y))))) + +(assert (not (forall ((x Lst) (y Lst)) (= (+ (len x) (len y)) (len (append x y)))))) +(check-sat) diff --git a/bench_adt/list_append_nil.smt2 b/bench_adt/list_append_nil.smt2 new file mode 100644 index 000000000..78aab7857 --- /dev/null +++ b/bench_adt/list_append_nil.smt2 @@ -0,0 +1,8 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Int) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(assert (not (forall ((x Lst)) (= x (append x nil))))) +(check-sat) diff --git a/bench_adt/list_len.smt2 b/bench_adt/list_len.smt2 new file mode 100644 index 000000000..f1f1c370a --- /dev/null +++ b/bench_adt/list_len.smt2 @@ -0,0 +1,8 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun len (Lst) Int) +(assert (= (len nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (len (cons x y)) (+ 1 (len y))))) + +(assert (not (forall ((x Lst)) (>= (len x) 0)))) +(check-sat) diff --git a/bench_adt/list_len_butlast.smt2 b/bench_adt/list_len_butlast.smt2 new file mode 100644 index 000000000..575280239 --- /dev/null +++ b/bench_adt/list_len_butlast.smt2 @@ -0,0 +1,19 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Int) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Int) +(assert (= (len nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (len (cons x y)) (+ 1 (len y))))) + +(declare-fun butlast (Lst) Lst) +(assert (= (butlast nil) nil)) +(assert (forall ((n Int) (x Lst)) (= (butlast (cons n x)) (ite (= x nil) nil (cons n (butlast x)))))) + +; extra lemma +(assert (forall ((x Lst) (n Int)) (= (= (cons n x) nil) false))) + +(assert (not (forall ((x Lst) (n Int)) (= (+ 1 (len (butlast (cons n x)))) (len (cons n x)))))) +(check-sat) diff --git a/bench_adt/list_rev.smt2 b/bench_adt/list_rev.smt2 new file mode 100644 index 000000000..5e0a26435 --- /dev/null +++ b/bench_adt/list_rev.smt2 @@ -0,0 +1,15 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Int) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun rev (Lst) Lst) +(assert (= (rev nil) nil)) +(assert (forall ((x Int) (y Lst)) (= (rev (cons x y)) (append (rev y) (cons x nil))))) + +; extra lemmas +(assert (forall ((x Lst) (y Lst)) (= (rev (append x y)) (append (rev y) (rev x))))) + +(assert (not (forall ((x Lst)) (= (rev (rev x)) x)))) +(check-sat) diff --git a/bench_adt/list_rev2.smt2 b/bench_adt/list_rev2.smt2 new file mode 100644 index 000000000..4e283cae8 --- /dev/null +++ b/bench_adt/list_rev2.smt2 @@ -0,0 +1,21 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Int) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun rev (Lst) Lst) +(assert (= (rev nil) nil)) +(assert (forall ((x Int) (y Lst)) (= (rev (cons x y)) (append (rev y) (cons x nil))))) + +(declare-fun rev2 (Lst Lst) Lst) +(assert (forall ((a Lst)) (= (rev2 nil a) a))) +(assert (forall ((x Int) (t Lst) (a Lst)) (= (rev2 (cons x t) a) (rev2 t (cons x a))))) + +; extra lemmas +(assert (forall ((x Lst) (a Lst)) (= (rev2 x a) (append (rev2 x nil) a)))) + +; needs just "--ind 3,5,6,7" + +(assert (not (forall ((x Lst)) (= (rev2 x nil) (rev x))))) +(check-sat) diff --git a/bench_adt/list_rev2_append.smt2 b/bench_adt/list_rev2_append.smt2 new file mode 100644 index 000000000..21e038bc3 --- /dev/null +++ b/bench_adt/list_rev2_append.smt2 @@ -0,0 +1,15 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Int) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun rev2 (Lst Lst) Lst) +(assert (forall ((a Lst)) (= (rev2 nil a) a))) +(assert (forall ((x Int) (t Lst) (a Lst)) (= (rev2 (cons x t) a) (rev2 t (cons x a))))) + +; extra lemma +(assert (forall ((x Lst) (y Lst) (z Lst)) (= (append (append x y) z) (append x (append y z))))) + +(assert (not (forall ((x Lst) (a Lst)) (= (rev2 x a) (append (rev2 x nil) a))))) +(check-sat) diff --git a/bench_adt/list_rev2_len.smt2 b/bench_adt/list_rev2_len.smt2 new file mode 100644 index 000000000..270e5d51a --- /dev/null +++ b/bench_adt/list_rev2_len.smt2 @@ -0,0 +1,20 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun len (Lst) Int) +(assert (= (len nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (len (cons x y)) (+ 1 (len y))))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Int) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun rev2 (Lst Lst) Lst) +(assert (forall ((a Lst)) (= (rev2 nil a) a))) +(assert (forall ((x Int) (t Lst) (a Lst)) (= (rev2 (cons x t) a) (rev2 t (cons x a))))) + +;extra lemmas +(assert (forall ((x Lst) (a Lst)) (= (rev2 x a) (append (rev2 x nil) a)))) +(assert (forall ((x Lst) (y Lst)) (= (len (append x y)) (+ (len x) (len y))))) + +(assert (not (forall ((x Lst)) (= (len (rev2 x nil)) (len x))))) +(check-sat) diff --git a/bench_adt/list_rev_append.smt2 b/bench_adt/list_rev_append.smt2 new file mode 100644 index 000000000..9274b929b --- /dev/null +++ b/bench_adt/list_rev_append.smt2 @@ -0,0 +1,18 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Int) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun rev (Lst) Lst) +(assert (= (rev nil) nil)) +(assert (forall ((x Int) (y Lst)) (= (rev (cons x y)) (append (rev y) (cons x nil))))) + +; extra lemmas +(assert (forall ((x Lst)) (= x (append x nil)))) +(assert (forall ((x Lst) (y Lst) (z Lst)) (= (append (append x y) z) (append x (append y z))))) + +; can be proved using this: --ind 1,3,6,5,3 + +(assert (not (forall ((x Lst) (y Lst)) (= (rev (append x y)) (append (rev y) (rev x)))))) +(check-sat) diff --git a/bench_adt/queue_amort.smt2 b/bench_adt/queue_amort.smt2 new file mode 100644 index 000000000..fc0b73fae --- /dev/null +++ b/bench_adt/queue_amort.smt2 @@ -0,0 +1,32 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun len (Lst) Int) +(assert (= (len nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (len (cons x y)) (+ 1 (len y))))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Int) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun rev2 (Lst Lst) Lst) +(assert (forall ((a Lst)) (= (rev2 nil a) a))) +(assert (forall ((x Int) (t Lst) (a Lst)) (= (rev2 (cons x t) a) (rev2 t (cons x a))))) + +(declare-fun qrev (Lst) Lst) +(assert (forall ((x Lst)) (= (qrev x) (rev2 x nil)))) + +(declare-fun amortizeQueue (Lst Lst) Queue) +(assert (forall ((x Lst) (y Lst)) (= (amortizeQueue x y) + (ite (<= (len y) (len x)) + (queue x y) + (queue (append x (qrev y)) nil))))) + +(declare-fun isAmortized (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isAmortized (queue x y)) (<= (len y) (len x))))) + +;extra lemmas: +(assert (forall ((x Lst)) (<= 0 (len x)))) + +(assert (not (forall ((x Lst) (y Lst)) (isAmortized (amortizeQueue x y))))) +(check-sat) diff --git a/bench_adt/queue_len.smt2 b/bench_adt/queue_len.smt2 new file mode 100644 index 000000000..84fe86626 --- /dev/null +++ b/bench_adt/queue_len.smt2 @@ -0,0 +1,33 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun len (Lst) Int) +(assert (= (len nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (len (cons x y)) (+ 1 (len y))))) + +(declare-fun qlen (Queue) Int) +(assert (forall ((x Lst) (y Lst)) (= (qlen (queue x y)) (+ (len x) (len y))))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Int) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun rev2 (Lst Lst) Lst) +(assert (forall ((a Lst)) (= (rev2 nil a) a))) +(assert (forall ((x Int) (t Lst) (a Lst)) (= (rev2 (cons x t) a) (rev2 t (cons x a))))) + +(declare-fun qrev (Lst) Lst) +(assert (forall ((x Lst)) (= (qrev x) (rev2 x nil)))) + +(declare-fun amortizeQueue (Lst Lst) Queue) +(assert (forall ((x Lst) (y Lst)) (= (amortizeQueue x y) + (ite (<= (len y) (len x)) + (queue x y) + (queue (append x (qrev y)) nil))))) + +; extra lemmas +(assert (forall ((x Lst)) (= (len (rev2 x nil)) (len x)))) +(assert (forall ((x Lst) (y Lst)) (= (len (append x y)) (+ (len x) (len y))))) + +(assert (not (forall ((x Lst) (y Lst)) (= (qlen (amortizeQueue x y)) (+ (len x) (len y)))))) +(check-sat) diff --git a/bench_adt/queue_popback.smt2 b/bench_adt/queue_popback.smt2 new file mode 100644 index 000000000..c5976b9d0 --- /dev/null +++ b/bench_adt/queue_popback.smt2 @@ -0,0 +1,34 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun len (Lst) Int) +(assert (= (len nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (len (cons x y)) (+ 1 (len y))))) + +(declare-fun qlen (Queue) Int) +(assert (forall ((x Lst) (y Lst)) (= (qlen (queue x y)) (+ (len x) (len y))))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Int) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun butlast (Lst) Lst) +(assert (= (butlast nil) nil)) +(assert (forall ((n Int) (x Lst)) (= (butlast (cons n x)) + (ite (= x nil) nil (cons n (butlast x)))))) + +(declare-fun qpopback (Queue) Queue) +(assert (forall ((x Lst) (y Lst) (n Int)) (= (qpopback (queue x (cons n y))) (queue x y)))) +(assert (forall ((x Lst)) (= (qpopback (queue x nil)) (queue (butlast x) nil)))) + +(declare-fun isAmortized (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isAmortized (queue x y)) (<= (len y) (len x))))) + +(declare-fun isEmpty (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isEmpty (queue x y)) (and (= x nil) (= y nil))))) + +; extra lemma +(assert (forall ((x Lst) (n Int)) (= (len (butlast (cons n x))) (len x)))) + +(assert (not (forall ((q Queue) (n Int)) (=> (and (isAmortized q) (not (isEmpty q))) (= (+ 1 (qlen (qpopback q))) (qlen q)))))) +(check-sat) diff --git a/bench_adt/queue_push.smt2 b/bench_adt/queue_push.smt2 new file mode 100644 index 000000000..291c10fab --- /dev/null +++ b/bench_adt/queue_push.smt2 @@ -0,0 +1,35 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun len (Lst) Int) +(assert (= (len nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (len (cons x y)) (+ 1 (len y))))) + +(declare-fun qlen (Queue) Int) +(assert (forall ((x Lst) (y Lst)) (= (qlen (queue x y)) (+ (len x) (len y))))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Int) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun rev2 (Lst Lst) Lst) +(assert (forall ((a Lst)) (= (rev2 nil a) a))) +(assert (forall ((x Int) (t Lst) (a Lst)) (= (rev2 (cons x t) a) (rev2 t (cons x a))))) + +(declare-fun qrev (Lst) Lst) +(assert (forall ((x Lst)) (= (qrev x) (rev2 x nil)))) + +(declare-fun amortizeQueue (Lst Lst) Queue) +(assert (forall ((x Lst) (y Lst)) (= (amortizeQueue x y) + (ite (<= (len y) (len x)) + (queue x y) + (queue (append x (qrev y)) nil))))) + +(declare-fun qpush (Queue Int) Queue) +(assert (forall ((x Lst) (y Lst) (n Int)) (= (qpush (queue x y) n) (amortizeQueue x (cons n y))))) + +; extra lemma +(assert (forall ((x Lst) (y Lst)) (= (qlen (amortizeQueue x y)) (+ (len x) (len y))))) + +(assert (not (forall ((q Queue) (n Int)) (= (qlen (qpush q n)) (+ 1 (qlen q)))))) +(check-sat) diff --git a/bench_adt/queue_push_to_list.smt2 b/bench_adt/queue_push_to_list.smt2 new file mode 100644 index 000000000..c6ec3ad3d --- /dev/null +++ b/bench_adt/queue_push_to_list.smt2 @@ -0,0 +1,39 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun len (Lst) Int) +(assert (= (len nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (len (cons x y)) (+ 1 (len y))))) + +(declare-fun qlen (Queue) Int) +(assert (forall ((x Lst) (y Lst)) (= (qlen (queue x y)) (+ (len x) (len y))))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Int) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun rev2 (Lst Lst) Lst) +(assert (forall ((a Lst)) (= (rev2 nil a) a))) +(assert (forall ((x Int) (t Lst) (a Lst)) (= (rev2 (cons x t) a) (rev2 t (cons x a))))) + +(declare-fun qrev (Lst) Lst) +(assert (forall ((x Lst)) (= (qrev x) (rev2 x nil)))) + +(declare-fun amortizeQueue (Lst Lst) Queue) +(assert (forall ((x Lst) (y Lst)) (= (amortizeQueue x y) + (ite (<= (len y) (len x)) + (queue x y) + (queue (append x (qrev y)) nil))))) + +(declare-fun qpush (Queue Int) Queue) +(assert (forall ((x Lst) (y Lst) (n Int)) (= (qpush (queue x y) n) (amortizeQueue x (cons n y))))) + +(declare-fun queue-to-lst (Queue) Lst) +(assert (forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (append x (qrev y))))) + +; extra lemmas +(assert (forall ((x Lst) (y Lst) (z Lst)) (= (append (append x y) z) (append x (append y z))))) +(assert (forall ((x Lst) (a Lst)) (= (rev2 x a) (append (rev2 x nil) a)))) + +(assert (not (forall ((q Queue) (n Int)) (= (append (queue-to-lst q) (cons n nil)) (queue-to-lst (qpush q n)))))) +(check-sat) diff --git a/bench_adt/tree_insert_all_size.smt2 b/bench_adt/tree_insert_all_size.smt2 new file mode 100644 index 000000000..412dc4556 --- /dev/null +++ b/bench_adt/tree_insert_all_size.smt2 @@ -0,0 +1,21 @@ +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) + +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun tinsert (Tree Int) Tree) +(assert (forall ((i Int)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int)) (= (tinsert (node d l r) i) (ite (< d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun tinsert-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tinsert-all x nil) x))) +(assert (forall ((x Tree) (n Int) (l Lst)) (= (tinsert-all x (cons n l)) (tinsert (tinsert-all x l) n)))) + +(declare-fun tsize (Tree) Int) +(assert (= (tsize leaf) 0)) +(assert (forall ((x Int) (l Tree) (r Tree)) (= (tsize (node x l r)) (+ 1 (+ (tsize l) (tsize r)))))) + +; extra lemmas +(assert (forall ((t Tree) (n Int)) (= (tsize (tinsert t n)) (+ 1 (tsize t))))) + +(assert (not (forall ((l Lst) (t Tree)) (<= (tsize t) (tsize (tinsert-all t l)))))) +(check-sat) diff --git a/bench_adt/tree_insert_size.smt2 b/bench_adt/tree_insert_size.smt2 new file mode 100644 index 000000000..9072ee375 --- /dev/null +++ b/bench_adt/tree_insert_size.smt2 @@ -0,0 +1,12 @@ +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Int) Tree) +(assert (forall ((i Int)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int)) (= (tinsert (node d l r) i) (ite (< d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun tsize (Tree) Int) +(assert (= (tsize leaf) 0)) +(assert (forall ((x Int) (l Tree) (r Tree)) (= (tsize (node x l r)) (+ 1 (+ (tsize l) (tsize r)))))) + +(assert (not (forall ((t Tree) (n Int)) (= (tsize (tinsert t n)) (+ 1 (tsize t)))))) +(check-sat) diff --git a/bench_adt/tree_size.smt2 b/bench_adt/tree_size.smt2 new file mode 100644 index 000000000..3ff42ce72 --- /dev/null +++ b/bench_adt/tree_size.smt2 @@ -0,0 +1,8 @@ +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tsize (Tree) Int) +(assert (= (tsize leaf) 0)) +(assert (forall ((x Int) (l Tree) (r Tree)) (= (tsize (node x l r)) (+ 1 (+ (tsize l) (tsize r)))))) + +(assert (not (forall ((x Tree)) (>= (tsize x) 0)))) +(check-sat) diff --git a/include/adt/ADTSolver.hpp b/include/adt/ADTSolver.hpp new file mode 100644 index 000000000..5785e30fd --- /dev/null +++ b/include/adt/ADTSolver.hpp @@ -0,0 +1,407 @@ +#ifndef ADTSOLVER__HPP__ +#define ADTSOLVER__HPP__ +#include +#include + +#include "ae/SMTUtils.hpp" +#include "ufo/Smt/EZ3.hh" + +using namespace std; +using namespace boost; +namespace ufo +{ + class ADTSolver + { + private: + + Expr goal; + ExprVector& assumptions; + ExprVector& constructors; + + map baseConstructors; + map indConstructors; + ExprVector rewriteHistory; + + ExprFactory &efac; + SMTUtils u; + + public: + + ADTSolver(Expr _goal, ExprVector& _assumptions, ExprVector& _constructors) : + goal(_goal), assumptions(_assumptions), constructors(_constructors), + efac(_goal->getFactory()), u(_goal->getFactory()) + { + assert(isOpX(goal)); + } + + bool simplifyGoal() + { + Expr goalQF = goal->last(); + for (auto & a : assumptions) + { + Expr goalSimpl = useAssumption(goalQF, a); + if (goalSimpl != NULL) goalQF = goalSimpl; + } + goalQF = liftITEs(goalQF); // TODO: more simplification passes + goalQF = u.simplifyITE(goalQF); + if (u.isEquiv(goalQF, mk(efac))) return true; + + goal = replaceAll(goal, goal->last(), goalQF); + rewriteHistory.push_back(goal); + return false; + } + + // main method to do rewriting + Expr useAssumption(Expr subgoal, Expr assm) + { + subgoal = liftITEs(subgoal); + if (isOpX(assm)) + { + ExprMap matching; + ExprVector args; + for (int i = 0; i < assm->arity() - 1; i++) args.push_back(bind::fapp(assm->arg(i))); + Expr assmQF = assm->last(); + Expr repl = assmQF; + + // we first search for a matching of the entire assumption (usually some inequality) + if (findMatchingSubexpr (assmQF, subgoal, args, matching)) + { + for (auto & a : matching) repl = replaceAll(repl, a.first, a.second); + Expr replaced = replaceAll(subgoal, repl, mk(efac)); + if (subgoal != replaced) return replaced; + } + if (isOpX(assmQF)) + { + matching.clear(); + + // if the assumption is equality, the we search for a matching of its LHS + // (we can try matching the RHS as well, but it will likely give us infinite loops) + if (findMatchingSubexpr (assmQF->left(), subgoal, args, matching)) + { + for (auto & a : matching) repl = replaceAll(repl, a.first, a.second); + return replaceAll(subgoal, repl->left(), repl->right()); + } + } + } + else + { + // for a quantifier-free assumption (e.g., inductive hypotheses), + // we create an SMT query and check with Z3 + // TODO: we can do so for ALL constistent quantifier-free assumptions at once + if (u.implies(assm, subgoal)) return mk(efac); + if (isOpX(assm)) + { + Expr res = replaceAll(subgoal, assm->left(), assm->right()); + if (res != subgoal) + { + return res; + } + } + } + // if nothing helped, return NULL -- it will be used for backtracking + return NULL; + } + + // this method is used when a strategy is specified from the command line + bool tryStrategy(Expr subgoal, vector& strat) + { + Expr subgoal_copy = subgoal; + for (int i : strat) + { + assert (i < assumptions.size()); + subgoal_copy = useAssumption(subgoal_copy, assumptions[i]); + if (subgoal_copy == NULL || subgoal_copy == subgoal) break; + + outs () << "rewritten [" << i << "]: " << *subgoal_copy << "\n"; + if (u.isEquiv(subgoal_copy, mk(efac))) return true; + } + return false; + } + + // this recursive method performs a naive search for a strategy + // FIXME: sometimes it diverges while applying the same rule infinite number of times + bool rewriteAssumptions(Expr subgoal) + { + if (u.isEquiv(subgoal, mk(efac))) return true; + + for (int i = 0; i < assumptions.size(); i++) + { + Expr a = assumptions[i]; + Expr res = useAssumption(subgoal, a); + if (res != NULL) + { + outs () << "rewritten [" << i << "]: " << *res << "\n"; + if (rewriteAssumptions(res)) return true; + + // backtrack: + outs () << "backtrack to: " << *subgoal << "\n"; + } + } + + return false; + } + + // preprocessing of the main goal: + // - classify constructors for all ADTs that appear in the goal + // - replace all non-inductive ADTs + void unfoldGoal() + { + ExprVector goalArgs; + Expr unfoldedGoalQF = goal->last(); + bool toRebuild = false; + for (int i = 0; i < goal->arity() - 1; i++) + { + Expr typeDecl = goal->arg(i); + for (auto & a : constructors) + { + if (a->last() == typeDecl->last()) + { + bool ind = false; + for (int i = 0; i < a->arity() - 1; i++) + { + if (a->last() == a->arg(i)) + { + ind = true; + indConstructors[typeDecl] = a; + } + } + if (!ind) baseConstructors[typeDecl] = a; + } + } + if (baseConstructors[typeDecl] != NULL && indConstructors[typeDecl] == NULL) + { + toRebuild = true; + ExprVector args; + args.push_back(baseConstructors[typeDecl]); + for (int i = 1; i < baseConstructors[typeDecl]->arity() - 1; i++) + { + Expr s = bind::mkConst(mkTerm + ("_b_" + to_string(goalArgs.size()), efac), + baseConstructors[typeDecl]->arg(i)); + goalArgs.push_back(s->last()); + args.push_back(s); + } + Expr newApp = mknary(args); + unfoldedGoalQF = replaceAll(unfoldedGoalQF, bind::fapp(typeDecl), newApp); + } + else + { + goalArgs.push_back(typeDecl); + } + } + + if (toRebuild) + { + goalArgs.push_back(unfoldedGoalQF); + goal = mknary(goalArgs); + + // continue recursively, because newly introduced vars may again need unfolding + unfoldGoal(); + } + } + + // this method can be (but not used currently) to add symmetric assumptions + // and to enable searching for RHS of assumptions + void insertSymmetricAssumption(Expr assm) + { + if (isOpX(assm)) + { + assumptions.push_back(mk(assm->right(), assm->left())); + } + else if (isOpX(assm) && isOpX(assm->last())) + { + ExprVector args; + for (int i = 0; i < assm->arity() - 1; i++) args.push_back(assm->arg(i)); + args.push_back(mk(assm->last()->right(), assm->last()->left())); + assumptions.push_back(mknary(args)); + } + } + + void printAssumptions() + { + outs () << "=========================\n"; + for (int i = 0; i < assumptions.size(); i++) + { + outs () << "Assumptions [" << i << "]: " << *assumptions[i] << "\n"; + } + } + + bool induction(int num, vector& basenums, vector& indnums) + { + assert(num < goal->arity() - 1); + Expr typeDecl = goal->arg(num); + + Expr baseConstructor = baseConstructors[typeDecl]; + Expr indConstructor = indConstructors[typeDecl]; + + if (indConstructor == NULL) + { + outs () << "The Data Type is not inductive\n"; + return false; + } + + if (baseConstructor == NULL) + { + outs () << "The Data Type is ill-defined (no base constructor)\n"; + return false; + } + + // instantiate every quantified variable (except the inductive one) in the goal + Expr goalQF = goal->last(); + for (int i = 0; i < goal->arity() - 1; i++) + { + if (i == num) continue; + Expr s = bind::mkConst(mkTerm ("_v_" + to_string(i), efac), goal->arg(i)->last()); + goalQF = replaceAll(goalQF, bind::fapp(goal->arg(i)), s); + } + + // prove the base case + Expr baseSubgoal = replaceAll(goalQF, typeDecl, baseConstructor); + printAssumptions(); + outs() << "\nBase case: " << *baseSubgoal << "\n"; + + rewriteHistory.clear(); // TODO: use it during the base case proving + + bool baseres = basenums.empty() ? + rewriteAssumptions(baseSubgoal) : + tryStrategy(baseSubgoal, basenums); + + if (!baseres) + { + outs () << " Failed\n"; + return true; + } + + // generate inductive hypotheses + ExprVector args; + ExprVector indHypotheses; + for (int i = 1; i < indConstructor->arity() - 1; i++) + { + Expr s = bind::mkConst(mkTerm ("_t_" + to_string(i), efac), indConstructor->arg(i)); + args.push_back(s); + + if (typeDecl->last() == indConstructor->arg(i)) // type check + indHypotheses.push_back(replaceAll(goalQF, bind::fapp(typeDecl), s)); + } + for (auto & a : indHypotheses) assumptions.push_back(a); + // for simplicity, add conjunction of hypotheses as a single hypothesis + // should be removed in the future (when all QF-assumptions are used at the same time) + if (indHypotheses.size() > 1) assumptions.push_back(conjoin(indHypotheses, efac)); + + // prove the inductive step + Expr indConsApp = bind::fapp(indConstructor, args); + Expr indSubgoal = replaceAll(goalQF, bind::fapp(typeDecl), indConsApp); + printAssumptions(); + outs() << "\nInductive step: " << * indSubgoal << "\n"; + + rewriteHistory.clear(); // TODO: use it during the base case proving + + bool indres = indnums.empty() ? + rewriteAssumptions(indSubgoal) : + tryStrategy(indSubgoal, indnums); + + if (indres) + { + outs () << " Proved\n"; + return true; + } + else + { + outs () << " Failed\n"; + return false; + } + } + + void solve(vector& basenums, vector& indnums) + { + unfoldGoal(); + rewriteHistory.push_back(goal); + for (int i = 0; i < 5; i++) + { + if (simplifyGoal()) + { + outs () << "Trivially Proved\n"; + return; + } + } + + // simple heuristic: if the result of every rewriting made the goal larger, we rollback + bool toRollback = true; + for (int i = 1; i < rewriteHistory.size(); i++) + { + toRollback = toRollback && + (treeSize(rewriteHistory[i-1]) < treeSize(rewriteHistory[i])); + } + + if (toRollback) goal = rewriteHistory[0]; + + outs () << "Simplified goal: " << *goal << "\n\n"; + induction(0, basenums, indnums); + } + }; + + static inline void getNums(vector& nums, char * str) + { + if (str == NULL) return; + int len = strlen(str); + char* pch = strchr(str, ','); + int pos1 = 0; + int pos2 = 0; + while (pch != NULL) + { + pos2 = pch - str; + char* substr = (char*)malloc(pos2 - pos1); + strncpy(substr, str + pos1, pos2 - pos1); + nums.push_back(atoi(substr)); + pch = strchr(pch + 1, ','); + pos1 = pos2 + 1; + } + if (pos1 == len) return; + char* substr = (char*)malloc(len - pos1); + strncpy(substr, str + pos1, len - pos1); + nums.push_back(atoi(substr)); + } + + void adtSolve(EZ3& z3, Expr s, char* basecheck, char *indcheck) + { + vector basenums; + vector indnums; + getNums(basenums, basecheck); + getNums(indnums, indcheck); + ExprVector constructors; + for (auto & a : z3.getAdtConstructors()) constructors.push_back(regularizeQF(a)); + + ExprVector assumptions; + Expr goal; + + if (isOpX(s)) + { + for (int i = 0; i < s->arity(); i++) + { + Expr a = s->arg(i); + if (isOpX(a)) + { + goal = regularizeQF(a->left()); + } + else + { + assumptions.push_back(regularizeQF(a)); + } + } + } + else if (isOpX(s)) + { + goal = regularizeQF(s->left()); + } + + if (goal == NULL) + { + outs () << "Unable to parse the query\n"; + return; + } + ADTSolver sol (goal, assumptions, constructors); + sol.solve (basenums, indnums); + } +} + +#endif diff --git a/include/ae/ExprSimpl.hpp b/include/ae/ExprSimpl.hpp index f3e7207fd..07da3457d 100644 --- a/include/ae/ExprSimpl.hpp +++ b/include/ae/ExprSimpl.hpp @@ -962,6 +962,141 @@ namespace ufo EqMiner trm (var, eqs); dagVisit (trm, exp); } + + struct QFregularizer + { + ExprVector& vars; + + QFregularizer (ExprVector& _vars): vars(_vars){}; + + Expr operator() (Expr exp) + { + if (bind::isBVar(exp)) + { + return vars[vars.size() - bind::bvarId(exp) - 1]; + } + return exp; + } + }; + + inline static Expr regularizeQF (Expr exp) + { + if (!isOpX(exp)) return exp; + ExprVector vars; + for (int i = 0; i < exp->arity() - 1; i++) + { + vars.push_back(bind::fapp(exp->arg(i))); + } + RW rw(new QFregularizer(vars)); + return dagVisit (rw, exp); + } + + inline static bool findMatching(Expr pattern, Expr exp, ExprVector& vars, ExprMap& matching) + { + if (pattern == exp && (isOpX(pattern) || (isOpX(pattern)))) return true; + + if (bind::typeOf(pattern) != bind::typeOf(exp)) return false; + + if (pattern->arity() == 1 && find(vars.begin(), vars.end(), pattern) != vars.end()) + { + if (matching[pattern] != NULL && matching[pattern] != exp) return false; + else + { + matching[pattern] = exp; + return true; + } + } + + if ((isOpX(exp) && isOpX(pattern)) || + (isOpX(exp) && isOpX(pattern)) || + (isOpX(exp) && isOpX(pattern)) || + (isOpX(exp) && isOpX(pattern)) || + (isOpX(exp) && isOpX(pattern)) || + (isOpX(exp) && isOpX(pattern) && + pattern->left() == exp->left())) + { + for (int i = 0; i < pattern->arity(); i++) + { + if (!findMatching(pattern->arg(i), exp->arg(i), vars, matching)) + return false; + } + return true; + } + return false; + } + + struct SubexprMatcher : public std::unary_function + { + bool found; + ExprVector& vars; + ExprMap& matching; + Expr pattern; + SubexprMatcher (Expr _p, ExprVector& _v, ExprMap& _m) : + found (false), pattern(_p), vars(_v), matching(_m) {} + + VisitAction operator() (Expr exp) + { + if (found) + { + return VisitAction::skipKids (); + } + else if ((isOpX(exp) || isOp(exp)) && + findMatching (pattern, exp, vars, matching)) + { + found = true; + return VisitAction::skipKids (); + } + return VisitAction::doKids (); + } + }; + + inline bool findMatchingSubexpr (Expr pattern, Expr exp, ExprVector& vars, ExprMap& matching) + { + SubexprMatcher fn (pattern, vars, matching); + dagVisit (fn, exp); + return fn.found; + } + + struct ITElifter + { + ITElifter () {}; + + Expr operator() (Expr exp) + { + // currently, can lift only one ITE + if (isOpX(exp)) + { + ExprVector vars1; + ExprVector vars2; + Expr cond = NULL; + vars1.push_back(exp->arg(0)); + vars2.push_back(exp->arg(0)); + for (int i = 1; i < exp->arity(); i++) + { + if (isOpX(exp->arg(i)) && cond == NULL) + { + cond = exp->arg(i)->arg(0); + vars1.push_back(exp->arg(i)->arg(1)); + vars2.push_back(exp->arg(i)->arg(2)); + } + else + { + vars1.push_back(exp->arg(i)); + vars2.push_back(exp->arg(i)); + } + } + if (cond == NULL) return exp; + return mk(cond, mknary(vars1), mknary(vars2)); + } + return exp; + } + }; + + inline static Expr liftITEs (Expr exp) + { + RW rw(new ITElifter()); + return dagVisit (rw, exp); + } } #endif diff --git a/include/ufo/Expr.hpp b/include/ufo/Expr.hpp index 3ee754a4e..0523e571a 100644 --- a/include/ufo/Expr.hpp +++ b/include/ufo/Expr.hpp @@ -2103,6 +2103,8 @@ namespace expr NOP(UNINT_TY,"UNINT",PREFIX,SimpleTypeOp) /** Array Type */ NOP(ARRAY_TY,"ARRAY",PREFIX,SimpleTypeOp) + /** stub for ADTs **/ + NOP(AD_TY,"",PREFIX,SimpleTypeOp) } namespace op @@ -2112,6 +2114,7 @@ namespace expr inline Expr intTy (ExprFactory &efac) {return mk (efac);} inline Expr boolTy (ExprFactory &efac) {return mk (efac);} inline Expr realTy (ExprFactory &efac) {return mk (efac);} + inline Expr adTy (Expr name) {return mk (name);} inline Expr arrayTy (Expr indexTy, Expr valTy) {return mk (indexTy, valTy);} @@ -2212,7 +2215,8 @@ namespace expr { return constDecl (name, mk (name->efac ())); } inline Expr realConstDecl (Expr name) { return constDecl (name, mk (name->efac ())); } - + inline Expr adtConstDecl (Expr name) + { return constDecl (name, mk (name->efac ())); } template Expr fdecl (Expr fname, const Range &args) @@ -2290,13 +2294,13 @@ namespace expr inline Expr boolConst (Expr name) { return fapp (boolConstDecl (name)); } inline Expr intConst (Expr name) { return fapp (intConstDecl (name)); } inline Expr realConst (Expr name) { return fapp (realConstDecl (name)); } - + inline Expr adtConst (Expr name) { return fapp (adtConstDecl (name)); } inline bool isBoolConst (Expr v) { return isConst (v); } inline bool isIntConst (Expr v) { return isConst (v); } inline bool isRealConst (Expr v) { return isConst (v); } - + inline bool isAdtConst (Expr v) { return isConst (v); } inline Expr typeOf (Expr v) { @@ -2308,11 +2312,11 @@ namespace expr assert (isOpX (v->left ())); return rangeTy (v->left ()); } - - if (isOpX (v) || isOpX (v)) return mk (v->efac ()); + + if (isOp(v) || isOp (v)) return mk (v->efac ()); if (isOpX (v)) return mk (v->efac ()); if (isOpX (v)) return mk (v->efac ()); - + if (isOpX (v)) return bind::type (v); if (isBoolVar (v) || isBoolConst (v)) @@ -2322,6 +2326,8 @@ namespace expr if (isRealVar (v) || isRealConst (v)) return mk (v->efac ()); + if (isOp(v)) return typeOf(v->left()); + if (isOpX(v)) return typeOf(v->last()); std::cerr << "WARNING: could not infer type of: " << *v << "\n"; assert (0 && "Unreachable"); @@ -2447,7 +2453,7 @@ namespace expr return hasher (var); } - void Print (std::ostream &OS) const { OS << "B" << var; } + void Print (std::ostream &OS) const { OS << "B" << var; } }; inline std::ostream &operator<< (std::ostream &OS, const BoundVar &b) { diff --git a/include/ufo/Smt/Z3n.hpp b/include/ufo/Smt/Z3n.hpp index bce7102d9..ac4e3b21c 100644 --- a/include/ufo/Smt/Z3n.hpp +++ b/include/ufo/Smt/Z3n.hpp @@ -297,6 +297,7 @@ namespace ufo protected: z3::context &get_ctx () { return ctx; } + std::vector adts; z3::ast toAst (Expr e) { @@ -308,7 +309,8 @@ namespace ufo if (!a) return Expr(); ast_expr_map seen; - return U::unmarshal (a, get_efac (), cache.right, seen); + std::vector adts_seen; + return U::unmarshal (a, get_efac (), cache.right, seen, adts_seen, adts); } ExprFactory &get_efac () { return efac; } @@ -355,6 +357,8 @@ namespace ufo return out.str (); } + ExprVector& getAdtConstructors(){ return adts; } + template std::string toSmtLibDecls (const Range &rng) { return toSmtLibDecls (mknary (mk (efac), rng)); } diff --git a/include/ufo/Smt/ZExprConverter.hpp b/include/ufo/Smt/ZExprConverter.hpp index 5c3b04877..5aff59f95 100644 --- a/include/ufo/Smt/ZExprConverter.hpp +++ b/include/ufo/Smt/ZExprConverter.hpp @@ -75,6 +75,8 @@ namespace ufo res = reinterpret_cast (Z3_mk_real_sort (ctx)); else if (isOpX (e)) res = reinterpret_cast (Z3_mk_bool_sort (ctx)); + else if (isOpX (e)) + res = reinterpret_cast (Z3_mk_int_sort (ctx)); // GF: hack for now else if (isOpX (e)) { z3::ast _idx_sort (marshal (e->left (), ctx, cache, seen)); @@ -514,8 +516,8 @@ namespace ufo { template static Expr unmarshal (const z3::ast &z, - ExprFactory &efac, C &cache, - ast_expr_map &seen) + ExprFactory &efac, C &cache, ast_expr_map &seen, + std::vector &adts_seen, std::vector &adts) { z3::context &ctx = z.ctx (); @@ -529,7 +531,6 @@ namespace ufo if (kind == Z3_NUMERAL_AST) { - Z3_sort sort = Z3_get_sort (ctx, z); std::string snum = Z3_get_numeral_string (ctx, z); switch (Z3_get_sort_kind (ctx, sort)) @@ -549,7 +550,7 @@ namespace ufo { Z3_sort sort = reinterpret_cast (static_cast (z)); Expr domain, range; - + switch (Z3_get_sort_kind (ctx, sort)) { case Z3_BOOL_SORT: @@ -558,20 +559,36 @@ namespace ufo return sort::intTy (efac); case Z3_REAL_SORT: return sort::realTy (efac); - case Z3_BV_SORT: - return bv::bvsort (Z3_get_bv_sort_size (ctx, sort), efac); - case Z3_ARRAY_SORT: - domain = - unmarshal (z3::ast (ctx, - Z3_sort_to_ast - (ctx, Z3_get_array_sort_domain (ctx, sort))), - efac, cache, seen); - range = - unmarshal (z3::ast (ctx, - Z3_sort_to_ast - (ctx, Z3_get_array_sort_range (ctx, sort))), - efac, cache, seen); - return sort::arrayTy (domain, range); + case Z3_BV_SORT: + return bv::bvsort (Z3_get_bv_sort_size (ctx, sort), efac); + case Z3_ARRAY_SORT: + domain = + unmarshal (z3::ast (ctx, + Z3_sort_to_ast + (ctx, Z3_get_array_sort_domain (ctx, sort))), + efac, cache, seen, adts_seen, adts); + range = + unmarshal (z3::ast (ctx, + Z3_sort_to_ast + (ctx, Z3_get_array_sort_range (ctx, sort))), + efac, cache, seen, adts_seen, adts); + return sort::arrayTy (domain, range); + case Z3_DATATYPE_SORT: + { + std::string name = Z3_get_symbol_string(ctx, Z3_get_sort_name(ctx, sort)); + Expr adt_name = mkTerm (name, efac); + if (find(adts_seen.begin(), adts_seen.end(), name) == adts_seen.end()) + { + adts_seen.push_back(name); + for (int i = 0; i < Z3_get_datatype_sort_num_constructors(ctx, sort); i++) + { + Z3_func_decl decl = Z3_get_datatype_sort_constructor(ctx, sort, i); + Z3_ast zdecl = Z3_func_decl_to_ast(ctx, decl); + adts.push_back(unmarshal(z3::ast(ctx, zdecl), efac, cache, seen, adts_seen, adts)); + } + } + return sort::adTy (adt_name); + } default: assert (0 && "Unsupported sort"); } @@ -580,7 +597,7 @@ namespace ufo { unsigned idx = Z3_get_index_value (ctx, z); z3::ast zsort (ctx, Z3_sort_to_ast (ctx, Z3_get_sort (ctx, z))); - Expr sort = unmarshal (zsort, efac, cache, seen); + Expr sort = unmarshal (zsort, efac, cache, seen, adts_seen, adts); return bind::bvar (idx, sort); } @@ -612,14 +629,14 @@ namespace ufo Z3_sort sort = Z3_get_domain (ctx, fdecl, p); type.push_back (unmarshal (z3::ast (ctx, Z3_sort_to_ast (ctx, sort)), - efac, cache, seen)); + efac, cache, seen, adts_seen, adts)); } type.push_back (unmarshal (z3::ast (ctx, Z3_sort_to_ast (ctx, Z3_get_range (ctx, fdecl))), - efac, cache, seen)); + efac, cache, seen, adts_seen, adts)); return bind::fdecl (name, type); } @@ -635,11 +652,11 @@ namespace ufo 0, nullptr, Z3_get_quantifier_bound_sort (ctx, z, i)); z3::ast zdecl (ctx, Z3_func_decl_to_ast (ctx, decl)); - args.push_back (unmarshal (zdecl, efac, cache, seen)); + args.push_back (unmarshal (zdecl, efac, cache, seen, adts_seen, adts)); assert (args.back ().get ()); } args.push_back (unmarshal (z3::ast (ctx, Z3_get_quantifier_body (ctx, z)), - efac, cache, seen)); + efac, cache, seen, adts_seen, adts)); return Z3_is_quantifier_forall (ctx, z) ? mknary (args) : mknary (args); } @@ -658,36 +675,36 @@ namespace ufo assert (Z3_get_app_num_args (ctx, app) == 1); return mk (unmarshal (z3::ast (ctx, Z3_get_app_arg (ctx, app, 0)), - efac, cache, seen)); + efac, cache, seen, adts_seen, adts)); } if (dkind == Z3_OP_UMINUS) return mk (unmarshal (z3::ast (ctx, Z3_get_app_arg (ctx, app, 0)), - efac, cache, seen)); + efac, cache, seen, adts_seen, adts)); // XXX ignore to_real and to_int operators if (dkind == Z3_OP_TO_REAL || dkind == Z3_OP_TO_INT) return unmarshal (z3::ast (ctx, Z3_get_app_arg (ctx, app, 0)), - efac, cache, seen); + efac, cache, seen, adts_seen, adts); if (dkind == Z3_OP_BNOT) return mk (unmarshal (z3::ast (ctx, Z3_get_app_arg (ctx, app, 0)), - efac, cache, seen)); + efac, cache, seen, adts_seen, adts)); if (dkind == Z3_OP_BNEG) return mk (unmarshal (z3::ast (ctx, Z3_get_app_arg (ctx, app, 0)), - efac, cache, seen)); + efac, cache, seen, adts_seen, adts)); if (dkind == Z3_OP_BREDAND) return mk (unmarshal (z3::ast (ctx, Z3_get_app_arg (ctx, app, 0)), - efac, cache, seen)); + efac, cache, seen, adts_seen, adts)); if (dkind == Z3_OP_BREDOR) return mk (unmarshal (z3::ast (ctx, Z3_get_app_arg (ctx, app, 0)), - efac, cache, seen)); + efac, cache, seen, adts_seen, adts)); if (dkind == Z3_OP_SIGN_EXT || dkind == Z3_OP_ZERO_EXT) { Expr sort = bv::bvsort (Z3_get_bv_sort_size (ctx, Z3_get_sort (ctx, z)), efac); Expr arg = unmarshal (z3::ast (ctx, Z3_get_app_arg (ctx, app, 0)), - efac, cache, seen); + efac, cache, seen, adts_seen, adts); switch (dkind) { case Z3_OP_SIGN_EXT: @@ -701,7 +718,7 @@ namespace ufo if (dkind == Z3_OP_EXTRACT) { Expr arg = unmarshal (z3::ast (ctx, Z3_get_app_arg (ctx, app, 0)), - efac, cache, seen); + efac, cache, seen, adts_seen, adts); Z3_func_decl d = Z3_get_app_decl (ctx, app); unsigned high = Z3_get_decl_int_parameter (ctx, d, 0); @@ -715,9 +732,8 @@ namespace ufo z3::ast zdecl (ctx, Z3_func_decl_to_ast (ctx, Z3_get_as_array_func_decl (ctx, z))); - return mk (unmarshal (zdecl, efac, cache, seen)); + return mk (unmarshal (zdecl, efac, cache, seen, adts_seen, adts)); } - { typename C::const_iterator it = cache.find (z); if (it != cache.end ()) return it->second; @@ -731,18 +747,18 @@ namespace ufo Expr e; ExprVector args; for (size_t i = 0; i < (size_t)Z3_get_app_num_args (ctx, app); i++) - args.push_back (unmarshal - (z3::ast(ctx, Z3_get_app_arg(ctx, app, i)), efac, cache, seen)); + args.push_back (unmarshal + (z3::ast(ctx, Z3_get_app_arg(ctx, app, i)), efac, cache, seen, adts_seen, adts)); /** newly introduced Z3 symbol */ - if (dkind == Z3_OP_UNINTERPRETED) - { - Expr res = bind::fapp (unmarshal (z3::func_decl (ctx, fdecl), - efac, cache, seen), args); - // -- XXX maybe use seen instead. not sure what is best. - cache.insert (typename C::value_type (z, res)); - return res; - } + if (dkind == Z3_OP_UNINTERPRETED || dkind == Z3_OP_DT_CONSTRUCTOR) + { + Expr res = bind::fapp (unmarshal (z3::func_decl (ctx, fdecl), + efac, cache, seen, adts_seen, adts), args); + // -- XXX maybe use seen instead. not sure what is best. + cache.insert (typename C::value_type (z, res)); + return res; + } switch (dkind) { @@ -807,7 +823,7 @@ namespace ufo Expr domain = unmarshal (z3::ast (ctx, Z3_sort_to_ast (ctx, Z3_get_array_sort_domain (ctx, sort))), - efac, cache, seen); + efac, cache, seen, adts_seen, adts); e = op::array::constArray (domain, args[0]); } diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 8c170a888..1916463f6 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -1 +1 @@ -add_subdirectory(aeval) +add_subdirectory(adt) diff --git a/tools/adt/Adt.cpp b/tools/adt/Adt.cpp new file mode 100644 index 000000000..9b7a9196e --- /dev/null +++ b/tools/adt/Adt.cpp @@ -0,0 +1,44 @@ +#include "adt/ADTSolver.hpp" +#include "ufo/Smt/EZ3.hh" + +using namespace ufo; + +char * getStrValue(const char * opt, char * defValue, int argc, char ** argv) +{ + for (int i = 1; i < argc-1; i++) + { + if (strcmp(argv[i], opt) == 0) + { + return argv[i+1]; + } + } + return defValue; +} + +char * getSmtFileName(int num, int argc, char ** argv) +{ + int num1 = 1; + for (int i = 1; i < argc; i++) + { + int len = strlen(argv[i]); + if (len >= 5 && strcmp(argv[i] + len - 5, ".smt2") == 0) + { + if (num1 == num) return argv[i]; + else num1++; + } + } + return NULL; +} + +int main (int argc, char ** argv) +{ + ExprFactory efac; + EZ3 z3(efac); + char *infile = getSmtFileName(1, argc, argv); + char *basecheck = getStrValue("--base", NULL, argc, argv); + char *indcheck = getStrValue("--ind", NULL, argc, argv); + Expr e = z3_from_smtlib_file (z3, infile); + adtSolve(z3, e, basecheck, indcheck); + + return 0; +} diff --git a/tools/adt/CMakeLists.txt b/tools/adt/CMakeLists.txt new file mode 100644 index 000000000..9b8fe6b30 --- /dev/null +++ b/tools/adt/CMakeLists.txt @@ -0,0 +1,4 @@ +add_executable (ind Adt.cpp) +target_link_libraries (ind ${Z3_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${GMPXX_LIB} ${GMP_LIB}) +llvm_config (ind bitwriter) +install(TARGETS ind RUNTIME DESTINATION bin) From 6b1eea7ef91717046bdae5995ce1623751477f82 Mon Sep 17 00:00:00 2001 From: William Yang Date: Mon, 10 Sep 2018 12:03:57 -0400 Subject: [PATCH 15/40] parameters `max-depth` and `max-same-assm` to constrain the search space exploration --- include/adt/ADTSolver.hpp | 48 ++++++++++++++++++++++++++++++++++----- tools/adt/Adt.cpp | 8 ++++--- 2 files changed, 47 insertions(+), 9 deletions(-) diff --git a/include/adt/ADTSolver.hpp b/include/adt/ADTSolver.hpp index 5785e30fd..e68a85501 100644 --- a/include/adt/ADTSolver.hpp +++ b/include/adt/ADTSolver.hpp @@ -25,11 +25,14 @@ namespace ufo ExprFactory &efac; SMTUtils u; + vector rewriteSequence; + int maxDepth; + int maxSameAssm; public: - ADTSolver(Expr _goal, ExprVector& _assumptions, ExprVector& _constructors) : + ADTSolver(Expr _goal, ExprVector& _assumptions, ExprVector& _constructors, int _maxDepth, int _maxSameAssm) : goal(_goal), assumptions(_assumptions), constructors(_constructors), - efac(_goal->getFactory()), u(_goal->getFactory()) + efac(_goal->getFactory()), u(_goal->getFactory()), maxDepth(_maxDepth), maxSameAssm(_maxSameAssm) { assert(isOpX(goal)); } @@ -119,11 +122,34 @@ namespace ufo } // this recursive method performs a naive search for a strategy - // FIXME: sometimes it diverges while applying the same rule infinite number of times bool rewriteAssumptions(Expr subgoal) { if (u.isEquiv(subgoal, mk(efac))) return true; + // check recursion depth + if (rewriteSequence.size() >= maxDepth) + { + outs() << "Maximum recursion depth reached\n"; + return false; + } + + // check consecutive applications of the same assumption + if (rewriteSequence.size() >= maxSameAssm) + { + int assmId = rewriteSequence.back(); + int offset = rewriteSequence.size() - maxSameAssm - 1; + int i = 0; + for (; i < maxSameAssm; i++) + if (rewriteSequence[i + offset] != assmId) + break; + + if (i == maxSameAssm) + { + outs() << "Maximum use of assumption #" << assmId << " reached\n"; + return false; + } + } + for (int i = 0; i < assumptions.size(); i++) { Expr a = assumptions[i]; @@ -131,7 +157,17 @@ namespace ufo if (res != NULL) { outs () << "rewritten [" << i << "]: " << *res << "\n"; - if (rewriteAssumptions(res)) return true; + // save history + rewriteHistory.push_back(res); + rewriteSequence.push_back(i); + + if (rewriteAssumptions(res)) + return true; + else { + // failed attempt, remove history + rewriteHistory.pop_back(); + rewriteSequence.pop_back(); + } // backtrack: outs () << "backtrack to: " << *subgoal << "\n"; @@ -362,7 +398,7 @@ namespace ufo nums.push_back(atoi(substr)); } - void adtSolve(EZ3& z3, Expr s, char* basecheck, char *indcheck) + void adtSolve(EZ3& z3, Expr s, char* basecheck, char *indcheck, int maxDepth, int maxSameAssm) { vector basenums; vector indnums; @@ -399,7 +435,7 @@ namespace ufo outs () << "Unable to parse the query\n"; return; } - ADTSolver sol (goal, assumptions, constructors); + ADTSolver sol (goal, assumptions, constructors, maxDepth, maxSameAssm); sol.solve (basenums, indnums); } } diff --git a/tools/adt/Adt.cpp b/tools/adt/Adt.cpp index 9b7a9196e..d32105701 100644 --- a/tools/adt/Adt.cpp +++ b/tools/adt/Adt.cpp @@ -3,7 +3,7 @@ using namespace ufo; -char * getStrValue(const char * opt, char * defValue, int argc, char ** argv) +char * getStrValue(const char * opt, const char * defValue, int argc, char ** argv) { for (int i = 1; i < argc-1; i++) { @@ -12,7 +12,7 @@ char * getStrValue(const char * opt, char * defValue, int argc, char ** argv) return argv[i+1]; } } - return defValue; + return (char *)defValue; } char * getSmtFileName(int num, int argc, char ** argv) @@ -37,8 +37,10 @@ int main (int argc, char ** argv) char *infile = getSmtFileName(1, argc, argv); char *basecheck = getStrValue("--base", NULL, argc, argv); char *indcheck = getStrValue("--ind", NULL, argc, argv); + int maxDepth = atoi(getStrValue("--max-depth", "10", argc, argv)); + int maxSameAssm = atoi(getStrValue("--max-same-assm", "5", argc, argv)); Expr e = z3_from_smtlib_file (z3, infile); - adtSolve(z3, e, basecheck, indcheck); + adtSolve(z3, e, basecheck, indcheck, maxDepth, maxSameAssm); return 0; } From 6f817f3d7829fb677afa94f51888b07a1f0def51 Mon Sep 17 00:00:00 2001 From: grigoryfedyukovich Date: Thu, 20 Sep 2018 19:18:01 -0400 Subject: [PATCH 16/40] light refactoring and support for nested induction --- include/adt/ADTSolver.hpp | 179 +++++++++++++++++++++++++++++--------- 1 file changed, 136 insertions(+), 43 deletions(-) diff --git a/include/adt/ADTSolver.hpp b/include/adt/ADTSolver.hpp index e68a85501..5846ff8e3 100644 --- a/include/adt/ADTSolver.hpp +++ b/include/adt/ADTSolver.hpp @@ -20,11 +20,11 @@ namespace ufo map baseConstructors; map indConstructors; - ExprVector rewriteHistory; ExprFactory &efac; SMTUtils u; + ExprVector rewriteHistory; vector rewriteSequence; int maxDepth; int maxSameAssm; @@ -49,7 +49,17 @@ namespace ufo goalQF = u.simplifyITE(goalQF); if (u.isEquiv(goalQF, mk(efac))) return true; - goal = replaceAll(goal, goal->last(), goalQF); + ExprVector args; + for (int i = 0; i < goal->arity() - 1; i++) + { + if (contains(goal->last(), goal->arg(i))) args.push_back(goal->arg(i)); + } + if (args.size() == 0) goal = goalQF; + else + { + args.push_back(goalQF); + goal = mknary(args); + } rewriteHistory.push_back(goal); return false; } @@ -85,6 +95,17 @@ namespace ufo return replaceAll(subgoal, repl->left(), repl->right()); } } + if ((isOpX(assmQF) && isOpX(subgoal)) || + (isOpX(assmQF) && isOpX(subgoal)) || + (isOpX(assmQF) && isOpX(subgoal)) || + (isOpX(assmQF) && isOpX(subgoal))) + { + if (findMatchingSubexpr (assmQF->left(), subgoal->left(), args, matching)) + { + for (auto & a : matching) repl = replaceAll(repl, a.first, a.second); + if (u.implies(repl, subgoal)) return mk(efac); + } + } } else { @@ -187,10 +208,10 @@ namespace ufo bool toRebuild = false; for (int i = 0; i < goal->arity() - 1; i++) { - Expr typeDecl = goal->arg(i); + Expr type = goal->arg(i)->last(); for (auto & a : constructors) { - if (a->last() == typeDecl->last()) + if (a->last() == type) { bool ind = false; for (int i = 0; i < a->arity() - 1; i++) @@ -198,31 +219,45 @@ namespace ufo if (a->last() == a->arg(i)) { ind = true; - indConstructors[typeDecl] = a; + if (indConstructors[type] != NULL && indConstructors[type] != a) + { + outs () << "Several inductive constructors are not supported\n"; + exit(0); + } + indConstructors[type] = a; } } - if (!ind) baseConstructors[typeDecl] = a; + if (!ind) + { + if (baseConstructors[type] != NULL && baseConstructors[type] != a) + { + outs () << "Several base constructors are not supported\n"; + exit(0); + } + baseConstructors[type] = a; + } } } - if (baseConstructors[typeDecl] != NULL && indConstructors[typeDecl] == NULL) + if (baseConstructors[type] != NULL && indConstructors[type] == NULL) { toRebuild = true; ExprVector args; - args.push_back(baseConstructors[typeDecl]); - for (int i = 1; i < baseConstructors[typeDecl]->arity() - 1; i++) + args.push_back(baseConstructors[type]); + for (int i = 1; i < baseConstructors[type]->arity() - 1; i++) { + // TODO: make sure the name is unique Expr s = bind::mkConst(mkTerm ("_b_" + to_string(goalArgs.size()), efac), - baseConstructors[typeDecl]->arg(i)); + baseConstructors[type]->arg(i)); goalArgs.push_back(s->last()); args.push_back(s); } Expr newApp = mknary(args); - unfoldedGoalQF = replaceAll(unfoldedGoalQF, bind::fapp(typeDecl), newApp); + unfoldedGoalQF = replaceAll(unfoldedGoalQF, bind::fapp(goal->arg(i)), newApp); } else { - goalArgs.push_back(typeDecl); + goalArgs.push_back(goal->arg(i)); } } @@ -266,27 +301,17 @@ namespace ufo { assert(num < goal->arity() - 1); Expr typeDecl = goal->arg(num); + Expr type = goal->arg(num)->last(); - Expr baseConstructor = baseConstructors[typeDecl]; - Expr indConstructor = indConstructors[typeDecl]; - - if (indConstructor == NULL) - { - outs () << "The Data Type is not inductive\n"; - return false; - } - - if (baseConstructor == NULL) - { - outs () << "The Data Type is ill-defined (no base constructor)\n"; - return false; - } + Expr baseConstructor = baseConstructors[type]; + Expr indConstructor = indConstructors[type]; // instantiate every quantified variable (except the inductive one) in the goal Expr goalQF = goal->last(); for (int i = 0; i < goal->arity() - 1; i++) { if (i == num) continue; + // TODO: make sure the name is unique Expr s = bind::mkConst(mkTerm ("_v_" + to_string(i), efac), goal->arg(i)->last()); goalQF = replaceAll(goalQF, bind::fapp(goal->arg(i)), s); } @@ -296,7 +321,8 @@ namespace ufo printAssumptions(); outs() << "\nBase case: " << *baseSubgoal << "\n"; - rewriteHistory.clear(); // TODO: use it during the base case proving + rewriteHistory.clear(); + rewriteSequence.clear(); bool baseres = basenums.empty() ? rewriteAssumptions(baseSubgoal) : @@ -304,25 +330,65 @@ namespace ufo if (!baseres) { - outs () << " Failed\n"; - return true; + ExprVector newArgs; + for (int i = 0; i < goal->arity() - 1; i++) + { + if (i == num) continue; + newArgs.push_back(goal->arg(i)); + } + if (newArgs.size() > 0) + { + outs () << "\nProceeding to nested induction\n"; + newArgs.push_back(replaceAll(goal->last(), typeDecl, baseConstructor)); + Expr newGoal = mknary(newArgs); + ADTSolver sol (newGoal, assumptions, constructors, maxDepth, maxSameAssm); + if (!sol.solve (basenums, indnums)) return false; + outs () << "\nReturning to the outer induction\n\n"; + } + else + { + return false; + } } // generate inductive hypotheses ExprVector args; ExprVector indHypotheses; + bool allQF = true; for (int i = 1; i < indConstructor->arity() - 1; i++) { + // TODO: make sure the name is unique Expr s = bind::mkConst(mkTerm ("_t_" + to_string(i), efac), indConstructor->arg(i)); args.push_back(s); - if (typeDecl->last() == indConstructor->arg(i)) // type check - indHypotheses.push_back(replaceAll(goalQF, bind::fapp(typeDecl), s)); + if (type == indConstructor->arg(i)) // type check + { + ExprVector argsIH; + for (int j = 0; j < goal->arity() - 1; j++) + { + if (j != num) argsIH.push_back(goal->arg(j)); + } + argsIH.push_back(replaceAll(goal->last(), bind::fapp(typeDecl), s)); + if (argsIH.size() == 1) + { + indHypotheses.push_back(argsIH.back()); + } + else + { + allQF = false; + indHypotheses.push_back(mknary(argsIH)); + } + } + } + for (auto & a : indHypotheses) + { + assumptions.push_back(a); + // always add symmetric IH? + insertSymmetricAssumption(a); } - for (auto & a : indHypotheses) assumptions.push_back(a); // for simplicity, add conjunction of hypotheses as a single hypothesis // should be removed in the future (when all QF-assumptions are used at the same time) - if (indHypotheses.size() > 1) assumptions.push_back(conjoin(indHypotheses, efac)); + if (indHypotheses.size() > 1 && allQF) assumptions.push_back(conjoin(indHypotheses, efac)); // prove the inductive step Expr indConsApp = bind::fapp(indConstructor, args); @@ -330,25 +396,35 @@ namespace ufo printAssumptions(); outs() << "\nInductive step: " << * indSubgoal << "\n"; - rewriteHistory.clear(); // TODO: use it during the base case proving + rewriteHistory.clear(); + rewriteSequence.clear(); bool indres = indnums.empty() ? rewriteAssumptions(indSubgoal) : tryStrategy(indSubgoal, indnums); - if (indres) - { - outs () << " Proved\n"; - return true; - } + if (indres) return true; else { - outs () << " Failed\n"; + ExprVector newArgs; + for (int i = 0; i < goal->arity() - 1; i++) + { + if (i == num) continue; + newArgs.push_back(goal->arg(i)); + } + if (newArgs.size() > 0) + { + outs () << "\nProceeding to nested induction\n"; + newArgs.push_back(replaceAll(goal->last(), bind::fapp(typeDecl), indConsApp)); + Expr newGoal = mknary(newArgs); + ADTSolver sol (newGoal, assumptions, constructors, maxDepth, maxSameAssm); + return sol.solve (basenums, indnums); + } return false; } } - void solve(vector& basenums, vector& indnums) + bool solve(vector& basenums, vector& indnums) { unfoldGoal(); rewriteHistory.push_back(goal); @@ -357,7 +433,7 @@ namespace ufo if (simplifyGoal()) { outs () << "Trivially Proved\n"; - return; + return true; } } @@ -372,7 +448,24 @@ namespace ufo if (toRollback) goal = rewriteHistory[0]; outs () << "Simplified goal: " << *goal << "\n\n"; - induction(0, basenums, indnums); + for (int i = 0; i < goal->arity() - 1; i++) + { + Expr type = goal->arg(i)->last(); + if (baseConstructors[type] != NULL && indConstructors[type] != NULL) + { + if (induction(i, basenums, indnums)) + { + outs () << " Proved\n"; + return true; + } + else + { + outs () << " Failed\n"; + return false; + } + } + } + return false; } }; From 199cc01f0b8d94c14e3f6422feec995830d1699f Mon Sep 17 00:00:00 2001 From: grigoryfedyukovich Date: Thu, 29 Aug 2019 11:44:06 -0400 Subject: [PATCH 17/40] new features: - forward rewriting (to generate new assumptions) - case splitting - better support for implications - support for arrays - support for quantifier-free formulas (no induction) --- bench_sim/list_arr_extra_1.smt2 | 20 ++ bench_sim/list_arr_extra_2.smt2 | 14 ++ bench_sim/list_arr_pop.smt2 | 22 ++ bench_sim/list_arr_push.smt2 | 31 +++ bench_sim/queue_arr_de.smt2 | 46 ++++ bench_sim/queue_arr_en.smt2 | 39 +++ bench_sim/queue_arr_extra_1.smt2 | 18 ++ bench_sim/queue_arr_extra_2.smt2 | 35 +++ bench_sim/queue_arr_extra_3.smt2 | 17 ++ bench_sim/queue_arr_extra_4.smt2 | 18 ++ include/adt/ADTSolver.hpp | 383 +++++++++++++++++++++++++---- include/ae/ExprSimpl.hpp | 53 ++-- include/ufo/Expr.hpp | 4 + include/ufo/Smt/ZExprConverter.hpp | 13 +- tools/adt/Adt.cpp | 2 +- 15 files changed, 644 insertions(+), 71 deletions(-) create mode 100644 bench_sim/list_arr_extra_1.smt2 create mode 100644 bench_sim/list_arr_extra_2.smt2 create mode 100644 bench_sim/list_arr_pop.smt2 create mode 100644 bench_sim/list_arr_push.smt2 create mode 100644 bench_sim/queue_arr_de.smt2 create mode 100644 bench_sim/queue_arr_en.smt2 create mode 100644 bench_sim/queue_arr_extra_1.smt2 create mode 100644 bench_sim/queue_arr_extra_2.smt2 create mode 100644 bench_sim/queue_arr_extra_3.smt2 create mode 100644 bench_sim/queue_arr_extra_4.smt2 diff --git a/bench_sim/list_arr_extra_1.smt2 b/bench_sim/list_arr_extra_1.smt2 new file mode 100644 index 000000000..2898e8d00 --- /dev/null +++ b/bench_sim/list_arr_extra_1.smt2 @@ -0,0 +1,20 @@ +(declare-sort Elem) +(declare-datatypes () ((Lst (cons (head Elem) (tail Lst)) (nil)))) + +(declare-fun xs () Lst) +(declare-fun xs1 () Lst) +(declare-fun h () Elem) +(declare-fun n () Int) +(declare-fun A () (Array Int Elem)) + +(declare-fun R (Lst Int (Array Int Elem)) Bool) + +(assert (forall ((n Int) (A (Array Int Elem))) (= (R nil n A) (= n 0)))) + +(assert (forall ((xs Lst) (h Elem) (n Int) (A (Array Int Elem))) + (= (R (cons h xs) n A) (and (> n 0) (R xs (- n 1) A) (= h (select A (- n 1))))))) + +(assert (not (forall ((n Int) (n1 Int) (xs Lst) (h Elem) (A (Array Int Elem))) + (=> (and (>= n1 n) (R xs n A)) (R xs n (store A n1 h)))))) + +(check-sat) diff --git a/bench_sim/list_arr_extra_2.smt2 b/bench_sim/list_arr_extra_2.smt2 new file mode 100644 index 000000000..3d99869de --- /dev/null +++ b/bench_sim/list_arr_extra_2.smt2 @@ -0,0 +1,14 @@ +(declare-sort Elem) +(declare-datatypes () ((Lst (cons (head Elem) (tail Lst)) (nil)))) + +(declare-fun R (Lst Int (Array Int Elem)) Bool) + +(assert (forall ((n Int) (A (Array Int Elem))) (= (R nil n A) (= n 0)))) + +(assert (forall ((xs Lst) (h Elem) (n Int) (A (Array Int Elem))) + (= (R (cons h xs) n A) (and (> n 0) (R xs (- n 1) A) (= h (select A (- n 1))))))) + +(assert (not (forall ((xs Lst) (n Int) (A (Array Int Elem))) + (=> (R xs n A) (>= n 0))))) + +(check-sat) diff --git a/bench_sim/list_arr_pop.smt2 b/bench_sim/list_arr_pop.smt2 new file mode 100644 index 000000000..6c04839e1 --- /dev/null +++ b/bench_sim/list_arr_pop.smt2 @@ -0,0 +1,22 @@ +(declare-sort Elem) +(declare-datatypes () ((Lst (cons (head Elem) (tail Lst)) (nil)))) + +; pop + +(declare-fun xs () Lst) +(declare-fun xs1 () Lst) +(declare-fun h () Elem) +(declare-fun n () Int) +(declare-fun A () (Array Int Elem)) + +(declare-fun R (Lst Int (Array Int Elem)) Bool) + +(assert (forall ((n Int) (A (Array Int Elem))) (= (R nil n A) (= n 0)))) + +(assert (forall ((xs Lst) (h Elem) (n Int) (A (Array Int Elem))) + (= (R (cons h xs) n A) (and (> n 0) (R xs (- n 1) A) (= h (select A (- n 1))))))) + +(assert (and (= xs1 (cons h xs)) (R xs1 n A))) + +(assert (not (R xs (- n 1) A))) +(check-sat) diff --git a/bench_sim/list_arr_push.smt2 b/bench_sim/list_arr_push.smt2 new file mode 100644 index 000000000..700504f2d --- /dev/null +++ b/bench_sim/list_arr_push.smt2 @@ -0,0 +1,31 @@ +(declare-sort Elem) +(declare-datatypes () ((Lst (cons (head Elem) (tail Lst)) (nil)))) + +; push + +(declare-fun xs () Lst) +(declare-fun xs1 () Lst) +(declare-fun h () Elem) +(declare-fun n () Int) +(declare-fun A () (Array Int Elem)) +(declare-fun A1 () (Array Int Elem)) + +(declare-fun R (Lst Int (Array Int Elem)) Bool) + +(assert (forall ((n Int) (A (Array Int Elem))) (= (R nil n A) (= n 0)))) + +(assert (forall ((xs Lst) (h Elem) (n Int) (A (Array Int Elem))) + (= (R (cons h xs) n A) (and (> n 0) (R xs (- n 1) A) (= h (select A (- n 1))))))) + +;extra lemma: +(assert (forall ((n Int) (n1 Int) (xs Lst) (h Elem) (A (Array Int Elem))) + (=> (and (>= n1 n) (R xs n A)) (R xs n (store A n1 h))))) + +;extra lemma: +(assert (forall ((xs Lst) (n Int) (A (Array Int Elem))) + (=> (R xs n A) (>= n 0)))) + +(assert (and (= xs1 (cons h xs)) (= A1 (store A (- n 1) h)) (R xs (- n 1) A))) + +(assert (not (R xs1 n A1))) +(check-sat) diff --git a/bench_sim/queue_arr_de.smt2 b/bench_sim/queue_arr_de.smt2 new file mode 100644 index 000000000..4978527d9 --- /dev/null +++ b/bench_sim/queue_arr_de.smt2 @@ -0,0 +1,46 @@ +(declare-sort Elem) +(declare-datatypes () ((Lst (cons (head Elem) (tail Lst)) (nil)))) + +(declare-fun allbutlast (Lst) Lst) +(assert (forall ((x Elem)) (= (allbutlast (cons x nil)) nil))) +(assert (forall ((x Elem) (y Elem) (xs Lst)) (= (allbutlast (cons x (cons y xs))) (cons x (allbutlast (cons y xs)))))) + +(declare-fun last (Lst) Elem) +(assert (forall ((x Elem)) (= (last (cons x nil)) x))) +(assert (forall ((x Elem) (y Elem) (xs Lst)) (= (last (cons x (cons y xs))) (last (cons y xs))))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Elem) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +; dequeue + +(declare-fun xs () Lst) +(declare-fun n () Int) +(declare-fun m () Int) +(declare-fun A () (Array Int Elem)) + +(declare-fun R (Lst Int Int (Array Int Elem)) Bool) + +(assert (forall ((n Int) (m Int) (A (Array Int Elem))) + (= (R nil m n A) (= m n)))) + +(assert (forall ((xs Lst) (h Elem) (m Int) (n Int) (A (Array Int Elem))) + (= (R (cons h xs) m n A) + (and (< m n) + (= h (select A (- n 1))) + (R xs m (- n 1) A))))) + +; extra lemma: +(assert (forall ((xs Lst)) (=> (not (= xs nil)) (= xs (append (allbutlast xs) (cons (last xs) nil)))))) + +; extra lemma: +(assert (forall ((xs Lst) (m Int) (n Int) (A (Array Int Elem))) + (=> (and (not (= xs nil)) (R (append (allbutlast xs) (cons (last xs) nil)) m n A)) + (R (allbutlast xs) (+ m 1) n A)))) + +(assert (and (R xs m n A) (distinct xs nil) (= (last xs) (select A m)))) + +(assert (not (R (allbutlast xs) (+ m 1) n A))) + +(check-sat) diff --git a/bench_sim/queue_arr_en.smt2 b/bench_sim/queue_arr_en.smt2 new file mode 100644 index 000000000..29e3c0744 --- /dev/null +++ b/bench_sim/queue_arr_en.smt2 @@ -0,0 +1,39 @@ +(declare-sort Elem) +(declare-datatypes () ((Lst (cons (head Elem) (tail Lst)) (nil)))) + +; enqueue + +(declare-fun xs () Lst) +(declare-fun xs1 () Lst) +(declare-fun h () Elem) +(declare-fun n () Int) +(declare-fun m () Int) +(declare-fun A () (Array Int Elem)) +(declare-fun A1 () (Array Int Elem)) + +(declare-fun R (Lst Int Int (Array Int Elem)) Bool) + +(assert (forall ((n Int) (m Int) (A (Array Int Elem))) + (= (R nil m n A) (= m n)))) + +(assert (forall ((xs Lst) (h Elem) (m Int) (n Int) (A (Array Int Elem))) + (= (R (cons h xs) m n A) + (and (< m n) + (= h (select A (- n 1))) + (R xs m (- n 1) A))))) + +; extra lemma: +(assert (forall ((m Int) (n Int) (n1 Int) (xs Lst) (h Elem) (A (Array Int Elem))) + (=> (and (>= n1 n) (R xs m n A)) (R xs m n (store A n1 h))))) + +; extra lemma +(assert (forall ((xs Lst) (m Int) (n Int) (A (Array Int Elem))) + (=> (R xs m n A) (<= m n)))) + +(assert (and (R xs m n A) + (= xs1 (cons h xs)) + (= A1 (store A n h)))) + +(assert (not (R xs1 m (+ n 1) A1))) + +(check-sat) diff --git a/bench_sim/queue_arr_extra_1.smt2 b/bench_sim/queue_arr_extra_1.smt2 new file mode 100644 index 000000000..f7dcdc4ad --- /dev/null +++ b/bench_sim/queue_arr_extra_1.smt2 @@ -0,0 +1,18 @@ +(declare-sort Elem) +(declare-datatypes () ((Lst (cons (head Elem) (tail Lst)) (nil)))) + +(declare-fun allbutlast (Lst) Lst) +(assert (forall ((x Elem)) (= (allbutlast (cons x nil)) nil))) +(assert (forall ((x Elem) (y Elem) (xs Lst)) (= (allbutlast (cons x (cons y xs))) (cons x (allbutlast (cons y xs)))))) + +(declare-fun last (Lst) Elem) +(assert (forall ((x Elem)) (= (last (cons x nil)) x))) +(assert (forall ((x Elem) (y Elem) (xs Lst)) (= (last (cons x (cons y xs))) (last (cons y xs))))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Elem) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(assert (not (forall ((xs Lst)) (=> (not (= xs nil)) (= xs (append (allbutlast xs) (cons (last xs) nil))))))) + +(check-sat) diff --git a/bench_sim/queue_arr_extra_2.smt2 b/bench_sim/queue_arr_extra_2.smt2 new file mode 100644 index 000000000..4a18239ca --- /dev/null +++ b/bench_sim/queue_arr_extra_2.smt2 @@ -0,0 +1,35 @@ +(declare-sort Elem) +(declare-datatypes () ((Lst (cons (head Elem) (tail Lst)) (nil)))) + +(declare-fun allbutlast (Lst) Lst) +(assert (forall ((x Elem)) (= (allbutlast (cons x nil)) nil))) +(assert (forall ((x Elem) (y Elem) (xs Lst)) (= (allbutlast (cons x (cons y xs))) (cons x (allbutlast (cons y xs)))))) + +(declare-fun last (Lst) Elem) +(assert (forall ((x Elem)) (= (last (cons x nil)) x))) +(assert (forall ((x Elem) (y Elem) (xs Lst)) (= (last (cons x (cons y xs))) (last (cons y xs))))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Elem) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun R (Lst Int Int (Array Int Elem)) Bool) + +(assert (forall ((n Int) (m Int) (A (Array Int Elem))) + (= (R nil m n A) (= m n)))) + +(assert (forall ((xs Lst) (h Elem) (m Int) (n Int) (A (Array Int Elem))) + (= (R (cons h xs) m n A) + (and (< m n) + (= h (select A (- n 1))) + (R xs m (- n 1) A))))) + +; extra lemma + +(assert (forall ((xs Lst) (m Int) (n Int) (A (Array Int Elem))) (=> (R xs m n A) (<= m n)))) + +(assert (not (forall ((xs Lst) (m Int) (n Int) (A (Array Int Elem))) + (=> (and (not (= xs nil)) (R (append (allbutlast xs) (cons (last xs) nil)) m n A)) + (R (allbutlast xs) (+ m 1) n A))))) + +(check-sat) diff --git a/bench_sim/queue_arr_extra_3.smt2 b/bench_sim/queue_arr_extra_3.smt2 new file mode 100644 index 000000000..05326ecfb --- /dev/null +++ b/bench_sim/queue_arr_extra_3.smt2 @@ -0,0 +1,17 @@ +(declare-sort Elem) +(declare-datatypes () ((Lst (cons (head Elem) (tail Lst)) (nil)))) + +(declare-fun R (Lst Int Int (Array Int Elem)) Bool) + +(assert (forall ((n Int) (m Int) (A (Array Int Elem))) + (= (R nil m n A) (= m n)))) + +(assert (forall ((xs Lst) (h Elem) (m Int) (n Int) (A (Array Int Elem))) + (= (R (cons h xs) m n A) + (and (< m n) + (= h (select A (- n 1))) + (R xs m (- n 1) A))))) + +(assert (not (forall ((xs Lst) (m Int) (n Int) (A (Array Int Elem))) (=> (R xs m n A) (<= m n))))) + +(check-sat) diff --git a/bench_sim/queue_arr_extra_4.smt2 b/bench_sim/queue_arr_extra_4.smt2 new file mode 100644 index 000000000..d13a24314 --- /dev/null +++ b/bench_sim/queue_arr_extra_4.smt2 @@ -0,0 +1,18 @@ +(declare-sort Elem) +(declare-datatypes () ((Lst (cons (head Elem) (tail Lst)) (nil)))) + +(declare-fun R (Lst Int Int (Array Int Elem)) Bool) + +(assert (forall ((n Int) (m Int) (A (Array Int Elem))) + (= (R nil m n A) (= m n)))) + +(assert (forall ((xs Lst) (h Elem) (m Int) (n Int) (A (Array Int Elem))) + (= (R (cons h xs) m n A) + (and (< m n) + (= h (select A (- n 1))) + (R xs m (- n 1) A))))) + +(assert (not (forall ((m Int) (n Int) (n1 Int) (xs Lst) (h Elem) (A (Array Int Elem))) + (=> (and (>= n1 n) (R xs m n A)) (R xs m n (store A n1 h)))))) + +(check-sat) diff --git a/include/adt/ADTSolver.hpp b/include/adt/ADTSolver.hpp index 5846ff8e3..249d79a97 100644 --- a/include/adt/ADTSolver.hpp +++ b/include/adt/ADTSolver.hpp @@ -32,10 +32,7 @@ namespace ufo ADTSolver(Expr _goal, ExprVector& _assumptions, ExprVector& _constructors, int _maxDepth, int _maxSameAssm) : goal(_goal), assumptions(_assumptions), constructors(_constructors), - efac(_goal->getFactory()), u(_goal->getFactory()), maxDepth(_maxDepth), maxSameAssm(_maxSameAssm) - { - assert(isOpX(goal)); - } + efac(_goal->getFactory()), u(_goal->getFactory()), maxDepth(_maxDepth), maxSameAssm(_maxSameAssm) {} bool simplifyGoal() { @@ -64,10 +61,66 @@ namespace ufo return false; } + void mergeAssumptions(int bnd = 6) + { + for (int i = 0; i < bnd; i++) + { + ExprSet newAssms; + for (auto & a : assumptions) + { + // todo: figure out why there could be NULLs + if (a == NULL) continue; + simplifyAssm(a, newAssms); + newAssms.insert(a); + } + assumptions.clear(); + for (auto & a : newAssms) assumptions.push_back(a); + } + } + + void splitAssumptions() + { + ExprSet newAssms; + for (auto & a : assumptions) + { + if (a != NULL) getConj(a, newAssms); + } + assumptions.clear(); + for (auto & a : newAssms) assumptions.push_back(a); + } + + void simplifyAssm(Expr assm, ExprSet& newAssms) + { + Expr e = assm; + if (isOpX(assm)) e = assm->last(); + + for (auto a : assumptions) + { + if (a == assm || a == NULL) continue; + + Expr tmp = useAssumption(e, a, true); + if (tmp != NULL) + { + ExprSet tmps; + getConj(simplifyBool(tmp), tmps); + for (auto & t : tmps) + { + if (find(assumptions.begin(), assumptions.end(), t) == assumptions.end() && + treeSize(t) < 150 /*to make parametric*/) + { +// outs () << " >>> adding new: " << *t << ": " << treeSize(t) << "\n"; + newAssms.insert(t); + } + } + } + } + } + // main method to do rewriting - Expr useAssumption(Expr subgoal, Expr assm) + Expr useAssumption(Expr subgoal, Expr assm, bool fwd = false) { subgoal = liftITEs(subgoal); + if (isOpX(assm)) { ExprMap matching; @@ -76,13 +129,32 @@ namespace ufo Expr assmQF = assm->last(); Expr repl = assmQF; + bool isImpl; + if (isOpX(assmQF)) + { + if (fwd) assmQF = assmQF->left(); + else assmQF = assmQF->right(); + isImpl = true; + } + // we first search for a matching of the entire assumption (usually some inequality) if (findMatchingSubexpr (assmQF, subgoal, args, matching)) { for (auto & a : matching) repl = replaceAll(repl, a.first, a.second); - Expr replaced = replaceAll(subgoal, repl, mk(efac)); + Expr replaced; + if (!isImpl) replaced = replaceAll(subgoal, repl, mk(efac)); + else + { + if (fwd) // used in simplifyAssm + { + if (u.implies(subgoal, repl->left())) replaced = repl->right(); + } + else replaced = replaceAll(subgoal, repl->right(), repl->left()); + } + if (subgoal != replaced) return replaced; } + if (isOpX(assmQF)) { matching.clear(); @@ -121,6 +193,11 @@ namespace ufo return res; } } + // TODO: proper matching + if (isOpX(subgoal) && u.implies(subgoal->left(), assm)) + { + return subgoal->right(); + } } // if nothing helped, return NULL -- it will be used for backtracking return NULL; @@ -136,7 +213,7 @@ namespace ufo subgoal_copy = useAssumption(subgoal_copy, assumptions[i]); if (subgoal_copy == NULL || subgoal_copy == subgoal) break; - outs () << "rewritten [" << i << "]: " << *subgoal_copy << "\n"; +// outs () << "rewritten [" << i << "]: " << *subgoal_copy << "\n"; if (u.isEquiv(subgoal_copy, mk(efac))) return true; } return false; @@ -145,12 +222,16 @@ namespace ufo // this recursive method performs a naive search for a strategy bool rewriteAssumptions(Expr subgoal) { - if (u.isEquiv(subgoal, mk(efac))) return true; + if (u.isEquiv(subgoal, mk(efac))) + { +// outs () << "rewriting done\n"; + return true; + } // check recursion depth if (rewriteSequence.size() >= maxDepth) { - outs() << "Maximum recursion depth reached\n"; +// outs() << "Maximum recursion depth reached\n"; return false; } @@ -166,32 +247,69 @@ namespace ufo if (i == maxSameAssm) { - outs() << "Maximum use of assumption #" << assmId << " reached\n"; +// outs() << "Maximum use of assumption #" << assmId << " reached\n"; return false; } } + // quick syntactic check first: + for (int i = 0; i < assumptions.size(); i++) + if (assumptions[i] == subgoal) + { +// outs () << "rewriting done\n"; + return true; + } + + // todo: more priorities + for (int i = 0; i < assumptions.size(); i++) { Expr a = assumptions[i]; Expr res = useAssumption(subgoal, a); if (res != NULL) { - outs () << "rewritten [" << i << "]: " << *res << "\n"; // save history rewriteHistory.push_back(res); rewriteSequence.push_back(i); - if (rewriteAssumptions(res)) + ExprSet subRes; + getConj(res, subRes); + bool done = true; +// int part = 1; + for (Expr r : subRes) + { + auto rewriteHistoryTmp = rewriteHistory; + auto rewriteSequenceTmp = rewriteSequence; + +// outs () << "rewritten "; +// if (subRes.size() > 1) outs () << "(part " << part << "/" << subRes.size()<< ") "; +// outs () << "[" << i << "]: " << *r << "\n"; +// part++; + bool res = rewriteAssumptions(r); + + rewriteHistory = rewriteHistoryTmp; + rewriteSequence = rewriteSequenceTmp; + + if (res) continue; + else + { + done = false; + break; + } + } + + if (done) + { +// outs () << "rewriting done\n"; return true; - else { - // failed attempt, remove history - rewriteHistory.pop_back(); - rewriteSequence.pop_back(); } + // failed attempt, remove history + rewriteHistory.pop_back(); + rewriteSequence.pop_back(); + // backtrack: - outs () << "backtrack to: " << *subgoal << "\n"; +// outs () << "backtrack to: " << *subgoal << "\n"; } } @@ -297,6 +415,8 @@ namespace ufo } } + int glob_ind = 0; + bool induction(int num, vector& basenums, vector& indnums) { assert(num < goal->arity() - 1); @@ -312,12 +432,22 @@ namespace ufo { if (i == num) continue; // TODO: make sure the name is unique - Expr s = bind::mkConst(mkTerm ("_v_" + to_string(i), efac), goal->arg(i)->last()); + Expr s = bind::mkConst(mkTerm ("_v_" + to_string(glob_ind), efac), goal->arg(i)->last()); + glob_ind++; goalQF = replaceAll(goalQF, bind::fapp(goal->arg(i)), s); } // prove the base case Expr baseSubgoal = replaceAll(goalQF, typeDecl, baseConstructor); + ExprVector assumptionsTmp; + if (isOpX(baseSubgoal)) + { + assumptionsTmp = assumptions; + assumptions.push_back(baseSubgoal->left()); + baseSubgoal = baseSubgoal->right(); + } + mergeAssumptions(); + splitAssumptions(); printAssumptions(); outs() << "\nBase case: " << *baseSubgoal << "\n"; @@ -351,6 +481,8 @@ namespace ufo } } + if (!assumptionsTmp.empty()) assumptions = assumptionsTmp; + // generate inductive hypotheses ExprVector args; ExprVector indHypotheses; @@ -358,7 +490,8 @@ namespace ufo for (int i = 1; i < indConstructor->arity() - 1; i++) { // TODO: make sure the name is unique - Expr s = bind::mkConst(mkTerm ("_t_" + to_string(i), efac), indConstructor->arg(i)); + Expr s = bind::mkConst(mkTerm ("_t_" + to_string(glob_ind), efac), indConstructor->arg(i)); + glob_ind++; args.push_back(s); if (type == indConstructor->arg(i)) // type check @@ -393,6 +526,15 @@ namespace ufo // prove the inductive step Expr indConsApp = bind::fapp(indConstructor, args); Expr indSubgoal = replaceAll(goalQF, bind::fapp(typeDecl), indConsApp); + + if (isOpX(indSubgoal)) + { + assumptions.push_back(indSubgoal->left()); + indSubgoal = indSubgoal->right(); + } + + mergeAssumptions(); + splitAssumptions(); printAssumptions(); outs() << "\nInductive step: " << * indSubgoal << "\n"; @@ -404,24 +546,174 @@ namespace ufo tryStrategy(indSubgoal, indnums); if (indres) return true; - else + + ExprVector newArgs; + for (int i = 0; i < goal->arity() - 1; i++) { - ExprVector newArgs; - for (int i = 0; i < goal->arity() - 1; i++) + if (i == num) continue; + newArgs.push_back(goal->arg(i)); + } + + if (newArgs.size() > 0) + { + outs () << "\nProceeding to nested induction\n"; + newArgs.push_back(replaceAll(goal->last(), bind::fapp(typeDecl), indConsApp)); + Expr newGoal = mknary(newArgs); + ADTSolver sol (newGoal, assumptions, constructors, maxDepth, maxSameAssm); + if (sol.solve (basenums, indnums)) return true; + outs () << "Nested induction unsuccessful\n\n"; + } + + // last resort so far + return doCaseSplitting(indSubgoal); + } + + bool doCaseSplitting(Expr goal) + { + for (int i = 0; i < assumptions.size(); i++) + { + Expr pre; + auto a = assumptions[i]; + if (isOpX(a) && isOpX(a->last())) { - if (i == num) continue; - newArgs.push_back(goal->arg(i)); + ExprSet pres; + getConj(a->last()->left(), pres); + + ExprVector varz; + for (int i = 0; i < a->arity() - 1; i++) varz.push_back(bind::fapp(a->arg(i))); + + for (auto & p : pres) + { + if (emptyIntersect(p, varz)) + { + pre = p; + break; + } + } } - if (newArgs.size() > 0) + + if (isOpX(a)) pre = a->left(); + + if (pre != NULL) { - outs () << "\nProceeding to nested induction\n"; - newArgs.push_back(replaceAll(goal->last(), bind::fapp(typeDecl), indConsApp)); - Expr newGoal = mknary(newArgs); - ADTSolver sol (newGoal, assumptions, constructors, maxDepth, maxSameAssm); - return sol.solve (basenums, indnums); + // GF: to support if isOpX(pre) = true. + Expr d = destructDiseq(pre); + if (d != NULL) + { + assert(isOpX(d)); + outs () << "Case splitting for " << *d->left() << ":\n"; + outs () << " Case " << *d << "\n"; + auto assumptionsTmp = assumptions; + auto rewriteHistoryTmp = rewriteHistory; + auto rewriteSequenceTmp = rewriteSequence; + Expr assumptionTmp = a; + + assumptions[i] = simplifyBool(replaceAll(assumptionTmp, pre, mk(efac))); + + ExprSet newAssms; + newAssms.insert(d); + for (auto & oa : assumptions) + getConj(simplifyBool(replaceAll(oa, d->left(), d->right())), newAssms); + + for (auto & na : newAssms) assumptions.push_back(na); + mergeAssumptions(); + + printAssumptions(); + bool partiallyDone = rewriteAssumptions(goal); + + assumptions = assumptionsTmp; + rewriteHistory = rewriteHistoryTmp; + rewriteSequence = rewriteSequenceTmp; + + if (!partiallyDone) continue; + outs() << "Successful\n\n"; + + pre = mkNeg(pre); + assert(isOpX(pre) && pre->left() == d->left()); + outs () << " Case " << *pre << "\n"; + + assumptions[i] = simplifyBool(replaceAll(assumptionTmp, pre, mk(efac))); + + newAssms.clear(); + newAssms.insert(pre); + for (auto & oa : assumptions) + getConj(simplifyBool(replaceAll(oa, pre->left(), pre->right())), newAssms); + + for (auto & na : newAssms) assumptions.push_back(na); + mergeAssumptions(); + + printAssumptions(); + bool done = rewriteAssumptions(goal); + + assumptions = assumptionsTmp; + rewriteHistory = rewriteHistoryTmp; + rewriteSequence = rewriteSequenceTmp; + + if (done) + { + outs() << "Successful\n\n"; + return true; + } + } } - return false; } + return false; + } + + Expr destructDiseq(Expr e) + { + if (isOpX(e)) + { + e = mkNeg(e->left()); + } + if (isOp(e)) + { + Expr ty; + if (bind::isAdtConst(e->left())) + { + ty = e->left()->last()->last(); + } + else if (bind::isAdtConst(e->right())) + { + ty = e->right()->last()->last(); + } + + if (ty == NULL) return NULL; + + Expr t; + if (e->right()->last() == baseConstructors[ty]) + { + t = e->left(); + } + else if (e->left()->last() == baseConstructors[ty]) + { + t = e->right(); + } + + Expr indConstructor = indConstructors[ty]; + ExprVector args; + for (int i = 1; i < indConstructor->arity() - 1; i++) + { + // TODO: make sure the name is unique + Expr s = bind::mkConst(mkTerm ("_t_" + to_string(glob_ind), efac), indConstructor->arg(i)); + glob_ind++; + args.push_back(s); + } + Expr indConsApp = bind::fapp(indConstructor, args); + return mk(t, indConsApp); + } + + return NULL; + } + + bool solveNoind() + { + mergeAssumptions(2); + printAssumptions(); + outs () <<"=====\n"<< *goal << "\n\n\n"; + bool res = rewriteAssumptions(goal); + outs () << " proved: " << res << "\n"; + return true; } bool solve(vector& basenums, vector& indnums) @@ -503,24 +795,19 @@ namespace ufo ExprVector assumptions; Expr goal; - if (isOpX(s)) + ExprSet cnjs; + getConj(s, cnjs); + for (auto & c : cnjs) { - for (int i = 0; i < s->arity(); i++) + if (isOpX(c)) { - Expr a = s->arg(i); - if (isOpX(a)) - { - goal = regularizeQF(a->left()); - } - else - { - assumptions.push_back(regularizeQF(a)); - } + if (goal != NULL) assert (0 && "cannot identify goal (two negged flas)"); + goal = regularizeQF(c->left()); + } + else + { + assumptions.push_back(regularizeQF(c)); } - } - else if (isOpX(s)) - { - goal = regularizeQF(s->left()); } if (goal == NULL) @@ -528,8 +815,10 @@ namespace ufo outs () << "Unable to parse the query\n"; return; } + ADTSolver sol (goal, assumptions, constructors, maxDepth, maxSameAssm); - sol.solve (basenums, indnums); + if (isOpX(goal)) sol.solve(basenums, indnums); + else sol.solveNoind(); } } diff --git a/include/ae/ExprSimpl.hpp b/include/ae/ExprSimpl.hpp index 07da3457d..9c5929742 100644 --- a/include/ae/ExprSimpl.hpp +++ b/include/ae/ExprSimpl.hpp @@ -760,7 +760,9 @@ namespace ufo return exp; } }; - + + static Expr simplifyBool (Expr exp); + struct SimplifyBoolExpr { ExprFactory &efac; @@ -773,35 +775,43 @@ namespace ufo if (isOpX(exp)) { - if (isOpX(exp->right())) - return mk(efac); + Expr lhs = simplifyBool(exp->left()); + Expr rhs = simplifyBool(exp->right()); + if (isOpX(rhs)) return mk(efac); + if (isOpX(rhs)) return mkNeg(lhs); + if (isOpX(lhs)) return rhs; - if (isOpX(exp->right())) - return mk(exp->left()); - - return (mk( - mk(exp->left()), - exp->right())); + return mk(lhs, rhs); } if (isOpX(exp)){ - for (auto it = exp->args_begin(), end = exp->args_end(); it != end; ++it){ - - if (isOpX(*it)) return mk(efac); - - if (isOpX(*it) && (*it)->left() == (*it)->right()) return mk(efac); - + ExprSet dsjs; + ExprSet newDsjs; + getConj(exp, dsjs); + for (auto & d : dsjs) + { + if (isOpX(d)) return mk(efac); + if (isOpX(d) && d->left() == d->right()) return mk(efac); + if (!isOpX(d)) newDsjs.insert(d); } + return disjoin(newDsjs, efac); } if (isOpX(exp)){ - for (auto it = exp->args_begin(), end = exp->args_end(); it != end; ++it){ - - if (isOpX(*it)) return mk(efac); - + ExprSet cnjs; + ExprSet newCnjs; + getConj(exp, cnjs); + for (auto & c : cnjs) + { + if (isOpX(c)) return mk(efac); + if (!isOpX(c)) newCnjs.insert(c); } + return conjoin(newCnjs, efac); + } + + if (isOpX(exp) && exp->left() == exp->right()) { + return mk(efac); } - return exp; } }; @@ -993,7 +1003,7 @@ namespace ufo inline static bool findMatching(Expr pattern, Expr exp, ExprVector& vars, ExprMap& matching) { - if (pattern == exp && (isOpX(pattern) || (isOpX(pattern)))) return true; + if (pattern == exp && (isOpX(pattern) || isOpX(pattern))) return true; if (bind::typeOf(pattern) != bind::typeOf(exp)) return false; @@ -1012,6 +1022,7 @@ namespace ufo (isOpX(exp) && isOpX(pattern)) || (isOpX(exp) && isOpX(pattern)) || (isOpX(exp) && isOpX(pattern)) || + (isOpX(exp) && isOpX(pattern)) || (isOpX(exp) && isOpX(pattern) && pattern->left() == exp->left())) { diff --git a/include/ufo/Expr.hpp b/include/ufo/Expr.hpp index 0523e571a..41a526060 100644 --- a/include/ufo/Expr.hpp +++ b/include/ufo/Expr.hpp @@ -2328,6 +2328,10 @@ namespace expr if (isOp(v)) return typeOf(v->left()); if (isOpX(v)) return typeOf(v->last()); + + if (isOpX(v)) return typeOf(v->left()); + if (isOpX(assm)) + { + + for (auto & a : stores) + { + if (assm->left() == a->left() && + assm->right() == a->right() && + isOpX(a->last())) + { + return replaceAll(subgoal, a, a->left()); + } + } + } + + if (isOpX(assm) && isOpX(*it)) // super big hack + qFreeAssms.insert(*it); + + it = assumptions.erase(it); + } + else ++it; + } + + if (verbose) outs () << "\nProving by induction\n"; + goal = createQuantifiedFormula(mk(conjoin(qFreeAssms, efac), goal), constructors); + + vector basenums, indnums; // dummies + res = solve(basenums, indnums); + } + return res; } bool solve(vector& basenums, vector& indnums) @@ -724,7 +1451,7 @@ namespace ufo { if (simplifyGoal()) { - outs () << "Trivially Proved\n"; + if (verbose) outs () << "Trivially Proved\n"; return true; } } @@ -732,14 +1459,13 @@ namespace ufo // simple heuristic: if the result of every rewriting made the goal larger, we rollback bool toRollback = true; for (int i = 1; i < rewriteHistory.size(); i++) - { toRollback = toRollback && (treeSize(rewriteHistory[i-1]) < treeSize(rewriteHistory[i])); - } if (toRollback) goal = rewriteHistory[0]; - outs () << "Simplified goal: " << *goal << "\n\n"; + if (verbose) outs () << "Simplified goal: " << *goal << "\n\n"; + for (int i = 0; i < goal->arity() - 1; i++) { Expr type = goal->arg(i)->last(); @@ -747,12 +1473,12 @@ namespace ufo { if (induction(i, basenums, indnums)) { - outs () << " Proved\n"; + if (verbose) outs () << "\nProved\n"; return true; } else { - outs () << " Failed\n"; + if (verbose) outs () << "\nFailed\n"; return false; } } @@ -783,7 +1509,8 @@ namespace ufo nums.push_back(atoi(substr)); } - void adtSolve(EZ3& z3, Expr s, char* basecheck, char *indcheck, int maxDepth, int maxSameAssm) + void adtSolve(EZ3& z3, Expr s, char* basecheck, char *indcheck, int maxDepth, + int maxGrow, int mergingIts, int earlySplit, bool verbose) { vector basenums; vector indnums; @@ -801,7 +1528,7 @@ namespace ufo { if (isOpX(c)) { - if (goal != NULL) assert (0 && "cannot identify goal (two negged flas)"); + if (goal != NULL) assert (0 && "cannot identify goal (two asserts with negged formulas)"); goal = regularizeQF(c->left()); } else @@ -816,7 +1543,7 @@ namespace ufo return; } - ADTSolver sol (goal, assumptions, constructors, maxDepth, maxSameAssm); + ADTSolver sol (goal, assumptions, constructors, maxDepth, maxGrow, mergingIts, earlySplit, verbose); if (isOpX(goal)) sol.solve(basenums, indnums); else sol.solveNoind(); } diff --git a/include/ae/ExprSimpl.hpp b/include/ae/ExprSimpl.hpp index 9c5929742..88d69d901 100644 --- a/include/ae/ExprSimpl.hpp +++ b/include/ae/ExprSimpl.hpp @@ -56,6 +56,21 @@ namespace ufo return emptyIntersect(a, bv); } + inline static bool hasExtraVars(Expr a, ExprVector& b) + { + ExprVector av; + filter (a, bind::IsConst (), inserter(av, av.begin())); + for (auto & v : av) if (find(b.begin(), b.end(), v) == b.end()) return true; + return false; + } + + inline static bool hasExtraVars(Expr a, Expr b) + { + ExprVector bv; + filter (b, bind::IsConst (), inserter(bv, bv.begin())); + return hasExtraVars(a, bv); + } + // if at the end disjs is empty, then a == true inline static void getConj (Expr a, ExprSet &conjs) { @@ -90,6 +105,18 @@ namespace ufo } } + template static void unique_push_back(T e, vector& v) + { + if (find(v.begin(), v.end(), e) == v.end()) v.push_back(e); + } + + static void uniquePushConj(Expr e, ExprVector& v) + { + ExprSet cnjs; + getConj(e, cnjs); + for (auto & g : cnjs) unique_push_back(g, v); + } + inline static Expr reBuildNegCmp(Expr term, Expr lhs, Expr rhs) { if (isOpX(term)) @@ -129,12 +156,33 @@ namespace ufo args.insert(mkNeg(term->arg(i))); } return isOpX(term) ? disjoin(args, term->getFactory()) : - conjoin (args, term->getFactory()); + conjoin (args, term->getFactory()); } else if (isOp(term)) { return reBuildNegCmp(term, term->arg(0), term->arg(1)); } + else if (isOpX(term)) + { + return mk(term->left(), mkNeg(term->right())); + } + else if (isOpX(term)) + { + return mk(mk(mkNeg(term->left()), mkNeg(term->right())), + mk(term->left(), mkNeg(term->last()))); + } + else if (isOpX(term)) + { + return mkNeg(term->last()); + } + else if (isOpX(term)) + { + ExprVector args; + for (int i = 0; i < term->arity()-1; i++) + args.push_back(term->arg(i)); + args.push_back(mkNeg(term->last())); + return mknary(args); + } return mk(term); } @@ -157,7 +205,109 @@ namespace ufo return mk(multiplier, e); else return e; } - + + inline static void getMultOps (Expr a, ExprVector &ops) + { + if (isOpX(a)){ + for (unsigned i = 0; i < a->arity(); i++){ + getMultOps(a->arg(i), ops); + } + } else { + ops.push_back(a); + } + } + + static void getAddTerm (Expr a, ExprVector &terms); // declaration only + + inline static Expr arithmInverse(Expr e) + { + bool success = true; + if (isOpX(e)) + { + int coef = 1; + ExprVector ops; + getMultOps (e, ops); + + Expr var = NULL; + for (auto & a : ops) + { + if (isOpX(a)) + { + coef *= lexical_cast(a); + } + else if (bind::isIntConst(a) && var == NULL) + { + var = a; + } + else + { + success = false; + } + } + if (success && coef != 0) return mk(mkTerm (mpz_class (-coef), e->getFactory()), e->right()); + if (coef == 0) return mkTerm (mpz_class (0), e->getFactory()); + } + else if (isOpX(e)) + { + ExprVector terms; + for (auto it = e->args_begin (), end = e->args_end (); it != end; ++it) + { + getAddTerm(arithmInverse(*it), terms); + } + return mknary(terms); + } + else if (isOpX(e)) + { + ExprVector terms; + getAddTerm(arithmInverse(*e->args_begin ()), terms); + auto it = e->args_begin () + 1; + for (auto end = e->args_end (); it != end; ++it) + { + getAddTerm(*it, terms); + } + return mknary(terms); + } + else if (isOpX(e)) + { + return e->left(); + } + else if (isOpX(e)) + { + return mkTerm (mpz_class (-lexical_cast(e)), e->getFactory()); + } + return mk(mkTerm (mpz_class (-1), e->getFactory()), e); + } + + inline static void getAddTerm (Expr a, ExprVector &terms) // implementation (mutually recursive) + { + if (isOpX(a)) + { + for (auto it = a->args_begin (), end = a->args_end (); it != end; ++it) + { + getAddTerm(*it, terms); + } + } + else if (isOpX(a)) + { + auto it = a->args_begin (); + auto end = a->args_end (); + getAddTerm(*it, terms); + ++it; + for (; it != end; ++it) + { + getAddTerm(arithmInverse(*it), terms); + } + } + else if (isOpX(a)) + { + getAddTerm(arithmInverse(a->left()), terms); + } + else + { + terms.push_back(a); + } + } + /** * Rewrites distributivity rule: * a*b + a*c -> a*(b + c) @@ -187,7 +337,7 @@ namespace ufo } return e; } - + /** * Self explanatory */ @@ -203,7 +353,7 @@ namespace ufo return false; } - + /** * Self explanatory */ @@ -238,8 +388,15 @@ namespace ufo else if (bind::isIntConst(e)) return mk(mkTerm (mpz_class (-1), e->getFactory()), e); - // otherwise could be buggy... - return mk(mkTerm (mpq_class (-1), e->getFactory()), e); + else if (isOpX(e) || isOpX(e)) + { + ExprVector all; + getAddTerm(e, all); + ExprVector negged; + for (auto & a : all) negged.push_back(additiveInverse(a)); + return mkplus(negged, e->getFactory()); + } + return mk(e); } /** @@ -342,15 +499,7 @@ namespace ufo // third, combine results; if (lhs != 0){ - Expr rhsPlus; - if (rhs.size() > 1){ - rhsPlus = exprDistributor(mknary(rhs)); - } else if (rhs.size() == 1) { - rhsPlus = *rhs.begin(); - } else if (rhs.size() == 0) { - rhsPlus = mkTerm (mpz_class (0), e->getFactory()); - } - return mk(lhs,rhsPlus); + return mk(lhs, mkplus(rhs, var->getFactory())); } return e; } @@ -701,78 +850,180 @@ namespace ufo return ret; } - struct SimplifyArithmExpr + inline static Expr reBuildCmp(Expr term, Expr lhs, Expr rhs) { - ExprFactory &efac; - - Expr zero; - Expr one; - Expr minus_one; - - SimplifyArithmExpr (ExprFactory& _efac): - efac(_efac) + if (isOpX(term)){ + return mk(lhs, rhs); + } + if (isOpX(term)){ + return mk(lhs, rhs); + } + if (isOpX(term)){ + return mk(lhs, rhs); + } + if (isOpX(term)){ + return mk(lhs, rhs); + } + if (isOpX(term)){ + return mk(lhs, rhs); + } + assert(isOpX(term)); + return mk(lhs, rhs); + } + + inline static bool evaluateCmpConsts(Expr term) + { + if (!isOpX(term->left()) || !isOpX(term->right())) + return false; + int a = lexical_cast(term->left()); + int b = lexical_cast(term->right()); + if (isOpX(term)) { - zero = mkTerm (mpz_class (0), efac); - one = mkTerm (mpz_class (1), efac); - minus_one = mkTerm (mpz_class (1), efac); - }; - - Expr operator() (Expr exp) + return (a == b); + } + if (isOpX(term)) { - if (isOpX(exp)) - { - return simplifiedPlus(exp, zero); - } - - if (isOpX(exp) && exp->arity() == 2) - { - return simplifiedMinus(exp->left(), exp->right()); - } - - if (isOpX(exp)) + return (a != b); + } + if (isOpX(term)) + { + return (a <= b); + } + if (isOpX(term)) + { + return (a >= b); + } + if (isOpX(term)) + { + return (a < b); + } + assert(isOpX(term)); + return (a > b); + } + + inline static int separateConst(ExprVector& plsOps) + { + int c = 0; + for (auto it = plsOps.begin(); it != plsOps.end(); ) + { + if (isOpX(*it)) { - if (exp->left() == zero) return zero; - if (exp->right() == zero) return zero; - if (exp->left() == one) return exp->right(); - if (exp->right() == one) return exp->left(); - if (exp->left() == minus_one) return mk(exp->right()); - if (exp->right() == minus_one) return mk(exp->left()); + c += lexical_cast(*it); + it = plsOps.erase(it); + continue; } - - if (isOpX(exp)) + else ++it; + } + return c; + } + + inline static Expr simplifyPlus (Expr exp){ + ExprVector plsOps; + getAddTerm (exp, plsOps); + // GF: to extend + int c = separateConst(plsOps); + if (c != 0) plsOps.push_back(mkTerm (mpz_class (c), exp->getFactory())); + return mkplus(plsOps, exp->getFactory()); + } + + inline static Expr simplifyIte (Expr exp) // simple version, on the syntactic level + { + ExprFactory &efac = exp->getFactory(); + ExprVector plusOpsLeft; + ExprVector plusOpsRight; + getAddTerm(exp->right(), plusOpsLeft); + getAddTerm(exp->last(), plusOpsRight); + + ExprVector commonTerms; + for (auto it1 = plusOpsLeft.begin(); it1 != plusOpsLeft.end(); ) + { + bool found = false; + for (auto it2 = plusOpsRight.begin(); it2 != plusOpsRight.end(); ) { - Expr uneg = exp->left(); - if (uneg == zero) return zero; - if (uneg == minus_one) return one; - if (isOpX(uneg)) return uneg->left(); - if (isOpX(uneg)){ - Expr unegl = uneg->left(); - Expr unegr = uneg->right(); - if (isOpX(unegl)) return mk(unegl->left(), unegr); - if (isOpX(unegr)) return mk(unegr->left(), unegl); + if (*it1 == *it2) + { + if (lexical_cast(*it1) != "0") + commonTerms.push_back(*it1); + found = true; + plusOpsRight.erase(it2); + break; + } + else + { + ++it2; } } - - if (isOpX(exp)) + if (found) it1 = plusOpsLeft.erase(it1); + else ++it1; + } + + Expr b1 = mkplus(plusOpsLeft, efac); + Expr b2 = mkplus(plusOpsRight, efac); + if (b1 == b2) + { + if (lexical_cast(b1) != "0") + commonTerms.push_back(b1); + } + else + { + commonTerms.push_back(mk(exp->left(), b1, b2)); + } + return mkplus(commonTerms, efac); + } + + inline static Expr simplifyCmp (Expr exp) + { + ExprFactory &efac = exp->getFactory(); + if (evaluateCmpConsts(exp)) return mk(efac); + + ExprVector plusOpsLeft; + ExprVector plusOpsRight; + getAddTerm(exp->left(), plusOpsLeft); + getAddTerm(exp->right(), plusOpsRight); + + int c1 = separateConst(plusOpsLeft); + int c2 = separateConst(plusOpsRight); + + for (auto it1 = plusOpsLeft.begin(); it1 != plusOpsLeft.end(); ) + { + bool found = false; + for (auto it2 = plusOpsRight.begin(); it2 != plusOpsRight.end(); ) { - if (isOpX(exp->right())) return mk(exp->left(), exp->right()->left()); + if (*it1 == *it2) + { + found = true; + plusOpsRight.erase(it2); + break; + } + else + { + ++it2; + } } - return exp; + if (found) it1 = plusOpsLeft.erase(it1); + else ++it1; } - }; + + if (c1 > c2) + plusOpsLeft.push_back(mkTerm (mpz_class (c1 - c2), efac)); + else if (c1 < c2) + plusOpsRight.push_back(mkTerm (mpz_class (c2 - c1), efac)); + + return reBuildCmp(exp, mkplus(plusOpsLeft, efac), mkplus(plusOpsRight, efac)); + } static Expr simplifyBool (Expr exp); struct SimplifyBoolExpr { ExprFactory &efac; - + SimplifyBoolExpr (ExprFactory& _efac) : efac(_efac){}; - + Expr operator() (Expr exp) { // GF: to enhance - + if (isOpX(exp)) { Expr lhs = simplifyBool(exp->left()); @@ -783,96 +1034,321 @@ namespace ufo return mk(lhs, rhs); } - - if (isOpX(exp)){ + + if (isOpX(exp)){ + if (isOpX(exp->right())) return exp->left(); + if (isOpX(exp->left())) return exp->right(); + if (isOpX(exp->right())) return mkNeg(exp->left()); + if (isOpX(exp->left())) return mkNeg(exp->right()); + } + + if (isOpX(exp)) + { ExprSet dsjs; ExprSet newDsjs; - getConj(exp, dsjs); - for (auto & d : dsjs) - { - if (isOpX(d)) return mk(efac); - if (isOpX(d) && d->left() == d->right()) return mk(efac); - if (!isOpX(d)) newDsjs.insert(d); + getDisj(exp, dsjs); + for (auto & a : dsjs){ + if (isOpX(a)) + { + return mk(efac); + } + if (isOpX(a)) + { + continue; + } + newDsjs.insert(simplifyBool(a)); } - return disjoin(newDsjs, efac); + return disjoin (newDsjs, efac); } - - if (isOpX(exp)){ + + if (isOpX(exp)) + { ExprSet cnjs; ExprSet newCnjs; getConj(exp, cnjs); - for (auto & c : cnjs) - { - if (isOpX(c)) return mk(efac); - if (!isOpX(c)) newCnjs.insert(c); + for (auto & a : cnjs){ + if (isOpX(a)) + { + return mk(efac); + } + if (isOpX(a)) + { + continue; + } + newCnjs.insert(simplifyBool(a)); } - return conjoin(newCnjs, efac); + return conjoin (newCnjs, efac); } - if (isOpX(exp) && exp->left() == exp->right()) { - return mk(efac); + if (isOpX(exp)){ + Expr cond = exp->arg(0); + if (isOpX(cond)) + { + return exp->arg(1); + } + else if (isOpX(cond)) + { + return exp->arg(2); + } + else if (isOpX(exp->arg(1)) && isOpX(exp->arg(2))) + { + return cond; + } + else if (isOpX(exp->arg(1)) && isOpX(exp->arg(2))) + { + return mkNeg(cond); + } + else if (exp->arg(1) == exp->arg(2)) + { + return exp->arg(1); + } } + + if (isOpX(exp)) // && + // (isOp(exp->left()) || + // isOpX(exp->left()) || isOpX(exp->left()))) + return mkNeg(exp->left()); + return exp; } }; - - struct PlusMinusChanger + + inline static bool isNumeric(Expr a) + { + // don't consider ITE-s + return (isOp(a) || isOpX(a) || + isOpX(a) || bind::isIntConst(a) || isOpX(exp)) + { + if (isOpX(exp->left()) && exp->right() == exp->left()->right()) + { + return exp->left()->last(); + } + if (isOpX(exp->left()) && // exp->right() != exp->left()->right() && + bind::typeOf(exp->left())->last() == mk (exp->efac ())) + { + return mk( + mk(mk(exp->right(), exp->left()->right()), + exp->left()->last()), + mk(mk(exp->right(), exp->left()->right()), + mk(exp->right(), exp->left()->right()), exp->left()->last())); + } + if (isOpX(exp->right()) && exp->left() == exp->right()->left()) + { + return simplifyArr(mk(mk(exp->left()) && ) +// { +// return mk(mk(exp) && isOpX(exp)) && + !(containsOp(exp) || containsOp(exp)) && + findMatching (pattern, exp, vars, matching)) { found = true; return VisitAction::skipKids (); @@ -1108,6 +1621,328 @@ namespace ufo RW rw(new ITElifter()); return dagVisit (rw, exp); } + + struct SelectStoreRewriter + { + SelectStoreRewriter () {}; + + ExprSet unusedSelects; + + Expr operator() (Expr exp) + { + if (isOpX(exp->left()->left(), exp->right())); + } + else if (isOpX(exp)) + { + Expr exprStore; + Expr exprArr; + if (isOpX(exp->left())) + { + exprStore = exp->left(); + exprArr = exp->right(); + } + else if (isOpX(exp->right())) + { + exprStore = exp->right(); + exprArr = exp->left(); + } + + if (exprStore != NULL && exprArr != NULL) + { + ExprSet all; + all.insert(mk(exprStore->last(), mk(exprArr, elem))); + } + } + return conjoin(all, exp->getFactory()); + } + } + else if (isOpX(exp)) + { + unusedSelects.insert(exp); + } + return exp; + } + }; + + inline static Expr rewriteSelectStore(Expr exp) + { + RW a(new SelectStoreRewriter()); + return dagVisit (a, exp); + } + + inline static void getCounters (Expr a, ExprSet &cntrs) + { + if (isOpX(v)) return typeOf(v->last()); + if (isOpX(v) || isOpX(v)) return typeOf(v->left()); std::cerr << "WARNING: could not infer type of: " << *v << "\n"; @@ -2406,8 +2412,16 @@ namespace expr return isOpX (e); } }; - - + + class IsFApp : public std::unary_function + { + public: + bool operator () (Expr e) + { + return isOpX (e) && isOpX (fname (e)); + } + }; + /// returns true if an expression is a constant class IsConst : public std::unary_function { @@ -2415,11 +2429,11 @@ namespace expr bool operator () (Expr e) { if (isOpX (e)) return this->operator() (variant::mainVariant (e)); - + return isOpX (e) && e->arity () == 1 && isOpX (fname (e)); } }; - + /// returns true if an expression is a variable class IsVar : public std::unary_function { @@ -2738,6 +2752,18 @@ namespace expr } }; + struct RAVALLM: public std::unary_function + { + ExprMap& m; + + RAVALLM (ExprMap& _m) : m(_m) { } + VisitAction operator() (Expr exp) const + { + if (m[exp] != NULL) return VisitAction::changeTo (m[exp]); + return VisitAction::doKids (); + } + }; + struct RAVSIMP: public std::unary_function { Expr s; @@ -2778,7 +2804,7 @@ namespace expr if (filter (exp)) { *(out++) = exp; - return VisitAction::skipKids (); + return VisitAction::doKids (); } return VisitAction::doKids (); @@ -2949,6 +2975,13 @@ namespace expr return dagVisit (rav, exp); } + // pairwise replacing + inline Expr replaceAll (Expr exp, ExprMap& m) + { + RAVALLM rav(m); + return dagVisit (rav, exp); + } + /** Replace all occurrences of s by t while simplifying the result */ inline Expr replaceAllSimplify (Expr exp, Expr s, Expr t) { diff --git a/tools/adt/Adt.cpp b/tools/adt/Adt.cpp index 4179d4d1c..613fea35f 100644 --- a/tools/adt/Adt.cpp +++ b/tools/adt/Adt.cpp @@ -37,10 +37,12 @@ int main (int argc, char ** argv) char *infile = getSmtFileName(1, argc, argv); char *basecheck = getStrValue("--base", NULL, argc, argv); char *indcheck = getStrValue("--ind", NULL, argc, argv); - int maxDepth = atoi(getStrValue("--max-depth", "10", argc, argv)); - int maxSameAssm = atoi(getStrValue("--max-same-assm", "2", argc, argv)); + int maxDepth = atoi(getStrValue("--max-depth", "5", argc, argv)); + int maxGrow = atoi(getStrValue("--max-grow", "2", argc, argv)); + int mergingIts = atoi(getStrValue("--merge-assms", "3", argc, argv)); + int earlySplit = atoi(getStrValue("--early-split", "1", argc, argv)); Expr e = z3_from_smtlib_file (z3, infile); - adtSolve(z3, e, basecheck, indcheck, maxDepth, maxSameAssm); + adtSolve(z3, e, basecheck, indcheck, maxDepth, maxGrow, mergingIts, earlySplit, true); return 0; } From 0e73904788b8ef5fff06655fd12c0925a9c92a7f Mon Sep 17 00:00:00 2001 From: grigoryfedyukovich Date: Sat, 4 Jul 2020 23:51:57 -0400 Subject: [PATCH 19/40] updated utils w.r.t. `sim` and `nonlin` branches; supported abduction --- CMakeLists.txt | 5 +- README.md | 24 +- include/adt/ADTSolver.hpp | 194 +- include/ae/AeValSolver.hpp | 1152 ++++----- include/ae/ExprSimpl.hpp | 3701 ++++++++++++++++++++++------ include/ae/SMTUtils.hpp | 72 +- include/ufo/Expr.hpp | 18 +- include/ufo/Smt/ZExprConverter.hpp | 40 +- tools/adt/Adt.cpp | 2 +- 9 files changed, 3541 insertions(+), 1667 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 22b92c6a3..9d23f1fed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,7 +46,7 @@ set (BOOST_COMPONENTS system) if (UNIT_TESTS) set (BOOST_COMPONENTS ${BOOST_COMPONENTS} unit_test_framework) endif() - find_package (Boost 1.55 REQUIRED COMPONENTS ${BOOST_COMPONENTS}) + find_package (Boost 1.67 REQUIRED COMPONENTS ${BOOST_COMPONENTS}) if (Boost_FOUND) include_directories (${Boost_INCLUDE_DIRS}) endif () @@ -181,9 +181,6 @@ else() set(GMPXX_LIB "") endif() -find_package(OpenMP) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") - install(DIRECTORY include/ DESTINATION include FILES_MATCHING diff --git a/README.md b/README.md index dd2e8e1ac..a760bfb6c 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,20 @@ About ===== - -Skolemizer for AE-formulas in LIA/LRA based on the Expression library of SeaHorn and the Z3 SMT solver. This is the main computational engine used in the Incremental Model Checking (LPAR'15, CAV'16) and in the Program Synthesis from Assume-Guarantee contracts (preprint). - + +Skolemizer for AE-formulas in LIA/LRA based on the Expression library of SeaHorn and the Z3 SMT solver. This is the main computational engine used in the Incremental Model Checking (LPAR'15, CAV'16) and in the Program Synthesis from Assume-Guarantee contracts (preprint). + Installation ============ -Compiles with gcc-5 (on Linux) and clang-700 (on Mac). Assumes preinstalled Gmp and Boost (libboost-system1.55-dev) packages. - -* `cd aeval ; mkdir build ; cd build` -* `cmake ../` -* `make` to build dependencies (Z3 and LLVM) -* `make` to build AE-VAL - +Compiles with gcc-5 (on Linux) and clang-700 (on Mac). Assumes preinstalled Gmp and Boost v1.67 packages. + +* `cd aeval ; mkdir build ; cd build` +* `cmake ../` +* `make` to build dependencies (Z3 and LLVM) +* `make` to build AE-VAL + The binary of AE-VAL can be found in `build/tools/aeval/`. - + Benchmarks ========== @@ -24,4 +24,4 @@ For example, if AE-VAL is run with the following input: `./build/tools/aeval/aeval bench/tasks/fast_1_e8_747_extend_s_part.smt2 bench/tasks/fast_1_e8_747_extend_t_part.smt2 ` -Then, the output is `Valid` and the synthesized skolem should be close enough to the formula in `bench/skolems/fast_1_e8_747_extend_skolem.smt2`. \ No newline at end of file +Then, the output is `Valid` and the synthesized skolem should be close enough to the formula in `bench/skolems/fast_1_e8_747_extend_skolem.smt2`. diff --git a/include/adt/ADTSolver.hpp b/include/adt/ADTSolver.hpp index a0b7505e5..40b67c964 100644 --- a/include/adt/ADTSolver.hpp +++ b/include/adt/ADTSolver.hpp @@ -3,6 +3,7 @@ #include #include +#include "ae/AeValSolver.hpp" #include "ae/SMTUtils.hpp" #include "ufo/Smt/EZ3.hh" @@ -65,6 +66,36 @@ namespace ufo return false; } + Expr eliminateEqualities(Expr goal) + { + ExprMap allrepls; + for (auto it = assumptions.begin(); it != assumptions.end();) + { + Expr &a = *it; + if (isOpX(a) && allrepls[a->left()] == NULL && + isOpX (a->left()) && a->left()->arity () == 1 && + isOpX (a->right()) && a->right()->arity () == 1) + { + if (verbose) outs () << string(sp, ' ') << "replacing " << *a->left() + << " by " << * a->right() << " everywhere\n"; + allrepls[a->left()] = a->right(); + it = assumptions.erase(it); + } + else ++it; + } + if (allrepls.size() == 0) return goal; + + for (auto & a : assumptions) + { + if (!isOpX(a)) // TODO: support FORALLs properly + { + a = replaceAll(a, allrepls); + } + } + + return replaceAll(goal, allrepls); + } + bool mergeAssumptions(int bnd = -1) { // simplify them first @@ -113,8 +144,13 @@ namespace ufo } assumptions.clear(); for (auto & a : newAssms) + { + // some blocking heurisitcs here (TODO: try to block them in early stages, i.e., don't even compute) + if (isOpX(a) && isOpX(a->left()) /*&& isOpX(a->right())*/) continue; + if (find (blockedAssms.begin(), blockedAssms.end(), a) == blockedAssms.end()) unique_push_back(a, assumptions); + } } return false; } @@ -147,6 +183,7 @@ namespace ufo return true; } + tmp = simplifyArithm(tmp); ExprSet tmps; getConj(simplifyBool(tmp), tmps); getConj(simplifyBool(simplifyArr(tmp)), tmps); // duplicate for the case of arrays @@ -340,7 +377,6 @@ namespace ufo if (isOpX(assmQF)) { matching.clear(); - // if the assumption is equality, the we search for a matching of its LHS // (we can try matching the RHS as well, but it will likely give us infinite loops) if (findMatchingSubexpr (assmQF->left(), subgoal, args, matching)) @@ -348,18 +384,37 @@ namespace ufo repl = replaceAll(repl, matching); return replaceAll(subgoal, repl->left(), repl->right()); } + // try vice versa (dangerous since it will introduce repeated rewriting) + matching.clear(); + if (!fwd && findMatchingSubexpr (assmQF->right(), subgoal, args, matching)) + { + repl = replaceAll(repl, matching); + return replaceAll(subgoal, repl->right(), repl->left()); + } } - if ((isOpX(assmQF) && isOpX(subgoal)) || - (isOpX(assmQF) && isOpX(subgoal)) || - (isOpX(assmQF) && isOpX(subgoal)) || - (isOpX(assmQF) && isOpX(subgoal))) + if (isOp(assmQF) && isOp(subgoal)) { - if (findMatchingSubexpr (assmQF->left(), subgoal->left(), args, matching)) + Expr assmQFtmp = assmQF; + Expr subgoalTmp = subgoal; + assmQF = normalizeArithm(assmQF); + subgoal = normalizeArithm(subgoal); + + if (findMatching (assmQF->left(), subgoal->left(), args, matching)) { - for (auto & a : matching) repl = replaceAll(repl, a.first, a.second); - if (u.implies(repl, subgoal)) return mk(efac); + repl = replaceAll(assmQF, matching); + if (fwd && !u.isSat(repl, subgoal)) return mk(efac); + if (fwd) + { + if (((isOpX(repl) && isOpX(subgoal)) || (isOpX(repl) && isOpX(subgoal))) && + (repl->left() == subgoal->left()) && (repl->right() == subgoal->right())) + return mk(repl->left(), subgoal->right()); + } + if (!fwd && u.implies(repl, subgoal)) return mk(efac); } + matching.clear(); + assmQF = assmQFtmp; + subgoal = subgoalTmp; } if (isOpX(subgoal)) @@ -373,7 +428,7 @@ namespace ufo } // try finding inconsistencies - if (fwd) + if (fwd && !containsOp(assmQF)) { ExprMap matching1; ExprVector args1; @@ -406,10 +461,8 @@ namespace ufo // for a quantifier-free assumption (e.g., inductive hypotheses), // we create an SMT query and check with Z3 // TODO: we can do so for ALL constistent quantifier-free assumptions at once - if (!fwd && u.implies(assm, subgoal)) return mk(efac); - if (fwd && !u.isSat(assm, subgoal)) return mk(efac); - if (isOpX(assm)) + if (isOpX(assm)) // simple (SMT-free) checks first { Expr res = replaceAll(subgoal, assm->left(), assm->right()); if (res != subgoal) @@ -417,6 +470,20 @@ namespace ufo return res; } } + + if (!fwd && u.implies(assm, subgoal)) return mk(efac); + if (fwd && !u.isSat(assm, subgoal)) return mk(efac); + + if (!fwd && isOp(subgoal) && isOp(assm) && + isNumeric(subgoal->left()) && isNumeric(assm->left())) + { + Expr tryAbd = abduce(subgoal, assm); + if (tryAbd != NULL) + { + return tryAbd; + } + } + // TODO: proper matching if (isOpX(subgoal) && u.implies(subgoal->left(), assm)) { @@ -455,25 +522,60 @@ namespace ufo } } + if (isOp(assm)) + { + Expr res = replaceAll(subgoal, assm, mk(efac)); + res = replaceAll(res, mkNeg(assm), mk(efac)); + Expr tmp = reBuildCmpSym(assm, assm->left(), assm->right()); + assert(u.isEquiv(assm, tmp)); + res = replaceAll(res, tmp, mk(efac)); + res = replaceAll(res, mkNeg(tmp), mk(efac)); + if (res != subgoal) + { + return simplifyBool(res); + } + } + ExprSet stores; + ExprSet selects; getStores(subgoal, stores); + getSelects(subgoal, selects); if (stores.size() > 0) { if (isOpX(assm) && contains(subgoal, assm->left()) && contains(subgoal, assm->right())) { - ExprMap substs; - substs[assm->right()] = assm->left(); - substs[assm->left()] = assm->right(); for (auto & a : stores) { if (isOpX(a->left()) && ((a->right() == assm->right() && a->left()->right() == assm->left()) || (a->right() == assm->left() && a->left()->right() == assm->right()))) { + ExprMap substs; + substs[assm->right()] = assm->left(); + substs[assm->left()] = assm->right(); + + Expr tmp = replaceAll(a, substs); + if (u.implies(assm, mk(tmp, a))) + return replaceAll(subgoal, a, tmp); // very specific heuristic; works for multisets + + if (a->last() != a->left()->last()) + { + substs[a->last()] = a->left()->last(); + substs[a->left()->last()] = a->last(); + } return replaceAll(subgoal, a, replaceAll(a, substs)); } } + for (auto & a : selects) + { + if (isOpX(a->left()) && !isOpX(a->left()->left()) && + ((a->right() == assm->right() && a->left()->right() == assm->left()) || + (a->right() == assm->left() && a->left()->right() == assm->right()))) + { + return replaceAll(subgoal, a, mk(assm)) @@ -573,10 +675,12 @@ namespace ufo uniquePushConj(subgoal->left(), assumptions); if (assumptions.size() != assumptionsTmp.size()) { + subgoal = eliminateEqualities(subgoal); toRem = true; if (mergeAssumptions()) { assumptions = assumptionsTmp; + if (verbose) outs() << string(sp, ' ') << "proven (merge assms after impl)\n"; return true; } printAssumptions(); @@ -594,6 +698,7 @@ namespace ufo subgoal = u.simplifyITE(subgoal); subgoal = simplifyExists(subgoal); subgoal = simplifyArr(subgoal); + subgoal = simplifyArithm(subgoal); subgoal = simplifyBool(subgoal); ExprSet subSub; @@ -664,8 +769,13 @@ namespace ufo Expr res = useAssumption(subgoal, a); if (res != NULL) { - if (u.isTrue(res)) return true; - allAttempts[i] = res; + if (u.isTrue(res)) + { + if (verbose) outs () << string(sp, ' ') << "rewritten [" << i << "]\n"; + return true; + } + if (find (rewriteHistory.begin(), rewriteHistory.end(), res) == rewriteHistory.end()) + allAttempts[i] = res; } } @@ -770,6 +880,7 @@ namespace ufo auto assumptionsTmp = assumptions; uniquePushConj(mkNeg(subgoal), assumptions); bool res = false; + subgoal = eliminateEqualities(subgoal); if (mergeAssumptions(1)) { res = true; @@ -806,6 +917,7 @@ namespace ufo auto assumptionsTmp = assumptions; uniquePushConj(mkNeg(*spl), assumptions); + subgoal = eliminateEqualities(subgoal); if (mergeAssumptions()) { assumptions = assumptionsTmp; @@ -955,6 +1067,7 @@ namespace ufo int part = 1; bool res = true; + auto subgoalTmp = subgoal; auto assumptionsTmp = assumptions; auto rewriteHistoryTmp = rewriteHistory; auto rewriteSequenceTmp = rewriteSequence; @@ -964,8 +1077,10 @@ namespace ufo if (verbose) outs () << string(sp, ' ') << "split for (part " << part << "/" << spl.size()<< "): " << *s << "\n" << string(sp, ' ') << "{\n"; sp += 2; + part++; uniquePushConj(s, assumptions); + subgoal = eliminateEqualities(subgoal); if (mergeAssumptions()) { assumptions = assumptionsTmp; @@ -983,8 +1098,6 @@ namespace ufo } printAssumptions(); - part++; - res = rewriteAssumptions(subgoal); sp -= 2; if (verbose) outs () << string(sp, ' ') << "}\n"; @@ -992,6 +1105,7 @@ namespace ufo rewriteHistory = rewriteHistoryTmp; rewriteSequence = rewriteSequenceTmp; assumptions = assumptionsTmp; + subgoal = subgoalTmp; if (!res) break; } @@ -1143,6 +1257,7 @@ namespace ufo if (verbose) outs() << "\nBase case: " << *baseSubgoal << "\n{\n"; bool baseres = false; + baseSubgoal = eliminateEqualities(baseSubgoal); if (mergeAssumptions()) { if (verbose) outs() << " proven trivially\n"; @@ -1195,8 +1310,38 @@ namespace ufo for (int i = 1; i < indConstructor->arity() - 1; i++) { // TODO: make sure the name is unique - Expr s = bind::mkConst(mkTerm ("_t_" + to_string(glob_ind), efac), indConstructor->arg(i)); - glob_ind++; + + Expr s; + Expr singleCons = NULL; + for (auto & a : constructors) + { + if (a->last() == indConstructor->arg(i)) + { + if (singleCons != NULL) + { + singleCons = NULL; + break; + } + singleCons = a; + } + } + if (singleCons != NULL) + { + // unfold definitions, if possible + ExprVector argsCons; + for (int j = 1; j < singleCons->arity() - 1; j++) + { + argsCons.push_back(bind::mkConst(mkTerm ("_t_" + to_string(glob_ind), efac), singleCons->arg(j))); + glob_ind++; + } + s = bind::fapp (singleCons, argsCons); + } + else + { + s = bind::mkConst(mkTerm ("_t_" + to_string(glob_ind), efac), indConstructor->arg(i)); + glob_ind++; + } + args.push_back(s); if (type == indConstructor->arg(i)) // type check @@ -1224,9 +1369,6 @@ namespace ufo // always add symmetric IH? insertSymmetricAssumption(a); } - // for simplicity, add conjunction of hypotheses as a single hypothesis - // should be removed in the future (when all QF-assumptions are used at the same time) - if (indHypotheses.size() > 1 && allQF) assumptions.push_back(conjoin(indHypotheses, efac)); // prove the inductive step Expr indConsApp = bind::fapp(indConstructor, args); @@ -1238,6 +1380,7 @@ namespace ufo indSubgoal = indSubgoal->right(); } + indSubgoal = eliminateEqualities(indSubgoal); if (mergeAssumptions()) return true; splitAssumptions(); @@ -1321,6 +1464,7 @@ namespace ufo assumptions[j] = replaceAll(assumptions[j], d->left(), d->right()); } + goal = eliminateEqualities(goal); mergeAssumptions(1); printAssumptions(); bool partiallyDone = rewriteAssumptions(replaceAll(goal, d->left(), d->right())); @@ -1341,6 +1485,7 @@ namespace ufo assumptions[j] = simplifyBool(replaceAll(assumptions[j], pre, mk(efac))); assumptions[j] = replaceAll(assumptions[j], pre->left(), pre->right()); } + goal = eliminateEqualities(goal); mergeAssumptions(1); printAssumptions(); bool done = rewriteAssumptions(replaceAll(goal, pre->left(), pre->right())); @@ -1409,6 +1554,7 @@ namespace ufo bool solveNoind(int rounds = 2) { auto assumptionsTmp = assumptions; + goal = eliminateEqualities(goal); mergeAssumptions(rounds); printAssumptions(); if (verbose) outs () << "=====\n" << *goal << "\n\n\n"; diff --git a/include/ae/AeValSolver.hpp b/include/ae/AeValSolver.hpp index 9e0f77f88..bc2e62b26 100644 --- a/include/ae/AeValSolver.hpp +++ b/include/ae/AeValSolver.hpp @@ -9,7 +9,7 @@ using namespace std; using namespace boost; namespace ufo { - + /** engine to solve validity of \forall-\exists formulas and synthesize Skolem relation */ class AeValSolver { @@ -18,14 +18,12 @@ namespace ufo Expr s; Expr t; ExprSet v; // existentially quantified vars - ExprVector sVars; ExprVector stVars; ExprSet tConjs; ExprSet usedConjs; ExprMap defMap; - ExprMap cyclicDefs; - ExprMap modelInvalid; + ExprSet conflictVars; ExprFactory &efac; EZ3 z3; @@ -35,103 +33,31 @@ namespace ufo unsigned partitioning_size; ExprVector projections; ExprVector instantiations; + ExprVector interpolants; vector skolMaps; vector someEvals; Expr skolSkope; - bool skol; bool debug; unsigned fresh_var_ind; public: - AeValSolver (Expr _s, Expr _t, ExprSet &_v, bool _debug, bool _skol) : - s(_s), t(_t), v(_v), - efac(s->getFactory()), - z3(efac), - smt (z3), - u(efac), - fresh_var_ind(0), - partitioning_size(0), - skol(_skol), - debug(_debug) + AeValSolver (Expr _s, Expr _t, ExprSet &_v) : + s(_s), t(_t), v(_v), + efac(s->getFactory()), + z3(efac), + smt (z3), + u(efac), + fresh_var_ind(0), + partitioning_size(0), + debug(0) { - filter (s, bind::IsConst (), back_inserter (sVars)); filter (boolop::land(s,t), bind::IsConst (), back_inserter (stVars)); getConj(t, tConjs); - - for (auto &exp: v) { - if (!bind::isBoolConst(exp)) continue; - Expr definition = getBoolDefinitionFormulaFromT(exp); - if (definition != NULL) defMap[exp] = u.simplifyITE(definition); - } - for (auto &exp: v) { - if (defMap[exp] != NULL) continue; Expr definition = getDefinitionFormulaFromT(exp); - if (definition != NULL) defMap[exp] = u.simplifyITE(definition); - } - - splitDefs(defMap, cyclicDefs); - skolSkope = mk(efac); - } - - void splitDefs (ExprMap &m1, ExprMap &m2, int curCnt = 0) - { - ExprMap m3; - ExprMap m4; - for (auto & a : m1) - { - if (a.second == NULL) continue; - if (emptyIntersect(a.second, v)) - { - m3.insert(a); - } - else - { - m4.insert(a); - } - } - if (m3.size() == curCnt) - { - m2 = m4; - return; - } - - for (auto & a : m3) - { - for (auto & b : m1) - { - if (b.second == NULL) continue; - if (a.first != b.first) - { - b.second = replaceAll(b.second, a.first, a.second); - } - } - } - splitDefs(m1, m2, m3.size()); - } - - void assignValues (ExprMap& m, ExprMap& reservedAssignment) - { - for (auto & exp : m) - { - if (bind::isBoolConst(exp.first) || - bind::isIntConst(exp.first) || - bind::isRealConst(exp.first)) - { - if (find(v.begin(),v.end(), exp.second) != v.end()) - { - if (exp.first == m[exp.second]) - { - Expr def = reservedAssignment[exp.first]; - if (def != NULL) - exp.second = reservedAssignment[exp.first]->right(); - else - exp.second = getDefaultAssignment(exp.first); - } - } - } + defMap[exp] = definition; } } @@ -142,23 +68,15 @@ namespace ufo { smt.reset(); smt.assertExpr (s); - if (!smt.solve ()) { - outs() << "\nE.v.: -; Iter.: 0; Result: valid\n\n"; + if (debug) outs() << "\nE.v.: -; Iter.: 0; Result: valid\n\n"; return false; - } else { - ZSolver::Model m = smt.getModel(); - - for (auto &e: sVars) - // keep a model in case the formula is invalid - modelInvalid[e] = m.eval(e); } - if (v.size () == 0) { smt.assertExpr (boolop::lneg (t)); boost::tribool res = smt.solve (); - outs() << "\nE.v.: 0; Iter.: 0; Result: " << (res? "invalid" : "valid") << "\n\n"; + if (debug) outs() << "\nE.v.: 0; Iter.: 0; Result: " << (res? "invalid" : "valid") << "\n\n"; return res; } @@ -169,11 +87,13 @@ namespace ufo while (smt.solve ()) { - outs().flush (); - + if (debug) { + outs() << "."; + outs().flush (); + } ZSolver::Model m = smt.getModel(); - if (debug && false) + if (debug) { outs() << "\nmodel " << partitioning_size << ":\n"; for (auto &exp: stVars) @@ -184,24 +104,17 @@ namespace ufo outs() <<"\n"; } - getMBPandSkolem(m, t, v, ExprMap()); + getMBPandSkolem(m); smt.pop(); - smt.assertExpr(boolop::lneg(projections.back())); - if (!smt.solve()) { - res = false; break; - } else { - // keep a model in case the formula is invalid - m = smt.getModel(); - for (auto &e: sVars) - modelInvalid[e] = m.eval(e); - } + smt.assertExpr(boolop::lneg(projections[partitioning_size++])); + if (!smt.solve()) { res = false; break; } smt.push(); smt.assertExpr (t); } - outs() << "\nE.v.: " << v.size() << "; Iter.: " << partitioning_size + if (debug) outs() << "\nE.v.: " << v.size() << "; Iter.: " << partitioning_size << "; Result: " << (res? "invalid" : "valid") << "\n\n"; return res; @@ -210,188 +123,130 @@ namespace ufo /** * Extract MBP and local Skolem */ - void getMBPandSkolem(ZSolver::Model &m, Expr pr, ExprSet tmpVars, ExprMap substsMap) + void getMBPandSkolem(ZSolver::Model &m) { + Expr pr = t; + ExprMap substsMap; ExprMap modelMap; - for (auto exp = tmpVars.begin(); exp != tmpVars.end();) + for (auto &exp: v) { ExprMap map; - pr = z3_qe_model_project_skolem (z3, m, *exp, pr, map); - if (skol) getLocalSkolems(m, *exp, map, substsMap, modelMap, pr); - Expr var = *exp; - tmpVars.erase(exp++); + pr = z3_qe_model_project_skolem (z3, m, exp, pr, map); + getLocalSkolems(m, exp, map, substsMap, modelMap, pr); } - if (debug) assert(emptyIntersect(pr, v)); - someEvals.push_back(modelMap); skolMaps.push_back(substsMap); projections.push_back(pr); - partitioning_size++; - } - - void fillSubsts (Expr ef, Expr es, Expr mbp, ExprSet& substs) - { - if (debug) outs() << " subst: " << *ef << " <--> " << *es << "\n"; - - if (!sameBoolOrCmp(ef, es)) - { - substs.insert(mk(ineqNegReverter(ef), ineqNegReverter(es))); - } - else if (isOpX(es)) - { - // useless (just for optim) - } - else if (isOpX(es) || u.implies(mbp, es)) - { - substs.insert(ineqNegReverter(ef)); - } } /** * Compute local skolems based on the model */ void getLocalSkolems(ZSolver::Model &m, Expr exp, - ExprMap &map, ExprMap &substsMap, ExprMap &modelMap, Expr& mbp) + ExprMap &map, ExprMap &substsMap, ExprMap &modelMap, Expr& mbp) { if (map.size() > 0){ ExprSet substs; - for (auto &e: map) fillSubsts(e.first, e.second, mbp, substs); - if (substs.size() == 0) - { - if (debug) outs() << "WARNING: subst is empty for " << *exp << "\n"; - } - else - { - substsMap[exp] = conjoin(substs, efac); + for (auto &e: map){ + Expr ef = e.first; + Expr es = e.second; + + if (debug) outs() << "subst: " << *ef << " <--> " << *es << "\n"; + + if (isOpX(es)){ + substs.insert(ineqNegReverter(ef)); + } else if (isOpX(es)){ + if (isOpX(ef)){ + ef = ef->arg(0); + } else { + ef = ineqNegReverter(mk(ef)); + } + substs.insert(ef); + } else { + if (es == mbp) substs.insert(ineqNegReverter(ef)); + else if (!(isOp(ef) && isOp(es)) && + !(isOp(ef) && isOp(es))){ + substs.insert(mk(ineqNegReverter(ef), ineqNegReverter(es))); + } + } } + if (substs.size() == 0) outs() << "WARNING: subst is empty for " << *exp << "\n"; + substsMap[exp] = conjoin(substs, efac); } - if (m.eval(exp) != exp){ + else if (m.eval(exp) != exp){ if (debug) outs () << "model: " << *exp << " <--> " << *m.eval(exp) << "\n"; modelMap[exp] = mk(exp, m.eval(exp)); } } - bool sameBoolOrCmp (Expr ef, Expr es) - { - return (isOp(ef) && isOp(es)) || - (isOp(ef) && isOp(es)) || - (isOp(ef) && isOp(es)) || - (isOp(ef) && isOp(es)); - } - - Expr getFinalAssignment (int i, Expr var, Expr& tmpSkol) - { - Expr assgn = defMap[var]; - if (assgn != NULL) return assgn; - - assgn = skolMaps[i][var]; - if (assgn != NULL) - return getAssignmentForVar(var, assgn); - - ExprSet pre; - pre.insert(tmpSkol); - pre.insert(skolSkope); - pre.insert(t); - assgn = getCondDefinitionFormula(var, conjoin(pre, efac), false); - if (assgn != NULL) - return assgn; - - Expr eval = someEvals[i][var]; - if (eval != NULL) - return eval->right(); - - return getDefaultAssignment(var); - } - - void getCurrentLocalSkolem (int i) + /** + * Global Skolem function from MBPs and local ones + */ + Expr getSimpleSkolemFunction() { - ExprMap substsMap; - Expr tmpSkol = mk(efac); // needed only to get conditionals - - // first, synthesize skolems from pieces determined by syntax or the MBP process - for (auto &var: v) - { - if (skolMaps[i][var] == NULL && defMap[var] == NULL) continue; - - Expr val = getFinalAssignment (i, var, tmpSkol); - tmpSkol = mk(tmpSkol, mk(var, val)); - substsMap[var] = val; + if (partitioning_size == 0){ + outs() << "WARNING: Skolem can be arbitrary\n"; + return mk(efac); } - // then, synthesize the rest - for (auto &var: v) + skolSkope = mk(efac); + + for (int i = 0; i < partitioning_size; i++) { - if (substsMap[var] != NULL) continue; + ExprSet skoledvars; + ExprMap substsMap; + for (auto &exp: v) { - Expr val = getFinalAssignment (i, var, tmpSkol); - tmpSkol = mk(tmpSkol, mk(var, val)); - substsMap[var] = val; - } + Expr exp2 = skolMaps[i][exp]; - // get rid of inter-dependencies cascadically: + if (exp2 != NULL) + { + // GF: todo simplif (?) + exp2 = getAssignmentForVar(exp, exp2); + } + else if (defMap[exp] != NULL) + { + // GF: todo simplif (?) + exp2 = defMap[exp]; + } + else if (someEvals[i][exp] != NULL) + { + exp2 = someEvals[i][exp]->right(); + } + else + { + exp2 = getDefaultAssignment(exp); + } - ExprVector cnjs; - ExprMap cyclicSubsts; - assignValues(substsMap, someEvals[i]); - splitDefs(substsMap, cyclicSubsts); - for (auto & a : cyclicSubsts) - substsMap[a.first] = someEvals[i][a.first]->right(); + if (debug) outs() << "compiling skolem [pt1]: " << *exp << " -- > " << *exp2 << "\n"; - for (auto &var: v) - { - if (substsMap[var] != NULL) - { - assert(emptyIntersect(substsMap[var], v)); - cnjs.push_back(mk(var, substsMap[var])); - if (debug) outs() << "\ncompiling skolem [pt1]: " << *var << " --> " << *substsMap[var] << "\n"; - } - else - { - assert(0); + substsMap[exp] = exp2; } - } - - instantiations.push_back(conjoin(cnjs, efac)); - if (debug) - { - outs() << "Sanity check [" << i << "]: " << u.implies(mk - (mk(s, skolSkope), mk (projections[i], instantiations[i])), t) << "\n"; - } - } + // get rid of inter-dependencies cascadically: - /** - * Global Skolem function from MBPs and local ones - */ - Expr getSimpleSkolemFunction() - { - assert(skol); + ExprVector cnjs; - if (partitioning_size == 0) - { - if (debug) outs() << "WARNING: Skolem can be arbitrary\n"; - return mk(efac); - } + for (auto &exp: v) { + refreshMapEntry(substsMap, exp); + cnjs.push_back(mk(exp, substsMap[exp])); + if (debug) outs() << "compiling skolem [pt2]: " << *exp << " <-----> " << *substsMap[exp]<<"\n"; + } - for (int i = 0; i < partitioning_size; i++) - { - getCurrentLocalSkolem(i); + instantiations.push_back(conjoin(cnjs, efac)); + if (debug) outs() << "Sanity check [" < (s,mk (projections[i], instantiations[i])), t) << "\n"; } - Expr sk = mk(efac); - for (int i = partitioning_size - 1; i >= 0; i--) - { - if (isOpX(projections[i]) && isOpX(sk)) - sk = instantiations[i]; - else - sk = mk(projections[i], instantiations[i], sk); + for (int i = partitioning_size - 1; i >= 0; i--){ + if (isOpX(projections[i]) && isOpX(sk)) sk = instantiations[i]; + else sk = mk(projections[i], instantiations[i], sk); } Expr skol = simplifiedAnd(skolSkope, sk); - if (debug) outs() << "Sanity check: " << u.implies(mk(s, skol), t) << "\n"; + if (true) outs() << "Sanity check: " << u.implies(mk(s, skol), t) << "\n"; return skol; } @@ -399,187 +254,128 @@ namespace ufo /** * Valid Subset of S (if overall AE-formula is invalid) */ - Expr getValidSubset() + Expr getValidSubset(bool compact = true) { if (partitioning_size == 0){ - outs() << "WARNING: Trivial valid subset (equal to False) due to 0 iterations\n"; + if (debug) outs() << "WARNING: Trivial valid subset (equal to False) due to 0 iterations\n"; + return mk(efac); } - return mk(s, disjoin(projections, efac)); - } - /** - * Model of S /\ \neg T (if AE-formula is invalid) - */ - void printModelNeg() - { - outs () << "(model\n"; - Expr s_witn = s; - Expr t_witn = t; - for (auto &var : sVars){ - Expr assnmt = var == modelInvalid[var] ? getDefaultAssignment(var) : modelInvalid[var]; - if (debug) { - s_witn = replaceAll(s_witn, var, assnmt); - t_witn = replaceAll(t_witn, var, assnmt); + Expr prs; + if (compact) + { + ExprSet all; + vector pprs; + + for (auto & a : projections) + { + ExprSet tmp; + getConj(a, tmp); + pprs.push_back(tmp); + all.insert(tmp.begin(), tmp.end()); } - outs () << " (define-fun " << *var << " () " << - (bind::isBoolConst(var) ? "Bool" : (bind::isIntConst(var) ? "Int" : "Real")) - << "\n " << *assnmt << ")\n"; - } - outs () << ")\n"; + ExprSet common; - if (debug){ - outs () << "Sanity check [model, S-part]: " << !(u.isSat(mk(s_witn))) << "\n"; - outs () << "Sanity check [model, T-part]: " << !(u.isSat(t_witn)) << "\n"; - } - } - - /** - * Mine the structure of T to get what was assigned to a variable - */ - Expr getDefinitionFormulaFromT(Expr var) - { - ExprSet defs; - for (auto & cnj : tConjs) - { - // get equality (unique per variable) - if (std::find(std::begin(usedConjs), - std::end (usedConjs), cnj) != std::end(usedConjs)) continue; - - if (isOpX(cnj)) + for (auto & a : all) { - if (var == cnj->left() || var == cnj->right()) + bool everywhere = true; + vector pprsTmp = pprs; + for (auto & p : pprsTmp) + { + bool found = false; + for (auto it = p.begin(); it != p.end(); ++it) + { + if (*it == a) { + found = true; + p.erase(it); + break; + } + } + if (!found) + { + everywhere = false; + break; + } + } + if (everywhere) { - defs.insert(cnj); + pprs = pprsTmp; + if (!isOpX(a)) common.insert(a); } } - } - // now find `the best` one - - if (defs.empty()) return NULL; + ExprSet cnjs; + for (auto & p : pprs) + { + cnjs.insert(conjoin(p, efac)); + } - Expr def = *defs.begin(); - for (auto & a : defs) + if (!cnjs.empty()) + { + Expr tmp = simplifyBool(disjoin(cnjs, efac)); + if (!isOpX(tmp)) common.insert(tmp); + } + prs = conjoin(common, efac); + } + else { - if (!emptyIntersect(a, sVars)) def = a; + prs = disjoin(projections, efac); } - - usedConjs.insert(def); - return (var == def->left() ? def->right() : def->left()); + return simplifyBool(mk(s, prs)); } /** * Mine the structure of T to get what was assigned to a variable */ - Expr getBoolDefinitionFormulaFromT(Expr var) + Expr getDefinitionFormulaFromT(Expr var) { Expr def; for (auto & cnj : tConjs) { + // get equality (unique per variable) if (std::find(std::begin(usedConjs), std::end (usedConjs), cnj) != std::end(usedConjs)) continue; - if (bind::isBoolConst(cnj) && var == cnj) - { - def = mk(efac); - usedConjs.insert(cnj); - } - else if (isOpX(cnj) && bind::isBoolConst(cnj->left()) && var == cnj->left()) - { - def = mk(efac); - usedConjs.insert(cnj); - } - } - - if (def != NULL) extendTWithDefs(var, def); - return def; - } - - void extendTWithDefs(Expr var, Expr def) - { - for (auto & cnj : tConjs) - { - if (std::find(std::begin(usedConjs), - std::end (usedConjs), cnj) != std::end(usedConjs)) continue; - - if (isOpX(cnj)) + if (isOpX(cnj) ) { if (var == cnj->left()) { + def = cnj->right(); usedConjs.insert(cnj); - if (def == NULL) - { - def = cnj->right(); - break; - } - else - { - getConj(isOpX(def) ? cnj->right() : mk (cnj->right()), tConjs); - } + break; } else if (var == cnj->right()) { + def = cnj->left(); usedConjs.insert(cnj); - if (def == NULL) - { - def = cnj->left(); - break; - } - else - { - getConj(isOpX(def) ? cnj->left() : mk (cnj->left()), tConjs); - } + break; } - - if (debug && tConjs.empty()) - outs () << "WARNING: getBoolDefinitionFormulaFromT has cleared tConjs\n"; } } - } - - /** - * Mine the structure of T `conditionally` - */ - Expr getCondDefinitionFormula(Expr var, Expr pre, bool impl) - { - Expr res = NULL; - ExprSet eqs; - ExprSet eqsFilt; - getEqualities(t, var, eqs); - for (auto a : eqs) - { - if (a->right() != a->left() && u.implies(pre, a)) - eqsFilt.insert((a->left() == var) ? a->right() : a->left()); - } - - int maxSz = 0; - for (auto & a : eqsFilt) if (boolop::circSize(a) > maxSz) res = a; - return res; + return def; } /** * Self explanatory */ - void GetSymbolicMax(ExprSet& vec, Expr& curMax, bool isInt) + void GetSymbolicMax(ExprVector vec, Expr& curMax) { - curMax = *vec.begin(); - for (auto it = vec.begin(); ++it != vec.end(); ){ - auto &a = *it; - if (u.isEquiv(mk(curMax, a), mk(efac))){ - curMax = a; - } else if (u.isEquiv(mk(curMax, a), mk(efac))){ + curMax = vec[0]; + for (int i = 1; i < vec.size(); i++){ + if (u.isEquiv(mk(curMax, vec[i]), mk(efac))){ + curMax = vec[i]; + } else if (u.isEquiv(mk(curMax, vec[i]), mk(efac))){ // curMax is OK } else { string ind = lexical_cast (fresh_var_ind++); + string varName = "_aeval_tmp_max_" + ind; + Expr realVarName = mkTerm (varName, efac); + Expr realVar = bind::realConst(realVarName); - Expr varName = mkTerm ("_aeval_tmp_max_" + ind, efac); - Expr var = isInt ? bind::intConst(varName) : bind::realConst(varName); - - Expr newConstr = mk(var, mk(mk(curMax, a), a, curMax)); - skolSkope = simplifiedAnd(skolSkope, newConstr); - - curMax = var; + skolSkope = simplifiedAnd(skolSkope, + mk(realVar, mk(mk(curMax, vec[i]), vec[i], curMax))); + curMax = realVar; } } } @@ -587,61 +383,79 @@ namespace ufo /** * Self explanatory */ - void GetSymbolicMin(ExprSet& vec, Expr& curMin, bool isInt) + void GetSymbolicMin(ExprVector vec, Expr& curMin) { - curMin = *vec.begin(); - for (auto it = vec.begin(); ++it != vec.end(); ){ - auto &a = *it; - if (u.isEquiv(mk(curMin, a), mk(efac))){ - curMin = a; - } else if (u.isEquiv(mk(curMin, a), mk(efac))){ + curMin = vec[0]; + for (int i = 1; i < vec.size(); i++){ + if (u.isEquiv(mk(curMin, vec[i]), mk(efac))){ + curMin = vec[i]; + } else if (u.isEquiv(mk(curMin, vec[i]), mk(efac))){ // curMin is OK } else { + Expr eqRhs; string ind = lexical_cast (fresh_var_ind++); - - Expr varName = mkTerm ("_aeval_tmp_min_" + ind, efac); - Expr var = isInt ? bind::intConst(varName) : bind::realConst(varName); - - Expr newConstr = mk(var, mk(mk(curMin, a), a, curMin)); - skolSkope = simplifiedAnd(skolSkope, newConstr); - curMin = var; + string varName = "_aeval_tmp_min_" + ind; + Expr realVarName = mkTerm (varName, efac); + Expr realVar = bind::realConst(realVarName); + eqRhs = mk(mk(curMin, vec[i]), vec[i], curMin); + skolSkope = simplifiedAnd(skolSkope, mk(realVar, eqRhs)); + curMin = realVar; } } } - void GetSymbolicNeq(ExprSet& vec, Expr& lower, Expr& upper, Expr& candidate, bool strict, bool isInt) + /** + * Weird thing, never happens in the experiments + */ + void GetSymbolicNeg(ExprVector vec, Expr& lower, Expr& upper, Expr& candidate) { - Expr var1 = lower; - Expr eps; - if (isInt) - eps = mkTerm (mpz_class (1), efac); - else - eps = mk
(mk(upper, lower), mkTerm (mpq_class (vec.size() + 2), efac)); + // TODO: maybe buggy in LIA, due to a naive shrinking of the segment; - if (strict) var1 = mk(var1, eps); + for (int i = 0; i < vec.size(); i++){ - string ind = lexical_cast (fresh_var_ind++); - Expr varName = mkTerm ("_aeval_tmp_neg_" + ind, efac); - Expr var2 = isInt ? bind::intConst(varName) : bind::realConst(varName); + ExprVector forLower; + forLower.push_back(lower); + forLower.push_back(vec[i]); + Expr updLower; + GetSymbolicMax(forLower, updLower); - candidate = var2; - for (int i = 0; i <= vec.size(); i++) - { - ExprSet neqqedConstrs; - for (auto &a : vec) neqqedConstrs.insert(mk(a, var1)); + ExprVector forUpper; + forUpper.push_back(upper); + forUpper.push_back(vec[i]); + Expr updUpper; + GetSymbolicMin(forUpper, updUpper); - string ind = lexical_cast (fresh_var_ind++); - Expr varName = mkTerm ("_aeval_tmp_neg_" + ind, efac); - Expr newVar = isInt ? bind::intConst(varName) : bind::realConst(varName); + // TODO: do optimizations - Expr newConstr = mk(var2, mk(disjoin(neqqedConstrs, efac), newVar, var1)); - skolSkope = simplifiedAnd(skolSkope, newConstr); + // first, try to see if there are any concrete values for updLower and updUpper + if (updLower == updUpper) { + upper = updUpper; + } + else if (upper != updUpper) { + // second, force the symbolic value for upper + upper = mk (mk(updLower, updUpper), updUpper, upper); + } - var1 = mk(var1, eps); - var2 = newVar; + candidate = mk
(mk(lower, upper), mkTerm (mpq_class (2), efac)); } } + /** + * Aux + */ + void pushVecRedund(ExprVector& vec, Expr a) + { + bool tmp = true; + for (auto& b: vec){ + if (a == b) { + tmp = false; + } else if (lexical_cast(a) == lexical_cast(b)){ + tmp = false; + } + } + if (tmp) vec.push_back(a); + } + /** * Based on type */ @@ -654,25 +468,16 @@ namespace ufo } /** - * Return "e + eps" - */ - Expr plusEps(Expr e, bool isInt) - { - if (isOpX(e) && isInt) - return mkTerm (mpz_class (boost::lexical_cast (e) + 1), efac); - - return mk(e, mkTerm ((isInt ? mpz_class (1) : mpq_class (1)), efac)); - } - - /** - * Return "e - eps" + * Return "e + c" */ - Expr minusEps(Expr e, bool isInt) + Expr getPlusConst(Expr e, bool isInt, cpp_int c) { if (isOpX(e) && isInt) - return mkTerm (mpz_class (boost::lexical_cast (e) - 1), efac); + return mkTerm (mpz_class (string (c + boost::lexical_cast (e))), efac); - return mk(e, mkTerm ((isInt ? mpz_class (1) : mpq_class (1)), efac)); + Expr ce = isInt ? mkTerm (mpz_class (string(c)), efac) : + mkTerm (mpq_class (string(c)), efac); + return mk(e, ce); } /** @@ -680,17 +485,17 @@ namespace ufo */ Expr getAssignmentForVar(Expr var, Expr exp) { - if (debug) outs () << "getAssignmentForVar " << *var << " in:\n" << *exp << "\n"; + if (debug) outs () << "getAssignmentForVar " << *var << " in " << *exp << "\n"; bool isInt = bind::isIntConst(var); if (isOp(exp)) { - if (isOpX(exp)) exp = mkNeg(exp->left()); - - if (!bind::isBoolConst(var) && var != exp->left()) - exp = ineqReverter(ineqMover(exp, var)); // TODO: write a similar simplifier fo booleans + if (!bind::isBoolConst(var) && var != exp->left()) + exp = ineqMover(exp, var); + + if (var != exp->left()) exp = ineqReverter(exp); assert (var == exp->left()); @@ -699,350 +504,187 @@ namespace ufo return exp->right(); } else if (isOpX(exp)){ - return minusEps (exp->right(), isInt); + return getPlusConst (exp->right(), isInt, -1); } else if (isOpX(exp)){ - return plusEps (exp->right(), isInt); + return getPlusConst (exp->right(), isInt, 1); } else if (isOpX(exp)){ - return plusEps (exp->right(), isInt); + return getPlusConst (exp->right(), isInt, 1); } else assert(0); } else if (isOpX(exp)){ if (isOpX(exp->left())) { - return plusEps (getAssignmentForVar(var, exp->left()), isInt); + return getPlusConst (getAssignmentForVar(var, exp->left()), isInt, 1); } } - else if (isOpX(exp)) - { + else if (isOpX(exp)){ exp = u.numericUnderapprox(exp); // try to see if there are only numerals + if (isOpX(exp)) return exp->right(); bool incomplete = false; // split constraints - ExprSet conjLT; - ExprSet conjLE; - ExprSet conjGT; - ExprSet conjGE; - ExprSet conjNEQ; - ExprSet conjEQ; - ExprSet cnjs; - getConj (exp, cnjs); - u.removeRedundantConjuncts(cnjs); - - for (auto cnj : cnjs) - { - if (isOpX(cnj)) cnj = mkNeg(cnj->left()); - cnj = ineqReverter(ineqMover(cnj, var)); - - if (isOpX(cnj)){ - if (var == cnj->left()) { - conjEQ.insert(cnj->right()); + ExprVector conjLT; + ExprVector conjGT; + ExprVector conjNEG; + ExprVector conjEG; + for (auto it = exp->args_begin(), end = exp->args_end(); it != end; ++it){ + if (isOpX(*it)){ + if (var == (*it)->left()) { + pushVecRedund(conjEG, (*it)->right()); } else { incomplete = true; } } - else if (isOpX(cnj)){ - if (var == cnj->left()) { - conjLT.insert(cnj->right()); - } else if (var == cnj->right()) { - conjGT.insert(cnj->left()); + else if (isOpX(*it) || isOpX(*it)){ + if (var == (*it)->left()) { + pushVecRedund(conjLT, (*it)->right()); } else { incomplete = true; } } - else if (isOpX(cnj)){ - if (var == cnj->left()) { - conjLE.insert(cnj->right()); - } else if (var == cnj->right()) { - conjGE.insert(cnj->left()); + else if (isOpX(*it) || isOpX(*it)){ + if (var == (*it)->left()) { + pushVecRedund(conjGT, (*it)->right()); } else { incomplete = true; } - } - else if (isOpX(cnj)){ - if (var == cnj->left()) { - conjGT.insert(cnj->right()); - } else if (var == cnj->right()) { - conjLT.insert(cnj->left()); - } else { - incomplete = true; - } - } - else if (isOpX(cnj)){ - if (var == cnj->left()) { - conjGE.insert(cnj->right()); - } else if (var == cnj->right()) { - conjLE.insert(cnj->left()); - } else { - incomplete = true; - } - } - else if (isOpX(cnj)){ - if (var == cnj->left()) { - conjNEQ.insert(cnj->right()); - } else { - incomplete = true; - } - } + } else if (isOpX(*it)){ + Expr negated = (*it)->left(); - if (incomplete && debug) - outs() << "WARNING: This constraint is unsupported: " << *cnj << "\n"; - } + if (isOpX(negated)){ - // simplify some: - for (auto & b : conjLE) - { - bool toBrk = false; - for (auto & a : conjNEQ) - { - if (a == b) - { - conjLT.insert(a); - conjNEQ.erase(a); - conjLE.erase(b); - toBrk = true; - break; - } - } - if (toBrk) break; - } - - // simplify some: - for (auto & b : conjGE) - { - bool toBrk = false; - for (auto & a : conjNEQ) - { - if (a == b) - { - conjGT.insert(a); - conjNEQ.erase(a); - conjGE.erase(b); - toBrk = true; - break; + if (var == negated->left()) { + pushVecRedund(conjNEG, negated->right()); + } else { + incomplete = true; + } } } - if (toBrk) break; } // get the assignment (if exists) - if (conjEQ.size() > 0) return *(conjEQ.begin()); // GF: maybe try to find the best of them + if (conjEG.size() > 0) return *(conjEG.begin()); // GF: maybe try to find the best of them + + if (incomplete) outs() << "WARNING: Some Skolem constraints unsupported\n"; // get symbolic max and min - Expr curMaxGT; + Expr extraDefsMax = mk(efac); + Expr curMax; if (conjGT.size() > 1){ - GetSymbolicMax(conjGT, curMaxGT, isInt); + GetSymbolicMax(conjGT, curMax); } else if (conjGT.size() == 1){ - curMaxGT = *(conjGT.begin()); + curMax = conjGT[0]; } - Expr curMaxGE; - if (conjGE.size() > 1){ - GetSymbolicMax(conjGE, curMaxGE, isInt); - } else if (conjGE.size() == 1){ - curMaxGE = *(conjGE.begin()); - } + Expr extraDefsMin = mk(efac); + Expr curMin; - Expr curMinLT; if (conjLT.size() > 1){ - GetSymbolicMin(conjLT, curMinLT, isInt); + GetSymbolicMin(conjLT, curMin); } else if (conjLT.size() == 1){ - curMinLT = *(conjLT.begin()); - } - - Expr curMinLE; - if (conjLE.size() > 1){ - GetSymbolicMin(conjLE, curMinLE, isInt); - } else if (conjLE.size() == 1){ - curMinLE = *(conjLE.begin()); + curMin = conjLT[0]; } // get value in the middle of max and min - Expr curMax; - Expr curMin; - - if (curMaxGT != NULL && curMaxGE != NULL){ - curMax = mk(mk(curMaxGT, curMaxGE), curMaxGT, curMaxGE); - } - else if (curMaxGT != NULL) curMax = curMaxGT; - else curMax = curMaxGE; - - if (curMinLT != NULL && curMinLE != NULL){ - curMin = mk(mk(curMinLT, curMinLE), curMinLT, curMinLE); - } - else if (curMinLT != NULL) curMin = curMinLT; - else curMin = curMinLE; - - if (conjNEQ.size() == 0) - { - if (curMinLT == NULL && curMinLE != NULL) - { - return curMinLE; - } - - if (curMaxGT == NULL && curMaxGE != NULL) - { - return curMaxGE; - } - - if (curMinLT != NULL && curMinLE == NULL && curMaxGT == NULL && curMaxGE == NULL) - { - return minusEps(curMinLT, isInt); - } - - if (curMinLT == NULL && curMinLE == NULL && curMaxGT != NULL && curMaxGE == NULL) - { - return plusEps(curMaxGT, isInt); - } - - if (curMinLT != NULL && curMinLE != NULL && curMaxGT == NULL && curMaxGE == NULL) - { - return minusEps(curMin, isInt); - } - - if (curMinLT == NULL && curMinLE == NULL && curMaxGT != NULL && curMaxGE != NULL) - { - return plusEps(curMax, isInt); - } - - if (curMinLT != NULL && curMinLE == NULL && curMaxGT != NULL && curMaxGE == NULL) - { - if (isInt) - return mk(mk(curMinLT, curMaxGT), mkTerm (mpz_class (2), efac)); - else - return mk
(mk(curMinLT, curMaxGT), mkTerm (mpq_class (2), efac)); - } - - if (curMinLT == NULL && curMinLE != NULL && curMaxGT == NULL && curMaxGE != NULL) - { - if (isInt) - return mk(mk(curMinLE, curMaxGE), mkTerm (mpz_class (2), efac)); - else - return mk
(mk(curMinLE, curMaxGE), mkTerm (mpq_class (2), efac)); - } - - if (curMinLT == NULL && curMinLE != NULL && curMaxGT != NULL && curMaxGE == NULL) - { - if (isInt) - return mk(mk(curMinLE, curMaxGT), mkTerm (mpz_class (2), efac)); - else - return mk
(mk(curMinLE, curMaxGT), mkTerm (mpq_class (2), efac)); - } - - if (curMinLT != NULL && curMinLE == NULL && curMaxGT == NULL && curMaxGE != NULL) - { - if (isInt) - return mk(mk(curMinLT, curMaxGE), mkTerm (mpz_class (2), efac)); - else - return mk
(mk(curMinLT, curMaxGE), mkTerm (mpq_class (2), efac)); - } - - if (curMinLT != NULL && curMinLE == NULL && curMaxGT != NULL && curMaxGE != NULL) - { - if (isInt) - return mk(mk(curMinLT, curMax), mkTerm (mpz_class (2), efac)); - else - return mk
(mk(curMinLT, curMax), mkTerm (mpq_class (2), efac)); + if (conjNEG.size() == 0){ + if (conjLT.size() > 0 && conjGT.size() > 0){ + return mk
(mk(curMin, curMax), mkTerm (mpq_class (2), efac)); + } else { + if (conjLT.size() == 0){ + return getPlusConst (curMax, isInt, 1); + } else { + return getPlusConst (curMin, isInt, -1); + } } + } - if (curMinLT == NULL && curMinLE != NULL && curMaxGT != NULL && curMaxGE != NULL) - { - if (isInt) - return mk(mk(curMinLE, curMax), mkTerm (mpz_class (2), efac)); - else - return mk
(mk(curMinLE, curMax), mkTerm (mpq_class (2), efac)); - } + // here and later, we get conjNEG.size() > 0 - if (curMinLT != NULL && curMinLE != NULL && curMaxGT == NULL && curMaxGE != NULL) - { - if (isInt) - return mk(mk(curMin, curMaxGE), mkTerm (mpz_class (2), efac)); - else - return mk
(mk(curMin, curMaxGE), mkTerm (mpq_class (2), efac)); - } + if (conjLT.size() > 0 && conjGT.size() == 0) { + conjNEG.push_back(curMin); + GetSymbolicMin(conjNEG, curMin); + return getPlusConst (curMin, isInt, -1); + } - if (curMinLT != NULL && curMinLE != NULL && curMaxGT != NULL && curMaxGE == NULL) - { - if (isInt) - return mk(mk(curMin, curMaxGT), mkTerm (mpz_class (2), efac)); - else - return mk
(mk(curMin, curMaxGT), mkTerm (mpq_class (2), efac)); - } + if (conjLT.size() == 0 && conjGT.size() > 0) { + conjNEG.push_back(curMax); + GetSymbolicMax(conjNEG, curMax); + return getPlusConst (curMax, isInt, 1); + } - if (curMinLT != NULL && curMinLE != NULL && curMaxGT != NULL && curMaxGE != NULL) - { - if (isInt) - return mk(mk(curMin, curMax), mkTerm (mpz_class (2), efac)); - else - return mk
(mk(curMin, curMax), mkTerm (mpq_class (2), efac)); - } - assert(0); + if (conjLT.size() == 0 && conjGT.size() == 0) { + GetSymbolicMax(conjNEG, curMax); + return getPlusConst (curMax, isInt, 1); } - // here conjNEQ.size() > 0 + // now, both conjLT and conjGT are non-empty + Expr curMid; + GetSymbolicNeg(conjNEG, curMax, curMin, curMid); + return curMid; + } + return exp; + } - Expr tmpMin; - GetSymbolicMin(conjNEQ, tmpMin, isInt); - Expr tmpMax; - GetSymbolicMax(conjNEQ, tmpMax, isInt); + /** + * Check if there are bounded cycles (at most lvl steps) in the map + */ + bool findCycles(ExprMap &m, Expr var, Expr var2, int lvl=3) + { + Expr entr = m[var]; + if (entr == NULL) return false; - if (curMinLE == NULL && curMinLT == NULL && curMaxGE == NULL && curMaxGT == NULL) - { - return plusEps(tmpMax, isInt); - } + ExprSet all; + filter (entr, bind::IsConst (), inserter (all, all.begin())); - if (curMinLE != NULL && curMinLT == NULL && curMaxGE == NULL && curMaxGT == NULL) - { - return minusEps(mk(mk(curMinLE, tmpMin), curMinLE, tmpMin), isInt); - } + if (!emptyIntersect(var2, all)) return true; - if (curMinLE == NULL && curMinLT != NULL && curMaxGE == NULL && curMaxGT == NULL) - { - return minusEps(mk(mk(curMinLT, tmpMin), curMinLT, tmpMin), isInt); - } - - if (curMinLE != NULL && curMinLT != NULL && curMaxGE == NULL && curMaxGT == NULL) - { - return minusEps(mk(mk(curMin, tmpMin), curMin, tmpMin), isInt); - } + bool res = false; + if (lvl > 0) for (auto& exp: all) res |= findCycles(m, exp, var2, lvl-1); - if (curMinLE == NULL && curMinLT == NULL && curMaxGE != NULL && curMaxGT == NULL) - { - return plusEps(mk(mk(curMaxGE, tmpMax), curMaxGE, tmpMax), isInt); - } + return res; + } - if (curMinLE == NULL && curMinLT == NULL && curMaxGE == NULL && curMaxGT != NULL) - { - return plusEps(mk(mk(curMaxGT, tmpMax), curMaxGT, tmpMax), isInt); - } + /** + * Unfolding/simplifying of the map with definitions / substitutions + */ + void refreshMapEntry (ExprMap &m, Expr var) + { + if (debug && false) outs() << "refreshMapEntry for " << *var << "\n"; - if (curMinLE == NULL && curMinLT == NULL && curMaxGE != NULL && curMaxGT != NULL) - { - return plusEps(mk(mk(curMax, tmpMax), curMax, tmpMax), isInt); - } + Expr entr = m[var]; + if (std::find(std::begin(conflictVars), std::end (conflictVars), var) != std::end(conflictVars)) + { + entr = defMap[var]; + conflictVars.erase(var); + } - assert (curMinLE != NULL || curMinLT != NULL); - assert (curMaxGE != NULL || curMaxGT != NULL); + if (entr == NULL) return; - if (curMaxGE == NULL) curMax = curMaxGT; - else curMax = curMaxGE; + if (conflictVars.empty() && findCycles(m, var, var, 1)) + { + // FIXME: it does not find all cycles unfortunately + if (debug) outs () << "cycle found for " << *var << "\n"; + conflictVars.insert(var); + } - if (curMinLE == NULL) curMin = curMinLT; - else curMin = curMinLE; + ExprSet skv; + filter (entr, bind::IsConst (), inserter (skv, skv.begin())); - Expr curMid; - GetSymbolicNeq(conjNEQ, curMax, curMin, curMid, (curMaxGE == NULL), isInt); - return curMid; + for (auto& exp2: skv) { + refreshMapEntry(m, exp2); + entr = simplifyBool (u.simplifyITE (replaceAll(entr, exp2, m[exp2]))); } - return exp; + + m[var] = u.numericUnderapprox(mk(var, entr))->right(); } /** @@ -1052,46 +694,84 @@ namespace ufo { smt.reset(); smt.assertExpr(form); - smt.toSmtLib (outs()); - outs().flush (); + + string errorInfo; + + if (errorInfo.empty ()) + { + smt.toSmtLib (outs()); + outs().flush (); + } } }; /** * Simple wrapper */ - inline void aeSolveAndSkolemize(Expr s, Expr t, bool debug, bool skol) + Expr eliminateQuantifiers(Expr cond, ExprSet& vars) { - ExprSet s_vars; - ExprSet t_vars; + ExprFactory &efac = cond->getFactory(); + SMTUtils u(efac); + if (vars.size() == 0) return simplifyBool(cond); - filter (s, bind::IsConst (), inserter (s_vars, s_vars.begin())); - filter (t, bind::IsConst (), inserter (t_vars, t_vars.begin())); + if (containsOp(cond) || containsOp(cond)) + return mk(efac); - ExprSet t_quantified = minusSets(t_vars, s_vars); + Expr newCond; + if (isNonlinear(cond)) { + newCond = simpleQE(cond, vars); + if (!u.implies(cond, newCond)) { + return mk(efac); + } + } else { + AeValSolver ae(mk(efac), cond, vars); // exists quantified . formula + if (ae.solve()) { + newCond = ae.getValidSubset(); + } else { + return mk(efac); + } + } + if (!emptyIntersect(newCond, vars)) // sanity check + { + return mk(efac); + } + return simplifyBool(newCond); + }; - if (debug) + Expr abduce (Expr goal, Expr assm) + { + ExprFactory &efac = goal->getFactory(); + SMTUtils u(efac); + ExprSet complex; + findComplexNumerics(assm, complex); + findComplexNumerics(goal, complex); + ExprMap repls; + ExprMap replsRev; + for (auto & a : complex) { - outs() << "S: " << *s << "\n"; - outs() << "T: \\exists "; - for (auto &a: t_quantified) outs() << *a << ", "; - outs() << *t << "\n"; + Expr repl = bind::intConst(mkTerm + ("__repl_" + lexical_cast(repls.size()), efac)); + repls[a] = repl; + replsRev[repl] = a; } + Expr goalTmp = replaceAll(goal, repls); + Expr assmTmp = replaceAll(assm, repls); - AeValSolver ae(s, t, t_quantified, debug, skol); + ExprSet vars; + filter (assmTmp, bind::IsConst (), inserter(vars, vars.begin())); + Expr tmp = mkNeg(eliminateQuantifiers(mkNeg(mk(assmTmp, goalTmp)), vars)); + tmp = replaceAll(tmp, replsRev); - if (ae.solve()){ - ae.printModelNeg(); - outs() << "\nvalid subset:\n"; - ae.serialize_formula(ae.getValidSubset()); - } else { - if (skol) - { - outs() << "\nextracted skolem:\n"; - ae.serialize_formula(ae.getSimpleSkolemFunction()); - } + if (isOpX(tmp)) return NULL; // abduction unsuccessful + + // sanity check: + if (!u.implies(mk(tmp, assm), goal)) + { + errs () << "WARNING: abduction fail: "<< * mk(tmp, assm) << " does not imply " << *goal << "\n"; + return NULL; } - }; + return tmp; + } } #endif diff --git a/include/ae/ExprSimpl.hpp b/include/ae/ExprSimpl.hpp index 88d69d901..baa83b133 100644 --- a/include/ae/ExprSimpl.hpp +++ b/include/ae/ExprSimpl.hpp @@ -1,14 +1,16 @@ #ifndef EXPRSIMPL__HPP__ #define EXPRSIMPL__HPP__ #include +#include #include "ufo/Smt/EZ3.hh" using namespace std; using namespace boost; +using namespace boost::multiprecision; + namespace ufo { - template static Expr conjoin(Range& conjs, ExprFactory &efac){ return (conjs.size() == 0) ? mk(efac) : @@ -56,21 +58,6 @@ namespace ufo return emptyIntersect(a, bv); } - inline static bool hasExtraVars(Expr a, ExprVector& b) - { - ExprVector av; - filter (a, bind::IsConst (), inserter(av, av.begin())); - for (auto & v : av) if (find(b.begin(), b.end(), v) == b.end()) return true; - return false; - } - - inline static bool hasExtraVars(Expr a, Expr b) - { - ExprVector bv; - filter (b, bind::IsConst (), inserter(bv, bv.begin())); - return hasExtraVars(a, bv); - } - // if at the end disjs is empty, then a == true inline static void getConj (Expr a, ExprSet &conjs) { @@ -105,6 +92,16 @@ namespace ufo } } + inline static void getCounters (Expr a, ExprVector &cntrs) + { + if (isOpX(a)){ + if (isOpX(a) && isNumeric(a->left())) + { + ineqs.insert(mk(a->left(), a->right())); + ineqs.insert(mk(a->left(), a->right())); + } + else + { + ineqs.insert(a); + } + } else { + for (unsigned i = 0; i < a->arity(); i++) + getArrIneqs(a->arg(i), ineqs); } - else if (isOpX(term)) - { - ExprVector args; - for (int i = 0; i < term->arity()-1; i++) - args.push_back(term->arg(i)); - args.push_back(mkNeg(term->last())); - return mknary(args); + } + + inline static void getMultOps (Expr a, ExprVector &ops) + { + if (isOpX(a)){ + for (unsigned i = 0; i < a->arity(); i++){ + getMultOps(a->arg(i), ops); + } + } else if (isOpX(a) && isNumeric(a->left())){ + ops.push_back(mkTerm (mpz_class (-1), a->getFactory())); + ops.push_back(a->left()); + } else { + ops.push_back(a); } - return mk(term); } /** @@ -196,7 +179,7 @@ namespace ufo return mk(mkTerm (mpz_class (1), e->getFactory()), e); } } - + /** * Represent Zero as multiplication */ @@ -206,108 +189,6 @@ namespace ufo else return e; } - inline static void getMultOps (Expr a, ExprVector &ops) - { - if (isOpX(a)){ - for (unsigned i = 0; i < a->arity(); i++){ - getMultOps(a->arg(i), ops); - } - } else { - ops.push_back(a); - } - } - - static void getAddTerm (Expr a, ExprVector &terms); // declaration only - - inline static Expr arithmInverse(Expr e) - { - bool success = true; - if (isOpX(e)) - { - int coef = 1; - ExprVector ops; - getMultOps (e, ops); - - Expr var = NULL; - for (auto & a : ops) - { - if (isOpX(a)) - { - coef *= lexical_cast(a); - } - else if (bind::isIntConst(a) && var == NULL) - { - var = a; - } - else - { - success = false; - } - } - if (success && coef != 0) return mk(mkTerm (mpz_class (-coef), e->getFactory()), e->right()); - if (coef == 0) return mkTerm (mpz_class (0), e->getFactory()); - } - else if (isOpX(e)) - { - ExprVector terms; - for (auto it = e->args_begin (), end = e->args_end (); it != end; ++it) - { - getAddTerm(arithmInverse(*it), terms); - } - return mknary(terms); - } - else if (isOpX(e)) - { - ExprVector terms; - getAddTerm(arithmInverse(*e->args_begin ()), terms); - auto it = e->args_begin () + 1; - for (auto end = e->args_end (); it != end; ++it) - { - getAddTerm(*it, terms); - } - return mknary(terms); - } - else if (isOpX(e)) - { - return e->left(); - } - else if (isOpX(e)) - { - return mkTerm (mpz_class (-lexical_cast(e)), e->getFactory()); - } - return mk(mkTerm (mpz_class (-1), e->getFactory()), e); - } - - inline static void getAddTerm (Expr a, ExprVector &terms) // implementation (mutually recursive) - { - if (isOpX(a)) - { - for (auto it = a->args_begin (), end = a->args_end (); it != end; ++it) - { - getAddTerm(*it, terms); - } - } - else if (isOpX(a)) - { - auto it = a->args_begin (); - auto end = a->args_end (); - getAddTerm(*it, terms); - ++it; - for (; it != end; ++it) - { - getAddTerm(arithmInverse(*it), terms); - } - } - else if (isOpX(a)) - { - getAddTerm(arithmInverse(a->left()), terms); - } - else - { - terms.push_back(a); - } - } - /** * Rewrites distributivity rule: * a*b + a*c -> a*(b + c) @@ -319,7 +200,7 @@ namespace ufo ExprSet newE; newE.insert(multiplier->right()); multiplier = multiplier->left(); - + for (unsigned i = 1; i < e->arity (); i++){ Expr a = mult(e->arg(i)); if (isOpX(a)){ @@ -350,17 +231,72 @@ namespace ufo return true; } } - + return false; } + static void getAddTerm (Expr a, ExprVector &terms); + /** * Self explanatory */ - inline static Expr additiveInverse(Expr e){ - if (isOpX(e)){ + inline static Expr additiveInverse(Expr e) + { + if (isOpX(e)) + { + cpp_int coef = 1; + ExprVector ops; + getMultOps (e, ops); + + ExprVector rem; + for (auto & a : ops) + { + if (isOpX(a)) + { + coef *= lexical_cast(a); + } + else + { + rem.push_back(a); + } + } + + Expr num = mkTerm (mpz_class (string (-coef)), e->getFactory()); + if (rem.empty() || coef == 0) return num; + + Expr remTerm = mkmult(rem, e->getFactory()); + if (coef == -1) return remTerm; + + return mk(num, remTerm); + } + else if (isOpX(e)) + { + ExprVector terms; + for (auto it = e->args_begin (), end = e->args_end (); it != end; ++it) + { + getAddTerm(additiveInverse(*it), terms); + } + return mkplus(terms, e->getFactory()); + } + else if (isOpX(e)) + { + ExprVector terms; + getAddTerm(additiveInverse(*e->args_begin ()), terms); + auto it = e->args_begin () + 1; + for (auto end = e->args_end (); it != end; ++it) + { + getAddTerm(*it, terms); + } + return mkplus(terms, e->getFactory()); + } + else if (isOpX(e)) + { return e->left(); } + else if (isOpX(e)) + { + return mkTerm (mpz_class (string (-lexical_cast(e))), e->getFactory()); + } else if (isOpX(e)){ string val = lexical_cast(e); int delim = val.find("/"); @@ -373,29 +309,7 @@ namespace ufo return mkTerm (mpq_class (inv_val), e->getFactory()); } } - else if (isOpX(e)){ - int val = lexical_cast(e); - return mkTerm (mpz_class (-val), e->getFactory()); - } - else if (isOpX(e)){ - if (lexical_cast(e->left()) == "-1"){ - return e->right(); - } else if (e->arity() == 2) { - Expr c = additiveInverse(e->left()); - return mk(c, e->right()); - } - } - else if (bind::isIntConst(e)) - return mk(mkTerm (mpz_class (-1), e->getFactory()), e); - - else if (isOpX(e) || isOpX(e)) - { - ExprVector all; - getAddTerm(e, all); - ExprVector negged; - for (auto & a : all) negged.push_back(additiveInverse(a)); - return mkplus(negged, e->getFactory()); - } +// return mk(mkTerm (mpz_class (-1), e->getFactory()), e); return mk(e); } @@ -409,106 +323,110 @@ namespace ufo for (auto it = e->args_begin(), end = e->args_end(); it != end; ++it){ expClauses.insert(*it); } - res = mknary(expClauses); + res = mkplus(expClauses, e->getFactory()); } - + if (isOpX(e)) { if (lexical_cast(e->left()) == "-1"){ Expr l = e->right(); - + if (isOpX(l)) { ExprSet expClauses; for (auto it = l->args_begin(), end = l->args_end(); it != end; ++it){ expClauses.insert(additiveInverse(*it)); } - res = mknary(expClauses); + res = mkplus(expClauses, e->getFactory()); } } } - + return res; } - + /** * Helper used in ineqReverter */ template static Expr rewriteHelperN(Expr e){ assert(e->arity() == 2); - if (!isOpX(e->left()) && - !(isOpX(e->left()) && - lexical_cast(e->left()->left()) == "-1") ) return e; + Expr tmp = additiveInverse(e->left()); + if (isOpX(e->left())) + return mk(additiveInverse(e->left()), additiveInverse(e->right())); + + if (isOpX(tmp)) + if (isOpX(tmp->left())) + if (lexical_cast(tmp->left()) > 0) + return mk(tmp, additiveInverse(e->right())); - return mk(additiveInverse(e->left()), additiveInverse(exprDistributor(e->right()))); + if (bind::isIntConst(tmp) || bind::isRealConst(tmp)) + return mk(tmp, additiveInverse(e->right())); + + return e; } - + /** * Helper used in ineqMover */ template static Expr rewriteHelperM(Expr e, Expr var){ Expr l = e->left(); Expr r = e->right(); - Expr lhs; // expression, containing var; assume, var contains only in one clause - ExprSet rhs; // the rest of e - - // first, parse l; - - if (isOpX(l)){ - for (unsigned i = 0; i < l->arity (); i++){ - Expr a = l->arg(i); - if (isConstOrItsAdditiveInverse(a, var)){ - lhs = a; - continue; - } - rhs.insert(additiveInverse(a)); - } - } else if (isOpX(l)){ - if (isConstOrItsAdditiveInverse(l->left(), var)){ - lhs = l->left(); - rhs.insert(additiveInverse(l->right())); - } else if (isConstOrItsAdditiveInverse(l->right(), var)){ - lhs = l->right(); - rhs.insert(additiveInverse(l->left())); - } - } else { - if (isConstOrItsAdditiveInverse(l, var)){ - lhs = l; - } else if (lexical_cast(l) != "0"){ - rhs.insert(additiveInverse(l)); - } - } - - // second, parse r; - - if (isOpX(r)){ - for (unsigned i = 0; i < r->arity (); i++){ - Expr a = r->arg(i); - if (isConstOrItsAdditiveInverse(a, var)){ - lhs = additiveInverse(a); - continue; - } - rhs.insert(a); - } - } else { - if (isConstOrItsAdditiveInverse(r, var)){ - lhs = additiveInverse(r); - } else if (lexical_cast(r) != "0"){ - rhs.insert(r); + ExprVector orig_lhs, orig_rhs, lhs, rhs; + + // parse + + getAddTerm(l, orig_lhs); + getAddTerm(r, orig_rhs); + for (auto & a : orig_lhs) + { + if (contains (a, var)) lhs.push_back(a); + else rhs.push_back(additiveInverse(a)); + } + for (auto & a : orig_rhs) + { + if (contains (a, var)) lhs.push_back(additiveInverse(a)); + else rhs.push_back(a); + } + + // combine results + + cpp_int coef = 0; + for (auto it = lhs.begin(); it != lhs.end(); ) + { + bool found = false; + if (*it == var) { coef++; found = true; } + if (isOpX(*it) && (*it)->left() == var) { coef--; found = true; } + if (isOpX(*it) && 2 == (*it)->arity() && isOpX((*it)->left()) && (*it)->right() == var) { + coef += lexical_cast((*it)->left()); + found = true; } + + if (found) { it = lhs.erase(it); continue; } + else ++it; } - - // third, combine results; - - if (lhs != 0){ - return mk(lhs, mkplus(rhs, var->getFactory())); + + if (!lhs.empty()) + { +// errs() << "WARNING: COULD NOT NORMALIZE w.r.t. " << *var << ": " +// << *conjoin (lhs, e->getFactory()) << "\n"; + return e; } - return e; + + r = mkplus(rhs, e->getFactory()); + + if (coef == 0){ + l = mkTerm (mpz_class (0), e->getFactory()); + } else if (coef == 1){ + l = var; + } else { + l = mk(mkTerm (mpz_class (string(coef)), e->getFactory()), var); + } + + return mk(l,r); } - + /** * Helper used in exprMover */ template static Expr rewriteHelperE(Expr e, Expr var){ - //todo: debug: clean = false -> shared_ptr.hpp:418: Assertion `px != 0' failed assert(e->arity() == 2); Expr l = e->left(); Expr r = e->right(); @@ -516,7 +434,7 @@ namespace ufo l = exprSorted(l); return mk(r, l); } - + if (isOpX(r)){ if (r->left() == var || r->right() == var){ l = exprSorted(l); @@ -525,7 +443,7 @@ namespace ufo } return e; } - + /** * Merge adjacent inequalities * (a <= b && a >= b) -> (a == b) @@ -551,7 +469,7 @@ namespace ufo } } } - + /** * Merge adjacent inequalities * (a <= b && b <= a) -> (a == b) @@ -573,7 +491,7 @@ namespace ufo } } } - + /** * Merge adjacent inequalities * (a <= 0 && -a <= 0) -> (a == 0) @@ -600,7 +518,7 @@ namespace ufo } } } - + /** * Trivial simplifier: * (-1*a <= -1*b) -> (a >= b) @@ -623,7 +541,7 @@ namespace ufo } return e; } - + inline static Expr ineqNegReverter(Expr a){ if (isOpX(a)){ Expr e = a->arg(0); @@ -643,7 +561,7 @@ namespace ufo } return a; } - + /** * Transform the inequalities by the following rules: * (a + .. + var + .. + b <= c ) -> (var <= -1*a + .. + -1*b + c) @@ -669,7 +587,7 @@ namespace ufo } return e; } - + /** * Move "var" to the left hand side of expression: * (a <= var) -> (var >= b) @@ -681,234 +599,214 @@ namespace ufo return rewriteHelperE(e, var); } else if (isOpX(e)){ return rewriteHelperE(e, var); + } else if (isOpX(e)){ + return rewriteHelperE(e, var); + } else if (isOpX(e)){ + return rewriteHelperE(e, var); } if (isOpX(e)){ return rewriteHelperE(e, var); - } if (isOpX(e)){ - return mk(exprMover(e->arg(0), var)); - } - return e; - } - - /** - * - */ - inline static Expr eqDiffMover(Expr e){ - if(isOpX(e)){ - if (isOpX(e->left()) && e->left()->arity() == 2 && lexical_cast(e->right()) == "0"){ - return mk(e->left()->left(), e->left()->right()); + } if (isOpX(e)){ + return rewriteHelperE(e, var); } - } return e; } - - /** - * Search for an equality - */ - inline static bool equalitySearch(ExprSet& expClauses, Expr var){ - for (auto &e: expClauses){ - if (isOpX(e)){ - Expr l = e->left(); - Expr r = e->right(); - if (l == var || r == var){ - ExprSet singleton; - singleton.insert(e); - expClauses = singleton; - return true; - } - } - } - return false; - } + + static Expr simplifyArithm (Expr exp, bool keepRedundandDisj, bool keepRedundandConj); /** - * Simplifier Wrapper + * Move var v to LHS of each expression and simplify */ - inline static Expr ineqSimplifier(Expr v, Expr exp){ - ExprSet conjs; - getConj(exp, conjs); + inline static Expr ineqSimplifier(Expr v, Expr exp, bool merge = false){ ExprSet substsMap; - for (auto cl : conjs) + if (isOpX(exp)){ + ExprSet cnjs; + getConj(exp, cnjs); + for (Expr cl : cnjs) + substsMap.insert(ineqSimplifier(v, cl)); + + if (merge) ineqMerger(substsMap); + return conjoin(substsMap, v->getFactory()); + } + else if (isOp(exp)) { - cl = ineqNegReverter(cl); - cl = exprMover(cl, v); - cl = ineqMover(cl, v); - cl = ineqReverter (cl); - substsMap.insert(cl); + exp = ineqMover(exp, v); + exp = simplifyArithm(exp, false, false); + exp = ineqReverter(exp); } - - ineqMerger(substsMap); - equalitySearch(substsMap, v); - return conjoin(substsMap, v->getFactory()); + return exp; } - - - template - struct RW + + template struct RW { std::shared_ptr _r; - + RW (std::shared_ptr r) : _r(r) {} RW (T *r) : _r (r) {} - - + VisitAction operator() (Expr exp) { // -- apply the rewriter if (exp->arity() == 0) // -- do not descend into non-boolean operators return VisitAction::skipKids (); - + return VisitAction::changeDoKidsRewrite (exp, _r); - } }; - - inline static Expr simplifiedPlus (Expr exp, Expr to_skip){ - ExprVector args; - Expr ret; - bool f = false; - - for (ENode::args_iterator it = exp->args_begin(), - end = exp->args_end(); it != end; ++it){ - if (*it == to_skip) f = true; - else args.push_back (*it); - } - if (f == false) + // not very pretty method, but.. + inline static Expr reBuildCmp(Expr fla, Expr lhs, Expr rhs) + { + if (isOpX(fla)) { - args.push_back(additiveInverse(to_skip)); + return mk(lhs, rhs); } - - if (args.size() == 1) { - ret = args[0]; + if (isOpX(fla)) + { + return mk(lhs, rhs); } - - else if (args.size() == 2){ - if (isOpX(args[0]) && !isOpX(args[1])) - ret = mk(args[1], args[0]->left()); - else if (!isOpX(args[0]) && isOpX(args[1])) - ret = mk(args[0], args[1]->left()); - - else ret = mknary(args); - - } else { - ret = mknary(args); + if (isOpX(fla)) + { + return mk(lhs, rhs); } - return ret; - } - - // return a - b - inline static Expr simplifiedMinus (Expr a, Expr b){ - Expr ret = mk(a, b); - - if (a == b) { - ret = mkTerm (mpz_class (0), a->getFactory()); - } else - - if (isOpX(a)){ - return simplifiedPlus(a, b); - } else - - if (isOpX(b)){ - Expr res = simplifiedPlus(b, a); - return mk(res); - } else - - if (isOpX(a)){ - if (a->left() == b) ret = mk(a->right()); - } else - - if (isOpX(b)){ - if (a == b->right()) ret = mk(b->left()); - } else - - if (isOpX(b)) { - if (b->left() == mkTerm (mpz_class (0), a->getFactory())) { - ret = a; - } else { - ret = mk(a,b->left()); - } - } else - - if (mkTerm (mpz_class (-1), a->getFactory()) == b) { - ret = mk(a, mkTerm (mpz_class (1), a->getFactory())); - } else - - if (b == mkTerm (mpz_class (0), a->getFactory())) { - ret = a; - } else - - if (a == mkTerm (mpz_class (0), a->getFactory())){ - if (isOpX(b)){ - ret = b->left(); - } - else { - ret = mk(b); - } - } - - return ret; + if (isOpX(fla)) + { + return mk(lhs, rhs); + } + if (isOpX(fla)) + { + return mk(lhs, rhs); + } + assert(isOpX(fla)); + return mk(lhs, rhs); } - - inline static Expr reBuildCmp(Expr term, Expr lhs, Expr rhs) + + inline static Expr reBuildCmpSym(Expr fla, Expr lhs, Expr rhs) { - if (isOpX(term)){ - return mk(lhs, rhs); + if (isOpX(fla)){ + return mk(rhs, lhs); + } + if (isOpX(fla)){ + return mk(rhs, lhs); } - if (isOpX(term)){ + if (isOpX(fla)){ + return mk(rhs, lhs); + } + if (isOpX(fla)){ + return mk(rhs, lhs); + } + if (isOpX(fla)){ + return mk(rhs, lhs); + } + assert(isOpX(fla)); + return mk(rhs, lhs); + } + + inline static Expr reBuildNegCmp(Expr fla, Expr lhs, Expr rhs) + { + if (isOpX(fla)) + { return mk(lhs, rhs); } - if (isOpX(term)){ - return mk(lhs, rhs); + if (isOpX(fla)) + { + return mk(lhs, rhs); } - if (isOpX(term)){ - return mk(lhs, rhs); + if (isOpX(fla)) + { + return mk(lhs, rhs); } - if (isOpX(term)){ + if (isOpX(fla)) + { return mk(lhs, rhs); } - assert(isOpX(term)); - return mk(lhs, rhs); + if (isOpX(fla)) + { + return mk(lhs, rhs); + } + assert(isOpX(fla)); + return mk(lhs, rhs); } - inline static bool evaluateCmpConsts(Expr term) + // not very pretty method, but.. + inline static bool evaluateCmpConsts(Expr fla, cpp_int a, cpp_int b) { - if (!isOpX(term->left()) || !isOpX(term->right())) - return false; - int a = lexical_cast(term->left()); - int b = lexical_cast(term->right()); - if (isOpX(term)) + if (isOpX(fla)) { return (a == b); } - if (isOpX(term)) + if (isOpX(fla)) { return (a != b); } - if (isOpX(term)) + if (isOpX(fla)) { return (a <= b); } - if (isOpX(term)) + if (isOpX(fla)) { return (a >= b); } - if (isOpX(term)) + if (isOpX(fla)) { return (a < b); } - assert(isOpX(term)); + assert(isOpX(fla)); return (a > b); } - inline static int separateConst(ExprVector& plsOps) + inline static Expr mkNeg(Expr fla) { - int c = 0; + if (isOpX(fla)) + { + return fla->arg(0); + } + else if (isOpX(fla)) + { + return mk(fla->getFactory()); + } + else if (isOpX(fla)) + { + return mk(fla->getFactory()); + } + else if (isOpX(fla) || isOpX(fla)) + { + ExprSet args; + for (int i = 0; i < fla->arity(); i++){ + args.insert(mkNeg(fla->arg(i))); + } + return isOpX(fla) ? + disjoin(args, fla->getFactory()) : + conjoin (args, fla->getFactory()); + } + else if (isOp(fla)) + { + return reBuildNegCmp(fla, fla->arg(0), fla->arg(1)); + } + else if (isOpX(fla)) + { + return mk(fla->left(), mkNeg(fla->right())); + } + else if (isOpX(fla) || isOpX(fla)) + { + ExprVector args; + for (int i = 0; i < fla->arity() - 1; i++) + args.push_back(fla->arg(i)); + args.push_back(mkNeg(fla->last())); + return isOpX(fla) ? + mknary(args) : mknary(args); + } + return mk(fla); + } + + inline static cpp_int separateConst(ExprVector& plsOps) + { + cpp_int c = 0; for (auto it = plsOps.begin(); it != plsOps.end(); ) { if (isOpX(*it)) { - c += lexical_cast(*it); + c += lexical_cast(*it); it = plsOps.erase(it); continue; } @@ -917,15 +815,64 @@ namespace ufo return c; } - inline static Expr simplifyPlus (Expr exp){ + inline static Expr simplifyPlus (Expr exp) + { ExprVector plsOps; getAddTerm (exp, plsOps); - // GF: to extend - int c = separateConst(plsOps); - if (c != 0) plsOps.push_back(mkTerm (mpz_class (c), exp->getFactory())); + cpp_int c = separateConst(plsOps); + std::sort(plsOps.begin(), plsOps.end(), [](Expr& x, Expr& y) {return x < y;}); + // GF: to write some kind of a fold-operator that counts the numbers of occurences + if (c != 0) plsOps.push_back(mkTerm (mpz_class (string(c)), exp->getFactory())); return mkplus(plsOps, exp->getFactory()); } + inline static Expr simplifyMult (Expr e) + { + if (isOpX(e)) + { + cpp_int coef = 1; + ExprVector ops; + getMultOps (e, ops); + + ExprVector rem; + for (auto a : ops) + { + if (isOpX(a)) + coef *= lexical_cast(a); + else + rem.push_back(a); + } + + Expr num = mkTerm (mpz_class (string (coef)), e->getFactory()); + if (rem.empty() || coef == 0) return num; + + Expr remTerm = mkmult(rem, e->getFactory()); + if (coef == 1) return remTerm; + + return mk(num, remTerm); + } + return e; + } + + inline static Expr simplifyMod (Expr e) + { + if (isOpX(e) && isOpX(e->right())) + { + cpp_int coef = 1; + cpp_int divider = lexical_cast(e->right()); + ExprVector ops; + getMultOps (e->left(), ops); + + for (auto a : ops) + if (isOpX(a)) + coef *= lexical_cast(a); + + if (coef % divider == 0) + return mkTerm (mpz_class (0), e->getFactory()); + } + return e; + } + inline static Expr simplifyIte (Expr exp) // simple version, on the syntactic level { ExprFactory &efac = exp->getFactory(); @@ -957,8 +904,8 @@ namespace ufo else ++it1; } - Expr b1 = mkplus(plusOpsLeft, efac); - Expr b2 = mkplus(plusOpsRight, efac); + Expr b1 = simplifyPlus(mkplus(plusOpsLeft, efac)); + Expr b2 = simplifyPlus(mkplus(plusOpsRight, efac)); if (b1 == b2) { if (lexical_cast(b1) != "0") @@ -974,15 +921,14 @@ namespace ufo inline static Expr simplifyCmp (Expr exp) { ExprFactory &efac = exp->getFactory(); - if (evaluateCmpConsts(exp)) return mk(efac); ExprVector plusOpsLeft; ExprVector plusOpsRight; getAddTerm(exp->left(), plusOpsLeft); getAddTerm(exp->right(), plusOpsRight); - int c1 = separateConst(plusOpsLeft); - int c2 = separateConst(plusOpsRight); + cpp_int constLeft = separateConst(plusOpsLeft); + cpp_int constRight = separateConst(plusOpsRight); for (auto it1 = plusOpsLeft.begin(); it1 != plusOpsLeft.end(); ) { @@ -1004,145 +950,153 @@ namespace ufo else ++it1; } - if (c1 > c2) - plusOpsLeft.push_back(mkTerm (mpz_class (c1 - c2), efac)); - else if (c1 < c2) - plusOpsRight.push_back(mkTerm (mpz_class (c2 - c1), efac)); + // processing of constLeft/Right to prepare for further simplifyArithmDisjunctions/Conjunctions + if (constLeft != 0 || constRight != 0) + { + if (plusOpsLeft.size() == 0) + { + constLeft = constLeft - constRight; + constRight = 0; + } + else + { + constRight = constRight - constLeft; + constLeft = 0; + } + } + + if (constLeft != 0) plusOpsLeft.push_back(mkTerm (mpz_class (string (constLeft)), efac)); + if (constRight != 0) plusOpsRight.push_back(mkTerm (mpz_class (string (constRight)), efac)); + + if (plusOpsLeft.size() == 0 && plusOpsRight.size() == 0) + { + if (isOpX(exp) || isOpX(exp) || isOpX(exp)) + return mk(efac); + else + return mk(efac); + } + + if (plusOpsLeft.size() == 0 && plusOpsRight.size() == 1 && + isOpX(*plusOpsRight.begin())) + { + if (evaluateCmpConsts(exp, 0, lexical_cast(*plusOpsRight.begin()))) + return mk(efac); + else + return mk(efac); + } + + if (plusOpsLeft.size() == 1 && plusOpsRight.size() == 0 && + isOpX(*plusOpsLeft.begin())) + { + if (evaluateCmpConsts(exp, lexical_cast(*plusOpsLeft.begin()), 0)) + return mk(efac); + else + return mk(efac); + } return reBuildCmp(exp, mkplus(plusOpsLeft, efac), mkplus(plusOpsRight, efac)); } - static Expr simplifyBool (Expr exp); + // GF: to rewrite/remove + inline static Expr simplifiedPlus (Expr exp, Expr to_skip){ + ExprVector args; + Expr ret; + bool f = false; - struct SimplifyBoolExpr - { - ExprFactory &efac; + for (ENode::args_iterator it = exp->args_begin(), + end = exp->args_end(); it != end; ++it){ + if (*it == to_skip) f = true; + else args.push_back (*it); + } - SimplifyBoolExpr (ExprFactory& _efac) : efac(_efac){}; + if (f == false) { + args.push_back(additiveInverse(to_skip)); + } - Expr operator() (Expr exp) - { - // GF: to enhance + if (args.size() == 1) { + ret = args[0]; + } - if (isOpX(exp)) - { - Expr lhs = simplifyBool(exp->left()); - Expr rhs = simplifyBool(exp->right()); - if (isOpX(rhs)) return mk(efac); - if (isOpX(rhs)) return mkNeg(lhs); - if (isOpX(lhs)) return rhs; + else if (args.size() == 2){ + if (isOpX(args[0]) && !isOpX(args[1])) + ret = mk(args[1], args[0]->left()); + else if (!isOpX(args[0]) && isOpX(args[1])) + ret = mk(args[0], args[1]->left()); - return mk(lhs, rhs); - } + else ret = mknary(args); - if (isOpX(exp)){ - if (isOpX(exp->right())) return exp->left(); - if (isOpX(exp->left())) return exp->right(); - if (isOpX(exp->right())) return mkNeg(exp->left()); - if (isOpX(exp->left())) return mkNeg(exp->right()); - } + } else { + ret = mknary(args); + } + return ret; + } - if (isOpX(exp)) - { - ExprSet dsjs; - ExprSet newDsjs; - getDisj(exp, dsjs); - for (auto & a : dsjs){ - if (isOpX(a)) - { - return mk(efac); - } - if (isOpX(a)) - { - continue; - } - newDsjs.insert(simplifyBool(a)); - } - return disjoin (newDsjs, efac); - } + // return a - b + inline static Expr simplifiedMinus (Expr a, Expr b){ + // GF: to rewrite/remove + Expr ret = mk(a, b); - if (isOpX(exp)) - { - ExprSet cnjs; - ExprSet newCnjs; - getConj(exp, cnjs); - for (auto & a : cnjs){ - if (isOpX(a)) - { - return mk(efac); - } - if (isOpX(a)) - { - continue; - } - newCnjs.insert(simplifyBool(a)); - } - return conjoin (newCnjs, efac); - } + if (a == b) { + ret = mkTerm (mpz_class (0), a->getFactory()); + } else - if (isOpX(exp)){ - Expr cond = exp->arg(0); - if (isOpX(cond)) - { - return exp->arg(1); - } - else if (isOpX(cond)) - { - return exp->arg(2); - } - else if (isOpX(exp->arg(1)) && isOpX(exp->arg(2))) - { - return cond; - } - else if (isOpX(exp->arg(1)) && isOpX(exp->arg(2))) - { - return mkNeg(cond); - } - else if (exp->arg(1) == exp->arg(2)) - { - return exp->arg(1); - } - } + if (isOpX(a)){ + return simplifiedPlus(a, b); + } else - if (isOpX(exp)) // && - // (isOp(exp->left()) || - // isOpX(exp->left()) || isOpX(exp->left()))) - return mkNeg(exp->left()); + if (isOpX(b)){ + Expr res = simplifiedPlus(b, a); + return mk(res); + } else - return exp; - } - }; + if (isOpX(a)){ + if (a->left() == b) ret = mk(a->right()); + } else - inline static bool isNumeric(Expr a) - { - // don't consider ITE-s - return (isOp(a) || isOpX(a) || - isOpX(a) || bind::isIntConst(a) || isOpX(exp)) { @@ -1239,16 +1348,21 @@ namespace ufo { return simplifyArr(mk(mk(exp->left()) && isOpX(exp->left()->left()) && + exp->right() == exp->left()->left()->last()) + { + return mk( + mk(exp->left()->right(), exp->left()->left()->right()), + mk(mk(exp->right()) && isOpX(exp->right()->left()) && + exp->left() == exp->right()->left()->last()) + { + return mk( + mk(exp->right()->right(), exp->right()->left()->right()), + mk(mk(exp->left()) && ) -// { -// return mk(mk(rhs)) + { + Expr arrVar = rhs->left(); + if (isOpX(arrVar)) + { + return unfoldITE (reBuildCmp(term, + mk(arrVar->left(), + mk(arrVar->last(), rhs->right())), lhs)); + } + } + } + return term; + } + + struct MoveInsideITEr + { + MoveInsideITEr () {}; + + Expr operator() (Expr exp) + { + if (isOpX(exp)) + { + Expr ite = exp->arg(0); + if (isOpX(ite)) + { + return mk(ite->arg(0), + mk(ite->arg(1), exp->arg(1)), + mk(ite->arg(2), exp->arg(1))); + } + } + if (isOpX(exp)) + { + ExprVector args; + Expr ite; + for (auto it = exp->args_begin(), end = exp->args_end(); it != end; ++it) + { + if (isOpX(*it)) + { + if (ite != NULL) return exp; + ite = *it; + } + else + { + args.push_back(*it); + } + } + + if (ite == NULL) return exp; + + Expr multiplier = mkmult (args, exp->getFactory()); + return mk(ite->arg(0), + mk(multiplier, ite->arg(1)), + mk(multiplier, ite->arg(2))); + } + + return exp; + } + }; + + inline static Expr moveInsideITE (Expr exp) + { + RW a(new MoveInsideITEr()); + return dagVisit (a, exp); + } + + struct RAVSUBEXPR: public std::unary_function + { + Expr s; + Expr t; + Expr p; + + RAVSUBEXPR (Expr _s, Expr _t, Expr _p) : s(_s), t(_t), p(_p) {} + VisitAction operator() (Expr exp) const + { + return exp == s ? + VisitAction::changeTo (replaceAll(exp, t, p)) : + VisitAction::doKids (); + } + }; + + // -- replace all occurrences of t by p in a subexpression s of exp + inline Expr replaceInSubexpr (Expr exp, Expr s, Expr t, Expr p) + { + RAVSUBEXPR rav(s, t, p); + return dagVisit (rav, exp); + } + + struct NegAndRewriter + { + NegAndRewriter () {}; + + Expr operator() (Expr exp) + { + if (isOpX(exp) && isOpX(exp->arg(0))) + { + ExprSet cnjs; + getConj(exp->arg(0), cnjs); + ExprSet neggedCnjs; + for (auto & c : cnjs) neggedCnjs.insert(mkNeg(c)); + return disjoin(neggedCnjs, exp->getFactory()); + } + return exp; + } + }; + + inline static Expr rewriteSelectStore(Expr exp); + + struct SelectStoreRewriter + { + SelectStoreRewriter () {}; + + Expr operator() (Expr exp) + { + if (isOpX(exp->left()->left(), exp->right())); + } + if (isOpX(exp) && isOpX(exp->right())) + { + ExprSet tmp; + tmp.insert(rewriteSelectStore(mk(exp->left(), exp->right()->left()))); + tmp.insert(mk(exp->right()->last(), mk(exp->right(), exp->left()->right()))); + return conjoin (tmp, exp->getFactory()); + } + return exp; + } + }; + + struct SelectReplacer : public std::unary_function + { + ExprMap& sels; + SelectReplacer (ExprMap& _sels) : sels(_sels) {}; + + Expr operator() (Expr exp) + { + if (isOpX(a) || isOpX(a)){ + cntrs.insert(a->right()); + if (isOpX(a)) + getCounters(a->left(), cntrs); + } else { + for (unsigned i = 0; i < a->arity(); i++) + getCounters(a->arg(i), cntrs); + } + } + + inline static void getSelects (Expr a, ExprSet &sels) + { + if (isOpX(exp) || isOpX(exp)) && !findArray(exp->right())) + { + accs.insert(exp->right()); + } + return VisitAction::doKids (); + } + }; + + inline Expr rewriteBoolEq (Expr exp) { - RW rw(new SimplifyArrExpr()); - return dagVisit (rw, exp); + RW tr(new BoolEqRewriter()); + return dagVisit (tr, exp); } - inline static Expr simplifyArithm (Expr exp) + inline void retrieveAccFuns (Expr exp, ExprSet& accs) { - RW rw( - new SimplifyArithmExpr(exp->getFactory(), containsOp(exp))); - return dagVisit (rw, exp); + AccessRetriever dr (accs); + dagVisit (dr, exp); } - - inline static Expr simplifyBool (Expr exp) + + inline static Expr mergeIneqs (Expr e1, Expr e2) { - RW rw(new SimplifyBoolExpr(exp->getFactory())); - return dagVisit (rw, exp); + if (isOpX(e1)) e1 = mkNeg(e1->last()); + if (isOpX(e2)) e2 = mkNeg(e2->last()); + + if (isOpX(e1) && isOpX(e2) && e1->right() == e2->left()) + return mk(e1->left(), e2->right()); + if (isOpX(e1) && isOpX(e2) && e1->right() == e2->left()) + return mk(e1->left(), e2->right()); + if (isOpX(e1) && isOpX(e2) && e1->right() == e2->left()) + return mk(e1->left(), e2->right()); + if (isOpX(e1) && isOpX(e2) && e1->right() == e2->left()) + return mk(e1->left(), e2->right()); + if (isOpX(e1) && isOpX(e2) && (e1->left() == e2->right())) + return mk(e2->left(), e1->right()); + + if (isOpX(e1) && isOpX(e2) && e1->right() == e2->left()) + return mk(e1->left(), e2->right()); + if (isOpX(e1) && isOpX(e2) && e1->right() == e2->left()) + return mk(e1->left(), e2->right()); + if (isOpX(e1) && isOpX(e2) && e1->right() == e2->left()) + return mk(e1->left(), e2->right()); + if (isOpX(e1) && isOpX(e2) && e1->right() == e2->left()) + return mk(e1->left(), e2->right()); + + if (isOpX(e1) && isOpX(e2) && e2->right() == e1->left()) + return mk(e2->left(), e1->right()); + if (isOpX(e2) && isOpX(e1) && e2->right() == e1->left()) + return mk(e2->left(), e1->right()); + if (isOpX(e2) && isOpX(e1) && e2->right() == e1->left()) + return mk(e2->left(), e1->right()); + if (isOpX(e2) && isOpX(e1) && e2->right() == e1->left()) + return mk(e2->left(), e1->right()); + + if (isOpX(e1) && isOpX(e2) && e1->right() == e2->right()) + return mk(e1->left(), e2->left()); + if (isOpX(e1) && isOpX(e2) && e1->right() == e2->right()) + return mk(e1->left(), e2->left()); + if (isOpX(e1) && isOpX(e2) && e1->right() == e2->right()) + return mk(e1->left(), e2->left()); + if (isOpX(e1) && isOpX(e2) && e1->right() == e2->right()) + return mk(e1->left(), e2->left()); + + if (isOpX(e1) && isOpX(e2) && e1->left() == e2->left()) + return mk(e2->right(), e1->right()); + if (isOpX(e1) && isOpX(e2) && e1->left() == e2->left()) + return mk(e2->right(), e1->right()); + if (isOpX(e1) && isOpX(e2) && e1->left() == e2->left()) + return mk(e2->right(), e1->right()); + if (isOpX(e1) && isOpX(e2) && e1->left() == e2->left()) + return mk(e2->right(), e1->right()); + + if (isOpX(e1) && isOpX(e2) && e1->right() == e2->right()) + return mk(e1->left(), e2->left()); + if (isOpX(e1) && isOpX(e2) && e1->right() == e2->right()) + return mk(e1->left(), e2->left()); + if (isOpX(e1) && isOpX(e2) && e1->right() == e2->right()) + return mk(e1->left(), e2->left()); + if (isOpX(e1) && isOpX(e2) && e1->right() == e2->right()) + return mk(e1->left(), e2->left()); + + // TODO: support more cases + return NULL; + } + + inline static Expr mergeIneqsWithVar (Expr e, Expr var) + { + ExprSet cnjs; + ExprVector cnjs2; + ExprSet cnjs3; + getConj(e, cnjs); + for (auto & a : cnjs) + if (contains(a, var)) cnjs2.push_back(a); + else cnjs3.insert(a); + + if (cnjs2.size() != 2) return e; + + if(mergeIneqs(cnjs2[0], cnjs2[1]) == NULL) return NULL; + + cnjs3.insert(mergeIneqs(cnjs2[0], cnjs2[1])); + return conjoin(cnjs3, e->getFactory()); } - inline static ExprSet minusSets(ExprSet& v1, ExprSet& v2){ - ExprSet v3; - bool res; - for (auto &var1: v1){ - res = true; - for (auto &var2: v2){ - if (var1 == var2) { res = false; break;} + template static void computeTransitiveClosure(ExprSet& r, ExprSet& tr) + { + for (auto &a : r) + { + if (isOpX(a)) + { + for (auto &b : tr) + { + if (isOpX(b)) + { + if (a->left() == b->right()) tr.insert(mk(b->left(), a->right())); + if (b->left() == a->right()) tr.insert(mk(a->left(), b->right())); + + if (isSymmetric(a)) + { + if (a->left() == b->left()) tr.insert(mk(a->right(), b->right())); + if (a->right() == b->right()) tr.insert(mk(a->left(), b->left())); + } + } + } } - if (res) v3.insert(var1); + tr.insert(a); } - return v3; } - - /** - * To rem - */ - inline bool containsOnlyOf(Expr a, Expr b) + + struct TransClAdder { - ExprVector av; - filter (a, bind::IsConst (), back_inserter (av)); - if (av.size() == 1) if (av[0] == b) return true; - - return false; - } - - inline static Expr simplifiedAnd (Expr a, Expr b){ - ExprSet conjs; - getConj(a, conjs); - getConj(b, conjs); - return - (conjs.size() == 0) ? mk(a->getFactory()) : - (conjs.size() == 1) ? *(conjs.begin()) : - mknary(conjs); - } + TransClAdder () {}; - inline int intersectSize(ExprVector& a, ExprVector& b){ - ExprSet c; - for (auto &var: a) - if (find(b.begin(), b.end(), var) != b.end()) c.insert(var); - return c.size(); - } + Expr operator() (Expr exp) + { + if (isOpX(exp)) + { + ExprSet cnjs; + ExprSet trCnjs; + getConj(exp, cnjs); + computeTransitiveClosure(cnjs, trCnjs); + computeTransitiveClosure(cnjs, trCnjs); + computeTransitiveClosure(cnjs, trCnjs); + computeTransitiveClosure(cnjs, trCnjs); + computeTransitiveClosure(cnjs, trCnjs); + return conjoin(trCnjs, exp->getFactory()); + } - inline static Expr simplIneqMover(Expr exp) - { - exp = ineqNegReverter(exp); - if (lexical_cast(exp->right()) == "0") return exp; + return exp; + } + }; - // GF: find a better way how to move things - exp = reBuildCmp(exp, simplifiedMinus(exp->left(), exp->right()), - mkTerm (mpz_class (0), exp->getFactory())); - return exp; + inline static Expr enhanceWithMoreClauses (Expr exp) + { + RW tr(new TransClAdder()); + return dagVisit (tr, exp); } - struct EqMiner : public std::unary_function + inline static Expr propagateEqualities (Expr exp) { - ExprSet& eqs; - Expr& var; + ExprSet cnjs; + ExprSet eqs; + ExprSet trEqs; - EqMiner (Expr& _var, ExprSet& _eqs): var(_var), eqs(_eqs) {}; + getConj(exp, cnjs); - VisitAction operator() (Expr exp) + for (auto &a : cnjs) if (isOpX(a)) eqs.insert(a); + if (eqs.size() == 0) return exp; + + computeTransitiveClosure(eqs, trEqs); + + for (auto &a : trEqs) { - if (isOpX(exp) && (exp->left() == var || exp->right() == var)) + if (isOpX(a)) { - eqs.insert(exp); - return VisitAction::skipKids (); + bool toAdd = true; + for (auto & c : cnjs) + { + if (isOpX(c)) + { + if (c->left() == a->left() && c->right() == a->right()) { toAdd = false; break; } + if (c->left() == a->right() && c->right() == a->left()) { toAdd = false; break; } + } + } + if (toAdd) cnjs.insert(a); } - return VisitAction::doKids (); +// TODO: double-check if it is needed: +/* else + { + Expr neg = mkNeg(a); + for (auto &b : trEqs) + { + Expr repl1 = replaceAll(neg, b->left(), b->right()); + Expr repl2 = replaceAll(neg, b->right(), b->left()); + bool eq1 = (repl1 == neg); + bool eq2 = (repl2 == neg); + bool eq3 = (repl2 == repl1); + + if (eq1 && eq2 && eq3) cnjs.insert(a); + else if (eq1) cnjs.insert (mkNeg (mk(neg, repl2))); + else if (eq2) cnjs.insert (mkNeg (mk(neg, repl1))); + else cnjs.insert(mkNeg (mk(neg, mk(repl1, repl2)))); + } + } */ } - }; - inline void getEqualities (Expr exp, Expr var, ExprSet& eqs) - { - EqMiner trm (var, eqs); - dagVisit (trm, exp); + return conjoin(cnjs, exp->getFactory()); + } + + bool isConstExpr(Expr e) { + using namespace expr::op::bind; + if (isIntConst(e) || isBoolConst(e) || isRealConst(e)) return true; + return false; + } + + bool isLitExpr(Expr e) { + int arity = e->arity(); + if (isConstExpr(e)) return false; + if (arity == 0) return true; + bool res = true; + for (int i = 0; i < arity; i++) { + res = res && isLitExpr(e->arg(i)); + } + return res; + } + + bool isConstAddModExpr(Expr e) { + using namespace expr::op::bind; + if (isOp(e) || isOp(e) || isOp(e)) { + if (isLitExpr(e->arg(0))) { + return isConstAddModExpr(e->arg(1)); + } + if (isLitExpr(e->arg(1))) { + return isConstAddModExpr(e->arg(0)); + } + } + return isConstExpr(e); + } + + bool isNonlinear(Expr e) { + int arity = e->arity(); + if (isOp(e)) { + if (isLitExpr(e->arg(0))) { + return !(isLitExpr(e->arg(1)) || !isConstExpr(e->arg(1))); + } + if (isLitExpr(e->arg(1))) { + return !(isConstAddModExpr(e->arg(0))); + } + return true; + } + if (isOp(e) || isOp
(e)) { + if (isLitExpr(e->arg(0))) { + return isNonlinear(e->arg(1)); + } + if (isLitExpr(e->arg(1))) { + return isNonlinear(e->arg(0)); + } + return true; + } + bool res = false; + for (int i = 0; i < arity; i++) { + res = res || isNonlinear(e->arg(i)); + } + return res; } struct QVMiner : public std::unary_function @@ -1563,7 +3612,7 @@ namespace ufo return VisitAction::skipKids (); } else if ((isOpX(exp) || isOp(exp) || - isOp(exp) || isOpX(exp) || isOpX(exp)) && !(containsOp(exp) || containsOp(exp)) && findMatching (pattern, exp, vars, matching)) { @@ -1581,153 +3630,156 @@ namespace ufo return fn.found; } - struct ITElifter + inline static bool evalLeq(Expr a, Expr b) { - ITElifter () {}; + if (isOpX(a) && isOpX(b)) + return (lexical_cast(a) <= lexical_cast(b)); + else return (a == b); // GF: to extend + } - Expr operator() (Expr exp) + inline static void mutateHeuristic (Expr exp, ExprSet& guesses /*, int bnd = 100*/) + { + exp = unfoldITE(exp); + ExprSet cnjs; + getConj(exp, cnjs); + ExprSet ineqs; + ExprSet eqs; + ExprSet disjs; + for (auto c : cnjs) { - // currently, can lift only one ITE - if (isOpX(exp)) + if (isOpX(c)) c = mkNeg(c->left()); + + if (isOpX(c)) { - ExprVector vars1; - ExprVector vars2; - Expr cond = NULL; - vars1.push_back(exp->arg(0)); - vars2.push_back(exp->arg(0)); - for (int i = 1; i < exp->arity(); i++) + if (isNumeric(c->left())) { - if (isOpX(exp->arg(i)) && cond == NULL) - { - cond = exp->arg(i)->arg(0); - vars1.push_back(exp->arg(i)->arg(1)); - vars2.push_back(exp->arg(i)->arg(2)); - } + eqs.insert(c); + ineqs.insert(mk(c->right(), c->left())); + ineqs.insert(mk(c->left(), c->right())); + } + else + { + guesses.insert(simplifyArithm(c)); + } + } + else if (isOp(c)) + { + if (isOpX(c)) ineqs.insert(c); + else if (isOpX(c)) ineqs.insert(mk(c->right(), c->left())); + else if (isOpX(c)) + { + if (isOpX(c->left())) + ineqs.insert(mk(c->right(), mkTerm (mpz_class (string (lexical_cast(c->left())-1)), exp->getFactory()))); + else if(isOpX(c->right())) + ineqs.insert(mk(mkTerm (mpz_class (string (lexical_cast(c->right())+1)), exp->getFactory()), c->left())); else - { - vars1.push_back(exp->arg(i)); - vars2.push_back(exp->arg(i)); - } + ineqs.insert(mk(c->right(), mk(c->left(), mkTerm (mpz_class (1), exp->getFactory())))); + } + else if (isOpX(c)) + { + if (isOpX(c->left())) + ineqs.insert(mk(mkTerm (mpz_class (string (lexical_cast(c->left())+1)), exp->getFactory()), c->right())); + else if(isOpX(c->right())) + ineqs.insert(mk(c->left(), mkTerm (mpz_class (string (lexical_cast(c->right())-1)), exp->getFactory()))); + else + ineqs.insert(mk(c->left(), mk(c->right(), mkTerm (mpz_class (1), exp->getFactory())))); + } + else + { + assert (isOpX(c)); + guesses.insert(c); } - if (cond == NULL) return exp; - return mk(cond, mknary(vars1), mknary(vars2)); } - return exp; +/* else if (isOpX(c)) + { + ExprSet terms; + getDisj(c, terms); + ExprSet newTerms; + for (auto t : terms) + { + if (newTerms.size() > 2) continue; // don't consider large disjunctions + if (isOpX(t)) t = mkNeg(t->left()); + if (!isOp(t)) continue; + if (!isNumeric(t->left())) continue; + newTerms.insert(t); + } + c = disjoin(newTerms, c->getFactory()); + disjs.insert(c); + guesses.insert(c); + }*/ + else guesses.insert(c); } - }; - - inline static Expr liftITEs (Expr exp) - { - RW rw(new ITElifter()); - return dagVisit (rw, exp); - } - - struct SelectStoreRewriter - { - SelectStoreRewriter () {}; - ExprSet unusedSelects; - Expr operator() (Expr exp) + for (auto & z : eqs) { - if (isOpX(exp->left()->left(), exp->right())); + //if (bnd > guesses.size()) return; + if (!emptyIntersect(z, in)) continue; + ineqs.insert(mk(mk(in->left(), z->left()), mk(in->right(), z->right()))); + ineqs.insert(mk(mk(in->left(), z->right()), mk(in->right(), z->left()))); } - else if (isOpX(exp)) - { - Expr exprStore; - Expr exprArr; - if (isOpX(exp->left())) - { - exprStore = exp->left(); - exprArr = exp->right(); - } - else if (isOpX(exp->right())) - { - exprStore = exp->right(); - exprArr = exp->left(); - } - if (exprStore != NULL && exprArr != NULL) + for (auto & d : disjs) + { + //if (bnd > guesses.size()) return; + ExprSet terms; + getDisj(d, terms); + ExprSet newTerms; + for (auto c : terms) { - ExprSet all; - all.insert(mk(exprStore->last(), mk(exprArr, elem))); - } + if (emptyIntersect(z, c)) + newTerms.insert(reBuildCmp(c, + mk(c->left(), z->left()), mk(c->right(), z->right()))); + else newTerms.insert(c); } - return conjoin(all, exp->getFactory()); + else newTerms.insert(c); } + if (newTerms.size() > 0) + guesses.insert(disjoin(newTerms, d->getFactory())); } - else if (isOpX(exp)) - { - unusedSelects.insert(exp); - } - return exp; } - }; - inline static Expr rewriteSelectStore(Expr exp) - { - RW a(new SelectStoreRewriter()); - return dagVisit (a, exp); - } + for (auto & a : ineqs) guesses.insert(simplifyArithm(a)); +// guesses.insert(ineqs.begin(), ineqs.end()); - inline static void getCounters (Expr a, ExprSet &cntrs) - { - if (isOpX(v)) - { - Expr arrty = typeOf(v->left()); - if (isOpX(v)) return arrty; - return arrty->right(); - } - return typeOf(v->left()); - if (isOpX(v)) return typeOf(v->right()); + if (isOpX(v)) return sort::arrayTy(v->left(), typeOf(v->right())); - std::cerr << "WARNING: could not infer type of: " << *v << "\n"; - - assert (0 && "Unreachable"); - return Expr(); +// std::cerr << "WARNING: could not infer type of: " << *v << "\n"; +// assert (0 && "Unreachable"); + return Expr(); } inline Expr sortOf (Expr v) {return typeOf (v);} diff --git a/include/ufo/Smt/ZExprConverter.hpp b/include/ufo/Smt/ZExprConverter.hpp index 489eb6398..3ed515640 100644 --- a/include/ufo/Smt/ZExprConverter.hpp +++ b/include/ufo/Smt/ZExprConverter.hpp @@ -234,28 +234,24 @@ namespace ufo /** quantifier */ else if (isOpX (e) || isOpX (e)) { - unsigned num_bound = bind::numBound (e); - z3::ast_vector pinned (ctx); - pinned.resize (num_bound); - std::vector bound_sorts; - bound_sorts.reserve (num_bound); - std::vector bound_names; - bound_names.reserve (num_bound); - - for (unsigned i = 0; i < num_bound; ++i) - { - z3::ast z (marshal (bind::decl (e, i), ctx, cache, seen)); - pinned.push_back (z); - - Z3_func_decl decl = Z3_to_func_decl (ctx, z); - bound_sorts.push_back (Z3_get_range (ctx, decl)); - bound_names.push_back (Z3_get_decl_name (ctx, decl)); - } - - - z3::ast body (marshal (bind::body (e), ctx, cache, seen)); - res = Z3_mk_quantifier (ctx, isOpX (e), 0, 0, NULL, - num_bound, &bound_sorts[0], &bound_names[0], body); + ExprVector vars; + for (int i = 0; i < e->arity() - 1; i++) + vars.push_back(bind::fapp(e->arg(i))); + + z3::ast ast (marshal (e->last(), ctx, cache, seen)); //z3.toAst (e->last())); + std::vector bound; + bound.reserve (boost::size (vars)); + for (const Expr &v : vars) + bound.push_back (Z3_to_app (ctx, marshal (v, ctx, cache, seen))); + + if (isOpX (e)) + res = Z3_mk_forall_const (ctx, 0, + bound.size (), &bound[0], + 0, NULL, ast); + else + res = Z3_mk_exists_const (ctx, 0, + bound.size (), &bound[0], + 0, NULL, ast); } // -- cache the result for unmarshaling diff --git a/tools/adt/Adt.cpp b/tools/adt/Adt.cpp index 613fea35f..047a0767e 100644 --- a/tools/adt/Adt.cpp +++ b/tools/adt/Adt.cpp @@ -37,7 +37,7 @@ int main (int argc, char ** argv) char *infile = getSmtFileName(1, argc, argv); char *basecheck = getStrValue("--base", NULL, argc, argv); char *indcheck = getStrValue("--ind", NULL, argc, argv); - int maxDepth = atoi(getStrValue("--max-depth", "5", argc, argv)); + int maxDepth = atoi(getStrValue("--max-depth", "7", argc, argv)); int maxGrow = atoi(getStrValue("--max-grow", "2", argc, argv)); int mergingIts = atoi(getStrValue("--merge-assms", "3", argc, argv)); int earlySplit = atoi(getStrValue("--early-split", "1", argc, argv)); From 452fe732ed740d4b69cb8c4b146b01bbe7f8a33a Mon Sep 17 00:00:00 2001 From: LChernigovskaya Date: Wed, 21 Oct 2020 03:53:20 +0300 Subject: [PATCH 20/40] Use all possible matchings (#13) * use matchingSet to keep all possible matching of an expression * try rewriting all possible substitutions * use all results instead of front Co-authored-by: Lidiya Chernigovskaya --- include/adt/ADTSolver.hpp | 457 ++++++++++++++++++++++---------------- include/ae/ExprSimpl.hpp | 25 +-- tools/adt/Adt.cpp | 2 +- 3 files changed, 277 insertions(+), 207 deletions(-) diff --git a/include/adt/ADTSolver.hpp b/include/adt/ADTSolver.hpp index 40b67c964..838003977 100644 --- a/include/adt/ADTSolver.hpp +++ b/include/adt/ADTSolver.hpp @@ -173,25 +173,31 @@ namespace ufo if (a == assm || a == NULL) continue; if (isOpX(assm) && !isOpX(a)) continue; - Expr tmp = useAssumption(assm, a, true); - if (tmp != NULL && !u.isTrue(tmp)) - { - if (u.isFalse(tmp)) - { - if (verbose) outs () << string(sp, ' ') - << "inconsistent assumptions: " << *assm << " and " << *a << "\n"; - return true; - } + ExprVector result; + if (useAssumption(assm, a, result, true)) { - tmp = simplifyArithm(tmp); - ExprSet tmps; - getConj(simplifyBool(tmp), tmps); - getConj(simplifyBool(simplifyArr(tmp)), tmps); // duplicate for the case of arrays - for (auto & t : tmps) - { - if (find(assumptions.begin(), assumptions.end(), t) == assumptions.end()) - { - newAssms.insert(t); + for (auto & it : result) { + Expr tmp = it; + if (!u.isTrue(tmp)) + { + if (u.isFalse(tmp)) + { + if (verbose) outs () << string(sp, ' ') + << "inconsistent assumptions: " << *assm << " and " << *a << "\n"; + return true; + } + + tmp = simplifyArithm(tmp); + ExprSet tmps; + getConj(simplifyBool(tmp), tmps); + getConj(simplifyBool(simplifyArr(tmp)), tmps); // duplicate for the case of arrays + for (auto & t : tmps) + { + if (find(assumptions.begin(), assumptions.end(), t) == assumptions.end()) + { + newAssms.insert(t); + } + } } } } @@ -201,7 +207,7 @@ namespace ufo // main method to do rewriting // TODO: separate the logic for fwd, otherwise the code gets messy - Expr useAssumption(Expr subgoal, Expr assm, bool fwd = false) + bool useAssumption(Expr subgoal, Expr assm, ExprVector& result, bool fwd = false) { if (isOpX(assm)) { @@ -253,7 +259,8 @@ namespace ufo repl = createQuantifiedFormulaRestr(repl, args); } - return repl; + result.push_back(repl); + return true; } } else @@ -294,103 +301,120 @@ namespace ufo } if (!args.empty()) repl = createQuantifiedFormulaRestr(repl, args, false); - return repl; + result.push_back(repl); + return true; } } } + std::set matchingSet; // we first search for a matching of the entire assumption (usually some inequality) - if (findMatchingSubexpr (assmQF, subgoal, args, matching)) + if (findMatchingSubexpr (assmQF, subgoal, args, matchingSet)) { - repl = replaceAll(repl, matching); - Expr replaced; - if (isImpl) - { - if (fwd) // used in simplifyAssm + for (auto matching : matchingSet) { + Expr auxRepl = repl; + auxRepl = replaceAll(auxRepl, matching); + Expr replaced; + if (isImpl) { - if (!isOpX(subgoal) && u.implies(subgoal, repl->left())) + if (fwd) // used in simplifyAssm + { + if (!isOpX(subgoal) && u.implies(subgoal, auxRepl->left())) + { + ExprSet vars; + filter (assmQF, bind::IsConst (), inserter(vars, vars.begin())); + for (auto it = args.begin(); it != args.end();) + { + bool found = false; + if (find(vars.begin(), vars.end(), *it) != vars.end()) + { + found = true; + it = args.erase(it); + } + if (!found) + { + ++it; + } + } + + // sanity removal + for (auto it = args.begin(); it != args.end();) + { + if (contains (auxRepl->right(), *it)) ++it; + else it = args.erase(it); + } + + if (args.empty()) + { + replaced = auxRepl->right(); + } + else + { + replaced = createQuantifiedFormulaRestr(auxRepl->right(), args); + } + } + } + else { ExprSet vars; - filter (assmQF, bind::IsConst (), inserter(vars, vars.begin())); + filter(assmQF, bind::IsConst (), inserter(vars, vars.begin())); + replaced = replaceAll(subgoal, auxRepl->right(), auxRepl->left()); + for (auto it = args.begin(); it != args.end();) { - bool found = false; if (find(vars.begin(), vars.end(), *it) != vars.end()) { - found = true; it = args.erase(it); } - if (!found) + else { ++it; } } - - // sanity removal - for (auto it = args.begin(); it != args.end();) - { - if (contains (repl->right(), *it)) ++it; - else it = args.erase(it); - } - - if (args.empty()) - { - replaced = repl->right(); - } - else - { - replaced = createQuantifiedFormulaRestr(repl->right(), args); - } + if (!args.empty()) + replaced = createQuantifiedFormulaRestr(replaced, args, false); } } else { - ExprSet vars; - filter(assmQF, bind::IsConst (), inserter(vars, vars.begin())); - replaced = replaceAll(subgoal, repl->right(), repl->left()); + replaced = replaceAll(subgoal, auxRepl, mk(efac)); + } - for (auto it = args.begin(); it != args.end();) - { - if (find(vars.begin(), vars.end(), *it) != vars.end()) - { - it = args.erase(it); - } - else - { - ++it; - } - } - if (!args.empty()) - replaced = createQuantifiedFormulaRestr(replaced, args, false); + if (subgoal != replaced) + { + result.push_back(replaced); + return true; } } - else - { - replaced = replaceAll(subgoal, repl, mk(efac)); - } - - if (subgoal != replaced) return replaced; } - if (isImpl) return NULL; + if (isImpl) return false; if (isOpX(assmQF)) { - matching.clear(); + matchingSet.clear(); // if the assumption is equality, the we search for a matching of its LHS // (we can try matching the RHS as well, but it will likely give us infinite loops) - if (findMatchingSubexpr (assmQF->left(), subgoal, args, matching)) + if (findMatchingSubexpr (assmQF->left(), subgoal, args, matchingSet)) { - repl = replaceAll(repl, matching); - return replaceAll(subgoal, repl->left(), repl->right()); + for (auto matching : matchingSet) { + Expr auxRepl = repl; + auxRepl = replaceAll(auxRepl, matching); + result.push_back(replaceAll(subgoal, auxRepl->left(), auxRepl->right())); + } + return true; } // try vice versa (dangerous since it will introduce repeated rewriting) - matching.clear(); - if (!fwd && findMatchingSubexpr (assmQF->right(), subgoal, args, matching)) - { - repl = replaceAll(repl, matching); - return replaceAll(subgoal, repl->right(), repl->left()); - } + // matchingSet.clear(); + // if (!fwd && findMatchingSubexpr (assmQF->right(), subgoal, args, matchingSet)) + // { + // for (auto matching : matchingSet) { + // Expr auxRepl = repl; + // auxRepl = replaceAll(auxRepl, matching); + // result.push_back(replaceAll(subgoal, auxRepl->right(), auxRepl->left())); + // } + // return true; + // } } if (isOp(assmQF) && isOp(subgoal)) @@ -403,14 +427,25 @@ namespace ufo if (findMatching (assmQF->left(), subgoal->left(), args, matching)) { repl = replaceAll(assmQF, matching); - if (fwd && !u.isSat(repl, subgoal)) return mk(efac); + if (fwd && !u.isSat(repl, subgoal)) + { + result.push_back(mk(efac)); + return true; + } if (fwd) { if (((isOpX(repl) && isOpX(subgoal)) || (isOpX(repl) && isOpX(subgoal))) && (repl->left() == subgoal->left()) && (repl->right() == subgoal->right())) - return mk(repl->left(), subgoal->right()); + { + result.push_back(mk(repl->left(), subgoal->right())); + return true; + } + } + if (!fwd && u.implies(repl, subgoal)) + { + result.push_back(mk(efac)); + return true; } - if (!fwd && u.implies(repl, subgoal)) return mk(efac); } matching.clear(); assmQF = assmQFtmp; @@ -419,40 +454,48 @@ namespace ufo if (isOpX(subgoal)) { - if (findMatchingSubexpr (assmQF, subgoal->left(), args, matching)) + matchingSet.clear(); + if (findMatchingSubexpr (assmQF, subgoal->left(), args, matchingSet)) { - for (auto & a : matching) repl = replaceAll(repl, a.first, a.second); - if (u.implies(repl, subgoal->left())) return subgoal->right(); - if (u.implies(repl, mkNeg(subgoal->left()))) return subgoal->last(); + for (auto matching : matchingSet) { + Expr auxRepl = repl; + for (auto & a : matching) auxRepl = replaceAll(auxRepl, a.first, a.second); + if (u.implies(auxRepl, subgoal->left())) result.push_back(subgoal->right()); + else if (u.implies(auxRepl, mkNeg(subgoal->left()))) result.push_back(subgoal->last()); + } + return (result.size() > 0); } } // try finding inconsistencies if (fwd && !containsOp(assmQF)) { - ExprMap matching1; + std::set matchingSet1; ExprVector args1; filter(subgoal, bind::IsConst (), inserter(args1, args1.begin())); - if (findMatchingSubexpr (subgoal, assmQF, args1, matching1)) + if (findMatchingSubexpr (subgoal, assmQF, args1, matchingSet1)) { - repl = assmQF; - for (auto & m : matching1){ - auto it = find(args.begin(), args.end(), m.second); - if (it != args.end()) - { - repl = replaceAll(repl, m.second, m.first); - args.erase(it); + for (auto matching1 : matchingSet1) { + Expr auxRepl = assmQF; + for (auto & m : matching1){ + auto it = find(args.begin(), args.end(), m.second); + if (it != args.end()) + { + auxRepl = replaceAll(auxRepl, m.second, m.first); + args.erase(it); + } + else + { + if (m.second != m.first) break; + } } - else + if (args.empty()) { - if (m.second != m.first) return NULL; + if (!u.isSat(subgoal, auxRepl)) result.push_back(mk(efac)); + else result.push_back(auxRepl); + return true; } } - if (args.empty()) - { - if (!u.isSat(subgoal, repl)) return mk(efac); - return repl; - } } } } @@ -467,12 +510,20 @@ namespace ufo Expr res = replaceAll(subgoal, assm->left(), assm->right()); if (res != subgoal) { - return res; + result.push_back(res); + return true; } } - if (!fwd && u.implies(assm, subgoal)) return mk(efac); - if (fwd && !u.isSat(assm, subgoal)) return mk(efac); + if (!fwd && u.implies(assm, subgoal)) + { + result.push_back(mk(efac)); + return true; + } + if (fwd && !u.isSat(assm, subgoal)) { + result.push_back(mk(efac)); + return true; + } if (!fwd && isOp(subgoal) && isOp(assm) && isNumeric(subgoal->left()) && isNumeric(assm->left())) @@ -480,24 +531,28 @@ namespace ufo Expr tryAbd = abduce(subgoal, assm); if (tryAbd != NULL) { - return tryAbd; + result.push_back(tryAbd); + return true; } } // TODO: proper matching if (isOpX(subgoal) && u.implies(subgoal->left(), assm)) { - return subgoal->right(); + result.push_back(subgoal->right()); + return true; } if (isOpX(subgoal)) { if (u.implies(assm, subgoal->left())) { - return subgoal->right(); + result.push_back(subgoal->right()); + return true; } if (u.implies(assm, mk(subgoal->left()))) { - return subgoal->last(); + result.push_back(subgoal->last()); + return true; } } @@ -518,7 +573,8 @@ namespace ufo if (rem) { Expr res = disjoin(dsjs, efac); - return res; + result.push_back(res); + return true; } } @@ -532,7 +588,8 @@ namespace ufo res = replaceAll(res, mkNeg(tmp), mk(efac)); if (res != subgoal) { - return simplifyBool(res); + result.push_back(simplifyBool(res)); + return true; } } @@ -557,14 +614,16 @@ namespace ufo Expr tmp = replaceAll(a, substs); if (u.implies(assm, mk(tmp, a))) - return replaceAll(subgoal, a, tmp); // very specific heuristic; works for multisets + result.push_back(replaceAll(subgoal, a, tmp)); // very specific heuristic; works for multisets + return true; if (a->last() != a->left()->last()) { substs[a->last()] = a->left()->last(); substs[a->left()->last()] = a->last(); } - return replaceAll(subgoal, a, replaceAll(a, substs)); + result.push_back(replaceAll(subgoal, a, replaceAll(a, substs))); + return true; } } for (auto & a : selects) @@ -573,7 +632,8 @@ namespace ufo ((a->right() == assm->right() && a->left()->right() == assm->left()) || (a->right() == assm->left() && a->left()->right() == assm->right()))) { - return replaceAll(subgoal, a, mk(a->left()->left(), a->right()))); + return true; } } } @@ -587,7 +647,8 @@ namespace ufo assm->right() == a->right() && isOpX(a->last())) { - return replaceAll(subgoal, a, a->left()); + result.push_back(replaceAll(subgoal, a, a->left())); + return true; } } } @@ -600,14 +661,15 @@ namespace ufo assm->left()->right() == a->right() && isOpX(a->last())) { - return replaceAll(subgoal, a, a->left()); + result.push_back(replaceAll(subgoal, a, a->left())); + return true; } } } } } // if nothing helped, return NULL -- it will be used for backtracking - return NULL; + return false; } // this method is used when a strategy is specified from the command line @@ -617,10 +679,15 @@ namespace ufo for (int i : strat) { assert (i < assumptions.size()); - subgoal_copy = useAssumption(subgoal_copy, assumptions[i]); - if (subgoal_copy == NULL || subgoal_copy == subgoal) break; + ExprVector result; + if (useAssumption(subgoal_copy, assumptions[i], result)) { + for (auto & it : result) { + subgoal_copy = it; + if (subgoal_copy == subgoal) break; - if (u.isEquiv(subgoal_copy, mk(efac))) return true; + if (u.isEquiv(subgoal_copy, mk(efac))) return true; + } + } } return false; } @@ -761,66 +828,70 @@ namespace ufo } } - map allAttempts; + map allAttempts; for (int i = 0; i < assumptions.size(); i++) { Expr a = assumptions[i]; - Expr res = useAssumption(subgoal, a); - if (res != NULL) - { - if (u.isTrue(res)) - { - if (verbose) outs () << string(sp, ' ') << "rewritten [" << i << "]\n"; - return true; - } - if (find (rewriteHistory.begin(), rewriteHistory.end(), res) == rewriteHistory.end()) - allAttempts[i] = res; - } - } - - vector orderedAttempts1; - vector orderedAttempts2; - - // identifying an order for rewrites - for (auto & a : allAttempts) - { - bool placed = false; - - bool sw; - if (earlySplit == 1) sw = treeSize(subgoal) >= treeSize(a.second); - else sw = true; - - if (sw) - { - for (int i = 0; i < orderedAttempts1.size(); i++) - { - if (treeSize(allAttempts[orderedAttempts1[i]]) > treeSize(a.second)) + ExprVector result; + if (useAssumption(subgoal, a, result)) { + if (verbose) outs () << string(sp, ' ') << "found " << result.size() << " substitution(s) for assumption " << i << "\n"; + for (auto & it : result) { + if (u.isTrue(it)) { - orderedAttempts1.insert(orderedAttempts1.begin() + i, a.first); - placed = true; - break; + if (verbose) outs () << string(sp, ' ') << "rewritten [" << i << "]\n"; + return true; } } - if (!placed) orderedAttempts1.push_back(a.first); - } - else - { - for (int i = 0; i < orderedAttempts2.size(); i++) - { - if (treeSize(allAttempts[orderedAttempts2[i]]) > treeSize(a.second)) - { - orderedAttempts2.insert(orderedAttempts2.begin() + i, a.first); - placed = true; - break; - } + for (auto & it : result) { + if (find (rewriteHistory.begin(), rewriteHistory.end(), it) == rewriteHistory.end()) + allAttempts[i].push_back(it); } - if (!placed) orderedAttempts2.push_back(a.first); } } + // vector orderedAttempts1; + // vector orderedAttempts2; + + // identifying an order for rewrites + // for (auto & a : allAttempts) + // { + // bool placed = false; + + // bool sw; + // if (earlySplit == 1) sw = treeSize(subgoal) >= treeSize(a.second); + // else sw = true; + + // if (sw) + // { + // for (int i = 0; i < orderedAttempts1.size(); i++) + // { + // if (treeSize(allAttempts[orderedAttempts1[i]]) > treeSize(a.second)) + // { + // orderedAttempts1.insert(orderedAttempts1.begin() + i, a.first); + // placed = true; + // break; + // } + // } + // if (!placed) orderedAttempts1.push_back(a.first); + // } + // else + // { + // for (int i = 0; i < orderedAttempts2.size(); i++) + // { + // if (treeSize(allAttempts[orderedAttempts2[i]]) > treeSize(a.second)) + // { + // orderedAttempts2.insert(orderedAttempts2.begin() + i, a.first); + // placed = true; + // break; + // } + // } + // if (!placed) orderedAttempts2.push_back(a.first); + // } + // } + // first, try easier rewrites - if (tryRewriting(orderedAttempts1, allAttempts, subgoal)) + if (tryRewriting(allAttempts, subgoal)) { if (toRem) assumptions = assumptionsTmp; return true; @@ -829,7 +900,7 @@ namespace ufo if (splitDisjAssumptions(subgoal)) return true; // second, try harder rewrites - if (tryRewriting(orderedAttempts2, allAttempts, subgoal)) + if (tryRewriting(allAttempts, subgoal)) { if (toRem) assumptions = assumptionsTmp; return true; @@ -846,31 +917,33 @@ namespace ufo } // try rewriting in a particular order - bool tryRewriting(vector& orderedAttempts, map& allAttempts, Expr subgoal) + bool tryRewriting(map& allAttempts, Expr subgoal) { - for (int i : orderedAttempts) - { - Expr res = allAttempts[i]; - if (verbose) outs() << string(sp, ' ') << "rewritten [" << i << "]: " << *res << "\n"; + for (auto & a : allAttempts) { + outs() << string(sp, ' ') << allAttempts.size() << "\n"; + int i = a.first; + for (auto & exp : a.second) { + if (verbose) outs() << string(sp, ' ') << "rewritten [" << i << "]: " << *exp << "\n"; - // save history - rewriteHistory.push_back(res); - rewriteSequence.push_back(i); + // save history + rewriteHistory.push_back(exp); + rewriteSequence.push_back(i); - if (rewriteAssumptions(res)) - { - if (verbose) if (res) outs () << string(sp, ' ') << "rewriting done\n"; - return true; - } - else - { - // failed attempt, remove history - rewriteHistory.pop_back(); - rewriteSequence.pop_back(); + if (rewriteAssumptions(exp)) + { + if (verbose) if (exp) outs () << string(sp, ' ') << "rewriting done\n"; + return true; + } + else + { + // failed attempt, remove history + rewriteHistory.pop_back(); + rewriteSequence.pop_back(); + } + + // backtrack: + if (verbose) outs () << string(sp, ' ') << "backtrack to: " << *subgoal << "\n"; } - - // backtrack: - if (verbose) outs () << string(sp, ' ') << "backtrack to: " << *subgoal << "\n"; } return false; } diff --git a/include/ae/ExprSimpl.hpp b/include/ae/ExprSimpl.hpp index baa83b133..05c782bc3 100644 --- a/include/ae/ExprSimpl.hpp +++ b/include/ae/ExprSimpl.hpp @@ -3600,32 +3600,29 @@ namespace ufo { bool found; ExprVector& vars; - ExprMap& matching; + std::set& matchingSet; Expr pattern; - SubexprMatcher (Expr _p, ExprVector& _v, ExprMap& _m) : - found (false), pattern(_p), vars(_v), matching(_m) {} + SubexprMatcher (Expr _p, ExprVector& _v, std::set& _m) : + found(false), pattern(_p), vars(_v), matchingSet(_m) {} VisitAction operator() (Expr exp) { - if (found) - { - return VisitAction::skipKids (); - } - else if ((isOpX(exp) || isOp(exp) || - isOp(exp) || isOpX(exp) || isOpX(exp)) && + !(containsOp(exp) || containsOp(exp)) && + findMatching (pattern, exp, vars, matching)) { found = true; - return VisitAction::skipKids (); + matchingSet.insert(matching); } return VisitAction::doKids (); } }; - inline bool findMatchingSubexpr (Expr pattern, Expr exp, ExprVector& vars, ExprMap& matching) + inline bool findMatchingSubexpr (Expr pattern, Expr exp, ExprVector& vars, std::set& matchingSet) { - SubexprMatcher fn (pattern, vars, matching); + SubexprMatcher fn (pattern, vars, matchingSet); dagVisit (fn, exp); return fn.found; } diff --git a/tools/adt/Adt.cpp b/tools/adt/Adt.cpp index 047a0767e..b14e9a289 100644 --- a/tools/adt/Adt.cpp +++ b/tools/adt/Adt.cpp @@ -38,7 +38,7 @@ int main (int argc, char ** argv) char *basecheck = getStrValue("--base", NULL, argc, argv); char *indcheck = getStrValue("--ind", NULL, argc, argv); int maxDepth = atoi(getStrValue("--max-depth", "7", argc, argv)); - int maxGrow = atoi(getStrValue("--max-grow", "2", argc, argv)); + int maxGrow = atoi(getStrValue("--max-grow", "3", argc, argv)); int mergingIts = atoi(getStrValue("--merge-assms", "3", argc, argv)); int earlySplit = atoi(getStrValue("--early-split", "1", argc, argv)); Expr e = z3_from_smtlib_file (z3, infile); From ca8e6eb5330b1098e6abf31464a2d9f7ff03030e Mon Sep 17 00:00:00 2001 From: grigoryfedyukovich Date: Wed, 21 Oct 2020 07:43:45 -0400 Subject: [PATCH 21/40] reading ADT-constraints as CHCs --- bench_horn_adt/list_append_len.smt2 | 15 + bench_horn_adt/list_len.smt2 | 12 + bench_horn_adt/tree_size.smt2 | 11 + include/adt/CHCSolver.hpp | 46 ++++ include/ae/ExprSimpl.hpp | 7 +- include/deep/HornNonlin.hpp | 406 ++++++++++++++++++++++++++++ include/ufo/Expr.hpp | 32 +++ tools/adt/CHC.cpp | 38 +++ tools/adt/CMakeLists.txt | 8 +- 9 files changed, 569 insertions(+), 6 deletions(-) create mode 100644 bench_horn_adt/list_append_len.smt2 create mode 100644 bench_horn_adt/list_len.smt2 create mode 100644 bench_horn_adt/tree_size.smt2 create mode 100644 include/adt/CHCSolver.hpp create mode 100755 include/deep/HornNonlin.hpp create mode 100644 tools/adt/CHC.cpp diff --git a/bench_horn_adt/list_append_len.smt2 b/bench_horn_adt/list_append_len.smt2 new file mode 100644 index 000000000..aa966e4e2 --- /dev/null +++ b/bench_horn_adt/list_append_len.smt2 @@ -0,0 +1,15 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-fun length (Lst Int) Bool) +(declare-fun append (Lst Lst Lst) Bool) + +(assert (length nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (length ys l)) (length xs (+ l 1))))) + +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(assert (forall ((xs Lst) (lx Int) (ys Lst) (ly Int) (zs Lst) (lz Int)) + (=> (and (length xs lx) (length ys ly) (append xs ys zs) (length zs lz) (not (= (+ lx ly) lz))) false))) +(check-sat) diff --git a/bench_horn_adt/list_len.smt2 b/bench_horn_adt/list_len.smt2 new file mode 100644 index 000000000..25e2c91a7 --- /dev/null +++ b/bench_horn_adt/list_len.smt2 @@ -0,0 +1,12 @@ + +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-fun length (Lst Int) Bool) + +(assert (length nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (length ys l)) (length xs (+ l 1))))) + +(assert (forall ((l Int) (xs Lst)) + (=> (and (length xs l) (not (>= l 0))) false))) +(check-sat) diff --git a/bench_horn_adt/tree_size.smt2 b/bench_horn_adt/tree_size.smt2 new file mode 100644 index 000000000..53baddd39 --- /dev/null +++ b/bench_horn_adt/tree_size.smt2 @@ -0,0 +1,11 @@ +(set-logic HORN) +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (nil)))) +(declare-fun size (Tree Int) Bool) + +(assert (size nil 0)) +(assert (forall ((x Int) (r Tree) (l Tree) (m Tree) (sl Int) (sr Int)) + (=> (and (= m (node x l r)) (size l sl) (size r sr)) (size m (+ sl sr))))) + +(assert (forall ((s Int) (m Tree)) + (=> (and (size m s) (not (>= s 0))) false))) +(check-sat) diff --git a/include/adt/CHCSolver.hpp b/include/adt/CHCSolver.hpp new file mode 100644 index 000000000..0abdf2c55 --- /dev/null +++ b/include/adt/CHCSolver.hpp @@ -0,0 +1,46 @@ +#ifndef CHCSOLVER__HPP__ +#define CHCSOLVER__HPP__ + +#include "deep/HornNonlin.hpp" +#include "ADTSolver.hpp" + +using namespace std; +using namespace boost; +namespace ufo +{ + void chcSolve(char * smt_file) + { + ExprFactory efac; + EZ3 z3(efac); + CHCs ruleManager(efac, z3); + ruleManager.parse(smt_file); + ruleManager.print(); + + // TODO: cast all CHCs except the query as assumptions and call adt-ind + // e.g, smth like this: + +// ExprVector constructors; +// ExprVector assumptions; +// ExprVector empt; +// for (auto & a : z3.getAdtConstructors()) constructors.push_back(regularizeQF(a)); +// +// Expr goal = mkNeg(ruleManager.chcs[ruleManager.qCHCNum].body); +// for (auto & a : ruleManager.chcs) +// { +// if (a.isQuery) +// { +// for (int i = 0; i < a.srcRelations.size(); i++) +// { +// Expr tmp = bind::fapp (a.srcRelations[i], a.srcVars[i]); +// assumptions.push_back(tmp); +// } +// goal = mkNeg(a.body); +// } +// else assumptions.push_back(createQuantifiedFormula(a.body, empt)); +// } +// ADTSolver sol (goal, assumptions, constructors); +// sol.solveNoind(); + } +} + +#endif diff --git a/include/ae/ExprSimpl.hpp b/include/ae/ExprSimpl.hpp index 05c782bc3..4faf8b292 100644 --- a/include/ae/ExprSimpl.hpp +++ b/include/ae/ExprSimpl.hpp @@ -1809,8 +1809,11 @@ namespace ufo return bind::mkConst(new_name, mk ( mk (new_name->getFactory()), mk (new_name->getFactory()))); // GF: currently, only Arrays over Ints - - else return NULL; + else if (bind::isAdtConst(var)) + return bind::adtConst(new_name); + else + assert(0); + return NULL; } inline static bool hasBoolSort(Expr e) diff --git a/include/deep/HornNonlin.hpp b/include/deep/HornNonlin.hpp new file mode 100755 index 000000000..1bf54d9f1 --- /dev/null +++ b/include/deep/HornNonlin.hpp @@ -0,0 +1,406 @@ +#ifndef HORNNONLIN__HPP__ +#define HORNNONLIN__HPP__ + +#include "ae/AeValSolver.hpp" + +using namespace std; +using namespace boost; + +namespace ufo +{ + // all adapted from the modver branch + inline bool rewriteHelperConsts(Expr& body, Expr v1, Expr v2) + { + if (isOpX(v1)) + { + body = mk(body, mk(v1, v2)); + return true; + } + else if (isOpX(v1)) + { + body = mk(body, v2); + return true; + } + else if (isOpX(v1)) + { + body = mk(body, mk(v2)); + return true; + } + return false; + } + + struct HornRuleExt + { + vector srcVars; + ExprVector dstVars; + ExprVector locVars; + + Expr body; + Expr head; + + ExprVector srcRelations; + Expr dstRelation; + + bool isFact; + bool isQuery; + bool isInductive; + + void assignVarsAndRewrite (vector& _srcVars, vector& invVarsSrc, + ExprVector& _dstVars, ExprVector& invVarsDst) + { + for (int i = 0; i < _srcVars.size(); i++) + { + ExprVector tmp; + for (int j = 0; j < _srcVars[i].size(); j++) + { + tmp.push_back(invVarsSrc[i][j]); + body = mk(body, mk(_srcVars[i][j], tmp[j])); + } + srcVars.push_back(tmp); + } + + for (int i = 0; i < _dstVars.size(); i++) + { + // primed copy of var: + Expr new_name = mkTerm (lexical_cast(invVarsDst[i]) + "'", body->getFactory()); + Expr var = cloneVar(invVarsDst[i], new_name); + dstVars.push_back(var); + body = mk(body, mk(_dstVars[i], dstVars[i])); + } + } + }; + + class CHCs + { + private: + set indeces; + string varname = "_FH_"; + + public: + + ExprFactory &m_efac; + EZ3 &m_z3; + + ExprSet decls; + Expr failDecl; + vector chcs; + map invVars; + map> incms; + int qCHCNum; // index of the query in chc + int total_var_cnt = 0; + + CHCs(ExprFactory &efac, EZ3 &z3) : m_efac(efac), m_z3(z3) {}; + + bool isFapp (Expr e) + { + if (isOpX(e)) + if (e->arity() > 0) + if (isOpX(e->arg(0))) + if (e->arg(0)->arity() >= 2) + return true; + return false; + } + + void preprocess (Expr term, ExprVector& locVars, vector& srcVars, ExprVector &srcRelations, ExprSet& lin) + { + if (isOpX(term)) + { + for (auto it = term->args_begin(), end = term->args_end(); it != end; ++it) + { + preprocess(*it, locVars, srcVars, srcRelations, lin); + } + } + else + { + if (bind::isBoolConst(term)) + { + lin.insert(term); + } + if (isOpX(term) && isOpX(term->arg(0)) && + find(decls.begin(), decls.end(), term->arg(0)) != decls.end()) + // GF: the last requirement might be too restrictive: a rule with + // the term->arg(0) in the head should already be encountered + { + Expr rel = term->arg(0); + if (rel->arity() >= 2) + { + addDecl(rel); + srcRelations.push_back(rel->arg(0)); + ExprVector tmp; + for (auto it = term->args_begin()+1, end = term->args_end(); it != end; ++it) + tmp.push_back(*it); + srcVars.push_back(tmp); + } + } + else + { + lin.insert(term); + } + } + } + + void addDecl (Expr a) + { + if (invVars[a->arg(0)].size() == 0) + { + decls.insert(a); + for (int i = 1; i < a->arity()-1; i++) + { + Expr new_name = mkTerm (varname + to_string(total_var_cnt), m_efac); + total_var_cnt++; + Expr var; + if (isOpX (a->arg(i))) + var = bind::intConst(new_name); + else if (isOpX (a->arg(i))) + var = bind::realConst(new_name); + else if (isOpX (a->arg(i))) + var = bind::boolConst(new_name); + else if (isOpX (a->arg(i))) // GF: currently support only arrays over Ints + var = bind::mkConst(new_name, mk + (mk (m_efac), mk (m_efac))); + else if (isOpX(a->arg(i))) + var = bind::adtConst(new_name); + else + assert(0); + invVars[a->arg(0)].push_back(var); + } + } + } + + Expr normalize (Expr r1, HornRuleExt& hr) + { + Expr r = regularizeQF(r1); + + // TODO: support more syntactic replacements + while (isOpX(r)) + { + for (int i = 0; i < r->arity() - 1; i++) + { + hr.locVars.push_back(bind::fapp(r->arg(i))); + } + r = r->last(); + } + + if (isOpX(r) && isOpX(r->first())) + { + for (int i = 0; i < r->first()->arity() - 1; i++) + hr.locVars.push_back(bind::fapp(r->first()->arg(i))); + + r = mk(r->first()->last(), mk(m_efac)); + } + + if (isOpX(r)) + { + r = mk(r->first(), mk(m_efac)); + } + else if (isOpX(r) && r->arity() == 2 && isOpX(r->left()) && hasUninterp(r->left())) + { + r = mk(r->left()->left(), r->right()); + } + else if (isOpX(r) && r->arity() == 2 && isOpX(r->right()) && hasUninterp(r->right())) + { + r = mk(r->right()->left(), r->left()); + } + + if (isOpX(r) && !isFapp(r->right()) && !isOpX(r->right())) + { + if (isOpX(r->right())) + { + return NULL; + } + r = mk(mk(r->left(), mk(r->right())), mk(m_efac)); + } + + if (!isOpX(r)) r = mk(mk(m_efac), r); + + return r; + } + + void parse(char *smt_file) + { + // GF: this entry part is different from the original implementation + // (since the fixpoint format does not support ADTs) + Expr e = z3_from_smtlib_file (m_z3, smt_file); + ExprSet cnjs; + getConj(e, cnjs); + + for (auto &r1: cnjs) + { + chcs.push_back(HornRuleExt()); + HornRuleExt& hr = chcs.back(); + Expr r = normalize(r1, hr); + if (r == NULL) + { + chcs.pop_back(); + continue; + } + + Expr body = r->arg(0); + Expr head = r->arg(1); + + vector origSrcSymbs; + ExprSet lin; + preprocess(body, hr.locVars, origSrcSymbs, hr.srcRelations, lin); + if (hr.srcRelations.size() == 0) + { + if (hasUninterp(body)) + { + errs () << "Unsupported format\n"; + errs () << " " << *body << "\n"; + exit (0); + } + } + + hr.isFact = hr.srcRelations.empty(); + + if (isOpX(head)) + { + if (head->arg(0)->arity() == 2 && !hr.isFact) + { + addFailDecl(head->arg(0)->arg(0)); + } + else + { + addDecl(head->arg(0)); + } + hr.head = head->arg(0); + hr.dstRelation = hr.head->arg(0); + } + else + { + if (!isOpX(head)) body = mk(body, mk(head)); + addFailDecl(mk(m_efac)); + hr.head = mk(m_efac); + hr.dstRelation = mk(m_efac); + } + + hr.isQuery = (hr.dstRelation == failDecl); + hr.isInductive = (hr.srcRelations.size() == 1 && hr.srcRelations[0] == hr.dstRelation); + if (hr.isQuery) qCHCNum = chcs.size() - 1; + + ExprVector allOrigSymbs; + for (auto & a : origSrcSymbs) for (auto & b : a) allOrigSymbs.push_back(b); + ExprVector origDstSymbs; + if (!hr.isQuery) + { + for (auto it = head->args_begin()+1, end = head->args_end(); it != end; ++it) + origDstSymbs.push_back(*it); + } + allOrigSymbs.insert(allOrigSymbs.end(), origDstSymbs.begin(), origDstSymbs.end()); + simplBoolReplCnj(allOrigSymbs, lin); // perhaps, not a very important optimization now; consider removing + hr.body = conjoin(lin, m_efac); + + vector tmp; + // we may have several applications of the same predicate symbol in the body: + for (int i = 0; i < hr.srcRelations.size(); i++) + { + auto & a = hr.srcRelations[i]; + ExprVector tmp1; + for (int j = 0; j < i; j++) + { + if (hr.srcRelations[i] == hr.srcRelations[j]) + { + for (int k = 0; k < invVars[a].size(); k++) + { + Expr new_name = mkTerm (varname + to_string(++total_var_cnt), m_efac); + tmp1.push_back(cloneVar(invVars[a][k], new_name)); + } + break; + } + } + if (tmp1.empty()) + { + tmp1 = invVars[a]; + } + tmp.push_back(tmp1); + } + hr.assignVarsAndRewrite (origSrcSymbs, tmp, + origDstSymbs, invVars[hr.dstRelation]); + + hr.body = simpleQE(hr.body, hr.locVars); + ExprVector body_vars; + expr::filter (hr.body, bind::IsConst(), std::inserter (body_vars, body_vars.begin ())); + for (auto it = hr.locVars.begin(); it != hr.locVars.end(); ) + { + if (find(body_vars.begin(), body_vars.end(), *it) == body_vars.end()) + it = hr.locVars.erase(it); + else ++it; + } + } + + for (int i = 0; i < chcs.size(); i++) + incms[chcs[i].dstRelation].push_back(i); + + } + + void addFailDecl(Expr decl) + { + if (failDecl == NULL) + { + failDecl = decl; + } + else + { + if (failDecl != decl) + { + errs () << "Multiple queries are not supported\n"; + exit(0); + } + } + } + + Expr getPostcondition (int i) + { + HornRuleExt& hr = chcs[i]; + ExprSet cnjs; + ExprSet newCnjs; + getConj(hr.body, cnjs); + ExprVector allVars = hr.locVars; + for (auto & a : hr.srcVars) allVars.insert(allVars.end(), a.begin(), a.end()); + for (auto & a : cnjs) + { + if (emptyIntersect(a, allVars)) newCnjs.insert(a); + } + return conjoin(newCnjs, m_efac); + } + + void print() + { + for (auto &hr: chcs) print(hr); + } + + void print(HornRuleExt& hr) + { + if (hr.isFact) outs() << " INIT CHC:\n"; + else if (hr.isQuery) outs() << " QUERY CHC:\n"; + else outs() << " CHC:\n"; + + outs () << " "; + + for (int i = 0; i < hr.srcRelations.size(); i++) + { + outs () << * hr.srcRelations[i]; + outs () << " ("; + for(auto &a: hr.srcVars[i]) outs() << *a << ", "; + outs () << "\b\b)"; + outs () << " /\\ "; + } + + if (hr.isFact) + outs () << "true"; + else + outs () << "\b\b\b\b"; + + outs() << " -> " << * hr.dstRelation; + + if (hr.dstVars.size() > 0) + { + outs () << " ("; + for(auto &a: hr.dstVars) outs() << *a << ", "; + outs () << "\b\b)"; + } + outs() << "\n body: " << * hr.body << "\n"; + } + }; +} +#endif diff --git a/include/ufo/Expr.hpp b/include/ufo/Expr.hpp index 7633aa683..099b6a2b7 100644 --- a/include/ufo/Expr.hpp +++ b/include/ufo/Expr.hpp @@ -2894,6 +2894,31 @@ namespace expr } }; + struct HasUninterp : public std::unary_function + { + bool found; + + HasUninterp () : found(false) {} + + VisitAction operator() (Expr exp) + { + if (found || isOpX(exp)) + { + if (exp->arity() > 0) + { + if (isOpX(exp->arg(0)) && + "BOOL" == boost::lexical_cast (exp->arg(0)->last()) && + exp->arg(0)->arity() > 2) + { + found = true; + return VisitAction::skipKids (); + } + } + } + return VisitAction::doKids (); + } + }; + struct SIZE : public std::unary_function { size_t count; @@ -3073,6 +3098,13 @@ namespace expr return co.found; } + inline bool hasUninterp (Expr e1) + { + HasUninterp co; + dagVisit (co, e1); + return co.found; + } + namespace op { namespace boolop diff --git a/tools/adt/CHC.cpp b/tools/adt/CHC.cpp new file mode 100644 index 000000000..a215f2e33 --- /dev/null +++ b/tools/adt/CHC.cpp @@ -0,0 +1,38 @@ +#include "adt/CHCSolver.hpp" +#include "ufo/Smt/EZ3.hh" + +using namespace ufo; + +char * getStrValue(const char * opt, const char * defValue, int argc, char ** argv) +{ + for (int i = 1; i < argc-1; i++) + { + if (strcmp(argv[i], opt) == 0) + { + return argv[i+1]; + } + } + return (char *)defValue; +} + +char * getSmtFileName(int num, int argc, char ** argv) +{ + int num1 = 1; + for (int i = 1; i < argc; i++) + { + int len = strlen(argv[i]); + if (len >= 5 && strcmp(argv[i] + len - 5, ".smt2") == 0) + { + if (num1 == num) return argv[i]; + else num1++; + } + } + return NULL; +} + +int main (int argc, char ** argv) +{ + char *infile = getSmtFileName(1, argc, argv); + chcSolve(infile); + return 0; +} diff --git a/tools/adt/CMakeLists.txt b/tools/adt/CMakeLists.txt index 9b8fe6b30..5f0b40a43 100644 --- a/tools/adt/CMakeLists.txt +++ b/tools/adt/CMakeLists.txt @@ -1,4 +1,4 @@ -add_executable (ind Adt.cpp) -target_link_libraries (ind ${Z3_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${GMPXX_LIB} ${GMP_LIB}) -llvm_config (ind bitwriter) -install(TARGETS ind RUNTIME DESTINATION bin) +add_executable (chc CHC.cpp) +target_link_libraries (chc ${Z3_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${GMPXX_LIB} ${GMP_LIB}) +llvm_config (chc bitwriter) +install(TARGETS chc RUNTIME DESTINATION bin) From ef5151d96bb62285341ec173b18214ca5ee06bb2 Mon Sep 17 00:00:00 2001 From: grigoryfedyukovich Date: Wed, 11 Nov 2020 07:15:35 -0500 Subject: [PATCH 22/40] fixed ADT preprocessing --- include/adt/ADTSolver.hpp | 6 +++--- include/adt/CHCSolver.hpp | 16 +++++++++++++--- include/ae/ExprSimpl.hpp | 7 ++++++- include/deep/HornNonlin.hpp | 29 ++++++++++++++++------------- 4 files changed, 38 insertions(+), 20 deletions(-) diff --git a/include/adt/ADTSolver.hpp b/include/adt/ADTSolver.hpp index 838003977..6c333ffca 100644 --- a/include/adt/ADTSolver.hpp +++ b/include/adt/ADTSolver.hpp @@ -39,7 +39,7 @@ namespace ufo public: ADTSolver(Expr _goal, ExprVector& _assumptions, ExprVector& _constructors, - int _maxDepth = 5, int _maxGrow = 3, int _mergingIts = 3, int _earlySplit = 1, bool _verbose = false) : + int _maxDepth = 5, int _maxGrow = 3, int _mergingIts = 3, int _earlySplit = 1, bool _verbose = true) : goal(_goal), assumptions(_assumptions), constructors(_constructors), efac(_goal->getFactory()), u(_goal->getFactory()), maxDepth(_maxDepth), maxGrow(_maxGrow), mergingIts(_mergingIts), earlySplit(_earlySplit), verbose(_verbose) {} @@ -1219,7 +1219,7 @@ namespace ufo if (indConstructors[type] != NULL && indConstructors[type] != a) { outs () << "Several inductive constructors are not supported\n"; - exit(0); + exit(1); } indConstructors[type] = a; } @@ -1229,7 +1229,7 @@ namespace ufo if (baseConstructors[type] != NULL && baseConstructors[type] != a) { outs () << "Several base constructors are not supported\n"; - exit(0); + exit(1); } baseConstructors[type] = a; } diff --git a/include/adt/CHCSolver.hpp b/include/adt/CHCSolver.hpp index 0abdf2c55..3552b834a 100644 --- a/include/adt/CHCSolver.hpp +++ b/include/adt/CHCSolver.hpp @@ -16,9 +16,8 @@ namespace ufo ruleManager.parse(smt_file); ruleManager.print(); - // TODO: cast all CHCs except the query as assumptions and call adt-ind + // TODO: convert rules to recursive function and then to CHCs and call adt-ind // e.g, smth like this: - // ExprVector constructors; // ExprVector assumptions; // ExprVector empt; @@ -36,7 +35,18 @@ namespace ufo // } // goal = mkNeg(a.body); // } -// else assumptions.push_back(createQuantifiedFormula(a.body, empt)); +// else +// { +// ExprVector cnj; +// for (int i = 0; i < a.srcRelations.size(); i++) +// { +// Expr tmp = bind::fapp (a.srcRelations[i], a.srcVars[i]); +// cnj.push_back(tmp); +// } +// cnj.push_back(a.body); +// assumptions.push_back(createQuantifiedFormula( +// mk(conjoin(cnj, efac), bind::fapp (a.dstRelation, a.dstVars)), empt)); +// } // } // ADTSolver sol (goal, assumptions, constructors); // sol.solveNoind(); diff --git a/include/ae/ExprSimpl.hpp b/include/ae/ExprSimpl.hpp index 4faf8b292..edb9da2d7 100644 --- a/include/ae/ExprSimpl.hpp +++ b/include/ae/ExprSimpl.hpp @@ -1810,7 +1810,12 @@ namespace ufo mk (new_name->getFactory()), mk (new_name->getFactory()))); // GF: currently, only Arrays over Ints else if (bind::isAdtConst(var)) - return bind::adtConst(new_name); + { + ExprVector type; + type.push_back(var->last()->last()); + Expr e = bind::fapp(bind::fdecl (new_name, type)); + return e; + } else assert(0); return NULL; diff --git a/include/deep/HornNonlin.hpp b/include/deep/HornNonlin.hpp index 1bf54d9f1..b914077f3 100755 --- a/include/deep/HornNonlin.hpp +++ b/include/deep/HornNonlin.hpp @@ -36,7 +36,6 @@ namespace ufo ExprVector locVars; Expr body; - Expr head; ExprVector srcRelations; Expr dstRelation; @@ -125,7 +124,7 @@ namespace ufo if (rel->arity() >= 2) { addDecl(rel); - srcRelations.push_back(rel->arg(0)); + srcRelations.push_back(rel); ExprVector tmp; for (auto it = term->args_begin()+1, end = term->args_end(); it != end; ++it) tmp.push_back(*it); @@ -141,7 +140,7 @@ namespace ufo void addDecl (Expr a) { - if (invVars[a->arg(0)].size() == 0) + if (invVars[a].size() == 0) { decls.insert(a); for (int i = 1; i < a->arity()-1; i++) @@ -158,11 +157,14 @@ namespace ufo else if (isOpX (a->arg(i))) // GF: currently support only arrays over Ints var = bind::mkConst(new_name, mk (mk (m_efac), mk (m_efac))); - else if (isOpX(a->arg(i))) - var = bind::adtConst(new_name); + else if (isOpX(a->arg(i))){ + ExprVector type; + type.push_back(a->arg(i)); + var = bind::fapp(bind::fdecl (new_name, type)); + } else assert(0); - invVars[a->arg(0)].push_back(var); + invVars[a].push_back(var); } } } @@ -247,7 +249,7 @@ namespace ufo { errs () << "Unsupported format\n"; errs () << " " << *body << "\n"; - exit (0); + exit (1); } } @@ -263,14 +265,12 @@ namespace ufo { addDecl(head->arg(0)); } - hr.head = head->arg(0); - hr.dstRelation = hr.head->arg(0); + hr.dstRelation = head->arg(0); } else { if (!isOpX(head)) body = mk(body, mk(head)); addFailDecl(mk(m_efac)); - hr.head = mk(m_efac); hr.dstRelation = mk(m_efac); } @@ -344,7 +344,7 @@ namespace ufo if (failDecl != decl) { errs () << "Multiple queries are not supported\n"; - exit(0); + exit(1); } } } @@ -379,7 +379,7 @@ namespace ufo for (int i = 0; i < hr.srcRelations.size(); i++) { - outs () << * hr.srcRelations[i]; + outs () << * hr.srcRelations[i]->left(); outs () << " ("; for(auto &a: hr.srcVars[i]) outs() << *a << ", "; outs () << "\b\b)"; @@ -391,7 +391,10 @@ namespace ufo else outs () << "\b\b\b\b"; - outs() << " -> " << * hr.dstRelation; + if (hr.isQuery) + outs () << " -> false"; + else + outs () << " -> " << * hr.dstRelation->left(); if (hr.dstVars.size() > 0) { From e3c9bf5f019f48f3ed17d58b37b9fd4078bf4603 Mon Sep 17 00:00:00 2001 From: LChernigovskaya Date: Mon, 18 Jan 2021 05:33:34 +0300 Subject: [PATCH 23/40] Proving CHCs using ADT-IND (#15) * fixed the null pointer dereference * reading ADT-constraints as CHCs * fixed ADT preprocessing * Convert CHCs to assumptions and goal for adt-ind * Fix generating goal * Swap equality arguments * enhanced equality elimination + minor fixes * enabled fast SMT implication checks w/timeouts; disabled user-strategies * Add some benchmarks * Try forall for goal * improved nested induction and subgoal handling * Add substitutions in assumptions * Improve substitutions * Create ADT query for all CHCs * Some code refactorings * Copy assumptions before calling adt * Add check that replaced element is not constructor * Keep the last value for return if cannot find anything Co-authored-by: grigoryfedyukovich --- bench_adt/list_len_stren.smt2 | 12 + bench_horn_adt/heap_size.smt2 | 11 + bench_horn_adt/list_append_nil.smt2 | 11 + bench_horn_adt/list_interleave.smt2 | 20 + bench_horn_adt/list_len_butlast.smt2 | 21 + bench_horn_adt/list_rev2_len.smt2 | 28 ++ bench_horn_adt/tree-insert-all-size.smt2 | 27 ++ include/adt/ADTSolver.hpp | 476 ++++++++++++----------- include/adt/CHCSolver.hpp | 338 ++++++++++++++-- include/ae/ExprSimpl.hpp | 31 +- include/ae/SMTUtils.hpp | 13 +- include/ufo/Expr.hpp | 58 ++- include/ufo/Smt/Z3n.hpp | 8 +- tools/adt/Adt.cpp | 15 +- 14 files changed, 782 insertions(+), 287 deletions(-) create mode 100644 bench_adt/list_len_stren.smt2 create mode 100644 bench_horn_adt/heap_size.smt2 create mode 100644 bench_horn_adt/list_append_nil.smt2 create mode 100644 bench_horn_adt/list_interleave.smt2 create mode 100644 bench_horn_adt/list_len_butlast.smt2 create mode 100644 bench_horn_adt/list_rev2_len.smt2 create mode 100644 bench_horn_adt/tree-insert-all-size.smt2 diff --git a/bench_adt/list_len_stren.smt2 b/bench_adt/list_len_stren.smt2 new file mode 100644 index 000000000..366d70cc0 --- /dev/null +++ b/bench_adt/list_len_stren.smt2 @@ -0,0 +1,12 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun len (Lst) Int) +(assert (= (len nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (len (cons x y)) (+ 1 (len y))))) + +(declare-fun lenstr (Lst) Int) +(assert (= (lenstr nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (lenstr (cons x y)) (+ (len y) (lenstr y))))) + +(assert (not (forall ((x Lst)) (>= (lenstr x) 0)))) +(check-sat) diff --git a/bench_horn_adt/heap_size.smt2 b/bench_horn_adt/heap_size.smt2 new file mode 100644 index 000000000..0eb903d16 --- /dev/null +++ b/bench_horn_adt/heap_size.smt2 @@ -0,0 +1,11 @@ +(set-logic HORN) +(declare-datatypes () ((Heap (hleaf) (heap (rk Int) (value Int) (hleft Heap) (hright Heap))))) +(declare-fun hsize (Heap Int) Bool) + +(assert (hsize hleaf 0)) +(assert (forall ((k Int) (v Int) (l Heap) (r Heap) (m Heap) (sl Int) (sr Int)) + (=> (and (= m (heap k v l r)) (hsize l sl) (hsize r sr)) (hsize m (+ 1 (+ sl sr)))))) + +(assert (forall ((s Int) (m Heap)) + (=> (and (hsize m s) (not (>= s 0))) false))) +(check-sat) diff --git a/bench_horn_adt/list_append_nil.smt2 b/bench_horn_adt/list_append_nil.smt2 new file mode 100644 index 000000000..142ba1159 --- /dev/null +++ b/bench_horn_adt/list_append_nil.smt2 @@ -0,0 +1,11 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-fun append (Lst Lst Lst) Bool) + +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(assert (forall ((xs Lst) (ys Lst)) + (=> (and (append xs nil ys) (not (= xs ys))) false))) +(check-sat) diff --git a/bench_horn_adt/list_interleave.smt2 b/bench_horn_adt/list_interleave.smt2 new file mode 100644 index 000000000..e8a25ec3f --- /dev/null +++ b/bench_horn_adt/list_interleave.smt2 @@ -0,0 +1,20 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-fun interleave (Lst Lst Lst) Bool) +(declare-fun evens (Lst Lst) Bool) +(declare-fun odds (Lst Lst) Bool) + +(assert (evens nil nil)) +(assert (odds nil nil)) +(assert (forall ((xs Lst) (ys Lst) (x Int) (rs Lst)) + (=> (and (= xs (cons x ys)) (odds ys rs)) (evens xs (cons x rs))))) +(assert (forall ((xs Lst) (ys Lst) (x Int) (rs Lst)) + (=> (and (= xs (cons x ys)) (evens ys rs)) (odds xs rs)))) +(assert (forall ((ys Lst) (zs Lst)) (=> (= zs nil) (interleave zs ys ys)))) +(assert (forall ((xs Lst) (ys Lst) (zs Lst) (z Int) (rs Lst)) + (=> (and (= zs (cons z xs)) (interleave ys xs rs)) + (interleave zs ys (cons z rs))))) + +(assert (forall ((xs Lst) (ys Lst) (zs Lst) (rs Lst)) + (=> (and (evens xs ys) (odds xs zs) (interleave ys zs rs) (not (= xs rs))) false))) +(check-sat) diff --git a/bench_horn_adt/list_len_butlast.smt2 b/bench_horn_adt/list_len_butlast.smt2 new file mode 100644 index 000000000..bc4a92a9d --- /dev/null +++ b/bench_horn_adt/list_len_butlast.smt2 @@ -0,0 +1,21 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-fun length (Lst Int) Bool) +(declare-fun append (Lst Lst Lst) Bool) +(declare-fun butlast (Lst Lst) Bool) + +(assert (length nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (length ys l)) (length xs (+ l 1))))) + +(assert (butlast nil nil)) +(assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst)) (=> (and (= ys (cons n xs)) (= xs nil)) (butlast ys nil)))) +(assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst) (x Int) (zs Lst)) + (=> (and (butlast xs rs) (= ys (cons n xs)) (= xs (cons x zs))) (butlast ys (cons n rs))))) + +;extra lemma +(assert (forall ((xs Lst) (n Int) (ys Lst)) (=> (= ys (cons n xs)) (not (= ys nil))))) + +(assert (forall ((xs Lst) (ys Lst) (zs Lst) (n Int) (l1 Int) (l2 Int)) + (=> (and (= ys (cons n xs)) (butlast ys zs) (length ys l1) (length zs l2) (not (= (+ l2 1) l1))) false))) +(check-sat) diff --git a/bench_horn_adt/list_rev2_len.smt2 b/bench_horn_adt/list_rev2_len.smt2 new file mode 100644 index 000000000..166e2b0b8 --- /dev/null +++ b/bench_horn_adt/list_rev2_len.smt2 @@ -0,0 +1,28 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-fun append (Lst Lst Lst) Bool) +(declare-fun rev2 (Lst Lst Lst) Bool) +(declare-fun len (Lst Int) Bool) + +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(assert (forall ((xs Lst)) (rev2 nil xs xs))) +(assert (forall ((xs Lst) (ys Lst) (zs Lst) (rs Lst) (x Int) (ts Lst)) + (=> (and (= xs (cons x ys)) (= zs (cons x ts)) (rev2 ys zs rs)) (rev2 xs ts rs)))) + +; extra lemmas +(assert (forall ((xs Lst) (ys Lst) (rs Lst) (zs Lst) ) + (=> (and (rev2 xs nil zs) (append zs ys rs)) (rev2 xs ys rs)))) +(assert (forall ((xs Lst) (ys Lst) (zs Lst) (lx Int) (ly Int)) + (=> (and (append xs ys zs) (len xs lx) (len ys ly)) (len zs (+ lx ly))))) + +(assert (forall ((xs Lst) (ys Lst) (lx Int) (ly Int)) + (=> (and (rev2 xs nil ys) (len xs lx) (len ys ly) (not (= lx ly))) false))) + +(check-sat) diff --git a/bench_horn_adt/tree-insert-all-size.smt2 b/bench_horn_adt/tree-insert-all-size.smt2 new file mode 100644 index 000000000..91bfd6d18 --- /dev/null +++ b/bench_horn_adt/tree-insert-all-size.smt2 @@ -0,0 +1,27 @@ +(set-logic HORN) +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun size (Tree Int) Bool) +(declare-fun insert (Tree Int Tree) Bool) +(declare-fun insert-all (Tree Lst Tree) Bool) + +(assert (size leaf 0)) +(assert (forall ((x Int) (r Tree) (l Tree) (m Tree) (sl Int) (sr Int)) + (=> (and (= m (node x l r)) (size l sl) (size r sr)) (size m (+ 1 (+ sl sr)))))) + +(assert (forall ((i Int)) (insert leaf i (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (y Tree) (m Tree)) + (=> (and (insert r i x) (insert l i y) (= m (ite (< d i) (node d l x) (node d y r)))) (insert (node d l r) i m)))) + +(assert (forall ((x Tree)) (insert-all x nil x))) +(assert (forall ((x Tree) (n Int) (ls Lst) (xs Lst) (z Tree) (y Tree)) + (=> (and (insert-all x ls y) (= xs (cons n ls)) (insert y n z)) (insert-all x xs z)))) + +;extra lemmas +(assert (forall ((t Tree) (n Int) (st Int) (x Tree)) (=> (and (size t st) (insert t n x)) (size x (+ 1 st))))) + +(assert (forall ((l Lst) (t Tree) (i Int) (x Tree) (m Int) (n Int)) + (=> (and (size t n) (insert t i x) (size x m) (not (= m (+ 1 n)))) false))) + +(check-sat) \ No newline at end of file diff --git a/include/adt/ADTSolver.hpp b/include/adt/ADTSolver.hpp index 6c333ffca..1789375f3 100644 --- a/include/adt/ADTSolver.hpp +++ b/include/adt/ADTSolver.hpp @@ -34,15 +34,50 @@ namespace ufo bool verbose; int sp = 2; int glob_ind = 0; + bool useZ3 = false; + unsigned to; ExprVector blockedAssms; public: - ADTSolver(Expr _goal, ExprVector& _assumptions, ExprVector& _constructors, - int _maxDepth = 5, int _maxGrow = 3, int _mergingIts = 3, int _earlySplit = 1, bool _verbose = true) : - goal(_goal), assumptions(_assumptions), constructors(_constructors), - efac(_goal->getFactory()), u(_goal->getFactory()), maxDepth(_maxDepth), maxGrow(_maxGrow), mergingIts(_mergingIts), - earlySplit(_earlySplit), verbose(_verbose) {} + ADTSolver(Expr _goal, ExprVector& _assumptions, ExprVector& _constructors, int _maxDepth = 5, int _maxGrow = 3, int _mergingIts = 3, int _earlySplit = 1, bool _verbose = false, bool _useZ3 = true, unsigned _to = 1000) : + goal(_goal), assumptions(_assumptions), constructors(_constructors), efac(_goal->getFactory()), u(_goal->getFactory(), _to), maxDepth(_maxDepth), maxGrow(_maxGrow), mergingIts(_mergingIts), earlySplit(_earlySplit), verbose(_verbose), useZ3(_useZ3), to (_to) + { + // for convenience, rename assumptions (to have unique quantified variables) + renameAssumptions(); + } + + void renameAssumptions() + { + int c = 0; + ExprSet allVars; + filter(conjoin(assumptions, efac), bind::IsConst (), inserter(allVars, allVars.begin())); + + for (int i = 0; i < assumptions.size(); i++) + { + map vars; + getQVars(assumptions[i], vars); + ExprMap replFls; + for (auto & e : vars) + { + ExprMap repls; + for (int j = 0; j < e.first->arity() - 1; j++) + { + Expr v = bind::fapp(e.first->arg(j)); + Expr newVar; + while (true) + { + newVar = cloneVar(v, mkTerm ("_qv_" + to_string(++c), efac)); + if (find(allVars.begin(), allVars.end(), newVar) == allVars.end()) break; + } + repls[v->left()->left()] = newVar->left()->left(); + } + Expr newFla = replaceAll(e.first, replFls); + replFls[e.first] = replaceAll(newFla, repls); + } + assumptions[i] = replaceAll(assumptions[i], replFls); + } + } bool simplifyGoal() { @@ -66,34 +101,43 @@ namespace ufo return false; } - Expr eliminateEqualities(Expr goal) + bool findAssmOccurs(Expr e, Expr eq) + { + for (auto a : assumptions) + { + if (a == eq) continue; + if (contains(a, e)) return true; + } + return false; + } + + void eliminateEqualities(Expr& goal) { ExprMap allrepls; for (auto it = assumptions.begin(); it != assumptions.end();) { Expr &a = *it; - if (isOpX(a) && allrepls[a->left()] == NULL && - isOpX (a->left()) && a->left()->arity () == 1 && - isOpX (a->right()) && a->right()->arity () == 1) + if (isOpX(a)) { - if (verbose) outs () << string(sp, ' ') << "replacing " << *a->left() - << " by " << * a->right() << " everywhere\n"; - allrepls[a->left()] = a->right(); - it = assumptions.erase(it); + ExprMap repls; + if (findAssmOccurs(a->left(), a) > 0 && a->left()->arity() == 1 + && !contains (a->right(), a->left())) + repls[a->left()] = a->right(); + else if (findAssmOccurs(a->right(), a) > 0 && a->right()->arity() == 1 + && !contains (a->left(), a->right())) + repls[a->right()] = a->left(); + + if (repls.empty()) ++it; + else + { + it = assumptions.erase(it); + for (int i = 0; i < assumptions.size(); i++) + assumptions[i] = replaceAll(assumptions[i], repls); + goal = replaceAll(goal, repls); + } } else ++it; } - if (allrepls.size() == 0) return goal; - - for (auto & a : assumptions) - { - if (!isOpX(a)) // TODO: support FORALLs properly - { - a = replaceAll(a, allrepls); - } - } - - return replaceAll(goal, allrepls); } bool mergeAssumptions(int bnd = -1) @@ -104,14 +148,6 @@ namespace ufo { Expr &a = assumptions[i]; a = simplifyBool(a); - if (isOpX(a)) - { - Expr newAssm = replaceAll(a, a->last(), normalizeImpl(a->last())); - if (newAssm != a) - { - assumptions.push_back(newAssm); - } - } } if (bnd == -1) bnd = mergingIts; // default val @@ -175,8 +211,9 @@ namespace ufo ExprVector result; if (useAssumption(assm, a, result, true)) { - for (auto & it : result) { + if (it == NULL) continue; + Expr tmp = it; if (!u.isTrue(tmp)) { @@ -611,18 +648,20 @@ namespace ufo ExprMap substs; substs[assm->right()] = assm->left(); substs[assm->left()] = assm->right(); + Expr tmp = replaceAll(a, substs, false); - Expr tmp = replaceAll(a, substs); if (u.implies(assm, mk(tmp, a))) - result.push_back(replaceAll(subgoal, a, tmp)); // very specific heuristic; works for multisets - return true; + { + result.push_back(replaceAll(subgoal, a, tmp)); // very specific heuristic; works for multisets + return true; + } if (a->last() != a->left()->last()) { substs[a->last()] = a->left()->last(); substs[a->left()->last()] = a->last(); } - result.push_back(replaceAll(subgoal, a, replaceAll(a, substs))); + result.push_back(replaceAll(subgoal, a, replaceAll(a, substs, false))); return true; } } @@ -668,27 +707,6 @@ namespace ufo } } } - // if nothing helped, return NULL -- it will be used for backtracking - return false; - } - - // this method is used when a strategy is specified from the command line - bool tryStrategy(Expr subgoal, vector& strat) - { - Expr subgoal_copy = subgoal; - for (int i : strat) - { - assert (i < assumptions.size()); - ExprVector result; - if (useAssumption(subgoal_copy, assumptions[i], result)) { - for (auto & it : result) { - subgoal_copy = it; - if (subgoal_copy == subgoal) break; - - if (u.isEquiv(subgoal_copy, mk(efac))) return true; - } - } - } return false; } @@ -742,7 +760,7 @@ namespace ufo uniquePushConj(subgoal->left(), assumptions); if (assumptions.size() != assumptionsTmp.size()) { - subgoal = eliminateEqualities(subgoal); + eliminateEqualities(subgoal); toRem = true; if (mergeAssumptions()) { @@ -768,54 +786,71 @@ namespace ufo subgoal = simplifyArithm(subgoal); subgoal = simplifyBool(subgoal); - ExprSet subSub; + + ExprSet subgoals; if (isOpX(subgoal)) { - subSub.insert(mk(subgoal->left(), subgoal->right())); - subSub.insert(mk(mkNeg(subgoal->left()), subgoal->last())); + subgoals.insert(mk(subgoal->left(), subgoal->right())); + subgoals.insert(mk(mkNeg(subgoal->left()), subgoal->last())); } else { - getConj(subgoal, subSub); + getConj(subgoal, subgoals); } - if (subSub.size() > 1) + if (subgoals.size() > 1) { - bool res = true; - int part = 1; - for (auto & s : subSub) + while (subgoals.size() > 0) { - if (verbose) + int subgoalsSize = subgoals.size(); + bool res = true; + int part = 1; + for (auto it = subgoals.begin(); it != subgoals.end();) { - if (verbose) outs () << string(sp, ' ') << "proceed with (part " << part << "/" << subSub.size()<< "): " << *s << "\n"; - part++; - } + Expr s = *it; + if (verbose) + { + outs () << string(sp, ' ') << "proceed with (part " << part << "/" << subgoalsSize << "): " << *s << "\n"; + part++; + } - auto rewriteHistoryTmp = rewriteHistory; - auto rewriteSequenceTmp = rewriteSequence; - auto assumptionsTmp = assumptions; + auto rewriteHistoryTmp = rewriteHistory; + auto rewriteSequenceTmp = rewriteSequence; + auto assumptionsTmp = assumptions; - if (verbose) outs() << string(sp, ' ') << "{\n"; - sp += 2; - res &= rewriteAssumptions(s); - sp -= 2; - if (verbose) outs() << string(sp, ' ') << "}\n"; + if (verbose) outs() << string(sp, ' ') << "{\n"; + sp += 2; + res &= rewriteAssumptions(s); // recursive call + sp -= 2; + if (verbose) outs() << string(sp, ' ') << "}\n"; - rewriteHistory = rewriteHistoryTmp; - rewriteSequence = rewriteSequenceTmp; - assumptions = assumptionsTmp; - if (!res) + rewriteHistory = rewriteHistoryTmp; + rewriteSequence = rewriteSequenceTmp; + assumptions = assumptionsTmp; + if (res) + { + outs () << string(sp, ' ') << "adding " << *s << " to assumptions\n"; + assumptions.push_back(s); + it = subgoals.erase(it); + } + else + { + ++it; + } + } + if (subgoals.size() == subgoalsSize) { - if (verbose) outs() << string(sp, ' ') << "failed to proceed\n"; - break; + if (verbose) outs() << string(sp, ' ') << "cannot prove " << subgoalsSize << " of the subgoals\n"; + return false; } + else if (verbose && subgoals.size() > 0) outs () << string(sp, ' ') << "will try subgoals again\n"; } - if (verbose) if (res) outs () << string(sp, ' ') << "rewriting done\n"; - return res; + if (verbose) outs () << string(sp, ' ') << "all subgoals are proven\n"; + return true; } - // here, assume subSub.size() == 1 - // thus, subgoal == *subSub.begin() + // here, assume subgoals.size() == 1 + // thus, subgoal == *subgoals.begin() // quick syntactic check first: for (int i = 0; i < assumptions.size(); i++) @@ -835,11 +870,11 @@ namespace ufo Expr a = assumptions[i]; ExprVector result; if (useAssumption(subgoal, a, result)) { - if (verbose) outs () << string(sp, ' ') << "found " << result.size() << " substitution(s) for assumption " << i << "\n"; +// if (verbose) outs () << string(sp, ' ') << "found " << result.size() << " substitution(s) for assumption " << i << "\n"; for (auto & it : result) { if (u.isTrue(it)) { - if (verbose) outs () << string(sp, ' ') << "rewritten [" << i << "]\n"; + if (verbose) outs () << string(sp, ' ') << "applied [" << i << "]\n"; return true; } } @@ -849,7 +884,7 @@ namespace ufo } } } - + { // vector orderedAttempts1; // vector orderedAttempts2; @@ -889,6 +924,7 @@ namespace ufo // if (!placed) orderedAttempts2.push_back(a.first); // } // } + } // first, try easier rewrites if (tryRewriting(allAttempts, subgoal)) @@ -920,7 +956,7 @@ namespace ufo bool tryRewriting(map& allAttempts, Expr subgoal) { for (auto & a : allAttempts) { - outs() << string(sp, ' ') << allAttempts.size() << "\n"; +// outs() << string(sp, ' ') << allAttempts.size() << "\n"; int i = a.first; for (auto & exp : a.second) { if (verbose) outs() << string(sp, ' ') << "rewritten [" << i << "]: " << *exp << "\n"; @@ -940,7 +976,18 @@ namespace ufo rewriteHistory.pop_back(); rewriteSequence.pop_back(); } - + + if (subgoal != exp) + { + // nested induction + auto assumptionsTmp = assumptions; + ADTSolver sol (exp, assumptionsTmp, constructors, maxDepth, maxGrow, mergingIts, earlySplit, false, useZ3, to); + if (sol.solveNoind(false)) + { + if (verbose) if (exp) outs () << string(sp, ' ') << "proven by induction: " << *exp << "\n"; + return true; + } + } // backtrack: if (verbose) outs () << string(sp, ' ') << "backtrack to: " << *subgoal << "\n"; } @@ -953,7 +1000,7 @@ namespace ufo auto assumptionsTmp = assumptions; uniquePushConj(mkNeg(subgoal), assumptions); bool res = false; - subgoal = eliminateEqualities(subgoal); + eliminateEqualities(subgoal); if (mergeAssumptions(1)) { res = true; @@ -990,7 +1037,7 @@ namespace ufo auto assumptionsTmp = assumptions; uniquePushConj(mkNeg(*spl), assumptions); - subgoal = eliminateEqualities(subgoal); + eliminateEqualities(subgoal); if (mergeAssumptions()) { assumptions = assumptionsTmp; @@ -1153,7 +1200,7 @@ namespace ufo part++; uniquePushConj(s, assumptions); - subgoal = eliminateEqualities(subgoal); + eliminateEqualities(subgoal); if (mergeAssumptions()) { assumptions = assumptionsTmp; @@ -1268,7 +1315,6 @@ namespace ufo } } - // this method can be (but not used currently) to add symmetric assumptions // and to enable searching for RHS of assumptions void insertSymmetricAssumption(Expr assm) { @@ -1299,7 +1345,7 @@ namespace ufo outs () << string(sp, ' ') << "}\n"; } - bool induction(int num, vector& basenums, vector& indnums) + bool induction(int num) { assert(num < goal->arity() - 1); Expr typeDecl = goal->arg(num); @@ -1329,51 +1375,36 @@ namespace ufo } if (verbose) outs() << "\nBase case: " << *baseSubgoal << "\n{\n"; - bool baseres = false; - baseSubgoal = eliminateEqualities(baseSubgoal); - if (mergeAssumptions()) + bool baseres = simpleSMTcheck(baseSubgoal); + if (baseres) { if (verbose) outs() << " proven trivially\n"; - baseres = true; - assumptions = assumptionsTmp; } else { - splitAssumptions(); - printAssumptions(); - - rewriteHistory.clear(); - rewriteSequence.clear(); - - baseres = basenums.empty() ? - rewriteAssumptions(baseSubgoal) : - tryStrategy(baseSubgoal, basenums); - } - - if (verbose) outs () << "}\n"; - if (!baseres) - { - ExprVector newArgs; - for (int i = 0; i < goal->arity() - 1; i++) - { - if (i == num) continue; - newArgs.push_back(goal->arg(i)); - } - if (newArgs.size() > 0) + eliminateEqualities(baseSubgoal); + if (mergeAssumptions()) { - if (verbose) outs () << "\nProceeding to nested induction\n"; - newArgs.push_back(replaceAll(goal->last(), typeDecl, baseConstructor)); - Expr newGoal = mknary(newArgs); - ADTSolver sol (newGoal, assumptions, constructors, maxDepth, maxGrow, earlySplit); - if (!sol.solve (basenums, indnums)) return false; - if (verbose) outs () << "\nReturning to the outer induction\n\n"; + if (verbose) outs() << " proven trivially\n"; + baseres = true; + assumptions = assumptionsTmp; } else { - return false; + splitAssumptions(); + printAssumptions(); + + rewriteHistory.clear(); + rewriteSequence.clear(); + + baseres = rewriteAssumptions(baseSubgoal); } } + if (verbose) outs () << "}\n"; + if (!baseres) baseres = doCaseSplitting(baseSubgoal); + if (!baseres) return false; + if (!assumptionsTmp.empty()) assumptions = assumptionsTmp; // generate inductive hypotheses @@ -1453,42 +1484,32 @@ namespace ufo indSubgoal = indSubgoal->right(); } - indSubgoal = eliminateEqualities(indSubgoal); + eliminateEqualities(indSubgoal); if (mergeAssumptions()) return true; splitAssumptions(); if (verbose) outs() << "Inductive step: " << * indSubgoal << "\n{\n"; - printAssumptions(); - rewriteHistory.clear(); rewriteSequence.clear(); - bool indres = indnums.empty() ? - rewriteAssumptions(indSubgoal) : - tryStrategy(indSubgoal, indnums); - if (verbose) outs () << "}\n"; - if (indres) return true; - - ExprVector newArgs; - for (int i = 0; i < goal->arity() - 1; i++) + bool indres = simpleSMTcheck(indSubgoal); + if (indres) { - if (i == num) continue; - newArgs.push_back(goal->arg(i)); + if (verbose) outs() << " proven trivially by Z3\n}\n"; + return true; } - - if (newArgs.size() > 0) + else { - if (verbose) outs () << "\nProceeding to nested induction\n"; - newArgs.push_back(replaceAll(goal->last(), bind::fapp(typeDecl), indConsApp)); - Expr newGoal = mknary(newArgs); - ADTSolver sol (newGoal, assumptions, constructors, maxDepth, maxGrow, earlySplit); - if (sol.solve (basenums, indnums)) return true; - if (verbose) outs () << "Nested induction unsuccessful\n\n"; + printAssumptions(); + indres = rewriteAssumptions(indSubgoal); + if (indres) + { + if (verbose) outs () << "}\n"; + return true; + } } - -// // last resort so far + // last resort so far return doCaseSplitting(indSubgoal); - return false; } bool doCaseSplitting(Expr goal) @@ -1524,44 +1545,53 @@ namespace ufo if (d != NULL) { assert(isOpX(d)); - printAssumptions(); - if (verbose) outs () << "case splitting for " << *d->left() << ":\n"; - if (verbose) outs () << " case " << *d << "\n{\n"; + if (verbose) outs () << string(sp, ' ') << "case splitting for " << *d->left() << ":\n"; + if (verbose) outs () << string(sp, ' ') << "case " << *d << "\n" << string(sp, ' ') << "{\n"; auto assumptionsTmp = assumptions; auto rewriteHistoryTmp = rewriteHistory; auto rewriteSequenceTmp = rewriteSequence; + auto goalTmp = goal; + goal = replaceAll(goal, d->left(), d->right()); for (int j = 0; j < assumptions.size(); j++) { assumptions[j] = simplifyBool(replaceAll(assumptions[j], pre, mk(efac))); assumptions[j] = replaceAll(assumptions[j], d->left(), d->right()); } - goal = eliminateEqualities(goal); + eliminateEqualities(goal); mergeAssumptions(1); + sp += 2; printAssumptions(); - bool partiallyDone = rewriteAssumptions(replaceAll(goal, d->left(), d->right())); + if (verbose) outs () << string(sp, ' ') << "current subgoal: " << *goal << "\n"; + bool partiallyDone = rewriteAssumptions(goal); + sp -= 2; assumptions = assumptionsTmp; rewriteHistory = rewriteHistoryTmp; rewriteSequence = rewriteSequenceTmp; + goal = goalTmp; if (!partiallyDone) continue; - if (verbose) outs() << "successful\n}\n"; + if (verbose) outs() << string(sp, ' ') << "}\n"; pre = mkNeg(pre); assert(isOpX(pre) && pre->left() == d->left()); - if (verbose) outs () << " case " << *pre << "\n{\n"; + if (verbose) outs () << string(sp, ' ') << "case " << *pre << "\n" << string(sp, ' ') << "{\n"; + goal = replaceAll(goal, pre->left(), pre->right()); for (int j = 0; j < assumptions.size(); j++) { assumptions[j] = simplifyBool(replaceAll(assumptions[j], pre, mk(efac))); assumptions[j] = replaceAll(assumptions[j], pre->left(), pre->right()); } - goal = eliminateEqualities(goal); + eliminateEqualities(goal); mergeAssumptions(1); + sp += 2; printAssumptions(); - bool done = rewriteAssumptions(replaceAll(goal, pre->left(), pre->right())); + if (verbose) outs () << string(sp, ' ') << "current subgoal: " << *goal << "\n"; + bool done = rewriteAssumptions(goal); + sp -= 2; assumptions = assumptionsTmp; rewriteHistory = rewriteHistoryTmp; @@ -1569,7 +1599,7 @@ namespace ufo if (done) { - if (verbose) outs() << "successful\n}\n"; + if (verbose) outs() << string(sp, ' ') << "\n}\n"; return true; } } @@ -1624,45 +1654,50 @@ namespace ufo return NULL; } - bool solveNoind(int rounds = 2) + bool solveNoind(int do_rewrite = true, int rounds = 2) { - auto assumptionsTmp = assumptions; - goal = eliminateEqualities(goal); - mergeAssumptions(rounds); - printAssumptions(); - if (verbose) outs () << "=====\n" << *goal << "\n\n\n"; - bool res = rewriteAssumptions(goal); - if (res) - { - if (verbose) outs () << "\nProved\n"; - } - else + if (do_rewrite) { + if (simpleSMTcheck(goal)) + { + outs () << "Proved\n"; + return true; + } + auto assumptionsTmp = assumptions; + eliminateEqualities(goal); + mergeAssumptions(rounds); + eliminateEqualities(goal); + printAssumptions(); + if (verbose) outs () << "=====\n" << *goal << "\n\n\n"; + if (rewriteAssumptions(goal)) + { + if (verbose) outs () << "\nProved\n"; + return true; + } // revert and try induction: assumptions = assumptionsTmp; - ExprSet qFreeAssms; - for (auto it = assumptions.begin(); it != assumptions.end(); ) + } + + ExprSet qFreeAssms; + for (auto it = assumptions.begin(); it != assumptions.end(); ) + { + if (!isOpX(*it)) { - if (!isOpX(*it)) - { - if (isOpX(*it) || isOpX(*it) || isOpX(*it) || isOpX(*it)) // super big hack + qFreeAssms.insert(*it); - it = assumptions.erase(it); - } - else ++it; + it = assumptions.erase(it); } - - if (verbose) outs () << "\nProving by induction\n"; - goal = createQuantifiedFormula(mk(conjoin(qFreeAssms, efac), goal), constructors); - - vector basenums, indnums; // dummies - res = solve(basenums, indnums); + else ++it; } - return res; + + if (verbose) outs () << "\nProving by induction\n"; + goal = createQuantifiedFormula(mk(conjoin(qFreeAssms, efac), goal), constructors); + if (isOpX(goal)) return solve(); + else return false; } - bool solve(vector& basenums, vector& indnums) + bool solve() { unfoldGoal(); rewriteHistory.push_back(goal); @@ -1690,51 +1725,32 @@ namespace ufo Expr type = goal->arg(i)->last(); if (baseConstructors[type] != NULL && indConstructors[type] != NULL) { - if (induction(i, basenums, indnums)) + if (induction(i)) { if (verbose) outs () << "\nProved\n"; return true; } - else - { - if (verbose) outs () << "\nFailed\n"; - return false; - } } } - return false; + bool res = simpleSMTcheck(goal); + if (verbose) + { + if (res) outs () << "Proved (with Z3)\n"; + else outs () << "Unknown\n"; + } + return res; } - }; - static inline void getNums(vector& nums, char * str) - { - if (str == NULL) return; - int len = strlen(str); - char* pch = strchr(str, ','); - int pos1 = 0; - int pos2 = 0; - while (pch != NULL) + bool simpleSMTcheck(Expr goal) { - pos2 = pch - str; - char* substr = (char*)malloc(pos2 - pos1); - strncpy(substr, str + pos1, pos2 - pos1); - nums.push_back(atoi(substr)); - pch = strchr(pch + 1, ','); - pos1 = pos2 + 1; + if (!useZ3) return false; + return u.implies(conjoin(assumptions, efac), goal); } - if (pos1 == len) return; - char* substr = (char*)malloc(len - pos1); - strncpy(substr, str + pos1, len - pos1); - nums.push_back(atoi(substr)); - } + }; - void adtSolve(EZ3& z3, Expr s, char* basecheck, char *indcheck, int maxDepth, - int maxGrow, int mergingIts, int earlySplit, bool verbose) + void adtSolve(EZ3& z3, Expr s, int maxDepth, + int maxGrow, int mergingIts, int earlySplit, bool verbose, int useZ3, int to) { - vector basenums; - vector indnums; - getNums(basenums, basecheck); - getNums(indnums, indcheck); ExprVector constructors; for (auto & a : z3.getAdtConstructors()) constructors.push_back(regularizeQF(a)); @@ -1762,8 +1778,8 @@ namespace ufo return; } - ADTSolver sol (goal, assumptions, constructors, maxDepth, maxGrow, mergingIts, earlySplit, verbose); - if (isOpX(goal)) sol.solve(basenums, indnums); + ADTSolver sol (goal, assumptions, constructors, maxDepth, maxGrow, mergingIts, earlySplit, verbose, useZ3, to); + if (isOpX(goal)) sol.solve(); else sol.solveNoind(); } } diff --git a/include/adt/CHCSolver.hpp b/include/adt/CHCSolver.hpp index 3552b834a..fe04cd9b3 100644 --- a/include/adt/CHCSolver.hpp +++ b/include/adt/CHCSolver.hpp @@ -3,53 +3,323 @@ #include "deep/HornNonlin.hpp" #include "ADTSolver.hpp" +#include using namespace std; using namespace boost; namespace ufo { + class CHCSolver { + private: + ExprFactory &efac; + ExprSet &adts; + + std::map values_inds; + ExprVector &constructors; + ExprVector assumptions; + + ExprSet &decls; + vector &chcs; + + public: + CHCSolver(ExprVector& _constructors, ExprSet& _adts, ExprFactory &_efac, ExprSet &_decls, vector &_chcs) : + constructors(_constructors), adts(_adts), efac(_efac), decls(_decls), chcs(_chcs) {} + + Expr createNewApp(HornRuleExt chc, int i, int ind) { + ExprVector types; + ExprVector newVars; + types.push_back(bind::typeOf(chc.srcVars[i][ind])); + for(int j = 0; j < chc.srcRelations[i]->arity() - 2; ++j) { + if (j != ind) { + Expr e = chc.srcRelations[i]->arg(j); + types.push_back(bind::typeOf(chc.srcVars[i][j])); + newVars.push_back(chc.srcVars[i][j]); + } + } + Expr rel = bind::fdecl (efac.mkTerm(chc.srcRelations[i]->left()->op()), types); + Expr app = bind::fapp (rel, newVars); + return app; + } + + void createLeftConjs(HornRuleExt chc, ExprVector & cnj) { + for (int i = 0; i < chc.srcRelations.size(); i++) { + if (decls.find(chc.srcRelations[i]) != decls.end()) { + size_t ind = values_inds[chc.srcRelations[i]->left()]; + Expr app = createNewApp(chc, i, ind); + Expr def = mk(app, chc.srcVars[i][ind]); + cnj.push_back(def); + } + else { + Expr tmp = bind::fapp (chc.srcRelations[i], chc.srcVars[i]); + cnj.push_back(tmp); + } + } + } + + bool findMatchingFromBodyElement(HornRuleExt chc, Expr body_elem, ExprMap &matching) { + if (body_elem->left()->arity() == 1 + && std::find(chc.dstVars.begin(), chc.dstVars.end(), body_elem->left()) != chc.dstVars.end()) { + matching[body_elem->left()] = body_elem->right(); + return true; + } + else if (body_elem->right()->arity() == 1 + && std::find(chc.dstVars.begin(), chc.dstVars.end(), body_elem->right()) != chc.dstVars.end()) { + matching[body_elem->right()] = body_elem->left(); + return true; + } + else { + for (auto & v : chc.dstVars) { + Expr ineq = ineqSimplifier(v, body_elem); + if (ineq->left() == v) { + matching[ineq->left()] = ineq->right(); + return true; + } + } + } + return false; + } + + // find possible substitutions from body (add to cnj otherwise) + void findMatchingFromBody(HornRuleExt chc, ExprMap &matching, ExprVector &cnj) { + if (chc.body->arity() > 1) { + for(int j = 0; j < chc.body->arity(); ++j) { + Expr body_elem = chc.body->arg(j); + if (!isOpX(body_elem) || !findMatchingFromBodyElement(chc, body_elem, matching)) { + cnj.push_back(body_elem); + } + } + } + else { + if (!isOpX(chc.body) || findMatchingFromBodyElement(chc, chc.body, matching)) { + cnj.push_back(chc.body); + } + } + } + + bool isConsctructor(Expr elem) { + return std::find(constructors.begin(), constructors.end(), elem) != constructors.end(); + } + + void findMatchingFromLeftSideElem(Expr elem, ExprMap &matching) { + if (isOpX(elem)) { + if (elem->left()->arity() == 1 && !(isConsctructor(bind::fname (elem->left())))) { + matching[elem->left()] = elem->right(); + } + else if (elem->right()->arity() == 1 && !(isConsctructor(bind::fname (elem->right())))) { + matching[elem->right()] = elem->left(); + } + } + } + + void findMatchingFromLeftSide(Expr left, ExprMap &matching) { + if (isOpX(left)) { + for (int i = 0; i < left->arity(); ++i) { + findMatchingFromLeftSideElem(left->arg(i), matching); + } + } + else { + findMatchingFromLeftSideElem(left, matching); + } + } + + Expr createDestination(HornRuleExt chc) { + size_t ind = values_inds[chc.dstRelation->left()]; + ExprVector types; + ExprVector newVars; + types.push_back(bind::typeOf(chc.dstVars[ind])); + for(int j = 0; j < chc.dstRelation->arity() - 2; ++j) { + if (j != ind) { + types.push_back(bind::typeOf(chc.dstVars[j])); + newVars.push_back(chc.dstVars[j]); + } + } + Expr rel = bind::fdecl (efac.mkTerm(chc.dstRelation->left()->op()), types); + Expr baseApp = bind::fapp (rel, newVars); + Expr destination = mk(baseApp, chc.dstVars[ind]); + return destination; + } + void solve() { + // find the return value for uninterpreted symbols (keep it in values_inds map) + for (auto & decl: decls) { + for (auto & chc : chcs) { + if (chc.dstRelation == decl && !chc.isFact) { + std::vector adt_inds; + size_t vars_size = chc.dstRelation->arity(); + bool found = false; + for (size_t i = vars_size - 2; i > 0; --i) { + bool is_adt = false; + for (auto & adt : adts) { + if ((*chc.dstRelation)[i] == adt) { + is_adt = true; + adt_inds.push_back(i - 1); + break; + } + } + if (!is_adt) { + values_inds[chc.dstRelation->left()] = i - 1; + found = true; + break; + } + } + if (!found) { + for (int i = 0; i < chc.srcRelations.size(); i++) { + if (chc.srcRelations[i] == decl) { + for (int j = 0; j < adt_inds.size(); ++j) { + size_t ind = adt_inds[j]; + Expr eq1 = mk(chc.srcVars[0][ind], chc.dstVars[ind]); + Expr eq2 = mk(chc.dstVars[ind], chc.srcVars[0][ind]); + if (!contains(chc.body, eq1) && !contains(chc.body, eq2)) { + values_inds[chc.dstRelation->left()] = ind; + break; + found = true; + } + } + break; + } + } + } + if (!found) { + values_inds[chc.dstRelation->left()] = vars_size - 3; + } + } + } + } + + // creating assumptions + for (auto & chc : chcs) { + if (!chc.isQuery) { + ExprVector cnj; + ExprMap matching; + createLeftConjs(chc, cnj); + findMatchingFromBody(chc, matching, cnj); + Expr destination = bind::fapp (chc.dstRelation, chc.dstVars); + size_t ind; + if (decls.find(chc.dstRelation) != decls.end()) { + destination = createDestination(chc); + } + Expr asmpt = mk(conjoin(cnj, efac), destination); + asmpt = replaceAll(asmpt, matching); + + // trying substitute equalities from left side to the right one + matching.clear(); + Expr left = asmpt->left(); + findMatchingFromLeftSide(left, matching); + asmpt = replaceAll(asmpt, matching); + asmpt = simplifyArithm(asmpt); + asmpt = simplifyBool(asmpt); + if (asmpt->arity() > 0) { + asmpt = createQuantifiedFormula(asmpt, constructors); + } + assumptions.push_back(asmpt); + } + } + + // creating queries for ADT-ind + for (auto & chc : chcs) { + if (chc.isQuery) { + Expr destination; + ExprVector cnj; + ExprMap matching; + if (chc.body->arity() > 1) { + for(int j = 0; j < chc.body->arity(); ++j) { + if (isOpX(chc.body->arg(j))) { + destination = mkNeg(chc.body->arg(j)); + } + else { + cnj.push_back(chc.body->arg(j)); + } + } + } + else { + destination = mkNeg(chc.body); + } + for (int i = 0; i < chc.srcRelations.size(); i++) { + if (decls.find(chc.srcRelations[i]) != decls.end()) { + size_t ind = values_inds[chc.srcRelations[i]->left()]; + Expr app = createNewApp(chc, i, ind); + matching[chc.srcVars[i][ind]] = app; + outs() << "match " << *chc.srcVars[i][ind] << " " << *app <<"\n"; + } + else { + Expr tmp = bind::fapp (chc.srcRelations[i], chc.srcVars[i]); + cnj.push_back(tmp); + } + } + + outs() << "goal1: " << *mk(conjoin(cnj, efac), destination) << "\n"; + Expr goal = replaceAll(mk(conjoin(cnj, efac), destination), matching); + outs() << "goal2: " << *goal << "\n"; + matching.clear(); + Expr left = goal->left(); + + findMatchingFromLeftSide(left, matching); + goal = replaceAll(goal, matching); + outs() << "goal3: " << *goal << "\n"; + goal = simplifyArithm(goal); + goal = simplifyBool(goal); + if (goal->arity() > 0) { + goal = createQuantifiedFormula(goal, constructors); + } + ExprVector current_assumptions = assumptions; + outs() << "print assumptions: " << "\n"; + for (auto & a : current_assumptions) { + outs() << *a << "\n"; + } + outs() << "goal:\n" << *goal << "\n\n"; + + ADTSolver sol (goal, current_assumptions, constructors); + sol.solve(); + } + else { + ExprVector cnj; + ExprMap matching; + createLeftConjs(chc, cnj); + findMatchingFromBody(chc, matching, cnj); + Expr destination = bind::fapp (chc.dstRelation, chc.dstVars); + ExprVector vars = chc.dstVars; + if (decls.find(chc.dstRelation) != decls.end()) { + destination = createDestination(chc); + } + Expr goal = mk(conjoin(cnj, efac), destination); + goal = replaceAll(goal, matching); + goal = simplifyArithm(goal); + goal = simplifyBool(goal); + ExprVector current_assumptions = assumptions; + + outs() << "\nprint assumptions: " << "\n"; + for (auto & a : current_assumptions) { + outs() << *a << "\n"; + } + outs() << "goal:\n" << *goal << "\n\n"; + ADTSolver adtSol (goal, current_assumptions, constructors); + adtSol.solveNoind(); + } + } + } + }; + void chcSolve(char * smt_file) { ExprFactory efac; EZ3 z3(efac); CHCs ruleManager(efac, z3); + ExprSet adts; ruleManager.parse(smt_file); ruleManager.print(); - // TODO: convert rules to recursive function and then to CHCs and call adt-ind - // e.g, smth like this: -// ExprVector constructors; -// ExprVector assumptions; -// ExprVector empt; -// for (auto & a : z3.getAdtConstructors()) constructors.push_back(regularizeQF(a)); -// -// Expr goal = mkNeg(ruleManager.chcs[ruleManager.qCHCNum].body); -// for (auto & a : ruleManager.chcs) -// { -// if (a.isQuery) -// { -// for (int i = 0; i < a.srcRelations.size(); i++) -// { -// Expr tmp = bind::fapp (a.srcRelations[i], a.srcVars[i]); -// assumptions.push_back(tmp); -// } -// goal = mkNeg(a.body); -// } -// else -// { -// ExprVector cnj; -// for (int i = 0; i < a.srcRelations.size(); i++) -// { -// Expr tmp = bind::fapp (a.srcRelations[i], a.srcVars[i]); -// cnj.push_back(tmp); -// } -// cnj.push_back(a.body); -// assumptions.push_back(createQuantifiedFormula( -// mk(conjoin(cnj, efac), bind::fapp (a.dstRelation, a.dstVars)), empt)); -// } -// } -// ADTSolver sol (goal, assumptions, constructors); -// sol.solveNoind(); + std::map values_inds; + ExprVector constructors; + ExprVector assumptions; + + ExprSet decls = ruleManager.decls; + + for (auto & a : z3.getAdtConstructors()) { + constructors.push_back(regularizeQF(a)); + adts.insert(a->last()); + } + + CHCSolver sol (constructors, adts, efac, decls, ruleManager.chcs); + sol.solve(); } } diff --git a/include/ae/ExprSimpl.hpp b/include/ae/ExprSimpl.hpp index edb9da2d7..9f817680a 100644 --- a/include/ae/ExprSimpl.hpp +++ b/include/ae/ExprSimpl.hpp @@ -1173,6 +1173,9 @@ namespace ufo if (isOpX(exp->right())) return mkNeg(exp->left()); + if (isOpX(exp->left())) + return exp->right(); + // return simplifyBool(mk( // mkNeg(exp->left()), // exp->right())); @@ -1799,6 +1802,7 @@ namespace ufo inline static Expr cloneVar(Expr var, Expr new_name) // ... and give a new_name to the clone { +// return replaceAll(var, var->left()->left(), new_name); if (bind::isIntConst(var)) return bind::intConst(new_name); else if (bind::isRealConst(var)) @@ -1807,8 +1811,8 @@ namespace ufo return bind::boolConst(new_name); else if (bind::isConst (var)) return bind::mkConst(new_name, mk ( - mk (new_name->getFactory()), - mk (new_name->getFactory()))); // GF: currently, only Arrays over Ints + var->left()->right()->left(), + var->left()->right()->right())); else if (bind::isAdtConst(var)) { ExprVector type; @@ -3931,8 +3935,22 @@ namespace ufo inline static Expr normalizeArithm (Expr exp) { + ExprSet complex; + findComplexNumerics(exp, complex); + ExprMap repls; + ExprMap replsRev; + for (auto & a : complex) + { + Expr repl = bind::intConst(mkTerm + ("__repl_" + lexical_cast(repls.size()), exp->getFactory())); + repls[a] = repl; + replsRev[repl] = a; + } + exp = replaceAll(exp, repls); RW rw(new NormalizeArithmExpr(exp->getFactory())); - return dagVisit (rw, exp); + exp = dagVisit (rw, exp); + exp = replaceAll(exp, replsRev); + return exp; } Expr static normalizeImplHlp (Expr e, ExprSet& lhs) @@ -3954,8 +3972,9 @@ namespace ufo return rhs; } - Expr static createQuantifiedFormulaRestr(Expr def, ExprVector& vars, bool forall = true) + Expr static createQuantifiedFormulaRestr (Expr def, ExprVector& vars, bool forall = true) { + if (vars.empty()) return def; ExprVector args; for (auto & a : vars) args.push_back(a->last()); args.push_back(def); @@ -3963,7 +3982,7 @@ namespace ufo else return mknary(args); } - Expr static createQuantifiedFormula(Expr def, ExprVector& toAvoid) + Expr static createQuantifiedFormula (Expr def, ExprVector& toAvoid) { ExprVector vars; filter(def, bind::IsConst (), inserter(vars, vars.begin())); @@ -3972,6 +3991,8 @@ namespace ufo it = vars.erase(it); else ++it; + if (vars.size() == 0) + return def; return createQuantifiedFormulaRestr(def, vars); } diff --git a/include/ae/SMTUtils.hpp b/include/ae/SMTUtils.hpp index 7145bc7ce..a6e955b93 100644 --- a/include/ae/SMTUtils.hpp +++ b/include/ae/SMTUtils.hpp @@ -20,10 +20,10 @@ namespace ufo public: SMTUtils (ExprFactory& _efac) : - efac(_efac), - z3(efac), - smt (z3) - {} + efac(_efac), z3(efac), smt (z3) {} + + SMTUtils (ExprFactory& _efac, unsigned _to) : + efac(_efac), z3(efac), smt (z3, _to) {} Expr getModel(Expr v) { @@ -324,6 +324,11 @@ namespace ufo return "Real"; else if (bind::isBoolConst(var)) return "Bool"; + else if (bind::isAdtConst(var)) + { + string str = lexical_cast(var->last()->last()); + return str.substr(1, str.length()-2); + } else if (bind::isConst (var)) { Expr name = mkTerm ("", var->getFactory()); diff --git a/include/ufo/Expr.hpp b/include/ufo/Expr.hpp index 099b6a2b7..46978a079 100644 --- a/include/ufo/Expr.hpp +++ b/include/ufo/Expr.hpp @@ -2329,10 +2329,12 @@ namespace expr if (isOp(v)) return typeOf(v->left()); if (isOpX(v)) return typeOf(v->last()); - if (isOpX(v)) return sort::arrayTy(typeOf(v->right()), typeOf(v->last())); - if (isOpX(v)) return typeOf(v->left())->right(); if (isOpX(v)) return sort::arrayTy(v->left(), typeOf(v->right())); + if (isAdtConst(v)) return v->last()->last(); + // std::cerr << "WARNING: could not infer type of: " << *v << "\n"; // assert (0 && "Unreachable"); return Expr(); @@ -2748,12 +2750,29 @@ namespace expr struct RAVALLM: public std::unary_function { - ExprMap& m; + ExprMap* m; + + RAVALLM (ExprMap* _m) : m(_m) { } + VisitAction operator() (Expr exp) const + { + auto it = m->find(exp); + if (it != m->end()) return VisitAction::changeTo (it->second); + return VisitAction::doKids (); + } + }; + + struct RAVALLMR: public std::unary_function + { + ExprMap* m; - RAVALLM (ExprMap& _m) : m(_m) { } + RAVALLMR (ExprMap* _m) : m(_m) { } VisitAction operator() (Expr exp) const { - if (m[exp] != NULL) return VisitAction::changeTo (m[exp]); + auto it = m->begin(); + while (it != m->end()) + if (it->second == exp) + return VisitAction::changeTo (it->first); + else ++it; return VisitAction::doKids (); } }; @@ -2990,15 +3009,36 @@ namespace expr inline Expr replaceAll (Expr exp, ExprVector& s, ExprVector& t) { assert(s.size() == t.size()); + if (s.empty()) return exp; RAVALL rav(&s, &t); - return dagVisit (rav, exp); + Expr tmp = dagVisit (rav, exp); + if (tmp == exp) return exp; + else return replaceAll(tmp, s, t); } // pairwise replacing - inline Expr replaceAll (Expr exp, ExprMap& m) + inline Expr replaceAll (Expr exp, ExprMap& m, bool rec = true, int iter = 0) { - RAVALLM rav(m); - return dagVisit (rav, exp); + if (iter == 1000) + { + std::cout << "WARNING: possible inifinite recursion in replaceAll\n"; + return exp; + } + if (m.empty()) return exp; + RAVALLM rav(&m); + Expr tmp = dagVisit (rav, exp); + if (tmp == exp || !rec) return exp; + else return replaceAll(tmp, m, rec, iter+1); + } + + // pairwise replacing + inline Expr replaceAllRev (Expr exp, ExprMap& m) + { + if (m.empty()) return exp; + RAVALLMR rav(&m); + Expr tmp = dagVisit (rav, exp); + if (tmp == exp) return exp; + else return replaceAllRev(tmp, m); } /** Replace all occurrences of s by t while simplifying the result */ diff --git a/include/ufo/Smt/Z3n.hpp b/include/ufo/Smt/Z3n.hpp index ac4e3b21c..286fdf371 100644 --- a/include/ufo/Smt/Z3n.hpp +++ b/include/ufo/Smt/Z3n.hpp @@ -544,8 +544,12 @@ namespace ufo ZSolver (Z &z) : z3(z), ctx (z.get_ctx ()), solver (z.get_ctx ()), efac (z.get_efac ()) {} - ZSolver (Z &z, const char *logic) : - z3(z), ctx (z.get_ctx ()), solver (z.get_ctx (), logic), efac (z.get_efac ()) {} + ZSolver (Z &z, unsigned to) : + z3(z), ctx (z.get_ctx ()), solver (z.get_ctx ()), efac (z.get_efac ()) { + ZParams p(z); + p.set("timeout", to); + solver.set(p); + } Z& getContext () {return z3;} void set (const ZParams &p) { solver.set (p); } diff --git a/tools/adt/Adt.cpp b/tools/adt/Adt.cpp index b14e9a289..af4f1fbd6 100644 --- a/tools/adt/Adt.cpp +++ b/tools/adt/Adt.cpp @@ -3,6 +3,15 @@ using namespace ufo; +bool getBoolValue(const char * opt, bool defValue, int argc, char ** argv) +{ + for (int i = 1; i < argc; i++) + { + if (strcmp(argv[i], opt) == 0) return true; + } + return defValue; +} + char * getStrValue(const char * opt, const char * defValue, int argc, char ** argv) { for (int i = 1; i < argc-1; i++) @@ -35,14 +44,14 @@ int main (int argc, char ** argv) ExprFactory efac; EZ3 z3(efac); char *infile = getSmtFileName(1, argc, argv); - char *basecheck = getStrValue("--base", NULL, argc, argv); - char *indcheck = getStrValue("--ind", NULL, argc, argv); int maxDepth = atoi(getStrValue("--max-depth", "7", argc, argv)); int maxGrow = atoi(getStrValue("--max-grow", "3", argc, argv)); int mergingIts = atoi(getStrValue("--merge-assms", "3", argc, argv)); int earlySplit = atoi(getStrValue("--early-split", "1", argc, argv)); + bool useZ3 = !getBoolValue("--no-z3", false, argc, argv); + unsigned to = atoi(getStrValue("--to", "1000", argc, argv)); Expr e = z3_from_smtlib_file (z3, infile); - adtSolve(z3, e, basecheck, indcheck, maxDepth, maxGrow, mergingIts, earlySplit, true); + adtSolve(z3, e, maxDepth, maxGrow, mergingIts, earlySplit, true, useZ3, to); return 0; } From 28de116cf9be7e0c3566c36868652a5f52334353 Mon Sep 17 00:00:00 2001 From: grigoryfedyukovich Date: Wed, 20 Jan 2021 21:03:42 -0500 Subject: [PATCH 24/40] migrated the ADT+ARR relational functionality --- bench_horn_adt/arr_map.smt2 | 55 ++ bench_horn_adt/arr_map_dup.smt2 | 49 ++ bench_horn_adt/arr_multiset.smt2 | 47 ++ bench_horn_adt/arr_multiset_clear.smt2 | 44 ++ bench_horn_adt/arr_queue.smt2 | 73 +++ bench_horn_adt/arr_queue_even.smt2 | 73 +++ bench_horn_adt/arr_set_remove.smt2 | 44 ++ bench_horn_adt/arr_set_removeall.smt2 | 45 ++ bench_horn_adt/arr_stack.smt2 | 60 +++ bench_horn_adt/arr_stack_even.smt2 | 60 +++ include/adt/ADTSolver.hpp | 69 ++- include/adt/CHCSolver.hpp | 105 +++- include/adt/SimSynt.hpp | 697 +++++++++++++++++++++++++ include/ae/ExprSimpl.hpp | 377 ++++++------- include/ae/SMTUtils.hpp | 10 +- include/deep/HornNonlin.hpp | 28 +- include/ufo/Expr.hpp | 22 +- 17 files changed, 1633 insertions(+), 225 deletions(-) create mode 100644 bench_horn_adt/arr_map.smt2 create mode 100644 bench_horn_adt/arr_map_dup.smt2 create mode 100644 bench_horn_adt/arr_multiset.smt2 create mode 100644 bench_horn_adt/arr_multiset_clear.smt2 create mode 100644 bench_horn_adt/arr_queue.smt2 create mode 100644 bench_horn_adt/arr_queue_even.smt2 create mode 100644 bench_horn_adt/arr_set_remove.smt2 create mode 100644 bench_horn_adt/arr_set_removeall.smt2 create mode 100644 bench_horn_adt/arr_stack.smt2 create mode 100644 bench_horn_adt/arr_stack_even.smt2 create mode 100644 include/adt/SimSynt.hpp diff --git a/bench_horn_adt/arr_map.smt2 b/bench_horn_adt/arr_map.smt2 new file mode 100644 index 000000000..693afdced --- /dev/null +++ b/bench_horn_adt/arr_map.smt2 @@ -0,0 +1,55 @@ +(set-logic HORN) +(declare-sort Key) +(declare-sort Value) +(declare-fun empty (Int) Value) + +(declare-datatypes () ((Pair (pair (key Key) (value Value))))) +(declare-datatypes () ((Lst (cons (head Pair) (tail Lst)) (nil)))) +(declare-fun R (Lst (Array Key Value)) Bool) + +(declare-fun get (Key Lst) Value) +(assert (forall ((x Key)) (= (get x nil) (empty 0)))) +(assert (forall ((x Key) (y Key) (z Value) (xs Lst)) + (= (get x (cons (pair y z) xs)) (ite (= x y) z (get x xs))))) + +(declare-fun set (Key Value Lst) Lst) +(assert (forall ((x Key) (v Value)) (= (set x v nil) (cons (pair x v) nil)))) +(assert (forall ((x Key) (v Value) (y Key) (z Value) (xs Lst)) + (= (set x v (cons (pair y z) xs)) + (ite (= x y) (cons (pair x v) xs) (cons (pair y z) (set x v xs)))))) + +(declare-fun remove (Key Lst) Lst) +(assert (forall ((x Key)) (= (remove x nil) nil))) +(assert (forall ((x Key) (y Key) (v Value) (xs Lst)) + (= (remove x (cons (pair y v) xs)) (ite (= x y) xs (cons (pair y v) (remove x xs)))))) + +; init +(assert (forall ((s (Array Key Value)) (xs Lst)) + (=> (and (forall ((a Key)) (= (empty 0) (select s a))) (= xs nil)) (R xs s)))) + +; insert-init +(assert (forall ((s (Array Key Value)) (s1 (Array Key Value)) (xs Lst) (xs1 Lst) (in Key) (v Value)) + (=> (and + (R xs s) + (= s1 (store s in v)) + (= xs1 (set in v xs))) + (R xs1 s1)))) + +; remove-init +(assert (forall ((s (Array Key Value)) (s1 (Array Key Value)) (xs Lst) (xs1 Lst) (in Key)) + (=> (and + (R xs s) + (= xs1 (remove in xs)) + (= s1 (store s in (empty 0)))) + (R xs1 s1)))) + +; contains-out +(assert (forall ((s (Array Key Value)) (xs Lst) (in Key) (out1 Value) (out2 Value)) + (=> (and + (R xs s) + (= out1 (select s in)) + (= out2 (get in xs)) + (not (= out1 out2))) + false))) + +(check-sat) diff --git a/bench_horn_adt/arr_map_dup.smt2 b/bench_horn_adt/arr_map_dup.smt2 new file mode 100644 index 000000000..08134c911 --- /dev/null +++ b/bench_horn_adt/arr_map_dup.smt2 @@ -0,0 +1,49 @@ +(set-logic HORN) +(declare-sort Key) +(declare-sort Value) +(declare-fun empty (Int) Value) + +(declare-datatypes () ((Pair (pair (key Key) (value Value))))) +(declare-datatypes () ((Lst (cons (head Pair) (tail Lst)) (nil)))) +(declare-fun R (Lst (Array Key Value)) Bool) + +(declare-fun get (Key Lst) Value) +(assert (forall ((x Key)) (= (get x nil) (empty 0)))) +(assert (forall ((x Key) (y Key) (z Value) (xs Lst)) + (= (get x (cons (pair y z) xs)) (ite (= x y) z (get x xs))))) + +(declare-fun removeall (Key Lst) Lst) +(assert (forall ((x Key)) (= (removeall x nil) nil))) +(assert (forall ((x Key) (y Key) (v Value) (xs Lst)) + (= (removeall x (cons (pair y v) xs)) (ite (= x y) (removeall x xs) (cons (pair y v) (removeall x xs)))))) + +; init +(assert (forall ((s (Array Key Value)) (xs Lst)) + (=> (and (forall ((a Key)) (= (empty 0) (select s a))) (= xs nil)) (R xs s)))) + +; insert-init +(assert (forall ((s (Array Key Value)) (s1 (Array Key Value)) (xs Lst) (xs1 Lst) (in Key) (v Value)) + (=> (and + (R xs s) + (= s1 (store s in v)) + (= xs1 (cons (pair in v) xs))) + (R xs1 s1)))) + +; remove-init +(assert (forall ((s (Array Key Value)) (s1 (Array Key Value)) (xs Lst) (xs1 Lst) (in Key)) + (=> (and + (R xs s) + (= xs1 (removeall in xs)) + (= s1 (store s in (empty 0)))) + (R xs1 s1)))) + +; contains-out +(assert (forall ((s (Array Key Value)) (xs Lst) (in Key) (out1 Value) (out2 Value)) + (=> (and + (R xs s) + (= out1 (select s in)) + (= out2 (get in xs)) + (not (= out1 out2))) + false))) + +(check-sat) diff --git a/bench_horn_adt/arr_multiset.smt2 b/bench_horn_adt/arr_multiset.smt2 new file mode 100644 index 000000000..e162dfbbb --- /dev/null +++ b/bench_horn_adt/arr_multiset.smt2 @@ -0,0 +1,47 @@ +(set-logic HORN) +(declare-sort Elem) +(declare-datatypes () ((Lst (cons (head Elem) (tail Lst)) (nil)))) +(declare-fun R (Lst (Array Elem Int)) Bool) + +(declare-fun num (Elem Lst) Int) +(assert (forall ((x Elem)) (= (num x nil) 0))) +(assert (forall ((x Elem) (y Elem) (xs Lst)) (= (num x (cons y xs)) (ite (= x y) (+ 1 (num x xs)) (num x xs))))) + +(declare-fun remove (Elem Lst) Lst) +(assert (forall ((x Elem)) (= (remove x nil) nil))) +(assert (forall ((x Elem) (y Elem) (xs Lst)) (= (remove x (cons y xs)) (ite (= x y) xs (cons y (remove x xs)))))) + +; extras +;(assert (forall ((s (Array Elem Int)) (x Elem)) (>= (select s x) 0))) +(assert (forall ((xs Lst) (a (Elem))) (=> (= 0 (num a xs)) (= (remove a xs) xs)))) + +; init +(assert (forall ((s (Array Elem Int)) (xs Lst)) + (=> (and (forall ((a Elem)) (= (select s a) 0)) (= xs nil)) (R xs s)))) + +; insert-init +(assert (forall ((s (Array Elem Int)) (s1 (Array Elem Int)) (xs Lst) (xs1 Lst) (in Elem)) + (=> (and + (R xs s) + (= s1 (store s in (+ 1 (select s in)))) + (= xs1 (cons in xs))) + (R xs1 s1)))) + +; remove-init +(assert (forall ((s (Array Elem Int)) (s1 (Array Elem Int)) (xs Lst) (xs1 Lst) (in Elem)) + (=> (and + (R xs s) + (= xs1 (remove in xs)) + (= s1 (ite (= (select s in) 0) s (store s in (- (select s in) 1))))) + (R xs1 s1)))) + +; contains-out +(assert (forall ((s (Array Elem Int)) (xs Lst) (in Elem) (out1 Int) (out2 Int)) + (=> (and + (R xs s) + (= out1 (select s in)) + (= out2 (num in xs)) + (not (= out1 out2))) + false))) + +(check-sat) diff --git a/bench_horn_adt/arr_multiset_clear.smt2 b/bench_horn_adt/arr_multiset_clear.smt2 new file mode 100644 index 000000000..9fb5ff935 --- /dev/null +++ b/bench_horn_adt/arr_multiset_clear.smt2 @@ -0,0 +1,44 @@ +(set-logic HORN) +(declare-sort Elem) +(declare-datatypes () ((Lst (cons (head Elem) (tail Lst)) (nil)))) +(declare-fun R (Lst (Array Elem Int)) Bool) + +(declare-fun num (Elem Lst) Int) +(assert (forall ((x Elem)) (= (num x nil) 0))) +(assert (forall ((x Elem) (y Elem) (xs Lst)) (= (num x (cons y xs)) (ite (= x y) (+ 1 (num x xs)) (num x xs))))) + +(declare-fun removeall (Elem Lst) Lst) +(assert (forall ((x Elem)) (= (removeall x nil) nil))) +(assert (forall ((x Elem) (y Elem) (xs Lst)) + (= (removeall x (cons y xs)) (ite (= x y) (removeall x xs) (cons y (removeall x xs)))))) + +; init +(assert (forall ((s (Array Elem Int)) (xs Lst)) + (=> (and (forall ((a Elem)) (= (select s a) 0)) (= xs nil)) (R xs s)))) + +; insert-init +(assert (forall ((s (Array Elem Int)) (s1 (Array Elem Int)) (xs Lst) (xs1 Lst) (in Elem)) + (=> (and + (R xs s) + (= s1 (store s in (+ 1 (select s in)))) + (= xs1 (cons in xs))) + (R xs1 s1)))) + +; remove-init +(assert (forall ((s (Array Elem Int)) (s1 (Array Elem Int)) (xs Lst) (xs1 Lst) (in Elem)) + (=> (and + (R xs s) + (= xs1 (removeall in xs)) + (= s1 (store s in 0))) + (R xs1 s1)))) + +; contains-out +(assert (forall ((s (Array Elem Int)) (xs Lst) (in Elem) (out1 Int) (out2 Int)) + (=> (and + (R xs s) + (= out1 (select s in)) + (= out2 (num in xs)) + (not (= out1 out2))) + false))) + +(check-sat) diff --git a/bench_horn_adt/arr_queue.smt2 b/bench_horn_adt/arr_queue.smt2 new file mode 100644 index 000000000..83b28f846 --- /dev/null +++ b/bench_horn_adt/arr_queue.smt2 @@ -0,0 +1,73 @@ +(set-logic HORN) +(declare-sort Elem) +(declare-datatypes () ((Lst (cons (head Elem) (tail Lst)) (nil)))) +(declare-fun R (Lst (Array Int Elem) Int Int) Bool) + +(declare-fun allbutlast (Lst) Lst) +(assert (forall ((x Elem)) (= (allbutlast (cons x nil)) nil))) +(assert (forall ((x Elem) (y Elem) (xs Lst)) (= (allbutlast (cons x (cons y xs))) (cons x (allbutlast (cons y xs)))))) + +(declare-fun last (Lst) Elem) +(assert (forall ((x Elem)) (= (last (cons x nil)) x))) +(assert (forall ((x Elem) (y Elem) (xs Lst)) (= (last (cons x (cons y xs))) (last (cons y xs))))) + +; init +(assert (forall ((xs Lst) (a (Array Int Elem)) (m Int) (n Int)) + (=> (and (= n m) (= xs nil)) (R xs a m n)))) + +; enqueue-init +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (m Int) (n Int) (m1 Int) (n1 Int) (in Elem)) + (=> (and + (R xs a m n) + (= a1 (store a n in)) + (= n1 (+ n 1)) + (= m1 m) + (= xs1 (cons in xs))) + (R xs1 a1 m1 n1)))) + +; dequeue-init +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (m Int) (n Int) (m1 Int) (n1 Int) (out1 Elem) (out2 Elem)) + (=> (and + (R xs a m n) + (< m n) + (= m1 (+ m 1)) + (= n1 n) + (= a1 a) + (= out1 (select a m)) + (distinct xs nil) + (= xs1 (allbutlast xs)) + (= out2 (last xs))) + (R xs1 a1 m1 n1)))) + +; dequeue-app-1 +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (m Int) (n Int) (m1 Int) (n1 Int) (out1 Elem) (out2 Elem)) + (=> (and + (R xs a m n) + (< m n) + (= xs nil)) + false))) + +; dequeue-app-2 +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (m Int) (n Int) (m1 Int) (n1 Int) (out1 Elem) (out2 Elem)) + (=> (and + (R xs a m n) + (not (= xs nil)) + (not (< m n))) + false))) + +; dequeue-out +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (m Int) (n Int) (m1 Int) (n1 Int) (out1 Elem) (out2 Elem)) + (=> (and + (R xs a m n) + (< m n) + (= m1 (+ m 1)) + (= n1 n) + (= a1 a) + (= out1 (select a m)) + (distinct xs nil) + (= xs1 (allbutlast xs)) + (= out2 (last xs)) + (not (= out1 out2))) + false))) + +(check-sat) diff --git a/bench_horn_adt/arr_queue_even.smt2 b/bench_horn_adt/arr_queue_even.smt2 new file mode 100644 index 000000000..1280fa2e0 --- /dev/null +++ b/bench_horn_adt/arr_queue_even.smt2 @@ -0,0 +1,73 @@ +(set-logic HORN) +(declare-sort Elem) +(declare-datatypes () ((Lst (cons (head Elem) (tail Lst)) (nil)))) +(declare-fun R (Lst (Array Int Elem) Int Int) Bool) + +(declare-fun allbutlast (Lst) Lst) +(assert (forall ((x Elem)) (= (allbutlast (cons x nil)) nil))) +(assert (forall ((x Elem) (y Elem) (xs Lst)) (= (allbutlast (cons x (cons y xs))) (cons x (allbutlast (cons y xs)))))) + +(declare-fun last (Lst) Elem) +(assert (forall ((x Elem)) (= (last (cons x nil)) x))) +(assert (forall ((x Elem) (y Elem) (xs Lst)) (= (last (cons x (cons y xs))) (last (cons y xs))))) + +; init +(assert (forall ((xs Lst) (a (Array Int Elem)) (m Int) (n Int)) + (=> (and (= n m) (= xs nil)) (R xs a m n)))) + +; enqueue-init +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (m Int) (n Int) (m1 Int) (n1 Int) (in Elem)) + (=> (and + (R xs a m n) + (= a1 (store a n in)) + (= n1 (+ n 2)) + (= m1 m) + (= xs1 (cons in xs))) + (R xs1 a1 m1 n1)))) + +; dequeue-init +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (m Int) (n Int) (m1 Int) (n1 Int) (out1 Elem) (out2 Elem)) + (=> (and + (R xs a m n) + (< m n) + (= m1 (+ m 2)) + (= n1 n) + (= a1 a) + (= out1 (select a m)) + (distinct xs nil) + (= xs1 (allbutlast xs)) + (= out2 (last xs))) + (R xs1 a1 m1 n1)))) + +; dequeue-app-1 +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (m Int) (n Int) (m1 Int) (n1 Int) (out1 Elem) (out2 Elem)) + (=> (and + (R xs a m n) + (< m n) + (= xs nil)) + false))) + +; dequeue-app-2 +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (m Int) (n Int) (m1 Int) (n1 Int) (out1 Elem) (out2 Elem)) + (=> (and + (R xs a m n) + (not (= xs nil)) + (not (< m n))) + false))) + +; dequeue-out +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (m Int) (n Int) (m1 Int) (n1 Int) (out1 Elem) (out2 Elem)) + (=> (and + (R xs a m n) + (< m n) + (= m1 (+ m 2)) + (= n1 n) + (= a1 a) + (= out1 (select a m)) + (distinct xs nil) + (= xs1 (allbutlast xs)) + (= out2 (last xs)) + (not (= out1 out2))) + false))) + +(check-sat) diff --git a/bench_horn_adt/arr_set_remove.smt2 b/bench_horn_adt/arr_set_remove.smt2 new file mode 100644 index 000000000..646d5f88c --- /dev/null +++ b/bench_horn_adt/arr_set_remove.smt2 @@ -0,0 +1,44 @@ +(set-logic HORN) +(declare-sort Elem) +(declare-datatypes () ((Lst (cons (head Elem) (tail Lst)) (nil)))) +(declare-fun R (Lst (Array Elem Bool)) Bool) + +(declare-fun contains (Elem Lst) Bool) +(assert (forall ((x Elem)) (= (contains x nil) false))) +(assert (forall ((x Elem) (y Elem) (xs Lst)) + (= (contains x (cons y xs)) (ite (= x y) true (contains x xs))))) + +(declare-fun remove (Elem Lst) Lst) +(assert (forall ((x Elem)) (= (remove x nil) nil))) +(assert (forall ((x Elem) (y Elem) (xs Lst)) (= (remove x (cons y xs)) (ite (= x y) xs (cons y (remove x xs)))))) + +; init +(assert (forall ((s (Array Elem Bool)) (xs Lst)) + (=> (and (forall ((a Elem)) (not (select s a))) (= xs nil)) (R xs s)))) + +; insert-init +(assert (forall ((s (Array Elem Bool)) (s1 (Array Elem Bool)) (xs Lst) (xs1 Lst) (in Elem)) + (=> (and + (R xs s) + (= s1 (store s in true)) + (= xs1 (ite (contains in xs) xs (cons in xs)))) + (R xs1 s1)))) + +; remove-init +(assert (forall ((s (Array Elem Bool)) (s1 (Array Elem Bool)) (xs Lst) (xs1 Lst) (in Elem)) + (=> (and + (R xs s) + (= xs1 (remove in xs)) + (= s1 (store s in false))) + (R xs1 s1)))) + +; contains-out +(assert (forall ((s (Array Elem Bool)) (xs Lst) (in Elem) (out1 Bool) (out2 Bool)) + (=> (and + (R xs s) + (= out1 (select s in)) + (= out2 (contains in xs)) + (not (= out1 out2))) + false))) + +(check-sat) diff --git a/bench_horn_adt/arr_set_removeall.smt2 b/bench_horn_adt/arr_set_removeall.smt2 new file mode 100644 index 000000000..ad48f6a50 --- /dev/null +++ b/bench_horn_adt/arr_set_removeall.smt2 @@ -0,0 +1,45 @@ +(set-logic HORN) +(declare-sort Elem) +(declare-datatypes () ((Lst (cons (head Elem) (tail Lst)) (nil)))) +(declare-fun R (Lst (Array Elem Bool)) Bool) + +(declare-fun contains (Elem Lst) Bool) +(assert (forall ((x Elem)) (= (contains x nil) false))) +(assert (forall ((x Elem) (y Elem) (xs Lst)) + (= (contains x (cons y xs)) (ite (= x y) true (contains x xs))))) + +(declare-fun removeall (Elem Lst) Lst) +(assert (forall ((x Elem)) (= (removeall x nil) nil))) +(assert (forall ((x Elem) (y Elem) (xs Lst)) + (= (removeall x (cons y xs)) (ite (= x y) (removeall x xs) (cons y (removeall x xs)))))) + +; init +(assert (forall ((s (Array Elem Bool)) (xs Lst)) + (=> (and (forall ((a Elem)) (not (select s a))) (= xs nil)) (R xs s)))) + +; insert-init +(assert (forall ((s (Array Elem Bool)) (s1 (Array Elem Bool)) (xs Lst) (xs1 Lst) (in Elem)) + (=> (and + (R xs s) + (= s1 (store s in true)) + (= xs1 (ite (contains in xs) xs (cons in xs)))) + (R xs1 s1)))) + +; remove-init +(assert (forall ((s (Array Elem Bool)) (s1 (Array Elem Bool)) (xs Lst) (xs1 Lst) (in Elem)) + (=> (and + (R xs s) + (= xs1 (removeall in xs)) + (= s1 (store s in false))) + (R xs1 s1)))) + +; contains-out +(assert (forall ((s (Array Elem Bool)) (xs Lst) (in Elem) (out1 Bool) (out2 Bool)) + (=> (and + (R xs s) + (= out1 (select s in)) + (= out2 (contains in xs)) + (not (= out1 out2))) + false))) + +(check-sat) diff --git a/bench_horn_adt/arr_stack.smt2 b/bench_horn_adt/arr_stack.smt2 new file mode 100644 index 000000000..d31b8623f --- /dev/null +++ b/bench_horn_adt/arr_stack.smt2 @@ -0,0 +1,60 @@ +(set-logic HORN) +(declare-sort Elem) +(declare-datatypes () ((Lst (cons (head Elem) (tail Lst)) (nil)))) +(declare-fun R (Lst (Array Int Elem) Int) Bool) + +; init +(assert (forall ((xs Lst) (a (Array Int Elem)) (n Int)) + (=> (and (= n 0) (= xs nil)) (R xs a n)))) + +; push-init +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (n Int) (n1 Int) (in Elem)) + (=> (and + (R xs a n) + (= a1 (store a n in)) + (= n1 (+ n 1)) + (= xs1 (cons in xs))) + (R xs1 a1 n1)))) + +; pop-init +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (n Int) (n1 Int) (out1 Elem) (out2 Elem)) + (=> (and + (R xs a n) + (> n 0) + (= n1 (- n 1)) + (= a1 a) + (= out1 (select a n1)) + (not (= xs nil)) + (= xs (cons out2 xs1))) + (R xs1 a1 n1)))) + +; pop-app-1 +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (n Int) (n1 Int) (out1 Elem) (out2 Elem)) + (=> (and + (R xs a n) + (> n 0) + (= xs nil)) + false))) + +; pop-app-2 +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (n Int) (n1 Int) (out1 Elem) (out2 Elem)) + (=> (and + (R xs a n) + (not (= xs nil)) + (not (> n 0))) + false))) + +; pop-out +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (n Int) (n1 Int) (out1 Elem) (out2 Elem)) + (=> (and + (R xs a n) + (> n 0) + (= n1 (- n 1)) + (= a1 a) + (= out1 (select a n1)) + (not (= xs nil)) + (= xs (cons out2 xs1)) + (not (= out1 out2))) + false))) + +(check-sat) diff --git a/bench_horn_adt/arr_stack_even.smt2 b/bench_horn_adt/arr_stack_even.smt2 new file mode 100644 index 000000000..46c6cc3eb --- /dev/null +++ b/bench_horn_adt/arr_stack_even.smt2 @@ -0,0 +1,60 @@ +(set-logic HORN) +(declare-sort Elem) +(declare-datatypes () ((Lst (cons (head Elem) (tail Lst)) (nil)))) +(declare-fun R (Lst (Array Int Elem) Int) Bool) + +; init +(assert (forall ((xs Lst) (a (Array Int Elem)) (n Int)) + (=> (and (= n 0) (= xs nil)) (R xs a n)))) + +; push-init +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (n Int) (n1 Int) (in Elem)) + (=> (and + (R xs a n) + (= a1 (store a n in)) + (= n1 (+ n 2)) + (= xs1 (cons in xs))) + (R xs1 a1 n1)))) + +; pop-init +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (n Int) (n1 Int) (out1 Elem) (out2 Elem)) + (=> (and + (R xs a n) + (> n 0) + (= n1 (- n 2)) + (= a1 a) + (= out1 (select a n1)) + (not (= xs nil)) + (= xs (cons out2 xs1))) + (R xs1 a1 n1)))) + +; pop-app-1 +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (n Int) (n1 Int) (out1 Elem) (out2 Elem)) + (=> (and + (R xs a n) + (> n 0) + (= xs nil)) + false))) + +; pop-app-2 +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (n Int) (n1 Int) (out1 Elem) (out2 Elem)) + (=> (and + (R xs a n) + (not (= xs nil)) + (not (> n 0))) + false))) + +; pop-out +(assert (forall ((xs Lst) (xs1 Lst) (a (Array Int Elem)) (a1 (Array Int Elem)) (n Int) (n1 Int) (out1 Elem) (out2 Elem)) + (=> (and + (R xs a n) + (> n 0) + (= n1 (- n 2)) + (= a1 a) + (= out1 (select a n1)) + (not (= xs nil)) + (= xs (cons out2 xs1)) + (not (= out1 out2))) + false))) + +(check-sat) diff --git a/include/adt/ADTSolver.hpp b/include/adt/ADTSolver.hpp index 1789375f3..c67f00975 100644 --- a/include/adt/ADTSolver.hpp +++ b/include/adt/ADTSolver.hpp @@ -101,14 +101,14 @@ namespace ufo return false; } - bool findAssmOccurs(Expr e, Expr eq) + bool findAssmOccurs(Expr goal, Expr e, Expr eq) { for (auto a : assumptions) { if (a == eq) continue; if (contains(a, e)) return true; } - return false; + return (contains(goal, e)); } void eliminateEqualities(Expr& goal) @@ -120,10 +120,10 @@ namespace ufo if (isOpX(a)) { ExprMap repls; - if (findAssmOccurs(a->left(), a) > 0 && a->left()->arity() == 1 + if (findAssmOccurs(goal, a->left(), a) > 0 && a->left()->arity() == 1 && !contains (a->right(), a->left())) repls[a->left()] = a->right(); - else if (findAssmOccurs(a->right(), a) > 0 && a->right()->arity() == 1 + else if (findAssmOccurs(goal, a->right(), a) > 0 && a->right()->arity() == 1 && !contains (a->left(), a->right())) repls[a->right()] = a->left(); @@ -803,7 +803,6 @@ namespace ufo while (subgoals.size() > 0) { int subgoalsSize = subgoals.size(); - bool res = true; int part = 1; for (auto it = subgoals.begin(); it != subgoals.end();) { @@ -814,22 +813,31 @@ namespace ufo part++; } - auto rewriteHistoryTmp = rewriteHistory; - auto rewriteSequenceTmp = rewriteSequence; - auto assumptionsTmp = assumptions; - - if (verbose) outs() << string(sp, ' ') << "{\n"; - sp += 2; - res &= rewriteAssumptions(s); // recursive call - sp -= 2; - if (verbose) outs() << string(sp, ' ') << "}\n"; - - rewriteHistory = rewriteHistoryTmp; - rewriteSequence = rewriteSequenceTmp; - assumptions = assumptionsTmp; - if (res) + bool tmpres = simpleSMTcheck(s); + if (tmpres) { - outs () << string(sp, ' ') << "adding " << *s << " to assumptions\n"; + if (verbose) outs() << string(sp, ' ') << "{\n" << string(sp+2, ' ') << + " proven trivially (with Z3)\n" << string(sp, ' ') << "}\n"; + } + else + { + auto rewriteHistoryTmp = rewriteHistory; + auto rewriteSequenceTmp = rewriteSequence; + auto assumptionsTmp = assumptions; + + if (verbose) outs() << string(sp, ' ') << "{\n"; + sp += 2; + tmpres = rewriteAssumptions(s); // recursive call + sp -= 2; + if (verbose) outs() << string(sp, ' ') << "}\n"; + + rewriteHistory = rewriteHistoryTmp; + rewriteSequence = rewriteSequenceTmp; + assumptions = assumptionsTmp; + } + if (tmpres) + { + if (verbose) outs () << string(sp, ' ') << "adding " << *s << " to assumptions\n"; assumptions.push_back(s); it = subgoals.erase(it); } @@ -1660,11 +1668,12 @@ namespace ufo { if (simpleSMTcheck(goal)) { - outs () << "Proved\n"; + if (verbose) outs () << "Proved (with Z3)\n"; return true; } - auto assumptionsTmp = assumptions; + splitAssumptions(); eliminateEqualities(goal); + auto assumptionsTmp = assumptions; mergeAssumptions(rounds); eliminateEqualities(goal); printAssumptions(); @@ -1679,12 +1688,22 @@ namespace ufo } ExprSet qFreeAssms; + Expr newGoal = NULL; for (auto it = assumptions.begin(); it != assumptions.end(); ) { if (!isOpX(*it)) { - if (isOpX(*it) || isOpX(*it) || isOpX(*it) || isOpX(*it) || isOpX(*it)) // super big hack + { qFreeAssms.insert(*it); + } + if (isOpX(*it)) + { + if (newGoal == NULL && isOpX(goal)) + goal = (*it)->last(); + else + qFreeAssms.insert(*it); + } it = assumptions.erase(it); } @@ -1779,8 +1798,8 @@ namespace ufo } ADTSolver sol (goal, assumptions, constructors, maxDepth, maxGrow, mergingIts, earlySplit, verbose, useZ3, to); - if (isOpX(goal)) sol.solve(); - else sol.solveNoind(); + bool res = isOpX(goal) ? sol.solve() : sol.solveNoind(); + outs () << (res ? "unsat\n" : "sat\n"); } } diff --git a/include/adt/CHCSolver.hpp b/include/adt/CHCSolver.hpp index fe04cd9b3..ce5925400 100644 --- a/include/adt/CHCSolver.hpp +++ b/include/adt/CHCSolver.hpp @@ -3,6 +3,7 @@ #include "deep/HornNonlin.hpp" #include "ADTSolver.hpp" +#include "SimSynt.hpp" #include using namespace std; @@ -16,14 +17,14 @@ namespace ufo std::map values_inds; ExprVector &constructors; - ExprVector assumptions; + ExprVector &assumptions; ExprSet &decls; vector &chcs; public: - CHCSolver(ExprVector& _constructors, ExprSet& _adts, ExprFactory &_efac, ExprSet &_decls, vector &_chcs) : - constructors(_constructors), adts(_adts), efac(_efac), decls(_decls), chcs(_chcs) {} + CHCSolver(ExprVector& _constructors, ExprSet& _adts, ExprFactory &_efac, ExprSet &_decls, ExprVector &_assms, vector &_chcs) : + constructors(_constructors), adts(_adts), efac(_efac), decls(_decls), assumptions(_assms), chcs(_chcs) {} Expr createNewApp(HornRuleExt chc, int i, int ind) { ExprVector types; @@ -138,7 +139,8 @@ namespace ufo Expr destination = mk(baseApp, chc.dstVars[ind]); return destination; } - void solve() { + + bool solve() { // find the return value for uninterpreted symbols (keep it in values_inds map) for (auto & decl: decls) { for (auto & chc : chcs) { @@ -268,7 +270,7 @@ namespace ufo outs() << "goal:\n" << *goal << "\n\n"; ADTSolver sol (goal, current_assumptions, constructors); - sol.solve(); + if (!sol.solve()) return false; } else { ExprVector cnj; @@ -292,9 +294,90 @@ namespace ufo } outs() << "goal:\n" << *goal << "\n\n"; ADTSolver adtSol (goal, current_assumptions, constructors); - adtSol.solveNoind(); + if (!adtSol.solveNoind()) return false; } } + return true; + } + + bool solveArr(){ + Expr decl = NULL; + for (auto & d : decls){ + if (containsOp(d)){ + if (decl == NULL) decl = d; + else return false; + } + } + Expr base; + ExprVector opsAdt, opsArr; + set visited; + ExprMap varVersions; + + ExprSet adts; + for (auto & c : constructors) adts.insert(c->last()); + + while (visited.size() != chcs.size()){ + for (int i = 0; i < chcs.size(); i++){ + if (find(visited.begin(), visited.end(), i) != visited.end()) continue; + auto &hr = chcs[i]; + + if (hr.isInductive && varVersions.empty()) + for (int j = 0; j < hr.srcVars[0].size(); j++) + varVersions[hr.srcVars[0][j]] = hr.dstVars[j]; + + if (hr.isFact && varVersions.empty()) continue; + + ExprSet tmp, tmpAdt, tmpArr; + getConj(hr.body, tmp); + for (auto & a : tmp){ + bool adt = false; + for (auto & c : adts) + if (contains(a, c)) { + tmpAdt.insert(a); + adt = true; + break; + } + if (!adt) tmpArr.insert(a); + } + assert (!tmpAdt.empty()); + + if (hr.isFact && !varVersions.empty()){ + base = replaceAllRev(conjoin(tmpArr, efac), varVersions); + } else { + opsAdt.push_back(conjoin(tmpAdt, efac)); + opsArr.push_back(conjoin(tmpArr, efac)); + } + visited.insert(i); + } + } + + // getting a candidate + SimSynt sim (efac, opsAdt, opsArr, varVersions, constructors, decl, assumptions, base); + sim.proc(); + + // proving + for (int i = 0; i < chcs.size(); i++){ + auto &hr = chcs[i]; + if (!checkCHC(chcs[i])) return false; + } + sim.printSol(); + return true; + } + + bool checkCHC(HornRuleExt& hr, bool print = false){ + ExprVector assms = assumptions; + Expr goal = hr.isQuery ? mk(efac) : bind::fapp (hr.dstRelation, hr.dstVars); + for (int i = 0; i < hr.srcRelations.size(); i++){ + assms.push_back(bind::fapp (hr.srcRelations[i], hr.srcVars[i])); + } + assms.push_back(hr.body); + return prove (assms, goal, 2, print); + } + + bool prove (ExprVector& lemmas, Expr fla, int rounds = 2, bool print = false) + { + ADTSolver sol (fla, lemmas, constructors, 5, 2, 3, 1, print); // last false is for verbosity + return isOpX(fla) ? sol.solve() : sol.solveNoind(rounds); } }; @@ -305,21 +388,21 @@ namespace ufo CHCs ruleManager(efac, z3); ExprSet adts; ruleManager.parse(smt_file); - ruleManager.print(); +// ruleManager.print(); - std::map values_inds; ExprVector constructors; ExprVector assumptions; - ExprSet decls = ruleManager.decls; + ExprSet& decls = ruleManager.decls; for (auto & a : z3.getAdtConstructors()) { constructors.push_back(regularizeQF(a)); adts.insert(a->last()); } - CHCSolver sol (constructors, adts, efac, decls, ruleManager.chcs); - sol.solve(); + CHCSolver sol (constructors, adts, efac, decls, ruleManager.extras, ruleManager.chcs); + bool res = containsOp(conjoin(decls, efac)) ? sol.solveArr() : sol.solve(); + outs () << (res ? "unsat\n" : "unknown\n"); } } diff --git a/include/adt/SimSynt.hpp b/include/adt/SimSynt.hpp new file mode 100644 index 000000000..69af5f4d5 --- /dev/null +++ b/include/adt/SimSynt.hpp @@ -0,0 +1,697 @@ +#ifndef SIMSYNT__HPP__ +#define SIMSYNT__HPP__ + +#include "adt/ADTSolver.hpp" + +using namespace std; +using namespace boost; +namespace ufo +{ + class SimSynt + { + private: + + ExprFactory &efac; + SMTUtils u; + ExprVector &opsAdt; + ExprVector &opsArr; + ExprVector& constructors; + ExprVector &assumptions; + Expr adtType; + Expr baseCon; + Expr indCon; + int indConIndex = -1; + ExprMap& varVersions; + Expr baseFormula; + int stateProducingOp = -1; + int stateConsumingOp = -1; + int stateNoOp = -1; + int arrVarInd = -1; + int indexVarInd = -1; + int adtVarInd = -1; + ExprVector nonstateVars; + ExprSet extras; // aux + Expr nestedRel; + ExprVector extraLemmas; + ExprVector types; + ExprVector vars; + ExprVector varsPrime; + ExprVector argsBase; + ExprVector argsInd; + Expr indexVar; + Expr rel; + map arrayContent; + Expr accessTerm; + Expr baseRule; + Expr indRule; + + public: + + SimSynt(ExprFactory& _efac, ExprVector& _ops1, ExprVector& _ops2, ExprMap& _v, + ExprVector& _c, Expr _r, ExprVector& _l, Expr _b) : + efac(_efac), u(_efac), opsAdt(_ops1), opsArr(_ops2), varVersions(_v), + constructors(_c), rel(_r), assumptions(_l), baseFormula(_b){} + + bool isBaseConstructor(Expr c, Expr type) + { + return (c->last() == type && c->arity() == 2); + } + + bool isIndConstructor(Expr c, Expr type) + { + if (c->last() != type) return false; + for (int j = 0; j < c->arity() - 1; j++) + if (c->last() == c->arg(j)) return true; + + return false; + } + + void checkConstructor(int i) + { + ExprSet allConstrs; + filter(opsAdt[i], bind::IsFApp (), inserter(allConstrs, allConstrs.begin())); + for (auto rit = allConstrs.rbegin(); rit != allConstrs.rend(); ++rit) + { + Expr capp = *rit; + for (auto & c : constructors) + { + if (capp->left() == c) + { + if (isIndConstructor(c, bind::typeOf(capp))) + { + // first comes first serve here (to be generalized) + if (indCon == NULL) + { + indCon = capp; + indConIndex = i; + } + bool found = false; + for (auto & v : varVersions) + found |= contains(capp, v.second); + + if (!found) + { + stateProducingOp = i; // TODO: check if several + } + else + { + stateConsumingOp = i; + } + return; + } + } + } + } + } + + int findStateConsumingOpInAssms() + { + for (int i = 0; i < opsAdt.size(); i++) + { + if (i == stateProducingOp) continue; + + ExprSet allConstrs; + filter(opsAdt[i], bind::IsFApp (), inserter(allConstrs, allConstrs.begin())); + + for (auto & a : allConstrs) + if (a->arity() > 1 && adtType == bind::typeOf(a)) + for (auto & l : assumptions) + { + // very specific test: search for a lemma of the following shape + // \forall x a(f(x)) = baseConstructor + if (isOpX(l) && isOpX(l->last()) && + isOpX(l->last()->left()) && contains(l->last()->left(), a->left()) && + isOpX(l->last()->right()) && + isBaseConstructor(l->last()->right()->left(), adtType)) + return i; + } + + } + return -1; + } + + int findStateProducingOpInAssms() + { + for (int i = 0; i < opsAdt.size(); i++) + { + if (i == stateConsumingOp) continue; + + ExprSet allConstrs; + filter(opsAdt[i], bind::IsFApp (), inserter(allConstrs, allConstrs.begin())); + + for (auto & a : allConstrs) + if (a->arity() > 1 && adtType == bind::typeOf(a)) + for (auto & l : assumptions) + // very specific test: search for a lemma of the following shape + // \forall x a(..) = indConstructor(...) + if (isOpX(l) && isOpX(l->last()) && + isOpX(l->last()->left()) && contains(l->last()->left(), a->left()) && + isOpX(l->last()->right()) && + isIndConstructor(l->last()->right()->left(), adtType)) + return i; + + } + return -1; + } + + Expr createQuantifiedFormula(Expr def) + { + ExprSet vars; + ExprVector args; + filter(def, bind::IsConst (), inserter(vars, vars.begin())); + for (auto & a : vars) if (a != baseCon) args.push_back(a->last()); + args.push_back(def); + return mknary(args); + } + + // relations based on linear scan (e.g., stack, queue) + void guessScanBasedRelations(Expr accessTerm) + { + assert(accessTerm != NULL); + bool traverseDirection = isConstPos(accessTerm); + + // calculate the least fixedpoint over the indexVar variable + // currently, a simple heuristic is used, but it can be extended + ExprSet guesses; + mutateHeuristic (baseFormula, guesses); + Expr invariant; + for (auto & g : guesses) + for (auto & g : guesses) + { + if (u.implies(baseFormula, g) && + u.implies (mk(g, opsArr[indConIndex]), replaceAll(g, varVersions))) + { + invariant = g; + break; + } + } + + // TODO: further, this invariant can be used to generate an auxiliary lemma + // e.g., \forall xs, n, A . R (xs, n, A) => invariant (n) + + // get the "precondition" for the inductive rule of R: + // it should follow the fixedpoint but inconsistent with + // the precondition for the base rule of R (captured in baseFormula) + assert (invariant != NULL); + Expr remainingCnj = mk(invariant, mkNeg(baseFormula)); + + // prepare for the nested call of R in the inductive rule of R + while (true) + { + int nestedInd = -1; + for (int j = 1; j < indCon->arity(); j++) + { + if (adtType == bind::typeOf(indCon->arg(j))) + { + if (isOpX(indCon->arg(j)) && isIndConstructor(indCon->arg(j)->left(), adtType)) + nestedInd = j; + } + else + nonstateVars.push_back(indCon->arg(j)); + } + if (nestedInd == -1) break; + else indCon = indCon->arg(nestedInd); + } + + // get arguments of the nested call of R + ExprVector argsIndNested = argsInd; + for (int j = 0; j < types.size(); j++) + { + if (adtType == types[j]) argsIndNested[j] = vars[j]; + if (argsInd[j] == indexVar + /*types[j] == bind::typeOf(indexVar)*/) argsIndNested[j] = accessTerm; + } + + // prepare the inductive definition of R (i.e., the RHS of the inductive rule) + ExprSet cnjs; + for (auto & a : nonstateVars) // need to match all non-state vars + { // (obtained from the array and the ADT) + auto it = arrayContent[a].begin(); + if (it == arrayContent[a].end()) continue; + Expr accessTermTmp = normalizeArithm(replaceAll(accessTerm, indexVar, *it)); + if (traverseDirection) + cnjs.insert(mk(a, mk(vars[arrVarInd], accessTermTmp))); + arrayContent[a].erase(it); + } + cnjs.insert(remainingCnj); + + // create a quantified formula representing the inductive rule + indRule = createQuantifiedFormula(generalizeInductiveDef(rel, argsInd, argsIndNested, cnjs)); + + // generate and prove extra lemmas + extraLemmas.push_back(createQuantifiedFormula(mk(bind::fapp (rel, vars), invariant))); + Expr newInd = bind::intConst(mkTerm (lexical_cast(indexVar) + "1", efac)); + ExprVector newVars = vars; + newVars[arrVarInd] = mk(vars[arrVarInd], newInd, *nonstateVars.begin()); + extraLemmas.push_back(createQuantifiedFormula(mk(mk( + (traverseDirection ? mk(newInd, indexVar) : mk(newInd, indexVar)), + bind::fapp (rel, vars)), bind::fapp (rel, newVars)))); + } + + // relations based on nonlinear scan and noops (e.g., sets, multisets) + void guessRelations(bool alt = true) + { + // prepare the inductive definition of R (i.e., the RHS of the inductive rule) + ExprSet cnjs; + ExprSet transitionsArr; + ExprSet transitionsAdt; + if (stateNoOp >= 0 && stateNoOp < opsAdt.size()) + { + Expr adtPred; + Expr arrPred; + + getConj(opsArr[stateNoOp], transitionsArr); + getConj(opsAdt[stateNoOp], transitionsAdt); + + if (transitionsArr.empty()) + { + for (auto trAdt : transitionsAdt) + { + if (isOpX(trAdt) && isOpX(trAdt->last())) // coming from the query + { + trAdt = trAdt->last(); + if (containsOp(trAdt->left()) && contains(trAdt->right(), adtType)) + { + adtPred = trAdt->right(); + arrPred = trAdt->left(); + } + else if (containsOp(trAdt->right()) && contains(trAdt->left(), adtType)) + { + adtPred = trAdt->left(); + arrPred = trAdt->right(); + } + } + } + } + else + { + for (auto trArr : transitionsArr) + { + for (auto trAdt : transitionsAdt) + { + if (isOpX(trArr) && isOpX(trAdt)) + { + if (trArr->left() == trAdt->left()) + { + adtPred = trAdt->right(); + arrPred = trArr->right(); + } + else if (trArr->right() == trAdt->right()) + { + adtPred = trAdt->left(); + arrPred = trArr->left(); + } + else if (trArr->left() == trAdt->right()) + { + adtPred = trAdt->left(); + arrPred = trArr->right(); + } + else if (trArr->right() == trAdt->left()) + { + adtPred = trAdt->right(); + arrPred = trArr->left(); + } + } + } + } + } + + if (adtPred != NULL && arrPred != NULL) + { + // prepare app for the definition of R + // unify vars + // step 1: find common occurrences in adtPred and arrPred: + + ExprSet c; + intersect(adtPred, arrPred, c); + assert (!c.empty()); + + // step 2: make sure body uses vars from c + // assume c.size() == 1; + Expr cVar = *c.begin(); + if (!contains(argsInd[adtVarInd], cVar)) + { + ExprVector av; + filter (argsInd[adtVarInd], bind::IsConst (), inserter(av, av.begin())); + for (auto & v : av) + { + if (bind::typeOf(v) == bind::typeOf(cVar)) + { + argsInd[adtVarInd] = replaceAll(argsInd[adtVarInd], v, cVar); + break; + } + } + } + + Expr app = bind::fapp (rel, argsInd); + + // prepare for the nested call of R in the inductive rule of R + ExprVector argsIndNested = argsInd; + for (int j = 0; j < types.size(); j++) + { + if (j == adtVarInd) + { + argsIndNested[j] = vars[j]; + } + else if (j == arrVarInd) + { + // TODO: make sure variables are unified + if (alt) + { + argsIndNested[j] = opsArr[indConIndex]->right(); + if (indConIndex == stateProducingOp) + { + Expr tmp = argsIndNested[j]; + tmp = swapPlusMinusConst(tmp); + if (tmp != argsIndNested[j]) + { + argsIndNested[j] = tmp; + } + else + { + // GF: hack, need a proper replacer + tmp = replaceAll(tmp, mk(efac), mk(efac)); + if (tmp != argsIndNested[j]) + { + argsIndNested[j] = tmp; + } + else + { + // complicated replacement based on noops + + ExprVector av; // sanity check + filter (adtPred, bind::IsConst (), inserter(av, av.begin())); + for (auto & a : av) assert (contains (app, a)); // TODO: proper renaming + + ExprSet c; + intersect(app, tmp, c); + for (auto & a : c) + { + if (bind::typeOf(adtPred) == bind::typeOf(a)) + { + tmp = replaceAll(tmp, a, adtPred); + if (tmp != argsIndNested[j]) + { + argsIndNested[j] = tmp; + break; + } + } + } + } + } + } + } + } + } + nestedRel = bind::fapp (rel, argsIndNested); + + Expr body = + simplifyFormulaWithLemmas( + replaceAll(mk(arrPred, adtPred), + vars[adtVarInd], argsInd[adtVarInd]), + assumptions, constructors); + + cnjs.insert(body); + cnjs.insert(nestedRel); + Expr inductiveDef = mk(app, conjoin(cnjs, efac)); + indRule = createQuantifiedFormula(inductiveDef); + extraLemmas.push_back(createQuantifiedFormula( + mk(bind::fapp (rel, vars), mk(arrPred, adtPred)))); + } + } + } + + Expr simplifyFormulaWithLemmas(Expr fla, ExprVector lemmas, ExprVector& constructors) + { + ADTSolver sol (fla, lemmas, constructors, 0, 0, 3, 0, false); + ExprSet newAssms; + sol.simplifyAssm(fla, newAssms); + if (newAssms.empty()) return fla; + ExprSet newAssmsSimpl; + for (auto & a : newAssms) newAssmsSimpl.insert(/*simplifyArithm*/(simplifyBool(a))); + return *newAssmsSimpl.begin(); // TODO: check if it is meaningful somehow + } + + void preprocessing() + { + assert(opsAdt.size() == opsArr.size()); + + for (int i = 0; i < opsAdt.size(); i++) checkConstructor(i); + + if (indCon == NULL) + { + for (auto & c : constructors) + { + for (int j = 0; j < c->arity() - 1; j++) + { + if (c->last() == c->arg(j)) + { + // found inductive constructor + Expr indConstructor = c; + ExprVector args; + for (int i = 1; i < indConstructor->arity() - 1; i++) + { + Expr s; + if (j == i) + { + // link to the already defined ADT (try guessing for now) + for (auto & p : varVersions) + { + if (containsOp(p.first)) + { + s = p.first; + break; + } + } + assert(s != NULL); + } + else + { + // should be a fresh (nonstate) var + + Expr singleCons = NULL; + for (auto & a : constructors) + { + if (a->last() == indConstructor->arg(i)) + { + if (singleCons != NULL) + { + singleCons = NULL; + break; + } + singleCons = a; + } + } + if (singleCons != NULL && !isIndConstructor(singleCons, indConstructor->arg(i))) + { + // unfold non-recursive definitions + ExprVector argsCons; + for (int j = 1; j < singleCons->arity() - 1; j++) + { + argsCons.push_back(bind::mkConst(mkTerm ("_x_" + to_string(j), efac), singleCons->arg(j))); + } + s = bind::fapp (singleCons, argsCons); + + } + else + { + s = bind::mkConst(mkTerm ("_x_" + to_string(i), efac), indConstructor->arg(i)); + } + } + args.push_back(s); + } + indCon = bind::fapp(indConstructor, args); + break; + } + } + } + } + + adtType = bind::typeOf(indCon); + ExprVector empt; + for (auto & a : constructors) if (a->arity() == 2) baseCon = bind::fapp (a, empt); + + assert(adtType == bind::typeOf(indCon)); + + if (stateProducingOp == -1) stateProducingOp = findStateProducingOpInAssms(); + if (stateConsumingOp == -1) stateConsumingOp = findStateConsumingOpInAssms(); + assert(stateProducingOp >= 0); + assert(stateConsumingOp >= 0); + if (indConIndex == -1) indConIndex = stateConsumingOp; // for the case of crafted ind constructors + + for (stateNoOp = 0; stateNoOp < opsAdt.size(); stateNoOp++) + { + if (stateNoOp != stateProducingOp && + stateNoOp != stateConsumingOp) + { + break; + } + } + assert(baseFormula != NULL); + + // get vars, types and arguments for rules of R + + for (auto & p : varVersions) + { + Expr v = p.first; + vars.push_back(v); + varsPrime.push_back(p.second); + indCon = replaceAll(indCon, p.second, v); + types.push_back(bind::typeOf(v)); + + if (bind::typeOf(v) == adtType) + { + argsBase.push_back(baseCon); + } + else + { + if (varVersions[v] == NULL) + { + outs () << "NO UNPRIMED VAR FOR " << *v <<"\n"; + return; + } + argsBase.push_back(v); + } + if (bind::typeOf(v) == adtType) + argsInd.push_back(indCon); // use the app of the constructor(s) as argument + else + argsInd.push_back(v); // use unprimed versions of other variables + } + + types.push_back (mk (efac)); + Expr baseApp = bind::fapp (rel, argsBase); + Expr baseDef = mk(baseApp, baseFormula); + // create a quantified formula representing the base rule of R + baseRule = createQuantifiedFormula(baseDef); + + // prepare for the inductive rule construction + ExprSet indexVars; + getCounters (opsArr[indConIndex], indexVars); + indexVar = *indexVars.begin(); // proceed with the least one + indexVar = replaceAllRev(indexVar, varVersions); + + // identify how elements in the arrays are accessed (i.e., the indexVar) + // and what content is stored to the array + ExprSet transitions; + getConj(opsArr[indConIndex], transitions); + for (auto tr : transitions) + { + if (contains (tr, indexVar) && !containsOp(tr) && isOpX(tr)) + { + tr = normalizeArithm(tr); + tr = ineqSimplifier(indexVar, tr); + assert(tr->left() == indexVar); + accessTerm = replaceAllRev(tr->right(), varVersions); + if (indConIndex == stateConsumingOp) // maybe will need to be treated more carefully + accessTerm = swapPlusMinusConst(accessTerm); + } + else + { + ExprSet cnj; + getConj(rewriteSelectStore(tr), cnj); + for (auto & a : cnj) + if (isOpX(a) && isOpX(argsInd[arrVarInd], + mk(argsInd[indexVarInd], cur))); + bool res = false; + for (auto it = cnjs.begin(); it != cnjs.end(); ) + { + if (u.implies(*it, a)) + { + res = true; + cnjs.erase(it); + break; + } + else ++it; + } + if (!res) + { + if (nonstateVars.size() > 1) + { + pre.insert(mk(mk(argsInd[indexVarInd], all), mkTerm (mpz_class (i), efac))); + } + } + } + + if (u.isTrue(mk(argsIndNested[indexVarInd], mk(argsInd[indexVarInd], all)))) + { + Expr newDecrement = mk(argsInd[indexVarInd], mkTerm (mpz_class (1), efac)); + pre.insert(mk(nonstateVars.back(), mk(exp)) { if (sels[exp] != NULL) return sels[exp]; - Expr repl = bind::intConst(mkTerm ("sel_" + lexical_cast(sels.size()), exp->getFactory())); + Expr repl = intConst(mkTerm ("sel_" + lexical_cast(sels.size()), exp->getFactory())); sels[exp] = repl; return repl; } @@ -2317,7 +2303,7 @@ namespace ufo { for (int i = 0; i < exp->arity() - 1; i++) { - vars.insert(bind::fapp(exp->arg(i))); + vars.insert(fapp(exp->arg(i))); } } return VisitAction::doKids (); @@ -2350,6 +2336,8 @@ namespace ufo for (auto & var : quantified) { ExprSet eqs; + Expr store; // todo: extend to ExprSet + for (unsigned it = 0; it < cnjs.size(); ) { Expr cnj = cnjs[it]; @@ -2361,9 +2349,13 @@ namespace ufo { normalized = simplifyArithm( mk(mk(cnj->arg(0), additiveInverse(cnj->arg(1))), - mkTerm (mpz_class (0), efac))); + mkMPZ (0, efac))); normalized = ineqSimplifier(var, normalized); } + else if (var == normalized->right()) + { + normalized = mk(normalized->right(), normalized->left()); + } // after the normalization, var can be eliminated if (!isOpX(normalized) || !contains(normalized, var)) @@ -2380,10 +2372,17 @@ namespace ufo else if (isOpX(normalized->left()) && isOpX(normalized->left()->left())) { cnjs.push_back(mk(mk(normalized->right(), normalized->left()->left()), - mkTerm (mpz_class (0), efac))); + mkMPZ (0, efac))); } } + if (store == NULL && containsOp(normalized) && isOpX(normalized) && + emptyIntersect(normalized->left(), quantified) && + isOpX(normalized->right()) && var == normalized->right()->left()) { + // one level of storing (to be extended) + store = normalized; + } + // errs() << "WARNING: COULD NOT NORMALIZE w.r.t. " << *var << ": " // << *normalized << " [[ " << *cnj << " ]]\n"; @@ -2391,15 +2390,43 @@ namespace ufo it++; } + if (store != NULL) { + // assume "store" = (A = store(var, x, y)) + for (unsigned it = 0; it < cnjs.size(); it++) { + ExprVector se; + filter (cnjs[it], IsSelect (), inserter(se, se.begin())); + for (auto s : se) { + if (contains(store, s)) continue; + if (s->left() == var) { + Expr cmp = simplifyCmp(mk(store->right()->right(), s->right())); + cnjs[it] = replaceAll(cnjs[it], s, simplifyIte( + mk(cmp, + store->right()->last(), + mk (e); + } + }; } } } @@ -3027,7 +3047,7 @@ namespace expr if (m.empty()) return exp; RAVALLM rav(&m); Expr tmp = dagVisit (rav, exp); - if (tmp == exp || !rec) return exp; + if (tmp == exp || !rec) return tmp; else return replaceAll(tmp, m, rec, iter+1); } From 49d0b802175a30e15ae34c36b1cc30bf11bd1573 Mon Sep 17 00:00:00 2001 From: grigoryfedyukovich Date: Thu, 21 Jan 2021 23:10:33 -0500 Subject: [PATCH 25/40] fixed function types, CHC preprocessing, nested induction --- bench_horn_adt/list_len_butlast.smt2 | 3 --- bench_horn_adt/list_len_stren.smt2 | 18 +++++++++++++++ include/adt/ADTSolver.hpp | 9 ++++---- include/adt/CHCSolver.hpp | 33 ++++++---------------------- include/deep/HornNonlin.hpp | 14 ++++++------ 5 files changed, 37 insertions(+), 40 deletions(-) create mode 100644 bench_horn_adt/list_len_stren.smt2 diff --git a/bench_horn_adt/list_len_butlast.smt2 b/bench_horn_adt/list_len_butlast.smt2 index bc4a92a9d..a65738cde 100644 --- a/bench_horn_adt/list_len_butlast.smt2 +++ b/bench_horn_adt/list_len_butlast.smt2 @@ -13,9 +13,6 @@ (assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst) (x Int) (zs Lst)) (=> (and (butlast xs rs) (= ys (cons n xs)) (= xs (cons x zs))) (butlast ys (cons n rs))))) -;extra lemma -(assert (forall ((xs Lst) (n Int) (ys Lst)) (=> (= ys (cons n xs)) (not (= ys nil))))) - (assert (forall ((xs Lst) (ys Lst) (zs Lst) (n Int) (l1 Int) (l2 Int)) (=> (and (= ys (cons n xs)) (butlast ys zs) (length ys l1) (length zs l2) (not (= (+ l2 1) l1))) false))) (check-sat) diff --git a/bench_horn_adt/list_len_stren.smt2 b/bench_horn_adt/list_len_stren.smt2 new file mode 100644 index 000000000..562c1b1dd --- /dev/null +++ b/bench_horn_adt/list_len_stren.smt2 @@ -0,0 +1,18 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun length (Lst Int) Bool) +(declare-fun length_str (Lst Int) Bool) + +(assert (length nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (length ys l)) (length xs (+ l 1))))) + +(assert (length_str nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l1 Int) (l2 Int)) + (=> (and (= xs (cons x ys)) (length ys l1) (length_str ys l2)) (length_str xs (+ l1 l2))))) + +(assert (forall ((l Int) (xs Lst)) + (=> (and (length_str xs l) (not (>= l 0))) false))) + +(check-sat) diff --git a/include/adt/ADTSolver.hpp b/include/adt/ADTSolver.hpp index c67f00975..06fc76ed2 100644 --- a/include/adt/ADTSolver.hpp +++ b/include/adt/ADTSolver.hpp @@ -37,11 +37,12 @@ namespace ufo bool useZ3 = false; unsigned to; ExprVector blockedAssms; + int nestedLevel; public: - ADTSolver(Expr _goal, ExprVector& _assumptions, ExprVector& _constructors, int _maxDepth = 5, int _maxGrow = 3, int _mergingIts = 3, int _earlySplit = 1, bool _verbose = false, bool _useZ3 = true, unsigned _to = 1000) : - goal(_goal), assumptions(_assumptions), constructors(_constructors), efac(_goal->getFactory()), u(_goal->getFactory(), _to), maxDepth(_maxDepth), maxGrow(_maxGrow), mergingIts(_mergingIts), earlySplit(_earlySplit), verbose(_verbose), useZ3(_useZ3), to (_to) + ADTSolver(Expr _goal, ExprVector& _assumptions, ExprVector& _constructors, int _maxDepth = 5, int _maxGrow = 3, int _mergingIts = 3, int _earlySplit = 1, bool _verbose = false, bool _useZ3 = true, unsigned _to = 1000, unsigned _l = 0) : + goal(_goal), assumptions(_assumptions), constructors(_constructors), efac(_goal->getFactory()), u(_goal->getFactory(), _to), maxDepth(_maxDepth), maxGrow(_maxGrow), mergingIts(_mergingIts), earlySplit(_earlySplit), verbose(_verbose), useZ3(_useZ3), to (_to), nestedLevel(_l) { // for convenience, rename assumptions (to have unique quantified variables) renameAssumptions(); @@ -985,11 +986,11 @@ namespace ufo rewriteSequence.pop_back(); } - if (subgoal != exp) + if (subgoal != exp && nestedLevel < maxGrow) { // nested induction auto assumptionsTmp = assumptions; - ADTSolver sol (exp, assumptionsTmp, constructors, maxDepth, maxGrow, mergingIts, earlySplit, false, useZ3, to); + ADTSolver sol (exp, assumptionsTmp, constructors, maxDepth, maxGrow, mergingIts, earlySplit, false, useZ3, to, nestedLevel+1); if (sol.solveNoind(false)) { if (verbose) if (exp) outs () << string(sp, ' ') << "proven by induction: " << *exp << "\n"; diff --git a/include/adt/CHCSolver.hpp b/include/adt/CHCSolver.hpp index ce5925400..e73291820 100644 --- a/include/adt/CHCSolver.hpp +++ b/include/adt/CHCSolver.hpp @@ -29,7 +29,6 @@ namespace ufo Expr createNewApp(HornRuleExt chc, int i, int ind) { ExprVector types; ExprVector newVars; - types.push_back(bind::typeOf(chc.srcVars[i][ind])); for(int j = 0; j < chc.srcRelations[i]->arity() - 2; ++j) { if (j != ind) { Expr e = chc.srcRelations[i]->arg(j); @@ -37,6 +36,7 @@ namespace ufo newVars.push_back(chc.srcVars[i][j]); } } + types.push_back(bind::typeOf(chc.srcVars[i][ind])); Expr rel = bind::fdecl (efac.mkTerm(chc.srcRelations[i]->left()->op()), types); Expr app = bind::fapp (rel, newVars); return app; @@ -127,13 +127,13 @@ namespace ufo size_t ind = values_inds[chc.dstRelation->left()]; ExprVector types; ExprVector newVars; - types.push_back(bind::typeOf(chc.dstVars[ind])); for(int j = 0; j < chc.dstRelation->arity() - 2; ++j) { if (j != ind) { types.push_back(bind::typeOf(chc.dstVars[j])); newVars.push_back(chc.dstVars[j]); } } + types.push_back(bind::typeOf(chc.dstVars[ind])); Expr rel = bind::fdecl (efac.mkTerm(chc.dstRelation->left()->op()), types); Expr baseApp = bind::fapp (rel, newVars); Expr destination = mk(baseApp, chc.dstVars[ind]); @@ -248,29 +248,17 @@ namespace ufo } } - outs() << "goal1: " << *mk(conjoin(cnj, efac), destination) << "\n"; Expr goal = replaceAll(mk(conjoin(cnj, efac), destination), matching); - outs() << "goal2: " << *goal << "\n"; matching.clear(); Expr left = goal->left(); findMatchingFromLeftSide(left, matching); goal = replaceAll(goal, matching); - outs() << "goal3: " << *goal << "\n"; - goal = simplifyArithm(goal); +// goal = simplifyArithm(goal); goal = simplifyBool(goal); - if (goal->arity() > 0) { - goal = createQuantifiedFormula(goal, constructors); - } ExprVector current_assumptions = assumptions; - outs() << "print assumptions: " << "\n"; - for (auto & a : current_assumptions) { - outs() << *a << "\n"; - } - outs() << "goal:\n" << *goal << "\n\n"; - - ADTSolver sol (goal, current_assumptions, constructors); - if (!sol.solve()) return false; + if (!prove (current_assumptions, goal)) + return false; } else { ExprVector cnj; @@ -287,14 +275,8 @@ namespace ufo goal = simplifyArithm(goal); goal = simplifyBool(goal); ExprVector current_assumptions = assumptions; - - outs() << "\nprint assumptions: " << "\n"; - for (auto & a : current_assumptions) { - outs() << *a << "\n"; - } - outs() << "goal:\n" << *goal << "\n\n"; - ADTSolver adtSol (goal, current_assumptions, constructors); - if (!adtSol.solveNoind()) return false; + if (!prove (current_assumptions, goal)) + return false; } } return true; @@ -357,7 +339,6 @@ namespace ufo // proving for (int i = 0; i < chcs.size(); i++){ - auto &hr = chcs[i]; if (!checkCHC(chcs[i])) return false; } sim.printSol(); diff --git a/include/deep/HornNonlin.hpp b/include/deep/HornNonlin.hpp index c42be2f5a..3b2687129 100755 --- a/include/deep/HornNonlin.hpp +++ b/include/deep/HornNonlin.hpp @@ -240,7 +240,6 @@ namespace ufo Expr body = r->arg(0); Expr head = r->arg(1); - vector origSrcSymbs; ExprSet lin; preprocess(body, hr.locVars, origSrcSymbs, hr.srcRelations, lin); @@ -291,12 +290,6 @@ namespace ufo allOrigSymbs.insert(allOrigSymbs.end(), origDstSymbs.begin(), origDstSymbs.end()); //simplBoolReplCnj(allOrigSymbs, lin); // perhaps, not a very important optimization now; consider removing hr.body = conjoin(lin, m_efac); - if (isOpX(hr.body) || (hr.srcRelations.size() == 0 && hr.isQuery)) - { - extras.push_back(r1); - chcs.pop_back(); - continue; - } vector tmp; // we may have several applications of the same predicate symbol in the body: @@ -325,6 +318,13 @@ namespace ufo hr.assignVarsAndRewrite (origSrcSymbs, tmp, origDstSymbs, invVars[hr.dstRelation]); + if (isOpX(hr.body) || (hr.srcRelations.size() == 0 && hr.isQuery)) + { + extras.push_back(r1); + chcs.pop_back(); + continue; + } + hr.body = simpleQE(hr.body, hr.locVars); ExprVector body_vars; expr::filter (hr.body, bind::IsConst(), std::inserter (body_vars, body_vars.begin ())); From 78559f4fc475dd734d08cd638e6c7186495fee1b Mon Sep 17 00:00:00 2001 From: LChernigovskaya Date: Thu, 1 Apr 2021 16:47:56 +0300 Subject: [PATCH 26/40] New implementation of Adt-Chc (#16) * fixed the null pointer dereference * reading ADT-constraints as CHCs * fixed ADT preprocessing * Convert CHCs to assumptions and goal for adt-ind * Fix generating goal * Swap equality arguments * enhanced equality elimination + minor fixes * enabled fast SMT implication checks w/timeouts; disabled user-strategies * Add some benchmarks * Try forall for goal * improved nested induction and subgoal handling * Add substitutions in assumptions * Improve substitutions * Create ADT query for all CHCs * Some code refactorings * Copy assumptions before calling adt * Add check that replaced element is not constructor * Keep the last value for return if cannot find anything * Add new benchmarks and some improvements * Support case when only one variable * Add benchmarks from LEON * add extra lemmas to assumptions * Make changes for Eldarica * Add benchmarks from LEON for adtChc * filter decl ignore function with one argument * fix benchmarks * Support choosing return values * got rid of the LLVM dependency (cherry picked from commit 4aa4e9b911df4fe7e43ade731f45ff0b9ce93e78) * Use Z3Prover/z3 repository * Fix bsearch-tree10 benchmark * Rename benchmarks Co-authored-by: grigoryfedyukovich --- CMakeLists.txt | 69 +--- bench_adt/LEON/amortize-queue-goal1.smt2 | 68 ++++ bench_adt/LEON/amortize-queue-goal10.smt2 | 95 +++++ bench_adt/LEON/amortize-queue-goal11.smt2 | 98 ++++++ bench_adt/LEON/amortize-queue-goal12.smt2 | 101 ++++++ bench_adt/LEON/amortize-queue-goal13.smt2 | 104 ++++++ bench_adt/LEON/amortize-queue-goal14.smt2 | 107 ++++++ bench_adt/LEON/amortize-queue-goal15.smt2 | 110 ++++++ bench_adt/LEON/amortize-queue-goal2.smt2 | 71 ++++ bench_adt/LEON/amortize-queue-goal3.smt2 | 74 ++++ bench_adt/LEON/amortize-queue-goal4.smt2 | 77 +++++ bench_adt/LEON/amortize-queue-goal5.smt2 | 80 +++++ bench_adt/LEON/amortize-queue-goal6.smt2 | 83 +++++ bench_adt/LEON/amortize-queue-goal7.smt2 | 86 +++++ bench_adt/LEON/amortize-queue-goal8.smt2 | 89 +++++ bench_adt/LEON/amortize-queue-goal9.smt2 | 92 +++++ bench_adt/LEON/bsearch-tree-goal1.smt2 | 87 +++++ bench_adt/LEON/bsearch-tree-goal10.smt2 | 114 ++++++ bench_adt/LEON/bsearch-tree-goal11.smt2 | 117 +++++++ bench_adt/LEON/bsearch-tree-goal12.smt2 | 120 +++++++ bench_adt/LEON/bsearch-tree-goal13.smt2 | 123 +++++++ bench_adt/LEON/bsearch-tree-goal14.smt2 | 126 +++++++ bench_adt/LEON/bsearch-tree-goal15.smt2 | 129 +++++++ bench_adt/LEON/bsearch-tree-goal16.smt2 | 132 +++++++ bench_adt/LEON/bsearch-tree-goal17.smt2 | 135 ++++++++ bench_adt/LEON/bsearch-tree-goal18.smt2 | 138 ++++++++ bench_adt/LEON/bsearch-tree-goal2.smt2 | 90 +++++ bench_adt/LEON/bsearch-tree-goal3.smt2 | 93 +++++ bench_adt/LEON/bsearch-tree-goal4.smt2 | 96 +++++ bench_adt/LEON/bsearch-tree-goal5.smt2 | 99 ++++++ bench_adt/LEON/bsearch-tree-goal6.smt2 | 102 ++++++ bench_adt/LEON/bsearch-tree-goal7.smt2 | 105 ++++++ bench_adt/LEON/bsearch-tree-goal8.smt2 | 108 ++++++ bench_adt/LEON/bsearch-tree-goal9.smt2 | 111 ++++++ bench_adt/LEON/heap-goal1.smt2 | 91 +++++ bench_adt/LEON/heap-goal10.smt2 | 118 +++++++ bench_adt/LEON/heap-goal11.smt2 | 121 +++++++ bench_adt/LEON/heap-goal12.smt2 | 124 +++++++ bench_adt/LEON/heap-goal13.smt2 | 127 +++++++ bench_adt/LEON/heap-goal2.smt2 | 94 +++++ bench_adt/LEON/heap-goal3.smt2 | 97 ++++++ bench_adt/LEON/heap-goal4.smt2 | 100 ++++++ bench_adt/LEON/heap-goal5.smt2 | 103 ++++++ bench_adt/LEON/heap-goal6.smt2 | 106 ++++++ bench_adt/LEON/heap-goal7.smt2 | 109 ++++++ bench_adt/LEON/heap-goal8.smt2 | 112 ++++++ bench_adt/LEON/heap-goal9.smt2 | 115 ++++++ bench_horn_adt/{ => ADTIND}/heap_size.smt2 | 0 bench_horn_adt/ADTIND/list_append_ass.smt2 | 12 + .../{ => ADTIND}/list_append_len.smt2 | 0 .../{ => ADTIND}/list_append_nil.smt2 | 0 .../{ => ADTIND}/list_interleave.smt2 | 0 bench_horn_adt/{ => ADTIND}/list_len.smt2 | 1 - .../{ => ADTIND}/list_len_butlast.smt2 | 0 .../{ => ADTIND}/list_len_stren.smt2 | 0 bench_horn_adt/ADTIND/list_rev.smt2 | 20 ++ bench_horn_adt/ADTIND/list_rev2_append.smt2 | 21 ++ .../{ => ADTIND}/list_rev2_len.smt2 | 0 bench_horn_adt/ADTIND/list_rev_append.smt2 | 22 ++ bench_horn_adt/ADTIND/queue_amort.smt2 | 40 +++ bench_horn_adt/ADTIND/queue_len.smt2 | 43 +++ bench_horn_adt/ADTIND/queue_popback.smt2 | 44 +++ bench_horn_adt/ADTIND/queue_push.smt2 | 47 +++ bench_horn_adt/ADTIND/queue_push_to_list.smt2 | 51 +++ .../tree_insert_all_size.smt2} | 6 +- bench_horn_adt/ADTIND/tree_insert_size.smt2 | 21 ++ bench_horn_adt/{ => ADTIND}/tree_size.smt2 | 0 bench_horn_adt/LEON/amortize-queue-goal1.smt2 | 19 + .../LEON/amortize-queue-goal10.smt2 | 19 + .../LEON/amortize-queue-goal11.smt2 | 15 + .../LEON/amortize-queue-goal12.smt2 | 41 +++ .../LEON/amortize-queue-goal13.smt2 | 53 +++ .../LEON/amortize-queue-goal14.smt2 | 56 +++ .../LEON/amortize-queue-goal15.smt2 | 63 ++++ bench_horn_adt/LEON/amortize-queue-goal2.smt2 | 25 ++ bench_horn_adt/LEON/amortize-queue-goal3.smt2 | 36 ++ bench_horn_adt/LEON/amortize-queue-goal4.smt2 | 26 ++ bench_horn_adt/LEON/amortize-queue-goal5.smt2 | 21 ++ bench_horn_adt/LEON/amortize-queue-goal6.smt2 | 51 +++ bench_horn_adt/LEON/amortize-queue-goal7.smt2 | 62 ++++ bench_horn_adt/LEON/amortize-queue-goal8.smt2 | 15 + bench_horn_adt/LEON/amortize-queue-goal9.smt2 | 32 ++ bench_horn_adt/LEON/bsearch-tree-goal1.smt2 | 36 ++ bench_horn_adt/LEON/bsearch-tree-goal10.smt2 | 34 ++ bench_horn_adt/LEON/bsearch-tree-goal11.smt2 | 41 +++ bench_horn_adt/LEON/bsearch-tree-goal12.smt2 | 28 ++ bench_horn_adt/LEON/bsearch-tree-goal13.smt2 | 36 ++ bench_horn_adt/LEON/bsearch-tree-goal14.smt2 | 50 +++ bench_horn_adt/LEON/bsearch-tree-goal2.smt2 | 32 ++ bench_horn_adt/LEON/bsearch-tree-goal3.smt2 | 36 ++ bench_horn_adt/LEON/bsearch-tree-goal4.smt2 | 45 +++ bench_horn_adt/LEON/bsearch-tree-goal5.smt2 | 50 +++ bench_horn_adt/LEON/bsearch-tree-goal6.smt2 | 26 ++ bench_horn_adt/LEON/bsearch-tree-goal8.smt2 | 31 ++ bench_horn_adt/LEON/bsearch-tree-goal9.smt2 | 26 ++ bench_horn_adt/{ => arrays}/arr_map.smt2 | 0 bench_horn_adt/{ => arrays}/arr_map_dup.smt2 | 0 bench_horn_adt/{ => arrays}/arr_multiset.smt2 | 0 .../{ => arrays}/arr_multiset_clear.smt2 | 0 bench_horn_adt/{ => arrays}/arr_queue.smt2 | 0 .../{ => arrays}/arr_queue_even.smt2 | 0 .../{ => arrays}/arr_set_remove.smt2 | 0 .../{ => arrays}/arr_set_removeall.smt2 | 0 bench_horn_adt/{ => arrays}/arr_stack.smt2 | 0 .../{ => arrays}/arr_stack_even.smt2 | 0 bench_horn_adt/list_remove.smt2 | 26 ++ bench_horn_adt/remove_not_contained.smt2 | 25 ++ include/adt/ADTSolver.hpp | 3 +- include/adt/CHCSolver.hpp | 327 ++++++++++++++---- include/ufo/Expr.hpp | 3 + include/ufo/ExprLlvm.hpp | 205 +---------- include/ufo/Smt/Z3n.hpp | 137 ++++---- include/ufo/Smt/ZExprConverter.hpp | 5 +- tools/adt/CHC.cpp | 13 +- tools/adt/CMakeLists.txt | 1 - tools/aeval/CMakeLists.txt | 1 - 116 files changed, 6514 insertions(+), 411 deletions(-) create mode 100644 bench_adt/LEON/amortize-queue-goal1.smt2 create mode 100644 bench_adt/LEON/amortize-queue-goal10.smt2 create mode 100644 bench_adt/LEON/amortize-queue-goal11.smt2 create mode 100644 bench_adt/LEON/amortize-queue-goal12.smt2 create mode 100644 bench_adt/LEON/amortize-queue-goal13.smt2 create mode 100644 bench_adt/LEON/amortize-queue-goal14.smt2 create mode 100644 bench_adt/LEON/amortize-queue-goal15.smt2 create mode 100644 bench_adt/LEON/amortize-queue-goal2.smt2 create mode 100644 bench_adt/LEON/amortize-queue-goal3.smt2 create mode 100644 bench_adt/LEON/amortize-queue-goal4.smt2 create mode 100644 bench_adt/LEON/amortize-queue-goal5.smt2 create mode 100644 bench_adt/LEON/amortize-queue-goal6.smt2 create mode 100644 bench_adt/LEON/amortize-queue-goal7.smt2 create mode 100644 bench_adt/LEON/amortize-queue-goal8.smt2 create mode 100644 bench_adt/LEON/amortize-queue-goal9.smt2 create mode 100644 bench_adt/LEON/bsearch-tree-goal1.smt2 create mode 100644 bench_adt/LEON/bsearch-tree-goal10.smt2 create mode 100644 bench_adt/LEON/bsearch-tree-goal11.smt2 create mode 100644 bench_adt/LEON/bsearch-tree-goal12.smt2 create mode 100644 bench_adt/LEON/bsearch-tree-goal13.smt2 create mode 100644 bench_adt/LEON/bsearch-tree-goal14.smt2 create mode 100644 bench_adt/LEON/bsearch-tree-goal15.smt2 create mode 100644 bench_adt/LEON/bsearch-tree-goal16.smt2 create mode 100644 bench_adt/LEON/bsearch-tree-goal17.smt2 create mode 100644 bench_adt/LEON/bsearch-tree-goal18.smt2 create mode 100644 bench_adt/LEON/bsearch-tree-goal2.smt2 create mode 100644 bench_adt/LEON/bsearch-tree-goal3.smt2 create mode 100644 bench_adt/LEON/bsearch-tree-goal4.smt2 create mode 100644 bench_adt/LEON/bsearch-tree-goal5.smt2 create mode 100644 bench_adt/LEON/bsearch-tree-goal6.smt2 create mode 100644 bench_adt/LEON/bsearch-tree-goal7.smt2 create mode 100644 bench_adt/LEON/bsearch-tree-goal8.smt2 create mode 100644 bench_adt/LEON/bsearch-tree-goal9.smt2 create mode 100644 bench_adt/LEON/heap-goal1.smt2 create mode 100644 bench_adt/LEON/heap-goal10.smt2 create mode 100644 bench_adt/LEON/heap-goal11.smt2 create mode 100644 bench_adt/LEON/heap-goal12.smt2 create mode 100644 bench_adt/LEON/heap-goal13.smt2 create mode 100644 bench_adt/LEON/heap-goal2.smt2 create mode 100644 bench_adt/LEON/heap-goal3.smt2 create mode 100644 bench_adt/LEON/heap-goal4.smt2 create mode 100644 bench_adt/LEON/heap-goal5.smt2 create mode 100644 bench_adt/LEON/heap-goal6.smt2 create mode 100644 bench_adt/LEON/heap-goal7.smt2 create mode 100644 bench_adt/LEON/heap-goal8.smt2 create mode 100644 bench_adt/LEON/heap-goal9.smt2 rename bench_horn_adt/{ => ADTIND}/heap_size.smt2 (100%) create mode 100644 bench_horn_adt/ADTIND/list_append_ass.smt2 rename bench_horn_adt/{ => ADTIND}/list_append_len.smt2 (100%) rename bench_horn_adt/{ => ADTIND}/list_append_nil.smt2 (100%) rename bench_horn_adt/{ => ADTIND}/list_interleave.smt2 (100%) rename bench_horn_adt/{ => ADTIND}/list_len.smt2 (99%) rename bench_horn_adt/{ => ADTIND}/list_len_butlast.smt2 (100%) rename bench_horn_adt/{ => ADTIND}/list_len_stren.smt2 (100%) create mode 100644 bench_horn_adt/ADTIND/list_rev.smt2 create mode 100644 bench_horn_adt/ADTIND/list_rev2_append.smt2 rename bench_horn_adt/{ => ADTIND}/list_rev2_len.smt2 (100%) create mode 100644 bench_horn_adt/ADTIND/list_rev_append.smt2 create mode 100644 bench_horn_adt/ADTIND/queue_amort.smt2 create mode 100644 bench_horn_adt/ADTIND/queue_len.smt2 create mode 100644 bench_horn_adt/ADTIND/queue_popback.smt2 create mode 100644 bench_horn_adt/ADTIND/queue_push.smt2 create mode 100644 bench_horn_adt/ADTIND/queue_push_to_list.smt2 rename bench_horn_adt/{tree-insert-all-size.smt2 => ADTIND/tree_insert_all_size.smt2} (76%) create mode 100644 bench_horn_adt/ADTIND/tree_insert_size.smt2 rename bench_horn_adt/{ => ADTIND}/tree_size.smt2 (100%) create mode 100644 bench_horn_adt/LEON/amortize-queue-goal1.smt2 create mode 100644 bench_horn_adt/LEON/amortize-queue-goal10.smt2 create mode 100644 bench_horn_adt/LEON/amortize-queue-goal11.smt2 create mode 100644 bench_horn_adt/LEON/amortize-queue-goal12.smt2 create mode 100644 bench_horn_adt/LEON/amortize-queue-goal13.smt2 create mode 100644 bench_horn_adt/LEON/amortize-queue-goal14.smt2 create mode 100644 bench_horn_adt/LEON/amortize-queue-goal15.smt2 create mode 100644 bench_horn_adt/LEON/amortize-queue-goal2.smt2 create mode 100644 bench_horn_adt/LEON/amortize-queue-goal3.smt2 create mode 100644 bench_horn_adt/LEON/amortize-queue-goal4.smt2 create mode 100644 bench_horn_adt/LEON/amortize-queue-goal5.smt2 create mode 100644 bench_horn_adt/LEON/amortize-queue-goal6.smt2 create mode 100644 bench_horn_adt/LEON/amortize-queue-goal7.smt2 create mode 100644 bench_horn_adt/LEON/amortize-queue-goal8.smt2 create mode 100644 bench_horn_adt/LEON/amortize-queue-goal9.smt2 create mode 100644 bench_horn_adt/LEON/bsearch-tree-goal1.smt2 create mode 100644 bench_horn_adt/LEON/bsearch-tree-goal10.smt2 create mode 100644 bench_horn_adt/LEON/bsearch-tree-goal11.smt2 create mode 100644 bench_horn_adt/LEON/bsearch-tree-goal12.smt2 create mode 100644 bench_horn_adt/LEON/bsearch-tree-goal13.smt2 create mode 100644 bench_horn_adt/LEON/bsearch-tree-goal14.smt2 create mode 100644 bench_horn_adt/LEON/bsearch-tree-goal2.smt2 create mode 100644 bench_horn_adt/LEON/bsearch-tree-goal3.smt2 create mode 100644 bench_horn_adt/LEON/bsearch-tree-goal4.smt2 create mode 100644 bench_horn_adt/LEON/bsearch-tree-goal5.smt2 create mode 100644 bench_horn_adt/LEON/bsearch-tree-goal6.smt2 create mode 100644 bench_horn_adt/LEON/bsearch-tree-goal8.smt2 create mode 100644 bench_horn_adt/LEON/bsearch-tree-goal9.smt2 rename bench_horn_adt/{ => arrays}/arr_map.smt2 (100%) rename bench_horn_adt/{ => arrays}/arr_map_dup.smt2 (100%) rename bench_horn_adt/{ => arrays}/arr_multiset.smt2 (100%) rename bench_horn_adt/{ => arrays}/arr_multiset_clear.smt2 (100%) rename bench_horn_adt/{ => arrays}/arr_queue.smt2 (100%) rename bench_horn_adt/{ => arrays}/arr_queue_even.smt2 (100%) rename bench_horn_adt/{ => arrays}/arr_set_remove.smt2 (100%) rename bench_horn_adt/{ => arrays}/arr_set_removeall.smt2 (100%) rename bench_horn_adt/{ => arrays}/arr_stack.smt2 (100%) rename bench_horn_adt/{ => arrays}/arr_stack_even.smt2 (100%) create mode 100644 bench_horn_adt/list_remove.smt2 create mode 100644 bench_horn_adt/remove_not_contained.smt2 diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d23f1fed..80e20a1f3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,8 +54,8 @@ endif () include(ExternalProject) set_property(DIRECTORY PROPERTY EP_STEP_TARGETS configure build test) -set (Z3_TAG "origin/spacer3" CACHE STRING "Z3 git tag to use") -set (Z3_REPO "https://bitbucket.org/spacer/code.git" CACHE STRING "Z3 repo") +set (Z3_TAG "z3-4.8.4" CACHE STRING "Z3 git tag to use") +set (Z3_REPO "https://github.com/Z3Prover/z3.git" CACHE STRING "Z3 repo") if (CMAKE_BUILD_TYPE STREQUAL "Debug") set (Z3_DEBUG "-d") else() @@ -81,6 +81,7 @@ if (NOT Z3_FOUND) ExternalProject_Get_Property (z3 INSTALL_DIR) set(Z3_ROOT ${INSTALL_DIR} CACHE PATH "Forced location of Z3" FORCE) message(WARNING "No Z3 found. Run \n\tcmake --build . && cmake ${CMAKE_SOURCE_DIR}") + return() else() set_target_properties(z3 PROPERTIES EXCLUDE_FROM_ALL ON) include_directories(${Z3_INCLUDE_DIR}) @@ -89,57 +90,6 @@ else() install (PROGRAMS ${Z3_EXECUTABLE} DESTINATION bin) endif() -ExternalProject_Add (llvm - SVN_REPOSITORY http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_360/final/ - SOURCE_DIR ${CMAKE_SOURCE_DIR}/ext/llvm - INSTALL_DIR ${CMAKE_BINARY_DIR}/run - CMAKE_ARGS - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} - -DCMAKE_INSTALL_PREFIX:PATH= - -DLLVM_TARGETS_TO_BUILD:STRING=X86 -DWITH_POLY:BOOL=OFF - -DLLVM_ENABLE_PEDANTIC=OFF - -DLLVM_ENABLE_PIC=ON -DLLVM_REQUIRES_RTTI:BOOL=TRUE - TEST_AFTER_INSTALL 1 - TEST_COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_LIST_FILE} - LOG_CONFIGURE 1 - LOG_BUILD 1 - LOG_INSTALL 1) - -find_package (LLVM 3.6.0 CONFIG NO_DEFAULT_PATH) -if (NOT LLVM_FOUND) - ExternalProject_Get_Property (llvm INSTALL_DIR) - set (LLVM_ROOT ${INSTALL_DIR}) - set (LLVM_DIR ${LLVM_ROOT}/share/llvm/cmake CACHE PATH - "Forced location of LLVM cmake config" FORCE) - message (WARNING "No llvm found. Run \n\tcmake --build . && cmake ${CMAKE_SOURCE_DIR}") - return() -else() - set_target_properties(llvm PROPERTIES EXCLUDE_FROM_ALL ON) - - message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") - message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}") - - # We incorporate the CMake features provided by LLVM: - list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}") - include(AddLLVM) - include(HandleLLVMOptions) - set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin) - set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib) - - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LLVM_CXXFLAGS}") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LLVM_LDFLAGS}") - - set(LLVM_REQUIRES_RTTI TRUE) - set(LLVM_REQUIRES_EH TRUE) - - include_directories(${LLVM_INCLUDE_DIRS}) - link_directories(${LLVM_LIBRARY_DIRS}) - add_definitions(${LLVM_DEFINITIONS}) - -endif() - - install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.md DESTINATION .) # install all the licenses install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/license.txt @@ -154,13 +104,6 @@ if (EXISTS z3-prefix/src/z3/LICENSE.txt) RENAME z3_license.txt) endif() -if (EXISTS ${CMAKE_CURRENT_BINARY_DIR}/llvm-prefix/src/llvm-build/bin/clang-3.6) - install ( - PROGRAMS - ${CMAKE_CURRENT_BINARY_DIR}/llvm-prefix/src/llvm-build/bin/clang-3.6 - DESTINATION bin) -endif() - if (EXISTS ${CMAKE_CURRENT_BINARY_DIR}/z3-prefix/src/z3/build) file(GLOB z3py ${CMAKE_CURRENT_BINARY_DIR}/z3-prefix/src/z3/build/*.py? @@ -172,6 +115,11 @@ if (EXISTS ${CMAKE_CURRENT_BINARY_DIR}/z3-prefix/src/z3/build) install(FILES ${z3py} DESTINATION lib/z3py) endif() +find_package(OpenMP) +if (OPENMP_FOUND) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") +endif() + find_package(Gmp REQUIRED) if (GMP_FOUND) include_directories (${GMP_INCLUDE_DIR}) @@ -204,6 +152,7 @@ set(CMAKE_CXX_EXTENSIONS ON) add_definitions(-Wno-redeclared-class-member -Wno-sometimes-uninitialized) add_definitions(-Wno-covered-switch-default) add_definitions(-Wno-inconsistent-missing-override) +set(CMAKE_CXX_STANDARD 11) if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") add_definitions( -Wno-unused-local-typedefs) endif () diff --git a/bench_adt/LEON/amortize-queue-goal1.smt2 b/bench_adt/LEON/amortize-queue-goal1.smt2 new file mode 100644 index 000000000..1c0e38022 --- /dev/null +++ b/bench_adt/LEON/amortize-queue-goal1.smt2 @@ -0,0 +1,68 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun butlast (Lst) Lst) +(assert (= (butlast nil) nil)) +(assert (forall ((x Nat) (y Lst)) (= (butlast (cons x y)) (ite (= y nil) nil (cons x (butlast y)))))) + +(declare-fun qreva (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (qreva nil x) x))) +(assert (forall ((x Lst) (y Lst) (z Nat)) (= (qreva (cons z x) y) (qreva x (cons z y))))) + +(declare-fun qrev (Lst) Lst) +(assert (forall ((x Lst)) (= (qrev x) (qreva x nil)))) + +; queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun queue-to-lst (Queue) Lst) +(assert (forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (append x (qrev y))))) + +(declare-fun qlen (Queue) Nat) +(assert (forall ((x Lst) (y Lst)) (= (qlen (queue x y)) (plus (len x) (len y))))) + +(declare-fun isAmortized (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isAmortized (queue x y)) (leq (len y) (len x))))) + +(declare-fun isEmpty (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isEmpty (queue x y)) (and (= x nil) (= y nil))))) + +(declare-fun amortizeQueue (Lst Lst) Queue) +(assert (forall ((x Lst) (y Lst)) (= (amortizeQueue x y) (ite (leq (len y) (len x)) (queue x y) (queue (append x (qrev y)) nil))))) + +(declare-fun enqueue (Queue Nat) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (enqueue (queue x y) n) (amortizeQueue x (cons n y))))) + +(declare-fun qpop (Queue) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (qpop (queue x (cons n y))) (queue x y)))) +(assert (forall ((x Lst)) (= (qpop (queue x nil)) (queue (butlast x) nil)))) + +; proven + +; conjecture +(assert (not +(forall ((x Lst) (y Lst)) (= (len (append x y)) (plus (len x) (len y)))) ; G-amortize-queue-1 +)) +(check-sat) diff --git a/bench_adt/LEON/amortize-queue-goal10.smt2 b/bench_adt/LEON/amortize-queue-goal10.smt2 new file mode 100644 index 000000000..c39814fd3 --- /dev/null +++ b/bench_adt/LEON/amortize-queue-goal10.smt2 @@ -0,0 +1,95 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun butlast (Lst) Lst) +(assert (= (butlast nil) nil)) +(assert (forall ((x Nat) (y Lst)) (= (butlast (cons x y)) (ite (= y nil) nil (cons x (butlast y)))))) + +(declare-fun qreva (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (qreva nil x) x))) +(assert (forall ((x Lst) (y Lst) (z Nat)) (= (qreva (cons z x) y) (qreva x (cons z y))))) + +(declare-fun qrev (Lst) Lst) +(assert (forall ((x Lst)) (= (qrev x) (qreva x nil)))) + +; queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun queue-to-lst (Queue) Lst) +(assert (forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (append x (qrev y))))) + +(declare-fun qlen (Queue) Nat) +(assert (forall ((x Lst) (y Lst)) (= (qlen (queue x y)) (plus (len x) (len y))))) + +(declare-fun isAmortized (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isAmortized (queue x y)) (leq (len y) (len x))))) + +(declare-fun isEmpty (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isEmpty (queue x y)) (and (= x nil) (= y nil))))) + +(declare-fun amortizeQueue (Lst Lst) Queue) +(assert (forall ((x Lst) (y Lst)) (= (amortizeQueue x y) (ite (leq (len y) (len x)) (queue x y) (queue (append x (qrev y)) nil))))) + +(declare-fun enqueue (Queue Nat) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (enqueue (queue x y) n) (amortizeQueue x (cons n y))))) + +(declare-fun qpop (Queue) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (qpop (queue x (cons n y))) (queue x y)))) +(assert (forall ((x Lst)) (= (qpop (queue x nil)) (queue (butlast x) nil)))) + +; proven +(assert +(forall ((x Lst) (y Lst)) (= (len (append x y)) (plus (len x) (len y)))) ; G-amortize-queue-1 +) +(assert +(forall ((x Lst) (y Lst)) (= (len (qreva x y)) (plus (len x) (len y)))) ; G-amortize-queue-2 +) +(assert +(forall ((x Lst)) (= (len (qrev x)) (len x))) ; G-amortize-queue-3 +) +(assert +(forall ((x Lst) (y Lst)) (= (plus (len x) (len y)) (qlen (queue x y)))) ; G-amortize-queue-4 +) +(assert +(forall ((x Lst) (y Nat)) (= (succ (len (butlast (cons y x)))) (len (cons y x)))) ; G-amortize-queue-5 +) +(assert +(forall ((q Queue) (n Nat)) (= (qlen (enqueue q n)) (succ (qlen q)))) ; G-amortize-queue-6 +) +(assert +(forall ((q Queue) (n Nat)) (=> (and (isAmortized q) (not (isEmpty q))) (= (succ (qlen (qpop q))) (qlen q)))) ; G-amortize-queue-7 +) +(assert +(forall ((x Lst)) (= (append x nil) x)) ; G-amortize-queue-8 +) +(assert +(forall ((x Lst) (n Nat) (y Lst)) (= (butlast (append x (cons n y))) (append x (butlast (cons n y))))) ; G-amortize-queue-9 +) + +; conjecture +(assert (not +(forall ((x Lst) (y Lst) (z Lst)) (= (qreva (qreva x y) z) (qreva y (append x z)))) ; G-amortize-queue-10 +)) +(check-sat) diff --git a/bench_adt/LEON/amortize-queue-goal11.smt2 b/bench_adt/LEON/amortize-queue-goal11.smt2 new file mode 100644 index 000000000..a6d842f41 --- /dev/null +++ b/bench_adt/LEON/amortize-queue-goal11.smt2 @@ -0,0 +1,98 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun butlast (Lst) Lst) +(assert (= (butlast nil) nil)) +(assert (forall ((x Nat) (y Lst)) (= (butlast (cons x y)) (ite (= y nil) nil (cons x (butlast y)))))) + +(declare-fun qreva (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (qreva nil x) x))) +(assert (forall ((x Lst) (y Lst) (z Nat)) (= (qreva (cons z x) y) (qreva x (cons z y))))) + +(declare-fun qrev (Lst) Lst) +(assert (forall ((x Lst)) (= (qrev x) (qreva x nil)))) + +; queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun queue-to-lst (Queue) Lst) +(assert (forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (append x (qrev y))))) + +(declare-fun qlen (Queue) Nat) +(assert (forall ((x Lst) (y Lst)) (= (qlen (queue x y)) (plus (len x) (len y))))) + +(declare-fun isAmortized (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isAmortized (queue x y)) (leq (len y) (len x))))) + +(declare-fun isEmpty (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isEmpty (queue x y)) (and (= x nil) (= y nil))))) + +(declare-fun amortizeQueue (Lst Lst) Queue) +(assert (forall ((x Lst) (y Lst)) (= (amortizeQueue x y) (ite (leq (len y) (len x)) (queue x y) (queue (append x (qrev y)) nil))))) + +(declare-fun enqueue (Queue Nat) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (enqueue (queue x y) n) (amortizeQueue x (cons n y))))) + +(declare-fun qpop (Queue) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (qpop (queue x (cons n y))) (queue x y)))) +(assert (forall ((x Lst)) (= (qpop (queue x nil)) (queue (butlast x) nil)))) + +; proven +(assert +(forall ((x Lst) (y Lst)) (= (len (append x y)) (plus (len x) (len y)))) ; G-amortize-queue-1 +) +(assert +(forall ((x Lst) (y Lst)) (= (len (qreva x y)) (plus (len x) (len y)))) ; G-amortize-queue-2 +) +(assert +(forall ((x Lst)) (= (len (qrev x)) (len x))) ; G-amortize-queue-3 +) +(assert +(forall ((x Lst) (y Lst)) (= (plus (len x) (len y)) (qlen (queue x y)))) ; G-amortize-queue-4 +) +(assert +(forall ((x Lst) (y Nat)) (= (succ (len (butlast (cons y x)))) (len (cons y x)))) ; G-amortize-queue-5 +) +(assert +(forall ((q Queue) (n Nat)) (= (qlen (enqueue q n)) (succ (qlen q)))) ; G-amortize-queue-6 +) +(assert +(forall ((q Queue) (n Nat)) (=> (and (isAmortized q) (not (isEmpty q))) (= (succ (qlen (qpop q))) (qlen q)))) ; G-amortize-queue-7 +) +(assert +(forall ((x Lst)) (= (append x nil) x)) ; G-amortize-queue-8 +) +(assert +(forall ((x Lst) (n Nat) (y Lst)) (= (butlast (append x (cons n y))) (append x (butlast (cons n y))))) ; G-amortize-queue-9 +) +(assert +(forall ((x Lst) (y Lst) (z Lst)) (= (qreva (qreva x y) z) (qreva y (append x z)))) ; G-amortize-queue-10 +) + +; conjecture +(assert (not +(forall ((x Lst) (y Lst) (z Lst)) (= (append x (append y z)) (append (append x y) z))) ; G-amortize-queue-11 +)) +(check-sat) diff --git a/bench_adt/LEON/amortize-queue-goal12.smt2 b/bench_adt/LEON/amortize-queue-goal12.smt2 new file mode 100644 index 000000000..89da53005 --- /dev/null +++ b/bench_adt/LEON/amortize-queue-goal12.smt2 @@ -0,0 +1,101 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun butlast (Lst) Lst) +(assert (= (butlast nil) nil)) +(assert (forall ((x Nat) (y Lst)) (= (butlast (cons x y)) (ite (= y nil) nil (cons x (butlast y)))))) + +(declare-fun qreva (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (qreva nil x) x))) +(assert (forall ((x Lst) (y Lst) (z Nat)) (= (qreva (cons z x) y) (qreva x (cons z y))))) + +(declare-fun qrev (Lst) Lst) +(assert (forall ((x Lst)) (= (qrev x) (qreva x nil)))) + +; queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun queue-to-lst (Queue) Lst) +(assert (forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (append x (qrev y))))) + +(declare-fun qlen (Queue) Nat) +(assert (forall ((x Lst) (y Lst)) (= (qlen (queue x y)) (plus (len x) (len y))))) + +(declare-fun isAmortized (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isAmortized (queue x y)) (leq (len y) (len x))))) + +(declare-fun isEmpty (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isEmpty (queue x y)) (and (= x nil) (= y nil))))) + +(declare-fun amortizeQueue (Lst Lst) Queue) +(assert (forall ((x Lst) (y Lst)) (= (amortizeQueue x y) (ite (leq (len y) (len x)) (queue x y) (queue (append x (qrev y)) nil))))) + +(declare-fun enqueue (Queue Nat) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (enqueue (queue x y) n) (amortizeQueue x (cons n y))))) + +(declare-fun qpop (Queue) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (qpop (queue x (cons n y))) (queue x y)))) +(assert (forall ((x Lst)) (= (qpop (queue x nil)) (queue (butlast x) nil)))) + +; proven +(assert +(forall ((x Lst) (y Lst)) (= (len (append x y)) (plus (len x) (len y)))) ; G-amortize-queue-1 +) +(assert +(forall ((x Lst) (y Lst)) (= (len (qreva x y)) (plus (len x) (len y)))) ; G-amortize-queue-2 +) +(assert +(forall ((x Lst)) (= (len (qrev x)) (len x))) ; G-amortize-queue-3 +) +(assert +(forall ((x Lst) (y Lst)) (= (plus (len x) (len y)) (qlen (queue x y)))) ; G-amortize-queue-4 +) +(assert +(forall ((x Lst) (y Nat)) (= (succ (len (butlast (cons y x)))) (len (cons y x)))) ; G-amortize-queue-5 +) +(assert +(forall ((q Queue) (n Nat)) (= (qlen (enqueue q n)) (succ (qlen q)))) ; G-amortize-queue-6 +) +(assert +(forall ((q Queue) (n Nat)) (=> (and (isAmortized q) (not (isEmpty q))) (= (succ (qlen (qpop q))) (qlen q)))) ; G-amortize-queue-7 +) +(assert +(forall ((x Lst)) (= (append x nil) x)) ; G-amortize-queue-8 +) +(assert +(forall ((x Lst) (n Nat) (y Lst)) (= (butlast (append x (cons n y))) (append x (butlast (cons n y))))) ; G-amortize-queue-9 +) +(assert +(forall ((x Lst) (y Lst) (z Lst)) (= (qreva (qreva x y) z) (qreva y (append x z)))) ; G-amortize-queue-10 +) +(assert +(forall ((x Lst) (y Lst) (z Lst)) (= (append x (append y z)) (append (append x y) z))) ; G-amortize-queue-11 +) + +; conjecture +(assert (not +(forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (queue-to-lst (amortizeQueue x y)))) ; G-amortize-queue-12 +)) +(check-sat) diff --git a/bench_adt/LEON/amortize-queue-goal13.smt2 b/bench_adt/LEON/amortize-queue-goal13.smt2 new file mode 100644 index 000000000..1d4ab9504 --- /dev/null +++ b/bench_adt/LEON/amortize-queue-goal13.smt2 @@ -0,0 +1,104 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun butlast (Lst) Lst) +(assert (= (butlast nil) nil)) +(assert (forall ((x Nat) (y Lst)) (= (butlast (cons x y)) (ite (= y nil) nil (cons x (butlast y)))))) + +(declare-fun qreva (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (qreva nil x) x))) +(assert (forall ((x Lst) (y Lst) (z Nat)) (= (qreva (cons z x) y) (qreva x (cons z y))))) + +(declare-fun qrev (Lst) Lst) +(assert (forall ((x Lst)) (= (qrev x) (qreva x nil)))) + +; queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun queue-to-lst (Queue) Lst) +(assert (forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (append x (qrev y))))) + +(declare-fun qlen (Queue) Nat) +(assert (forall ((x Lst) (y Lst)) (= (qlen (queue x y)) (plus (len x) (len y))))) + +(declare-fun isAmortized (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isAmortized (queue x y)) (leq (len y) (len x))))) + +(declare-fun isEmpty (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isEmpty (queue x y)) (and (= x nil) (= y nil))))) + +(declare-fun amortizeQueue (Lst Lst) Queue) +(assert (forall ((x Lst) (y Lst)) (= (amortizeQueue x y) (ite (leq (len y) (len x)) (queue x y) (queue (append x (qrev y)) nil))))) + +(declare-fun enqueue (Queue Nat) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (enqueue (queue x y) n) (amortizeQueue x (cons n y))))) + +(declare-fun qpop (Queue) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (qpop (queue x (cons n y))) (queue x y)))) +(assert (forall ((x Lst)) (= (qpop (queue x nil)) (queue (butlast x) nil)))) + +; proven +(assert +(forall ((x Lst) (y Lst)) (= (len (append x y)) (plus (len x) (len y)))) ; G-amortize-queue-1 +) +(assert +(forall ((x Lst) (y Lst)) (= (len (qreva x y)) (plus (len x) (len y)))) ; G-amortize-queue-2 +) +(assert +(forall ((x Lst)) (= (len (qrev x)) (len x))) ; G-amortize-queue-3 +) +(assert +(forall ((x Lst) (y Lst)) (= (plus (len x) (len y)) (qlen (queue x y)))) ; G-amortize-queue-4 +) +(assert +(forall ((x Lst) (y Nat)) (= (succ (len (butlast (cons y x)))) (len (cons y x)))) ; G-amortize-queue-5 +) +(assert +(forall ((q Queue) (n Nat)) (= (qlen (enqueue q n)) (succ (qlen q)))) ; G-amortize-queue-6 +) +(assert +(forall ((q Queue) (n Nat)) (=> (and (isAmortized q) (not (isEmpty q))) (= (succ (qlen (qpop q))) (qlen q)))) ; G-amortize-queue-7 +) +(assert +(forall ((x Lst)) (= (append x nil) x)) ; G-amortize-queue-8 +) +(assert +(forall ((x Lst) (n Nat) (y Lst)) (= (butlast (append x (cons n y))) (append x (butlast (cons n y))))) ; G-amortize-queue-9 +) +(assert +(forall ((x Lst) (y Lst) (z Lst)) (= (qreva (qreva x y) z) (qreva y (append x z)))) ; G-amortize-queue-10 +) +(assert +(forall ((x Lst) (y Lst) (z Lst)) (= (append x (append y z)) (append (append x y) z))) ; G-amortize-queue-11 +) +(assert +(forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (queue-to-lst (amortizeQueue x y)))) ; G-amortize-queue-12 +) + +; conjecture +(assert (not +(forall ((x Lst) (y Lst)) (= (butlast (queue-to-lst (queue x y))) (queue-to-lst (qpop (queue x y))))) ; G-amortize-queue-13 +)) +(check-sat) diff --git a/bench_adt/LEON/amortize-queue-goal14.smt2 b/bench_adt/LEON/amortize-queue-goal14.smt2 new file mode 100644 index 000000000..b2f5443e5 --- /dev/null +++ b/bench_adt/LEON/amortize-queue-goal14.smt2 @@ -0,0 +1,107 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun butlast (Lst) Lst) +(assert (= (butlast nil) nil)) +(assert (forall ((x Nat) (y Lst)) (= (butlast (cons x y)) (ite (= y nil) nil (cons x (butlast y)))))) + +(declare-fun qreva (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (qreva nil x) x))) +(assert (forall ((x Lst) (y Lst) (z Nat)) (= (qreva (cons z x) y) (qreva x (cons z y))))) + +(declare-fun qrev (Lst) Lst) +(assert (forall ((x Lst)) (= (qrev x) (qreva x nil)))) + +; queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun queue-to-lst (Queue) Lst) +(assert (forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (append x (qrev y))))) + +(declare-fun qlen (Queue) Nat) +(assert (forall ((x Lst) (y Lst)) (= (qlen (queue x y)) (plus (len x) (len y))))) + +(declare-fun isAmortized (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isAmortized (queue x y)) (leq (len y) (len x))))) + +(declare-fun isEmpty (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isEmpty (queue x y)) (and (= x nil) (= y nil))))) + +(declare-fun amortizeQueue (Lst Lst) Queue) +(assert (forall ((x Lst) (y Lst)) (= (amortizeQueue x y) (ite (leq (len y) (len x)) (queue x y) (queue (append x (qrev y)) nil))))) + +(declare-fun enqueue (Queue Nat) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (enqueue (queue x y) n) (amortizeQueue x (cons n y))))) + +(declare-fun qpop (Queue) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (qpop (queue x (cons n y))) (queue x y)))) +(assert (forall ((x Lst)) (= (qpop (queue x nil)) (queue (butlast x) nil)))) + +; proven +(assert +(forall ((x Lst) (y Lst)) (= (len (append x y)) (plus (len x) (len y)))) ; G-amortize-queue-1 +) +(assert +(forall ((x Lst) (y Lst)) (= (len (qreva x y)) (plus (len x) (len y)))) ; G-amortize-queue-2 +) +(assert +(forall ((x Lst)) (= (len (qrev x)) (len x))) ; G-amortize-queue-3 +) +(assert +(forall ((x Lst) (y Lst)) (= (plus (len x) (len y)) (qlen (queue x y)))) ; G-amortize-queue-4 +) +(assert +(forall ((x Lst) (y Nat)) (= (succ (len (butlast (cons y x)))) (len (cons y x)))) ; G-amortize-queue-5 +) +(assert +(forall ((q Queue) (n Nat)) (= (qlen (enqueue q n)) (succ (qlen q)))) ; G-amortize-queue-6 +) +(assert +(forall ((q Queue) (n Nat)) (=> (and (isAmortized q) (not (isEmpty q))) (= (succ (qlen (qpop q))) (qlen q)))) ; G-amortize-queue-7 +) +(assert +(forall ((x Lst)) (= (append x nil) x)) ; G-amortize-queue-8 +) +(assert +(forall ((x Lst) (n Nat) (y Lst)) (= (butlast (append x (cons n y))) (append x (butlast (cons n y))))) ; G-amortize-queue-9 +) +(assert +(forall ((x Lst) (y Lst) (z Lst)) (= (qreva (qreva x y) z) (qreva y (append x z)))) ; G-amortize-queue-10 +) +(assert +(forall ((x Lst) (y Lst) (z Lst)) (= (append x (append y z)) (append (append x y) z))) ; G-amortize-queue-11 +) +(assert +(forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (queue-to-lst (amortizeQueue x y)))) ; G-amortize-queue-12 +) +(assert +(forall ((x Lst) (y Lst)) (= (butlast (queue-to-lst (queue x y))) (queue-to-lst (qpop (queue x y))))) ; G-amortize-queue-13 +) + +; conjecture +(assert (not +(forall ((y Lst) (x Lst) (n Nat)) (= (append (queue-to-lst (queue x y)) (cons n nil)) (queue-to-lst (enqueue (queue x y) n)))) ; G-amortize-queue-14 +)) +(check-sat) diff --git a/bench_adt/LEON/amortize-queue-goal15.smt2 b/bench_adt/LEON/amortize-queue-goal15.smt2 new file mode 100644 index 000000000..c41b07505 --- /dev/null +++ b/bench_adt/LEON/amortize-queue-goal15.smt2 @@ -0,0 +1,110 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun butlast (Lst) Lst) +(assert (= (butlast nil) nil)) +(assert (forall ((x Nat) (y Lst)) (= (butlast (cons x y)) (ite (= y nil) nil (cons x (butlast y)))))) + +(declare-fun qreva (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (qreva nil x) x))) +(assert (forall ((x Lst) (y Lst) (z Nat)) (= (qreva (cons z x) y) (qreva x (cons z y))))) + +(declare-fun qrev (Lst) Lst) +(assert (forall ((x Lst)) (= (qrev x) (qreva x nil)))) + +; queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun queue-to-lst (Queue) Lst) +(assert (forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (append x (qrev y))))) + +(declare-fun qlen (Queue) Nat) +(assert (forall ((x Lst) (y Lst)) (= (qlen (queue x y)) (plus (len x) (len y))))) + +(declare-fun isAmortized (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isAmortized (queue x y)) (leq (len y) (len x))))) + +(declare-fun isEmpty (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isEmpty (queue x y)) (and (= x nil) (= y nil))))) + +(declare-fun amortizeQueue (Lst Lst) Queue) +(assert (forall ((x Lst) (y Lst)) (= (amortizeQueue x y) (ite (leq (len y) (len x)) (queue x y) (queue (append x (qrev y)) nil))))) + +(declare-fun enqueue (Queue Nat) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (enqueue (queue x y) n) (amortizeQueue x (cons n y))))) + +(declare-fun qpop (Queue) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (qpop (queue x (cons n y))) (queue x y)))) +(assert (forall ((x Lst)) (= (qpop (queue x nil)) (queue (butlast x) nil)))) + +; proven +(assert +(forall ((x Lst) (y Lst)) (= (len (append x y)) (plus (len x) (len y)))) ; G-amortize-queue-1 +) +(assert +(forall ((x Lst) (y Lst)) (= (len (qreva x y)) (plus (len x) (len y)))) ; G-amortize-queue-2 +) +(assert +(forall ((x Lst)) (= (len (qrev x)) (len x))) ; G-amortize-queue-3 +) +(assert +(forall ((x Lst) (y Lst)) (= (plus (len x) (len y)) (qlen (queue x y)))) ; G-amortize-queue-4 +) +(assert +(forall ((x Lst) (y Nat)) (= (succ (len (butlast (cons y x)))) (len (cons y x)))) ; G-amortize-queue-5 +) +(assert +(forall ((q Queue) (n Nat)) (= (qlen (enqueue q n)) (succ (qlen q)))) ; G-amortize-queue-6 +) +(assert +(forall ((q Queue) (n Nat)) (=> (and (isAmortized q) (not (isEmpty q))) (= (succ (qlen (qpop q))) (qlen q)))) ; G-amortize-queue-7 +) +(assert +(forall ((x Lst)) (= (append x nil) x)) ; G-amortize-queue-8 +) +(assert +(forall ((x Lst) (n Nat) (y Lst)) (= (butlast (append x (cons n y))) (append x (butlast (cons n y))))) ; G-amortize-queue-9 +) +(assert +(forall ((x Lst) (y Lst) (z Lst)) (= (qreva (qreva x y) z) (qreva y (append x z)))) ; G-amortize-queue-10 +) +(assert +(forall ((x Lst) (y Lst) (z Lst)) (= (append x (append y z)) (append (append x y) z))) ; G-amortize-queue-11 +) +(assert +(forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (queue-to-lst (amortizeQueue x y)))) ; G-amortize-queue-12 +) +(assert +(forall ((x Lst) (y Lst)) (= (butlast (queue-to-lst (queue x y))) (queue-to-lst (qpop (queue x y))))) ; G-amortize-queue-13 +) +(assert +(forall ((y Lst) (x Lst) (n Nat)) (= (append (queue-to-lst (queue x y)) (cons n nil)) (queue-to-lst (enqueue (queue x y) n)))) ; G-amortize-queue-14 +) + +; conjecture +(assert (not +(forall ((x Lst) (y Lst)) (isAmortized (amortizeQueue x y))) ; G-amortize-queue-15 +)) +(check-sat) diff --git a/bench_adt/LEON/amortize-queue-goal2.smt2 b/bench_adt/LEON/amortize-queue-goal2.smt2 new file mode 100644 index 000000000..0c7602e01 --- /dev/null +++ b/bench_adt/LEON/amortize-queue-goal2.smt2 @@ -0,0 +1,71 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun butlast (Lst) Lst) +(assert (= (butlast nil) nil)) +(assert (forall ((x Nat) (y Lst)) (= (butlast (cons x y)) (ite (= y nil) nil (cons x (butlast y)))))) + +(declare-fun qreva (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (qreva nil x) x))) +(assert (forall ((x Lst) (y Lst) (z Nat)) (= (qreva (cons z x) y) (qreva x (cons z y))))) + +(declare-fun qrev (Lst) Lst) +(assert (forall ((x Lst)) (= (qrev x) (qreva x nil)))) + +; queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun queue-to-lst (Queue) Lst) +(assert (forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (append x (qrev y))))) + +(declare-fun qlen (Queue) Nat) +(assert (forall ((x Lst) (y Lst)) (= (qlen (queue x y)) (plus (len x) (len y))))) + +(declare-fun isAmortized (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isAmortized (queue x y)) (leq (len y) (len x))))) + +(declare-fun isEmpty (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isEmpty (queue x y)) (and (= x nil) (= y nil))))) + +(declare-fun amortizeQueue (Lst Lst) Queue) +(assert (forall ((x Lst) (y Lst)) (= (amortizeQueue x y) (ite (leq (len y) (len x)) (queue x y) (queue (append x (qrev y)) nil))))) + +(declare-fun enqueue (Queue Nat) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (enqueue (queue x y) n) (amortizeQueue x (cons n y))))) + +(declare-fun qpop (Queue) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (qpop (queue x (cons n y))) (queue x y)))) +(assert (forall ((x Lst)) (= (qpop (queue x nil)) (queue (butlast x) nil)))) + +; proven +(assert +(forall ((x Lst) (y Lst)) (= (len (append x y)) (plus (len x) (len y)))) ; G-amortize-queue-1 +) + +; conjecture +(assert (not +(forall ((x Lst) (y Lst)) (= (len (qreva x y)) (plus (len x) (len y)))) ; G-amortize-queue-2 +)) +(check-sat) diff --git a/bench_adt/LEON/amortize-queue-goal3.smt2 b/bench_adt/LEON/amortize-queue-goal3.smt2 new file mode 100644 index 000000000..4105a931e --- /dev/null +++ b/bench_adt/LEON/amortize-queue-goal3.smt2 @@ -0,0 +1,74 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun butlast (Lst) Lst) +(assert (= (butlast nil) nil)) +(assert (forall ((x Nat) (y Lst)) (= (butlast (cons x y)) (ite (= y nil) nil (cons x (butlast y)))))) + +(declare-fun qreva (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (qreva nil x) x))) +(assert (forall ((x Lst) (y Lst) (z Nat)) (= (qreva (cons z x) y) (qreva x (cons z y))))) + +(declare-fun qrev (Lst) Lst) +(assert (forall ((x Lst)) (= (qrev x) (qreva x nil)))) + +; queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun queue-to-lst (Queue) Lst) +(assert (forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (append x (qrev y))))) + +(declare-fun qlen (Queue) Nat) +(assert (forall ((x Lst) (y Lst)) (= (qlen (queue x y)) (plus (len x) (len y))))) + +(declare-fun isAmortized (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isAmortized (queue x y)) (leq (len y) (len x))))) + +(declare-fun isEmpty (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isEmpty (queue x y)) (and (= x nil) (= y nil))))) + +(declare-fun amortizeQueue (Lst Lst) Queue) +(assert (forall ((x Lst) (y Lst)) (= (amortizeQueue x y) (ite (leq (len y) (len x)) (queue x y) (queue (append x (qrev y)) nil))))) + +(declare-fun enqueue (Queue Nat) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (enqueue (queue x y) n) (amortizeQueue x (cons n y))))) + +(declare-fun qpop (Queue) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (qpop (queue x (cons n y))) (queue x y)))) +(assert (forall ((x Lst)) (= (qpop (queue x nil)) (queue (butlast x) nil)))) + +; proven +(assert +(forall ((x Lst) (y Lst)) (= (len (append x y)) (plus (len x) (len y)))) ; G-amortize-queue-1 +) +(assert +(forall ((x Lst) (y Lst)) (= (len (qreva x y)) (plus (len x) (len y)))) ; G-amortize-queue-2 +) + +; conjecture +(assert (not +(forall ((x Lst)) (= (len (qrev x)) (len x))) ; G-amortize-queue-3 +)) +(check-sat) diff --git a/bench_adt/LEON/amortize-queue-goal4.smt2 b/bench_adt/LEON/amortize-queue-goal4.smt2 new file mode 100644 index 000000000..98e525f03 --- /dev/null +++ b/bench_adt/LEON/amortize-queue-goal4.smt2 @@ -0,0 +1,77 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun butlast (Lst) Lst) +(assert (= (butlast nil) nil)) +(assert (forall ((x Nat) (y Lst)) (= (butlast (cons x y)) (ite (= y nil) nil (cons x (butlast y)))))) + +(declare-fun qreva (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (qreva nil x) x))) +(assert (forall ((x Lst) (y Lst) (z Nat)) (= (qreva (cons z x) y) (qreva x (cons z y))))) + +(declare-fun qrev (Lst) Lst) +(assert (forall ((x Lst)) (= (qrev x) (qreva x nil)))) + +; queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun queue-to-lst (Queue) Lst) +(assert (forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (append x (qrev y))))) + +(declare-fun qlen (Queue) Nat) +(assert (forall ((x Lst) (y Lst)) (= (qlen (queue x y)) (plus (len x) (len y))))) + +(declare-fun isAmortized (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isAmortized (queue x y)) (leq (len y) (len x))))) + +(declare-fun isEmpty (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isEmpty (queue x y)) (and (= x nil) (= y nil))))) + +(declare-fun amortizeQueue (Lst Lst) Queue) +(assert (forall ((x Lst) (y Lst)) (= (amortizeQueue x y) (ite (leq (len y) (len x)) (queue x y) (queue (append x (qrev y)) nil))))) + +(declare-fun enqueue (Queue Nat) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (enqueue (queue x y) n) (amortizeQueue x (cons n y))))) + +(declare-fun qpop (Queue) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (qpop (queue x (cons n y))) (queue x y)))) +(assert (forall ((x Lst)) (= (qpop (queue x nil)) (queue (butlast x) nil)))) + +; proven +(assert +(forall ((x Lst) (y Lst)) (= (len (append x y)) (plus (len x) (len y)))) ; G-amortize-queue-1 +) +(assert +(forall ((x Lst) (y Lst)) (= (len (qreva x y)) (plus (len x) (len y)))) ; G-amortize-queue-2 +) +(assert +(forall ((x Lst)) (= (len (qrev x)) (len x))) ; G-amortize-queue-3 +) + +; conjecture +(assert (not +(forall ((x Lst) (y Lst)) (= (plus (len x) (len y)) (qlen (queue x y)))) ; G-amortize-queue-4 +)) +(check-sat) diff --git a/bench_adt/LEON/amortize-queue-goal5.smt2 b/bench_adt/LEON/amortize-queue-goal5.smt2 new file mode 100644 index 000000000..aac5be615 --- /dev/null +++ b/bench_adt/LEON/amortize-queue-goal5.smt2 @@ -0,0 +1,80 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun butlast (Lst) Lst) +(assert (= (butlast nil) nil)) +(assert (forall ((x Nat) (y Lst)) (= (butlast (cons x y)) (ite (= y nil) nil (cons x (butlast y)))))) + +(declare-fun qreva (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (qreva nil x) x))) +(assert (forall ((x Lst) (y Lst) (z Nat)) (= (qreva (cons z x) y) (qreva x (cons z y))))) + +(declare-fun qrev (Lst) Lst) +(assert (forall ((x Lst)) (= (qrev x) (qreva x nil)))) + +; queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun queue-to-lst (Queue) Lst) +(assert (forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (append x (qrev y))))) + +(declare-fun qlen (Queue) Nat) +(assert (forall ((x Lst) (y Lst)) (= (qlen (queue x y)) (plus (len x) (len y))))) + +(declare-fun isAmortized (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isAmortized (queue x y)) (leq (len y) (len x))))) + +(declare-fun isEmpty (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isEmpty (queue x y)) (and (= x nil) (= y nil))))) + +(declare-fun amortizeQueue (Lst Lst) Queue) +(assert (forall ((x Lst) (y Lst)) (= (amortizeQueue x y) (ite (leq (len y) (len x)) (queue x y) (queue (append x (qrev y)) nil))))) + +(declare-fun enqueue (Queue Nat) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (enqueue (queue x y) n) (amortizeQueue x (cons n y))))) + +(declare-fun qpop (Queue) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (qpop (queue x (cons n y))) (queue x y)))) +(assert (forall ((x Lst)) (= (qpop (queue x nil)) (queue (butlast x) nil)))) + +; proven +(assert +(forall ((x Lst) (y Lst)) (= (len (append x y)) (plus (len x) (len y)))) ; G-amortize-queue-1 +) +(assert +(forall ((x Lst) (y Lst)) (= (len (qreva x y)) (plus (len x) (len y)))) ; G-amortize-queue-2 +) +(assert +(forall ((x Lst)) (= (len (qrev x)) (len x))) ; G-amortize-queue-3 +) +(assert +(forall ((x Lst) (y Lst)) (= (plus (len x) (len y)) (qlen (queue x y)))) ; G-amortize-queue-4 +) + +; conjecture +(assert (not +(forall ((x Lst) (y Nat)) (= (succ (len (butlast (cons y x)))) (len (cons y x)))) ; G-amortize-queue-5 +)) +(check-sat) diff --git a/bench_adt/LEON/amortize-queue-goal6.smt2 b/bench_adt/LEON/amortize-queue-goal6.smt2 new file mode 100644 index 000000000..4a940c69f --- /dev/null +++ b/bench_adt/LEON/amortize-queue-goal6.smt2 @@ -0,0 +1,83 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun butlast (Lst) Lst) +(assert (= (butlast nil) nil)) +(assert (forall ((x Nat) (y Lst)) (= (butlast (cons x y)) (ite (= y nil) nil (cons x (butlast y)))))) + +(declare-fun qreva (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (qreva nil x) x))) +(assert (forall ((x Lst) (y Lst) (z Nat)) (= (qreva (cons z x) y) (qreva x (cons z y))))) + +(declare-fun qrev (Lst) Lst) +(assert (forall ((x Lst)) (= (qrev x) (qreva x nil)))) + +; queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun queue-to-lst (Queue) Lst) +(assert (forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (append x (qrev y))))) + +(declare-fun qlen (Queue) Nat) +(assert (forall ((x Lst) (y Lst)) (= (qlen (queue x y)) (plus (len x) (len y))))) + +(declare-fun isAmortized (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isAmortized (queue x y)) (leq (len y) (len x))))) + +(declare-fun isEmpty (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isEmpty (queue x y)) (and (= x nil) (= y nil))))) + +(declare-fun amortizeQueue (Lst Lst) Queue) +(assert (forall ((x Lst) (y Lst)) (= (amortizeQueue x y) (ite (leq (len y) (len x)) (queue x y) (queue (append x (qrev y)) nil))))) + +(declare-fun enqueue (Queue Nat) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (enqueue (queue x y) n) (amortizeQueue x (cons n y))))) + +(declare-fun qpop (Queue) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (qpop (queue x (cons n y))) (queue x y)))) +(assert (forall ((x Lst)) (= (qpop (queue x nil)) (queue (butlast x) nil)))) + +; proven +(assert +(forall ((x Lst) (y Lst)) (= (len (append x y)) (plus (len x) (len y)))) ; G-amortize-queue-1 +) +(assert +(forall ((x Lst) (y Lst)) (= (len (qreva x y)) (plus (len x) (len y)))) ; G-amortize-queue-2 +) +(assert +(forall ((x Lst)) (= (len (qrev x)) (len x))) ; G-amortize-queue-3 +) +(assert +(forall ((x Lst) (y Lst)) (= (plus (len x) (len y)) (qlen (queue x y)))) ; G-amortize-queue-4 +) +(assert +(forall ((x Lst) (y Nat)) (= (succ (len (butlast (cons y x)))) (len (cons y x)))) ; G-amortize-queue-5 +) + +; conjecture +(assert (not +(forall ((q Queue) (n Nat)) (= (qlen (enqueue q n)) (succ (qlen q)))) ; G-amortize-queue-6 +)) +(check-sat) diff --git a/bench_adt/LEON/amortize-queue-goal7.smt2 b/bench_adt/LEON/amortize-queue-goal7.smt2 new file mode 100644 index 000000000..4276a5b49 --- /dev/null +++ b/bench_adt/LEON/amortize-queue-goal7.smt2 @@ -0,0 +1,86 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun butlast (Lst) Lst) +(assert (= (butlast nil) nil)) +(assert (forall ((x Nat) (y Lst)) (= (butlast (cons x y)) (ite (= y nil) nil (cons x (butlast y)))))) + +(declare-fun qreva (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (qreva nil x) x))) +(assert (forall ((x Lst) (y Lst) (z Nat)) (= (qreva (cons z x) y) (qreva x (cons z y))))) + +(declare-fun qrev (Lst) Lst) +(assert (forall ((x Lst)) (= (qrev x) (qreva x nil)))) + +; queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun queue-to-lst (Queue) Lst) +(assert (forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (append x (qrev y))))) + +(declare-fun qlen (Queue) Nat) +(assert (forall ((x Lst) (y Lst)) (= (qlen (queue x y)) (plus (len x) (len y))))) + +(declare-fun isAmortized (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isAmortized (queue x y)) (leq (len y) (len x))))) + +(declare-fun isEmpty (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isEmpty (queue x y)) (and (= x nil) (= y nil))))) + +(declare-fun amortizeQueue (Lst Lst) Queue) +(assert (forall ((x Lst) (y Lst)) (= (amortizeQueue x y) (ite (leq (len y) (len x)) (queue x y) (queue (append x (qrev y)) nil))))) + +(declare-fun enqueue (Queue Nat) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (enqueue (queue x y) n) (amortizeQueue x (cons n y))))) + +(declare-fun qpop (Queue) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (qpop (queue x (cons n y))) (queue x y)))) +(assert (forall ((x Lst)) (= (qpop (queue x nil)) (queue (butlast x) nil)))) + +; proven +(assert +(forall ((x Lst) (y Lst)) (= (len (append x y)) (plus (len x) (len y)))) ; G-amortize-queue-1 +) +(assert +(forall ((x Lst) (y Lst)) (= (len (qreva x y)) (plus (len x) (len y)))) ; G-amortize-queue-2 +) +(assert +(forall ((x Lst)) (= (len (qrev x)) (len x))) ; G-amortize-queue-3 +) +(assert +(forall ((x Lst) (y Lst)) (= (plus (len x) (len y)) (qlen (queue x y)))) ; G-amortize-queue-4 +) +(assert +(forall ((x Lst) (y Nat)) (= (succ (len (butlast (cons y x)))) (len (cons y x)))) ; G-amortize-queue-5 +) +(assert +(forall ((q Queue) (n Nat)) (= (qlen (enqueue q n)) (succ (qlen q)))) ; G-amortize-queue-6 +) + +; conjecture +(assert (not +(forall ((q Queue) (n Nat)) (=> (and (isAmortized q) (not (isEmpty q))) (= (succ (qlen (qpop q))) (qlen q)))) ; G-amortize-queue-7 +)) +(check-sat) diff --git a/bench_adt/LEON/amortize-queue-goal8.smt2 b/bench_adt/LEON/amortize-queue-goal8.smt2 new file mode 100644 index 000000000..94a724829 --- /dev/null +++ b/bench_adt/LEON/amortize-queue-goal8.smt2 @@ -0,0 +1,89 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun butlast (Lst) Lst) +(assert (= (butlast nil) nil)) +(assert (forall ((x Nat) (y Lst)) (= (butlast (cons x y)) (ite (= y nil) nil (cons x (butlast y)))))) + +(declare-fun qreva (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (qreva nil x) x))) +(assert (forall ((x Lst) (y Lst) (z Nat)) (= (qreva (cons z x) y) (qreva x (cons z y))))) + +(declare-fun qrev (Lst) Lst) +(assert (forall ((x Lst)) (= (qrev x) (qreva x nil)))) + +; queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun queue-to-lst (Queue) Lst) +(assert (forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (append x (qrev y))))) + +(declare-fun qlen (Queue) Nat) +(assert (forall ((x Lst) (y Lst)) (= (qlen (queue x y)) (plus (len x) (len y))))) + +(declare-fun isAmortized (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isAmortized (queue x y)) (leq (len y) (len x))))) + +(declare-fun isEmpty (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isEmpty (queue x y)) (and (= x nil) (= y nil))))) + +(declare-fun amortizeQueue (Lst Lst) Queue) +(assert (forall ((x Lst) (y Lst)) (= (amortizeQueue x y) (ite (leq (len y) (len x)) (queue x y) (queue (append x (qrev y)) nil))))) + +(declare-fun enqueue (Queue Nat) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (enqueue (queue x y) n) (amortizeQueue x (cons n y))))) + +(declare-fun qpop (Queue) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (qpop (queue x (cons n y))) (queue x y)))) +(assert (forall ((x Lst)) (= (qpop (queue x nil)) (queue (butlast x) nil)))) + +; proven +(assert +(forall ((x Lst) (y Lst)) (= (len (append x y)) (plus (len x) (len y)))) ; G-amortize-queue-1 +) +(assert +(forall ((x Lst) (y Lst)) (= (len (qreva x y)) (plus (len x) (len y)))) ; G-amortize-queue-2 +) +(assert +(forall ((x Lst)) (= (len (qrev x)) (len x))) ; G-amortize-queue-3 +) +(assert +(forall ((x Lst) (y Lst)) (= (plus (len x) (len y)) (qlen (queue x y)))) ; G-amortize-queue-4 +) +(assert +(forall ((x Lst) (y Nat)) (= (succ (len (butlast (cons y x)))) (len (cons y x)))) ; G-amortize-queue-5 +) +(assert +(forall ((q Queue) (n Nat)) (= (qlen (enqueue q n)) (succ (qlen q)))) ; G-amortize-queue-6 +) +(assert +(forall ((q Queue) (n Nat)) (=> (and (isAmortized q) (not (isEmpty q))) (= (succ (qlen (qpop q))) (qlen q)))) ; G-amortize-queue-7 +) + +; conjecture +(assert (not +(forall ((x Lst)) (= (append x nil) x)) ; G-amortize-queue-8 +)) +(check-sat) diff --git a/bench_adt/LEON/amortize-queue-goal9.smt2 b/bench_adt/LEON/amortize-queue-goal9.smt2 new file mode 100644 index 000000000..712793e94 --- /dev/null +++ b/bench_adt/LEON/amortize-queue-goal9.smt2 @@ -0,0 +1,92 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun butlast (Lst) Lst) +(assert (= (butlast nil) nil)) +(assert (forall ((x Nat) (y Lst)) (= (butlast (cons x y)) (ite (= y nil) nil (cons x (butlast y)))))) + +(declare-fun qreva (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (qreva nil x) x))) +(assert (forall ((x Lst) (y Lst) (z Nat)) (= (qreva (cons z x) y) (qreva x (cons z y))))) + +(declare-fun qrev (Lst) Lst) +(assert (forall ((x Lst)) (= (qrev x) (qreva x nil)))) + +; queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun queue-to-lst (Queue) Lst) +(assert (forall ((x Lst) (y Lst)) (= (queue-to-lst (queue x y)) (append x (qrev y))))) + +(declare-fun qlen (Queue) Nat) +(assert (forall ((x Lst) (y Lst)) (= (qlen (queue x y)) (plus (len x) (len y))))) + +(declare-fun isAmortized (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isAmortized (queue x y)) (leq (len y) (len x))))) + +(declare-fun isEmpty (Queue) Bool) +(assert (forall ((x Lst) (y Lst)) (= (isEmpty (queue x y)) (and (= x nil) (= y nil))))) + +(declare-fun amortizeQueue (Lst Lst) Queue) +(assert (forall ((x Lst) (y Lst)) (= (amortizeQueue x y) (ite (leq (len y) (len x)) (queue x y) (queue (append x (qrev y)) nil))))) + +(declare-fun enqueue (Queue Nat) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (enqueue (queue x y) n) (amortizeQueue x (cons n y))))) + +(declare-fun qpop (Queue) Queue) +(assert (forall ((x Lst) (y Lst) (n Nat)) (= (qpop (queue x (cons n y))) (queue x y)))) +(assert (forall ((x Lst)) (= (qpop (queue x nil)) (queue (butlast x) nil)))) + +; proven +(assert +(forall ((x Lst) (y Lst)) (= (len (append x y)) (plus (len x) (len y)))) ; G-amortize-queue-1 +) +(assert +(forall ((x Lst) (y Lst)) (= (len (qreva x y)) (plus (len x) (len y)))) ; G-amortize-queue-2 +) +(assert +(forall ((x Lst)) (= (len (qrev x)) (len x))) ; G-amortize-queue-3 +) +(assert +(forall ((x Lst) (y Lst)) (= (plus (len x) (len y)) (qlen (queue x y)))) ; G-amortize-queue-4 +) +(assert +(forall ((x Lst) (y Nat)) (= (succ (len (butlast (cons y x)))) (len (cons y x)))) ; G-amortize-queue-5 +) +(assert +(forall ((q Queue) (n Nat)) (= (qlen (enqueue q n)) (succ (qlen q)))) ; G-amortize-queue-6 +) +(assert +(forall ((q Queue) (n Nat)) (=> (and (isAmortized q) (not (isEmpty q))) (= (succ (qlen (qpop q))) (qlen q)))) ; G-amortize-queue-7 +) +(assert +(forall ((x Lst)) (= (append x nil) x)) ; G-amortize-queue-8 +) + +; conjecture +(assert (not +(forall ((x Lst) (n Nat) (y Lst)) (= (butlast (append x (cons n y))) (append x (butlast (cons n y))))) ; G-amortize-queue-9 +)) +(check-sat) diff --git a/bench_adt/LEON/bsearch-tree-goal1.smt2 b/bench_adt/LEON/bsearch-tree-goal1.smt2 new file mode 100644 index 000000000..46d13b9de --- /dev/null +++ b/bench_adt/LEON/bsearch-tree-goal1.smt2 @@ -0,0 +1,87 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +(declare-fun nmax (Nat Nat) Nat) +(assert (forall ((n Nat) (m Nat)) (= (nmax n m) (ite (less n m) m n)))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun mem (Nat Lst) Bool) +(assert (forall ((x Nat)) (not (mem x nil)))) +(assert (forall ((x Nat) (y Nat) (z Lst)) (= (mem x (cons y z)) (or (= x y) (mem x z))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Nat) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Nat) (i Nat)) (= (tinsert (node d l r) i) (ite (less d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun height (Tree) Nat) +(assert (= (height leaf) zero)) +(assert (forall ((x Nat) (y Tree) (z Tree)) (= (height (node x y z)) (succ (nmax (height y) (height z)))))) + +(declare-fun tinsert-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tinsert-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tinsert-all x (cons n l)) (tinsert (tinsert-all x l) n)))) + +(declare-fun tsize (Tree) Nat) +(assert (= (tsize leaf) zero)) +(assert (forall ((x Nat) (l Tree) (r Tree)) (= (tsize (node x l r)) (succ (plus (tsize l) (tsize r)))))) + +(declare-fun tremove (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tremove leaf i) leaf))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less i d) (= (tremove (node d l r) i) (node d (tremove l i) r))))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less d i) (= (tremove (node d l r) i) (node d l (tremove r i)))))) +(assert (forall ((d Nat) (r Tree)) (= (tremove (node d leaf r) d) r))) +(assert (forall ((d Nat) (ld Nat) (ll Tree) (lr Tree) (r Tree)) (= (tremove (node d (node ld ll lr) r) d) (node ld (tremove (node ld ll lr) ld) r)))) + +(declare-fun tremove-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tremove-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tremove-all x (cons n l)) (tremove-all (tremove x n) l)))) + +(declare-fun tcontains (Tree Nat) Bool) +(assert (forall ((i Nat)) (not (tcontains leaf i)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tcontains (node d l r) i) (or (= d i) (tcontains l i) (tcontains r i))))) + +(declare-fun tsorted (Tree) Bool) +(assert (tsorted leaf)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (tsorted (node d l r)) (and (tsorted l) (tsorted r) + (forall ((x Nat)) (=> (tcontains l x) (leq x d))) + (forall ((x Nat)) (=> (tcontains r x) (less d x))))))) + +(declare-fun tmember (Tree Nat) Bool) +(assert (forall ((x Nat)) (not (tmember leaf x)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tmember (node d l r) i) (ite (= i d) true (tmember (ite (less d i) r l) i))))) + +(declare-fun content (Tree) Lst) +(assert (= (content leaf) nil)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (content (node d l r)) (append (content l) (cons d (content r)))))) + +; proven + +; conjecture +(assert (not +(forall ((t Tree) (n Nat)) (= (tsize (tinsert t n)) (succ (tsize t)))) ; G-bsearch-tree-1 +)) +(check-sat) diff --git a/bench_adt/LEON/bsearch-tree-goal10.smt2 b/bench_adt/LEON/bsearch-tree-goal10.smt2 new file mode 100644 index 000000000..82d18c0a5 --- /dev/null +++ b/bench_adt/LEON/bsearch-tree-goal10.smt2 @@ -0,0 +1,114 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +(declare-fun nmax (Nat Nat) Nat) +(assert (forall ((n Nat) (m Nat)) (= (nmax n m) (ite (less n m) m n)))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun mem (Nat Lst) Bool) +(assert (forall ((x Nat)) (not (mem x nil)))) +(assert (forall ((x Nat) (y Nat) (z Lst)) (= (mem x (cons y z)) (or (= x y) (mem x z))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Nat) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Nat) (i Nat)) (= (tinsert (node d l r) i) (ite (less d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun height (Tree) Nat) +(assert (= (height leaf) zero)) +(assert (forall ((x Nat) (y Tree) (z Tree)) (= (height (node x y z)) (succ (nmax (height y) (height z)))))) + +(declare-fun tinsert-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tinsert-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tinsert-all x (cons n l)) (tinsert (tinsert-all x l) n)))) + +(declare-fun tsize (Tree) Nat) +(assert (= (tsize leaf) zero)) +(assert (forall ((x Nat) (l Tree) (r Tree)) (= (tsize (node x l r)) (succ (plus (tsize l) (tsize r)))))) + +(declare-fun tremove (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tremove leaf i) leaf))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less i d) (= (tremove (node d l r) i) (node d (tremove l i) r))))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less d i) (= (tremove (node d l r) i) (node d l (tremove r i)))))) +(assert (forall ((d Nat) (r Tree)) (= (tremove (node d leaf r) d) r))) +(assert (forall ((d Nat) (ld Nat) (ll Tree) (lr Tree) (r Tree)) (= (tremove (node d (node ld ll lr) r) d) (node ld (tremove (node ld ll lr) ld) r)))) + +(declare-fun tremove-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tremove-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tremove-all x (cons n l)) (tremove-all (tremove x n) l)))) + +(declare-fun tcontains (Tree Nat) Bool) +(assert (forall ((i Nat)) (not (tcontains leaf i)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tcontains (node d l r) i) (or (= d i) (tcontains l i) (tcontains r i))))) + +(declare-fun tsorted (Tree) Bool) +(assert (tsorted leaf)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (tsorted (node d l r)) (and (tsorted l) (tsorted r) + (forall ((x Nat)) (=> (tcontains l x) (leq x d))) + (forall ((x Nat)) (=> (tcontains r x) (less d x))))))) + +(declare-fun tmember (Tree Nat) Bool) +(assert (forall ((x Nat)) (not (tmember leaf x)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tmember (node d l r) i) (ite (= i d) true (tmember (ite (less d i) r l) i))))) + +(declare-fun content (Tree) Lst) +(assert (= (content leaf) nil)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (content (node d l r)) (append (content l) (cons d (content r)))))) + +; proven +(assert +(forall ((t Tree) (n Nat)) (= (tsize (tinsert t n)) (succ (tsize t)))) ; G-bsearch-tree-1 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize t) (tsize (tinsert-all t l)))) ; G-bsearch-tree-2 +) +(assert +(forall ((l Lst) (t Tree)) (= (tsize (tinsert-all t l)) (plus (tsize t) (len l)))) ; G-bsearch-tree-3 +) +(assert +(forall ((t Tree) (n Nat)) (leq (tsize (tremove t n)) (tsize t))) ; G-bsearch-tree-4 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize (tremove-all t l)) (tsize t))) ; G-bsearch-tree-5 +) +(assert +(forall ((x Tree) (i Nat)) (tcontains (tinsert x i) i)) ; G-bsearch-tree-6 +) +(assert +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tcontains x j)) (tcontains (tinsert x i) j))) ; G-bsearch-tree-7 +) +(assert +(forall ((x Tree) (i Nat)) (=> (tsorted x) (tsorted (tinsert x i)))) ; G-bsearch-tree-8 +) +(assert +(forall ((x Tree) (i Nat)) (tmember (tinsert x i) i)) ; G-bsearch-tree-9 +) + +; conjecture +(assert (not +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tmember x j)) (tmember (tinsert x i) j))) ; G-bsearch-tree-10 +)) +(check-sat) diff --git a/bench_adt/LEON/bsearch-tree-goal11.smt2 b/bench_adt/LEON/bsearch-tree-goal11.smt2 new file mode 100644 index 000000000..95b7a8083 --- /dev/null +++ b/bench_adt/LEON/bsearch-tree-goal11.smt2 @@ -0,0 +1,117 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +(declare-fun nmax (Nat Nat) Nat) +(assert (forall ((n Nat) (m Nat)) (= (nmax n m) (ite (less n m) m n)))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun mem (Nat Lst) Bool) +(assert (forall ((x Nat)) (not (mem x nil)))) +(assert (forall ((x Nat) (y Nat) (z Lst)) (= (mem x (cons y z)) (or (= x y) (mem x z))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Nat) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Nat) (i Nat)) (= (tinsert (node d l r) i) (ite (less d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun height (Tree) Nat) +(assert (= (height leaf) zero)) +(assert (forall ((x Nat) (y Tree) (z Tree)) (= (height (node x y z)) (succ (nmax (height y) (height z)))))) + +(declare-fun tinsert-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tinsert-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tinsert-all x (cons n l)) (tinsert (tinsert-all x l) n)))) + +(declare-fun tsize (Tree) Nat) +(assert (= (tsize leaf) zero)) +(assert (forall ((x Nat) (l Tree) (r Tree)) (= (tsize (node x l r)) (succ (plus (tsize l) (tsize r)))))) + +(declare-fun tremove (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tremove leaf i) leaf))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less i d) (= (tremove (node d l r) i) (node d (tremove l i) r))))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less d i) (= (tremove (node d l r) i) (node d l (tremove r i)))))) +(assert (forall ((d Nat) (r Tree)) (= (tremove (node d leaf r) d) r))) +(assert (forall ((d Nat) (ld Nat) (ll Tree) (lr Tree) (r Tree)) (= (tremove (node d (node ld ll lr) r) d) (node ld (tremove (node ld ll lr) ld) r)))) + +(declare-fun tremove-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tremove-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tremove-all x (cons n l)) (tremove-all (tremove x n) l)))) + +(declare-fun tcontains (Tree Nat) Bool) +(assert (forall ((i Nat)) (not (tcontains leaf i)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tcontains (node d l r) i) (or (= d i) (tcontains l i) (tcontains r i))))) + +(declare-fun tsorted (Tree) Bool) +(assert (tsorted leaf)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (tsorted (node d l r)) (and (tsorted l) (tsorted r) + (forall ((x Nat)) (=> (tcontains l x) (leq x d))) + (forall ((x Nat)) (=> (tcontains r x) (less d x))))))) + +(declare-fun tmember (Tree Nat) Bool) +(assert (forall ((x Nat)) (not (tmember leaf x)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tmember (node d l r) i) (ite (= i d) true (tmember (ite (less d i) r l) i))))) + +(declare-fun content (Tree) Lst) +(assert (= (content leaf) nil)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (content (node d l r)) (append (content l) (cons d (content r)))))) + +; proven +(assert +(forall ((t Tree) (n Nat)) (= (tsize (tinsert t n)) (succ (tsize t)))) ; G-bsearch-tree-1 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize t) (tsize (tinsert-all t l)))) ; G-bsearch-tree-2 +) +(assert +(forall ((l Lst) (t Tree)) (= (tsize (tinsert-all t l)) (plus (tsize t) (len l)))) ; G-bsearch-tree-3 +) +(assert +(forall ((t Tree) (n Nat)) (leq (tsize (tremove t n)) (tsize t))) ; G-bsearch-tree-4 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize (tremove-all t l)) (tsize t))) ; G-bsearch-tree-5 +) +(assert +(forall ((x Tree) (i Nat)) (tcontains (tinsert x i) i)) ; G-bsearch-tree-6 +) +(assert +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tcontains x j)) (tcontains (tinsert x i) j))) ; G-bsearch-tree-7 +) +(assert +(forall ((x Tree) (i Nat)) (=> (tsorted x) (tsorted (tinsert x i)))) ; G-bsearch-tree-8 +) +(assert +(forall ((x Tree) (i Nat)) (tmember (tinsert x i) i)) ; G-bsearch-tree-9 +) +(assert +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tmember x j)) (tmember (tinsert x i) j))) ; G-bsearch-tree-10 +) + +; conjecture +(assert (not +(forall ((i Nat) (x Tree)) (=> (tsorted x) (= (tcontains x i) (tmember x i)))) ; G-bsearch-tree-11 +)) +(check-sat) diff --git a/bench_adt/LEON/bsearch-tree-goal12.smt2 b/bench_adt/LEON/bsearch-tree-goal12.smt2 new file mode 100644 index 000000000..bd8eb7381 --- /dev/null +++ b/bench_adt/LEON/bsearch-tree-goal12.smt2 @@ -0,0 +1,120 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +(declare-fun nmax (Nat Nat) Nat) +(assert (forall ((n Nat) (m Nat)) (= (nmax n m) (ite (less n m) m n)))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun mem (Nat Lst) Bool) +(assert (forall ((x Nat)) (not (mem x nil)))) +(assert (forall ((x Nat) (y Nat) (z Lst)) (= (mem x (cons y z)) (or (= x y) (mem x z))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Nat) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Nat) (i Nat)) (= (tinsert (node d l r) i) (ite (less d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun height (Tree) Nat) +(assert (= (height leaf) zero)) +(assert (forall ((x Nat) (y Tree) (z Tree)) (= (height (node x y z)) (succ (nmax (height y) (height z)))))) + +(declare-fun tinsert-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tinsert-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tinsert-all x (cons n l)) (tinsert (tinsert-all x l) n)))) + +(declare-fun tsize (Tree) Nat) +(assert (= (tsize leaf) zero)) +(assert (forall ((x Nat) (l Tree) (r Tree)) (= (tsize (node x l r)) (succ (plus (tsize l) (tsize r)))))) + +(declare-fun tremove (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tremove leaf i) leaf))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less i d) (= (tremove (node d l r) i) (node d (tremove l i) r))))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less d i) (= (tremove (node d l r) i) (node d l (tremove r i)))))) +(assert (forall ((d Nat) (r Tree)) (= (tremove (node d leaf r) d) r))) +(assert (forall ((d Nat) (ld Nat) (ll Tree) (lr Tree) (r Tree)) (= (tremove (node d (node ld ll lr) r) d) (node ld (tremove (node ld ll lr) ld) r)))) + +(declare-fun tremove-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tremove-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tremove-all x (cons n l)) (tremove-all (tremove x n) l)))) + +(declare-fun tcontains (Tree Nat) Bool) +(assert (forall ((i Nat)) (not (tcontains leaf i)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tcontains (node d l r) i) (or (= d i) (tcontains l i) (tcontains r i))))) + +(declare-fun tsorted (Tree) Bool) +(assert (tsorted leaf)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (tsorted (node d l r)) (and (tsorted l) (tsorted r) + (forall ((x Nat)) (=> (tcontains l x) (leq x d))) + (forall ((x Nat)) (=> (tcontains r x) (less d x))))))) + +(declare-fun tmember (Tree Nat) Bool) +(assert (forall ((x Nat)) (not (tmember leaf x)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tmember (node d l r) i) (ite (= i d) true (tmember (ite (less d i) r l) i))))) + +(declare-fun content (Tree) Lst) +(assert (= (content leaf) nil)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (content (node d l r)) (append (content l) (cons d (content r)))))) + +; proven +(assert +(forall ((t Tree) (n Nat)) (= (tsize (tinsert t n)) (succ (tsize t)))) ; G-bsearch-tree-1 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize t) (tsize (tinsert-all t l)))) ; G-bsearch-tree-2 +) +(assert +(forall ((l Lst) (t Tree)) (= (tsize (tinsert-all t l)) (plus (tsize t) (len l)))) ; G-bsearch-tree-3 +) +(assert +(forall ((t Tree) (n Nat)) (leq (tsize (tremove t n)) (tsize t))) ; G-bsearch-tree-4 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize (tremove-all t l)) (tsize t))) ; G-bsearch-tree-5 +) +(assert +(forall ((x Tree) (i Nat)) (tcontains (tinsert x i) i)) ; G-bsearch-tree-6 +) +(assert +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tcontains x j)) (tcontains (tinsert x i) j))) ; G-bsearch-tree-7 +) +(assert +(forall ((x Tree) (i Nat)) (=> (tsorted x) (tsorted (tinsert x i)))) ; G-bsearch-tree-8 +) +(assert +(forall ((x Tree) (i Nat)) (tmember (tinsert x i) i)) ; G-bsearch-tree-9 +) +(assert +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tmember x j)) (tmember (tinsert x i) j))) ; G-bsearch-tree-10 +) +(assert +(forall ((i Nat) (x Tree)) (=> (tsorted x) (= (tcontains x i) (tmember x i)))) ; G-bsearch-tree-11 +) + +; conjecture +(assert (not +(forall ((i Nat) (x Tree)) (=> (tmember x i) (tcontains x i))) ; G-bsearch-tree-12 +)) +(check-sat) diff --git a/bench_adt/LEON/bsearch-tree-goal13.smt2 b/bench_adt/LEON/bsearch-tree-goal13.smt2 new file mode 100644 index 000000000..535ed67ce --- /dev/null +++ b/bench_adt/LEON/bsearch-tree-goal13.smt2 @@ -0,0 +1,123 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +(declare-fun nmax (Nat Nat) Nat) +(assert (forall ((n Nat) (m Nat)) (= (nmax n m) (ite (less n m) m n)))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun mem (Nat Lst) Bool) +(assert (forall ((x Nat)) (not (mem x nil)))) +(assert (forall ((x Nat) (y Nat) (z Lst)) (= (mem x (cons y z)) (or (= x y) (mem x z))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Nat) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Nat) (i Nat)) (= (tinsert (node d l r) i) (ite (less d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun height (Tree) Nat) +(assert (= (height leaf) zero)) +(assert (forall ((x Nat) (y Tree) (z Tree)) (= (height (node x y z)) (succ (nmax (height y) (height z)))))) + +(declare-fun tinsert-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tinsert-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tinsert-all x (cons n l)) (tinsert (tinsert-all x l) n)))) + +(declare-fun tsize (Tree) Nat) +(assert (= (tsize leaf) zero)) +(assert (forall ((x Nat) (l Tree) (r Tree)) (= (tsize (node x l r)) (succ (plus (tsize l) (tsize r)))))) + +(declare-fun tremove (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tremove leaf i) leaf))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less i d) (= (tremove (node d l r) i) (node d (tremove l i) r))))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less d i) (= (tremove (node d l r) i) (node d l (tremove r i)))))) +(assert (forall ((d Nat) (r Tree)) (= (tremove (node d leaf r) d) r))) +(assert (forall ((d Nat) (ld Nat) (ll Tree) (lr Tree) (r Tree)) (= (tremove (node d (node ld ll lr) r) d) (node ld (tremove (node ld ll lr) ld) r)))) + +(declare-fun tremove-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tremove-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tremove-all x (cons n l)) (tremove-all (tremove x n) l)))) + +(declare-fun tcontains (Tree Nat) Bool) +(assert (forall ((i Nat)) (not (tcontains leaf i)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tcontains (node d l r) i) (or (= d i) (tcontains l i) (tcontains r i))))) + +(declare-fun tsorted (Tree) Bool) +(assert (tsorted leaf)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (tsorted (node d l r)) (and (tsorted l) (tsorted r) + (forall ((x Nat)) (=> (tcontains l x) (leq x d))) + (forall ((x Nat)) (=> (tcontains r x) (less d x))))))) + +(declare-fun tmember (Tree Nat) Bool) +(assert (forall ((x Nat)) (not (tmember leaf x)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tmember (node d l r) i) (ite (= i d) true (tmember (ite (less d i) r l) i))))) + +(declare-fun content (Tree) Lst) +(assert (= (content leaf) nil)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (content (node d l r)) (append (content l) (cons d (content r)))))) + +; proven +(assert +(forall ((t Tree) (n Nat)) (= (tsize (tinsert t n)) (succ (tsize t)))) ; G-bsearch-tree-1 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize t) (tsize (tinsert-all t l)))) ; G-bsearch-tree-2 +) +(assert +(forall ((l Lst) (t Tree)) (= (tsize (tinsert-all t l)) (plus (tsize t) (len l)))) ; G-bsearch-tree-3 +) +(assert +(forall ((t Tree) (n Nat)) (leq (tsize (tremove t n)) (tsize t))) ; G-bsearch-tree-4 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize (tremove-all t l)) (tsize t))) ; G-bsearch-tree-5 +) +(assert +(forall ((x Tree) (i Nat)) (tcontains (tinsert x i) i)) ; G-bsearch-tree-6 +) +(assert +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tcontains x j)) (tcontains (tinsert x i) j))) ; G-bsearch-tree-7 +) +(assert +(forall ((x Tree) (i Nat)) (=> (tsorted x) (tsorted (tinsert x i)))) ; G-bsearch-tree-8 +) +(assert +(forall ((x Tree) (i Nat)) (tmember (tinsert x i) i)) ; G-bsearch-tree-9 +) +(assert +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tmember x j)) (tmember (tinsert x i) j))) ; G-bsearch-tree-10 +) +(assert +(forall ((i Nat) (x Tree)) (=> (tsorted x) (= (tcontains x i) (tmember x i)))) ; G-bsearch-tree-11 +) +(assert +(forall ((i Nat) (x Tree)) (=> (tmember x i) (tcontains x i))) ; G-bsearch-tree-12 +) + +; conjecture +(assert (not +(forall ((l Lst) (x Tree) (n Nat)) (= (tinsert-all (tinsert x n) l) (tinsert-all x (append l (cons n nil))))) ; G-bsearch-tree-13 +)) +(check-sat) diff --git a/bench_adt/LEON/bsearch-tree-goal14.smt2 b/bench_adt/LEON/bsearch-tree-goal14.smt2 new file mode 100644 index 000000000..74da74385 --- /dev/null +++ b/bench_adt/LEON/bsearch-tree-goal14.smt2 @@ -0,0 +1,126 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +(declare-fun nmax (Nat Nat) Nat) +(assert (forall ((n Nat) (m Nat)) (= (nmax n m) (ite (less n m) m n)))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun mem (Nat Lst) Bool) +(assert (forall ((x Nat)) (not (mem x nil)))) +(assert (forall ((x Nat) (y Nat) (z Lst)) (= (mem x (cons y z)) (or (= x y) (mem x z))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Nat) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Nat) (i Nat)) (= (tinsert (node d l r) i) (ite (less d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun height (Tree) Nat) +(assert (= (height leaf) zero)) +(assert (forall ((x Nat) (y Tree) (z Tree)) (= (height (node x y z)) (succ (nmax (height y) (height z)))))) + +(declare-fun tinsert-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tinsert-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tinsert-all x (cons n l)) (tinsert (tinsert-all x l) n)))) + +(declare-fun tsize (Tree) Nat) +(assert (= (tsize leaf) zero)) +(assert (forall ((x Nat) (l Tree) (r Tree)) (= (tsize (node x l r)) (succ (plus (tsize l) (tsize r)))))) + +(declare-fun tremove (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tremove leaf i) leaf))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less i d) (= (tremove (node d l r) i) (node d (tremove l i) r))))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less d i) (= (tremove (node d l r) i) (node d l (tremove r i)))))) +(assert (forall ((d Nat) (r Tree)) (= (tremove (node d leaf r) d) r))) +(assert (forall ((d Nat) (ld Nat) (ll Tree) (lr Tree) (r Tree)) (= (tremove (node d (node ld ll lr) r) d) (node ld (tremove (node ld ll lr) ld) r)))) + +(declare-fun tremove-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tremove-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tremove-all x (cons n l)) (tremove-all (tremove x n) l)))) + +(declare-fun tcontains (Tree Nat) Bool) +(assert (forall ((i Nat)) (not (tcontains leaf i)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tcontains (node d l r) i) (or (= d i) (tcontains l i) (tcontains r i))))) + +(declare-fun tsorted (Tree) Bool) +(assert (tsorted leaf)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (tsorted (node d l r)) (and (tsorted l) (tsorted r) + (forall ((x Nat)) (=> (tcontains l x) (leq x d))) + (forall ((x Nat)) (=> (tcontains r x) (less d x))))))) + +(declare-fun tmember (Tree Nat) Bool) +(assert (forall ((x Nat)) (not (tmember leaf x)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tmember (node d l r) i) (ite (= i d) true (tmember (ite (less d i) r l) i))))) + +(declare-fun content (Tree) Lst) +(assert (= (content leaf) nil)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (content (node d l r)) (append (content l) (cons d (content r)))))) + +; proven +(assert +(forall ((t Tree) (n Nat)) (= (tsize (tinsert t n)) (succ (tsize t)))) ; G-bsearch-tree-1 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize t) (tsize (tinsert-all t l)))) ; G-bsearch-tree-2 +) +(assert +(forall ((l Lst) (t Tree)) (= (tsize (tinsert-all t l)) (plus (tsize t) (len l)))) ; G-bsearch-tree-3 +) +(assert +(forall ((t Tree) (n Nat)) (leq (tsize (tremove t n)) (tsize t))) ; G-bsearch-tree-4 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize (tremove-all t l)) (tsize t))) ; G-bsearch-tree-5 +) +(assert +(forall ((x Tree) (i Nat)) (tcontains (tinsert x i) i)) ; G-bsearch-tree-6 +) +(assert +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tcontains x j)) (tcontains (tinsert x i) j))) ; G-bsearch-tree-7 +) +(assert +(forall ((x Tree) (i Nat)) (=> (tsorted x) (tsorted (tinsert x i)))) ; G-bsearch-tree-8 +) +(assert +(forall ((x Tree) (i Nat)) (tmember (tinsert x i) i)) ; G-bsearch-tree-9 +) +(assert +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tmember x j)) (tmember (tinsert x i) j))) ; G-bsearch-tree-10 +) +(assert +(forall ((i Nat) (x Tree)) (=> (tsorted x) (= (tcontains x i) (tmember x i)))) ; G-bsearch-tree-11 +) +(assert +(forall ((i Nat) (x Tree)) (=> (tmember x i) (tcontains x i))) ; G-bsearch-tree-12 +) +(assert +(forall ((l Lst) (x Tree) (n Nat)) (= (tinsert-all (tinsert x n) l) (tinsert-all x (append l (cons n nil))))) ; G-bsearch-tree-13 +) + +; conjecture +(assert (not +(forall ((x Lst)) (tsorted (tinsert-all leaf x))) ; G-bsearch-tree-14 +)) +(check-sat) diff --git a/bench_adt/LEON/bsearch-tree-goal15.smt2 b/bench_adt/LEON/bsearch-tree-goal15.smt2 new file mode 100644 index 000000000..b2cc6c135 --- /dev/null +++ b/bench_adt/LEON/bsearch-tree-goal15.smt2 @@ -0,0 +1,129 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +(declare-fun nmax (Nat Nat) Nat) +(assert (forall ((n Nat) (m Nat)) (= (nmax n m) (ite (less n m) m n)))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun mem (Nat Lst) Bool) +(assert (forall ((x Nat)) (not (mem x nil)))) +(assert (forall ((x Nat) (y Nat) (z Lst)) (= (mem x (cons y z)) (or (= x y) (mem x z))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Nat) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Nat) (i Nat)) (= (tinsert (node d l r) i) (ite (less d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun height (Tree) Nat) +(assert (= (height leaf) zero)) +(assert (forall ((x Nat) (y Tree) (z Tree)) (= (height (node x y z)) (succ (nmax (height y) (height z)))))) + +(declare-fun tinsert-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tinsert-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tinsert-all x (cons n l)) (tinsert (tinsert-all x l) n)))) + +(declare-fun tsize (Tree) Nat) +(assert (= (tsize leaf) zero)) +(assert (forall ((x Nat) (l Tree) (r Tree)) (= (tsize (node x l r)) (succ (plus (tsize l) (tsize r)))))) + +(declare-fun tremove (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tremove leaf i) leaf))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less i d) (= (tremove (node d l r) i) (node d (tremove l i) r))))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less d i) (= (tremove (node d l r) i) (node d l (tremove r i)))))) +(assert (forall ((d Nat) (r Tree)) (= (tremove (node d leaf r) d) r))) +(assert (forall ((d Nat) (ld Nat) (ll Tree) (lr Tree) (r Tree)) (= (tremove (node d (node ld ll lr) r) d) (node ld (tremove (node ld ll lr) ld) r)))) + +(declare-fun tremove-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tremove-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tremove-all x (cons n l)) (tremove-all (tremove x n) l)))) + +(declare-fun tcontains (Tree Nat) Bool) +(assert (forall ((i Nat)) (not (tcontains leaf i)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tcontains (node d l r) i) (or (= d i) (tcontains l i) (tcontains r i))))) + +(declare-fun tsorted (Tree) Bool) +(assert (tsorted leaf)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (tsorted (node d l r)) (and (tsorted l) (tsorted r) + (forall ((x Nat)) (=> (tcontains l x) (leq x d))) + (forall ((x Nat)) (=> (tcontains r x) (less d x))))))) + +(declare-fun tmember (Tree Nat) Bool) +(assert (forall ((x Nat)) (not (tmember leaf x)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tmember (node d l r) i) (ite (= i d) true (tmember (ite (less d i) r l) i))))) + +(declare-fun content (Tree) Lst) +(assert (= (content leaf) nil)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (content (node d l r)) (append (content l) (cons d (content r)))))) + +; proven +(assert +(forall ((t Tree) (n Nat)) (= (tsize (tinsert t n)) (succ (tsize t)))) ; G-bsearch-tree-1 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize t) (tsize (tinsert-all t l)))) ; G-bsearch-tree-2 +) +(assert +(forall ((l Lst) (t Tree)) (= (tsize (tinsert-all t l)) (plus (tsize t) (len l)))) ; G-bsearch-tree-3 +) +(assert +(forall ((t Tree) (n Nat)) (leq (tsize (tremove t n)) (tsize t))) ; G-bsearch-tree-4 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize (tremove-all t l)) (tsize t))) ; G-bsearch-tree-5 +) +(assert +(forall ((x Tree) (i Nat)) (tcontains (tinsert x i) i)) ; G-bsearch-tree-6 +) +(assert +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tcontains x j)) (tcontains (tinsert x i) j))) ; G-bsearch-tree-7 +) +(assert +(forall ((x Tree) (i Nat)) (=> (tsorted x) (tsorted (tinsert x i)))) ; G-bsearch-tree-8 +) +(assert +(forall ((x Tree) (i Nat)) (tmember (tinsert x i) i)) ; G-bsearch-tree-9 +) +(assert +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tmember x j)) (tmember (tinsert x i) j))) ; G-bsearch-tree-10 +) +(assert +(forall ((i Nat) (x Tree)) (=> (tsorted x) (= (tcontains x i) (tmember x i)))) ; G-bsearch-tree-11 +) +(assert +(forall ((i Nat) (x Tree)) (=> (tmember x i) (tcontains x i))) ; G-bsearch-tree-12 +) +(assert +(forall ((l Lst) (x Tree) (n Nat)) (= (tinsert-all (tinsert x n) l) (tinsert-all x (append l (cons n nil))))) ; G-bsearch-tree-13 +) +(assert +(forall ((x Lst)) (tsorted (tinsert-all leaf x))) ; G-bsearch-tree-14 +) + +; conjecture +(assert (not +(forall ((x Lst) (i Nat)) (= (mem i x) (tcontains (tinsert-all leaf x) i))) ; G-bsearch-tree-15 +)) +(check-sat) diff --git a/bench_adt/LEON/bsearch-tree-goal16.smt2 b/bench_adt/LEON/bsearch-tree-goal16.smt2 new file mode 100644 index 000000000..03dfe2b72 --- /dev/null +++ b/bench_adt/LEON/bsearch-tree-goal16.smt2 @@ -0,0 +1,132 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +(declare-fun nmax (Nat Nat) Nat) +(assert (forall ((n Nat) (m Nat)) (= (nmax n m) (ite (less n m) m n)))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun mem (Nat Lst) Bool) +(assert (forall ((x Nat)) (not (mem x nil)))) +(assert (forall ((x Nat) (y Nat) (z Lst)) (= (mem x (cons y z)) (or (= x y) (mem x z))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Nat) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Nat) (i Nat)) (= (tinsert (node d l r) i) (ite (less d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun height (Tree) Nat) +(assert (= (height leaf) zero)) +(assert (forall ((x Nat) (y Tree) (z Tree)) (= (height (node x y z)) (succ (nmax (height y) (height z)))))) + +(declare-fun tinsert-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tinsert-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tinsert-all x (cons n l)) (tinsert (tinsert-all x l) n)))) + +(declare-fun tsize (Tree) Nat) +(assert (= (tsize leaf) zero)) +(assert (forall ((x Nat) (l Tree) (r Tree)) (= (tsize (node x l r)) (succ (plus (tsize l) (tsize r)))))) + +(declare-fun tremove (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tremove leaf i) leaf))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less i d) (= (tremove (node d l r) i) (node d (tremove l i) r))))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less d i) (= (tremove (node d l r) i) (node d l (tremove r i)))))) +(assert (forall ((d Nat) (r Tree)) (= (tremove (node d leaf r) d) r))) +(assert (forall ((d Nat) (ld Nat) (ll Tree) (lr Tree) (r Tree)) (= (tremove (node d (node ld ll lr) r) d) (node ld (tremove (node ld ll lr) ld) r)))) + +(declare-fun tremove-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tremove-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tremove-all x (cons n l)) (tremove-all (tremove x n) l)))) + +(declare-fun tcontains (Tree Nat) Bool) +(assert (forall ((i Nat)) (not (tcontains leaf i)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tcontains (node d l r) i) (or (= d i) (tcontains l i) (tcontains r i))))) + +(declare-fun tsorted (Tree) Bool) +(assert (tsorted leaf)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (tsorted (node d l r)) (and (tsorted l) (tsorted r) + (forall ((x Nat)) (=> (tcontains l x) (leq x d))) + (forall ((x Nat)) (=> (tcontains r x) (less d x))))))) + +(declare-fun tmember (Tree Nat) Bool) +(assert (forall ((x Nat)) (not (tmember leaf x)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tmember (node d l r) i) (ite (= i d) true (tmember (ite (less d i) r l) i))))) + +(declare-fun content (Tree) Lst) +(assert (= (content leaf) nil)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (content (node d l r)) (append (content l) (cons d (content r)))))) + +; proven +(assert +(forall ((t Tree) (n Nat)) (= (tsize (tinsert t n)) (succ (tsize t)))) ; G-bsearch-tree-1 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize t) (tsize (tinsert-all t l)))) ; G-bsearch-tree-2 +) +(assert +(forall ((l Lst) (t Tree)) (= (tsize (tinsert-all t l)) (plus (tsize t) (len l)))) ; G-bsearch-tree-3 +) +(assert +(forall ((t Tree) (n Nat)) (leq (tsize (tremove t n)) (tsize t))) ; G-bsearch-tree-4 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize (tremove-all t l)) (tsize t))) ; G-bsearch-tree-5 +) +(assert +(forall ((x Tree) (i Nat)) (tcontains (tinsert x i) i)) ; G-bsearch-tree-6 +) +(assert +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tcontains x j)) (tcontains (tinsert x i) j))) ; G-bsearch-tree-7 +) +(assert +(forall ((x Tree) (i Nat)) (=> (tsorted x) (tsorted (tinsert x i)))) ; G-bsearch-tree-8 +) +(assert +(forall ((x Tree) (i Nat)) (tmember (tinsert x i) i)) ; G-bsearch-tree-9 +) +(assert +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tmember x j)) (tmember (tinsert x i) j))) ; G-bsearch-tree-10 +) +(assert +(forall ((i Nat) (x Tree)) (=> (tsorted x) (= (tcontains x i) (tmember x i)))) ; G-bsearch-tree-11 +) +(assert +(forall ((i Nat) (x Tree)) (=> (tmember x i) (tcontains x i))) ; G-bsearch-tree-12 +) +(assert +(forall ((l Lst) (x Tree) (n Nat)) (= (tinsert-all (tinsert x n) l) (tinsert-all x (append l (cons n nil))))) ; G-bsearch-tree-13 +) +(assert +(forall ((x Lst)) (tsorted (tinsert-all leaf x))) ; G-bsearch-tree-14 +) +(assert +(forall ((x Lst) (i Nat)) (= (mem i x) (tcontains (tinsert-all leaf x) i))) ; G-bsearch-tree-15 +) + +; conjecture +(assert (not +(forall ((x Lst) (y Lst) (i Nat)) (= (mem i (append x y)) (or (mem i x) (mem i y)))) ; G-bsearch-tree-16 +)) +(check-sat) diff --git a/bench_adt/LEON/bsearch-tree-goal17.smt2 b/bench_adt/LEON/bsearch-tree-goal17.smt2 new file mode 100644 index 000000000..c5875bc19 --- /dev/null +++ b/bench_adt/LEON/bsearch-tree-goal17.smt2 @@ -0,0 +1,135 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +(declare-fun nmax (Nat Nat) Nat) +(assert (forall ((n Nat) (m Nat)) (= (nmax n m) (ite (less n m) m n)))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun mem (Nat Lst) Bool) +(assert (forall ((x Nat)) (not (mem x nil)))) +(assert (forall ((x Nat) (y Nat) (z Lst)) (= (mem x (cons y z)) (or (= x y) (mem x z))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Nat) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Nat) (i Nat)) (= (tinsert (node d l r) i) (ite (less d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun height (Tree) Nat) +(assert (= (height leaf) zero)) +(assert (forall ((x Nat) (y Tree) (z Tree)) (= (height (node x y z)) (succ (nmax (height y) (height z)))))) + +(declare-fun tinsert-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tinsert-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tinsert-all x (cons n l)) (tinsert (tinsert-all x l) n)))) + +(declare-fun tsize (Tree) Nat) +(assert (= (tsize leaf) zero)) +(assert (forall ((x Nat) (l Tree) (r Tree)) (= (tsize (node x l r)) (succ (plus (tsize l) (tsize r)))))) + +(declare-fun tremove (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tremove leaf i) leaf))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less i d) (= (tremove (node d l r) i) (node d (tremove l i) r))))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less d i) (= (tremove (node d l r) i) (node d l (tremove r i)))))) +(assert (forall ((d Nat) (r Tree)) (= (tremove (node d leaf r) d) r))) +(assert (forall ((d Nat) (ld Nat) (ll Tree) (lr Tree) (r Tree)) (= (tremove (node d (node ld ll lr) r) d) (node ld (tremove (node ld ll lr) ld) r)))) + +(declare-fun tremove-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tremove-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tremove-all x (cons n l)) (tremove-all (tremove x n) l)))) + +(declare-fun tcontains (Tree Nat) Bool) +(assert (forall ((i Nat)) (not (tcontains leaf i)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tcontains (node d l r) i) (or (= d i) (tcontains l i) (tcontains r i))))) + +(declare-fun tsorted (Tree) Bool) +(assert (tsorted leaf)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (tsorted (node d l r)) (and (tsorted l) (tsorted r) + (forall ((x Nat)) (=> (tcontains l x) (leq x d))) + (forall ((x Nat)) (=> (tcontains r x) (less d x))))))) + +(declare-fun tmember (Tree Nat) Bool) +(assert (forall ((x Nat)) (not (tmember leaf x)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tmember (node d l r) i) (ite (= i d) true (tmember (ite (less d i) r l) i))))) + +(declare-fun content (Tree) Lst) +(assert (= (content leaf) nil)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (content (node d l r)) (append (content l) (cons d (content r)))))) + +; proven +(assert +(forall ((t Tree) (n Nat)) (= (tsize (tinsert t n)) (succ (tsize t)))) ; G-bsearch-tree-1 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize t) (tsize (tinsert-all t l)))) ; G-bsearch-tree-2 +) +(assert +(forall ((l Lst) (t Tree)) (= (tsize (tinsert-all t l)) (plus (tsize t) (len l)))) ; G-bsearch-tree-3 +) +(assert +(forall ((t Tree) (n Nat)) (leq (tsize (tremove t n)) (tsize t))) ; G-bsearch-tree-4 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize (tremove-all t l)) (tsize t))) ; G-bsearch-tree-5 +) +(assert +(forall ((x Tree) (i Nat)) (tcontains (tinsert x i) i)) ; G-bsearch-tree-6 +) +(assert +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tcontains x j)) (tcontains (tinsert x i) j))) ; G-bsearch-tree-7 +) +(assert +(forall ((x Tree) (i Nat)) (=> (tsorted x) (tsorted (tinsert x i)))) ; G-bsearch-tree-8 +) +(assert +(forall ((x Tree) (i Nat)) (tmember (tinsert x i) i)) ; G-bsearch-tree-9 +) +(assert +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tmember x j)) (tmember (tinsert x i) j))) ; G-bsearch-tree-10 +) +(assert +(forall ((i Nat) (x Tree)) (=> (tsorted x) (= (tcontains x i) (tmember x i)))) ; G-bsearch-tree-11 +) +(assert +(forall ((i Nat) (x Tree)) (=> (tmember x i) (tcontains x i))) ; G-bsearch-tree-12 +) +(assert +(forall ((l Lst) (x Tree) (n Nat)) (= (tinsert-all (tinsert x n) l) (tinsert-all x (append l (cons n nil))))) ; G-bsearch-tree-13 +) +(assert +(forall ((x Lst)) (tsorted (tinsert-all leaf x))) ; G-bsearch-tree-14 +) +(assert +(forall ((x Lst) (i Nat)) (= (mem i x) (tcontains (tinsert-all leaf x) i))) ; G-bsearch-tree-15 +) +(assert +(forall ((x Lst) (y Lst) (i Nat)) (= (mem i (append x y)) (or (mem i x) (mem i y)))) ; G-bsearch-tree-16 +) + +; conjecture +(assert (not +(forall ((x Tree) (i Nat)) (=> (tsorted x) (= (tmember x i) (mem i (content x))))) ; G-bsearch-tree-17 +)) +(check-sat) diff --git a/bench_adt/LEON/bsearch-tree-goal18.smt2 b/bench_adt/LEON/bsearch-tree-goal18.smt2 new file mode 100644 index 000000000..b3dd1cb11 --- /dev/null +++ b/bench_adt/LEON/bsearch-tree-goal18.smt2 @@ -0,0 +1,138 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +(declare-fun nmax (Nat Nat) Nat) +(assert (forall ((n Nat) (m Nat)) (= (nmax n m) (ite (less n m) m n)))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun mem (Nat Lst) Bool) +(assert (forall ((x Nat)) (not (mem x nil)))) +(assert (forall ((x Nat) (y Nat) (z Lst)) (= (mem x (cons y z)) (or (= x y) (mem x z))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Nat) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Nat) (i Nat)) (= (tinsert (node d l r) i) (ite (less d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun height (Tree) Nat) +(assert (= (height leaf) zero)) +(assert (forall ((x Nat) (y Tree) (z Tree)) (= (height (node x y z)) (succ (nmax (height y) (height z)))))) + +(declare-fun tinsert-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tinsert-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tinsert-all x (cons n l)) (tinsert (tinsert-all x l) n)))) + +(declare-fun tsize (Tree) Nat) +(assert (= (tsize leaf) zero)) +(assert (forall ((x Nat) (l Tree) (r Tree)) (= (tsize (node x l r)) (succ (plus (tsize l) (tsize r)))))) + +(declare-fun tremove (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tremove leaf i) leaf))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less i d) (= (tremove (node d l r) i) (node d (tremove l i) r))))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less d i) (= (tremove (node d l r) i) (node d l (tremove r i)))))) +(assert (forall ((d Nat) (r Tree)) (= (tremove (node d leaf r) d) r))) +(assert (forall ((d Nat) (ld Nat) (ll Tree) (lr Tree) (r Tree)) (= (tremove (node d (node ld ll lr) r) d) (node ld (tremove (node ld ll lr) ld) r)))) + +(declare-fun tremove-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tremove-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tremove-all x (cons n l)) (tremove-all (tremove x n) l)))) + +(declare-fun tcontains (Tree Nat) Bool) +(assert (forall ((i Nat)) (not (tcontains leaf i)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tcontains (node d l r) i) (or (= d i) (tcontains l i) (tcontains r i))))) + +(declare-fun tsorted (Tree) Bool) +(assert (tsorted leaf)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (tsorted (node d l r)) (and (tsorted l) (tsorted r) + (forall ((x Nat)) (=> (tcontains l x) (leq x d))) + (forall ((x Nat)) (=> (tcontains r x) (less d x))))))) + +(declare-fun tmember (Tree Nat) Bool) +(assert (forall ((x Nat)) (not (tmember leaf x)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tmember (node d l r) i) (ite (= i d) true (tmember (ite (less d i) r l) i))))) + +(declare-fun content (Tree) Lst) +(assert (= (content leaf) nil)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (content (node d l r)) (append (content l) (cons d (content r)))))) + +; proven +(assert +(forall ((t Tree) (n Nat)) (= (tsize (tinsert t n)) (succ (tsize t)))) ; G-bsearch-tree-1 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize t) (tsize (tinsert-all t l)))) ; G-bsearch-tree-2 +) +(assert +(forall ((l Lst) (t Tree)) (= (tsize (tinsert-all t l)) (plus (tsize t) (len l)))) ; G-bsearch-tree-3 +) +(assert +(forall ((t Tree) (n Nat)) (leq (tsize (tremove t n)) (tsize t))) ; G-bsearch-tree-4 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize (tremove-all t l)) (tsize t))) ; G-bsearch-tree-5 +) +(assert +(forall ((x Tree) (i Nat)) (tcontains (tinsert x i) i)) ; G-bsearch-tree-6 +) +(assert +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tcontains x j)) (tcontains (tinsert x i) j))) ; G-bsearch-tree-7 +) +(assert +(forall ((x Tree) (i Nat)) (=> (tsorted x) (tsorted (tinsert x i)))) ; G-bsearch-tree-8 +) +(assert +(forall ((x Tree) (i Nat)) (tmember (tinsert x i) i)) ; G-bsearch-tree-9 +) +(assert +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tmember x j)) (tmember (tinsert x i) j))) ; G-bsearch-tree-10 +) +(assert +(forall ((i Nat) (x Tree)) (=> (tsorted x) (= (tcontains x i) (tmember x i)))) ; G-bsearch-tree-11 +) +(assert +(forall ((i Nat) (x Tree)) (=> (tmember x i) (tcontains x i))) ; G-bsearch-tree-12 +) +(assert +(forall ((l Lst) (x Tree) (n Nat)) (= (tinsert-all (tinsert x n) l) (tinsert-all x (append l (cons n nil))))) ; G-bsearch-tree-13 +) +(assert +(forall ((x Lst)) (tsorted (tinsert-all leaf x))) ; G-bsearch-tree-14 +) +(assert +(forall ((x Lst) (i Nat)) (= (mem i x) (tcontains (tinsert-all leaf x) i))) ; G-bsearch-tree-15 +) +(assert +(forall ((x Lst) (y Lst) (i Nat)) (= (mem i (append x y)) (or (mem i x) (mem i y)))) ; G-bsearch-tree-16 +) +(assert +(forall ((x Tree) (i Nat)) (=> (tsorted x) (= (tmember x i) (mem i (content x))))) ; G-bsearch-tree-17 +) + +; conjecture +(assert (not +(forall ((x Tree) (i Nat)) (= (tcontains x i) (mem i (content x)))) ; G-bsearch-tree-18 +)) +(check-sat) diff --git a/bench_adt/LEON/bsearch-tree-goal2.smt2 b/bench_adt/LEON/bsearch-tree-goal2.smt2 new file mode 100644 index 000000000..698325dc2 --- /dev/null +++ b/bench_adt/LEON/bsearch-tree-goal2.smt2 @@ -0,0 +1,90 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +(declare-fun nmax (Nat Nat) Nat) +(assert (forall ((n Nat) (m Nat)) (= (nmax n m) (ite (less n m) m n)))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun mem (Nat Lst) Bool) +(assert (forall ((x Nat)) (not (mem x nil)))) +(assert (forall ((x Nat) (y Nat) (z Lst)) (= (mem x (cons y z)) (or (= x y) (mem x z))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Nat) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Nat) (i Nat)) (= (tinsert (node d l r) i) (ite (less d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun height (Tree) Nat) +(assert (= (height leaf) zero)) +(assert (forall ((x Nat) (y Tree) (z Tree)) (= (height (node x y z)) (succ (nmax (height y) (height z)))))) + +(declare-fun tinsert-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tinsert-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tinsert-all x (cons n l)) (tinsert (tinsert-all x l) n)))) + +(declare-fun tsize (Tree) Nat) +(assert (= (tsize leaf) zero)) +(assert (forall ((x Nat) (l Tree) (r Tree)) (= (tsize (node x l r)) (succ (plus (tsize l) (tsize r)))))) + +(declare-fun tremove (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tremove leaf i) leaf))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less i d) (= (tremove (node d l r) i) (node d (tremove l i) r))))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less d i) (= (tremove (node d l r) i) (node d l (tremove r i)))))) +(assert (forall ((d Nat) (r Tree)) (= (tremove (node d leaf r) d) r))) +(assert (forall ((d Nat) (ld Nat) (ll Tree) (lr Tree) (r Tree)) (= (tremove (node d (node ld ll lr) r) d) (node ld (tremove (node ld ll lr) ld) r)))) + +(declare-fun tremove-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tremove-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tremove-all x (cons n l)) (tremove-all (tremove x n) l)))) + +(declare-fun tcontains (Tree Nat) Bool) +(assert (forall ((i Nat)) (not (tcontains leaf i)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tcontains (node d l r) i) (or (= d i) (tcontains l i) (tcontains r i))))) + +(declare-fun tsorted (Tree) Bool) +(assert (tsorted leaf)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (tsorted (node d l r)) (and (tsorted l) (tsorted r) + (forall ((x Nat)) (=> (tcontains l x) (leq x d))) + (forall ((x Nat)) (=> (tcontains r x) (less d x))))))) + +(declare-fun tmember (Tree Nat) Bool) +(assert (forall ((x Nat)) (not (tmember leaf x)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tmember (node d l r) i) (ite (= i d) true (tmember (ite (less d i) r l) i))))) + +(declare-fun content (Tree) Lst) +(assert (= (content leaf) nil)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (content (node d l r)) (append (content l) (cons d (content r)))))) + +; proven +(assert +(forall ((t Tree) (n Nat)) (= (tsize (tinsert t n)) (succ (tsize t)))) ; G-bsearch-tree-1 +) + +; conjecture +(assert (not +(forall ((l Lst) (t Tree)) (leq (tsize t) (tsize (tinsert-all t l)))) ; G-bsearch-tree-2 +)) +(check-sat) diff --git a/bench_adt/LEON/bsearch-tree-goal3.smt2 b/bench_adt/LEON/bsearch-tree-goal3.smt2 new file mode 100644 index 000000000..9f8d049aa --- /dev/null +++ b/bench_adt/LEON/bsearch-tree-goal3.smt2 @@ -0,0 +1,93 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +(declare-fun nmax (Nat Nat) Nat) +(assert (forall ((n Nat) (m Nat)) (= (nmax n m) (ite (less n m) m n)))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun mem (Nat Lst) Bool) +(assert (forall ((x Nat)) (not (mem x nil)))) +(assert (forall ((x Nat) (y Nat) (z Lst)) (= (mem x (cons y z)) (or (= x y) (mem x z))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Nat) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Nat) (i Nat)) (= (tinsert (node d l r) i) (ite (less d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun height (Tree) Nat) +(assert (= (height leaf) zero)) +(assert (forall ((x Nat) (y Tree) (z Tree)) (= (height (node x y z)) (succ (nmax (height y) (height z)))))) + +(declare-fun tinsert-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tinsert-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tinsert-all x (cons n l)) (tinsert (tinsert-all x l) n)))) + +(declare-fun tsize (Tree) Nat) +(assert (= (tsize leaf) zero)) +(assert (forall ((x Nat) (l Tree) (r Tree)) (= (tsize (node x l r)) (succ (plus (tsize l) (tsize r)))))) + +(declare-fun tremove (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tremove leaf i) leaf))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less i d) (= (tremove (node d l r) i) (node d (tremove l i) r))))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less d i) (= (tremove (node d l r) i) (node d l (tremove r i)))))) +(assert (forall ((d Nat) (r Tree)) (= (tremove (node d leaf r) d) r))) +(assert (forall ((d Nat) (ld Nat) (ll Tree) (lr Tree) (r Tree)) (= (tremove (node d (node ld ll lr) r) d) (node ld (tremove (node ld ll lr) ld) r)))) + +(declare-fun tremove-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tremove-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tremove-all x (cons n l)) (tremove-all (tremove x n) l)))) + +(declare-fun tcontains (Tree Nat) Bool) +(assert (forall ((i Nat)) (not (tcontains leaf i)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tcontains (node d l r) i) (or (= d i) (tcontains l i) (tcontains r i))))) + +(declare-fun tsorted (Tree) Bool) +(assert (tsorted leaf)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (tsorted (node d l r)) (and (tsorted l) (tsorted r) + (forall ((x Nat)) (=> (tcontains l x) (leq x d))) + (forall ((x Nat)) (=> (tcontains r x) (less d x))))))) + +(declare-fun tmember (Tree Nat) Bool) +(assert (forall ((x Nat)) (not (tmember leaf x)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tmember (node d l r) i) (ite (= i d) true (tmember (ite (less d i) r l) i))))) + +(declare-fun content (Tree) Lst) +(assert (= (content leaf) nil)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (content (node d l r)) (append (content l) (cons d (content r)))))) + +; proven +(assert +(forall ((t Tree) (n Nat)) (= (tsize (tinsert t n)) (succ (tsize t)))) ; G-bsearch-tree-1 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize t) (tsize (tinsert-all t l)))) ; G-bsearch-tree-2 +) + +; conjecture +(assert (not +(forall ((l Lst) (t Tree)) (= (tsize (tinsert-all t l)) (plus (tsize t) (len l)))) ; G-bsearch-tree-3 +)) +(check-sat) diff --git a/bench_adt/LEON/bsearch-tree-goal4.smt2 b/bench_adt/LEON/bsearch-tree-goal4.smt2 new file mode 100644 index 000000000..d1de57559 --- /dev/null +++ b/bench_adt/LEON/bsearch-tree-goal4.smt2 @@ -0,0 +1,96 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +(declare-fun nmax (Nat Nat) Nat) +(assert (forall ((n Nat) (m Nat)) (= (nmax n m) (ite (less n m) m n)))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun mem (Nat Lst) Bool) +(assert (forall ((x Nat)) (not (mem x nil)))) +(assert (forall ((x Nat) (y Nat) (z Lst)) (= (mem x (cons y z)) (or (= x y) (mem x z))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Nat) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Nat) (i Nat)) (= (tinsert (node d l r) i) (ite (less d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun height (Tree) Nat) +(assert (= (height leaf) zero)) +(assert (forall ((x Nat) (y Tree) (z Tree)) (= (height (node x y z)) (succ (nmax (height y) (height z)))))) + +(declare-fun tinsert-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tinsert-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tinsert-all x (cons n l)) (tinsert (tinsert-all x l) n)))) + +(declare-fun tsize (Tree) Nat) +(assert (= (tsize leaf) zero)) +(assert (forall ((x Nat) (l Tree) (r Tree)) (= (tsize (node x l r)) (succ (plus (tsize l) (tsize r)))))) + +(declare-fun tremove (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tremove leaf i) leaf))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less i d) (= (tremove (node d l r) i) (node d (tremove l i) r))))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less d i) (= (tremove (node d l r) i) (node d l (tremove r i)))))) +(assert (forall ((d Nat) (r Tree)) (= (tremove (node d leaf r) d) r))) +(assert (forall ((d Nat) (ld Nat) (ll Tree) (lr Tree) (r Tree)) (= (tremove (node d (node ld ll lr) r) d) (node ld (tremove (node ld ll lr) ld) r)))) + +(declare-fun tremove-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tremove-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tremove-all x (cons n l)) (tremove-all (tremove x n) l)))) + +(declare-fun tcontains (Tree Nat) Bool) +(assert (forall ((i Nat)) (not (tcontains leaf i)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tcontains (node d l r) i) (or (= d i) (tcontains l i) (tcontains r i))))) + +(declare-fun tsorted (Tree) Bool) +(assert (tsorted leaf)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (tsorted (node d l r)) (and (tsorted l) (tsorted r) + (forall ((x Nat)) (=> (tcontains l x) (leq x d))) + (forall ((x Nat)) (=> (tcontains r x) (less d x))))))) + +(declare-fun tmember (Tree Nat) Bool) +(assert (forall ((x Nat)) (not (tmember leaf x)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tmember (node d l r) i) (ite (= i d) true (tmember (ite (less d i) r l) i))))) + +(declare-fun content (Tree) Lst) +(assert (= (content leaf) nil)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (content (node d l r)) (append (content l) (cons d (content r)))))) + +; proven +(assert +(forall ((t Tree) (n Nat)) (= (tsize (tinsert t n)) (succ (tsize t)))) ; G-bsearch-tree-1 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize t) (tsize (tinsert-all t l)))) ; G-bsearch-tree-2 +) +(assert +(forall ((l Lst) (t Tree)) (= (tsize (tinsert-all t l)) (plus (tsize t) (len l)))) ; G-bsearch-tree-3 +) + +; conjecture +(assert (not +(forall ((t Tree) (n Nat)) (leq (tsize (tremove t n)) (tsize t))) ; G-bsearch-tree-4 +)) +(check-sat) diff --git a/bench_adt/LEON/bsearch-tree-goal5.smt2 b/bench_adt/LEON/bsearch-tree-goal5.smt2 new file mode 100644 index 000000000..56d99b979 --- /dev/null +++ b/bench_adt/LEON/bsearch-tree-goal5.smt2 @@ -0,0 +1,99 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +(declare-fun nmax (Nat Nat) Nat) +(assert (forall ((n Nat) (m Nat)) (= (nmax n m) (ite (less n m) m n)))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun mem (Nat Lst) Bool) +(assert (forall ((x Nat)) (not (mem x nil)))) +(assert (forall ((x Nat) (y Nat) (z Lst)) (= (mem x (cons y z)) (or (= x y) (mem x z))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Nat) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Nat) (i Nat)) (= (tinsert (node d l r) i) (ite (less d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun height (Tree) Nat) +(assert (= (height leaf) zero)) +(assert (forall ((x Nat) (y Tree) (z Tree)) (= (height (node x y z)) (succ (nmax (height y) (height z)))))) + +(declare-fun tinsert-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tinsert-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tinsert-all x (cons n l)) (tinsert (tinsert-all x l) n)))) + +(declare-fun tsize (Tree) Nat) +(assert (= (tsize leaf) zero)) +(assert (forall ((x Nat) (l Tree) (r Tree)) (= (tsize (node x l r)) (succ (plus (tsize l) (tsize r)))))) + +(declare-fun tremove (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tremove leaf i) leaf))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less i d) (= (tremove (node d l r) i) (node d (tremove l i) r))))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less d i) (= (tremove (node d l r) i) (node d l (tremove r i)))))) +(assert (forall ((d Nat) (r Tree)) (= (tremove (node d leaf r) d) r))) +(assert (forall ((d Nat) (ld Nat) (ll Tree) (lr Tree) (r Tree)) (= (tremove (node d (node ld ll lr) r) d) (node ld (tremove (node ld ll lr) ld) r)))) + +(declare-fun tremove-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tremove-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tremove-all x (cons n l)) (tremove-all (tremove x n) l)))) + +(declare-fun tcontains (Tree Nat) Bool) +(assert (forall ((i Nat)) (not (tcontains leaf i)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tcontains (node d l r) i) (or (= d i) (tcontains l i) (tcontains r i))))) + +(declare-fun tsorted (Tree) Bool) +(assert (tsorted leaf)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (tsorted (node d l r)) (and (tsorted l) (tsorted r) + (forall ((x Nat)) (=> (tcontains l x) (leq x d))) + (forall ((x Nat)) (=> (tcontains r x) (less d x))))))) + +(declare-fun tmember (Tree Nat) Bool) +(assert (forall ((x Nat)) (not (tmember leaf x)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tmember (node d l r) i) (ite (= i d) true (tmember (ite (less d i) r l) i))))) + +(declare-fun content (Tree) Lst) +(assert (= (content leaf) nil)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (content (node d l r)) (append (content l) (cons d (content r)))))) + +; proven +(assert +(forall ((t Tree) (n Nat)) (= (tsize (tinsert t n)) (succ (tsize t)))) ; G-bsearch-tree-1 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize t) (tsize (tinsert-all t l)))) ; G-bsearch-tree-2 +) +(assert +(forall ((l Lst) (t Tree)) (= (tsize (tinsert-all t l)) (plus (tsize t) (len l)))) ; G-bsearch-tree-3 +) +(assert +(forall ((t Tree) (n Nat)) (leq (tsize (tremove t n)) (tsize t))) ; G-bsearch-tree-4 +) + +; conjecture +(assert (not +(forall ((l Lst) (t Tree)) (leq (tsize (tremove-all t l)) (tsize t))) ; G-bsearch-tree-5 +)) +(check-sat) diff --git a/bench_adt/LEON/bsearch-tree-goal6.smt2 b/bench_adt/LEON/bsearch-tree-goal6.smt2 new file mode 100644 index 000000000..c20d1a95d --- /dev/null +++ b/bench_adt/LEON/bsearch-tree-goal6.smt2 @@ -0,0 +1,102 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +(declare-fun nmax (Nat Nat) Nat) +(assert (forall ((n Nat) (m Nat)) (= (nmax n m) (ite (less n m) m n)))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun mem (Nat Lst) Bool) +(assert (forall ((x Nat)) (not (mem x nil)))) +(assert (forall ((x Nat) (y Nat) (z Lst)) (= (mem x (cons y z)) (or (= x y) (mem x z))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Nat) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Nat) (i Nat)) (= (tinsert (node d l r) i) (ite (less d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun height (Tree) Nat) +(assert (= (height leaf) zero)) +(assert (forall ((x Nat) (y Tree) (z Tree)) (= (height (node x y z)) (succ (nmax (height y) (height z)))))) + +(declare-fun tinsert-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tinsert-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tinsert-all x (cons n l)) (tinsert (tinsert-all x l) n)))) + +(declare-fun tsize (Tree) Nat) +(assert (= (tsize leaf) zero)) +(assert (forall ((x Nat) (l Tree) (r Tree)) (= (tsize (node x l r)) (succ (plus (tsize l) (tsize r)))))) + +(declare-fun tremove (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tremove leaf i) leaf))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less i d) (= (tremove (node d l r) i) (node d (tremove l i) r))))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less d i) (= (tremove (node d l r) i) (node d l (tremove r i)))))) +(assert (forall ((d Nat) (r Tree)) (= (tremove (node d leaf r) d) r))) +(assert (forall ((d Nat) (ld Nat) (ll Tree) (lr Tree) (r Tree)) (= (tremove (node d (node ld ll lr) r) d) (node ld (tremove (node ld ll lr) ld) r)))) + +(declare-fun tremove-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tremove-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tremove-all x (cons n l)) (tremove-all (tremove x n) l)))) + +(declare-fun tcontains (Tree Nat) Bool) +(assert (forall ((i Nat)) (not (tcontains leaf i)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tcontains (node d l r) i) (or (= d i) (tcontains l i) (tcontains r i))))) + +(declare-fun tsorted (Tree) Bool) +(assert (tsorted leaf)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (tsorted (node d l r)) (and (tsorted l) (tsorted r) + (forall ((x Nat)) (=> (tcontains l x) (leq x d))) + (forall ((x Nat)) (=> (tcontains r x) (less d x))))))) + +(declare-fun tmember (Tree Nat) Bool) +(assert (forall ((x Nat)) (not (tmember leaf x)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tmember (node d l r) i) (ite (= i d) true (tmember (ite (less d i) r l) i))))) + +(declare-fun content (Tree) Lst) +(assert (= (content leaf) nil)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (content (node d l r)) (append (content l) (cons d (content r)))))) + +; proven +(assert +(forall ((t Tree) (n Nat)) (= (tsize (tinsert t n)) (succ (tsize t)))) ; G-bsearch-tree-1 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize t) (tsize (tinsert-all t l)))) ; G-bsearch-tree-2 +) +(assert +(forall ((l Lst) (t Tree)) (= (tsize (tinsert-all t l)) (plus (tsize t) (len l)))) ; G-bsearch-tree-3 +) +(assert +(forall ((t Tree) (n Nat)) (leq (tsize (tremove t n)) (tsize t))) ; G-bsearch-tree-4 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize (tremove-all t l)) (tsize t))) ; G-bsearch-tree-5 +) + +; conjecture +(assert (not +(forall ((x Tree) (i Nat)) (tcontains (tinsert x i) i)) ; G-bsearch-tree-6 +)) +(check-sat) diff --git a/bench_adt/LEON/bsearch-tree-goal7.smt2 b/bench_adt/LEON/bsearch-tree-goal7.smt2 new file mode 100644 index 000000000..bcd817d29 --- /dev/null +++ b/bench_adt/LEON/bsearch-tree-goal7.smt2 @@ -0,0 +1,105 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +(declare-fun nmax (Nat Nat) Nat) +(assert (forall ((n Nat) (m Nat)) (= (nmax n m) (ite (less n m) m n)))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun mem (Nat Lst) Bool) +(assert (forall ((x Nat)) (not (mem x nil)))) +(assert (forall ((x Nat) (y Nat) (z Lst)) (= (mem x (cons y z)) (or (= x y) (mem x z))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Nat) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Nat) (i Nat)) (= (tinsert (node d l r) i) (ite (less d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun height (Tree) Nat) +(assert (= (height leaf) zero)) +(assert (forall ((x Nat) (y Tree) (z Tree)) (= (height (node x y z)) (succ (nmax (height y) (height z)))))) + +(declare-fun tinsert-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tinsert-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tinsert-all x (cons n l)) (tinsert (tinsert-all x l) n)))) + +(declare-fun tsize (Tree) Nat) +(assert (= (tsize leaf) zero)) +(assert (forall ((x Nat) (l Tree) (r Tree)) (= (tsize (node x l r)) (succ (plus (tsize l) (tsize r)))))) + +(declare-fun tremove (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tremove leaf i) leaf))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less i d) (= (tremove (node d l r) i) (node d (tremove l i) r))))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less d i) (= (tremove (node d l r) i) (node d l (tremove r i)))))) +(assert (forall ((d Nat) (r Tree)) (= (tremove (node d leaf r) d) r))) +(assert (forall ((d Nat) (ld Nat) (ll Tree) (lr Tree) (r Tree)) (= (tremove (node d (node ld ll lr) r) d) (node ld (tremove (node ld ll lr) ld) r)))) + +(declare-fun tremove-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tremove-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tremove-all x (cons n l)) (tremove-all (tremove x n) l)))) + +(declare-fun tcontains (Tree Nat) Bool) +(assert (forall ((i Nat)) (not (tcontains leaf i)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tcontains (node d l r) i) (or (= d i) (tcontains l i) (tcontains r i))))) + +(declare-fun tsorted (Tree) Bool) +(assert (tsorted leaf)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (tsorted (node d l r)) (and (tsorted l) (tsorted r) + (forall ((x Nat)) (=> (tcontains l x) (leq x d))) + (forall ((x Nat)) (=> (tcontains r x) (less d x))))))) + +(declare-fun tmember (Tree Nat) Bool) +(assert (forall ((x Nat)) (not (tmember leaf x)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tmember (node d l r) i) (ite (= i d) true (tmember (ite (less d i) r l) i))))) + +(declare-fun content (Tree) Lst) +(assert (= (content leaf) nil)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (content (node d l r)) (append (content l) (cons d (content r)))))) + +; proven +(assert +(forall ((t Tree) (n Nat)) (= (tsize (tinsert t n)) (succ (tsize t)))) ; G-bsearch-tree-1 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize t) (tsize (tinsert-all t l)))) ; G-bsearch-tree-2 +) +(assert +(forall ((l Lst) (t Tree)) (= (tsize (tinsert-all t l)) (plus (tsize t) (len l)))) ; G-bsearch-tree-3 +) +(assert +(forall ((t Tree) (n Nat)) (leq (tsize (tremove t n)) (tsize t))) ; G-bsearch-tree-4 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize (tremove-all t l)) (tsize t))) ; G-bsearch-tree-5 +) +(assert +(forall ((x Tree) (i Nat)) (tcontains (tinsert x i) i)) ; G-bsearch-tree-6 +) + +; conjecture +(assert (not +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tcontains x j)) (tcontains (tinsert x i) j))) ; G-bsearch-tree-7 +)) +(check-sat) diff --git a/bench_adt/LEON/bsearch-tree-goal8.smt2 b/bench_adt/LEON/bsearch-tree-goal8.smt2 new file mode 100644 index 000000000..a686a22e7 --- /dev/null +++ b/bench_adt/LEON/bsearch-tree-goal8.smt2 @@ -0,0 +1,108 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +(declare-fun nmax (Nat Nat) Nat) +(assert (forall ((n Nat) (m Nat)) (= (nmax n m) (ite (less n m) m n)))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun mem (Nat Lst) Bool) +(assert (forall ((x Nat)) (not (mem x nil)))) +(assert (forall ((x Nat) (y Nat) (z Lst)) (= (mem x (cons y z)) (or (= x y) (mem x z))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Nat) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Nat) (i Nat)) (= (tinsert (node d l r) i) (ite (less d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun height (Tree) Nat) +(assert (= (height leaf) zero)) +(assert (forall ((x Nat) (y Tree) (z Tree)) (= (height (node x y z)) (succ (nmax (height y) (height z)))))) + +(declare-fun tinsert-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tinsert-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tinsert-all x (cons n l)) (tinsert (tinsert-all x l) n)))) + +(declare-fun tsize (Tree) Nat) +(assert (= (tsize leaf) zero)) +(assert (forall ((x Nat) (l Tree) (r Tree)) (= (tsize (node x l r)) (succ (plus (tsize l) (tsize r)))))) + +(declare-fun tremove (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tremove leaf i) leaf))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less i d) (= (tremove (node d l r) i) (node d (tremove l i) r))))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less d i) (= (tremove (node d l r) i) (node d l (tremove r i)))))) +(assert (forall ((d Nat) (r Tree)) (= (tremove (node d leaf r) d) r))) +(assert (forall ((d Nat) (ld Nat) (ll Tree) (lr Tree) (r Tree)) (= (tremove (node d (node ld ll lr) r) d) (node ld (tremove (node ld ll lr) ld) r)))) + +(declare-fun tremove-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tremove-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tremove-all x (cons n l)) (tremove-all (tremove x n) l)))) + +(declare-fun tcontains (Tree Nat) Bool) +(assert (forall ((i Nat)) (not (tcontains leaf i)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tcontains (node d l r) i) (or (= d i) (tcontains l i) (tcontains r i))))) + +(declare-fun tsorted (Tree) Bool) +(assert (tsorted leaf)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (tsorted (node d l r)) (and (tsorted l) (tsorted r) + (forall ((x Nat)) (=> (tcontains l x) (leq x d))) + (forall ((x Nat)) (=> (tcontains r x) (less d x))))))) + +(declare-fun tmember (Tree Nat) Bool) +(assert (forall ((x Nat)) (not (tmember leaf x)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tmember (node d l r) i) (ite (= i d) true (tmember (ite (less d i) r l) i))))) + +(declare-fun content (Tree) Lst) +(assert (= (content leaf) nil)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (content (node d l r)) (append (content l) (cons d (content r)))))) + +; proven +(assert +(forall ((t Tree) (n Nat)) (= (tsize (tinsert t n)) (succ (tsize t)))) ; G-bsearch-tree-1 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize t) (tsize (tinsert-all t l)))) ; G-bsearch-tree-2 +) +(assert +(forall ((l Lst) (t Tree)) (= (tsize (tinsert-all t l)) (plus (tsize t) (len l)))) ; G-bsearch-tree-3 +) +(assert +(forall ((t Tree) (n Nat)) (leq (tsize (tremove t n)) (tsize t))) ; G-bsearch-tree-4 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize (tremove-all t l)) (tsize t))) ; G-bsearch-tree-5 +) +(assert +(forall ((x Tree) (i Nat)) (tcontains (tinsert x i) i)) ; G-bsearch-tree-6 +) +(assert +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tcontains x j)) (tcontains (tinsert x i) j))) ; G-bsearch-tree-7 +) + +; conjecture +(assert (not +(forall ((x Tree) (i Nat)) (=> (tsorted x) (tsorted (tinsert x i)))) ; G-bsearch-tree-8 +)) +(check-sat) diff --git a/bench_adt/LEON/bsearch-tree-goal9.smt2 b/bench_adt/LEON/bsearch-tree-goal9.smt2 new file mode 100644 index 000000000..26f81fbf7 --- /dev/null +++ b/bench_adt/LEON/bsearch-tree-goal9.smt2 @@ -0,0 +1,111 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +(declare-fun nmax (Nat Nat) Nat) +(assert (forall ((n Nat) (m Nat)) (= (nmax n m) (ite (less n m) m n)))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Nat) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun mem (Nat Lst) Bool) +(assert (forall ((x Nat)) (not (mem x nil)))) +(assert (forall ((x Nat) (y Nat) (z Lst)) (= (mem x (cons y z)) (or (= x y) (mem x z))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Nat) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Nat) (i Nat)) (= (tinsert (node d l r) i) (ite (less d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun height (Tree) Nat) +(assert (= (height leaf) zero)) +(assert (forall ((x Nat) (y Tree) (z Tree)) (= (height (node x y z)) (succ (nmax (height y) (height z)))))) + +(declare-fun tinsert-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tinsert-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tinsert-all x (cons n l)) (tinsert (tinsert-all x l) n)))) + +(declare-fun tsize (Tree) Nat) +(assert (= (tsize leaf) zero)) +(assert (forall ((x Nat) (l Tree) (r Tree)) (= (tsize (node x l r)) (succ (plus (tsize l) (tsize r)))))) + +(declare-fun tremove (Tree Nat) Tree) +(assert (forall ((i Nat)) (= (tremove leaf i) leaf))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less i d) (= (tremove (node d l r) i) (node d (tremove l i) r))))) +(assert (forall ((i Nat) (d Nat) (l Tree) (r Tree)) (=> (less d i) (= (tremove (node d l r) i) (node d l (tremove r i)))))) +(assert (forall ((d Nat) (r Tree)) (= (tremove (node d leaf r) d) r))) +(assert (forall ((d Nat) (ld Nat) (ll Tree) (lr Tree) (r Tree)) (= (tremove (node d (node ld ll lr) r) d) (node ld (tremove (node ld ll lr) ld) r)))) + +(declare-fun tremove-all (Tree Lst) Tree) +(assert (forall ((x Tree)) (= (tremove-all x nil) x))) +(assert (forall ((x Tree) (n Nat) (l Lst)) (= (tremove-all x (cons n l)) (tremove-all (tremove x n) l)))) + +(declare-fun tcontains (Tree Nat) Bool) +(assert (forall ((i Nat)) (not (tcontains leaf i)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tcontains (node d l r) i) (or (= d i) (tcontains l i) (tcontains r i))))) + +(declare-fun tsorted (Tree) Bool) +(assert (tsorted leaf)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (tsorted (node d l r)) (and (tsorted l) (tsorted r) + (forall ((x Nat)) (=> (tcontains l x) (leq x d))) + (forall ((x Nat)) (=> (tcontains r x) (less d x))))))) + +(declare-fun tmember (Tree Nat) Bool) +(assert (forall ((x Nat)) (not (tmember leaf x)))) +(assert (forall ((d Nat) (l Tree) (r Tree) (i Nat)) (= (tmember (node d l r) i) (ite (= i d) true (tmember (ite (less d i) r l) i))))) + +(declare-fun content (Tree) Lst) +(assert (= (content leaf) nil)) +(assert (forall ((d Nat) (l Tree) (r Tree)) (= (content (node d l r)) (append (content l) (cons d (content r)))))) + +; proven +(assert +(forall ((t Tree) (n Nat)) (= (tsize (tinsert t n)) (succ (tsize t)))) ; G-bsearch-tree-1 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize t) (tsize (tinsert-all t l)))) ; G-bsearch-tree-2 +) +(assert +(forall ((l Lst) (t Tree)) (= (tsize (tinsert-all t l)) (plus (tsize t) (len l)))) ; G-bsearch-tree-3 +) +(assert +(forall ((t Tree) (n Nat)) (leq (tsize (tremove t n)) (tsize t))) ; G-bsearch-tree-4 +) +(assert +(forall ((l Lst) (t Tree)) (leq (tsize (tremove-all t l)) (tsize t))) ; G-bsearch-tree-5 +) +(assert +(forall ((x Tree) (i Nat)) (tcontains (tinsert x i) i)) ; G-bsearch-tree-6 +) +(assert +(forall ((i Nat) (x Tree) (j Nat)) (= (or (= i j) (tcontains x j)) (tcontains (tinsert x i) j))) ; G-bsearch-tree-7 +) +(assert +(forall ((x Tree) (i Nat)) (=> (tsorted x) (tsorted (tinsert x i)))) ; G-bsearch-tree-8 +) + +; conjecture +(assert (not +(forall ((x Tree) (i Nat)) (tmember (tinsert x i) i)) ; G-bsearch-tree-9 +)) +(check-sat) diff --git a/bench_adt/LEON/heap-goal1.smt2 b/bench_adt/LEON/heap-goal1.smt2 new file mode 100644 index 000000000..3ea42f428 --- /dev/null +++ b/bench_adt/LEON/heap-goal1.smt2 @@ -0,0 +1,91 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun rsorted (Lst) Bool) +(assert (rsorted nil)) +(assert (forall ((x Nat)) (rsorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (rsorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq z x))))) + +(declare-fun sorted (Lst) Bool) +(assert (sorted nil)) +(assert (forall ((x Nat)) (sorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (sorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq x z))))) + +; heaps +(declare-datatypes () ((Heap (hleaf) (heap (rk Nat) (value Nat) (hleft Heap) (hright Heap))))) + +(declare-fun rightHeight (Heap) Nat) +(assert (= (rightHeight hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rightHeight (heap k v l r)) (succ (rightHeight r))))) + +(declare-fun rank (Heap) Nat) +(assert (= (rank hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rank (heap k v l r)) k))) + +(declare-fun hasLeftistProperty (Heap) Bool) +(assert (hasLeftistProperty hleaf)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hasLeftistProperty (heap k v l r)) (and (hasLeftistProperty l) (hasLeftistProperty r) + (leq (rightHeight r) (rightHeight l)) + (= k (succ (rightHeight r))))))) + +(declare-fun hsize (Heap) Nat) +(assert (= (hsize hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hsize (heap k v l r)) (succ (plus (hsize l) (hsize r)))))) + +(declare-fun mergea (Nat Heap Heap) Heap) +(assert (forall ((v Nat) (l Heap) (r Heap)) (= (mergea v l r) (ite (leq (rank r) (rank l)) (heap (succ (rank r)) v l r) (heap (succ (rank l)) v r l))))) + +(declare-fun merge (Heap Heap) Heap) +(assert (forall ((h Heap)) (= (merge h hleaf) h))) +(assert (forall ((h Heap)) (= (merge hleaf h) h))) +(assert (forall ((k1 Nat) (v1 Nat) (l1 Heap) (r1 Heap) (k2 Nat) (v2 Nat) (l2 Heap) (r2 Heap)) (= (merge (heap k1 v1 l1 r1) (heap k2 v2 l2 r2)) + (ite (less v2 v1) + (mergea v1 l1 (merge r1 (heap k2 v2 l2 r2))) + (mergea v2 l2 (merge (heap k1 v1 l1 r1) r2)))))) + +(declare-fun hinsert (Heap Nat) Heap) +(assert (forall ((h Heap) (n Nat)) (= (hinsert h n) (merge (heap (succ zero) n hleaf hleaf) h)))) + +(declare-fun hinsert-all (Lst Heap) Heap) +(assert (forall ((h Heap)) (= (hinsert-all nil h) h))) +(assert (forall ((h Heap) (n Nat) (l Lst)) (= (hinsert-all (cons n l) h) (hinsert (hinsert-all l h) n)))) + +(declare-fun qheapsorta (Heap Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsorta hleaf l) l))) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap) (x Lst)) (= (qheapsorta (heap k v l r) x) (qheapsorta (merge l r) (cons v x))))) + +(declare-fun qheapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsort l) (qheapsorta (hinsert-all l hleaf) nil)))) + +(declare-fun heapsorta (Heap) Lst) +(assert (= (heapsorta hleaf) nil)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (heapsorta (heap k v l r)) (cons v (heapsorta (merge l r)))))) + +(declare-fun heapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (heapsort l) (heapsorta (hinsert-all l hleaf))))) + +; proven + +; conjecture +(assert (not +(forall ((x Heap) (n Nat)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert x n)))) ; G-heap-1 +)) +(check-sat) diff --git a/bench_adt/LEON/heap-goal10.smt2 b/bench_adt/LEON/heap-goal10.smt2 new file mode 100644 index 000000000..53f02072e --- /dev/null +++ b/bench_adt/LEON/heap-goal10.smt2 @@ -0,0 +1,118 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun rsorted (Lst) Bool) +(assert (rsorted nil)) +(assert (forall ((x Nat)) (rsorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (rsorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq z x))))) + +(declare-fun sorted (Lst) Bool) +(assert (sorted nil)) +(assert (forall ((x Nat)) (sorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (sorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq x z))))) + +; heaps +(declare-datatypes () ((Heap (hleaf) (heap (rk Nat) (value Nat) (hleft Heap) (hright Heap))))) + +(declare-fun rightHeight (Heap) Nat) +(assert (= (rightHeight hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rightHeight (heap k v l r)) (succ (rightHeight r))))) + +(declare-fun rank (Heap) Nat) +(assert (= (rank hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rank (heap k v l r)) k))) + +(declare-fun hasLeftistProperty (Heap) Bool) +(assert (hasLeftistProperty hleaf)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hasLeftistProperty (heap k v l r)) (and (hasLeftistProperty l) (hasLeftistProperty r) + (leq (rightHeight r) (rightHeight l)) + (= k (succ (rightHeight r))))))) + +(declare-fun hsize (Heap) Nat) +(assert (= (hsize hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hsize (heap k v l r)) (succ (plus (hsize l) (hsize r)))))) + +(declare-fun mergea (Nat Heap Heap) Heap) +(assert (forall ((v Nat) (l Heap) (r Heap)) (= (mergea v l r) (ite (leq (rank r) (rank l)) (heap (succ (rank r)) v l r) (heap (succ (rank l)) v r l))))) + +(declare-fun merge (Heap Heap) Heap) +(assert (forall ((h Heap)) (= (merge h hleaf) h))) +(assert (forall ((h Heap)) (= (merge hleaf h) h))) +(assert (forall ((k1 Nat) (v1 Nat) (l1 Heap) (r1 Heap) (k2 Nat) (v2 Nat) (l2 Heap) (r2 Heap)) (= (merge (heap k1 v1 l1 r1) (heap k2 v2 l2 r2)) + (ite (less v2 v1) + (mergea v1 l1 (merge r1 (heap k2 v2 l2 r2))) + (mergea v2 l2 (merge (heap k1 v1 l1 r1) r2)))))) + +(declare-fun hinsert (Heap Nat) Heap) +(assert (forall ((h Heap) (n Nat)) (= (hinsert h n) (merge (heap (succ zero) n hleaf hleaf) h)))) + +(declare-fun hinsert-all (Lst Heap) Heap) +(assert (forall ((h Heap)) (= (hinsert-all nil h) h))) +(assert (forall ((h Heap) (n Nat) (l Lst)) (= (hinsert-all (cons n l) h) (hinsert (hinsert-all l h) n)))) + +(declare-fun qheapsorta (Heap Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsorta hleaf l) l))) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap) (x Lst)) (= (qheapsorta (heap k v l r) x) (qheapsorta (merge l r) (cons v x))))) + +(declare-fun qheapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsort l) (qheapsorta (hinsert-all l hleaf) nil)))) + +(declare-fun heapsorta (Heap) Lst) +(assert (= (heapsorta hleaf) nil)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (heapsorta (heap k v l r)) (cons v (heapsorta (merge l r)))))) + +(declare-fun heapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (heapsort l) (heapsorta (hinsert-all l hleaf))))) + +; proven +(assert +(forall ((x Heap) (n Nat)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert x n)))) ; G-heap-1 +) +(assert +(forall ((n Lst) (x Heap)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert-all n x)))) ; G-heap-2 +) +(assert +(forall ((v Nat) (x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (mergea v x y)))) ; G-heap-3 +) +(assert +(forall ((x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (merge x y)))) ; G-heap-4 +) +(assert +(forall ((l Lst)) (hasLeftistProperty (hinsert-all l hleaf))) ; G-heap-5 +) +(assert +(forall ((v Nat) (x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (= (hsize (mergea v x y)) (succ (plus (hsize x) (hsize y)))))) ; G-heap-6 +) +(assert +(forall ((x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (= (hsize (merge x y)) (plus (hsize x) (hsize y))))) ; G-heap-7 +) +(assert +(forall ((x Heap) (n Nat)) (=> (hasLeftistProperty x) (= (hsize (hinsert x n)) (succ (hsize x))))) ; G-heap-8 +) +(assert +(forall ((l Lst) (x Heap)) (=> (hasLeftistProperty x) (= (hsize (hinsert-all l x)) (plus (hsize x) (len l))))) ; G-heap-9 +) + +; conjecture +(assert (not +(forall ((x Heap)) (=> (hasLeftistProperty x) (= (len (heapsorta x)) (hsize x)))) ; G-heap-10 +)) +(check-sat) diff --git a/bench_adt/LEON/heap-goal11.smt2 b/bench_adt/LEON/heap-goal11.smt2 new file mode 100644 index 000000000..30a74dadf --- /dev/null +++ b/bench_adt/LEON/heap-goal11.smt2 @@ -0,0 +1,121 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun rsorted (Lst) Bool) +(assert (rsorted nil)) +(assert (forall ((x Nat)) (rsorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (rsorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq z x))))) + +(declare-fun sorted (Lst) Bool) +(assert (sorted nil)) +(assert (forall ((x Nat)) (sorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (sorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq x z))))) + +; heaps +(declare-datatypes () ((Heap (hleaf) (heap (rk Nat) (value Nat) (hleft Heap) (hright Heap))))) + +(declare-fun rightHeight (Heap) Nat) +(assert (= (rightHeight hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rightHeight (heap k v l r)) (succ (rightHeight r))))) + +(declare-fun rank (Heap) Nat) +(assert (= (rank hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rank (heap k v l r)) k))) + +(declare-fun hasLeftistProperty (Heap) Bool) +(assert (hasLeftistProperty hleaf)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hasLeftistProperty (heap k v l r)) (and (hasLeftistProperty l) (hasLeftistProperty r) + (leq (rightHeight r) (rightHeight l)) + (= k (succ (rightHeight r))))))) + +(declare-fun hsize (Heap) Nat) +(assert (= (hsize hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hsize (heap k v l r)) (succ (plus (hsize l) (hsize r)))))) + +(declare-fun mergea (Nat Heap Heap) Heap) +(assert (forall ((v Nat) (l Heap) (r Heap)) (= (mergea v l r) (ite (leq (rank r) (rank l)) (heap (succ (rank r)) v l r) (heap (succ (rank l)) v r l))))) + +(declare-fun merge (Heap Heap) Heap) +(assert (forall ((h Heap)) (= (merge h hleaf) h))) +(assert (forall ((h Heap)) (= (merge hleaf h) h))) +(assert (forall ((k1 Nat) (v1 Nat) (l1 Heap) (r1 Heap) (k2 Nat) (v2 Nat) (l2 Heap) (r2 Heap)) (= (merge (heap k1 v1 l1 r1) (heap k2 v2 l2 r2)) + (ite (less v2 v1) + (mergea v1 l1 (merge r1 (heap k2 v2 l2 r2))) + (mergea v2 l2 (merge (heap k1 v1 l1 r1) r2)))))) + +(declare-fun hinsert (Heap Nat) Heap) +(assert (forall ((h Heap) (n Nat)) (= (hinsert h n) (merge (heap (succ zero) n hleaf hleaf) h)))) + +(declare-fun hinsert-all (Lst Heap) Heap) +(assert (forall ((h Heap)) (= (hinsert-all nil h) h))) +(assert (forall ((h Heap) (n Nat) (l Lst)) (= (hinsert-all (cons n l) h) (hinsert (hinsert-all l h) n)))) + +(declare-fun qheapsorta (Heap Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsorta hleaf l) l))) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap) (x Lst)) (= (qheapsorta (heap k v l r) x) (qheapsorta (merge l r) (cons v x))))) + +(declare-fun qheapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsort l) (qheapsorta (hinsert-all l hleaf) nil)))) + +(declare-fun heapsorta (Heap) Lst) +(assert (= (heapsorta hleaf) nil)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (heapsorta (heap k v l r)) (cons v (heapsorta (merge l r)))))) + +(declare-fun heapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (heapsort l) (heapsorta (hinsert-all l hleaf))))) + +; proven +(assert +(forall ((x Heap) (n Nat)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert x n)))) ; G-heap-1 +) +(assert +(forall ((n Lst) (x Heap)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert-all n x)))) ; G-heap-2 +) +(assert +(forall ((v Nat) (x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (mergea v x y)))) ; G-heap-3 +) +(assert +(forall ((x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (merge x y)))) ; G-heap-4 +) +(assert +(forall ((l Lst)) (hasLeftistProperty (hinsert-all l hleaf))) ; G-heap-5 +) +(assert +(forall ((v Nat) (x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (= (hsize (mergea v x y)) (succ (plus (hsize x) (hsize y)))))) ; G-heap-6 +) +(assert +(forall ((x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (= (hsize (merge x y)) (plus (hsize x) (hsize y))))) ; G-heap-7 +) +(assert +(forall ((x Heap) (n Nat)) (=> (hasLeftistProperty x) (= (hsize (hinsert x n)) (succ (hsize x))))) ; G-heap-8 +) +(assert +(forall ((l Lst) (x Heap)) (=> (hasLeftistProperty x) (= (hsize (hinsert-all l x)) (plus (hsize x) (len l))))) ; G-heap-9 +) +(assert +(forall ((x Heap)) (=> (hasLeftistProperty x) (= (len (heapsorta x)) (hsize x)))) ; G-heap-10 +) + +; conjecture +(assert (not +(forall ((l Lst)) (sorted (heapsort l))) ; G-heap-11 +)) +(check-sat) diff --git a/bench_adt/LEON/heap-goal12.smt2 b/bench_adt/LEON/heap-goal12.smt2 new file mode 100644 index 000000000..ed834a8a0 --- /dev/null +++ b/bench_adt/LEON/heap-goal12.smt2 @@ -0,0 +1,124 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun rsorted (Lst) Bool) +(assert (rsorted nil)) +(assert (forall ((x Nat)) (rsorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (rsorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq z x))))) + +(declare-fun sorted (Lst) Bool) +(assert (sorted nil)) +(assert (forall ((x Nat)) (sorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (sorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq x z))))) + +; heaps +(declare-datatypes () ((Heap (hleaf) (heap (rk Nat) (value Nat) (hleft Heap) (hright Heap))))) + +(declare-fun rightHeight (Heap) Nat) +(assert (= (rightHeight hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rightHeight (heap k v l r)) (succ (rightHeight r))))) + +(declare-fun rank (Heap) Nat) +(assert (= (rank hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rank (heap k v l r)) k))) + +(declare-fun hasLeftistProperty (Heap) Bool) +(assert (hasLeftistProperty hleaf)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hasLeftistProperty (heap k v l r)) (and (hasLeftistProperty l) (hasLeftistProperty r) + (leq (rightHeight r) (rightHeight l)) + (= k (succ (rightHeight r))))))) + +(declare-fun hsize (Heap) Nat) +(assert (= (hsize hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hsize (heap k v l r)) (succ (plus (hsize l) (hsize r)))))) + +(declare-fun mergea (Nat Heap Heap) Heap) +(assert (forall ((v Nat) (l Heap) (r Heap)) (= (mergea v l r) (ite (leq (rank r) (rank l)) (heap (succ (rank r)) v l r) (heap (succ (rank l)) v r l))))) + +(declare-fun merge (Heap Heap) Heap) +(assert (forall ((h Heap)) (= (merge h hleaf) h))) +(assert (forall ((h Heap)) (= (merge hleaf h) h))) +(assert (forall ((k1 Nat) (v1 Nat) (l1 Heap) (r1 Heap) (k2 Nat) (v2 Nat) (l2 Heap) (r2 Heap)) (= (merge (heap k1 v1 l1 r1) (heap k2 v2 l2 r2)) + (ite (less v2 v1) + (mergea v1 l1 (merge r1 (heap k2 v2 l2 r2))) + (mergea v2 l2 (merge (heap k1 v1 l1 r1) r2)))))) + +(declare-fun hinsert (Heap Nat) Heap) +(assert (forall ((h Heap) (n Nat)) (= (hinsert h n) (merge (heap (succ zero) n hleaf hleaf) h)))) + +(declare-fun hinsert-all (Lst Heap) Heap) +(assert (forall ((h Heap)) (= (hinsert-all nil h) h))) +(assert (forall ((h Heap) (n Nat) (l Lst)) (= (hinsert-all (cons n l) h) (hinsert (hinsert-all l h) n)))) + +(declare-fun qheapsorta (Heap Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsorta hleaf l) l))) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap) (x Lst)) (= (qheapsorta (heap k v l r) x) (qheapsorta (merge l r) (cons v x))))) + +(declare-fun qheapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsort l) (qheapsorta (hinsert-all l hleaf) nil)))) + +(declare-fun heapsorta (Heap) Lst) +(assert (= (heapsorta hleaf) nil)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (heapsorta (heap k v l r)) (cons v (heapsorta (merge l r)))))) + +(declare-fun heapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (heapsort l) (heapsorta (hinsert-all l hleaf))))) + +; proven +(assert +(forall ((x Heap) (n Nat)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert x n)))) ; G-heap-1 +) +(assert +(forall ((n Lst) (x Heap)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert-all n x)))) ; G-heap-2 +) +(assert +(forall ((v Nat) (x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (mergea v x y)))) ; G-heap-3 +) +(assert +(forall ((x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (merge x y)))) ; G-heap-4 +) +(assert +(forall ((l Lst)) (hasLeftistProperty (hinsert-all l hleaf))) ; G-heap-5 +) +(assert +(forall ((v Nat) (x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (= (hsize (mergea v x y)) (succ (plus (hsize x) (hsize y)))))) ; G-heap-6 +) +(assert +(forall ((x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (= (hsize (merge x y)) (plus (hsize x) (hsize y))))) ; G-heap-7 +) +(assert +(forall ((x Heap) (n Nat)) (=> (hasLeftistProperty x) (= (hsize (hinsert x n)) (succ (hsize x))))) ; G-heap-8 +) +(assert +(forall ((l Lst) (x Heap)) (=> (hasLeftistProperty x) (= (hsize (hinsert-all l x)) (plus (hsize x) (len l))))) ; G-heap-9 +) +(assert +(forall ((x Heap)) (=> (hasLeftistProperty x) (= (len (heapsorta x)) (hsize x)))) ; G-heap-10 +) +(assert +(forall ((l Lst)) (sorted (heapsort l))) ; G-heap-11 +) + +; conjecture +(assert (not +(forall ((x Heap) (l Lst) (v Nat)) (=> (hasLeftistProperty x) (= (len (qheapsorta x (cons v l))) (succ (len (qheapsorta x l)))))) ; G-heap-12 +)) +(check-sat) diff --git a/bench_adt/LEON/heap-goal13.smt2 b/bench_adt/LEON/heap-goal13.smt2 new file mode 100644 index 000000000..8b62bc439 --- /dev/null +++ b/bench_adt/LEON/heap-goal13.smt2 @@ -0,0 +1,127 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun rsorted (Lst) Bool) +(assert (rsorted nil)) +(assert (forall ((x Nat)) (rsorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (rsorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq z x))))) + +(declare-fun sorted (Lst) Bool) +(assert (sorted nil)) +(assert (forall ((x Nat)) (sorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (sorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq x z))))) + +; heaps +(declare-datatypes () ((Heap (hleaf) (heap (rk Nat) (value Nat) (hleft Heap) (hright Heap))))) + +(declare-fun rightHeight (Heap) Nat) +(assert (= (rightHeight hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rightHeight (heap k v l r)) (succ (rightHeight r))))) + +(declare-fun rank (Heap) Nat) +(assert (= (rank hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rank (heap k v l r)) k))) + +(declare-fun hasLeftistProperty (Heap) Bool) +(assert (hasLeftistProperty hleaf)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hasLeftistProperty (heap k v l r)) (and (hasLeftistProperty l) (hasLeftistProperty r) + (leq (rightHeight r) (rightHeight l)) + (= k (succ (rightHeight r))))))) + +(declare-fun hsize (Heap) Nat) +(assert (= (hsize hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hsize (heap k v l r)) (succ (plus (hsize l) (hsize r)))))) + +(declare-fun mergea (Nat Heap Heap) Heap) +(assert (forall ((v Nat) (l Heap) (r Heap)) (= (mergea v l r) (ite (leq (rank r) (rank l)) (heap (succ (rank r)) v l r) (heap (succ (rank l)) v r l))))) + +(declare-fun merge (Heap Heap) Heap) +(assert (forall ((h Heap)) (= (merge h hleaf) h))) +(assert (forall ((h Heap)) (= (merge hleaf h) h))) +(assert (forall ((k1 Nat) (v1 Nat) (l1 Heap) (r1 Heap) (k2 Nat) (v2 Nat) (l2 Heap) (r2 Heap)) (= (merge (heap k1 v1 l1 r1) (heap k2 v2 l2 r2)) + (ite (less v2 v1) + (mergea v1 l1 (merge r1 (heap k2 v2 l2 r2))) + (mergea v2 l2 (merge (heap k1 v1 l1 r1) r2)))))) + +(declare-fun hinsert (Heap Nat) Heap) +(assert (forall ((h Heap) (n Nat)) (= (hinsert h n) (merge (heap (succ zero) n hleaf hleaf) h)))) + +(declare-fun hinsert-all (Lst Heap) Heap) +(assert (forall ((h Heap)) (= (hinsert-all nil h) h))) +(assert (forall ((h Heap) (n Nat) (l Lst)) (= (hinsert-all (cons n l) h) (hinsert (hinsert-all l h) n)))) + +(declare-fun qheapsorta (Heap Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsorta hleaf l) l))) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap) (x Lst)) (= (qheapsorta (heap k v l r) x) (qheapsorta (merge l r) (cons v x))))) + +(declare-fun qheapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsort l) (qheapsorta (hinsert-all l hleaf) nil)))) + +(declare-fun heapsorta (Heap) Lst) +(assert (= (heapsorta hleaf) nil)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (heapsorta (heap k v l r)) (cons v (heapsorta (merge l r)))))) + +(declare-fun heapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (heapsort l) (heapsorta (hinsert-all l hleaf))))) + +; proven +(assert +(forall ((x Heap) (n Nat)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert x n)))) ; G-heap-1 +) +(assert +(forall ((n Lst) (x Heap)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert-all n x)))) ; G-heap-2 +) +(assert +(forall ((v Nat) (x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (mergea v x y)))) ; G-heap-3 +) +(assert +(forall ((x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (merge x y)))) ; G-heap-4 +) +(assert +(forall ((l Lst)) (hasLeftistProperty (hinsert-all l hleaf))) ; G-heap-5 +) +(assert +(forall ((v Nat) (x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (= (hsize (mergea v x y)) (succ (plus (hsize x) (hsize y)))))) ; G-heap-6 +) +(assert +(forall ((x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (= (hsize (merge x y)) (plus (hsize x) (hsize y))))) ; G-heap-7 +) +(assert +(forall ((x Heap) (n Nat)) (=> (hasLeftistProperty x) (= (hsize (hinsert x n)) (succ (hsize x))))) ; G-heap-8 +) +(assert +(forall ((l Lst) (x Heap)) (=> (hasLeftistProperty x) (= (hsize (hinsert-all l x)) (plus (hsize x) (len l))))) ; G-heap-9 +) +(assert +(forall ((x Heap)) (=> (hasLeftistProperty x) (= (len (heapsorta x)) (hsize x)))) ; G-heap-10 +) +(assert +(forall ((l Lst)) (sorted (heapsort l))) ; G-heap-11 +) +(assert +(forall ((x Heap) (l Lst) (v Nat)) (=> (hasLeftistProperty x) (= (len (qheapsorta x (cons v l))) (succ (len (qheapsorta x l)))))) ; G-heap-12 +) + +; conjecture +(assert (not +(forall ((l Lst) (x Heap)) (=> (hasLeftistProperty x) (= (len (qheapsorta x l)) (plus (hsize x) (len l))))) ; G-heap-13 +)) +(check-sat) diff --git a/bench_adt/LEON/heap-goal2.smt2 b/bench_adt/LEON/heap-goal2.smt2 new file mode 100644 index 000000000..9b5b3c54c --- /dev/null +++ b/bench_adt/LEON/heap-goal2.smt2 @@ -0,0 +1,94 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun rsorted (Lst) Bool) +(assert (rsorted nil)) +(assert (forall ((x Nat)) (rsorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (rsorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq z x))))) + +(declare-fun sorted (Lst) Bool) +(assert (sorted nil)) +(assert (forall ((x Nat)) (sorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (sorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq x z))))) + +; heaps +(declare-datatypes () ((Heap (hleaf) (heap (rk Nat) (value Nat) (hleft Heap) (hright Heap))))) + +(declare-fun rightHeight (Heap) Nat) +(assert (= (rightHeight hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rightHeight (heap k v l r)) (succ (rightHeight r))))) + +(declare-fun rank (Heap) Nat) +(assert (= (rank hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rank (heap k v l r)) k))) + +(declare-fun hasLeftistProperty (Heap) Bool) +(assert (hasLeftistProperty hleaf)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hasLeftistProperty (heap k v l r)) (and (hasLeftistProperty l) (hasLeftistProperty r) + (leq (rightHeight r) (rightHeight l)) + (= k (succ (rightHeight r))))))) + +(declare-fun hsize (Heap) Nat) +(assert (= (hsize hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hsize (heap k v l r)) (succ (plus (hsize l) (hsize r)))))) + +(declare-fun mergea (Nat Heap Heap) Heap) +(assert (forall ((v Nat) (l Heap) (r Heap)) (= (mergea v l r) (ite (leq (rank r) (rank l)) (heap (succ (rank r)) v l r) (heap (succ (rank l)) v r l))))) + +(declare-fun merge (Heap Heap) Heap) +(assert (forall ((h Heap)) (= (merge h hleaf) h))) +(assert (forall ((h Heap)) (= (merge hleaf h) h))) +(assert (forall ((k1 Nat) (v1 Nat) (l1 Heap) (r1 Heap) (k2 Nat) (v2 Nat) (l2 Heap) (r2 Heap)) (= (merge (heap k1 v1 l1 r1) (heap k2 v2 l2 r2)) + (ite (less v2 v1) + (mergea v1 l1 (merge r1 (heap k2 v2 l2 r2))) + (mergea v2 l2 (merge (heap k1 v1 l1 r1) r2)))))) + +(declare-fun hinsert (Heap Nat) Heap) +(assert (forall ((h Heap) (n Nat)) (= (hinsert h n) (merge (heap (succ zero) n hleaf hleaf) h)))) + +(declare-fun hinsert-all (Lst Heap) Heap) +(assert (forall ((h Heap)) (= (hinsert-all nil h) h))) +(assert (forall ((h Heap) (n Nat) (l Lst)) (= (hinsert-all (cons n l) h) (hinsert (hinsert-all l h) n)))) + +(declare-fun qheapsorta (Heap Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsorta hleaf l) l))) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap) (x Lst)) (= (qheapsorta (heap k v l r) x) (qheapsorta (merge l r) (cons v x))))) + +(declare-fun qheapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsort l) (qheapsorta (hinsert-all l hleaf) nil)))) + +(declare-fun heapsorta (Heap) Lst) +(assert (= (heapsorta hleaf) nil)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (heapsorta (heap k v l r)) (cons v (heapsorta (merge l r)))))) + +(declare-fun heapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (heapsort l) (heapsorta (hinsert-all l hleaf))))) + +; proven +(assert +(forall ((x Heap) (n Nat)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert x n)))) ; G-heap-1 +) + +; conjecture +(assert (not +(forall ((n Lst) (x Heap)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert-all n x)))) ; G-heap-2 +)) +(check-sat) diff --git a/bench_adt/LEON/heap-goal3.smt2 b/bench_adt/LEON/heap-goal3.smt2 new file mode 100644 index 000000000..f435cbe0c --- /dev/null +++ b/bench_adt/LEON/heap-goal3.smt2 @@ -0,0 +1,97 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun rsorted (Lst) Bool) +(assert (rsorted nil)) +(assert (forall ((x Nat)) (rsorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (rsorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq z x))))) + +(declare-fun sorted (Lst) Bool) +(assert (sorted nil)) +(assert (forall ((x Nat)) (sorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (sorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq x z))))) + +; heaps +(declare-datatypes () ((Heap (hleaf) (heap (rk Nat) (value Nat) (hleft Heap) (hright Heap))))) + +(declare-fun rightHeight (Heap) Nat) +(assert (= (rightHeight hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rightHeight (heap k v l r)) (succ (rightHeight r))))) + +(declare-fun rank (Heap) Nat) +(assert (= (rank hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rank (heap k v l r)) k))) + +(declare-fun hasLeftistProperty (Heap) Bool) +(assert (hasLeftistProperty hleaf)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hasLeftistProperty (heap k v l r)) (and (hasLeftistProperty l) (hasLeftistProperty r) + (leq (rightHeight r) (rightHeight l)) + (= k (succ (rightHeight r))))))) + +(declare-fun hsize (Heap) Nat) +(assert (= (hsize hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hsize (heap k v l r)) (succ (plus (hsize l) (hsize r)))))) + +(declare-fun mergea (Nat Heap Heap) Heap) +(assert (forall ((v Nat) (l Heap) (r Heap)) (= (mergea v l r) (ite (leq (rank r) (rank l)) (heap (succ (rank r)) v l r) (heap (succ (rank l)) v r l))))) + +(declare-fun merge (Heap Heap) Heap) +(assert (forall ((h Heap)) (= (merge h hleaf) h))) +(assert (forall ((h Heap)) (= (merge hleaf h) h))) +(assert (forall ((k1 Nat) (v1 Nat) (l1 Heap) (r1 Heap) (k2 Nat) (v2 Nat) (l2 Heap) (r2 Heap)) (= (merge (heap k1 v1 l1 r1) (heap k2 v2 l2 r2)) + (ite (less v2 v1) + (mergea v1 l1 (merge r1 (heap k2 v2 l2 r2))) + (mergea v2 l2 (merge (heap k1 v1 l1 r1) r2)))))) + +(declare-fun hinsert (Heap Nat) Heap) +(assert (forall ((h Heap) (n Nat)) (= (hinsert h n) (merge (heap (succ zero) n hleaf hleaf) h)))) + +(declare-fun hinsert-all (Lst Heap) Heap) +(assert (forall ((h Heap)) (= (hinsert-all nil h) h))) +(assert (forall ((h Heap) (n Nat) (l Lst)) (= (hinsert-all (cons n l) h) (hinsert (hinsert-all l h) n)))) + +(declare-fun qheapsorta (Heap Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsorta hleaf l) l))) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap) (x Lst)) (= (qheapsorta (heap k v l r) x) (qheapsorta (merge l r) (cons v x))))) + +(declare-fun qheapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsort l) (qheapsorta (hinsert-all l hleaf) nil)))) + +(declare-fun heapsorta (Heap) Lst) +(assert (= (heapsorta hleaf) nil)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (heapsorta (heap k v l r)) (cons v (heapsorta (merge l r)))))) + +(declare-fun heapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (heapsort l) (heapsorta (hinsert-all l hleaf))))) + +; proven +(assert +(forall ((x Heap) (n Nat)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert x n)))) ; G-heap-1 +) +(assert +(forall ((n Lst) (x Heap)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert-all n x)))) ; G-heap-2 +) + +; conjecture +(assert (not +(forall ((v Nat) (x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (mergea v x y)))) ; G-heap-3 +)) +(check-sat) diff --git a/bench_adt/LEON/heap-goal4.smt2 b/bench_adt/LEON/heap-goal4.smt2 new file mode 100644 index 000000000..2d5e778f1 --- /dev/null +++ b/bench_adt/LEON/heap-goal4.smt2 @@ -0,0 +1,100 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun rsorted (Lst) Bool) +(assert (rsorted nil)) +(assert (forall ((x Nat)) (rsorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (rsorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq z x))))) + +(declare-fun sorted (Lst) Bool) +(assert (sorted nil)) +(assert (forall ((x Nat)) (sorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (sorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq x z))))) + +; heaps +(declare-datatypes () ((Heap (hleaf) (heap (rk Nat) (value Nat) (hleft Heap) (hright Heap))))) + +(declare-fun rightHeight (Heap) Nat) +(assert (= (rightHeight hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rightHeight (heap k v l r)) (succ (rightHeight r))))) + +(declare-fun rank (Heap) Nat) +(assert (= (rank hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rank (heap k v l r)) k))) + +(declare-fun hasLeftistProperty (Heap) Bool) +(assert (hasLeftistProperty hleaf)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hasLeftistProperty (heap k v l r)) (and (hasLeftistProperty l) (hasLeftistProperty r) + (leq (rightHeight r) (rightHeight l)) + (= k (succ (rightHeight r))))))) + +(declare-fun hsize (Heap) Nat) +(assert (= (hsize hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hsize (heap k v l r)) (succ (plus (hsize l) (hsize r)))))) + +(declare-fun mergea (Nat Heap Heap) Heap) +(assert (forall ((v Nat) (l Heap) (r Heap)) (= (mergea v l r) (ite (leq (rank r) (rank l)) (heap (succ (rank r)) v l r) (heap (succ (rank l)) v r l))))) + +(declare-fun merge (Heap Heap) Heap) +(assert (forall ((h Heap)) (= (merge h hleaf) h))) +(assert (forall ((h Heap)) (= (merge hleaf h) h))) +(assert (forall ((k1 Nat) (v1 Nat) (l1 Heap) (r1 Heap) (k2 Nat) (v2 Nat) (l2 Heap) (r2 Heap)) (= (merge (heap k1 v1 l1 r1) (heap k2 v2 l2 r2)) + (ite (less v2 v1) + (mergea v1 l1 (merge r1 (heap k2 v2 l2 r2))) + (mergea v2 l2 (merge (heap k1 v1 l1 r1) r2)))))) + +(declare-fun hinsert (Heap Nat) Heap) +(assert (forall ((h Heap) (n Nat)) (= (hinsert h n) (merge (heap (succ zero) n hleaf hleaf) h)))) + +(declare-fun hinsert-all (Lst Heap) Heap) +(assert (forall ((h Heap)) (= (hinsert-all nil h) h))) +(assert (forall ((h Heap) (n Nat) (l Lst)) (= (hinsert-all (cons n l) h) (hinsert (hinsert-all l h) n)))) + +(declare-fun qheapsorta (Heap Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsorta hleaf l) l))) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap) (x Lst)) (= (qheapsorta (heap k v l r) x) (qheapsorta (merge l r) (cons v x))))) + +(declare-fun qheapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsort l) (qheapsorta (hinsert-all l hleaf) nil)))) + +(declare-fun heapsorta (Heap) Lst) +(assert (= (heapsorta hleaf) nil)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (heapsorta (heap k v l r)) (cons v (heapsorta (merge l r)))))) + +(declare-fun heapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (heapsort l) (heapsorta (hinsert-all l hleaf))))) + +; proven +(assert +(forall ((x Heap) (n Nat)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert x n)))) ; G-heap-1 +) +(assert +(forall ((n Lst) (x Heap)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert-all n x)))) ; G-heap-2 +) +(assert +(forall ((v Nat) (x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (mergea v x y)))) ; G-heap-3 +) + +; conjecture +(assert (not +(forall ((x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (merge x y)))) ; G-heap-4 +)) +(check-sat) diff --git a/bench_adt/LEON/heap-goal5.smt2 b/bench_adt/LEON/heap-goal5.smt2 new file mode 100644 index 000000000..386d21e8d --- /dev/null +++ b/bench_adt/LEON/heap-goal5.smt2 @@ -0,0 +1,103 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun rsorted (Lst) Bool) +(assert (rsorted nil)) +(assert (forall ((x Nat)) (rsorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (rsorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq z x))))) + +(declare-fun sorted (Lst) Bool) +(assert (sorted nil)) +(assert (forall ((x Nat)) (sorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (sorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq x z))))) + +; heaps +(declare-datatypes () ((Heap (hleaf) (heap (rk Nat) (value Nat) (hleft Heap) (hright Heap))))) + +(declare-fun rightHeight (Heap) Nat) +(assert (= (rightHeight hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rightHeight (heap k v l r)) (succ (rightHeight r))))) + +(declare-fun rank (Heap) Nat) +(assert (= (rank hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rank (heap k v l r)) k))) + +(declare-fun hasLeftistProperty (Heap) Bool) +(assert (hasLeftistProperty hleaf)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hasLeftistProperty (heap k v l r)) (and (hasLeftistProperty l) (hasLeftistProperty r) + (leq (rightHeight r) (rightHeight l)) + (= k (succ (rightHeight r))))))) + +(declare-fun hsize (Heap) Nat) +(assert (= (hsize hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hsize (heap k v l r)) (succ (plus (hsize l) (hsize r)))))) + +(declare-fun mergea (Nat Heap Heap) Heap) +(assert (forall ((v Nat) (l Heap) (r Heap)) (= (mergea v l r) (ite (leq (rank r) (rank l)) (heap (succ (rank r)) v l r) (heap (succ (rank l)) v r l))))) + +(declare-fun merge (Heap Heap) Heap) +(assert (forall ((h Heap)) (= (merge h hleaf) h))) +(assert (forall ((h Heap)) (= (merge hleaf h) h))) +(assert (forall ((k1 Nat) (v1 Nat) (l1 Heap) (r1 Heap) (k2 Nat) (v2 Nat) (l2 Heap) (r2 Heap)) (= (merge (heap k1 v1 l1 r1) (heap k2 v2 l2 r2)) + (ite (less v2 v1) + (mergea v1 l1 (merge r1 (heap k2 v2 l2 r2))) + (mergea v2 l2 (merge (heap k1 v1 l1 r1) r2)))))) + +(declare-fun hinsert (Heap Nat) Heap) +(assert (forall ((h Heap) (n Nat)) (= (hinsert h n) (merge (heap (succ zero) n hleaf hleaf) h)))) + +(declare-fun hinsert-all (Lst Heap) Heap) +(assert (forall ((h Heap)) (= (hinsert-all nil h) h))) +(assert (forall ((h Heap) (n Nat) (l Lst)) (= (hinsert-all (cons n l) h) (hinsert (hinsert-all l h) n)))) + +(declare-fun qheapsorta (Heap Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsorta hleaf l) l))) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap) (x Lst)) (= (qheapsorta (heap k v l r) x) (qheapsorta (merge l r) (cons v x))))) + +(declare-fun qheapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsort l) (qheapsorta (hinsert-all l hleaf) nil)))) + +(declare-fun heapsorta (Heap) Lst) +(assert (= (heapsorta hleaf) nil)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (heapsorta (heap k v l r)) (cons v (heapsorta (merge l r)))))) + +(declare-fun heapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (heapsort l) (heapsorta (hinsert-all l hleaf))))) + +; proven +(assert +(forall ((x Heap) (n Nat)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert x n)))) ; G-heap-1 +) +(assert +(forall ((n Lst) (x Heap)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert-all n x)))) ; G-heap-2 +) +(assert +(forall ((v Nat) (x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (mergea v x y)))) ; G-heap-3 +) +(assert +(forall ((x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (merge x y)))) ; G-heap-4 +) + +; conjecture +(assert (not +(forall ((l Lst)) (hasLeftistProperty (hinsert-all l hleaf))) ; G-heap-5 +)) +(check-sat) diff --git a/bench_adt/LEON/heap-goal6.smt2 b/bench_adt/LEON/heap-goal6.smt2 new file mode 100644 index 000000000..3a3072017 --- /dev/null +++ b/bench_adt/LEON/heap-goal6.smt2 @@ -0,0 +1,106 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun rsorted (Lst) Bool) +(assert (rsorted nil)) +(assert (forall ((x Nat)) (rsorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (rsorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq z x))))) + +(declare-fun sorted (Lst) Bool) +(assert (sorted nil)) +(assert (forall ((x Nat)) (sorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (sorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq x z))))) + +; heaps +(declare-datatypes () ((Heap (hleaf) (heap (rk Nat) (value Nat) (hleft Heap) (hright Heap))))) + +(declare-fun rightHeight (Heap) Nat) +(assert (= (rightHeight hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rightHeight (heap k v l r)) (succ (rightHeight r))))) + +(declare-fun rank (Heap) Nat) +(assert (= (rank hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rank (heap k v l r)) k))) + +(declare-fun hasLeftistProperty (Heap) Bool) +(assert (hasLeftistProperty hleaf)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hasLeftistProperty (heap k v l r)) (and (hasLeftistProperty l) (hasLeftistProperty r) + (leq (rightHeight r) (rightHeight l)) + (= k (succ (rightHeight r))))))) + +(declare-fun hsize (Heap) Nat) +(assert (= (hsize hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hsize (heap k v l r)) (succ (plus (hsize l) (hsize r)))))) + +(declare-fun mergea (Nat Heap Heap) Heap) +(assert (forall ((v Nat) (l Heap) (r Heap)) (= (mergea v l r) (ite (leq (rank r) (rank l)) (heap (succ (rank r)) v l r) (heap (succ (rank l)) v r l))))) + +(declare-fun merge (Heap Heap) Heap) +(assert (forall ((h Heap)) (= (merge h hleaf) h))) +(assert (forall ((h Heap)) (= (merge hleaf h) h))) +(assert (forall ((k1 Nat) (v1 Nat) (l1 Heap) (r1 Heap) (k2 Nat) (v2 Nat) (l2 Heap) (r2 Heap)) (= (merge (heap k1 v1 l1 r1) (heap k2 v2 l2 r2)) + (ite (less v2 v1) + (mergea v1 l1 (merge r1 (heap k2 v2 l2 r2))) + (mergea v2 l2 (merge (heap k1 v1 l1 r1) r2)))))) + +(declare-fun hinsert (Heap Nat) Heap) +(assert (forall ((h Heap) (n Nat)) (= (hinsert h n) (merge (heap (succ zero) n hleaf hleaf) h)))) + +(declare-fun hinsert-all (Lst Heap) Heap) +(assert (forall ((h Heap)) (= (hinsert-all nil h) h))) +(assert (forall ((h Heap) (n Nat) (l Lst)) (= (hinsert-all (cons n l) h) (hinsert (hinsert-all l h) n)))) + +(declare-fun qheapsorta (Heap Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsorta hleaf l) l))) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap) (x Lst)) (= (qheapsorta (heap k v l r) x) (qheapsorta (merge l r) (cons v x))))) + +(declare-fun qheapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsort l) (qheapsorta (hinsert-all l hleaf) nil)))) + +(declare-fun heapsorta (Heap) Lst) +(assert (= (heapsorta hleaf) nil)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (heapsorta (heap k v l r)) (cons v (heapsorta (merge l r)))))) + +(declare-fun heapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (heapsort l) (heapsorta (hinsert-all l hleaf))))) + +; proven +(assert +(forall ((x Heap) (n Nat)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert x n)))) ; G-heap-1 +) +(assert +(forall ((n Lst) (x Heap)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert-all n x)))) ; G-heap-2 +) +(assert +(forall ((v Nat) (x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (mergea v x y)))) ; G-heap-3 +) +(assert +(forall ((x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (merge x y)))) ; G-heap-4 +) +(assert +(forall ((l Lst)) (hasLeftistProperty (hinsert-all l hleaf))) ; G-heap-5 +) + +; conjecture +(assert (not +(forall ((v Nat) (x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (= (hsize (mergea v x y)) (succ (plus (hsize x) (hsize y)))))) ; G-heap-6 +)) +(check-sat) diff --git a/bench_adt/LEON/heap-goal7.smt2 b/bench_adt/LEON/heap-goal7.smt2 new file mode 100644 index 000000000..8c3714d2d --- /dev/null +++ b/bench_adt/LEON/heap-goal7.smt2 @@ -0,0 +1,109 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun rsorted (Lst) Bool) +(assert (rsorted nil)) +(assert (forall ((x Nat)) (rsorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (rsorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq z x))))) + +(declare-fun sorted (Lst) Bool) +(assert (sorted nil)) +(assert (forall ((x Nat)) (sorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (sorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq x z))))) + +; heaps +(declare-datatypes () ((Heap (hleaf) (heap (rk Nat) (value Nat) (hleft Heap) (hright Heap))))) + +(declare-fun rightHeight (Heap) Nat) +(assert (= (rightHeight hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rightHeight (heap k v l r)) (succ (rightHeight r))))) + +(declare-fun rank (Heap) Nat) +(assert (= (rank hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rank (heap k v l r)) k))) + +(declare-fun hasLeftistProperty (Heap) Bool) +(assert (hasLeftistProperty hleaf)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hasLeftistProperty (heap k v l r)) (and (hasLeftistProperty l) (hasLeftistProperty r) + (leq (rightHeight r) (rightHeight l)) + (= k (succ (rightHeight r))))))) + +(declare-fun hsize (Heap) Nat) +(assert (= (hsize hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hsize (heap k v l r)) (succ (plus (hsize l) (hsize r)))))) + +(declare-fun mergea (Nat Heap Heap) Heap) +(assert (forall ((v Nat) (l Heap) (r Heap)) (= (mergea v l r) (ite (leq (rank r) (rank l)) (heap (succ (rank r)) v l r) (heap (succ (rank l)) v r l))))) + +(declare-fun merge (Heap Heap) Heap) +(assert (forall ((h Heap)) (= (merge h hleaf) h))) +(assert (forall ((h Heap)) (= (merge hleaf h) h))) +(assert (forall ((k1 Nat) (v1 Nat) (l1 Heap) (r1 Heap) (k2 Nat) (v2 Nat) (l2 Heap) (r2 Heap)) (= (merge (heap k1 v1 l1 r1) (heap k2 v2 l2 r2)) + (ite (less v2 v1) + (mergea v1 l1 (merge r1 (heap k2 v2 l2 r2))) + (mergea v2 l2 (merge (heap k1 v1 l1 r1) r2)))))) + +(declare-fun hinsert (Heap Nat) Heap) +(assert (forall ((h Heap) (n Nat)) (= (hinsert h n) (merge (heap (succ zero) n hleaf hleaf) h)))) + +(declare-fun hinsert-all (Lst Heap) Heap) +(assert (forall ((h Heap)) (= (hinsert-all nil h) h))) +(assert (forall ((h Heap) (n Nat) (l Lst)) (= (hinsert-all (cons n l) h) (hinsert (hinsert-all l h) n)))) + +(declare-fun qheapsorta (Heap Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsorta hleaf l) l))) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap) (x Lst)) (= (qheapsorta (heap k v l r) x) (qheapsorta (merge l r) (cons v x))))) + +(declare-fun qheapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsort l) (qheapsorta (hinsert-all l hleaf) nil)))) + +(declare-fun heapsorta (Heap) Lst) +(assert (= (heapsorta hleaf) nil)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (heapsorta (heap k v l r)) (cons v (heapsorta (merge l r)))))) + +(declare-fun heapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (heapsort l) (heapsorta (hinsert-all l hleaf))))) + +; proven +(assert +(forall ((x Heap) (n Nat)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert x n)))) ; G-heap-1 +) +(assert +(forall ((n Lst) (x Heap)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert-all n x)))) ; G-heap-2 +) +(assert +(forall ((v Nat) (x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (mergea v x y)))) ; G-heap-3 +) +(assert +(forall ((x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (merge x y)))) ; G-heap-4 +) +(assert +(forall ((l Lst)) (hasLeftistProperty (hinsert-all l hleaf))) ; G-heap-5 +) +(assert +(forall ((v Nat) (x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (= (hsize (mergea v x y)) (succ (plus (hsize x) (hsize y)))))) ; G-heap-6 +) + +; conjecture +(assert (not +(forall ((x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (= (hsize (merge x y)) (plus (hsize x) (hsize y))))) ; G-heap-7 +)) +(check-sat) diff --git a/bench_adt/LEON/heap-goal8.smt2 b/bench_adt/LEON/heap-goal8.smt2 new file mode 100644 index 000000000..9ded3fb6c --- /dev/null +++ b/bench_adt/LEON/heap-goal8.smt2 @@ -0,0 +1,112 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun rsorted (Lst) Bool) +(assert (rsorted nil)) +(assert (forall ((x Nat)) (rsorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (rsorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq z x))))) + +(declare-fun sorted (Lst) Bool) +(assert (sorted nil)) +(assert (forall ((x Nat)) (sorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (sorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq x z))))) + +; heaps +(declare-datatypes () ((Heap (hleaf) (heap (rk Nat) (value Nat) (hleft Heap) (hright Heap))))) + +(declare-fun rightHeight (Heap) Nat) +(assert (= (rightHeight hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rightHeight (heap k v l r)) (succ (rightHeight r))))) + +(declare-fun rank (Heap) Nat) +(assert (= (rank hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rank (heap k v l r)) k))) + +(declare-fun hasLeftistProperty (Heap) Bool) +(assert (hasLeftistProperty hleaf)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hasLeftistProperty (heap k v l r)) (and (hasLeftistProperty l) (hasLeftistProperty r) + (leq (rightHeight r) (rightHeight l)) + (= k (succ (rightHeight r))))))) + +(declare-fun hsize (Heap) Nat) +(assert (= (hsize hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hsize (heap k v l r)) (succ (plus (hsize l) (hsize r)))))) + +(declare-fun mergea (Nat Heap Heap) Heap) +(assert (forall ((v Nat) (l Heap) (r Heap)) (= (mergea v l r) (ite (leq (rank r) (rank l)) (heap (succ (rank r)) v l r) (heap (succ (rank l)) v r l))))) + +(declare-fun merge (Heap Heap) Heap) +(assert (forall ((h Heap)) (= (merge h hleaf) h))) +(assert (forall ((h Heap)) (= (merge hleaf h) h))) +(assert (forall ((k1 Nat) (v1 Nat) (l1 Heap) (r1 Heap) (k2 Nat) (v2 Nat) (l2 Heap) (r2 Heap)) (= (merge (heap k1 v1 l1 r1) (heap k2 v2 l2 r2)) + (ite (less v2 v1) + (mergea v1 l1 (merge r1 (heap k2 v2 l2 r2))) + (mergea v2 l2 (merge (heap k1 v1 l1 r1) r2)))))) + +(declare-fun hinsert (Heap Nat) Heap) +(assert (forall ((h Heap) (n Nat)) (= (hinsert h n) (merge (heap (succ zero) n hleaf hleaf) h)))) + +(declare-fun hinsert-all (Lst Heap) Heap) +(assert (forall ((h Heap)) (= (hinsert-all nil h) h))) +(assert (forall ((h Heap) (n Nat) (l Lst)) (= (hinsert-all (cons n l) h) (hinsert (hinsert-all l h) n)))) + +(declare-fun qheapsorta (Heap Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsorta hleaf l) l))) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap) (x Lst)) (= (qheapsorta (heap k v l r) x) (qheapsorta (merge l r) (cons v x))))) + +(declare-fun qheapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsort l) (qheapsorta (hinsert-all l hleaf) nil)))) + +(declare-fun heapsorta (Heap) Lst) +(assert (= (heapsorta hleaf) nil)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (heapsorta (heap k v l r)) (cons v (heapsorta (merge l r)))))) + +(declare-fun heapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (heapsort l) (heapsorta (hinsert-all l hleaf))))) + +; proven +(assert +(forall ((x Heap) (n Nat)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert x n)))) ; G-heap-1 +) +(assert +(forall ((n Lst) (x Heap)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert-all n x)))) ; G-heap-2 +) +(assert +(forall ((v Nat) (x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (mergea v x y)))) ; G-heap-3 +) +(assert +(forall ((x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (merge x y)))) ; G-heap-4 +) +(assert +(forall ((l Lst)) (hasLeftistProperty (hinsert-all l hleaf))) ; G-heap-5 +) +(assert +(forall ((v Nat) (x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (= (hsize (mergea v x y)) (succ (plus (hsize x) (hsize y)))))) ; G-heap-6 +) +(assert +(forall ((x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (= (hsize (merge x y)) (plus (hsize x) (hsize y))))) ; G-heap-7 +) + +; conjecture +(assert (not +(forall ((x Heap) (n Nat)) (=> (hasLeftistProperty x) (= (hsize (hinsert x n)) (succ (hsize x))))) ; G-heap-8 +)) +(check-sat) diff --git a/bench_adt/LEON/heap-goal9.smt2 b/bench_adt/LEON/heap-goal9.smt2 new file mode 100644 index 000000000..698720111 --- /dev/null +++ b/bench_adt/LEON/heap-goal9.smt2 @@ -0,0 +1,115 @@ +; natural numbers +(declare-datatypes () ((Nat (succ (pred Nat)) (zero)))) + +(declare-fun less (Nat Nat) Bool) +(assert (less zero (succ zero))) +(assert (forall ((x Nat)) (less zero (succ x)))) +(assert (forall ((x Nat) (y Nat)) (= (less (succ x) (succ y)) (less x y)))) + +(define-fun leq ((x Nat) (y Nat)) Bool (or (= x y) (less x y))) + +(declare-fun plus (Nat Nat) Nat) +(assert (forall ((n Nat)) (= (plus zero n) n))) +(assert (forall ((n Nat) (m Nat)) (= (plus (succ n) m) (succ (plus n m))))) + +; lists +(declare-datatypes () ((Lst (cons (head Nat) (tail Lst)) (nil)))) + +(declare-fun len (Lst) Nat) +(assert (= (len nil) zero)) +(assert (forall ((x Nat) (y Lst)) (= (len (cons x y)) (succ (len y))))) + +(declare-fun rsorted (Lst) Bool) +(assert (rsorted nil)) +(assert (forall ((x Nat)) (rsorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (rsorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq z x))))) + +(declare-fun sorted (Lst) Bool) +(assert (sorted nil)) +(assert (forall ((x Nat)) (sorted (cons x nil)))) +(assert (forall ((x Nat) (z Nat) (y Lst)) (= (sorted (cons x (cons z y))) (and (rsorted (cons z y)) (leq x z))))) + +; heaps +(declare-datatypes () ((Heap (hleaf) (heap (rk Nat) (value Nat) (hleft Heap) (hright Heap))))) + +(declare-fun rightHeight (Heap) Nat) +(assert (= (rightHeight hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rightHeight (heap k v l r)) (succ (rightHeight r))))) + +(declare-fun rank (Heap) Nat) +(assert (= (rank hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (rank (heap k v l r)) k))) + +(declare-fun hasLeftistProperty (Heap) Bool) +(assert (hasLeftistProperty hleaf)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hasLeftistProperty (heap k v l r)) (and (hasLeftistProperty l) (hasLeftistProperty r) + (leq (rightHeight r) (rightHeight l)) + (= k (succ (rightHeight r))))))) + +(declare-fun hsize (Heap) Nat) +(assert (= (hsize hleaf) zero)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (hsize (heap k v l r)) (succ (plus (hsize l) (hsize r)))))) + +(declare-fun mergea (Nat Heap Heap) Heap) +(assert (forall ((v Nat) (l Heap) (r Heap)) (= (mergea v l r) (ite (leq (rank r) (rank l)) (heap (succ (rank r)) v l r) (heap (succ (rank l)) v r l))))) + +(declare-fun merge (Heap Heap) Heap) +(assert (forall ((h Heap)) (= (merge h hleaf) h))) +(assert (forall ((h Heap)) (= (merge hleaf h) h))) +(assert (forall ((k1 Nat) (v1 Nat) (l1 Heap) (r1 Heap) (k2 Nat) (v2 Nat) (l2 Heap) (r2 Heap)) (= (merge (heap k1 v1 l1 r1) (heap k2 v2 l2 r2)) + (ite (less v2 v1) + (mergea v1 l1 (merge r1 (heap k2 v2 l2 r2))) + (mergea v2 l2 (merge (heap k1 v1 l1 r1) r2)))))) + +(declare-fun hinsert (Heap Nat) Heap) +(assert (forall ((h Heap) (n Nat)) (= (hinsert h n) (merge (heap (succ zero) n hleaf hleaf) h)))) + +(declare-fun hinsert-all (Lst Heap) Heap) +(assert (forall ((h Heap)) (= (hinsert-all nil h) h))) +(assert (forall ((h Heap) (n Nat) (l Lst)) (= (hinsert-all (cons n l) h) (hinsert (hinsert-all l h) n)))) + +(declare-fun qheapsorta (Heap Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsorta hleaf l) l))) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap) (x Lst)) (= (qheapsorta (heap k v l r) x) (qheapsorta (merge l r) (cons v x))))) + +(declare-fun qheapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (qheapsort l) (qheapsorta (hinsert-all l hleaf) nil)))) + +(declare-fun heapsorta (Heap) Lst) +(assert (= (heapsorta hleaf) nil)) +(assert (forall ((k Nat) (v Nat) (l Heap) (r Heap)) (= (heapsorta (heap k v l r)) (cons v (heapsorta (merge l r)))))) + +(declare-fun heapsort (Lst) Lst) +(assert (forall ((l Lst)) (= (heapsort l) (heapsorta (hinsert-all l hleaf))))) + +; proven +(assert +(forall ((x Heap) (n Nat)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert x n)))) ; G-heap-1 +) +(assert +(forall ((n Lst) (x Heap)) (=> (hasLeftistProperty x) (hasLeftistProperty (hinsert-all n x)))) ; G-heap-2 +) +(assert +(forall ((v Nat) (x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (mergea v x y)))) ; G-heap-3 +) +(assert +(forall ((x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (hasLeftistProperty (merge x y)))) ; G-heap-4 +) +(assert +(forall ((l Lst)) (hasLeftistProperty (hinsert-all l hleaf))) ; G-heap-5 +) +(assert +(forall ((v Nat) (x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (= (hsize (mergea v x y)) (succ (plus (hsize x) (hsize y)))))) ; G-heap-6 +) +(assert +(forall ((x Heap) (y Heap)) (=> (and (hasLeftistProperty x) (hasLeftistProperty y)) (= (hsize (merge x y)) (plus (hsize x) (hsize y))))) ; G-heap-7 +) +(assert +(forall ((x Heap) (n Nat)) (=> (hasLeftistProperty x) (= (hsize (hinsert x n)) (succ (hsize x))))) ; G-heap-8 +) + +; conjecture +(assert (not +(forall ((l Lst) (x Heap)) (=> (hasLeftistProperty x) (= (hsize (hinsert-all l x)) (plus (hsize x) (len l))))) ; G-heap-9 +)) +(check-sat) diff --git a/bench_horn_adt/heap_size.smt2 b/bench_horn_adt/ADTIND/heap_size.smt2 similarity index 100% rename from bench_horn_adt/heap_size.smt2 rename to bench_horn_adt/ADTIND/heap_size.smt2 diff --git a/bench_horn_adt/ADTIND/list_append_ass.smt2 b/bench_horn_adt/ADTIND/list_append_ass.smt2 new file mode 100644 index 000000000..9970b2364 --- /dev/null +++ b/bench_horn_adt/ADTIND/list_append_ass.smt2 @@ -0,0 +1,12 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) + +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(assert (forall ((xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst) (us Lst) (ws Lst)) + (=> (and (append ys zs rs) (append xs ys ts) (append xs rs us) (append ts zs ws) (not (= us ws))) false))) +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/list_append_len.smt2 b/bench_horn_adt/ADTIND/list_append_len.smt2 similarity index 100% rename from bench_horn_adt/list_append_len.smt2 rename to bench_horn_adt/ADTIND/list_append_len.smt2 diff --git a/bench_horn_adt/list_append_nil.smt2 b/bench_horn_adt/ADTIND/list_append_nil.smt2 similarity index 100% rename from bench_horn_adt/list_append_nil.smt2 rename to bench_horn_adt/ADTIND/list_append_nil.smt2 diff --git a/bench_horn_adt/list_interleave.smt2 b/bench_horn_adt/ADTIND/list_interleave.smt2 similarity index 100% rename from bench_horn_adt/list_interleave.smt2 rename to bench_horn_adt/ADTIND/list_interleave.smt2 diff --git a/bench_horn_adt/list_len.smt2 b/bench_horn_adt/ADTIND/list_len.smt2 similarity index 99% rename from bench_horn_adt/list_len.smt2 rename to bench_horn_adt/ADTIND/list_len.smt2 index 25e2c91a7..56f4d32e7 100644 --- a/bench_horn_adt/list_len.smt2 +++ b/bench_horn_adt/ADTIND/list_len.smt2 @@ -1,4 +1,3 @@ - (set-logic HORN) (declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) (declare-fun length (Lst Int) Bool) diff --git a/bench_horn_adt/list_len_butlast.smt2 b/bench_horn_adt/ADTIND/list_len_butlast.smt2 similarity index 100% rename from bench_horn_adt/list_len_butlast.smt2 rename to bench_horn_adt/ADTIND/list_len_butlast.smt2 diff --git a/bench_horn_adt/list_len_stren.smt2 b/bench_horn_adt/ADTIND/list_len_stren.smt2 similarity index 100% rename from bench_horn_adt/list_len_stren.smt2 rename to bench_horn_adt/ADTIND/list_len_stren.smt2 diff --git a/bench_horn_adt/ADTIND/list_rev.smt2 b/bench_horn_adt/ADTIND/list_rev.smt2 new file mode 100644 index 000000000..d6e00e578 --- /dev/null +++ b/bench_horn_adt/ADTIND/list_rev.smt2 @@ -0,0 +1,20 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun rev (Lst Lst) Bool) +(assert (rev nil nil)) +(assert (forall ((xs Lst) (x Int) (ys Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (rev ys rs) (append rs (cons x nil) ts)) (rev xs ts)))) + +; extra lemmas +(assert (forall ((xs Lst) (ys Lst) (zs Lst) (us Lst) (rs Lst) (ts Lst)) + (=> (and (append xs ys zs) (rev ys rs) (rev xs ts) (append rs ts us)) (rev zs us)))) + +(assert (forall ((xs Lst) (ys Lst) (zs Lst)) (=> (and (rev xs ys) (rev ys zs) (not (= xs zs))) false))) + +(check-sat) diff --git a/bench_horn_adt/ADTIND/list_rev2_append.smt2 b/bench_horn_adt/ADTIND/list_rev2_append.smt2 new file mode 100644 index 000000000..9c43da67c --- /dev/null +++ b/bench_horn_adt/ADTIND/list_rev2_append.smt2 @@ -0,0 +1,21 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-fun append (Lst Lst Lst) Bool) + +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun rev2 (Lst Lst Lst) Bool) +(assert (forall ((a Lst)) (rev2 nil a a))) +(assert (forall ((x Int) (ts Lst) (xs Lst) (zs Lst) (rs Lst) (us Lst)) + (=> (and (= xs (cons x ts)) (= rs (cons x zs)) (rev2 ts rs us)) (rev2 xs zs us)))) + +; extra lemma +(assert (forall ((xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst) (us Lst)) + (=> (and (append xs ys rs) (append ys zs ts) (append xs ts us)) (append rs zs us)))) + +(assert (forall ((xs Lst) (zs Lst) (ts Lst) (us Lst) (ys Lst)) + (=> (and (rev2 xs zs ts) (rev2 xs nil ys) (append ys zs us) (not (= ts us))) false))) + +(check-sat) diff --git a/bench_horn_adt/list_rev2_len.smt2 b/bench_horn_adt/ADTIND/list_rev2_len.smt2 similarity index 100% rename from bench_horn_adt/list_rev2_len.smt2 rename to bench_horn_adt/ADTIND/list_rev2_len.smt2 diff --git a/bench_horn_adt/ADTIND/list_rev_append.smt2 b/bench_horn_adt/ADTIND/list_rev_append.smt2 new file mode 100644 index 000000000..4844d0841 --- /dev/null +++ b/bench_horn_adt/ADTIND/list_rev_append.smt2 @@ -0,0 +1,22 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun rev (Lst Lst) Bool) +(assert (rev nil nil)) +(assert (forall ((xs Lst) (x Int) (ys Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (rev ys rs) (append rs (cons x nil) ts)) (rev xs ts)))) + +; extra lemmas +(assert (forall ((xs Lst) (ys Lst)) (append xs nil xs))) +(assert (forall ((xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst) (us Lst)) + (=> (and (append xs ys rs) (append ys zs ts) (append xs ts us)) (append rs zs us)))) + +(assert (forall ((xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst) (us Lst) (ws Lst)) + (=> (and (append xs ys zs) (rev zs rs) (rev ys ts) (rev xs us) (append ts us ws) (not (= rs ws))) false))) + +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/ADTIND/queue_amort.smt2 b/bench_horn_adt/ADTIND/queue_amort.smt2 new file mode 100644 index 000000000..63adb70e9 --- /dev/null +++ b/bench_horn_adt/ADTIND/queue_amort.smt2 @@ -0,0 +1,40 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun len (Lst Int) Bool) + +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + + +(declare-fun rev2 (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (rev2 nil xs xs))) +(assert (forall ((x Int) (ts Lst) (xs Lst) (zs Lst) (rs Lst) (us Lst)) + (=> (and (= xs (cons x ts)) (= rs (cons x zs)) (rev2 ts rs us)) (rev2 xs zs us)))) + +(declare-fun qrev (Lst Lst) Bool) +(assert (forall ((xs Lst) (ys Lst)) (=> (rev2 xs nil ys) (qrev xs ys)))) + +(declare-fun amortizeQueue (Lst Lst Queue) Bool) +(assert (forall ((x Lst) (y Lst) (q Queue) (ly Int) (lx Int) (z Lst) (a Lst)) + (=> (and (len y ly) (len x lx) (qrev y z) (append x z a) + (= q (ite (<= ly lx) (queue x y) (queue a nil)))) (amortizeQueue x y q)))) + +(declare-fun isAmortized (Queue Bool) Bool) +(assert (forall ((x Lst) (y Lst) (lx Int) (ly Int)) + (=> (and (len x lx) (len y ly) (<= ly lx)) (isAmortized (queue x y) true)))) + +; extra lemma +(assert (forall ((x Lst) (lx Int)) (=> (len x lx) (<= 0 lx)))) + +(assert (forall ((x Lst) (y Lst) (q Queue)) + (=> (and (amortizeQueue x y q) (not (isAmortized q true))) false))) + +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/ADTIND/queue_len.smt2 b/bench_horn_adt/ADTIND/queue_len.smt2 new file mode 100644 index 000000000..f973151cc --- /dev/null +++ b/bench_horn_adt/ADTIND/queue_len.smt2 @@ -0,0 +1,43 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun len (Lst Int) Bool) + +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +(declare-fun qlen (Queue Int) Bool) +(assert (forall ((x Lst) (y Lst) (lx Int) (ly Int) (lq Int)) + (=> (and (len x lx) (len y ly)) (qlen (queue x y) (+ lx ly))))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + + +(declare-fun rev2 (Lst Lst Lst) Bool) +(assert (forall ((zs Lst)) (rev2 nil zs zs))) +(assert (forall ((x Int) (ts Lst) (xs Lst) (zs Lst) (rs Lst) (us Lst)) + (=> (and (= xs (cons x ts)) (= rs (cons x zs)) (rev2 ts rs us)) (rev2 xs zs us)))) + +(declare-fun qrev (Lst Lst) Bool) +(assert (forall ((xs Lst) (ys Lst)) (=> (rev2 xs nil ys) (qrev xs ys)))) + +(declare-fun amortizeQueue (Lst Lst Queue) Bool) +(assert (forall ((x Lst) (y Lst) (q Queue) (ly Int) (lx Int) (z Lst) (a Lst)) + (=> (and (len y ly) (len x lx) (qrev y z) (append x z a) + (= q (ite (<= ly lx) (queue x y) (queue a nil)))) (amortizeQueue x y q)))) + +; extra lemmas +(assert (forall ((xs Lst) (ys Lst) (lx Int) (ly Int)) + (=> (and (rev2 xs nil ys) (len xs lx) (len ys ly)) (= ly lx)))) +(assert (forall ((x Lst) (y Lst) (z Lst) (lx Int) (ly Int) (lz Int)) + (=> (and (append x y z) (len x lx) (len y ly) (len z lz)) (= lz (+ lx ly))))) + +(assert (forall ((x Lst) (y Lst) (q Queue) (lx Int) (ly Int) (lq Int)) + (=> (and (amortizeQueue x y q) (qlen q lq) (len x lx) (len y ly) (not (= lq (+ lx ly)))) false))) + +(check-sat) diff --git a/bench_horn_adt/ADTIND/queue_popback.smt2 b/bench_horn_adt/ADTIND/queue_popback.smt2 new file mode 100644 index 000000000..39987733e --- /dev/null +++ b/bench_horn_adt/ADTIND/queue_popback.smt2 @@ -0,0 +1,44 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun len (Lst Int) Bool) +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +(declare-fun qlen (Queue Int) Bool) +(assert (forall ((x Lst) (y Lst) (lx Int) (ly Int) (lq Int)) + (=> (and (len x lx) (len y ly)) (qlen (queue x y) (+ lx ly))))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + + +(declare-fun butlast (Lst Lst) Bool) +(assert (butlast nil nil)) +(assert (forall ((n Int) (x Lst) (y Lst) (z Lst)) + (=> (and (butlast x y) (= z (ite (= x nil) nil (cons n y)))) (butlast (cons n x) z)))) + +(declare-fun qpopback (Queue Queue) Bool) +(assert (forall ((x Lst) (y Lst) (n Int)) (qpopback (queue x (cons n y)) (queue x y)))) +(assert (forall ((x Lst) (y Lst)) (=> (butlast x y) (qpopback (queue x nil) (queue y nil))))) + +(declare-fun isAmortized (Queue Bool) Bool) +(assert (forall ((x Lst) (y Lst) (lx Int) (ly Int)) + (=> (and (len x lx) (len y ly) (<= ly lx)) (isAmortized (queue x y) true)))) + +(declare-fun isNotEmpty (Queue Bool) Bool) +(assert (forall ((x Lst) (y Lst) (n Int) (z Lst)) (=> (= x (cons n y)) (isNotEmpty (queue x z) true)))) +(assert (forall ((x Lst) (y Lst) (n Int) (z Lst)) (=> (= z (cons n y)) (isNotEmpty (queue x z) true)))) + +; extra lemma +(assert (forall ((x Lst) (n Int) (y Lst) (lx Int) (ly Int)) + (=> (and (butlast (cons n x) y)) (len y ly) (len x lx) (= lx ly)))) + +(assert (forall ((q Queue) (n Int) (p Queue) (lp Int) (lq Int)) + (=> (and (isNotEmpty q true) (isAmortized q true) (qpopback q p) (qlen p lp) (qlen q lq) + (not (= (+ 1 lp) lq))) false))) +(check-sat) diff --git a/bench_horn_adt/ADTIND/queue_push.smt2 b/bench_horn_adt/ADTIND/queue_push.smt2 new file mode 100644 index 000000000..798190833 --- /dev/null +++ b/bench_horn_adt/ADTIND/queue_push.smt2 @@ -0,0 +1,47 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun len (Lst Int) Bool) + +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +(declare-fun qlen (Queue Int) Bool) +(assert (forall ((x Lst) (y Lst) (lx Int) (ly Int) (lq Int)) + (=> (and (len x lx) (len y ly)) (qlen (queue x y) (+ lx ly))))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + + +(declare-fun rev2 (Lst Lst Lst) Bool) +(assert (forall ((zs Lst)) (rev2 nil zs zs))) +(assert (forall ((x Int) (ts Lst) (xs Lst) (zs Lst) (rs Lst) (us Lst)) + (=> (and (= xs (cons x ts)) (= rs (cons x zs)) (rev2 ts rs us)) (rev2 xs zs us)))) + +(declare-fun qrev (Lst Lst) Bool) +(assert (forall ((xs Lst) (ys Lst)) (=> (rev2 xs nil ys) (qrev xs ys)))) + +(declare-fun amortizeQueue (Lst Lst Queue) Bool) +(assert (forall ((x Lst) (y Lst) (q Queue) (ly Int) (lx Int) (z Lst) (a Lst)) + (=> (and (len y ly) (len x lx) (qrev y z) (append x z a) (<= ly lx) (= q (queue x y))) + (amortizeQueue x y q)))) +(assert (forall ((x Lst) (y Lst) (q Queue) (ly Int) (lx Int) (z Lst) (a Lst)) + (=> (and (len y ly) (len x lx) (qrev y z) (append x z a) (> ly lx) (= q (queue a nil))) + (amortizeQueue x y q)))) + +(declare-fun qpush (Queue Int Queue) Bool) +(assert (forall ((x Lst) (y Lst) (n Int) (q Queue)) + (=> (amortizeQueue x (cons n y) q) (qpush (queue x y) n q)))) + +; extra lemma +(assert (forall ((x Lst) (y Lst) (q Queue) (lx Int) (ly Int) (lq Int)) + (=> (and (len x lx) (len y ly) (amortizeQueue x y q) (qlen q lq)) (= lq (+ lx ly))))) + +(assert (forall ((q Queue) (n Int) (p Queue) (lp Int) (lq Int)) + (=> (and (qpush q n p) (qlen p lp) (qlen q lq) (not (= lp (+ 1 lq)))) false))) +(check-sat) diff --git a/bench_horn_adt/ADTIND/queue_push_to_list.smt2 b/bench_horn_adt/ADTIND/queue_push_to_list.smt2 new file mode 100644 index 000000000..9ff139228 --- /dev/null +++ b/bench_horn_adt/ADTIND/queue_push_to_list.smt2 @@ -0,0 +1,51 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun len (Lst Int) Bool) + +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +(declare-fun qlen (Queue Int) Bool) +(assert (forall ((x Lst) (y Lst) (lx Int) (ly Int) (lq Int)) + (=> (and (len x lx) (len y ly)) (qlen (queue x y) (+ lx ly))))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun rev2 (Lst Lst Lst) Bool) +(assert (forall ((zs Lst)) (rev2 nil zs zs))) +(assert (forall ((x Int) (ts Lst) (xs Lst) (zs Lst) (rs Lst) (us Lst)) + (=> (and (= xs (cons x ts)) (= rs (cons x zs)) (rev2 ts rs us)) (rev2 xs zs us)))) + +(declare-fun qrev (Lst Lst) Bool) +(assert (forall ((xs Lst) (ys Lst)) + (=> (rev2 xs nil ys) (qrev xs ys)))) + +(declare-fun amortizeQueue (Lst Lst Queue) Bool) +(assert (forall ((x Lst) (y Lst) (q Queue) (ly Int) (lx Int) (z Lst) (a Lst)) + (=> (and (len y ly) (len x lx) (qrev y z) (append x z a) + (= q (ite (<= ly lx) (queue x y) (queue a nil)))) (amortizeQueue x y q)))) + +(declare-fun qpush (Queue Int Queue) Bool) +(assert (forall ((x Lst) (y Lst) (n Int) (q Queue)) + (=> (amortizeQueue x (cons n y) q) (qpush (queue x y) n q)))) + + +(declare-fun queue-to-lst (Queue Lst) Bool) +(assert (forall ((x Lst) (y Lst) (q Queue) (z Lst) (a Lst)) + (=> (and (qrev y z) (append x z a)) (queue-to-lst (queue x y) a)))) +; extra lemmas +(assert (forall ((xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst) (us Lst)) + (=> (and (append xs ys rs) (append ys zs ts) (append xs ts us)) (append rs zs us)))) +(assert (forall ((x Lst) (a Lst) (y Lst) (z Lst)) + (=> (and (rev2 x nil y) (append y a z)) (rev2 x a z)))) +(assert (forall ((q Queue) (n Int) (x Lst) (y Lst) (p Queue) (z Lst)) + (=> (and (queue-to-lst q x) (append x (cons n nil) y) (qpush q n p) (queue-to-lst p z) (not (= y z))) + false))) + +(check-sat) diff --git a/bench_horn_adt/tree-insert-all-size.smt2 b/bench_horn_adt/ADTIND/tree_insert_all_size.smt2 similarity index 76% rename from bench_horn_adt/tree-insert-all-size.smt2 rename to bench_horn_adt/ADTIND/tree_insert_all_size.smt2 index 91bfd6d18..57efe0d1c 100644 --- a/bench_horn_adt/tree-insert-all-size.smt2 +++ b/bench_horn_adt/ADTIND/tree_insert_all_size.smt2 @@ -11,8 +11,10 @@ (=> (and (= m (node x l r)) (size l sl) (size r sr)) (size m (+ 1 (+ sl sr)))))) (assert (forall ((i Int)) (insert leaf i (node i leaf leaf)))) -(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (y Tree) (m Tree)) - (=> (and (insert r i x) (insert l i y) (= m (ite (< d i) (node d l x) (node d y r)))) (insert (node d l r) i m)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (m Tree)) + (=> (and (insert r i x) (< d i) (= m (node d l x))) (insert (node d l r) i m)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (y Tree) (m Tree)) + (=> (and (insert l i y) (>= d i) (= m (node d y r))) (insert (node d l r) i m)))) (assert (forall ((x Tree)) (insert-all x nil x))) (assert (forall ((x Tree) (n Int) (ls Lst) (xs Lst) (z Tree) (y Tree)) diff --git a/bench_horn_adt/ADTIND/tree_insert_size.smt2 b/bench_horn_adt/ADTIND/tree_insert_size.smt2 new file mode 100644 index 000000000..bade22341 --- /dev/null +++ b/bench_horn_adt/ADTIND/tree_insert_size.smt2 @@ -0,0 +1,21 @@ +(set-logic HORN) +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) + +(declare-fun size (Tree Int) Bool) +(declare-fun insert (Tree Int Tree) Bool) + +(assert (size leaf 0)) +(assert (forall ((x Int) (r Tree) (l Tree) (m Tree) (sl Int) (sr Int)) + (=> (and (= m (node x l r)) (size l sl) (size r sr)) (size m (+ 1 (+ sl sr)))))) + +(assert (forall ((i Int)) (insert leaf i (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (m Tree)) + (=> (and (insert r i x) (< d i) (= m (node d l x))) (insert (node d l r) i m)))) + +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (y Tree) (m Tree)) + (=> (and (insert l i y) (>= d i) (= m (node d y r))) (insert (node d l r) i m)))) + +(assert (forall ((t Tree) (n Int) (ts Int) (rs Int) (r Tree)) + (=> (and (size t ts) (insert t n r) (size r rs) (not (= rs (+ 1 ts)))) false))) + +(check-sat) diff --git a/bench_horn_adt/tree_size.smt2 b/bench_horn_adt/ADTIND/tree_size.smt2 similarity index 100% rename from bench_horn_adt/tree_size.smt2 rename to bench_horn_adt/ADTIND/tree_size.smt2 diff --git a/bench_horn_adt/LEON/amortize-queue-goal1.smt2 b/bench_horn_adt/LEON/amortize-queue-goal1.smt2 new file mode 100644 index 000000000..17353aaca --- /dev/null +++ b/bench_horn_adt/LEON/amortize-queue-goal1.smt2 @@ -0,0 +1,19 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun len (Lst Int) Bool) +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +; conjecture +(assert (forall ((xs Lst) (lx Int) (ys Lst) (ly Int) (zs Lst) (lz Int)) + (=> (and (len xs lx) (len ys ly) (append xs ys zs) (len zs lz) (not (= (+ lx ly) lz))) false))) ; G-amortize-queue-1 +(check-sat) diff --git a/bench_horn_adt/LEON/amortize-queue-goal10.smt2 b/bench_horn_adt/LEON/amortize-queue-goal10.smt2 new file mode 100644 index 000000000..2269c4d23 --- /dev/null +++ b/bench_horn_adt/LEON/amortize-queue-goal10.smt2 @@ -0,0 +1,19 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun qreva (Lst Lst Lst) Bool) +(assert (forall ((x Lst)) (qreva nil x x))) +(assert (forall ((x Lst) (y Lst) (z Int) (u Lst)) + (=> (qreva x (cons z y) u) (qreva (cons z x) y u)))) + +; conjecture +(assert (forall ((x Lst) (y Lst) (z Lst) (u Lst) (v Lst) (r Lst) (s Lst)) + (=> (and (qreva x y u) (qreva u z v) (append x z r) (qreva y r s) (not (= v s))) false))) ; G-amortize-queue-10 +(check-sat) diff --git a/bench_horn_adt/LEON/amortize-queue-goal11.smt2 b/bench_horn_adt/LEON/amortize-queue-goal11.smt2 new file mode 100644 index 000000000..2dd88af63 --- /dev/null +++ b/bench_horn_adt/LEON/amortize-queue-goal11.smt2 @@ -0,0 +1,15 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +; conjecture +(assert (forall ((x Lst) (y Lst) (z Lst) (s Lst) (r Lst) (u Lst) (v Lst)) + (=> (and (append y z r) (append x r u) (append x y s) (append s z v) (not (= u v))) false))) + +(check-sat) diff --git a/bench_horn_adt/LEON/amortize-queue-goal12.smt2 b/bench_horn_adt/LEON/amortize-queue-goal12.smt2 new file mode 100644 index 000000000..683e8d35d --- /dev/null +++ b/bench_horn_adt/LEON/amortize-queue-goal12.smt2 @@ -0,0 +1,41 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun len (Lst Int) Bool) +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +(declare-fun qreva (Lst Lst Lst) Bool) +(assert (forall ((x Lst)) (qreva nil x x))) +(assert (forall ((x Lst) (y Lst) (z Int) (u Lst)) + (=> (qreva x (cons z y) u) (qreva (cons z x) y u)))) + +(declare-fun qrev (Lst Lst) Bool) +(assert (forall ((xs Lst) (ys Lst)) + (=> (qreva xs nil ys) (qrev xs ys)))) + +;queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun queue-to-lst (Queue Lst) Bool) +(assert (forall ((x Lst) (y Lst) (q Queue) (z Lst) (a Lst)) + (=> (and (qrev y z) (append x z a)) (queue-to-lst (queue x y) a)))) + +(declare-fun amortizeQueue (Lst Lst Queue) Bool) +(assert (forall ((x Lst) (y Lst) (q Queue) (ly Int) (lx Int) (z Lst) (a Lst)) + (=> (and (len y ly) (len x lx) (qrev y z) (append x z a) + (= q (ite (<= ly lx) (queue x y) (queue a nil)))) (amortizeQueue x y q)))) + + +; conjecture +(assert (forall ((x Lst) (y Lst) (q Queue) (z Lst) (r Lst)) + (=> (and (queue-to-lst (queue x y) z) (amortizeQueue x y q) (queue-to-lst q r) (not (= r z))) false))); G-amortize-queue-12 +(check-sat) diff --git a/bench_horn_adt/LEON/amortize-queue-goal13.smt2 b/bench_horn_adt/LEON/amortize-queue-goal13.smt2 new file mode 100644 index 000000000..c3ab97b2a --- /dev/null +++ b/bench_horn_adt/LEON/amortize-queue-goal13.smt2 @@ -0,0 +1,53 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun len (Lst Int) Bool) +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +(declare-fun butlast (Lst Lst) Bool) +(assert (butlast nil nil)) +(assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst)) + (=> (and (= ys (cons n xs)) (= xs nil)) (butlast ys nil)))) +(assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst) (x Int) (zs Lst)) + (=> (and (butlast xs rs) (= ys (cons n xs)) (= xs (cons x zs))) (butlast ys (cons n rs))))) + +(declare-fun qreva (Lst Lst Lst) Bool) +(assert (forall ((x Lst)) (qreva nil x x))) +(assert (forall ((x Lst) (y Lst) (z Int) (u Lst)) + (=> (qreva x (cons z y) u) (qreva (cons z x) y u)))) + +(declare-fun qrev (Lst Lst) Bool) +(assert (forall ((xs Lst) (ys Lst)) + (=> (qreva xs nil ys) (qrev xs ys)))) + +;queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun queue-to-lst (Queue Lst) Bool) +(assert (forall ((x Lst) (y Lst) (q Queue) (z Lst) (a Lst)) + (=> (and (qrev y z) (append x z a)) (queue-to-lst (queue x y) a)))) + +(declare-fun amortizeQueue (Lst Lst Queue) Bool) +(assert (forall ((x Lst) (y Lst) (q Queue) (ly Int) (lx Int) (z Lst) (a Lst)) + (=> (and (len y ly) (len x lx) (qrev y z) (append x z a) + (= q (ite (<= ly lx) (queue x y) (queue a nil)))) (amortizeQueue x y q)))) + +(declare-fun qpop (Queue Queue) Bool) +(assert (forall ((x Lst) (y Lst) (n Int)) (qpop (queue x (cons n y)) (queue x y)))) +(assert (forall ((x Lst) (y Lst)) (=> (butlast x y) (qpop (queue x nil) (queue y nil))))) + +; conjecture +(assert (forall ((x Lst) (y Lst) (q Queue) (z Lst) (u Lst) (v Lst)) + (=> (and (queue-to-lst (queue x y) z) (butlast z u) (qpop (queue x y) q) (queue-to-lst q v) (not (= u v))) + false))) ; G-amortize-queue-13 + +(check-sat) diff --git a/bench_horn_adt/LEON/amortize-queue-goal14.smt2 b/bench_horn_adt/LEON/amortize-queue-goal14.smt2 new file mode 100644 index 000000000..1e7d63cb8 --- /dev/null +++ b/bench_horn_adt/LEON/amortize-queue-goal14.smt2 @@ -0,0 +1,56 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun len (Lst Int) Bool) +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +(declare-fun butlast (Lst Lst) Bool) +(assert (butlast nil nil)) +(assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst)) + (=> (and (= ys (cons n xs)) (= xs nil)) (butlast ys nil)))) +(assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst) (x Int) (zs Lst)) + (=> (and (butlast xs rs) (= ys (cons n xs)) (= xs (cons x zs))) (butlast ys (cons n rs))))) + +(declare-fun qreva (Lst Lst Lst) Bool) +(assert (forall ((x Lst)) (qreva nil x x))) +(assert (forall ((x Lst) (y Lst) (z Int) (u Lst)) + (=> (qreva x (cons z y) u) (qreva (cons z x) y u)))) + +(declare-fun qrev (Lst Lst) Bool) +(assert (forall ((xs Lst) (ys Lst)) + (=> (qreva xs nil ys) (qrev xs ys)))) + +;queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun queue-to-lst (Queue Lst) Bool) +(assert (forall ((x Lst) (y Lst) (q Queue) (z Lst) (a Lst)) + (=> (and (qrev y z) (append x z a)) (queue-to-lst (queue x y) a)))) + +(declare-fun amortizeQueue (Lst Lst Queue) Bool) +(assert (forall ((x Lst) (y Lst) (q Queue) (ly Int) (lx Int) (z Lst) (a Lst)) + (=> (and (len y ly) (len x lx) (qrev y z) (append x z a) + (= q (ite (<= ly lx) (queue x y) (queue a nil)))) (amortizeQueue x y q)))) + +(declare-fun enqueue (Queue Int Queue) Bool) +(assert (forall ((x Lst) (y Lst) (n Int) (q Queue)) + (=> (amortizeQueue x (cons n y) q) (enqueue (queue x y) n q)))) + +(declare-fun qpop (Queue Queue) Bool) +(assert (forall ((x Lst) (y Lst) (n Int)) (qpop (queue x (cons n y)) (queue x y)))) +(assert (forall ((x Lst) (y Lst)) (=> (butlast x y) (qpop (queue x nil) (queue y nil))))) + +; conjecture +(assert (forall ((x Lst) (y Lst) (n Int) (z Lst) (u Lst) (v Lst) (q Queue)) + (=> (and (queue-to-lst (queue x y) z) (append z (cons n nil) u) (enqueue (queue x y) n q) (queue-to-lst q v) + (not (= u v))) false))); G-amortize-queue-14 +(check-sat) diff --git a/bench_horn_adt/LEON/amortize-queue-goal15.smt2 b/bench_horn_adt/LEON/amortize-queue-goal15.smt2 new file mode 100644 index 000000000..eaa809ab8 --- /dev/null +++ b/bench_horn_adt/LEON/amortize-queue-goal15.smt2 @@ -0,0 +1,63 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun len (Lst Int) Bool) +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +(declare-fun butlast (Lst Lst) Bool) +(assert (butlast nil nil)) +(assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst)) + (=> (and (= ys (cons n xs)) (= xs nil)) (butlast ys nil)))) +(assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst) (x Int) (zs Lst)) + (=> (and (butlast xs rs) (= ys (cons n xs)) (= xs (cons x zs))) (butlast ys (cons n rs))))) + +(declare-fun qreva (Lst Lst Lst) Bool) +(assert (forall ((x Lst)) (qreva nil x x))) +(assert (forall ((x Lst) (y Lst) (z Int) (u Lst)) + (=> (qreva x (cons z y) u) (qreva (cons z x) y u)))) + +(declare-fun qrev (Lst Lst) Bool) +(assert (forall ((xs Lst) (ys Lst)) + (=> (qreva xs nil ys) (qrev xs ys)))) + +;queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun queue-to-lst (Queue Lst) Bool) +(assert (forall ((x Lst) (y Lst) (q Queue) (z Lst) (a Lst)) + (=> (and (qrev y z) (append x z a)) (queue-to-lst (queue x y) a)))) + +(declare-fun isAmortized (Queue Bool) Bool) +(assert (forall ((x Lst) (y Lst) (lx Int) (ly Int)) + (=> (and (len x lx) (len y ly) (<= ly lx)) (isAmortized (queue x y) true)))) + +(declare-fun amortizeQueue (Lst Lst Queue) Bool) +(assert (forall ((x Lst) (y Lst) (q Queue) (ly Int) (lx Int) (z Lst) (a Lst)) + (=> (and (len y ly) (len x lx) (qrev y z) (append x z a) + (= q (ite (<= ly lx) (queue x y) (queue a nil)))) (amortizeQueue x y q)))) + +(declare-fun enqueue (Queue Int Queue) Bool) +(assert (forall ((x Lst) (y Lst) (n Int) (q Queue)) + (=> (amortizeQueue x (cons n y) q) (enqueue (queue x y) n q)))) + +(declare-fun qpop (Queue Queue) Bool) +(assert (forall ((x Lst) (y Lst) (n Int)) (qpop (queue x (cons n y)) (queue x y)))) +(assert (forall ((x Lst) (y Lst)) (=> (butlast x y) (qpop (queue x nil) (queue y nil))))) + +; proven +(assert (forall ((x Lst) (y Lst) (lz Int) (lx Int) (ly Int) (z Lst)) + (=> (and (append x y z) (len z lz) (len x lx) (len y ly)) (= lz (+ lx ly))))) ; G-amortize-queue-1 +; conjecture +(assert (forall ((x Lst) (y Lst) (q Queue)) + (=> (and (amortizeQueue x y q) (not (isAmortized q true))) false))) + +(check-sat) diff --git a/bench_horn_adt/LEON/amortize-queue-goal2.smt2 b/bench_horn_adt/LEON/amortize-queue-goal2.smt2 new file mode 100644 index 000000000..63f0e81ba --- /dev/null +++ b/bench_horn_adt/LEON/amortize-queue-goal2.smt2 @@ -0,0 +1,25 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun len (Lst Int) Bool) +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +(declare-fun qreva (Lst Lst Lst) Bool) +(assert (forall ((x Lst)) (qreva nil x x))) +(assert (forall ((x Lst) (y Lst) (z Int) (u Lst)) + (=> (qreva x (cons z y) u) (qreva (cons z x) y u)))) + +; conjecture +(assert (forall ((x Lst) (y Lst) (z Lst) (lx Int) (ly Int) (lz Int)) + (=> (and (qreva x y z) (len z lz) (len x lx) (len y ly) (not (= lz (+ 1(+ lx ly))))) + false))) ; G-amortize-queue-2 +(check-sat) diff --git a/bench_horn_adt/LEON/amortize-queue-goal3.smt2 b/bench_horn_adt/LEON/amortize-queue-goal3.smt2 new file mode 100644 index 000000000..4a8bc1bbf --- /dev/null +++ b/bench_horn_adt/LEON/amortize-queue-goal3.smt2 @@ -0,0 +1,36 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun len (Lst Int) Bool) +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +(declare-fun qreva (Lst Lst Lst) Bool) +(assert (forall ((x Lst)) (qreva nil x x))) +(assert (forall ((x Lst) (y Lst) (z Int) (u Lst)) + (=> (qreva x (cons z y) u) (qreva (cons z x) y u)))) + +(declare-fun qrev (Lst Lst) Bool) +(assert (forall ((xs Lst) (ys Lst)) + (=> (qreva xs nil ys) (qrev xs ys)))) + +; proven +(assert (forall ((xs Lst) (lx Int) (ys Lst) (ly Int) (zs Lst) (lz Int)) + (=> (and (len xs lx) (len ys ly) (append xs ys zs) (len zs lz)) (= (+ lx ly) lz)))) ; G-amortize-queue-1 + +(assert (forall ((x Lst) (y Lst) (z Lst) (lx Int) (ly Int) (lz Int)) + (=> (and (qreva x y z) (len z lz) (len x lx) (len y ly)) (= lz (+ lx ly))))) ; G-amortize-queue-2 + +; conjecture +(assert (forall ((x Lst) (lx Int) (y Lst) (ly Int)) + (=> (and (qrev x y) (len x lx) (len y ly) (not (= lx ly))) false))) ; G-amortize-queue-3 + +(check-sat) diff --git a/bench_horn_adt/LEON/amortize-queue-goal4.smt2 b/bench_horn_adt/LEON/amortize-queue-goal4.smt2 new file mode 100644 index 000000000..b7f9ba3f9 --- /dev/null +++ b/bench_horn_adt/LEON/amortize-queue-goal4.smt2 @@ -0,0 +1,26 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun len (Lst Int) Bool) +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +;queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun qlen (Queue Int) Bool) +(assert (forall ((x Lst) (y Lst) (lx Int) (ly Int) (lq Int)) + (=> (and (len x lx) (len y ly)) (qlen (queue x y) (+ lx ly))))) + +; conjecture +(assert (forall ((x Lst) (lx Int) (y Lst) (ly Int) (lq Int)) + (=> (and (len x lx) (len y ly) (qlen (queue x y) lq) (not (= (+ lx ly) lq))) false))) ; G-amortize-queue-4 +(check-sat) diff --git a/bench_horn_adt/LEON/amortize-queue-goal5.smt2 b/bench_horn_adt/LEON/amortize-queue-goal5.smt2 new file mode 100644 index 000000000..fb7a45a2f --- /dev/null +++ b/bench_horn_adt/LEON/amortize-queue-goal5.smt2 @@ -0,0 +1,21 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun len (Lst Int) Bool) +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +(declare-fun butlast (Lst Lst) Bool) +(assert (butlast nil nil)) +(assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst)) + (=> (and (= ys (cons n xs)) (= xs nil)) (butlast ys nil)))) +(assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst) (x Int) (zs Lst)) + (=> (and (butlast xs rs) (= ys (cons n xs)) (= xs (cons x zs))) (butlast ys (cons n rs))))) + +; conjecture +(assert (forall ((x Lst) (y Int) (z Lst) (ly Int) (lz Int)) + (=> (and (len (cons y x) ly) (butlast (cons y x) z) (len z lz) (not (= (+ lz 1) ly))) false))) +(check-sat) diff --git a/bench_horn_adt/LEON/amortize-queue-goal6.smt2 b/bench_horn_adt/LEON/amortize-queue-goal6.smt2 new file mode 100644 index 000000000..ec8701993 --- /dev/null +++ b/bench_horn_adt/LEON/amortize-queue-goal6.smt2 @@ -0,0 +1,51 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun len (Lst Int) Bool) +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +(declare-fun butlast (Lst Lst) Bool) +(assert (butlast nil nil)) +(assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst)) + (=> (and (= ys (cons n xs)) (= xs nil)) (butlast ys nil)))) +(assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst) (x Int) (zs Lst)) + (=> (and (butlast xs rs) (= ys (cons n xs)) (= xs (cons x zs))) (butlast ys (cons n rs))))) + +(declare-fun qreva (Lst Lst Lst) Bool) +(assert (forall ((x Lst)) (qreva nil x x))) +(assert (forall ((x Lst) (y Lst) (z Int) (u Lst)) + (=> (qreva x (cons z y) u) (qreva (cons z x) y u)))) + +(declare-fun qrev (Lst Lst) Bool) +(assert (forall ((xs Lst) (ys Lst)) + (=> (qreva xs nil ys) (qrev xs ys)))) + +;queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun qlen (Queue Int) Bool) +(assert (forall ((x Lst) (y Lst) (lx Int) (ly Int) (lq Int)) + (=> (and (len x lx) (len y ly)) (qlen (queue x y) (+ lx ly))))) + +(declare-fun amortizeQueue (Lst Lst Queue) Bool) +(assert (forall ((x Lst) (y Lst) (q Queue) (ly Int) (lx Int) (z Lst) (a Lst)) + (=> (and (len y ly) (len x lx) (qrev y z) (append x z a) + (= q (ite (<= ly lx) (queue x y) (queue a nil)))) (amortizeQueue x y q)))) + +(declare-fun enqueue (Queue Int Queue) Bool) +(assert (forall ((x Lst) (y Lst) (n Int) (q Queue)) + (=> (amortizeQueue x (cons n y) q) (enqueue (queue x y) n q)))) + +; conjecture +(assert (forall ((q Queue) (n Int) (p Queue) (lq Int) (lp Int)) + (=> (and (enqueue q n p) (qlen q lq) (qlen p lp) (not (= (+ lq 1) lp))) false))) +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/LEON/amortize-queue-goal7.smt2 b/bench_horn_adt/LEON/amortize-queue-goal7.smt2 new file mode 100644 index 000000000..1c98842da --- /dev/null +++ b/bench_horn_adt/LEON/amortize-queue-goal7.smt2 @@ -0,0 +1,62 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun len (Lst Int) Bool) +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +(declare-fun butlast (Lst Lst) Bool) +(assert (butlast nil nil)) +(assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst)) + (=> (and (= ys (cons n xs)) (= xs nil)) (butlast ys nil)))) +(assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst) (x Int) (zs Lst)) + (=> (and (butlast xs rs) (= ys (cons n xs)) (= xs (cons x zs))) (butlast ys (cons n rs))))) + +(declare-fun qreva (Lst Lst Lst) Bool) +(assert (forall ((x Lst)) (qreva nil x x))) +(assert (forall ((x Lst) (y Lst) (z Int) (u Lst)) + (=> (qreva x (cons z y) u) (qreva (cons z x) y u)))) + +(declare-fun qrev (Lst Lst) Bool) +(assert (forall ((xs Lst) (ys Lst)) + (=> (qreva xs nil ys) (qrev xs ys)))) + +;queues +(declare-datatypes () ((Queue (queue (front Lst) (back Lst))))) + +(declare-fun qlen (Queue Int) Bool) +(assert (forall ((x Lst) (y Lst) (lx Int) (ly Int) (lq Int)) + (=> (and (len x lx) (len y ly)) (qlen (queue x y) (+ lx ly))))) + +(declare-fun isAmortized (Queue Bool) Bool) +(assert (forall ((x Lst) (y Lst) (lx Int) (ly Int)) + (=> (and (len x lx) (len y ly) (<= ly lx)) (isAmortized (queue x y) true)))) + +(declare-fun isNotEmpty (Queue Bool) Bool) +(assert (forall ((x Lst) (y Lst) (z Lst) (n Int)) (=> (= x (cons n z)) (isNotEmpty (queue x y) true)))) +(assert (forall ((x Lst) (y Lst) (z Lst) (n Int)) (=> (= y (cons n z)) (isNotEmpty (queue x y) true)))) + +(declare-fun amortizeQueue (Lst Lst Queue) Bool) +(assert (forall ((x Lst) (y Lst) (q Queue) (ly Int) (lx Int) (z Lst) (a Lst)) + (=> (and (len y ly) (len x lx) (qrev y z) (append x z a) + (= q (ite (<= ly lx) (queue x y) (queue a nil)))) (amortizeQueue x y q)))) + +(declare-fun enqueue (Queue Int Queue) Bool) +(assert (forall ((x Lst) (y Lst) (n Int) (q Queue)) + (=> (amortizeQueue x (cons n y) q) (enqueue (queue x y) n q)))) + +(declare-fun qpop (Queue Queue) Bool) +(assert (forall ((x Lst) (y Lst) (n Int)) (qpop (queue x (cons n y)) (queue x y)))) +(assert (forall ((x Lst) (y Lst)) (=> (butlast x y) (qpop (queue x nil) (queue y nil))))) + +; conjecture +(assert (forall ((q Queue) (n Int) (p Queue) (lq Int) (lp Int)) + (=> (and (isAmortized q true) (isNotEmpty q true) (qpop q p) (qlen q lq) (qlen p lp) (not (= (+ lq 1) lp))) false))) diff --git a/bench_horn_adt/LEON/amortize-queue-goal8.smt2 b/bench_horn_adt/LEON/amortize-queue-goal8.smt2 new file mode 100644 index 000000000..7ea18fa3c --- /dev/null +++ b/bench_horn_adt/LEON/amortize-queue-goal8.smt2 @@ -0,0 +1,15 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +; conjecture +(assert (forall ((x Lst) (y Lst)) + (=> (and (append x nil y) (not (= x y))) false))) ; G-amortize-queue-8 + +(check-sat) diff --git a/bench_horn_adt/LEON/amortize-queue-goal9.smt2 b/bench_horn_adt/LEON/amortize-queue-goal9.smt2 new file mode 100644 index 000000000..5dc3ae121 --- /dev/null +++ b/bench_horn_adt/LEON/amortize-queue-goal9.smt2 @@ -0,0 +1,32 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun len (Lst Int) Bool) +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +(declare-fun butlast (Lst Lst) Bool) +(assert (butlast nil nil)) +(assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst)) + (=> (and (= ys (cons n xs)) (= xs nil)) (butlast ys nil)))) +(assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst) (x Int) (zs Lst)) + (=> (and (butlast xs rs) (= ys (cons n xs)) (= xs (cons x zs))) (butlast ys (cons n rs))))) + +; proven +(assert (forall ((x Lst) (n Int) (y Lst) (l Int)) + (=> (and (butlast (cons n x) y) (len (cons n x) l)) (len y (+ l 1))))) ; G-amortize-queue-5 + +; conjecture +(assert (forall ((x Lst) (y Lst) (z Lst) (r Lst) (u Lst) (v Lst) (n Int)) + (=> (and (append x (cons n y) z) (butlast (cons n y) r) (append x r u) (butlast z v) (not (= v u))) + false))) ; G-amortize-queue-9 + +(check-sat) diff --git a/bench_horn_adt/LEON/bsearch-tree-goal1.smt2 b/bench_horn_adt/LEON/bsearch-tree-goal1.smt2 new file mode 100644 index 000000000..3cab8d9f5 --- /dev/null +++ b/bench_horn_adt/LEON/bsearch-tree-goal1.smt2 @@ -0,0 +1,36 @@ +(set-logic HORN) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tsize (Tree Int) Bool) +(assert (tsize leaf 0)) +(assert (forall ((x Int) (r Tree) (l Tree) (m Tree) (sl Int) (sr Int)) + (=> (and (= m (node x l r)) (tsize l sl) (tsize r sr)) (tsize m (+ 1 (+ sl sr)))))) + +(declare-fun tinsert (Tree Int Tree) Bool) +(assert (forall ((i Int)) (tinsert leaf i (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (m Tree)) + (=> (and (tinsert r i x) (< d i) (= m (node d l x))) (tinsert (node d l r) i m)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (y Tree) (m Tree)) + (=> (and (tinsert l i y) (>= d i) (= m (node d y r))) (tinsert (node d l r) i m)))) + +(declare-fun tcontains (Tree Int Bool) Bool) +(assert (forall ((i Int)) (tcontains leaf i false))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (= d i) (tcontains (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (tcontains l i true) (tcontains (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (tcontains r i true) (tcontains (node d l r) i true)))) + +(declare-fun tsorted (Tree Bool) Bool) +(assert (tsorted leaf true)) +(assert (forall ((d Int) (l Tree) (r Tree) (x Int) (y Int)) + (=> (and (tsorted l true) (tsorted r true) (tcontains l x true) (tcontains r x true) + (<= x d) (< d x)) (tsorted (node d l r) true)))) + +(assert (forall ((t Tree) (n Int) (r Tree) (ts Int) (rs Int)) + (=> (and (tinsert t n r) (tsize r rs) (tsize t ts) (not (= rs (+ 1 ts)))) false))) + +(check-sat) diff --git a/bench_horn_adt/LEON/bsearch-tree-goal10.smt2 b/bench_horn_adt/LEON/bsearch-tree-goal10.smt2 new file mode 100644 index 000000000..18bc1cb9a --- /dev/null +++ b/bench_horn_adt/LEON/bsearch-tree-goal10.smt2 @@ -0,0 +1,34 @@ +(set-logic HORN) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Int Tree) Bool) +(assert (forall ((i Int)) (tinsert leaf i (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (m Tree)) + (=> (and (tinsert r i x) (< d i) (= m (node d l x))) (tinsert (node d l r) i m)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (y Tree) (m Tree)) + (=> (and (tinsert l i y) (>= d i) (= m (node d y r))) (tinsert (node d l r) i m)))) + +(declare-fun tmember (Tree Int Bool) Bool) +(assert (forall ((x Int)) (tmember leaf x false))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (= i d) (tmember (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (and (< d i) (tmember r i true)) (tmember (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (and (< i d) (tmember l i true)) (tmember (node d l r) i true)))) + +(assert (forall ((i Int) (x Tree) (j Int) (r Bool) (s Bool) (t Bool) (y Tree) (a Bool) (b Bool)) + (=> (and (tmember x j b) (tinsert x i y) (tmember y j true) (>= (- i j) 1) (not (= b true))) false))) + +(assert (forall ((i Int) (x Tree) (j Int) (r Bool) (s Bool) (t Bool) (y Tree) (a Bool) (b Bool)) + (=> (and (tmember x j b) (tinsert x i y) (tmember y j true) (>= (- j i) 1) (not (= b true))) false))) + +(assert (forall ((i Int) (x Tree) (j Int) (r Bool) (s Bool) (t Bool) (y Tree) (a Bool) (b Bool)) + (=> (and (tmember x j true) (tinsert x i y) (tmember y j a) (not (= a true))) false))) + +(assert (forall ((i Int) (x Tree) (j Int) (r Bool) (s Bool) (t Bool) (y Tree) (a Bool) (b Bool)) + (=> (and (tmember x i b) (tinsert x i y) (tmember y i a) (not (= a true))) false))) + +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/LEON/bsearch-tree-goal11.smt2 b/bench_horn_adt/LEON/bsearch-tree-goal11.smt2 new file mode 100644 index 000000000..1791cbe45 --- /dev/null +++ b/bench_horn_adt/LEON/bsearch-tree-goal11.smt2 @@ -0,0 +1,41 @@ +(set-logic HORN) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Int Tree) Bool) +(assert (forall ((i Int)) (tinsert leaf i (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (m Tree)) + (=> (and (tinsert r i x) (< d i) (= m (node d l x))) (tinsert (node d l r) i m)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (y Tree) (m Tree)) + (=> (and (tinsert l i y) (>= d i) (= m (node d y r))) (tinsert (node d l r) i m)))) + +(declare-fun tcontains (Tree Int Bool) Bool) +(assert (forall ((i Int)) (tcontains leaf i false))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (= d i) (tcontains (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (tcontains l i true) (tcontains (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (tcontains r i true) (tcontains (node d l r) i true)))) + +(declare-fun tsorted (Tree Bool) Bool) +(assert (tsorted leaf true)) +(assert (forall ((d Int) (l Tree) (r Tree) (x Int) (y Int)) + (=> (and (tsorted l true) (tsorted r true) (tcontains l x true) (tcontains r x true) + (<= x d) (< d x)) (tsorted (node d l r) true)))) + +(declare-fun tmember (Tree Int Bool) Bool) +(assert (forall ((x Int)) (tmember leaf x false))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (= i d) (tmember (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (and (< d i) (tmember r i true)) (tmember (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (and (< i d) (tmember l i true)) (tmember (node d l r) i true)))) + +; conjecture +(assert (forall ((i Int) (x Tree) (r Bool) (s Bool)) + (=> (and (tsorted x true) (tcontains x i r) (tmember x i s) (not (= r s))) false))) ; G-bsearch-tree-11 + +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/LEON/bsearch-tree-goal12.smt2 b/bench_horn_adt/LEON/bsearch-tree-goal12.smt2 new file mode 100644 index 000000000..07906c047 --- /dev/null +++ b/bench_horn_adt/LEON/bsearch-tree-goal12.smt2 @@ -0,0 +1,28 @@ +(set-logic HORN) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tcontains (Tree Int Bool) Bool) +(assert (forall ((i Int)) (tcontains leaf i false))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (= d i) (tcontains (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (tcontains l i true) (tcontains (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (tcontains r i true) (tcontains (node d l r) i true)))) + +(declare-fun tmember (Tree Int Bool) Bool) +(assert (forall ((x Int)) (tmember leaf x false))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (= i d) (tmember (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (and (< d i) (tmember r i true)) (tmember (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (and (< i d) (tmember l i true)) (tmember (node d l r) i true)))) + +; conjecture +(assert (forall ((i Int) (x Tree) (r Bool)) + (=> (and (tmember x i true) (tcontains x i r) (not (= r true))) false))); G-bsearch-tree-12 + +(check-sat) diff --git a/bench_horn_adt/LEON/bsearch-tree-goal13.smt2 b/bench_horn_adt/LEON/bsearch-tree-goal13.smt2 new file mode 100644 index 000000000..9840f90d4 --- /dev/null +++ b/bench_horn_adt/LEON/bsearch-tree-goal13.smt2 @@ -0,0 +1,36 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun len (Lst Int) Bool) +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Int Tree) Bool) +(assert (forall ((i Int)) (tinsert leaf i (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (m Tree)) + (=> (and (tinsert r i x) (< d i) (= m (node d l x))) (tinsert (node d l r) i m)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (y Tree) (m Tree)) + (=> (and (tinsert l i y) (>= d i) (= m (node d y r))) (tinsert (node d l r) i m)))) + +(declare-fun tinsert-all (Tree Lst Tree) Bool) +(assert (forall ((x Tree)) (tinsert-all x nil x))) +(assert (forall ((x Tree) (n Int) (ls Lst) (xs Lst) (z Tree) (y Tree)) + (=> (and (tinsert-all x ls y) (= xs (cons n ls)) (tinsert y n z)) (tinsert-all x xs z)))) + +; conjecture +(assert (forall ((l Lst) (x Tree) (n Int) (z Tree) (k Lst) (u Tree) (y Tree)) + (=> (and (tinsert x n y) (tinsert-all y l z) (append l (cons n nil) k) (tinsert-all x k u) + (not (= z u))) false))) + +(check-sat) diff --git a/bench_horn_adt/LEON/bsearch-tree-goal14.smt2 b/bench_horn_adt/LEON/bsearch-tree-goal14.smt2 new file mode 100644 index 000000000..02db0ee64 --- /dev/null +++ b/bench_horn_adt/LEON/bsearch-tree-goal14.smt2 @@ -0,0 +1,50 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun len (Lst Int) Bool) +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Int Tree) Bool) +(assert (forall ((i Int)) (tinsert leaf i (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (m Tree)) + (=> (and (tinsert r i x) (< d i) (= m (node d l x))) (tinsert (node d l r) i m)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (y Tree) (m Tree)) + (=> (and (tinsert l i y) (>= d i) (= m (node d y r))) (tinsert (node d l r) i m)))) + +(declare-fun tinsert-all (Tree Lst Tree) Bool) +(assert (forall ((x Tree)) (tinsert-all x nil x))) +(assert (forall ((x Tree) (n Int) (ls Lst) (xs Lst) (z Tree) (y Tree)) + (=> (and (tinsert-all x ls y) (= xs (cons n ls)) (tinsert y n z)) (tinsert-all x xs z)))) + +(declare-fun tcontains (Tree Int Bool) Bool) +(assert (forall ((i Int)) (tcontains leaf i false))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (= d i) (tcontains (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (tcontains l i true) (tcontains (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (tcontains r i true) (tcontains (node d l r) i true)))) + +(declare-fun tsorted (Tree Bool) Bool) +(assert (tsorted leaf true)) +(assert (forall ((d Int) (l Tree) (r Tree) (x Int) (y Int)) + (=> (and (tsorted l true) (tsorted r true) (tcontains l x true) (tcontains r x true) + (<= x d) (< d x)) (tsorted (node d l r) true)))) + +; conjecture +(assert (forall ((x Lst) (y Tree)) + (=> (and (tinsert-all leaf x y) (not (tsorted y true))) false))) ; G-bsearch-tree-14 + +(check-sat) diff --git a/bench_horn_adt/LEON/bsearch-tree-goal2.smt2 b/bench_horn_adt/LEON/bsearch-tree-goal2.smt2 new file mode 100644 index 000000000..3940b80b3 --- /dev/null +++ b/bench_horn_adt/LEON/bsearch-tree-goal2.smt2 @@ -0,0 +1,32 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tsize (Tree Int) Bool) +(assert (tsize leaf 0)) +(assert (forall ((x Int) (r Tree) (l Tree) (m Tree) (sl Int) (sr Int)) + (=> (and (= m (node x l r)) (tsize l sl) (tsize r sr)) (tsize m (+ 1 (+ sl sr)))))) + +(declare-fun tinsert (Tree Int Tree) Bool) +(assert (forall ((i Int)) (tinsert leaf i (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (m Tree)) + (=> (and (tinsert r i x) (< d i) (= m (node d l x))) (tinsert (node d l r) i m)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (y Tree) (m Tree)) + (=> (and (tinsert l i y) (>= d i) (= m (node d y r))) (tinsert (node d l r) i m)))) + + +(declare-fun tinsert-all (Tree Lst Tree) Bool) +(assert (forall ((x Tree)) (tinsert-all x nil x))) +(assert (forall ((x Tree) (n Int) (ls Lst) (xs Lst) (z Tree) (y Tree)) + (=> (and (tinsert-all x ls y) (= xs (cons n ls)) (tinsert y n z)) (tinsert-all x xs z)))) + +; conjecture +(assert (forall ((l Lst) (t Tree) (ts Int) (r Tree) (rs Int)) + (=> (and (tsize t ts) (tinsert-all t l r) (tsize r rs) (not (<= ts rs))) false))) ; G-bsearch-tree-2 + +(check-sat) diff --git a/bench_horn_adt/LEON/bsearch-tree-goal3.smt2 b/bench_horn_adt/LEON/bsearch-tree-goal3.smt2 new file mode 100644 index 000000000..09c0e52fb --- /dev/null +++ b/bench_horn_adt/LEON/bsearch-tree-goal3.smt2 @@ -0,0 +1,36 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun len (Lst Int) Bool) +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tsize (Tree Int) Bool) +(assert (tsize leaf 0)) +(assert (forall ((x Int) (r Tree) (l Tree) (m Tree) (sl Int) (sr Int)) + (=> (and (= m (node x l r)) (tsize l sl) (tsize r sr)) (tsize m (+ 1 (+ sl sr)))))) + +(declare-fun tinsert (Tree Int Tree) Bool) +(assert (forall ((i Int)) (tinsert leaf i (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (m Tree)) + (=> (and (tinsert r i x) (< d i) (= m (node d l x))) (tinsert (node d l r) i m)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (y Tree) (m Tree)) + (=> (and (tinsert l i y) (>= d i) (= m (node d y r))) (tinsert (node d l r) i m)))) + + +(declare-fun tinsert-all (Tree Lst Tree) Bool) +(assert (forall ((x Tree)) (tinsert-all x nil x))) +(assert (forall ((x Tree) (n Int) (ls Lst) (xs Lst) (z Tree) (y Tree)) + (=> (and (tinsert-all x ls y) (= xs (cons n ls)) (tinsert y n z)) (tinsert-all x xs z)))) + +; conjecture +(assert (forall ((ls Lst) (t Tree) (r Tree) (rs Int) (ts Int) (l Int)) + (=> (and (tinsert-all t ls r) (tsize r rs) (tsize t ts) (len ls l) (not (= rs (+ ts l)))) false))); G-bsearch-tree-3 + +(check-sat) diff --git a/bench_horn_adt/LEON/bsearch-tree-goal4.smt2 b/bench_horn_adt/LEON/bsearch-tree-goal4.smt2 new file mode 100644 index 000000000..c1d232688 --- /dev/null +++ b/bench_horn_adt/LEON/bsearch-tree-goal4.smt2 @@ -0,0 +1,45 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun len (Lst Int) Bool) +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tsize (Tree Int) Bool) +(assert (tsize leaf 0)) +(assert (forall ((x Int) (r Tree) (l Tree) (m Tree) (sl Int) (sr Int)) + (=> (and (= m (node x l r)) (tsize l sl) (tsize r sr)) (tsize m (+ 1 (+ sl sr)))))) + +(declare-fun tinsert (Tree Int Tree) Bool) +(assert (forall ((i Int)) (tinsert leaf i (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (m Tree)) + (=> (and (tinsert r i x) (< d i) (= m (node d l x))) (tinsert (node d l r) i m)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (y Tree) (m Tree)) + (=> (and (tinsert l i y) (>= d i) (= m (node d y r))) (tinsert (node d l r) i m)))) + +(declare-fun tinsert-all (Tree Lst Tree) Bool) +(assert (forall ((x Tree)) (tinsert-all x nil x))) +(assert (forall ((x Tree) (n Int) (ls Lst) (xs Lst) (z Tree) (y Tree)) + (=> (and (tinsert-all x ls y) (= xs (cons n ls)) (tinsert y n z)) (tinsert-all x xs z)))) + +(declare-fun tremove (Tree Int Tree) Bool) +(assert (forall ((i Int)) (tremove leaf i leaf))) +(assert (forall ((i Int) (d Int) (l Tree) (r Tree) (m Tree)) + (=> (and (< i d) (tremove l i m)) (tremove (node d l r) i (node d m r))))) +(assert (forall ((i Int) (d Int) (l Tree) (r Tree) (m Tree)) + (=> (and (< d i) (tremove r i m)) (tremove (node d l r) i (node d l m))))) +(assert (forall ((d Int) (r Tree)) (tremove (node d leaf r) d r))) +(assert (forall ((d Int) (ld Int) (ll Tree) (lr Tree) (r Tree) (m Tree)) + (=> (tremove (node ld ll lr) ld m) (tremove (node d (node ld ll lr) r) d (node ld m r))))) + +; conjecture +(assert (forall ((t Tree) (n Int) (r Tree) (rs Int) (ts Int)) + (=> (and (tremove t n r) (tsize t ts) (tsize r rs) (not (<= rs ts))) false))) ; G-bsearch-tree-4 + +(check-sat) diff --git a/bench_horn_adt/LEON/bsearch-tree-goal5.smt2 b/bench_horn_adt/LEON/bsearch-tree-goal5.smt2 new file mode 100644 index 000000000..2ed797e5d --- /dev/null +++ b/bench_horn_adt/LEON/bsearch-tree-goal5.smt2 @@ -0,0 +1,50 @@ +(set-logic HORN) + +; lists +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun len (Lst Int) Bool) +(assert (len nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (len ys l)) (len xs (+ l 1))))) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tsize (Tree Int) Bool) +(assert (tsize leaf 0)) +(assert (forall ((x Int) (r Tree) (l Tree) (m Tree) (sl Int) (sr Int)) + (=> (and (= m (node x l r)) (tsize l sl) (tsize r sr)) (tsize m (+ 1 (+ sl sr)))))) + +(declare-fun tinsert (Tree Int Tree) Bool) +(assert (forall ((i Int)) (tinsert leaf i (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (m Tree)) + (=> (and (tinsert r i x) (< d i) (= m (node d l x))) (tinsert (node d l r) i m)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (y Tree) (m Tree)) + (=> (and (tinsert l i y) (>= d i) (= m (node d y r))) (tinsert (node d l r) i m)))) + +(declare-fun tinsert-all (Tree Lst Tree) Bool) +(assert (forall ((x Tree)) (tinsert-all x nil x))) +(assert (forall ((x Tree) (n Int) (ls Lst) (xs Lst) (z Tree) (y Tree)) + (=> (and (tinsert-all x ls y) (= xs (cons n ls)) (tinsert y n z)) (tinsert-all x xs z)))) + +(declare-fun tremove (Tree Int Tree) Bool) +(assert (forall ((i Int)) (tremove leaf i leaf))) +(assert (forall ((i Int) (d Int) (l Tree) (r Tree) (m Tree)) + (=> (and (< i d) (tremove l i m)) (tremove (node d l r) i (node d m r))))) +(assert (forall ((i Int) (d Int) (l Tree) (r Tree) (m Tree)) + (=> (and (< d i) (tremove r i m)) (tremove (node d l r) i (node d l m))))) +(assert (forall ((d Int) (r Tree)) (tremove (node d leaf r) d r))) +(assert (forall ((d Int) (ld Int) (ll Tree) (lr Tree) (r Tree) (m Tree)) + (=> (tremove (node ld ll lr) ld m) (tremove (node d (node ld ll lr) r) d (node ld m r))))) + +(declare-fun tremove-all (Tree Lst Tree) Bool) +(assert (forall ((x Tree)) (tremove-all x nil x))) +(assert (forall ((x Tree) (n Int) (l Lst) (y Tree) (z Tree)) + (=> (and (tremove x n y) (tremove-all y l z)) (tremove-all x (cons n l) z)))) + +; conjecture +(assert (forall ((l Lst) (t Tree) (r Tree) (ts Int) (rs Int)) + (=> (and (tremove-all t l r) (tsize t ts) (tsize r rs) (not (<= rs ts))) false))); G-bsearch-tree-5 + +(check-sat) diff --git a/bench_horn_adt/LEON/bsearch-tree-goal6.smt2 b/bench_horn_adt/LEON/bsearch-tree-goal6.smt2 new file mode 100644 index 000000000..dbb535c13 --- /dev/null +++ b/bench_horn_adt/LEON/bsearch-tree-goal6.smt2 @@ -0,0 +1,26 @@ +(set-logic HORN) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Int Tree) Bool) +(assert (forall ((i Int)) (tinsert leaf i (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (m Tree)) + (=> (and (tinsert r i x) (< d i) (= m (node d l x))) (tinsert (node d l r) i m)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (y Tree) (m Tree)) + (=> (and (tinsert l i y) (>= d i) (= m (node d y r))) (tinsert (node d l r) i m)))) + +(declare-fun tcontains (Tree Int Bool) Bool) +(assert (forall ((i Int)) (tcontains leaf i false))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (= d i) (tcontains (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (tcontains l i true) (tcontains (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (tcontains r i true) (tcontains (node d l r) i true)))) + +; conjecture +(assert (forall ((x Tree) (i Int) (y Tree) (r Bool)) + (=> (and (tinsert x i y) (tcontains y i r) (not r)) false))); G-bsearch-tree-6 + +(check-sat) diff --git a/bench_horn_adt/LEON/bsearch-tree-goal8.smt2 b/bench_horn_adt/LEON/bsearch-tree-goal8.smt2 new file mode 100644 index 000000000..020a6c4a5 --- /dev/null +++ b/bench_horn_adt/LEON/bsearch-tree-goal8.smt2 @@ -0,0 +1,31 @@ +(set-logic HORN) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Int Tree) Bool) +(assert (forall ((i Int)) (tinsert leaf i (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (m Tree)) + (=> (and (tinsert r i x) (< d i) (= m (node d l x))) (tinsert (node d l r) i m)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (y Tree) (m Tree)) + (=> (and (tinsert l i y) (>= d i) (= m (node d y r))) (tinsert (node d l r) i m)))) + +(declare-fun tcontains (Tree Int Bool) Bool) +(assert (forall ((i Int)) (tcontains leaf i false))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (= d i) (tcontains (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (tcontains l i true) (tcontains (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (tcontains r i true) (tcontains (node d l r) i true)))) + +(declare-fun tsorted (Tree Bool) Bool) +(assert (tsorted leaf true)) +(assert (forall ((d Int) (l Tree) (r Tree) (x Int) (y Int)) + (=> (and (tsorted l true) (tsorted r true) (tcontains l x true) (tcontains r x true) + (<= x d) (< d x)) (tsorted (node d l r) true)))) + +(assert (forall ((x Tree) (i Int) (y Tree)) + (=> (and (tsorted x true) (tinsert x i y) (not (tsorted y true))) false))); G-bsearch-tree-8 + +(check-sat) diff --git a/bench_horn_adt/LEON/bsearch-tree-goal9.smt2 b/bench_horn_adt/LEON/bsearch-tree-goal9.smt2 new file mode 100644 index 000000000..f17fe8b9d --- /dev/null +++ b/bench_horn_adt/LEON/bsearch-tree-goal9.smt2 @@ -0,0 +1,26 @@ +(set-logic HORN) + +; (binary search) tree +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Int Tree) Bool) +(assert (forall ((i Int)) (tinsert leaf i (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (m Tree)) + (=> (and (tinsert r i x) (< d i) (= m (node d l x))) (tinsert (node d l r) i m)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (y Tree) (m Tree)) + (=> (and (tinsert l i y) (>= d i) (= m (node d y r))) (tinsert (node d l r) i m)))) + +(declare-fun tmember (Tree Int Bool) Bool) +(assert (forall ((x Int)) (tmember leaf x false))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (= i d) (tmember (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (and (< d i) (tmember r i true)) (tmember (node d l r) i true)))) +(assert (forall ((d Int) (l Tree) (r Tree) (i Int)) + (=> (and (< i d) (tmember l i true)) (tmember (node d l r) i true)))) + +; conjecture +(assert (forall ((x Tree) (i Int) (y Tree) (r Bool)) + (=> (and (tinsert x i y) (tmember y i r) (not r)) false))); G-bsearch-tree-9 + +(check-sat) diff --git a/bench_horn_adt/arr_map.smt2 b/bench_horn_adt/arrays/arr_map.smt2 similarity index 100% rename from bench_horn_adt/arr_map.smt2 rename to bench_horn_adt/arrays/arr_map.smt2 diff --git a/bench_horn_adt/arr_map_dup.smt2 b/bench_horn_adt/arrays/arr_map_dup.smt2 similarity index 100% rename from bench_horn_adt/arr_map_dup.smt2 rename to bench_horn_adt/arrays/arr_map_dup.smt2 diff --git a/bench_horn_adt/arr_multiset.smt2 b/bench_horn_adt/arrays/arr_multiset.smt2 similarity index 100% rename from bench_horn_adt/arr_multiset.smt2 rename to bench_horn_adt/arrays/arr_multiset.smt2 diff --git a/bench_horn_adt/arr_multiset_clear.smt2 b/bench_horn_adt/arrays/arr_multiset_clear.smt2 similarity index 100% rename from bench_horn_adt/arr_multiset_clear.smt2 rename to bench_horn_adt/arrays/arr_multiset_clear.smt2 diff --git a/bench_horn_adt/arr_queue.smt2 b/bench_horn_adt/arrays/arr_queue.smt2 similarity index 100% rename from bench_horn_adt/arr_queue.smt2 rename to bench_horn_adt/arrays/arr_queue.smt2 diff --git a/bench_horn_adt/arr_queue_even.smt2 b/bench_horn_adt/arrays/arr_queue_even.smt2 similarity index 100% rename from bench_horn_adt/arr_queue_even.smt2 rename to bench_horn_adt/arrays/arr_queue_even.smt2 diff --git a/bench_horn_adt/arr_set_remove.smt2 b/bench_horn_adt/arrays/arr_set_remove.smt2 similarity index 100% rename from bench_horn_adt/arr_set_remove.smt2 rename to bench_horn_adt/arrays/arr_set_remove.smt2 diff --git a/bench_horn_adt/arr_set_removeall.smt2 b/bench_horn_adt/arrays/arr_set_removeall.smt2 similarity index 100% rename from bench_horn_adt/arr_set_removeall.smt2 rename to bench_horn_adt/arrays/arr_set_removeall.smt2 diff --git a/bench_horn_adt/arr_stack.smt2 b/bench_horn_adt/arrays/arr_stack.smt2 similarity index 100% rename from bench_horn_adt/arr_stack.smt2 rename to bench_horn_adt/arrays/arr_stack.smt2 diff --git a/bench_horn_adt/arr_stack_even.smt2 b/bench_horn_adt/arrays/arr_stack_even.smt2 similarity index 100% rename from bench_horn_adt/arr_stack_even.smt2 rename to bench_horn_adt/arrays/arr_stack_even.smt2 diff --git a/bench_horn_adt/list_remove.smt2 b/bench_horn_adt/list_remove.smt2 new file mode 100644 index 000000000..e610aa552 --- /dev/null +++ b/bench_horn_adt/list_remove.smt2 @@ -0,0 +1,26 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-fun length (Lst Int) Bool) + +(assert (length nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (length ys l)) (length xs (+ l 1))))) + +(declare-fun remove (Lst Int Lst) Bool) + +(assert (forall ((x Int)) (remove nil x nil))) +(assert (forall ((x Int) (xs Lst) (ys Lst)) + (=> (= xs (cons x ys)) (remove xs x ys)))) +(assert (forall ((x Int) (xs Lst) (n Int) (ys Lst) (zs Lst)) + (=> (and (= xs (cons x ys)) (remove ys n zs)) (remove xs n zs)))) + +(declare-fun contains (Lst Int Bool) Bool) +(assert (forall ((x Int)) (contains nil x false))) +(assert (forall ((x Int) (xs Lst)) (contains (cons x xs) x true))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (n Int) (r Bool)) + (=> (and (= xs (cons x ys)) (contains ys n r)) (contains xs n r)))) + +(assert (forall ((n Int) (xs Lst) (ys Lst) (l1 Int) (l2 Int)) + (=> (and (contains xs n true) (remove xs n ys) (length xs l1) (length ys l2) + (not (= l1 l2))) false))) +(check-sat) diff --git a/bench_horn_adt/remove_not_contained.smt2 b/bench_horn_adt/remove_not_contained.smt2 new file mode 100644 index 000000000..146f2602d --- /dev/null +++ b/bench_horn_adt/remove_not_contained.smt2 @@ -0,0 +1,25 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-fun length (Lst Int) Bool) + +(assert (length nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (length ys l)) (length xs (+ l 1))))) + +(declare-fun remove (Lst Int Lst) Bool) + +(assert (forall ((x Int)) (remove nil x nil))) +(assert (forall ((x Int) (xs Lst) (ys Lst)) + (=> (= xs (cons x ys)) (remove xs x ys)))) +(assert (forall ((x Int) (xs Lst) (n Int) (ys Lst) (zs Lst)) + (=> (and (= xs (cons x ys)) (remove ys n zs)) (remove xs n zs)))) + +(declare-fun contains (Lst Int Bool) Bool) +(assert (forall ((x Int)) (contains nil x false))) +(assert (forall ((x Int) (xs Lst)) (contains (cons x xs) x true))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (n Int) (r Bool)) + (=> (and (= xs (cons x ys)) (contains ys n r)) (contains xs n r)))) + +(assert (forall ((n Int) (xs Lst) (ys Lst)) + (=> (and (contains xs n false) (remove xs n ys) (not (= xs ys))) false))) +(check-sat) diff --git a/include/adt/ADTSolver.hpp b/include/adt/ADTSolver.hpp index 06fc76ed2..4d8c93808 100644 --- a/include/adt/ADTSolver.hpp +++ b/include/adt/ADTSolver.hpp @@ -828,7 +828,7 @@ namespace ufo if (verbose) outs() << string(sp, ' ') << "{\n"; sp += 2; - tmpres = rewriteAssumptions(s); // recursive call + tmpres= rewriteAssumptions(s); // recursive call sp -= 2; if (verbose) outs() << string(sp, ' ') << "}\n"; @@ -1483,6 +1483,7 @@ namespace ufo insertSymmetricAssumption(a); } + // prove the inductive step Expr indConsApp = bind::fapp(indConstructor, args); Expr indSubgoal = replaceAll(goalQF, bind::fapp(typeDecl), indConsApp); diff --git a/include/adt/CHCSolver.hpp b/include/adt/CHCSolver.hpp index e73291820..89eb47d86 100644 --- a/include/adt/CHCSolver.hpp +++ b/include/adt/CHCSolver.hpp @@ -15,16 +15,20 @@ namespace ufo ExprFactory &efac; ExprSet &adts; - std::map values_inds; + std::map values_inds; ExprVector &constructors; ExprVector &assumptions; ExprSet &decls; + ExprVector ordered_decls; vector &chcs; + int number_decls; + bool givePriority = false; + bool ignoreBaseVar = false; public: - CHCSolver(ExprVector& _constructors, ExprSet& _adts, ExprFactory &_efac, ExprSet &_decls, ExprVector &_assms, vector &_chcs) : - constructors(_constructors), adts(_adts), efac(_efac), decls(_decls), assumptions(_assms), chcs(_chcs) {} + CHCSolver(ExprVector& _constructors, ExprSet& _adts, ExprFactory &_efac, ExprSet &_decls, ExprVector &_assms, vector &_chcs, bool _nonadtPriority = false, bool _ignoreBase = false) : + constructors(_constructors), adts(_adts), efac(_efac), decls(_decls), assumptions(_assms), chcs(_chcs), givePriority(_nonadtPriority), ignoreBaseVar(_ignoreBase) {} Expr createNewApp(HornRuleExt chc, int i, int ind) { ExprVector types; @@ -45,7 +49,7 @@ namespace ufo void createLeftConjs(HornRuleExt chc, ExprVector & cnj) { for (int i = 0; i < chc.srcRelations.size(); i++) { if (decls.find(chc.srcRelations[i]) != decls.end()) { - size_t ind = values_inds[chc.srcRelations[i]->left()]; + int ind = values_inds[chc.srcRelations[i]->left()]; Expr app = createNewApp(chc, i, ind); Expr def = mk(app, chc.srcVars[i][ind]); cnj.push_back(def); @@ -68,7 +72,6 @@ namespace ufo matching[body_elem->right()] = body_elem->left(); return true; } - else { for (auto & v : chc.dstVars) { Expr ineq = ineqSimplifier(v, body_elem); if (ineq->left() == v) { @@ -76,13 +79,20 @@ namespace ufo return true; } } - } + if ((body_elem->left()->arity() == 1) && !(isConsctructor(bind::fname(body_elem->left())))) { + matching[body_elem->left()] = body_elem->right(); + return true; + } + else if ((body_elem->right()->arity() == 1) && !(isConsctructor(bind::fname(body_elem->right())))) { + matching[body_elem->right()] = body_elem->left(); + return true; + } return false; } // find possible substitutions from body (add to cnj otherwise) void findMatchingFromBody(HornRuleExt chc, ExprMap &matching, ExprVector &cnj) { - if (chc.body->arity() > 1) { + if (chc.body->arity() > 1 && !findMatchingFromBodyElement(chc, chc.body, matching)) { for(int j = 0; j < chc.body->arity(); ++j) { Expr body_elem = chc.body->arg(j); if (!isOpX(body_elem) || !findMatchingFromBodyElement(chc, body_elem, matching)) { @@ -124,7 +134,7 @@ namespace ufo } Expr createDestination(HornRuleExt chc) { - size_t ind = values_inds[chc.dstRelation->left()]; + int ind = values_inds[chc.dstRelation->left()]; ExprVector types; ExprVector newVars; for(int j = 0; j < chc.dstRelation->arity() - 2; ++j) { @@ -140,53 +150,7 @@ namespace ufo return destination; } - bool solve() { - // find the return value for uninterpreted symbols (keep it in values_inds map) - for (auto & decl: decls) { - for (auto & chc : chcs) { - if (chc.dstRelation == decl && !chc.isFact) { - std::vector adt_inds; - size_t vars_size = chc.dstRelation->arity(); - bool found = false; - for (size_t i = vars_size - 2; i > 0; --i) { - bool is_adt = false; - for (auto & adt : adts) { - if ((*chc.dstRelation)[i] == adt) { - is_adt = true; - adt_inds.push_back(i - 1); - break; - } - } - if (!is_adt) { - values_inds[chc.dstRelation->left()] = i - 1; - found = true; - break; - } - } - if (!found) { - for (int i = 0; i < chc.srcRelations.size(); i++) { - if (chc.srcRelations[i] == decl) { - for (int j = 0; j < adt_inds.size(); ++j) { - size_t ind = adt_inds[j]; - Expr eq1 = mk(chc.srcVars[0][ind], chc.dstVars[ind]); - Expr eq2 = mk(chc.dstVars[ind], chc.srcVars[0][ind]); - if (!contains(chc.body, eq1) && !contains(chc.body, eq2)) { - values_inds[chc.dstRelation->left()] = ind; - break; - found = true; - } - } - break; - } - } - } - if (!found) { - values_inds[chc.dstRelation->left()] = vars_size - 3; - } - } - } - } - + bool createQueries() { // creating assumptions for (auto & chc : chcs) { if (!chc.isQuery) { @@ -195,7 +159,7 @@ namespace ufo createLeftConjs(chc, cnj); findMatchingFromBody(chc, matching, cnj); Expr destination = bind::fapp (chc.dstRelation, chc.dstVars); - size_t ind; + int ind; if (decls.find(chc.dstRelation) != decls.end()) { destination = createDestination(chc); } @@ -206,12 +170,15 @@ namespace ufo matching.clear(); Expr left = asmpt->left(); findMatchingFromLeftSide(left, matching); + + // outs() << *asmpt << "\n"; asmpt = replaceAll(asmpt, matching); asmpt = simplifyArithm(asmpt); asmpt = simplifyBool(asmpt); if (asmpt->arity() > 0) { asmpt = createQuantifiedFormula(asmpt, constructors); } + // outs() << "new assumption: " << *asmpt << "\n"; assumptions.push_back(asmpt); } } @@ -228,19 +195,36 @@ namespace ufo destination = mkNeg(chc.body->arg(j)); } else { - cnj.push_back(chc.body->arg(j)); + cnj.push_back(chc.body->arg(j)); } } } else { destination = mkNeg(chc.body); } + if (decls.find(destination->left()) != decls.end()) { + int ind = values_inds[destination->left()->left()]; + ExprVector types; + ExprVector newVars; + for(int j = 1; j < destination->arity(); ++j) { + if (j - 1 != ind) { + types.push_back(bind::typeOf(destination->arg(j))); + newVars.push_back(destination->arg(j)); + } + } + types.push_back(bind::typeOf(destination->arg(ind + 1))); + Expr rel = bind::fdecl (efac.mkTerm(destination->left()->left()->op()), types); + Expr baseApp = bind::fapp (rel, newVars); + // outs() << "DESTINATION " << *destination <<" " << destination->arity() << ind<< "\n"; + destination = mk(baseApp, destination->arg(ind + 1)); + // outs() << *destination << "\n"; + } + for (int i = 0; i < chc.srcRelations.size(); i++) { if (decls.find(chc.srcRelations[i]) != decls.end()) { - size_t ind = values_inds[chc.srcRelations[i]->left()]; + int ind = values_inds[chc.srcRelations[i]->left()]; Expr app = createNewApp(chc, i, ind); matching[chc.srcVars[i][ind]] = app; - outs() << "match " << *chc.srcVars[i][ind] << " " << *app <<"\n"; } else { Expr tmp = bind::fapp (chc.srcRelations[i], chc.srcVars[i]); @@ -252,13 +236,43 @@ namespace ufo matching.clear(); Expr left = goal->left(); - findMatchingFromLeftSide(left, matching); + // outs() << "GOAL: \n"; + // outs() << *goal << "\n"; + // findMatchingFromLeftSide(left, matching); + // goal = replaceAll(goal, matching); + // goal = simplifyBool(goal); + // matching.clear(); + + // outs() << "GOAL: \n"; + // outs() << *goal << "\n"; + // findMatchingFromLeftSide(goal->left(), matching); + // goal = replaceAll(goal, matching); + // goal = simplifyBool(goal); + // matching.clear(); + + // outs() << "GOAL: \n"; + // outs() << *goal << "\n"; + findMatchingFromLeftSide(goal->left(), matching); goal = replaceAll(goal, matching); // goal = simplifyArithm(goal); goal = simplifyBool(goal); + // if (goal->arity() > 0) { + // goal = createQuantifiedFormula(goal, constructors); + // } ExprVector current_assumptions = assumptions; - if (!prove (current_assumptions, goal)) + // outs() << "assumptions:\n"; + // for (auto & a : current_assumptions) { + // outs() << *a << "\n"; + // } + // outs() << "goal: \n"; + // outs() << *goal << "\n"; + if (!prove (current_assumptions, goal)) { + // outs() << "CANT PROVE" << *goal << "\n"; return false; + } + else { + assumptions.push_back(goal); + } } else { ExprVector cnj; @@ -275,13 +289,195 @@ namespace ufo goal = simplifyArithm(goal); goal = simplifyBool(goal); ExprVector current_assumptions = assumptions; - if (!prove (current_assumptions, goal)) + // outs() << "assumptions:\n"; + // for (auto & a : current_assumptions) { + // outs() << *a << "\n"; + // } + // outs() << "goal: \n"; + // outs() << *goal << "\n"; + if (!prove (current_assumptions, goal)) { + // outs() << "CANT PROVE\n"; return false; + } } } return true; } + int baseVar(Expr &decl) { + for (auto & chc : chcs) { + if (chc.dstRelation == decl) { + for (int i = 0; i < chc.dstVars.size(); ++i) { + if (adts.find(bind::typeOf(chc.dstVars[i])) != adts.end()) { + for(int j = 0; j < chc.body->arity(); ++j) { + Expr body_elem = chc.body->arg(j); + if (isOpX(body_elem)) { + if (body_elem->left() == chc.dstVars[i] && body_elem->right()->arity() == 1 || + body_elem->right() == chc.dstVars[i] && body_elem->left()->arity() == 1) { + return i; + } + } + } + } + } + } + } + return -1; + } + + void orderDecls(Expr decl, ExprSet &cur_decls) { + if (std::find(ordered_decls.begin(), ordered_decls.end(), decl) != ordered_decls.end()) + return; + cur_decls.insert(decl); + for (auto & chc : chcs) { + if (chc.dstRelation == decl && !chc.isFact) { + for (int i = 0; i < chc.srcRelations.size(); i++) { + if (chc.srcRelations[i] != decl && std::find(ordered_decls.begin(), ordered_decls.end(), chc.srcRelations[i]) == ordered_decls.end()) { + if (cur_decls.find(chc.srcRelations[i]) != cur_decls.end()) { + ordered_decls.push_back(chc.srcRelations[i]); + } + else { + orderDecls(chc.srcRelations[i], cur_decls); + } + } + } + } + } + ordered_decls.push_back(decl); + + } + + // Get indexes in right order and remove the base index + void excludeBaseVar(Expr& decl, std::vector &idxs) { + int bv = baseVar(decl); + idxs.erase(idxs.begin() + bv); + } + + void givePriorityNonAdt(Expr& decl, std::vector &idxs) { + std::vector new_idxs; + bool nonadtExists = false; + for (auto & chc : chcs) { + if (chc.dstRelation == decl) { + for (int i = 0; i < idxs.size(); ++i) { + bool is_adt = false; + for (auto & adt : adts) { + if ((*chc.dstRelation)[idxs[i]] == adt) { + is_adt = true; + break; + } + } + if (!is_adt) { + nonadtExists = true; + new_idxs.push_back(idxs[i]); + } + } + if (nonadtExists) { + for (int i = 0; i < idxs.size(); ++i) { + for (auto & adt : adts) { + if ((*chc.dstRelation)[idxs[i]] == adt) { + new_idxs.push_back(idxs[i]); + break; + } + } + } + idxs = new_idxs; + } + break; + } + } + } + + bool returnValues(int idx, ExprVector &decls, std::map &buf) { + if (idx >= decls.size()) { + values_inds = buf; + assumptions.clear(); + return createQueries(); + } + Expr cur = decls[idx]; + for (auto & chc : chcs) { + if (chc.dstRelation == cur) { + size_t vars_size = chc.dstRelation->arity(); + std::vector idxs; + for (int i = 0; i < vars_size - 2; ++i) { + idxs.push_back(i); + } + // add functions for filter variables here + if (ignoreBaseVar) excludeBaseVar(cur, idxs); + if (givePriority) givePriorityNonAdt(cur, idxs); + // outs() << *chc.dstRelation->left() << " " << idxs.size() << "\n"; + for (int i = idxs.size() - 1; i >= 0; --i) { + buf[chc.dstRelation->left()] = idxs[i]; + // outs() << *chc.dstRelation->left() << " " << idxs[i] << "\n"; + if (returnValues(idx + 1, decls, buf)) + return true; + } + break; + } + } + return false; + } + + bool solve() { + // find the return value for uninterpreted symbols (keep it in values_inds map) + int index = 0; + for (auto & decl: decls) { + // outs() << *decl << "\n"; + ExprSet cur_decls; + orderDecls(decl, cur_decls); + } + std::map buf; + return returnValues(0, ordered_decls, buf); + // for (auto & decl: decls) { + // if (decl->arity() <= 3) { + // continue; + // } + // for (auto & chc : chcs) { + // if (chc.dstRelation == decl && !chc.isFact) { + // // TODO: think about return value when there are only adt vars + // // std::vector adt_inds; + // size_t vars_size = chc.dstRelation->arity(); + // // bool found = false; + // // for (size_t i = vars_size - 2; i > 0; --i) { + // // bool is_adt = false; + // // for (auto & adt : adts) { + // // if ((*chc.dstRelation)[i] == adt) { + // // is_adt = true; + // // adt_inds.push_back(i - 1); + // // break; + // // } + // // } + // // if (!is_adt) { + // // values_inds[chc.dstRelation->left()] = i - 1; + // // found = true; + // // break; + // // } + // // } + // // if (!found) { + // // for (int i = 0; i < chc.srcRelations.size(); i++) { + // // if (chc.srcRelations[i] == decl) { + // // for (int j = 0; j < adt_inds.size(); ++j) { + // // size_t ind = adt_inds[j]; + // // Expr eq1 = mk(chc.srcVars[0][ind], chc.dstVars[ind]); + // // Expr eq2 = mk(chc.dstVars[ind], chc.srcVars[0][ind]); + // // if (!contains(chc.body, eq1) && !contains(chc.body, eq2)) { + // // values_inds[chc.dstRelation->left()] = ind; + // // found = true; + // // break; + // // } + // // } + // // break; + // // } + // // } + // // } + // // if (!found) { + // values_inds[chc.dstRelation->left()] = vars_size - 3; + // // } + // break; + // } + // } + // } + } + bool solveArr(){ Expr decl = NULL; for (auto & d : decls){ @@ -362,14 +558,14 @@ namespace ufo } }; - void chcSolve(char * smt_file) + void chcSolve(char * smt_file, bool givePriorityNonAdt, bool ignoreBaseVar) { ExprFactory efac; EZ3 z3(efac); CHCs ruleManager(efac, z3); ExprSet adts; ruleManager.parse(smt_file); -// ruleManager.print(); + // ruleManager.print(); ExprVector constructors; ExprVector assumptions; @@ -381,7 +577,8 @@ namespace ufo adts.insert(a->last()); } - CHCSolver sol (constructors, adts, efac, decls, ruleManager.extras, ruleManager.chcs); + CHCSolver sol (constructors, adts, efac, decls, ruleManager.extras, ruleManager.chcs, + givePriorityNonAdt, ignoreBaseVar); bool res = containsOp(conjoin(decls, efac)) ? sol.solveArr() : sol.solve(); outs () << (res ? "unsat\n" : "unknown\n"); } diff --git a/include/ufo/Expr.hpp b/include/ufo/Expr.hpp index 8c5b7d928..54d23b929 100644 --- a/include/ufo/Expr.hpp +++ b/include/ufo/Expr.hpp @@ -50,6 +50,9 @@ DM-0002198 #include #include +#undef TRUE +#undef FALSE + #define mk_it_range boost::make_iterator_range #define NOP_BASE(NAME) struct NAME : public expr::Operator {}; diff --git a/include/ufo/ExprLlvm.hpp b/include/ufo/ExprLlvm.hpp index 63ca200dc..88f595323 100644 --- a/include/ufo/ExprLlvm.hpp +++ b/include/ufo/ExprLlvm.hpp @@ -1,208 +1,7 @@ #ifndef __EXPR__LLVM__HPP_ #define __EXPR__LLVM__HPP_ -#include "ufo/Expr.hpp" - -#include - -#include "llvm/Support/raw_ostream.h" -#include "llvm/IR/Function.h" -#include "llvm/IR/BasicBlock.h" -#include "llvm/IR/Value.h" -#include "llvm/ADT/APInt.h" -#include "llvm/IR/Constants.h" - -#include - - -namespace expr -{ - using namespace llvm; - - inline llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const Expr &p) - { - OS << p.get (); - return OS; - } - - inline llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, - const ENode &n) - { - OS << boost::lexical_cast (n); - return OS; - } - - using namespace llvm; - template<> struct TerminalTrait - { - static inline void print (std::ostream &OS, const Function *f, - int depth, bool brkt) - {OS << f->getName ().str ();} - - static inline bool less (const Function *f1, const Function *f2) - {return f1 < f2;} - - static inline bool equal_to (const Function *f1, const Function *f2) - {return f1 == f2;} - - static inline size_t hash (const Function *f) - { - boost::hash hasher; - return hasher (f); - } - }; - - - template<> struct TerminalTrait - { - static inline void print (std::ostream &OS, const BasicBlock* s, - int depth, bool brkt) - { - OS << s->getParent ()->getName ().str () + "@" + s->getName ().str (); - } - static inline bool less (const BasicBlock* s1, const BasicBlock* s2) - { return s1 < s2; } - - static inline bool equal_to (const BasicBlock *b1, const BasicBlock *b2) - { return b1 == b2; } - - static inline size_t hash (const BasicBlock *b) - { - boost::hash hasher; - return hasher (b); - } - - - }; - - template<> struct TerminalTrait - { - static inline void print (std::ostream &OS, const Value* s, - int depth, bool brkt) - { - // -- name instructions uniquely based on the name of their containing function - if (const Instruction *inst = dyn_cast (s)) - { - const BasicBlock *bb = inst->getParent (); - const Function *fn = bb ? bb->getParent () : NULL; - if (fn) OS << fn->getName ().str () << "@"; - } - else if (const Argument *arg = dyn_cast (s)) - { - const Function *fn = arg->getParent (); - if (fn) OS << fn->getName ().str () << "@"; - } - - if (s->hasName ()) - OS << (isa (s) ? '@' : '%') - << s->getName ().str (); - else - { - // names of constant expressions - std::string ssstr; - raw_string_ostream ss(ssstr); - ss << *s; - OS << ss.str (); - - // std::string str = ss.str(); - // int f = str.find_first_not_of(' '); - // std::string s1 = str.substr(f); - // f = s1.find_first_of(' '); - // OS << s1.substr(0,f); - } - } - static inline bool less (const Value* s1, const Value* s2) - { return s1 < s2; } - - static inline bool equal_to (const Value *v1, const Value *v2) - { return v1 == v2; } - - static inline size_t hash (const Value *v) - { - boost::hash hasher; - return hasher (v); - } - }; - - typedef expr::Terminal BB; - typedef expr::Terminal VALUE; - typedef expr::Terminal FUNCTION; - - /** Converts v to mpz_class. Assumes that v is signed */ - inline mpz_class toMpz (const APInt &v) - { - // Based on: - // https://llvm.org/svn/llvm-project/polly/trunk/lib/Support/GICHelper.cpp - // return v.getSExtValue (); - - APInt abs; - abs = v.isNegative () ? v.abs () : v; - - const uint64_t *rawdata = abs.getRawData (); - unsigned numWords = abs.getNumWords (); - - // TODO: Check if this is true for all platforms. - mpz_class res; - mpz_import(res.get_mpz_t (), numWords, 1, sizeof (uint64_t), 0, 0, rawdata); - - return v.isNegative () ? mpz_class(-res) : res; - } - - inline mpz_class toMpz (const Value *v) - { - if (const ConstantInt *k = dyn_cast (v)) - return toMpz (k->getValue ()); - if (isa (v)) return 0; - - assert (0 && "Not a number"); - return 0; - } - - /** Adapted from - https://llvm.org/svn/llvm-project/polly/branches/release_34/lib/Support/GICHelper.cpp - */ - inline APInt toAPInt (const mpz_class &v) - { - uint64_t *p = nullptr; - size_t sz; - - p = (uint64_t*)mpz_export (p, &sz, -1, sizeof(uint64_t), 0, 0, v.get_mpz_t ()); - if (p) - { - APInt A ((unsigned)mpz_sizeinbase (v.get_mpz_t (), 2), (unsigned)sz, p); - A = A.zext (A.getBitWidth () + 1); - free (p); - - if (sgn (v) == -1) - return -A; - else - return A; - } - else - return APInt (1, 0); - } - - inline APInt toAPInt (unsigned numBits, const mpz_class &v) - { - uint64_t *p = nullptr; - size_t sz; - - p = (uint64_t*)mpz_export (p, &sz, -1, sizeof(uint64_t), 0, 0, v.get_mpz_t ()); - if (p) - { - APInt A (numBits, (unsigned)sz, p); - free (p); - - if (sgn (v) == -1) - return -A; - else - return A; - } - else - return APInt (numBits, 0); - } - -} - +#define outs() std::cout +#define errs() std::cerr #endif diff --git a/include/ufo/Smt/Z3n.hpp b/include/ufo/Smt/Z3n.hpp index 286fdf371..2f8eda771 100644 --- a/include/ufo/Smt/Z3n.hpp +++ b/include/ufo/Smt/Z3n.hpp @@ -54,7 +54,7 @@ namespace z3 return hasher (static_cast (ast)); } }; - + struct ast_ptr_equal_to : public std::binary_function { bool operator() (const ast &a1, const ast &a2) const @@ -66,32 +66,7 @@ namespace z3 namespace z3 { - // -- fixedpoint class is missing from z3++.h - class fixedpoint : public object - { - Z3_fixedpoint m_fixedpoint; - void init (Z3_fixedpoint f) - { - m_fixedpoint = f; - Z3_fixedpoint_inc_ref (ctx(), f); - } - public: - fixedpoint(context & c):object(c) { init(Z3_mk_fixedpoint(c)); } - fixedpoint(context & c, Z3_fixedpoint s):object(c) { init(s); } - fixedpoint(fixedpoint const & s):object(s) { init(s.m_fixedpoint); } - ~fixedpoint() { Z3_fixedpoint_dec_ref(ctx(), m_fixedpoint); } - operator Z3_fixedpoint() const { return m_fixedpoint; } - fixedpoint & operator=(fixedpoint const & s) { - Z3_fixedpoint_inc_ref(s.ctx(), s.m_fixedpoint); - Z3_fixedpoint_dec_ref(ctx(), m_fixedpoint); - m_ctx = s.m_ctx; - m_fixedpoint = s.m_fixedpoint; - return *this; - } - void set(params const & p) - { Z3_fixedpoint_set_params(ctx(), m_fixedpoint, p); check_error(); } - }; - + class ast_map : public object { Z3_ast_map m_map; void init(Z3_ast_map v) { Z3_ast_map_inc_ref(ctx(), v); m_map = v; } @@ -113,7 +88,7 @@ namespace z3 void insert (ast const &k, ast const &v) { Z3_ast_map_insert(ctx(), m_map, k, v); check_error(); }; ast find (ast const &k) { Z3_ast res = Z3_ast_map_find(ctx(), m_map, k); check_error(); return ast (ctx (), res); }; ast_vector get_keys() { Z3_ast_vector res = Z3_ast_map_keys(ctx(), m_map); check_error(); return ast_vector (ctx (), res); }; - + friend std::ostream & operator<<(std::ostream & out, ast_map const & v) { out << Z3_ast_map_to_string(v.ctx(), v); return out; } }; } @@ -198,8 +173,14 @@ namespace ufo { z3::context &ctx = z3.get_ctx (); - z3::ast ast (ctx, Z3_parse_smtlib2_string (ctx, smt.c_str (), - 0, NULL, NULL, 0, NULL, NULL)); + Z3_ast_vector b = Z3_parse_smtlib2_string (ctx, smt.c_str (), 0, NULL, NULL, 0, NULL, NULL); + Z3_ast* args = new Z3_ast[Z3_ast_vector_size(ctx, b)]; + + for (unsigned i = 0; i < Z3_ast_vector_size(ctx, b); ++i) { + args[i] = Z3_ast_vector_get(ctx, b, i); + } + + z3::ast ast (ctx, Z3_mk_and(ctx, Z3_ast_vector_size(ctx, b), args)); ctx.check_error (); return z3.toExpr (ast); } @@ -207,12 +188,19 @@ namespace ufo template Expr z3_from_smtlib_file (Z &z3, const char *fname) { - z3::context &ctx = z3.get_ctx (); - z3::ast ast (ctx, Z3_parse_smtlib2_file (ctx, fname, - 0, NULL, NULL, 0, NULL, NULL)); - ctx.check_error (); - return z3.toExpr (ast); - } + z3::context &ctx = z3.get_ctx (); + + Z3_ast_vector b = Z3_parse_smtlib2_file (ctx, fname, 0, NULL, NULL, 0, NULL, NULL); + Z3_ast* args = new Z3_ast[Z3_ast_vector_size(ctx, b)]; + + for (unsigned i = 0; i < Z3_ast_vector_size(ctx, b); ++i) { + args[i] = Z3_ast_vector_get(ctx, b, i); + } + + z3::ast ast (ctx, Z3_mk_and(ctx, Z3_ast_vector_size(ctx, b), args)); + ctx.check_error (); + return z3.toExpr (ast); + } template std::string z3_to_smtlib (Z &z3, Expr e) @@ -229,9 +217,9 @@ namespace ufo pinned.push_back (a); bound.push_back (Z3_to_app (ctx, a)); assert (a.kind () == Z3_APP_AST); - + z3::ast_map emap (ctx); - + z3::ast res (ctx, Z3_qe_model_project_skolem (ctx, model.get_model (), bound.size (), &bound [0], b, emap)); @@ -241,7 +229,7 @@ namespace ufo } return z3.toExpr (res); } - + } @@ -325,11 +313,14 @@ namespace ufo Z3_func_decl fdecl = Z3_get_app_decl (ctx, app); if (seen.count (fdecl) > 0) return; - if (Z3_get_decl_kind (ctx, fdecl) == Z3_OP_UNINTERPRETED) - seen.insert (fdecl); + if (Z3_get_decl_kind (ctx, fdecl) == Z3_OP_UNINTERPRETED && + Z3_get_domain_size (ctx, fdecl) == 0) + seen.insert (fdecl); for (unsigned i = 0; i < Z3_get_app_num_args (ctx, app); i++) - allDecls (Z3_get_app_arg (ctx, app, i), seen); + { + allDecls (Z3_get_app_arg (ctx, app, i), seen); + } } @@ -370,7 +361,7 @@ namespace ufo friend class ZSolver; friend class ZModel; friend class ZFixedPoint; - + friend Expr z3_qe_model_project_skolem (this_type &z3, this_model_type &model, Expr v, Expr body, ExprMap &map); friend Expr z3_lite_simplify (this_type &z3, Expr e); @@ -400,7 +391,7 @@ namespace ufo bool isAsArray (const z3::ast &v) { if (v.kind () != Z3_APP_AST) return false; - + Z3_app app = Z3_to_app (ctx, v); Z3_func_decl fdecl = Z3_get_app_decl (ctx, app); return Z3_get_decl_kind (ctx, fdecl) == Z3_OP_AS_ARRAY; @@ -416,7 +407,7 @@ namespace ufo Expr res = mdl::ftable (entries, z3.toExpr (elseV)); return res; } - + Expr fentryToExpr (const z3::func_entry &zentry) { ExprVector args; @@ -429,14 +420,14 @@ namespace ufo Expr res = mdl::fentry (args, z3.toExpr (zval)); return res; } - - + + public: ZModel (Z &z) : z3(z), ctx (z.get_ctx ()), model(nullptr), efac(z.get_efac ()) {} - + ZModel (Z &z, const z3::model &m) : z3(z), ctx(z.get_ctx ()), model (m), efac (z.get_efac ()) {Z3_model_inc_ref (ctx, model);} @@ -450,10 +441,10 @@ namespace ufo if (model) Z3_model_dec_ref (ctx, model); model = nullptr; } - + this_type &operator= (this_type other) {swap (*this, other); return *this;} - + Z3_model &get_model () { return model; } friend void swap (this_type &src, this_type &dst) @@ -462,8 +453,8 @@ namespace ufo assert (&src.z3 == &dst.z3); swap (src.model, dst.model); } - - + + Expr eval (Expr e, bool completion = false) { assert (model); @@ -475,8 +466,8 @@ namespace ufo z3::ast val (ctx, raw_val); ctx.check_error (); if (!isAsArray (val)) return z3.toExpr (val); - - + + Z3_func_decl fdecl = Z3_get_as_array_func_decl (ctx, val); z3::func_interp zfunc (ctx, Z3_model_get_func_interp (ctx, model, fdecl)); ctx.check_error (); @@ -495,7 +486,7 @@ namespace ufo out << Z3_model_to_string (model.ctx, model.model); return out; } - + }; template @@ -688,12 +679,12 @@ namespace ufo ExprFactory &efac; public: - + ExprVector m_rels; ExprVector m_vars; ExprVector m_rules; ExprVector m_queries; - + ZFixedPoint (Z &z) : z3(z), ctx(z.get_ctx ()), fp (z.get_ctx ()), efac(z.get_efac ()) {} @@ -712,7 +703,7 @@ namespace ufo void addRule (const Range &vars, Expr rule) { if (isOpX (rule)) return; - + boost::copy (vars, std::back_inserter (m_vars)); m_rules.push_back (rule); @@ -746,9 +737,9 @@ namespace ufo void addQuery (Expr q) {m_queries.push_back (q);} - void addQueries (ExprVector qs) + void addQueries (ExprVector qs) { - std::copy (qs.begin (), qs.end (), + std::copy (qs.begin (), qs.end (), std::back_inserter (m_queries)); } @@ -781,7 +772,7 @@ namespace ufo ast = z3::ast (ctx, Z3_mk_exists_const (ctx, 0, bound.size (), &bound [0], 0, NULL, ast)); } - + tribool res = z3l_to_tribool (Z3_fixedpoint_query (ctx, fp, ast)); ctx.check_error (); return res; @@ -816,8 +807,8 @@ namespace ufo ast = z3::ast (ctx, Z3_mk_exists_const (ctx, 0, bound.size (), &bound [0], 0, NULL, ast)); } - - + + Z3_ast qptr = static_cast (ast); Z3_string str = Z3_fixedpoint_to_string (ctx, fp, 1, &qptr); return std::string (str); @@ -856,7 +847,7 @@ namespace ufo else out << "UfoUnknownSort"; out << ") "; } - + else out << "UfoUnknownSort "; } out << "))\n"; @@ -931,14 +922,14 @@ namespace ufo void addCover (Expr pred, Expr lemma, int lvl = -1) { if (isOpX (lemma)) return; - + assert (bind::isFapp (pred)); z3::ast zpred (ctx, z3.toAst (pred)); Z3_app app = Z3_to_app (ctx, zpred); if (isOpX (lemma)) { - Z3_fixedpoint_add_cover (ctx, fp, lvl, Z3_get_app_decl (ctx, app), + Z3_fixedpoint_add_cover (ctx, fp, lvl, Z3_get_app_decl (ctx, app), Z3_mk_false (ctx)); ctx.check_error (); return; @@ -1006,7 +997,7 @@ namespace ufo void getCexRules (ExprVector &res) { - z3::ast_vector rules (ctx, + z3::ast_vector rules (ctx, Z3_fixedpoint_get_rules_along_trace (ctx, fp)); for (unsigned i = 0; i < rules.size (); ++i) { @@ -1017,18 +1008,18 @@ namespace ufo res.push_back (z3.toExpr (rule)); } } - + void loadFPfromFile(std::string smt){ z3::ast_vector queries (ctx, Z3_fixedpoint_from_file(ctx, fp, smt.c_str ())); ctx.check_error (); - + z3::ast_vector rules (ctx, Z3_fixedpoint_get_rules(ctx, fp)); ExprSet relations; for (unsigned i = 0; i < rules.size (); ++i){ Expr rule = z3.toExpr (rules [i]); m_rules.push_back(rule); - + Expr head = rule->arg(rule->arity() - 1)->arg(1); if (isOpX(head)){ if (head->arity () > 0){ @@ -1038,13 +1029,13 @@ namespace ufo } } } - + for (unsigned i = 0; i < queries.size (); ++i){ m_queries.push_back(z3.toExpr (queries [i])); } - + for (auto &r: relations) m_rels.push_back (r); - + //TODO: vars } }; diff --git a/include/ufo/Smt/ZExprConverter.hpp b/include/ufo/Smt/ZExprConverter.hpp index 3ed515640..2f24d0b76 100644 --- a/include/ufo/Smt/ZExprConverter.hpp +++ b/include/ufo/Smt/ZExprConverter.hpp @@ -6,7 +6,6 @@ // -- used for CL options #include "Z3n.hpp" -#include "llvm/Support/raw_ostream.h" #include "ufo/ExprLlvm.hpp" namespace ufo @@ -18,7 +17,7 @@ namespace ufo static z3::ast marshal (Expr e, z3::context &ctx, C &cache, expr_ast_map &seen) { - llvm::errs () << "Cannot marshal: " << *e << "\n"; + errs () << "Cannot marshal: " << *e << "\n"; assert (0); exit (1); } }; @@ -29,7 +28,7 @@ namespace ufo static Expr unmarshal (const z3::ast &a, ExprFactory &efac, C &cache, ast_expr_map &seen) { - llvm::errs () << "Cannot unmarshal: " << lexical_cast (a) << "\n"; + errs () << "Cannot unmarshal: " << lexical_cast (a) << "\n"; assert (0); exit (1); } diff --git a/tools/adt/CHC.cpp b/tools/adt/CHC.cpp index a215f2e33..a663d1ea1 100644 --- a/tools/adt/CHC.cpp +++ b/tools/adt/CHC.cpp @@ -15,6 +15,15 @@ char * getStrValue(const char * opt, const char * defValue, int argc, char ** ar return (char *)defValue; } +bool getBoolValue(const char * opt, bool defValue, int argc, char ** argv) +{ + for (int i = 1; i < argc; i++) + { + if (strcmp(argv[i], opt) == 0) return true; + } + return defValue; +} + char * getSmtFileName(int num, int argc, char ** argv) { int num1 = 1; @@ -33,6 +42,8 @@ char * getSmtFileName(int num, int argc, char ** argv) int main (int argc, char ** argv) { char *infile = getSmtFileName(1, argc, argv); - chcSolve(infile); + bool givePriorityNonAdt = getBoolValue("--give-nonadt-priority", false, argc, argv); + bool ignoreBaseVar = getBoolValue("--ignore-base", false, argc, argv); + chcSolve(infile, givePriorityNonAdt, ignoreBaseVar); return 0; } diff --git a/tools/adt/CMakeLists.txt b/tools/adt/CMakeLists.txt index 5f0b40a43..7ad8b035d 100644 --- a/tools/adt/CMakeLists.txt +++ b/tools/adt/CMakeLists.txt @@ -1,4 +1,3 @@ add_executable (chc CHC.cpp) target_link_libraries (chc ${Z3_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${GMPXX_LIB} ${GMP_LIB}) -llvm_config (chc bitwriter) install(TARGETS chc RUNTIME DESTINATION bin) diff --git a/tools/aeval/CMakeLists.txt b/tools/aeval/CMakeLists.txt index ad7f16edc..ec5fb04f8 100644 --- a/tools/aeval/CMakeLists.txt +++ b/tools/aeval/CMakeLists.txt @@ -1,4 +1,3 @@ add_executable (aeval Ae.cpp) target_link_libraries (aeval ${Z3_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${GMPXX_LIB} ${GMP_LIB}) -llvm_config (aeval bitwriter) install(TARGETS aeval RUNTIME DESTINATION bin) From af662867ed2532acc7b162759526bf83d7daab9a Mon Sep 17 00:00:00 2001 From: grigoryfedyukovich Date: Mon, 5 Apr 2021 08:09:41 -0400 Subject: [PATCH 27/40] fixed some frontend issues --- include/adt/CHCSolver.hpp | 8 ++--- include/deep/HornNonlin.hpp | 59 +++++++++++-------------------------- 2 files changed, 22 insertions(+), 45 deletions(-) diff --git a/include/adt/CHCSolver.hpp b/include/adt/CHCSolver.hpp index 89eb47d86..9ada640c1 100644 --- a/include/adt/CHCSolver.hpp +++ b/include/adt/CHCSolver.hpp @@ -195,7 +195,7 @@ namespace ufo destination = mkNeg(chc.body->arg(j)); } else { - cnj.push_back(chc.body->arg(j)); + cnj.push_back(chc.body->arg(j)); } } } @@ -312,8 +312,8 @@ namespace ufo for(int j = 0; j < chc.body->arity(); ++j) { Expr body_elem = chc.body->arg(j); if (isOpX(body_elem)) { - if (body_elem->left() == chc.dstVars[i] && body_elem->right()->arity() == 1 || - body_elem->right() == chc.dstVars[i] && body_elem->left()->arity() == 1) { + if ((body_elem->left() == chc.dstVars[i] && body_elem->right()->arity() == 1) || + (body_elem->right() == chc.dstVars[i] && body_elem->left()->arity() == 1)) { return i; } } @@ -580,7 +580,7 @@ namespace ufo CHCSolver sol (constructors, adts, efac, decls, ruleManager.extras, ruleManager.chcs, givePriorityNonAdt, ignoreBaseVar); bool res = containsOp(conjoin(decls, efac)) ? sol.solveArr() : sol.solve(); - outs () << (res ? "unsat\n" : "unknown\n"); + outs () << (res ? "sat\n" : "unknown\n"); } } diff --git a/include/deep/HornNonlin.hpp b/include/deep/HornNonlin.hpp index 3b2687129..c7c2b8a3f 100755 --- a/include/deep/HornNonlin.hpp +++ b/include/deep/HornNonlin.hpp @@ -101,41 +101,24 @@ namespace ufo return false; } - void preprocess (Expr term, ExprVector& locVars, vector& srcVars, ExprVector &srcRelations, ExprSet& lin) + void splitBody (Expr body, vector& srcVars, ExprVector &srcRelations, ExprSet& lin) { - if (isOpX(term)) + getConj (body, lin); + for (auto c = lin.begin(); c != lin.end(); ) { - for (auto it = term->args_begin(), end = term->args_end(); it != end; ++it) + Expr cnj = *c; + if (isOpX(cnj) && isOpX(cnj->left())) { - preprocess(*it, locVars, srcVars, srcRelations, lin); - } - } - else - { - if (bind::isBoolConst(term)) - { - lin.insert(term); - } - if (isOpX(term) && isOpX(term->arg(0)) && - find(decls.begin(), decls.end(), term->arg(0)) != decls.end()) - // GF: the last requirement might be too restrictive: a rule with - // the term->arg(0) in the head should already be encountered - { - Expr rel = term->arg(0); - if (rel->arity() >= 2) - { - addDecl(rel); - srcRelations.push_back(rel); - ExprVector tmp; - for (auto it = term->args_begin()+1, end = term->args_end(); it != end; ++it) - tmp.push_back(*it); - srcVars.push_back(tmp); - } - } - else - { - lin.insert(term); + Expr rel = cnj->arg(0); + addDecl(rel); + srcRelations.push_back(rel); + ExprVector tmp; + for (auto it = cnj->args_begin()+1, end = cnj->args_end(); it != end; ++it) + tmp.push_back(*it); + srcVars.push_back(tmp); + c = lin.erase(c); } + else ++c; } } @@ -242,7 +225,7 @@ namespace ufo Expr head = r->arg(1); vector origSrcSymbs; ExprSet lin; - preprocess(body, hr.locVars, origSrcSymbs, hr.srcRelations, lin); + splitBody(body, origSrcSymbs, hr.srcRelations, lin); if (hr.srcRelations.size() == 0) { if (hasUninterp(body)) @@ -258,14 +241,7 @@ namespace ufo if (isOpX(head)) { - if (head->arg(0)->arity() == 2 && !hr.isFact) - { - addFailDecl(head->arg(0)->arg(0)); - } - else - { - addDecl(head->arg(0)); - } + addDecl(head->arg(0)); hr.dstRelation = head->arg(0); } else @@ -318,7 +294,8 @@ namespace ufo hr.assignVarsAndRewrite (origSrcSymbs, tmp, origDstSymbs, invVars[hr.dstRelation]); - if (isOpX(hr.body) || (hr.srcRelations.size() == 0 && hr.isQuery)) + if ((isOpX(hr.body) && !hr.isQuery) || + (hr.srcRelations.size() == 0 && hr.isQuery)) { extras.push_back(r1); chcs.pop_back(); From f24d11ff0ce57747e63808c0d5af482508addf76 Mon Sep 17 00:00:00 2001 From: LChernigovskaya Date: Mon, 1 Nov 2021 16:16:31 +0300 Subject: [PATCH 28/40] Adt chc (#23) * fixed the null pointer dereference * reading ADT-constraints as CHCs * fixed ADT preprocessing * Convert CHCs to assumptions and goal for adt-ind * Fix generating goal * Swap equality arguments * enhanced equality elimination + minor fixes * enabled fast SMT implication checks w/timeouts; disabled user-strategies * Add some benchmarks * Try forall for goal * improved nested induction and subgoal handling * Add substitutions in assumptions * Improve substitutions * Create ADT query for all CHCs * Some code refactorings * Copy assumptions before calling adt * Add check that replaced element is not constructor * Keep the last value for return if cannot find anything * Add new benchmarks and some improvements * Support case when only one variable * Add benchmarks from LEON * add extra lemmas to assumptions * Make changes for Eldarica * Add benchmarks from LEON for adtChc * filter decl ignore function with one argument * fix benchmarks * Support choosing return values * got rid of the LLVM dependency (cherry picked from commit 4aa4e9b911df4fe7e43ade731f45ff0b9ce93e78) * Use Z3Prover/z3 repository * Fix bsearch-tree10 benchmark * Rename benchmarks * update leon benchmarks * Add simple unit propagation * Add some clam benchmarks * Check lemmas in adtind benchmarks * Add some fixes to CHC proving process * Fix benchmarks * libraries/dependencies update * Improve algorithm * lemma generalization for nested induction; new benchs * Improve creating definitions * Fixes after merging * Improve converting CHC to function * Fixes for generating and proving definition * Add new benchmarks * Fix finding inductive definition when body consists of 1 conjunct * Add fix to keep non-ADT arguments of the constructors * Use the default adt-ind parameters * Add missing change * Fix generating goal * Fix list_len_butlast benchmark * Return simplifyArithm * add ite to tree_insert_all_size benchmark * Replace findMatchingFromLeftSide with findMatchingFromRule Co-authored-by: grigoryfedyukovich --- CMakeLists.txt | 41 +- bench_adt/list_append_contains.smt2 | 16 + bench_adt/list_append_min.smt2 | 14 + bench_adt/list_append_sum.smt2 | 12 + bench_adt/list_len_butlast.smt2 | 3 - bench_adt/list_min_max.smt2 | 12 + bench_adt/list_min_sum.smt2 | 12 + bench_adt/list_min_sum_len.smt2 | 16 + bench_adt/list_rev_append.smt2 | 6 - bench_adt/tree_insert_sum.smt2 | 12 + bench_horn_adt/ADTIND/list_append_ass.smt2 | 2 +- bench_horn_adt/ADTIND/list_append_min.smt2 | 18 + bench_horn_adt/ADTIND/list_append_min2.smt2 | 18 + bench_horn_adt/ADTIND/list_append_sum.smt2 | 18 + bench_horn_adt/ADTIND/list_len.smt2 | 8 +- bench_horn_adt/ADTIND/list_len_butlast.smt2 | 5 +- bench_horn_adt/ADTIND/list_min_max.smt2 | 15 + bench_horn_adt/ADTIND/list_min_sum.smt2 | 16 + bench_horn_adt/ADTIND/list_min_sum_len.smt2 | 22 + bench_horn_adt/ADTIND/list_rev.smt2 | 8 +- bench_horn_adt/ADTIND/list_rev2_append.smt2 | 4 + bench_horn_adt/ADTIND/list_rev2_len.smt2 | 9 +- bench_horn_adt/ADTIND/list_rev_append.smt2 | 5 - bench_horn_adt/ADTIND/list_rev_len.smt2 | 26 + bench_horn_adt/ADTIND/queue_amort.smt2 | 3 +- bench_horn_adt/ADTIND/queue_len.smt2 | 4 +- bench_horn_adt/ADTIND/queue_popback.smt2 | 2 +- bench_horn_adt/ADTIND/queue_push.smt2 | 2 +- bench_horn_adt/ADTIND/queue_push_to_list.smt2 | 9 +- .../ADTIND/tree_insert_all_size.smt2 | 13 +- bench_horn_adt/ADTIND/tree_insert_size.smt2 | 7 +- bench_horn_adt/ADTIND/tree_insert_sum.smt2 | 19 + bench_horn_adt/LEON/amortize-queue-goal3.smt2 | 7 - .../benchmarks-vmcai2015/clam/goal10.smt2 | 51 + .../benchmarks-vmcai2015/clam/goal11.smt2 | 54 + .../benchmarks-vmcai2015/clam/goal12.smt2 | 66 + .../benchmarks-vmcai2015/clam/goal17.smt2 | 57 + .../benchmarks-vmcai2015/clam/goal18.smt2 | 54 + .../benchmarks-vmcai2015/clam/goal19.smt2 | 55 + .../benchmarks-vmcai2015/clam/goal2.smt2 | 58 + .../benchmarks-vmcai2015/clam/goal20.smt2 | 84 + .../benchmarks-vmcai2015/clam/goal21.smt2 | 118 ++ .../benchmarks-vmcai2015/clam/goal27.smt2 | 65 + .../benchmarks-vmcai2015/clam/goal3.smt2 | 59 + .../benchmarks-vmcai2015/clam/goal4.smt2 | 56 + .../benchmarks-vmcai2015/clam/goal5.smt2 | 72 + .../benchmarks-vmcai2015/clam/goal6.smt2 | 75 + .../benchmarks-vmcai2015/clam/goal7.smt2 | 88 + .../benchmarks-vmcai2015/clam/goal72.smt2 | 37 + .../benchmarks-vmcai2015/clam/goal8.smt2 | 52 + .../benchmarks-vmcai2015/clam/goal9.smt2 | 55 + .../amortize-queue/amortize-queue-goal1.smt2 | 60 + .../amortize-queue/amortize-queue-goal10.smt2 | 91 + .../amortize-queue/amortize-queue-goal11.smt2 | 40 + .../amortize-queue/amortize-queue-goal12.smt2 | 124 ++ .../amortize-queue/amortize-queue-goal13.smt2 | 156 ++ .../amortize-queue/amortize-queue-goal14.smt2 | 164 ++ .../amortize-queue/amortize-queue-goal15.smt2 | 122 ++ .../amortize-queue/amortize-queue-goal2.smt2 | 74 + .../amortize-queue/amortize-queue-goal3.smt2 | 81 + .../amortize-queue/amortize-queue-goal4.smt2 | 58 + .../amortize-queue/amortize-queue-goal5.smt2 | 62 + .../amortize-queue/amortize-queue-goal6.smt2 | 133 ++ .../amortize-queue/amortize-queue-goal7.smt2 | 204 +++ .../amortize-queue/amortize-queue-goal8.smt2 | 37 + .../amortize-queue/amortize-queue-goal9.smt2 | 77 + .../leon/bsearch-tree/bsearch-tree-goal1.smt2 | 75 + .../bsearch-tree/bsearch-tree-goal10.smt2 | 123 ++ .../bsearch-tree/bsearch-tree-goal12.smt2 | 131 ++ .../bsearch-tree/bsearch-tree-goal13.smt2 | 128 ++ .../bsearch-tree/bsearch-tree-goal15.smt2 | 188 +++ .../bsearch-tree/bsearch-tree-goal16.smt2 | 141 ++ .../bsearch-tree/bsearch-tree-goal18.smt2 | 176 ++ .../leon/bsearch-tree/bsearch-tree-goal2.smt2 | 92 + .../leon/bsearch-tree/bsearch-tree-goal3.smt2 | 114 ++ .../leon/bsearch-tree/bsearch-tree-goal4.smt2 | 89 + .../leon/bsearch-tree/bsearch-tree-goal5.smt2 | 106 ++ .../leon/bsearch-tree/bsearch-tree-goal6.smt2 | 139 ++ .../leon/bsearch-tree/bsearch-tree-goal7.smt2 | 169 ++ .../leon/bsearch-tree/bsearch-tree-goal8.smt2 | 233 +++ .../leon/bsearch-tree/bsearch-tree-goal9.smt2 | 94 ++ .../leon/heap/heap-goal1.smt2 | 210 +++ .../leon/heap/heap-goal10.smt2 | 286 ++++ .../leon/heap/heap-goal12.smt2 | 301 ++++ .../leon/heap/heap-goal13.smt2 | 304 ++++ .../leon/heap/heap-goal2.smt2 | 227 +++ .../leon/heap/heap-goal3.smt2 | 201 +++ .../leon/heap/heap-goal4.smt2 | 201 +++ .../leon/heap/heap-goal5.smt2 | 201 +++ .../leon/heap/heap-goal6.smt2 | 224 +++ .../leon/heap/heap-goal7.smt2 | 224 +++ .../leon/heap/heap-goal8.smt2 | 233 +++ .../leon/heap/heap-goal9.smt2 | 272 +++ include/adt/ADTSolver.hpp | 93 +- include/adt/CHCSolver.hpp | 468 ++--- include/ae/AeValSolver.hpp | 12 +- include/ae/ExprSimpl.hpp | 1501 ++++++++++++++--- include/ae/SMTUtils.hpp | 314 +++- include/deep/HornNonlin.hpp | 52 + include/ufo/Expr.hpp | 42 +- include/ufo/Smt/Z3n.hpp | 6 + 101 files changed, 9716 insertions(+), 677 deletions(-) create mode 100644 bench_adt/list_append_contains.smt2 create mode 100644 bench_adt/list_append_min.smt2 create mode 100644 bench_adt/list_append_sum.smt2 create mode 100644 bench_adt/list_min_max.smt2 create mode 100644 bench_adt/list_min_sum.smt2 create mode 100644 bench_adt/list_min_sum_len.smt2 create mode 100644 bench_adt/tree_insert_sum.smt2 create mode 100644 bench_horn_adt/ADTIND/list_append_min.smt2 create mode 100644 bench_horn_adt/ADTIND/list_append_min2.smt2 create mode 100644 bench_horn_adt/ADTIND/list_append_sum.smt2 create mode 100644 bench_horn_adt/ADTIND/list_min_max.smt2 create mode 100644 bench_horn_adt/ADTIND/list_min_sum.smt2 create mode 100644 bench_horn_adt/ADTIND/list_min_sum_len.smt2 create mode 100644 bench_horn_adt/ADTIND/list_rev_len.smt2 create mode 100644 bench_horn_adt/ADTIND/tree_insert_sum.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/clam/goal10.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/clam/goal11.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/clam/goal12.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/clam/goal17.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/clam/goal18.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/clam/goal19.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/clam/goal2.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/clam/goal20.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/clam/goal21.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/clam/goal27.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/clam/goal3.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/clam/goal4.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/clam/goal5.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/clam/goal6.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/clam/goal7.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/clam/goal72.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/clam/goal8.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/clam/goal9.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal1.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal10.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal11.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal12.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal13.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal14.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal15.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal2.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal3.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal4.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal5.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal6.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal7.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal8.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal9.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal1.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal10.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal12.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal13.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal15.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal16.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal18.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal2.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal3.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal4.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal5.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal6.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal7.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal8.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal9.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal1.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal10.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal12.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal13.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal2.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal3.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal4.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal5.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal6.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal7.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal8.smt2 create mode 100644 bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal9.smt2 diff --git a/CMakeLists.txt b/CMakeLists.txt index 80e20a1f3..63abe09bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,18 +1,16 @@ cmake_minimum_required(VERSION 2.8.11) -project (SeaHorn) -set (SeaHorn_VERSION_MAJOR 0) -set (SeaHorn_VERSION_MINOR 1) -set (SeaHorn_VERSION_PATCH 0) -set (SeaHorn_VERSION_TWEAK "rc3") +project (ADTIND) +set (ADTIND_VERSION_MAJOR 0) +set (ADTIND_VERSION_MINOR 5) if (NOT PACKAGE_VERSION) set(PACKAGE_VERSION - "${SeaHorn_VERSION_MAJOR}.${SeaHorn_VERSION_MINOR}.${SeaHorn_VERSION_PATCH}") - if (DEFINED SeaHorn_VERSION_TWEAK) - set (PACKAGE_VERSION "${PACKAGE_VERSION}-${SeaHorn_VERSION_TWEAK}") + "${ADTIND_VERSION_MAJOR}.${ADTIND_VERSION_MINOR}.${ADTIND_VERSION_PATCH}") + if (DEFINED ADTIND_VERSION_TWEAK) + set (PACKAGE_VERSION "${PACKAGE_VERSION}-${ADTIND_VERSION_TWEAK}") endif() - set (SeaHorn_VERSION_INFO ${PACKAGE_VERSION}) + set (ADTIND_VERSION_INFO ${PACKAGE_VERSION}) endif() @@ -29,7 +27,7 @@ list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") -option (SEAHORN_STATIC_EXE "Static executable." OFF) +option (ADTIND_STATIC_EXE "Static executable." OFF) set (CUSTOM_BOOST_ROOT "" CACHE PATH "Path to custom boost installation.") if (CUSTOM_BOOST_ROOT) @@ -46,7 +44,7 @@ set (BOOST_COMPONENTS system) if (UNIT_TESTS) set (BOOST_COMPONENTS ${BOOST_COMPONENTS} unit_test_framework) endif() - find_package (Boost 1.67 REQUIRED COMPONENTS ${BOOST_COMPONENTS}) + find_package (Boost 1.71 REQUIRED COMPONENTS ${BOOST_COMPONENTS}) if (Boost_FOUND) include_directories (${Boost_INCLUDE_DIRS}) endif () @@ -54,7 +52,7 @@ endif () include(ExternalProject) set_property(DIRECTORY PROPERTY EP_STEP_TARGETS configure build test) -set (Z3_TAG "z3-4.8.4" CACHE STRING "Z3 git tag to use") +set (Z3_TAG "z3-4.8.10" CACHE STRING "Z3 git tag to use") set (Z3_REPO "https://github.com/Z3Prover/z3.git" CACHE STRING "Z3 repo") if (CMAKE_BUILD_TYPE STREQUAL "Debug") set (Z3_DEBUG "-d") @@ -76,7 +74,7 @@ ExternalProject_Add(z3 LOG_INSTALL 1 LOG_BUILD 1) -find_package(Z3 4.3.2) +find_package(Z3 4.8.1) if (NOT Z3_FOUND) ExternalProject_Get_Property (z3 INSTALL_DIR) set(Z3_ROOT ${INSTALL_DIR} CACHE PATH "Forced location of Z3" FORCE) @@ -93,14 +91,14 @@ endif() install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.md DESTINATION .) # install all the licenses install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/license.txt - DESTINATION share/doc/seahorn - RENAME seahorn_license.txt) + DESTINATION share/doc/ADTIND + RENAME ADTIND_license.txt) if (EXISTS z3-prefix/src/z3/LICENSE.txt) install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/z3-prefix/src/z3/LICENSE.txt - DESTINATION share/doc/seahorn + DESTINATION share/doc/ADTIND RENAME z3_license.txt) endif() @@ -115,11 +113,6 @@ if (EXISTS ${CMAKE_CURRENT_BINARY_DIR}/z3-prefix/src/z3/build) install(FILES ${z3py} DESTINATION lib/z3py) endif() -find_package(OpenMP) -if (OPENMP_FOUND) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") -endif() - find_package(Gmp REQUIRED) if (GMP_FOUND) include_directories (${GMP_INCLUDE_DIR}) @@ -129,6 +122,12 @@ else() set(GMPXX_LIB "") endif() +find_package(OpenMP) +if (OPENMP_FOUND) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + #set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp") +endif() + install(DIRECTORY include/ DESTINATION include FILES_MATCHING diff --git a/bench_adt/list_append_contains.smt2 b/bench_adt/list_append_contains.smt2 new file mode 100644 index 000000000..dbc72af40 --- /dev/null +++ b/bench_adt/list_append_contains.smt2 @@ -0,0 +1,16 @@ +(declare-sort Elem) +(declare-datatypes () ((Lst (cons (head Elem) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Elem) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun contains (Elem Lst) Bool) +(assert (forall ((x Elem)) (= (contains x nil) false))) +(assert (forall ((x Elem) (y Elem) (xs Lst)) (= (contains x (cons y xs)) (or (= x y) (contains x xs))))) + +(assert (not (forall ((x Elem) (y Lst) (z Lst)) + (= (contains x (append y z)) + (or (contains x y) (contains x z)))))) + +(check-sat) diff --git a/bench_adt/list_append_min.smt2 b/bench_adt/list_append_min.smt2 new file mode 100644 index 000000000..2fbfdbfa4 --- /dev/null +++ b/bench_adt/list_append_min.smt2 @@ -0,0 +1,14 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Int) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun min (Lst) Int) +(assert (= (min nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (min (cons x y)) (ite (< (min y) x) (min y) x)))) + +(assert (not (forall ((x Lst) (y Lst)) + (and (<= (min (append x y)) (min x)) + (<= (min (append x y)) (min y)))))) +(check-sat) diff --git a/bench_adt/list_append_sum.smt2 b/bench_adt/list_append_sum.smt2 new file mode 100644 index 000000000..2d3a6d794 --- /dev/null +++ b/bench_adt/list_append_sum.smt2 @@ -0,0 +1,12 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst) Lst) +(assert (forall ((x Lst)) (= (append nil x) x))) +(assert (forall ((x Int) (y Lst) (z Lst)) (= (append (cons x y) z) (cons x (append y z))))) + +(declare-fun sum (Lst) Int) +(assert (= (sum nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (sum (cons x y)) (+ x (sum y))))) + +(assert (not (forall ((x Lst) (y Lst)) (= (+ (sum x) (sum y)) (sum (append x y)))))) +(check-sat) diff --git a/bench_adt/list_len_butlast.smt2 b/bench_adt/list_len_butlast.smt2 index 575280239..dc55c7d40 100644 --- a/bench_adt/list_len_butlast.smt2 +++ b/bench_adt/list_len_butlast.smt2 @@ -12,8 +12,5 @@ (assert (= (butlast nil) nil)) (assert (forall ((n Int) (x Lst)) (= (butlast (cons n x)) (ite (= x nil) nil (cons n (butlast x)))))) -; extra lemma -(assert (forall ((x Lst) (n Int)) (= (= (cons n x) nil) false))) - (assert (not (forall ((x Lst) (n Int)) (= (+ 1 (len (butlast (cons n x)))) (len (cons n x)))))) (check-sat) diff --git a/bench_adt/list_min_max.smt2 b/bench_adt/list_min_max.smt2 new file mode 100644 index 000000000..5d36446f2 --- /dev/null +++ b/bench_adt/list_min_max.smt2 @@ -0,0 +1,12 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun min (Lst) Int) +(assert (= (min nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (min (cons x y)) (ite (< (min y) x) (min y) x)))) + +(declare-fun max (Lst) Int) +(assert (= (max nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (max (cons x y)) (ite (> (max y) x) (max y) x)))) + +(assert (not (forall ((x Lst)) (>= (max x) (min x))))) +(check-sat) diff --git a/bench_adt/list_min_sum.smt2 b/bench_adt/list_min_sum.smt2 new file mode 100644 index 000000000..b87facf26 --- /dev/null +++ b/bench_adt/list_min_sum.smt2 @@ -0,0 +1,12 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun sum (Lst) Int) +(assert (= (sum nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (sum (cons x y)) (+ x (sum y))))) + +(declare-fun min (Lst) Int) +(assert (= (min nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (min (cons x y)) (ite (< (min y) x) (min y) x)))) + +(assert (not (forall ((x Lst)) (=> (>= (min x) 0) (>= (sum x) 0))))) +(check-sat) diff --git a/bench_adt/list_min_sum_len.smt2 b/bench_adt/list_min_sum_len.smt2 new file mode 100644 index 000000000..2355c82bb --- /dev/null +++ b/bench_adt/list_min_sum_len.smt2 @@ -0,0 +1,16 @@ +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun len (Lst) Int) +(assert (= (len nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (len (cons x y)) (+ 1 (len y))))) + +(declare-fun sum (Lst) Int) +(assert (= (sum nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (sum (cons x y)) (+ x (sum y))))) + +(declare-fun min (Lst) Int) +(assert (= (min nil) 0)) +(assert (forall ((x Int) (y Lst)) (= (min (cons x y)) (ite (< (min y) x) (min y) x)))) + +(assert (not (forall ((x Lst)) (=> (> (min x) 0) (>= (sum x) (len x)))))) +(check-sat) diff --git a/bench_adt/list_rev_append.smt2 b/bench_adt/list_rev_append.smt2 index 9274b929b..ff4737c4c 100644 --- a/bench_adt/list_rev_append.smt2 +++ b/bench_adt/list_rev_append.smt2 @@ -8,11 +8,5 @@ (assert (= (rev nil) nil)) (assert (forall ((x Int) (y Lst)) (= (rev (cons x y)) (append (rev y) (cons x nil))))) -; extra lemmas -(assert (forall ((x Lst)) (= x (append x nil)))) -(assert (forall ((x Lst) (y Lst) (z Lst)) (= (append (append x y) z) (append x (append y z))))) - -; can be proved using this: --ind 1,3,6,5,3 - (assert (not (forall ((x Lst) (y Lst)) (= (rev (append x y)) (append (rev y) (rev x)))))) (check-sat) diff --git a/bench_adt/tree_insert_sum.smt2 b/bench_adt/tree_insert_sum.smt2 new file mode 100644 index 000000000..a177a9e06 --- /dev/null +++ b/bench_adt/tree_insert_sum.smt2 @@ -0,0 +1,12 @@ +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) + +(declare-fun tinsert (Tree Int) Tree) +(assert (forall ((i Int)) (= (tinsert leaf i) (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int)) (= (tinsert (node d l r) i) (ite (< d i) (node d l (tinsert r i)) (node d (tinsert l i) r))))) + +(declare-fun tsum (Tree) Int) +(assert (= (tsum leaf) 0)) +(assert (forall ((x Int) (l Tree) (r Tree)) (= (tsum (node x l r)) (+ x (+ (tsum l) (tsum r)))))) + +(assert (not (forall ((t Tree) (n Int)) (= (tsum (tinsert t n)) (+ n (tsum t)))))) +(check-sat) diff --git a/bench_horn_adt/ADTIND/list_append_ass.smt2 b/bench_horn_adt/ADTIND/list_append_ass.smt2 index 9970b2364..b610f62d9 100644 --- a/bench_horn_adt/ADTIND/list_append_ass.smt2 +++ b/bench_horn_adt/ADTIND/list_append_ass.smt2 @@ -8,5 +8,5 @@ (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) (assert (forall ((xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst) (us Lst) (ws Lst)) - (=> (and (append ys zs rs) (append xs ys ts) (append xs rs us) (append ts zs ws) (not (= us ws))) false))) + (=> (and (append ys zs rs) (append xs ys ts) (append xs rs us) (append ts zs ws) (not (= ws us))) false))) (check-sat) \ No newline at end of file diff --git a/bench_horn_adt/ADTIND/list_append_min.smt2 b/bench_horn_adt/ADTIND/list_append_min.smt2 new file mode 100644 index 000000000..def469540 --- /dev/null +++ b/bench_horn_adt/ADTIND/list_append_min.smt2 @@ -0,0 +1,18 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) + +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun min (Lst Int) Bool) +(assert (min nil 0)) +(assert (forall ((x Int) (y Lst) (z Int) (r Int)) + (=> (and (min y z) (= r (ite (< z x) z x))) (min (cons x y) r)))) + +(assert (forall ((x Lst) (y Lst) (z Lst) (r Int) (s Int) (t Int)) + (=> (and (append x y z) (min x r) (min y s) (min z t) (not (<= t r))) false))) + +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/ADTIND/list_append_min2.smt2 b/bench_horn_adt/ADTIND/list_append_min2.smt2 new file mode 100644 index 000000000..cd1036f1e --- /dev/null +++ b/bench_horn_adt/ADTIND/list_append_min2.smt2 @@ -0,0 +1,18 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) + +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun min (Lst Int) Bool) +(assert (min nil 0)) +(assert (forall ((x Int) (y Lst) (z Int) (r Int)) + (=> (and (min y z) (= r (ite (< z x) z x))) (min (cons x y) r)))) + +(assert (forall ((x Lst) (y Lst) (z Lst) (r Int) (s Int) (t Int)) + (=> (and (append x y z) (min x r) (min y s) (min z t) (not (<= t s))) false))) + +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/ADTIND/list_append_sum.smt2 b/bench_horn_adt/ADTIND/list_append_sum.smt2 new file mode 100644 index 000000000..46cc61fe1 --- /dev/null +++ b/bench_horn_adt/ADTIND/list_append_sum.smt2 @@ -0,0 +1,18 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) + +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun sum (Lst Int) Bool) +(assert (sum nil 0)) +(assert (forall ((x Int) (y Lst) (z Int)) + (=> (sum y z) (sum (cons x y) (+ x z))))) + +(assert (forall ((x Lst) (y Lst) (z Lst) (r Int) (s Int) (t Int)) + (=> (and (append x y z) (sum x r) (sum y s) (sum z t) (not (= t (+ r s)))) false))) + +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/ADTIND/list_len.smt2 b/bench_horn_adt/ADTIND/list_len.smt2 index 56f4d32e7..7ecf758aa 100644 --- a/bench_horn_adt/ADTIND/list_len.smt2 +++ b/bench_horn_adt/ADTIND/list_len.smt2 @@ -1,11 +1,11 @@ (set-logic HORN) (declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) (declare-fun length (Lst Int) Bool) - +(declare-fun ff () Bool) (assert (length nil 0)) (assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) (=> (and (= xs (cons x ys)) (length ys l)) (length xs (+ l 1))))) - (assert (forall ((l Int) (xs Lst)) - (=> (and (length xs l) (not (>= l 0))) false))) -(check-sat) + (=> (and (length xs l) (not (>= l 0))) ff))) +(assert (not ff)) +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/ADTIND/list_len_butlast.smt2 b/bench_horn_adt/ADTIND/list_len_butlast.smt2 index a65738cde..dee9b4d7d 100644 --- a/bench_horn_adt/ADTIND/list_len_butlast.smt2 +++ b/bench_horn_adt/ADTIND/list_len_butlast.smt2 @@ -9,9 +9,8 @@ (=> (and (= xs (cons x ys)) (length ys l)) (length xs (+ l 1))))) (assert (butlast nil nil)) -(assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst)) (=> (and (= ys (cons n xs)) (= xs nil)) (butlast ys nil)))) -(assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst) (x Int) (zs Lst)) - (=> (and (butlast xs rs) (= ys (cons n xs)) (= xs (cons x zs))) (butlast ys (cons n rs))))) +(assert (forall ((n Int) (xs Lst) (rs Lst) (ys Lst) (zs Lst)) + (=> (and (= ys (cons n xs)) (butlast xs zs) (= rs (ite (= xs nil) nil (cons n zs)))) (butlast ys rs)))) (assert (forall ((xs Lst) (ys Lst) (zs Lst) (n Int) (l1 Int) (l2 Int)) (=> (and (= ys (cons n xs)) (butlast ys zs) (length ys l1) (length zs l2) (not (= (+ l2 1) l1))) false))) diff --git a/bench_horn_adt/ADTIND/list_min_max.smt2 b/bench_horn_adt/ADTIND/list_min_max.smt2 new file mode 100644 index 000000000..7fd75df62 --- /dev/null +++ b/bench_horn_adt/ADTIND/list_min_max.smt2 @@ -0,0 +1,15 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) +(declare-fun min (Lst Int) Bool) +(assert (min nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int) (r Int)) + (=> (and (= xs (cons x ys)) (min ys l) (= r (ite (< l x) l x))) (min xs r)))) + +(declare-fun max (Lst Int) Bool) +(assert (max nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int) (r Int)) + (=> (and (= xs (cons x ys)) (max ys l) (= r (ite (> l x) l x))) (max xs r)))) + +(assert (forall ((x Int) (y Int) (xs Lst)) + (=> (and (min xs x) (max xs y) (not (>= y x))) false))) +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/ADTIND/list_min_sum.smt2 b/bench_horn_adt/ADTIND/list_min_sum.smt2 new file mode 100644 index 000000000..7bcf4429c --- /dev/null +++ b/bench_horn_adt/ADTIND/list_min_sum.smt2 @@ -0,0 +1,16 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun min (Lst Int) Bool) +(assert (min nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int) (r Int)) + (=> (and (= xs (cons x ys)) (min ys l) (= r (ite (< l x) l x))) (min xs r)))) + +(declare-fun sum (Lst Int) Bool) +(assert (sum nil 0)) +(assert (forall ((x Int) (y Lst) (z Int)) + (=> (sum y z) (sum (cons x y) (+ x z))))) + +(assert (forall ((x Int) (y Int) (xs Lst)) + (=> (and (min xs x) (sum xs y) (>= x 0) (not (>= y 0))) false))) +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/ADTIND/list_min_sum_len.smt2 b/bench_horn_adt/ADTIND/list_min_sum_len.smt2 new file mode 100644 index 000000000..8fee8b338 --- /dev/null +++ b/bench_horn_adt/ADTIND/list_min_sum_len.smt2 @@ -0,0 +1,22 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun min (Lst Int) Bool) +(assert (min nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int) (r Int)) + (=> (and (= xs (cons x ys)) (min ys l) (= r (ite (< l x) l x))) (min xs r)))) + +(declare-fun sum (Lst Int) Bool) +(assert (sum nil 0)) +(assert (forall ((x Int) (y Lst) (z Int)) + (=> (sum y z) (sum (cons x y) (+ x z))))) + + +(declare-fun length (Lst Int) Bool) +(assert (length nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (length ys l)) (length xs (+ l 1))))) + +(assert (forall ((x Int) (s Int) (l Int) (xs Lst)) + (=> (and (min xs x) (sum xs s) (length xs l) (> x 0) (not (>= s l))) false))) +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/ADTIND/list_rev.smt2 b/bench_horn_adt/ADTIND/list_rev.smt2 index d6e00e578..61cbe359c 100644 --- a/bench_horn_adt/ADTIND/list_rev.smt2 +++ b/bench_horn_adt/ADTIND/list_rev.smt2 @@ -12,9 +12,13 @@ (=> (and (= xs (cons x ys)) (rev ys rs) (append rs (cons x nil) ts)) (rev xs ts)))) ; extra lemmas -(assert (forall ((xs Lst) (ys Lst) (zs Lst) (us Lst) (rs Lst) (ts Lst)) - (=> (and (append xs ys zs) (rev ys rs) (rev xs ts) (append rs ts us)) (rev zs us)))) +(assert (forall ((xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst) (us Lst) (ws Lst)) + (=> (and (append ys zs rs) (append xs ys ts) (append xs rs us) (append ts zs ws) (not (= us ws))) false))) +(assert (forall ((xs Lst) (ys Lst)) (=> (and (append xs nil ys) (not (= xs ys))) false))) +(assert (forall ((xs Lst) (ys Lst) (zs Lst) (us Lst) (rs Lst) (ts Lst) (vs Lst)) + (=> (and (append xs ys zs) (rev ys rs) (rev xs ts) (append rs ts us) (rev zs vs) (not (= us vs))) false))) (assert (forall ((xs Lst) (ys Lst) (zs Lst)) (=> (and (rev xs ys) (rev ys zs) (not (= xs zs))) false))) (check-sat) +(assert (forall ((x Int) (y Int)) (=> (> x y) (max x y x)))) \ No newline at end of file diff --git a/bench_horn_adt/ADTIND/list_rev2_append.smt2 b/bench_horn_adt/ADTIND/list_rev2_append.smt2 index 9c43da67c..0ac67e57a 100644 --- a/bench_horn_adt/ADTIND/list_rev2_append.smt2 +++ b/bench_horn_adt/ADTIND/list_rev2_append.smt2 @@ -12,6 +12,10 @@ (=> (and (= xs (cons x ts)) (= rs (cons x zs)) (rev2 ts rs us)) (rev2 xs zs us)))) ; extra lemma +; (assert (forall ((xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst) (us Lst) (vs Lst)) +; (=> (and (append xs ys rs) (append ys zs ts) (append xs ts us) (append rs zs vs) (not (= us vs))) false))) + + (assert (forall ((xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst) (us Lst)) (=> (and (append xs ys rs) (append ys zs ts) (append xs ts us)) (append rs zs us)))) diff --git a/bench_horn_adt/ADTIND/list_rev2_len.smt2 b/bench_horn_adt/ADTIND/list_rev2_len.smt2 index 166e2b0b8..8a62d2107 100644 --- a/bench_horn_adt/ADTIND/list_rev2_len.smt2 +++ b/bench_horn_adt/ADTIND/list_rev2_len.smt2 @@ -16,11 +16,12 @@ (assert (forall ((xs Lst) (ys Lst) (zs Lst) (rs Lst) (x Int) (ts Lst)) (=> (and (= xs (cons x ys)) (= zs (cons x ts)) (rev2 ys zs rs)) (rev2 xs ts rs)))) + ; extra lemmas -(assert (forall ((xs Lst) (ys Lst) (rs Lst) (zs Lst) ) - (=> (and (rev2 xs nil zs) (append zs ys rs)) (rev2 xs ys rs)))) -(assert (forall ((xs Lst) (ys Lst) (zs Lst) (lx Int) (ly Int)) - (=> (and (append xs ys zs) (len xs lx) (len ys ly)) (len zs (+ lx ly))))) +(assert (forall ((xs Lst) (ys Lst) (zs Lst) (lx Int) (ly Int) (lz Int)) + (=> (and (append xs ys zs) (len xs lx) (len ys ly) (len zs lz) (not (= lz (+ lx ly)))) false))) +(assert (forall ((xs Lst) (ys Lst) (rs Lst) (zs Lst) (vs Lst) ) + (=> (and (rev2 xs nil zs) (append zs ys rs) (rev2 xs ys vs) (not (= vs rs))) false))) (assert (forall ((xs Lst) (ys Lst) (lx Int) (ly Int)) (=> (and (rev2 xs nil ys) (len xs lx) (len ys ly) (not (= lx ly))) false))) diff --git a/bench_horn_adt/ADTIND/list_rev_append.smt2 b/bench_horn_adt/ADTIND/list_rev_append.smt2 index 4844d0841..51e4674b7 100644 --- a/bench_horn_adt/ADTIND/list_rev_append.smt2 +++ b/bench_horn_adt/ADTIND/list_rev_append.smt2 @@ -11,11 +11,6 @@ (assert (forall ((xs Lst) (x Int) (ys Lst) (rs Lst) (ts Lst)) (=> (and (= xs (cons x ys)) (rev ys rs) (append rs (cons x nil) ts)) (rev xs ts)))) -; extra lemmas -(assert (forall ((xs Lst) (ys Lst)) (append xs nil xs))) -(assert (forall ((xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst) (us Lst)) - (=> (and (append xs ys rs) (append ys zs ts) (append xs ts us)) (append rs zs us)))) - (assert (forall ((xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst) (us Lst) (ws Lst)) (=> (and (append xs ys zs) (rev zs rs) (rev ys ts) (rev xs us) (append ts us ws) (not (= rs ws))) false))) diff --git a/bench_horn_adt/ADTIND/list_rev_len.smt2 b/bench_horn_adt/ADTIND/list_rev_len.smt2 new file mode 100644 index 000000000..046dace5d --- /dev/null +++ b/bench_horn_adt/ADTIND/list_rev_len.smt2 @@ -0,0 +1,26 @@ +(set-logic HORN) +(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil)))) + +(declare-fun append (Lst Lst Lst) Bool) +(assert (forall ((xs Lst)) (append nil xs xs))) +(assert (forall ((x Int) (xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (append ys zs rs) (= ts (cons x rs))) (append xs zs ts)))) + +(declare-fun rev (Lst Lst) Bool) +(assert (rev nil nil)) +(assert (forall ((xs Lst) (x Int) (ys Lst) (rs Lst) (ts Lst)) + (=> (and (= xs (cons x ys)) (rev ys rs) (append rs (cons x nil) ts)) (rev xs ts)))) + +(declare-fun length (Lst Int) Bool) +(assert (length nil 0)) +(assert (forall ((x Int) (xs Lst) (ys Lst) (l Int)) + (=> (and (= xs (cons x ys)) (length ys l)) (length xs (+ l 1))))) + +(assert (forall ((xs Lst) (lx Int) (ys Lst) (ly Int) (zs Lst) (lz Int)) + (=> (and (length xs lx) (length ys ly) (append xs ys zs) (length zs lz) (not (= (+ lx ly) lz))) false))) + +(assert (forall ((xs Lst) (lx Int) (ys Lst) (ly Int)) + (=> (and (length xs lx) (length ys ly) (rev xs ys) (not (= lx ly))) false))) + + +(check-sat) diff --git a/bench_horn_adt/ADTIND/queue_amort.smt2 b/bench_horn_adt/ADTIND/queue_amort.smt2 index 63adb70e9..2d6458373 100644 --- a/bench_horn_adt/ADTIND/queue_amort.smt2 +++ b/bench_horn_adt/ADTIND/queue_amort.smt2 @@ -32,7 +32,8 @@ (=> (and (len x lx) (len y ly) (<= ly lx)) (isAmortized (queue x y) true)))) ; extra lemma -(assert (forall ((x Lst) (lx Int)) (=> (len x lx) (<= 0 lx)))) +(assert (forall ((l Int) (xs Lst)) + (=> (and (len xs l) (not (>= l 0))) false))) (assert (forall ((x Lst) (y Lst) (q Queue)) (=> (and (amortizeQueue x y q) (not (isAmortized q true))) false))) diff --git a/bench_horn_adt/ADTIND/queue_len.smt2 b/bench_horn_adt/ADTIND/queue_len.smt2 index f973151cc..c070b2362 100644 --- a/bench_horn_adt/ADTIND/queue_len.smt2 +++ b/bench_horn_adt/ADTIND/queue_len.smt2 @@ -33,9 +33,9 @@ ; extra lemmas (assert (forall ((xs Lst) (ys Lst) (lx Int) (ly Int)) - (=> (and (rev2 xs nil ys) (len xs lx) (len ys ly)) (= ly lx)))) + (=> (and (rev2 xs nil ys) (len xs lx) (len ys ly) (not (= ly lx))) false))) (assert (forall ((x Lst) (y Lst) (z Lst) (lx Int) (ly Int) (lz Int)) - (=> (and (append x y z) (len x lx) (len y ly) (len z lz)) (= lz (+ lx ly))))) + (=> (and (append x y z) (len x lx) (len y ly) (len z lz) (not (= lz (+ lx ly)))) false))) (assert (forall ((x Lst) (y Lst) (q Queue) (lx Int) (ly Int) (lq Int)) (=> (and (amortizeQueue x y q) (qlen q lq) (len x lx) (len y ly) (not (= lq (+ lx ly)))) false))) diff --git a/bench_horn_adt/ADTIND/queue_popback.smt2 b/bench_horn_adt/ADTIND/queue_popback.smt2 index 39987733e..773c65589 100644 --- a/bench_horn_adt/ADTIND/queue_popback.smt2 +++ b/bench_horn_adt/ADTIND/queue_popback.smt2 @@ -36,7 +36,7 @@ ; extra lemma (assert (forall ((x Lst) (n Int) (y Lst) (lx Int) (ly Int)) - (=> (and (butlast (cons n x) y)) (len y ly) (len x lx) (= lx ly)))) + (=> (and (butlast (cons n x) y) (len y ly) (len x lx) (not (= lx ly))) false))) (assert (forall ((q Queue) (n Int) (p Queue) (lp Int) (lq Int)) (=> (and (isNotEmpty q true) (isAmortized q true) (qpopback q p) (qlen p lp) (qlen q lq) diff --git a/bench_horn_adt/ADTIND/queue_push.smt2 b/bench_horn_adt/ADTIND/queue_push.smt2 index 798190833..a3bb98d87 100644 --- a/bench_horn_adt/ADTIND/queue_push.smt2 +++ b/bench_horn_adt/ADTIND/queue_push.smt2 @@ -40,7 +40,7 @@ ; extra lemma (assert (forall ((x Lst) (y Lst) (q Queue) (lx Int) (ly Int) (lq Int)) - (=> (and (len x lx) (len y ly) (amortizeQueue x y q) (qlen q lq)) (= lq (+ lx ly))))) + (=> (and (len x lx) (len y ly) (amortizeQueue x y q) (qlen q lq) (not (= lq (+ lx ly)))) false))) (assert (forall ((q Queue) (n Int) (p Queue) (lp Int) (lq Int)) (=> (and (qpush q n p) (qlen p lp) (qlen q lq) (not (= lp (+ 1 lq)))) false))) diff --git a/bench_horn_adt/ADTIND/queue_push_to_list.smt2 b/bench_horn_adt/ADTIND/queue_push_to_list.smt2 index 9ff139228..99915397a 100644 --- a/bench_horn_adt/ADTIND/queue_push_to_list.smt2 +++ b/bench_horn_adt/ADTIND/queue_push_to_list.smt2 @@ -40,10 +40,11 @@ (assert (forall ((x Lst) (y Lst) (q Queue) (z Lst) (a Lst)) (=> (and (qrev y z) (append x z a)) (queue-to-lst (queue x y) a)))) ; extra lemmas -(assert (forall ((xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst) (us Lst)) - (=> (and (append xs ys rs) (append ys zs ts) (append xs ts us)) (append rs zs us)))) -(assert (forall ((x Lst) (a Lst) (y Lst) (z Lst)) - (=> (and (rev2 x nil y) (append y a z)) (rev2 x a z)))) +(assert (forall ((xs Lst) (ys Lst) (zs Lst) (rs Lst) (ts Lst) (us Lst) (vs Lst)) + (=> (and (append xs ys rs) (append ys zs ts) (append xs ts us) (append rs zs vs) (not (= vs us))) false))) +(assert (forall ((x Lst) (a Lst) (y Lst) (z Lst) (r Lst)) + (=> (and (rev2 x nil y) (append y a z) (rev2 x a r) (not (= z r))) false))) + (assert (forall ((q Queue) (n Int) (x Lst) (y Lst) (p Queue) (z Lst)) (=> (and (queue-to-lst q x) (append x (cons n nil) y) (qpush q n p) (queue-to-lst p z) (not (= y z))) false))) diff --git a/bench_horn_adt/ADTIND/tree_insert_all_size.smt2 b/bench_horn_adt/ADTIND/tree_insert_all_size.smt2 index 57efe0d1c..a25427546 100644 --- a/bench_horn_adt/ADTIND/tree_insert_all_size.smt2 +++ b/bench_horn_adt/ADTIND/tree_insert_all_size.smt2 @@ -11,19 +11,20 @@ (=> (and (= m (node x l r)) (size l sl) (size r sr)) (size m (+ 1 (+ sl sr)))))) (assert (forall ((i Int)) (insert leaf i (node i leaf leaf)))) -(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (m Tree)) - (=> (and (insert r i x) (< d i) (= m (node d l x))) (insert (node d l r) i m)))) -(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (y Tree) (m Tree)) - (=> (and (insert l i y) (>= d i) (= m (node d y r))) (insert (node d l r) i m)))) + +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (y Tree) (m Tree)) + (=> (and (insert r i x) (insert l i y) + (= m (ite (< d i) (node d l x) (node d y r)))) (insert (node d l r) i m)))) (assert (forall ((x Tree)) (insert-all x nil x))) (assert (forall ((x Tree) (n Int) (ls Lst) (xs Lst) (z Tree) (y Tree)) (=> (and (insert-all x ls y) (= xs (cons n ls)) (insert y n z)) (insert-all x xs z)))) ;extra lemmas -(assert (forall ((t Tree) (n Int) (st Int) (x Tree)) (=> (and (size t st) (insert t n x)) (size x (+ 1 st))))) +(assert (forall ((t Tree) (n Int) (st Int) (x Tree) (sx Int)) + (=> (and (size t st) (insert t n x) (size x sx) (not (= sx (+ 1 st)))) false))) (assert (forall ((l Lst) (t Tree) (i Int) (x Tree) (m Int) (n Int)) (=> (and (size t n) (insert t i x) (size x m) (not (= m (+ 1 n)))) false))) -(check-sat) \ No newline at end of file +(check-sat) diff --git a/bench_horn_adt/ADTIND/tree_insert_size.smt2 b/bench_horn_adt/ADTIND/tree_insert_size.smt2 index bade22341..a3f35680f 100644 --- a/bench_horn_adt/ADTIND/tree_insert_size.smt2 +++ b/bench_horn_adt/ADTIND/tree_insert_size.smt2 @@ -9,11 +9,10 @@ (=> (and (= m (node x l r)) (size l sl) (size r sr)) (size m (+ 1 (+ sl sr)))))) (assert (forall ((i Int)) (insert leaf i (node i leaf leaf)))) -(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (m Tree)) - (=> (and (insert r i x) (< d i) (= m (node d l x))) (insert (node d l r) i m)))) -(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (y Tree) (m Tree)) - (=> (and (insert l i y) (>= d i) (= m (node d y r))) (insert (node d l r) i m)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (y Tree) (m Tree)) + (=> (and (insert r i x) (insert l i y) + (= m (ite (< d i) (node d l x) (node d y r)))) (insert (node d l r) i m)))) (assert (forall ((t Tree) (n Int) (ts Int) (rs Int) (r Tree)) (=> (and (size t ts) (insert t n r) (size r rs) (not (= rs (+ 1 ts)))) false))) diff --git a/bench_horn_adt/ADTIND/tree_insert_sum.smt2 b/bench_horn_adt/ADTIND/tree_insert_sum.smt2 new file mode 100644 index 000000000..cf9b60bcb --- /dev/null +++ b/bench_horn_adt/ADTIND/tree_insert_sum.smt2 @@ -0,0 +1,19 @@ +(set-logic HORN) +(declare-datatypes () ((Tree (node (data Int) (left Tree) (right Tree)) (leaf)))) + +(declare-fun sum (Tree Int) Bool) +(declare-fun insert (Tree Int Tree) Bool) + +(assert (sum leaf 0)) +(assert (forall ((x Int) (r Tree) (l Tree) (m Tree) (sl Int) (sr Int)) + (=> (and (= m (node x l r)) (sum l sl) (sum r sr)) (sum m (+ x (+ sl sr)))))) + +(assert (forall ((i Int)) (insert leaf i (node i leaf leaf)))) +(assert (forall ((r Tree) (l Tree) (d Int) (i Int) (x Tree) (y Tree) (m Tree)) + (=> (and (insert r i x) (insert l i y) + (= m (ite (< d i) (node d l x) (node d y r)))) (insert (node d l r) i m)))) + +(assert (forall ((t Tree) (n Int) (ts Int) (rs Int) (r Tree)) + (=> (and (sum t ts) (insert t n r) (sum r rs) (not (= rs (+ n ts)))) false))) + +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/LEON/amortize-queue-goal3.smt2 b/bench_horn_adt/LEON/amortize-queue-goal3.smt2 index 4a8bc1bbf..c466858e5 100644 --- a/bench_horn_adt/LEON/amortize-queue-goal3.smt2 +++ b/bench_horn_adt/LEON/amortize-queue-goal3.smt2 @@ -22,13 +22,6 @@ (assert (forall ((xs Lst) (ys Lst)) (=> (qreva xs nil ys) (qrev xs ys)))) -; proven -(assert (forall ((xs Lst) (lx Int) (ys Lst) (ly Int) (zs Lst) (lz Int)) - (=> (and (len xs lx) (len ys ly) (append xs ys zs) (len zs lz)) (= (+ lx ly) lz)))) ; G-amortize-queue-1 - -(assert (forall ((x Lst) (y Lst) (z Lst) (lx Int) (ly Int) (lz Int)) - (=> (and (qreva x y z) (len z lz) (len x lx) (len y ly)) (= lz (+ lx ly))))) ; G-amortize-queue-2 - ; conjecture (assert (forall ((x Lst) (lx Int) (y Lst) (ly Int)) (=> (and (qrev x y) (len x lx) (len y ly) (not (= lx ly))) false))) ; G-amortize-queue-3 diff --git a/bench_horn_adt/benchmarks-vmcai2015/clam/goal10.smt2 b/bench_horn_adt/benchmarks-vmcai2015/clam/goal10.smt2 new file mode 100644 index 000000000..8778fee85 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/clam/goal10.smt2 @@ -0,0 +1,51 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun rev (listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (rev nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (and + (rev B D) + (append D (cons-listOfInt A nil-listOfInt) C) + ) + (rev (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A Bool) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (and + (rev B C) + (rev C D) + (not (= D B)) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/clam/goal11.smt2 b/bench_horn_adt/benchmarks-vmcai2015/clam/goal11.smt2 new file mode 100644 index 000000000..e6d3fca26 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/clam/goal11.smt2 @@ -0,0 +1,54 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun rev (listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (rev nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (and + (rev B D) + (append D (cons-listOfInt A nil-listOfInt) C) + ) + (rev (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A Bool) (B listOfInt) (C listOfInt) (D listOfInt) (E listOfInt) (F listOfInt) (G listOfInt) (H listOfInt) ) + (=> + (and + (rev B C) + (rev D E) + (append C E F) + (rev F G) + (append D B H) + (not (= G H)) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/clam/goal12.smt2 b/bench_horn_adt/benchmarks-vmcai2015/clam/goal12.smt2 new file mode 100644 index 000000000..e8f32cc7f --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/clam/goal12.smt2 @@ -0,0 +1,66 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun rev (listOfInt listOfInt) Bool) +(declare-fun qreva (listOfInt listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (rev nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (and + (rev B D) + (append D (cons-listOfInt A nil-listOfInt) C) + ) + (rev (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (qreva nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (qreva B (cons-listOfInt A C) D) + (qreva (cons-listOfInt A B) C D) + ) + ) +) +(assert + (forall ( (A Bool) (B listOfInt) (C listOfInt) (D listOfInt) (E listOfInt) (F listOfInt) ) + (=> + (and + (qreva B C D) + (rev B E) + (append E C F) + (not (= D F)) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/clam/goal17.smt2 b/bench_horn_adt/benchmarks-vmcai2015/clam/goal17.smt2 new file mode 100644 index 000000000..0f348fabb --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/clam/goal17.smt2 @@ -0,0 +1,57 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun rev (listOfInt listOfInt) Bool) +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (rev nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (and + (rev B D) + (append D (cons-listOfInt A nil-listOfInt) C) + ) + (rev (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Bool) (B listOfInt) (C listOfInt) (D listOfInt) (E listOfInt) (F listOfInt) (G listOfInt) (H listOfInt) (I listOfInt) (J listOfInt) (K listOfInt) ) + (=> + (and + (append B C D) + (rev D E) + (rev E F) + (rev B G) + (rev G H) + (rev C I) + (rev I J) + (append H J K) + (not (= F K)) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/clam/goal18.smt2 b/bench_horn_adt/benchmarks-vmcai2015/clam/goal18.smt2 new file mode 100644 index 000000000..99798082d --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/clam/goal18.smt2 @@ -0,0 +1,54 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun rev (listOfInt listOfInt) Bool) +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (rev nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (and + (rev B D) + (append D (cons-listOfInt A nil-listOfInt) C) + ) + (rev (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Bool) (B listOfInt) (C listOfInt) (D listOfInt) (E listOfInt) (F listOfInt) (G listOfInt) (H listOfInt) ) + (=> + (and + (rev B C) + (append C D E) + (rev E F) + (rev D G) + (append G B H) + (not (= F H)) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/clam/goal19.smt2 b/bench_horn_adt/benchmarks-vmcai2015/clam/goal19.smt2 new file mode 100644 index 000000000..72926f4c9 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/clam/goal19.smt2 @@ -0,0 +1,55 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun rev (listOfInt listOfInt) Bool) +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (rev nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (and + (rev B D) + (append D (cons-listOfInt A nil-listOfInt) C) + ) + (rev (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Bool) (B listOfInt) (C listOfInt) (D listOfInt) (E listOfInt) (F listOfInt) (G listOfInt) (H listOfInt) (I listOfInt) ) + (=> + (and + (rev B C) + (rev C D) + (append D E F) + (append B E G) + (rev G H) + (rev H I) + (not (= F I)) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/clam/goal2.smt2 b/bench_horn_adt/benchmarks-vmcai2015/clam/goal2.smt2 new file mode 100644 index 000000000..47024a690 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/clam/goal2.smt2 @@ -0,0 +1,58 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun len (listOfInt Int) Bool) +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D listOfInt) (E listOfInt) (F listOfInt) ) + (=> + (and + (not (= A B)) + (append C D E) + (len E B) + (append D C F) + (len F A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/clam/goal20.smt2 b/bench_horn_adt/benchmarks-vmcai2015/clam/goal20.smt2 new file mode 100644 index 000000000..466f2e67e --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/clam/goal20.smt2 @@ -0,0 +1,84 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun rev (listOfInt listOfInt) Bool) +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun id_list (listOfInt listOfInt) Bool) +(declare-fun len (listOfInt Int) Bool) +(declare-fun ff () Bool) + +(assert + (id_list nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) ) + (=> + (id_list B C) + (id_list (cons-listOfInt A B) (cons-listOfInt A C)) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (rev nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (and + (rev B D) + (append D (cons-listOfInt A nil-listOfInt) C) + ) + (rev (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D listOfInt) (E listOfInt) ) + (=> + (and + (not (= A (* 2 B))) + (id_list C D) + (append C D E) + (len E A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/clam/goal21.smt2 b/bench_horn_adt/benchmarks-vmcai2015/clam/goal21.smt2 new file mode 100644 index 000000000..d36a3787f --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/clam/goal21.smt2 @@ -0,0 +1,118 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun rev (listOfInt listOfInt) Bool) +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun id_list (listOfInt listOfInt) Bool) +(declare-fun len (listOfInt Int) Bool) +(declare-fun rotate (Int listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (id_list nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) ) + (=> + (id_list B C) + (id_list (cons-listOfInt A B) (cons-listOfInt A C)) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) ) + (=> + (= A 0) + (rotate A B B) + ) + ) +) +(assert + (forall ( (A Int) (B Int) ) + (=> + (and + (= A (+ 1 B)) + (>= B 0) + ) + (rotate A nil-listOfInt nil-listOfInt) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D listOfInt) (E Int) (F listOfInt) ) + (=> + (and + (= A (+ 1 E)) + (>= E 0) + (append C (cons-listOfInt B nil-listOfInt) F) + (rotate E F D) + ) + (rotate A (cons-listOfInt B C) D) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (rev nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (and + (rev B D) + (append D (cons-listOfInt A nil-listOfInt) C) + ) + (rev (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Bool) (B listOfInt) (C Int) (D listOfInt) (E listOfInt) (F listOfInt) (G listOfInt) ) + (=> + (and + (len B C) + (append B D E) + (rotate C E F) + (append D B G) + (not (= F G)) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/clam/goal27.smt2 b/bench_horn_adt/benchmarks-vmcai2015/clam/goal27.smt2 new file mode 100644 index 000000000..5a04b9557 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/clam/goal27.smt2 @@ -0,0 +1,65 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun qreva (listOfInt listOfInt listOfInt) Bool) +(declare-fun rev (listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (qreva nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (qreva B (cons-listOfInt A C) D) + (qreva (cons-listOfInt A B) C D) + ) + ) +) +(assert + (rev nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (and + (rev B D) + (append D (cons-listOfInt A nil-listOfInt) C) + ) + (rev (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A Bool) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (and + (rev B C) + (qreva B nil-listOfInt D) + (not (= C D)) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/clam/goal3.smt2 b/bench_horn_adt/benchmarks-vmcai2015/clam/goal3.smt2 new file mode 100644 index 000000000..bfb4f55f3 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/clam/goal3.smt2 @@ -0,0 +1,59 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun len (listOfInt Int) Bool) +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C Int) (D Int) (E listOfInt) (F listOfInt) (G listOfInt) ) + (=> + (and + (not (= A B)) + (= (+ C D) A) + (append E F G) + (len G B) + (len E C) + (len F D) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/clam/goal4.smt2 b/bench_horn_adt/benchmarks-vmcai2015/clam/goal4.smt2 new file mode 100644 index 000000000..35dd533d0 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/clam/goal4.smt2 @@ -0,0 +1,56 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun len (listOfInt Int) Bool) +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C Int) (D listOfInt) (E listOfInt) (F listOfInt) ) + (=> + (and + (not (= (* 2 C) B)) + (append D D F) + (len F B) + (len D C) + ) + ff + ) + ) +) +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/clam/goal5.smt2 b/bench_horn_adt/benchmarks-vmcai2015/clam/goal5.smt2 new file mode 100644 index 000000000..33bc94401 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/clam/goal5.smt2 @@ -0,0 +1,72 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun len (listOfInt Int) Bool) +(declare-fun rev (listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (rev nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (and + (rev B D) + (append D (cons-listOfInt A nil-listOfInt) C) + ) + (rev (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D listOfInt) ) + (=> + (and + (not (= A B)) + (rev C D) + (len D B) + (len C A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/clam/goal6.smt2 b/bench_horn_adt/benchmarks-vmcai2015/clam/goal6.smt2 new file mode 100644 index 000000000..88b383c93 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/clam/goal6.smt2 @@ -0,0 +1,75 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun len (listOfInt Int) Bool) +(declare-fun rev (listOfInt listOfInt) Bool) +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (rev nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (and + (rev B D) + (append D (cons-listOfInt A nil-listOfInt) C) + ) + (rev (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C Int) (D Int) (E listOfInt) (F listOfInt) (G listOfInt) (H listOfInt) ) + (=> + (and + (= (+ C D) A) + (not (= B A)) + (append E F G) + (rev G H) + (len H B) + (len E C) + (len F D) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/clam/goal7.smt2 b/bench_horn_adt/benchmarks-vmcai2015/clam/goal7.smt2 new file mode 100644 index 000000000..a9f27d69b --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/clam/goal7.smt2 @@ -0,0 +1,88 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun rev (listOfInt listOfInt) Bool) +(declare-fun len (listOfInt Int) Bool) +(declare-fun qreva (listOfInt listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (rev nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (and + (rev B D) + (append D (cons-listOfInt A nil-listOfInt) C) + ) + (rev (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (qreva nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (qreva B (cons-listOfInt A C) D) + (qreva (cons-listOfInt A B) C D) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C Int) (D Int) (E listOfInt) (F listOfInt) (G listOfInt) ) + (=> + (and + (= (+ C D) A) + (not (= A B)) + (qreva E F G) + (len G B) + (len E C) + (len F D) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/clam/goal72.smt2 b/bench_horn_adt/benchmarks-vmcai2015/clam/goal72.smt2 new file mode 100644 index 000000000..eed806aa1 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/clam/goal72.smt2 @@ -0,0 +1,37 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun ff () Bool) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Bool) (B listOfInt) (C listOfInt) (D listOfInt) (E listOfInt) (F listOfInt) (G listOfInt) (H listOfInt) ) + (=> + (and + (append B C D) + (append D E F) + (append C E G) + (append B G H) + (not (= F H)) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/clam/goal8.smt2 b/bench_horn_adt/benchmarks-vmcai2015/clam/goal8.smt2 new file mode 100644 index 000000000..cde050f59 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/clam/goal8.smt2 @@ -0,0 +1,52 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun drop (Int listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (drop A nil-listOfInt nil-listOfInt) + ) +) +(assert + (forall ( (A Int) (B listOfInt) ) + (=> + (= A 0) + (drop A B B) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D listOfInt) (E Int) ) + (=> + (and + (= A (+ 1 E)) + (>= E 0) + (drop E C D) + ) + (drop A (cons-listOfInt B C) D) + ) + ) +) +(assert + (forall ( (A Bool) (B Int) (C Int) (D listOfInt) (E listOfInt) (F listOfInt) (G listOfInt) (H listOfInt) ) + (=> + (and + (>= B 0) + (>= C 0) + (drop C D E) + (drop B E F) + (drop B D G) + (drop C G H) + (not (= F H)) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/clam/goal9.smt2 b/bench_horn_adt/benchmarks-vmcai2015/clam/goal9.smt2 new file mode 100644 index 000000000..7ac66f253 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/clam/goal9.smt2 @@ -0,0 +1,55 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun drop (Int listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (drop A nil-listOfInt nil-listOfInt) + ) +) +(assert + (forall ( (A Int) (B listOfInt) ) + (=> + (= A 0) + (drop A B B) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D listOfInt) (E Int) ) + (=> + (and + (= A (+ 1 E)) + (>= E 0) + (drop E C D) + ) + (drop A (cons-listOfInt B C) D) + ) + ) +) +(assert + (forall ( (A Bool) (B Int) (C Int) (D Int) (E listOfInt) (F listOfInt) (G listOfInt) (H listOfInt) (I listOfInt) (J listOfInt) (K listOfInt) ) + (=> + (and + (>= B 0) + (>= C 0) + (>= D 0) + (drop C E F) + (drop B F G) + (drop D G H) + (drop D E I) + (drop B I J) + (drop C J K) + (not (= H K)) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal1.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal1.smt2 new file mode 100644 index 000000000..39b766777 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal1.smt2 @@ -0,0 +1,60 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) +(declare-datatypes ((queueOfInt 0) ) +(((queue-queueOfInt (front-queueOfInt listOfInt) (back-queueOfInt listOfInt)) ))) + +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun len (listOfInt Int) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D listOfInt) (E listOfInt) (F Int) ) + (=> + (and + (not (= F (+ A B))) + (len D B) + (len C A) + (append C D E) + (len E F) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal10.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal10.smt2 new file mode 100644 index 000000000..1def4eac2 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal10.smt2 @@ -0,0 +1,91 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) +(declare-datatypes ((queueOfInt 0) ) +(((queue-queueOfInt (front-queueOfInt listOfInt) (back-queueOfInt listOfInt)) ))) + +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun butlast (listOfInt listOfInt) Bool) +(declare-fun len (listOfInt Int) Bool) +(declare-fun qreva (listOfInt listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (butlast nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) ) + (butlast (cons-listOfInt A nil-listOfInt) nil-listOfInt) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D listOfInt) ) + (=> + (butlast (cons-listOfInt B C) D) + (butlast (cons-listOfInt A (cons-listOfInt B C)) (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (qreva nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (qreva B (cons-listOfInt A C) D) + (qreva (cons-listOfInt A B) C D) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C listOfInt) (D listOfInt) (E listOfInt) (F listOfInt) (G listOfInt) ) + (=> + (and + (qreva A B D) + (qreva D C E) + (append A C F) + (qreva B F G) + (not (= E G)) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal11.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal11.smt2 new file mode 100644 index 000000000..3aeb78816 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal11.smt2 @@ -0,0 +1,40 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) +(declare-datatypes ((queueOfInt 0) ) +(((queue-queueOfInt (front-queueOfInt listOfInt) (back-queueOfInt listOfInt)) ))) + +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Bool) (B listOfInt) (C listOfInt) (D listOfInt) (E listOfInt) (F listOfInt) (G listOfInt) (H listOfInt) ) + (=> + (and + (append B C D) + (append E D F) + (append E B G) + (append G C H) + (not (= F H)) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal12.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal12.smt2 new file mode 100644 index 000000000..e3ca9f5ca --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal12.smt2 @@ -0,0 +1,124 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) +(declare-datatypes ((queueOfInt 0) ) +(((queue-queueOfInt (front-queueOfInt listOfInt) (back-queueOfInt listOfInt)) ))) + +(declare-fun len (listOfInt Int) Bool) +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun queuetolst (queueOfInt listOfInt) Bool) +(declare-fun qrev (listOfInt listOfInt) Bool) +(declare-fun qreva (listOfInt listOfInt listOfInt) Bool) +(declare-fun amortizequeue (listOfInt listOfInt queueOfInt) Bool) + +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (qreva nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (qreva B (cons-listOfInt A C) D) + (qreva (cons-listOfInt A B) C D) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) ) + (=> + (qreva A nil-listOfInt B) + (qrev A B) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (and + (qrev B D) + (append A D C) + ) + (queuetolst (queue-queueOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C Bool) (D Int) (E Int) ) + (=> + (and + (<= D E) + (len A E) + (len B D) + ) + (amortizequeue A B (queue-queueOfInt A B) ) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C listOfInt) (D Bool) (E Int) (F Int) (G listOfInt) ) + (=> + (and + (> E F) + (len A F) + (len B E) + (append A G C) + (qrev B G) + ) + (amortizequeue A B (queue-queueOfInt C nil-listOfInt) ) + ) + ) +) + +(assert + (forall ( (A Bool) (B listOfInt) (C listOfInt) (D listOfInt) (E queueOfInt) (F listOfInt) ) + (=> + (and + (queuetolst (queue-queueOfInt B C) D) + (amortizequeue B C E) + (queuetolst E F) + (not (= D F)) + ) + ff + ) + ) +) + + +(assert (not ff)) +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal13.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal13.smt2 new file mode 100644 index 000000000..3552ff09f --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal13.smt2 @@ -0,0 +1,156 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) +(declare-datatypes ((queueOfInt 0) ) +(((queue-queueOfInt (front-queueOfInt listOfInt) (back-queueOfInt listOfInt)) ))) + +(declare-fun len (listOfInt Int) Bool) +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun queuetolst (queueOfInt listOfInt) Bool) +(declare-fun qrev (listOfInt listOfInt) Bool) +(declare-fun qreva (listOfInt listOfInt listOfInt) Bool) +(declare-fun amortizequeue (listOfInt listOfInt queueOfInt) Bool) +(declare-fun butlast (listOfInt listOfInt) Bool) +(declare-fun qpop (queueOfInt queueOfInt) Bool) + +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (qreva nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (qreva B (cons-listOfInt A C) D) + (qreva (cons-listOfInt A B) C D) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) ) + (=> + (qreva A nil-listOfInt B) + (qrev A B) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (and + (qrev B D) + (append A D C) + ) + (queuetolst (queue-queueOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C Bool) (D Int) (E Int) ) + (=> + (and + (<= D E) + (len A E) + (len B D) + ) + (amortizequeue A B (queue-queueOfInt A B) ) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C listOfInt) (D Bool) (E Int) (F Int) (G listOfInt) ) + (=> + (and + (> E F) + (len A F) + (len B E) + (append A G C) + (qrev B G) + ) + (amortizequeue A B (queue-queueOfInt C nil-listOfInt) ) + ) + ) +) +(assert + (butlast nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) ) + (butlast (cons-listOfInt A nil-listOfInt) nil-listOfInt) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D listOfInt) ) + (=> + (butlast (cons-listOfInt B C) D) + (butlast (cons-listOfInt A (cons-listOfInt B C)) (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A listOfInt) (B Int) (C listOfInt) ) + (qpop (queue-queueOfInt A (cons-listOfInt B C)) (queue-queueOfInt A C) ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) ) + (=> + (butlast A B) + (qpop (queue-queueOfInt A nil-listOfInt) (queue-queueOfInt B nil-listOfInt) ) + ) + ) +) + +(assert + (forall ( (A Bool) (B listOfInt) (C listOfInt) (D listOfInt) (E listOfInt) (F queueOfInt) (G listOfInt) ) + (=> + (and + (queuetolst (queue-queueOfInt B C) D) + (butlast D E) + (qpop (queue-queueOfInt B C) F) + (queuetolst F G) + (not (= E G)) + ) + ff + ) + ) +) + + +(assert (not ff)) +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal14.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal14.smt2 new file mode 100644 index 000000000..052c98f02 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal14.smt2 @@ -0,0 +1,164 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) +(declare-datatypes ((queueOfInt 0) ) +(((queue-queueOfInt (front-queueOfInt listOfInt) (back-queueOfInt listOfInt)) ))) + +(declare-fun len (listOfInt Int) Bool) +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun queuetolst (queueOfInt listOfInt) Bool) +(declare-fun qrev (listOfInt listOfInt) Bool) +(declare-fun qreva (listOfInt listOfInt listOfInt) Bool) +(declare-fun amortizequeue (listOfInt listOfInt queueOfInt) Bool) +(declare-fun butlast (listOfInt listOfInt) Bool) +(declare-fun qpop (queueOfInt queueOfInt) Bool) +(declare-fun enqueue (queueOfInt Int queueOfInt) Bool) + +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (qreva nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (qreva B (cons-listOfInt A C) D) + (qreva (cons-listOfInt A B) C D) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) ) + (=> + (qreva A nil-listOfInt B) + (qrev A B) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (and + (qrev B D) + (append A D C) + ) + (queuetolst (queue-queueOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C Bool) (D Int) (E Int) ) + (=> + (and + (<= D E) + (len A E) + (len B D) + ) + (amortizequeue A B (queue-queueOfInt A B) ) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C listOfInt) (D Bool) (E Int) (F Int) (G listOfInt) ) + (=> + (and + (> E F) + (len A F) + (len B E) + (append A G C) + (qrev B G) + ) + (amortizequeue A B (queue-queueOfInt C nil-listOfInt) ) + ) + ) +) +(assert + (butlast nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) ) + (butlast (cons-listOfInt A nil-listOfInt) nil-listOfInt) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D listOfInt) ) + (=> + (butlast (cons-listOfInt B C) D) + (butlast (cons-listOfInt A (cons-listOfInt B C)) (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A listOfInt) (B Int) (C listOfInt) ) + (qpop (queue-queueOfInt A (cons-listOfInt B C)) (queue-queueOfInt A C) ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) ) + (=> + (butlast A B) + (qpop (queue-queueOfInt A nil-listOfInt) (queue-queueOfInt B nil-listOfInt) ) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C Int) (D queueOfInt) ) + (=> + (amortizequeue A (cons-listOfInt C B) D) + (enqueue (queue-queueOfInt A B) C D) + ) + ) +) +(assert + (forall ( (A Bool) (B listOfInt) (C listOfInt) (D listOfInt) (E Int) (F listOfInt) (G queueOfInt) (H listOfInt) ) + (=> + (and + (queuetolst (queue-queueOfInt B C) D) + (append D (cons-listOfInt E nil-listOfInt) F) + (enqueue (queue-queueOfInt B C) E G) + (queuetolst G H) + (not (= F H)) + ) + ff + ) + ) +) + + +(assert (not ff)) +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal15.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal15.smt2 new file mode 100644 index 000000000..69e516549 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal15.smt2 @@ -0,0 +1,122 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) +(declare-datatypes ((queueOfInt 0) ) +(((queue-queueOfInt (front-queueOfInt listOfInt) (back-queueOfInt listOfInt)) ))) + +(declare-fun len (listOfInt Int) Bool) +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun qrev (listOfInt listOfInt) Bool) +(declare-fun qreva (listOfInt listOfInt listOfInt) Bool) +(declare-fun amortizequeue (listOfInt listOfInt queueOfInt) Bool) +(declare-fun isamortized (queueOfInt Bool) Bool) + +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (qreva nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (qreva B (cons-listOfInt A C) D) + (qreva (cons-listOfInt A B) C D) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) ) + (=> + (qreva A nil-listOfInt B) + (qrev A B) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C Bool) (D Int) (E Int) ) + (=> + (and + (<= D E) + (len A E) + (len B D) + ) + (amortizequeue A B (queue-queueOfInt A B) ) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C listOfInt) (D Bool) (E Int) (F Int) (G listOfInt) ) + (=> + (and + (> E F) + (len A F) + (len B E) + (append A G C) + (qrev B G) + ) + (amortizequeue A B (queue-queueOfInt C nil-listOfInt) ) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C Bool) (D Int) (E Int) ) + (=> + (and + (len B D) + (len A E) + ) + (isamortized (queue-queueOfInt A B) (<= D E)) + ) + ) +) +(assert + (forall ( (A Bool) (B listOfInt) (C listOfInt) (D queueOfInt) ) + (=> + (and + (not (= A true)) + (amortizequeue B C D) + (isamortized D A) + ) + ff + ) + ) +) + + +(assert (not ff)) +(check-sat) \ No newline at end of file diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal2.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal2.smt2 new file mode 100644 index 000000000..512e3c489 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal2.smt2 @@ -0,0 +1,74 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) +(declare-datatypes ((queueOfInt 0) ) +(((queue-queueOfInt (front-queueOfInt listOfInt) (back-queueOfInt listOfInt)) ))) + +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun len (listOfInt Int) Bool) +(declare-fun qreva (listOfInt listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (qreva nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (qreva B (cons-listOfInt A C) D) + (qreva (cons-listOfInt A B) C D) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C Int) (D listOfInt) (E listOfInt) (F listOfInt) (H Int) ) + (=> + (and + (qreva D E F) + (len E B) + (len D A) + (len F C) + (= H (+ A B)) + (not (= C H)) + ) + ff + ) + ) +) +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal3.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal3.smt2 new file mode 100644 index 000000000..e9663da32 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal3.smt2 @@ -0,0 +1,81 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) +(declare-datatypes ((queueOfInt 0) ) +(((queue-queueOfInt (front-queueOfInt listOfInt) (back-queueOfInt listOfInt)) ))) + +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun qrev (listOfInt listOfInt) Bool) +(declare-fun len (listOfInt Int) Bool) +(declare-fun qreva (listOfInt listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (qreva nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (qreva B (cons-listOfInt A C) D) + (qreva (cons-listOfInt A B) C D) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) ) + (=> + (qreva A nil-listOfInt B) + (qrev A B) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D listOfInt) ) + (=> + (and + (not (= A B)) + (qrev C D) + (len D B) + (len C A) + ) + ff + ) + ) +) +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal4.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal4.smt2 new file mode 100644 index 000000000..2f3fca22f --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal4.smt2 @@ -0,0 +1,58 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) +(declare-datatypes ((queueOfInt 0) ) +(((queue-queueOfInt (front-queueOfInt listOfInt) (back-queueOfInt listOfInt)) ))) + +(declare-fun qlen (queueOfInt Int) Bool) +(declare-fun len (listOfInt Int) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A listOfInt) (B listOfInt) (C Int) (D Int) (E Int) ) + (=> + (and + (len A D) + (len B E) + ) + (qlen (queue-queueOfInt A B) (+ D E)) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C Int) (D Int) (E listOfInt) (F listOfInt) ) + (=> + (and + (not (= A B)) + (= (+ C D) B) + (len E C) + (len F D) + (qlen (queue-queueOfInt E F) A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal5.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal5.smt2 new file mode 100644 index 000000000..0293d1745 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal5.smt2 @@ -0,0 +1,62 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) +(declare-datatypes ((queueOfInt 0) ) +(((queue-queueOfInt (front-queueOfInt listOfInt) (back-queueOfInt listOfInt)) ))) + +(declare-fun len (listOfInt Int) Bool) +(declare-fun butlast (listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (butlast nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) ) + (butlast (cons-listOfInt A nil-listOfInt) nil-listOfInt) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D listOfInt) ) + (=> + (butlast (cons-listOfInt B C) D) + (butlast (cons-listOfInt A (cons-listOfInt B C)) (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C Int) (D listOfInt) (E listOfInt) ) + (=> + (and + (not (= (- A B) 1)) + (butlast (cons-listOfInt C D) E) + (len E B) + (len (cons-listOfInt C D) A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal6.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal6.smt2 new file mode 100644 index 000000000..56058c62d --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal6.smt2 @@ -0,0 +1,133 @@ +; Automatically generated by map2smt + +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) +(declare-datatypes ((queueOfInt 0) ) +(((queue-queueOfInt (front-queueOfInt listOfInt) (back-queueOfInt listOfInt)) ))) + +(declare-fun qreva (listOfInt listOfInt listOfInt) Bool) +(declare-fun qrev (listOfInt listOfInt) Bool) +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun qlen (queueOfInt Int) Bool) +(declare-fun len (listOfInt Int) Bool) +(declare-fun amortizequeue (listOfInt listOfInt queueOfInt) Bool) +(declare-fun enqueue (queueOfInt Int queueOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A listOfInt) ) + (qreva nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (qreva B (cons-listOfInt A C) D) + (qreva (cons-listOfInt A B) C D) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C Int) (D Int) (E Int) ) + (=> + (and + (len A D) + (len B E) + ) + (qlen (queue-queueOfInt A B) (+ D E) ) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) ) + (=> + (qreva A nil-listOfInt B) + (qrev A B) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C Bool) (D Int) (E Int) ) + (=> + (and + (<= D E) + (len A E) + (len B D) + ) + (amortizequeue A B (queue-queueOfInt A B) ) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C listOfInt) (D Bool) (E Int) (F Int) (G listOfInt) ) + (=> + (and + (> E F) + (len A F) + (len B E) + (append A G C) + (qrev B G) + ) + (amortizequeue A B (queue-queueOfInt C nil-listOfInt) ) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C Int) (D queueOfInt) ) + (=> + (amortizequeue A (cons-listOfInt C B) D) + (enqueue (queue-queueOfInt A B) C D) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C queueOfInt) (D Int) (E queueOfInt) (F Int) ) + (=> + (and + (not (= A F)) + (enqueue C D E) + (qlen E A) + (qlen C B) + (= F (+ 1 B)) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal7.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal7.smt2 new file mode 100644 index 000000000..e53d5846f --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal7.smt2 @@ -0,0 +1,204 @@ +; Automatically generated by map2smt + +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) +(declare-datatypes ((queueOfInt 0) ) +(((queue-queueOfInt (front-queueOfInt listOfInt) (back-queueOfInt listOfInt)) ))) + +(declare-fun qreva (listOfInt listOfInt listOfInt) Bool) +(declare-fun qrev (listOfInt listOfInt) Bool) +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun qlen (queueOfInt Int) Bool) +(declare-fun len (listOfInt Int) Bool) +(declare-fun isamortized (queueOfInt Bool) Bool) +(declare-fun isempty (queueOfInt Bool) Bool) +(declare-fun amortizequeue (listOfInt listOfInt queueOfInt) Bool) +(declare-fun enqueue (queueOfInt Int queueOfInt) Bool) +(declare-fun butlast (listOfInt listOfInt) Bool) +(declare-fun qpop (queueOfInt queueOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A listOfInt) ) + (qreva nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (qreva B (cons-listOfInt A C) D) + (qreva (cons-listOfInt A B) C D) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C Int) (D Int) (E Int) ) + (=> + (and + (len A D) + (len B E) + ) + (qlen (queue-queueOfInt A B) (+ D E) ) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) ) + (=> + (qreva A nil-listOfInt B) + (qrev A B) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C Bool) (D Int) (E Int) ) + (=> + (and + (<= D E) + (len A E) + (len B D) + ) + (amortizequeue A B (queue-queueOfInt A B) ) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C listOfInt) (D Bool) (E Int) (F Int) (G listOfInt) ) + (=> + (and + (> E F) + (len A F) + (len B E) + (append A G C) + (qrev B G) + ) + (amortizequeue A B (queue-queueOfInt C nil-listOfInt) ) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C Int) (D queueOfInt) ) + (=> + (amortizequeue A (cons-listOfInt C B) D) + (enqueue (queue-queueOfInt A B) C D) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) (C Bool) (D Int) (E Int) ) + (=> + (and + (len B D) + (len A E) + ) + (isamortized (queue-queueOfInt A B) (<= D E)) + ) + ) +) +(assert + (forall ( (A Bool) ) + (=> + (= A true) + (isempty (queue-queueOfInt nil-listOfInt nil-listOfInt) A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D Bool) ) + (=> + (= D false) + (isempty (queue-queueOfInt (cons-listOfInt A B) C) D) + ) + ) +) +(assert + (forall ( (A listOfInt) (B Int) (C listOfInt) (D Bool) ) + (=> + (= D false) + (isempty (queue-queueOfInt A (cons-listOfInt B C)) D) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (butlast nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) ) + (butlast (cons-listOfInt A nil-listOfInt) nil-listOfInt) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D listOfInt) ) + (=> + (butlast (cons-listOfInt B C) D) + (butlast (cons-listOfInt A (cons-listOfInt B C)) (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A listOfInt) (B Int) (C listOfInt) ) + (qpop (queue-queueOfInt A (cons-listOfInt B C)) (queue-queueOfInt A C) ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) ) + (=> + (butlast A B) + (qpop (queue-queueOfInt A nil-listOfInt) (queue-queueOfInt B nil-listOfInt) ) + ) + ) +) +(assert + (forall ( (A Bool) (B Bool) (C Int) (D Int) (E queueOfInt) (F queueOfInt) ) + (=> + (and + (= A true) + (= B false) + (not (= (- C D) 1)) + (qpop E F) + (qlen F D) + (qlen E C) + (isamortized E A) + (isempty E B) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal8.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal8.smt2 new file mode 100644 index 000000000..fe83c7b52 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal8.smt2 @@ -0,0 +1,37 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) +(declare-datatypes ((queueOfInt 0) ) +(((queue-queueOfInt (front-queueOfInt listOfInt) (back-queueOfInt listOfInt)) ))) + +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A listOfInt) (B listOfInt) ) + (=> + (and + (append A nil-listOfInt B) + (not (= A B)) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal9.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal9.smt2 new file mode 100644 index 000000000..12c3ae175 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/amortize-queue/amortize-queue-goal9.smt2 @@ -0,0 +1,77 @@ +(set-logic HORN) + +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) +(declare-datatypes ((queueOfInt 0) ) +(((queue-queueOfInt (front-queueOfInt listOfInt) (back-queueOfInt listOfInt)) ))) + +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun butlast (listOfInt listOfInt) Bool) +(declare-fun len (listOfInt Int) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (butlast nil-listOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) ) + (butlast (cons-listOfInt A nil-listOfInt) nil-listOfInt) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D listOfInt) ) + (=> + (butlast (cons-listOfInt B C) D) + (butlast (cons-listOfInt A (cons-listOfInt B C)) (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Bool) (B listOfInt) (C Int) (D listOfInt) (E listOfInt) (F listOfInt) (G listOfInt) (H listOfInt) ) + (=> + (and + (append B (cons-listOfInt C D) E) + (butlast E F) + (butlast (cons-listOfInt C D) G) + (append B G H) + (not (= F H)) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal1.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal1.smt2 new file mode 100644 index 000000000..b191a69d5 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal1.smt2 @@ -0,0 +1,75 @@ +(set-logic HORN) + +(declare-datatypes ((treeOfInt 0) ) +(((node-treeOfInt (data-treeOfInt Int) (left-treeOfInt treeOfInt) (right-treeOfInt treeOfInt)) (leaf-treeOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun tinsert (treeOfInt Int treeOfInt) Bool) +(declare-fun tsize (treeOfInt Int) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (tsize leaf-treeOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Int) (F Int) (G Int) ) + (=> + (and + (= D (+ 1 E)) + (= (+ F G) E) + (tsize B F) + (tsize C G) + ) + (tsize (node-treeOfInt A B C) D) + ) + ) +) +(assert + (forall ( (A Int) ) + (tinsert leaf-treeOfInt A (node-treeOfInt A leaf-treeOfInt leaf-treeOfInt) ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (<= A (- D 1)) + (tinsert C D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A B E) ) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (>= A D) + (tinsert B D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A E C) ) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (not (= (- A B) 1)) + (tinsert C D E) + (tsize E A) + (tsize C B) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal10.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal10.smt2 new file mode 100644 index 000000000..f468d74d1 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal10.smt2 @@ -0,0 +1,123 @@ +(set-logic HORN) + +(declare-datatypes ((treeOfInt 0) ) +(((node-treeOfInt (data-treeOfInt Int) (left-treeOfInt treeOfInt) (right-treeOfInt treeOfInt)) (leaf-treeOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun tinsert (treeOfInt Int treeOfInt) Bool) +(declare-fun tmember (treeOfInt Int Bool) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (tinsert leaf-treeOfInt A (node-treeOfInt A leaf-treeOfInt leaf-treeOfInt) ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (<= A (- D 1)) + (tinsert C D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A B E) ) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (>= A D) + (tinsert B D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A E C) ) + ) + ) +) +(assert + (forall ( (A Int) (B Bool) ) + (=> + (= B false) + (tmember leaf-treeOfInt A B) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Bool) ) + (=> + (= D true) + (tmember (node-treeOfInt A B C) A D) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) (F Bool) ) + (=> + (and + (>= (- D A) 1) + (tmember C D E) + (< A D) + ) + (tmember (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) (F Bool) ) + (=> + (and + (<= (- D A) (- 1)) + (tmember B D E) + (>= A D) + ) + (tmember (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Bool) (B Bool) (C Int) (D Int) (E treeOfInt) (F treeOfInt) ) + (=> + (and + (= A true) + (= B false) + (not (= C D)) + (tmember E D B) + (tinsert E C F) + (tmember F D A) + ) + ff + ) + ) +) +(assert + (forall ( (A Bool) (B Bool) (C treeOfInt) (D Int) (E Int) (F treeOfInt) ) + (=> + (and + (not (= A true)) + (= B true) + (tmember C D B) + (tinsert C E F) + (tmember F D A) + ) + ff + ) + ) +) +(assert + (forall ( (A Bool) (B treeOfInt) (C Int) (D Bool) (E treeOfInt) ) + (=> + (and + (not (= A true)) + (tmember B C D) + (tinsert B C E) + (tmember E C A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal12.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal12.smt2 new file mode 100644 index 000000000..3ac644ee6 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal12.smt2 @@ -0,0 +1,131 @@ +(set-logic HORN) + +(declare-datatypes ((treeOfInt 0) ) +(((node-treeOfInt (data-treeOfInt Int) (left-treeOfInt treeOfInt) (right-treeOfInt treeOfInt)) (leaf-treeOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun tmember (treeOfInt Int Bool) Bool) +(declare-fun tcontains (treeOfInt Int Bool) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) (B Bool) ) + (=> + (= B false) + (tcontains leaf-treeOfInt A B) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Bool) ) + (=> + (= D true) + (tcontains (node-treeOfInt A B C) A D) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E true) + (tcontains B D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E true) + (tcontains C D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E false) + (>= (- D A) 1) + (tcontains B D E) + (tcontains C D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E false) + (<= (- D A) (- 1)) + (tcontains B D E) + (tcontains C D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B Bool) ) + (=> + (= B false) + (tmember leaf-treeOfInt A B) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Bool) ) + (=> + (= D true) + (tmember (node-treeOfInt A B C) A D) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) (F Bool) ) + (=> + (and + (>= (- D A) 1) + (tmember C D E) + (< A D) + ) + (tmember (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) (F Bool) ) + (=> + (and + (<= (- D A) (- 1)) + (tmember B D E) + (>= A D) + ) + (tmember (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Bool) (B Bool) (C treeOfInt) (D Int) ) + (=> + (and + (= A true) + (not (= B true)) + (tcontains C D B) + (tmember C D A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal13.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal13.smt2 new file mode 100644 index 000000000..24a47d10b --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal13.smt2 @@ -0,0 +1,128 @@ +(set-logic HORN) + +(declare-datatypes ((treeOfInt 0) ) +(((node-treeOfInt (data-treeOfInt Int) (left-treeOfInt treeOfInt) (right-treeOfInt treeOfInt)) (leaf-treeOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun tinsert (treeOfInt Int treeOfInt) Bool) +(declare-fun tsize (treeOfInt Int) Bool) +(declare-fun tinsertall (treeOfInt listOfInt treeOfInt) Bool) +(declare-fun len (listOfInt Int) Bool) +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (tsize leaf-treeOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Int) (F Int) (G Int) ) + (=> + (and + (= D (+ 1 E)) + (= (+ F G) E) + (tsize B F) + (tsize C G) + ) + (tsize (node-treeOfInt A B C) D) + ) + ) +) +(assert + (forall ( (A Int) ) + (tinsert leaf-treeOfInt A (node-treeOfInt A leaf-treeOfInt leaf-treeOfInt) ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (<= A (- D 1)) + (tinsert C D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A B E) ) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (>= A D) + (tinsert B D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A E C) ) + ) + ) +) +(assert + (forall ( (A treeOfInt) ) + (tinsertall A nil-listOfInt A) + ) +) +(assert + (forall ( (A treeOfInt) (B Int) (C listOfInt) (D treeOfInt) (E treeOfInt) ) + (=> + (and + (tinsertall A C E) + (tinsert E B D) + ) + (tinsertall A (cons-listOfInt B C) D) + ) + ) +) +(assert + (forall ( (A Bool) (B treeOfInt) (C Int) (D treeOfInt) (E listOfInt) (F treeOfInt) (G listOfInt) (H treeOfInt) ) + (=> + (and + (= A false) + (tinsert B C D) + (tinsertall D E F) + (append E (cons-listOfInt C nil-listOfInt) G) + (tinsertall B G H) + (not (= F H)) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal15.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal15.smt2 new file mode 100644 index 000000000..e395480b3 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal15.smt2 @@ -0,0 +1,188 @@ +(set-logic HORN) + +(declare-datatypes ((treeOfInt 0) ) +(((node-treeOfInt (data-treeOfInt Int) (left-treeOfInt treeOfInt) (right-treeOfInt treeOfInt)) (leaf-treeOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun tinsert (treeOfInt Int treeOfInt) Bool) +(declare-fun tinsertall (treeOfInt listOfInt treeOfInt) Bool) +(declare-fun tcontains (treeOfInt Int Bool) Bool) +(declare-fun mem (Int listOfInt Bool) Bool) + +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) (B Bool) ) + (=> + (= B false) + (mem A nil-listOfInt B) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Bool) ) + (=> + (= C true) + (mem A (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D Bool) ) + (=> + (and + (= D true) + (mem A C D) + ) + (mem A (cons-listOfInt B C) D) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D Bool) ) + (=> + (and + (= D false) + (>= (- B A) 1) + (mem A C D) + ) + (mem A (cons-listOfInt B C) D) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D Bool) ) + (=> + (and + (= D false) + (<= (- B A) (- 1)) + (mem A C D) + ) + (mem A (cons-listOfInt B C) D) + ) + ) +) +(assert + (forall ( (A Int) ) + (tinsert leaf-treeOfInt A (node-treeOfInt A leaf-treeOfInt leaf-treeOfInt) ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (<= A (- D 1)) + (tinsert C D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A B E) ) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (>= A D) + (tinsert B D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A E C) ) + ) + ) +) +(assert + (forall ( (A treeOfInt) ) + (tinsertall A nil-listOfInt A) + ) +) +(assert + (forall ( (A treeOfInt) (B Int) (C listOfInt) (D treeOfInt) (E treeOfInt) ) + (=> + (and + (tinsertall A C E) + (tinsert E B D) + ) + (tinsertall A (cons-listOfInt B C) D) + ) + ) +) +(assert + (forall ( (A Int) (B Bool) ) + (=> + (= B false) + (tcontains leaf-treeOfInt A B) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Bool) ) + (=> + (= D true) + (tcontains (node-treeOfInt A B C) A D) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E true) + (tcontains B D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E true) + (tcontains C D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E false) + (>= (- D A) 1) + (tcontains B D E) + (tcontains C D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E false) + (<= (- D A) (- 1)) + (tcontains B D E) + (tcontains C D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Bool) (B Bool) (C Int) (D listOfInt) (E treeOfInt) ) + (=> + (and + (not (= A B)) + (mem C D A) + (tinsertall leaf-treeOfInt D E) + (tcontains E C B) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal16.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal16.smt2 new file mode 100644 index 000000000..17e891196 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal16.smt2 @@ -0,0 +1,141 @@ +(set-logic HORN) + +(declare-datatypes ((treeOfInt 0) ) +(((node-treeOfInt (data-treeOfInt Int) (left-treeOfInt treeOfInt) (right-treeOfInt treeOfInt)) (leaf-treeOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun tinsert (treeOfInt Int treeOfInt) Bool) +(declare-fun tinsertall (treeOfInt listOfInt treeOfInt) Bool) +(declare-fun mem (Int listOfInt Bool) Bool) +(declare-fun append (listOfInt listOfInt listOfInt) Bool) + +(declare-fun ff () Bool) + +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (forall ( (A Int) (B Bool) ) + (=> + (= B false) + (mem A nil-listOfInt B) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Bool) ) + (=> + (= C true) + (mem A (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D Bool) ) + (=> + (and + (= D true) + (mem A C D) + ) + (mem A (cons-listOfInt B C) D) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D Bool) ) + (=> + (and + (= D false) + (>= (- B A) 1) + (mem A C D) + ) + (mem A (cons-listOfInt B C) D) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D Bool) ) + (=> + (and + (= D false) + (<= (- B A) (- 1)) + (mem A C D) + ) + (mem A (cons-listOfInt B C) D) + ) + ) +) +(assert + (forall ( (A Bool) (B Bool) (C Bool) (D listOfInt) (E listOfInt) (F listOfInt) (G Int) ) + (=> + (and + (= A true) + (not (= B true)) + (= C false) + (append D E F) + (mem G F A) + (mem G D B) + (mem G E C) + ) + ff + ) + ) +) +(assert + (forall ( (A Bool) (B Bool) (C Bool) (D listOfInt) (E listOfInt) (F listOfInt) (G Int) ) + (=> + (and + (= A true) + (= B false) + (not (= C true)) + (append D E F) + (mem G F A) + (mem G D B) + (mem G E C) + ) + ff + ) + ) +) +(assert + (forall ( (A Bool) (B Bool) (C listOfInt) (D listOfInt) (E listOfInt) (F Int) ) + (=> + (and + (not (= A true)) + (= B true) + (append C D E) + (mem F E A) + (mem F C B) + ) + ff + ) + ) +) +(assert + (forall ( (A Bool) (B Bool) (C listOfInt) (D listOfInt) (E listOfInt) (F Int) ) + (=> + (and + (not (= A true)) + (= B true) + (append C D E) + (mem F E A) + (mem F D B) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal18.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal18.smt2 new file mode 100644 index 000000000..747a9a501 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal18.smt2 @@ -0,0 +1,176 @@ +(set-logic HORN) + +(declare-datatypes ((treeOfInt 0) ) +(((node-treeOfInt (data-treeOfInt Int) (left-treeOfInt treeOfInt) (right-treeOfInt treeOfInt)) (leaf-treeOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun tinsert (treeOfInt Int treeOfInt) Bool) +(declare-fun tinsertall (treeOfInt listOfInt treeOfInt) Bool) +(declare-fun mem (Int listOfInt Bool) Bool) +(declare-fun append (listOfInt listOfInt listOfInt) Bool) +(declare-fun content (treeOfInt listOfInt) Bool) +(declare-fun tcontains (treeOfInt Int Bool) Bool) + + +(declare-fun ff () Bool) + +(assert + (forall ( (A listOfInt) ) + (append nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C listOfInt) (D listOfInt) ) + (=> + (append B C D) + (append (cons-listOfInt A B) C (cons-listOfInt A D)) + ) + ) +) +(assert + (content leaf-treeOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D listOfInt) (E listOfInt) (F listOfInt) ) + (=> + (and + (content B E) + (content C F) + (append E (cons-listOfInt A F) D) + ) + (content (node-treeOfInt A B C) D) + ) + ) +) +(assert + (forall ( (A Int) (B Bool) ) + (=> + (= B false) + (mem A nil-listOfInt B) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Bool) ) + (=> + (= C true) + (mem A (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D Bool) ) + (=> + (and + (= D true) + (mem A C D) + ) + (mem A (cons-listOfInt B C) D) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D Bool) ) + (=> + (and + (= D false) + (>= (- B A) 1) + (mem A C D) + ) + (mem A (cons-listOfInt B C) D) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C listOfInt) (D Bool) ) + (=> + (and + (= D false) + (<= (- B A) (- 1)) + (mem A C D) + ) + (mem A (cons-listOfInt B C) D) + ) + ) +) +(assert + (forall ( (A Int) (B Bool) ) + (=> + (= B false) + (tcontains leaf-treeOfInt A B) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Bool) ) + (=> + (= D true) + (tcontains (node-treeOfInt A B C) A D) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E true) + (tcontains B D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E true) + (tcontains C D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E false) + (>= (- D A) 1) + (tcontains B D E) + (tcontains C D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E false) + (<= (- D A) (- 1)) + (tcontains B D E) + (tcontains C D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Bool) (B Bool) (C treeOfInt) (D Int) (E listOfInt) ) + (=> + (and + (not (= A B)) + (tcontains C D A) + (content C E) + (mem D E B) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal2.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal2.smt2 new file mode 100644 index 000000000..cc102bfbe --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal2.smt2 @@ -0,0 +1,92 @@ +(set-logic HORN) + +(declare-datatypes ((treeOfInt 0) ) +(((node-treeOfInt (data-treeOfInt Int) (left-treeOfInt treeOfInt) (right-treeOfInt treeOfInt)) (leaf-treeOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun tinsert (treeOfInt Int treeOfInt) Bool) +(declare-fun tsize (treeOfInt Int) Bool) +(declare-fun tinsertall (treeOfInt listOfInt treeOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (tsize leaf-treeOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Int) (F Int) (G Int) ) + (=> + (and + (= D (+ 1 E)) + (= (+ F G) E) + (tsize B F) + (tsize C G) + ) + (tsize (node-treeOfInt A B C) D) + ) + ) +) +(assert + (forall ( (A Int) ) + (tinsert leaf-treeOfInt A (node-treeOfInt A leaf-treeOfInt leaf-treeOfInt) ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (<= A (- D 1)) + (tinsert C D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A B E) ) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (>= A D) + (tinsert B D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A E C) ) + ) + ) +) +(assert + (forall ( (A treeOfInt) ) + (tinsertall A nil-listOfInt A) + ) +) +(assert + (forall ( (A treeOfInt) (B Int) (C listOfInt) (D treeOfInt) (E treeOfInt) ) + (=> + (and + (tinsertall A C E) + (tinsert E B D) + ) + (tinsertall A (cons-listOfInt B C) D) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C treeOfInt) (D listOfInt) (E treeOfInt) ) + (=> + (and + (not (<= A B)) + (tsize C A) + (tinsertall C D E) + (tsize E B) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal3.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal3.smt2 new file mode 100644 index 000000000..d29e85328 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal3.smt2 @@ -0,0 +1,114 @@ +(set-logic HORN) + +(declare-datatypes ((treeOfInt 0) ) +(((node-treeOfInt (data-treeOfInt Int) (left-treeOfInt treeOfInt) (right-treeOfInt treeOfInt)) (leaf-treeOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun tinsert (treeOfInt Int treeOfInt) Bool) +(declare-fun tsize (treeOfInt Int) Bool) +(declare-fun tinsertall (treeOfInt listOfInt treeOfInt) Bool) +(declare-fun len (listOfInt Int) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (tsize leaf-treeOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Int) (F Int) (G Int) ) + (=> + (and + (= D (+ 1 E)) + (= (+ F G) E) + (tsize B F) + (tsize C G) + ) + (tsize (node-treeOfInt A B C) D) + ) + ) +) +(assert + (forall ( (A Int) ) + (tinsert leaf-treeOfInt A (node-treeOfInt A leaf-treeOfInt leaf-treeOfInt) ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (<= A (- D 1)) + (tinsert C D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A B E) ) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (>= A D) + (tinsert B D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A E C) ) + ) + ) +) +(assert + (forall ( (A treeOfInt) ) + (tinsertall A nil-listOfInt A) + ) +) +(assert + (forall ( (A treeOfInt) (B Int) (C listOfInt) (D treeOfInt) (E treeOfInt) ) + (=> + (and + (tinsertall A C E) + (tinsert E B D) + ) + (tinsertall A (cons-listOfInt B C) D) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C Int) (D Int) (E treeOfInt) (F listOfInt) (G treeOfInt) ) + (=> + (and + (not (= A B)) + (= (+ C D) A) + (tinsertall E F G) + (tsize G B) + (tsize E C) + (len F D) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal4.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal4.smt2 new file mode 100644 index 000000000..42b852f1d --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal4.smt2 @@ -0,0 +1,89 @@ +(set-logic HORN) + +(declare-datatypes ((treeOfInt 0) ) +(((node-treeOfInt (data-treeOfInt Int) (left-treeOfInt treeOfInt) (right-treeOfInt treeOfInt)) (leaf-treeOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun tsize (treeOfInt Int) Bool) +(declare-fun tremove (treeOfInt Int treeOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (tremove leaf-treeOfInt A leaf-treeOfInt) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (<= D (- A 1)) + (tremove B D E) + ) + (tremove (node-treeOfInt A B C) D (node-treeOfInt A E C) ) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (<= A (- D 1)) + (tremove C D E) + ) + (tremove (node-treeOfInt A B C) D (node-treeOfInt A B E) ) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) ) + (tremove (node-treeOfInt A leaf-treeOfInt B) A B) + ) +) +(assert + (forall ( (A Int) (B Int) (C treeOfInt) (D treeOfInt) (E treeOfInt) (F treeOfInt) ) + (=> + (tremove (node-treeOfInt B C D) B F) + (tremove (node-treeOfInt A (node-treeOfInt B C D) E) A (node-treeOfInt B F E) ) + ) + ) +) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (tsize leaf-treeOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Int) (F Int) (G Int) ) + (=> + (and + (= D (+ 1 E)) + (= (+ F G) E) + (tsize B F) + (tsize C G) + ) + (tsize (node-treeOfInt A B C) D) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (not (<= A B)) + (tremove C D E) + (tsize E A) + (tsize C B) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal5.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal5.smt2 new file mode 100644 index 000000000..322a89369 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal5.smt2 @@ -0,0 +1,106 @@ +(set-logic HORN) + +(declare-datatypes ((treeOfInt 0) ) +(((node-treeOfInt (data-treeOfInt Int) (left-treeOfInt treeOfInt) (right-treeOfInt treeOfInt)) (leaf-treeOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun tsize (treeOfInt Int) Bool) +(declare-fun tremove (treeOfInt Int treeOfInt) Bool) +(declare-fun tremoveall (treeOfInt listOfInt treeOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (tremove leaf-treeOfInt A leaf-treeOfInt) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (<= D (- A 1)) + (tremove B D E) + ) + (tremove (node-treeOfInt A B C) D (node-treeOfInt A E C) ) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (<= A (- D 1)) + (tremove C D E) + ) + (tremove (node-treeOfInt A B C) D (node-treeOfInt A B E) ) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) ) + (tremove (node-treeOfInt A leaf-treeOfInt B) A B) + ) +) +(assert + (forall ( (A Int) (B Int) (C treeOfInt) (D treeOfInt) (E treeOfInt) (F treeOfInt) ) + (=> + (tremove (node-treeOfInt B C D) B F) + (tremove (node-treeOfInt A (node-treeOfInt B C D) E) A (node-treeOfInt B F E) ) + ) + ) +) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (tsize leaf-treeOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Int) (F Int) (G Int) ) + (=> + (and + (= D (+ 1 E)) + (= (+ F G) E) + (tsize B F) + (tsize C G) + ) + (tsize (node-treeOfInt A B C) D) + ) + ) +) +(assert + (forall ( (A treeOfInt) ) + (tremoveall A nil-listOfInt A) + ) +) +(assert + (forall ( (A treeOfInt) (B Int) (C listOfInt) (D treeOfInt) (E treeOfInt) ) + (=> + (and + (tremove A B E) + (tremoveall E C D) + ) + (tremoveall A (cons-listOfInt B C) D) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C treeOfInt) (D listOfInt) (E treeOfInt) ) + (=> + (and + (not (<= A B)) + (tremoveall C D E) + (tsize E A) + (tsize C B) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal6.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal6.smt2 new file mode 100644 index 000000000..96a064aeb --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal6.smt2 @@ -0,0 +1,139 @@ +(set-logic HORN) + +(declare-datatypes ((treeOfInt 0) ) +(((node-treeOfInt (data-treeOfInt Int) (left-treeOfInt treeOfInt) (right-treeOfInt treeOfInt)) (leaf-treeOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun tinsert (treeOfInt Int treeOfInt) Bool) +(declare-fun tsize (treeOfInt Int) Bool) +(declare-fun tcontains (treeOfInt Int Bool) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (tsize leaf-treeOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Int) (F Int) (G Int) ) + (=> + (and + (= D (+ 1 E)) + (= (+ F G) E) + (tsize B F) + (tsize C G) + ) + (tsize (node-treeOfInt A B C) D) + ) + ) +) +(assert + (forall ( (A Int) ) + (tinsert leaf-treeOfInt A (node-treeOfInt A leaf-treeOfInt leaf-treeOfInt) ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (<= A (- D 1)) + (tinsert C D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A B E) ) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (>= A D) + (tinsert B D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A E C) ) + ) + ) +) +(assert + (forall ( (A Int) (B Bool) ) + (=> + (= B false) + (tcontains leaf-treeOfInt A B) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Bool) ) + (=> + (= D true) + (tcontains (node-treeOfInt A B C) A D) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E true) + (tcontains B D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E true) + (tcontains C D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E false) + (>= (- D A) 1) + (tcontains B D E) + (tcontains C D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E false) + (<= (- D A) (- 1)) + (tcontains B D E) + (tcontains C D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Bool) (B treeOfInt) (C Int) (D treeOfInt) ) + (=> + (and + (not (= A true)) + (tinsert B C D) + (tcontains D C A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal7.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal7.smt2 new file mode 100644 index 000000000..a52cb01f6 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal7.smt2 @@ -0,0 +1,169 @@ +(set-logic HORN) + +(declare-datatypes ((treeOfInt 0) ) +(((node-treeOfInt (data-treeOfInt Int) (left-treeOfInt treeOfInt) (right-treeOfInt treeOfInt)) (leaf-treeOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun tinsert (treeOfInt Int treeOfInt) Bool) +(declare-fun tsize (treeOfInt Int) Bool) +(declare-fun tcontains (treeOfInt Int Bool) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (tsize leaf-treeOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Int) (F Int) (G Int) ) + (=> + (and + (= D (+ 1 E)) + (= (+ F G) E) + (tsize B F) + (tsize C G) + ) + (tsize (node-treeOfInt A B C) D) + ) + ) +) +(assert + (forall ( (A Int) ) + (tinsert leaf-treeOfInt A (node-treeOfInt A leaf-treeOfInt leaf-treeOfInt) ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (<= A (- D 1)) + (tinsert C D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A B E) ) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (>= A D) + (tinsert B D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A E C) ) + ) + ) +) +(assert + (forall ( (A Int) (B Bool) ) + (=> + (= B false) + (tcontains leaf-treeOfInt A B) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Bool) ) + (=> + (= D true) + (tcontains (node-treeOfInt A B C) A D) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E true) + (tcontains B D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E true) + (tcontains C D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E false) + (>= (- D A) 1) + (tcontains B D E) + (tcontains C D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E false) + (<= (- D A) (- 1)) + (tcontains B D E) + (tcontains C D E) + ) + (tcontains (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Bool) (B Bool) (C Int) (D Int) (E treeOfInt) (F treeOfInt) ) + (=> + (and + (= A true) + (= B false) + (not (= C D)) + (tcontains E D B) + (tinsert E C F) + (tcontains F D A) + ) + ff + ) + ) +) +(assert + (forall ( (A Bool) (B Bool) (C treeOfInt) (D Int) (E Int) (F treeOfInt) ) + (=> + (and + (not (= A true)) + (= B true) + (tcontains C D B) + (tinsert C E F) + (tcontains F D A) + ) + ff + ) + ) +) +(assert + (forall ( (A Bool) (B treeOfInt) (C Int) (D Bool) (E treeOfInt) ) + (=> + (and + (not (= A true)) + (tcontains B C D) + (tinsert B C E) + (tcontains E C A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal8.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal8.smt2 new file mode 100644 index 000000000..1365ab7c3 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal8.smt2 @@ -0,0 +1,233 @@ +(set-logic HORN) + +(declare-datatypes ((treeOfInt 0) ) +(((node-treeOfInt (data-treeOfInt Int) (left-treeOfInt treeOfInt) (right-treeOfInt treeOfInt)) (leaf-treeOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun tinsert (treeOfInt Int treeOfInt) Bool) + (declare-fun tsorted (treeOfInt Bool) Bool) +(declare-fun tallleq (treeOfInt Int Bool) Bool) +(declare-fun tallgt (treeOfInt Int Bool) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (tinsert leaf-treeOfInt A (node-treeOfInt A leaf-treeOfInt leaf-treeOfInt) ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (<= A (- D 1)) + (tinsert C D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A B E) ) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (>= A D) + (tinsert B D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A E C) ) + ) + ) +) + +(assert + (forall ( (A Bool) ) + (=> + (= A true) + (tsorted leaf-treeOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Bool) ) + (=> + (and + (= D true) + (tsorted B D) + (tsorted C D) + (tallleq B A D) + (tallgt C A D) + ) + (tsorted (node-treeOfInt A B C) D) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Bool) ) + (=> + (and + (= D false) + (tsorted B D) + ) + (tsorted (node-treeOfInt A B C) D) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Bool) ) + (=> + (and + (= D false) + (tsorted C D) + ) + (tsorted (node-treeOfInt A B C) D) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Bool) ) + (=> + (and + (= D false) + (tallleq B A D) + ) + (tsorted (node-treeOfInt A B C) D) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Bool) ) + (=> + (and + (= D false) + (tallgt C A D) + ) + (tsorted (node-treeOfInt A B C) D) + ) + ) +) + +(assert + (forall ( (A Int) (B Bool) ) + (=> + (= B true) + (tallleq leaf-treeOfInt A B) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E true) + (<= A D) + (tallleq B D E) + (tallleq C D E) + ) + (tallleq (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E false) + (>= A (+ D 1)) + ) + (tallleq (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E false) + (tallleq B D E) + ) + (tallleq (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E false) + (tallleq C D E) + ) + (tallleq (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B Bool) ) + (=> + (= B true) + (tallgt leaf-treeOfInt A B) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E true) + (>= A (+ D 1)) + (tallgt B D E) + (tallgt C D E) + ) + (tallgt (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E false) + (<= A D) + ) + (tallgt (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E false) + (tallgt B D E) + ) + (tallgt (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) ) + (=> + (and + (= E false) + (tallgt C D E) + ) + (tallgt (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Bool) (B Bool) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (= A true) + (not (= B true)) + (tinsert C D E) + (tsorted E B) + (tsorted C A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal9.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal9.smt2 new file mode 100644 index 000000000..092e044b4 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/bsearch-tree/bsearch-tree-goal9.smt2 @@ -0,0 +1,94 @@ +(set-logic HORN) + +(declare-datatypes ((treeOfInt 0) ) +(((node-treeOfInt (data-treeOfInt Int) (left-treeOfInt treeOfInt) (right-treeOfInt treeOfInt)) (leaf-treeOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun tinsert (treeOfInt Int treeOfInt) Bool) +(declare-fun tmember (treeOfInt Int Bool) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (tinsert leaf-treeOfInt A (node-treeOfInt A leaf-treeOfInt leaf-treeOfInt) ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (<= A (- D 1)) + (tinsert C D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A B E) ) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E treeOfInt) ) + (=> + (and + (>= A D) + (tinsert B D E) + ) + (tinsert (node-treeOfInt A B C) D (node-treeOfInt A E C) ) + ) + ) +) +(assert + (forall ( (A Int) (B Bool) ) + (=> + (= B false) + (tmember leaf-treeOfInt A B) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Bool) ) + (=> + (= D true) + (tmember (node-treeOfInt A B C) A D) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) (F Bool) ) + (=> + (and + (>= (- D A) 1) + (tmember C D E) + (< A D) + ) + (tmember (node-treeOfInt A B C) D E) + ) + ) +) +(assert + (forall ( (A Int) (B treeOfInt) (C treeOfInt) (D Int) (E Bool) (F Bool) ) + (=> + (and + (<= (- D A) (- 1)) + (tmember B D E) + (>= A D) + ) + (tmember (node-treeOfInt A B C) D E) + ) + ) +) + +(assert + (forall ( (A Bool) (B treeOfInt) (C Int) (D treeOfInt) ) + (=> + (and + (not (= A true)) + (tinsert B C D) + (tmember D C A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal1.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal1.smt2 new file mode 100644 index 000000000..3306d1829 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal1.smt2 @@ -0,0 +1,210 @@ +(set-logic HORN) + +(declare-datatypes ((heapOfInt 0) ) +(((heap-heapOfInt (rk-heapOfInt Int) (value-heapOfInt Int) (left-heapOfInt heapOfInt) (right-heapOfInt heapOfInt)) (hleaf-heapOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun rightheight (heapOfInt Int) Bool) +(declare-fun rank (heapOfInt Int) Bool) +(declare-fun mergea (Int heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun merge (heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun hinsert (heapOfInt Int heapOfInt) Bool) +(declare-fun hasleftistproperty (heapOfInt Bool) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rightheight hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) ) + (=> + (and + (= E (+ 1 F)) + (rightheight D F) + ) + (rightheight (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rank hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) ) + (rank (heap-heapOfInt A B C D) A) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (<= G H) + (rank B H) + (rank C G) + (rank C F) + ) + (mergea A B C (heap-heapOfInt D A B C) ) + ) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (> G H) + (rank B H) + (rank C G) + (rank B F) + ) + (mergea A B C (heap-heapOfInt D A C B) ) + ) + ) +) + +(assert + (forall ( (A heapOfInt) ) + (merge A hleaf-heapOfInt A) + ) +) +(assert + (forall ( (A heapOfInt) ) + (merge hleaf-heapOfInt A A) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (< F B) + (mergea B C K I) + (merge D (heap-heapOfInt E F G H) K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (>= F B) + (mergea F G K I) + (merge (heap-heapOfInt A B C D) H K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Bool) ) + (=> + (= A true) + (hasleftistproperty hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= E true) + (= A (+ 1 F)) + (hasleftistproperty C E) + (hasleftistproperty D E) + (<= G H) + (rightheight C H) + (rightheight D G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty C E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty D E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) ) + (=> + (and + (= E false) + (> F G) + (rightheight C G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) ) + (=> + (and + (= E false) + (not (= A (+ 1 F))) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A heapOfInt) (B Int) (C heapOfInt) (D Int) ) + (=> + (and + (= D 1) + (merge (heap-heapOfInt D B hleaf-heapOfInt hleaf-heapOfInt) A C) + ) + (hinsert A B C) + ) + ) +) +(assert + (forall ( (A Bool) (B Bool) (C heapOfInt) (D Int) (E heapOfInt) ) + (=> + (and + (= A true) + (not (= B true)) + (hinsert C D E) + (hasleftistproperty E B) + (hasleftistproperty C A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal10.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal10.smt2 new file mode 100644 index 000000000..971743ebc --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal10.smt2 @@ -0,0 +1,286 @@ +(set-logic HORN) + +(declare-datatypes ((heapOfInt 0) ) +(((heap-heapOfInt (rk-heapOfInt Int) (value-heapOfInt Int) (left-heapOfInt heapOfInt) (right-heapOfInt heapOfInt)) (hleaf-heapOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun len (listOfInt Int) Bool) +(declare-fun rightheight (heapOfInt Int) Bool) +(declare-fun rank (heapOfInt Int) Bool) +(declare-fun mergea (Int heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun merge (heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun hsize (heapOfInt Int) Bool) +(declare-fun hasleftistproperty (heapOfInt Bool) Bool) +(declare-fun hinsert (heapOfInt Int heapOfInt) Bool) +(declare-fun hinsertall (listOfInt heapOfInt heapOfInt) Bool) +(declare-fun heapsorta (heapOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rightheight hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) ) + (=> + (and + (= E (+ 1 F)) + (rightheight D F) + ) + (rightheight (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rank hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) ) + (rank (heap-heapOfInt A B C D) A) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (<= G H) + (rank B H) + (rank C G) + (rank C F) + ) + (mergea A B C (heap-heapOfInt D A B C) ) + ) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (> G H) + (rank B H) + (rank C G) + (rank B F) + ) + (mergea A B C (heap-heapOfInt D A C B) ) + ) + ) +) + +(assert + (forall ( (A heapOfInt) ) + (merge A hleaf-heapOfInt A) + ) +) +(assert + (forall ( (A heapOfInt) ) + (merge hleaf-heapOfInt A A) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (< F B) + (mergea B C K I) + (merge D (heap-heapOfInt E F G H) K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (>= F B) + (mergea F G K I) + (merge (heap-heapOfInt A B C D) H K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Bool) ) + (=> + (= A true) + (hasleftistproperty hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= E true) + (= A (+ 1 F)) + (hasleftistproperty C E) + (hasleftistproperty D E) + (<= G H) + (rightheight C H) + (rightheight D G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty C E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty D E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) ) + (=> + (and + (= E false) + (> F G) + (rightheight C G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) ) + (=> + (and + (= E false) + (not (= A (+ 1 F))) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (hsize hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G Int) (H Int) ) + (=> + (and + (= E (+ 1 F)) + (hsize C G) + (hsize D H) + (= F (+ G H)) + ) + (hsize (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A heapOfInt) (B Int) (C heapOfInt) (D Int) ) + (=> + (and + (= D 1) + (merge (heap-heapOfInt D B hleaf-heapOfInt hleaf-heapOfInt) A C) + ) + (hinsert A B C) + ) + ) +) +(assert + (forall ( (A heapOfInt) ) + (hinsertall nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C heapOfInt) (D heapOfInt) (E heapOfInt) ) + (=> + (and + (hinsertall B C E) + (hinsert E A D) + ) + (hinsertall (cons-listOfInt A B) C D) + ) + ) +) +(assert + (heapsorta hleaf-heapOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E listOfInt) (F heapOfInt) ) + (=> + (and + (merge C D F) + (heapsorta F E) + ) + (heapsorta (heap-heapOfInt A B C D) (cons-listOfInt B E)) + ) + ) +) +(assert + (forall ( (A Bool) (B Int) (C Int) (D heapOfInt) (E listOfInt) ) + (=> + (and + (= A true) + (not (= B C)) + (>= (- B C) 1) + (heapsorta D E) + (len E C) + (hsize D B) + (hasleftistproperty D A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal12.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal12.smt2 new file mode 100644 index 000000000..c04c7f642 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal12.smt2 @@ -0,0 +1,301 @@ +(set-logic HORN) + +(declare-datatypes ((heapOfInt 0) ) +(((heap-heapOfInt (rk-heapOfInt Int) (value-heapOfInt Int) (left-heapOfInt heapOfInt) (right-heapOfInt heapOfInt)) (hleaf-heapOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun len (listOfInt Int) Bool) +(declare-fun rightheight (heapOfInt Int) Bool) +(declare-fun rank (heapOfInt Int) Bool) +(declare-fun mergea (Int heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun merge (heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun hsize (heapOfInt Int) Bool) +(declare-fun qheapsorta (heapOfInt listOfInt listOfInt) Bool) +(declare-fun hasleftistproperty (heapOfInt Bool) Bool) +(declare-fun hinsert (heapOfInt Int heapOfInt) Bool) +(declare-fun hinsertall (listOfInt heapOfInt heapOfInt) Bool) +(declare-fun heapsorta (heapOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rightheight hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) ) + (=> + (and + (= E (+ 1 F)) + (rightheight D F) + ) + (rightheight (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rank hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) ) + (rank (heap-heapOfInt A B C D) A) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (<= G H) + (rank B H) + (rank C G) + (rank C F) + ) + (mergea A B C (heap-heapOfInt D A B C) ) + ) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (> G H) + (rank B H) + (rank C G) + (rank B F) + ) + (mergea A B C (heap-heapOfInt D A C B) ) + ) + ) +) + +(assert + (forall ( (A heapOfInt) ) + (merge A hleaf-heapOfInt A) + ) +) +(assert + (forall ( (A heapOfInt) ) + (merge hleaf-heapOfInt A A) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (< F B) + (mergea B C K I) + (merge D (heap-heapOfInt E F G H) K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (>= F B) + (mergea F G K I) + (merge (heap-heapOfInt A B C D) H K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Bool) ) + (=> + (= A true) + (hasleftistproperty hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= E true) + (= A (+ 1 F)) + (hasleftistproperty C E) + (hasleftistproperty D E) + (<= G H) + (rightheight C H) + (rightheight D G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty C E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty D E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) ) + (=> + (and + (= E false) + (> F G) + (rightheight C G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) ) + (=> + (and + (= E false) + (not (= A (+ 1 F))) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (hsize hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (qheapsorta hleaf-heapOfInt A A) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E listOfInt) (F listOfInt) (G heapOfInt) ) + (=> + (and + (merge C D G) + (qheapsorta G (cons-listOfInt B E) F) + ) + (qheapsorta (heap-heapOfInt A B C D) E F) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G Int) (H Int) ) + (=> + (and + (= E (+ 1 F)) + (hsize C G) + (hsize D H) + (= F (+ G H)) + ) + (hsize (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A heapOfInt) (B Int) (C heapOfInt) (D Int) ) + (=> + (and + (= D 1) + (merge (heap-heapOfInt D B hleaf-heapOfInt hleaf-heapOfInt) A C) + ) + (hinsert A B C) + ) + ) +) +(assert + (forall ( (A heapOfInt) ) + (hinsertall nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C heapOfInt) (D heapOfInt) (E heapOfInt) ) + (=> + (and + (hinsertall B C E) + (hinsert E A D) + ) + (hinsertall (cons-listOfInt A B) C D) + ) + ) +) +(assert + (heapsorta hleaf-heapOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E listOfInt) (F heapOfInt) ) + (=> + (and + (merge C D F) + (heapsorta F E) + ) + (heapsorta (heap-heapOfInt A B C D) (cons-listOfInt B E)) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D Int) (E listOfInt) (F listOfInt) (G listOfInt) ) + (=> + (and + (not (= (- A B) 1)) + (qheapsorta C (cons-listOfInt D E) F) + (len F A) + (qheapsorta C E G) + (len G B) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal13.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal13.smt2 new file mode 100644 index 000000000..ff75ee16c --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal13.smt2 @@ -0,0 +1,304 @@ +(set-logic HORN) + +(declare-datatypes ((heapOfInt 0) ) +(((heap-heapOfInt (rk-heapOfInt Int) (value-heapOfInt Int) (left-heapOfInt heapOfInt) (right-heapOfInt heapOfInt)) (hleaf-heapOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun len (listOfInt Int) Bool) +(declare-fun rightheight (heapOfInt Int) Bool) +(declare-fun rank (heapOfInt Int) Bool) +(declare-fun mergea (Int heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun merge (heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun hsize (heapOfInt Int) Bool) +(declare-fun qheapsorta (heapOfInt listOfInt listOfInt) Bool) +(declare-fun hasleftistproperty (heapOfInt Bool) Bool) +(declare-fun hinsert (heapOfInt Int heapOfInt) Bool) +(declare-fun hinsertall (listOfInt heapOfInt heapOfInt) Bool) +(declare-fun heapsorta (heapOfInt listOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rightheight hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) ) + (=> + (and + (= E (+ 1 F)) + (rightheight D F) + ) + (rightheight (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rank hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) ) + (rank (heap-heapOfInt A B C D) A) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (<= G H) + (rank B H) + (rank C G) + (rank C F) + ) + (mergea A B C (heap-heapOfInt D A B C) ) + ) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (> G H) + (rank B H) + (rank C G) + (rank B F) + ) + (mergea A B C (heap-heapOfInt D A C B) ) + ) + ) +) + +(assert + (forall ( (A heapOfInt) ) + (merge A hleaf-heapOfInt A) + ) +) +(assert + (forall ( (A heapOfInt) ) + (merge hleaf-heapOfInt A A) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (< F B) + (mergea B C K I) + (merge D (heap-heapOfInt E F G H) K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (>= F B) + (mergea F G K I) + (merge (heap-heapOfInt A B C D) H K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Bool) ) + (=> + (= A true) + (hasleftistproperty hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= E true) + (= A (+ 1 F)) + (hasleftistproperty C E) + (hasleftistproperty D E) + (<= G H) + (rightheight C H) + (rightheight D G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty C E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty D E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) ) + (=> + (and + (= E false) + (> F G) + (rightheight C G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) ) + (=> + (and + (= E false) + (not (= A (+ 1 F))) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (hsize hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A listOfInt) ) + (qheapsorta hleaf-heapOfInt A A) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E listOfInt) (F listOfInt) (G heapOfInt) ) + (=> + (and + (merge C D G) + (qheapsorta G (cons-listOfInt B E) F) + ) + (qheapsorta (heap-heapOfInt A B C D) E F) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G Int) (H Int) ) + (=> + (and + (= E (+ 1 F)) + (hsize C G) + (hsize D H) + (= F (+ G H)) + ) + (hsize (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A heapOfInt) (B Int) (C heapOfInt) (D Int) ) + (=> + (and + (= D 1) + (merge (heap-heapOfInt D B hleaf-heapOfInt hleaf-heapOfInt) A C) + ) + (hinsert A B C) + ) + ) +) +(assert + (forall ( (A heapOfInt) ) + (hinsertall nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C heapOfInt) (D heapOfInt) (E heapOfInt) ) + (=> + (and + (hinsertall B C E) + (hinsert E A D) + ) + (hinsertall (cons-listOfInt A B) C D) + ) + ) +) +(assert + (heapsorta hleaf-heapOfInt nil-listOfInt) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E listOfInt) (F heapOfInt) ) + (=> + (and + (merge C D F) + (heapsorta F E) + ) + (heapsorta (heap-heapOfInt A B C D) (cons-listOfInt B E)) + ) + ) +) +(assert + (forall ( (A Bool) (B Int) (C Int) (D Int) (E Int) (F heapOfInt) (G listOfInt) (H listOfInt) ) + (=> + (and + (= A true) + (not (= B C)) + (= (+ D E) B) + (qheapsorta F G H) + (len H C) + (hsize F D) + (len G E) + (hasleftistproperty F A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal2.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal2.smt2 new file mode 100644 index 000000000..8f0ba4fd8 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal2.smt2 @@ -0,0 +1,227 @@ +(set-logic HORN) + +(declare-datatypes ((heapOfInt 0) ) +(((heap-heapOfInt (rk-heapOfInt Int) (value-heapOfInt Int) (left-heapOfInt heapOfInt) (right-heapOfInt heapOfInt)) (hleaf-heapOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun rightheight (heapOfInt Int) Bool) +(declare-fun rank (heapOfInt Int) Bool) +(declare-fun mergea (Int heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun merge (heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun hinsert (heapOfInt Int heapOfInt) Bool) +(declare-fun hinsertall (listOfInt heapOfInt heapOfInt) Bool) +(declare-fun hasleftistproperty (heapOfInt Bool) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rightheight hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) ) + (=> + (and + (= E (+ 1 F)) + (rightheight D F) + ) + (rightheight (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rank hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) ) + (rank (heap-heapOfInt A B C D) A) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (<= G H) + (rank B H) + (rank C G) + (rank C F) + ) + (mergea A B C (heap-heapOfInt D A B C) ) + ) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (> G H) + (rank B H) + (rank C G) + (rank B F) + ) + (mergea A B C (heap-heapOfInt D A C B) ) + ) + ) +) + +(assert + (forall ( (A heapOfInt) ) + (merge A hleaf-heapOfInt A) + ) +) +(assert + (forall ( (A heapOfInt) ) + (merge hleaf-heapOfInt A A) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (< F B) + (mergea B C K I) + (merge D (heap-heapOfInt E F G H) K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (>= F B) + (mergea F G K I) + (merge (heap-heapOfInt A B C D) H K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Bool) ) + (=> + (= A true) + (hasleftistproperty hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= E true) + (= A (+ 1 F)) + (hasleftistproperty C E) + (hasleftistproperty D E) + (<= G H) + (rightheight C H) + (rightheight D G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty C E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty D E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) ) + (=> + (and + (= E false) + (> F G) + (rightheight C G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) ) + (=> + (and + (= E false) + (not (= A (+ 1 F))) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A heapOfInt) (B Int) (C heapOfInt) (D Int) ) + (=> + (and + (= D 1) + (merge (heap-heapOfInt D B hleaf-heapOfInt hleaf-heapOfInt) A C) + ) + (hinsert A B C) + ) + ) +) +(assert + (forall ( (A heapOfInt) ) + (hinsertall nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C heapOfInt) (D heapOfInt) (E heapOfInt) ) + (=> + (and + (hinsertall B C E) + (hinsert E A D) + ) + (hinsertall (cons-listOfInt A B) C D) + ) + ) +) +(assert + (forall ( (A Bool) (B Bool) (C listOfInt) (D heapOfInt) (E heapOfInt) ) + (=> + (and + (= A true) + (not (= B true)) + (hinsertall C D E) + (hasleftistproperty E B) + (hasleftistproperty D A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal3.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal3.smt2 new file mode 100644 index 000000000..78881d78b --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal3.smt2 @@ -0,0 +1,201 @@ +(set-logic HORN) + +(declare-datatypes ((heapOfInt 0) ) +(((heap-heapOfInt (rk-heapOfInt Int) (value-heapOfInt Int) (left-heapOfInt heapOfInt) (right-heapOfInt heapOfInt)) (hleaf-heapOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun rightheight (heapOfInt Int) Bool) +(declare-fun rank (heapOfInt Int) Bool) +(declare-fun mergea (Int heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun merge (heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun hasleftistproperty (heapOfInt Bool) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rightheight hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) ) + (=> + (and + (= E (+ 1 F)) + (rightheight D F) + ) + (rightheight (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rank hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) ) + (rank (heap-heapOfInt A B C D) A) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (<= G H) + (rank B H) + (rank C G) + (rank C F) + ) + (mergea A B C (heap-heapOfInt D A B C) ) + ) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (> G H) + (rank B H) + (rank C G) + (rank B F) + ) + (mergea A B C (heap-heapOfInt D A C B) ) + ) + ) +) + +(assert + (forall ( (A heapOfInt) ) + (merge A hleaf-heapOfInt A) + ) +) +(assert + (forall ( (A heapOfInt) ) + (merge hleaf-heapOfInt A A) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (< F B) + (mergea B C K I) + (merge D (heap-heapOfInt E F G H) K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (>= F B) + (mergea F G K I) + (merge (heap-heapOfInt A B C D) H K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Bool) ) + (=> + (= A true) + (hasleftistproperty hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= E true) + (= A (+ 1 F)) + (hasleftistproperty C E) + (hasleftistproperty D E) + (<= G H) + (rightheight C H) + (rightheight D G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty C E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty D E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) ) + (=> + (and + (= E false) + (> F G) + (rightheight C G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) ) + (=> + (and + (= E false) + (not (= A (+ 1 F))) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Bool) (B Bool) (C Int) (D heapOfInt) (E heapOfInt) (F heapOfInt) ) + (=> + (and + (= A true) + (= A true) + (= A true) + (not (= B true)) + (mergea C D E F) + (hasleftistproperty F B) + (hasleftistproperty D A) + (hasleftistproperty E A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal4.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal4.smt2 new file mode 100644 index 000000000..a2bbdf67b --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal4.smt2 @@ -0,0 +1,201 @@ +(set-logic HORN) + +(declare-datatypes ((heapOfInt 0) ) +(((heap-heapOfInt (rk-heapOfInt Int) (value-heapOfInt Int) (left-heapOfInt heapOfInt) (right-heapOfInt heapOfInt)) (hleaf-heapOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun rightheight (heapOfInt Int) Bool) +(declare-fun rank (heapOfInt Int) Bool) +(declare-fun mergea (Int heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun merge (heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun hasleftistproperty (heapOfInt Bool) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rightheight hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) ) + (=> + (and + (= E (+ 1 F)) + (rightheight D F) + ) + (rightheight (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rank hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) ) + (rank (heap-heapOfInt A B C D) A) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (<= G H) + (rank B H) + (rank C G) + (rank C F) + ) + (mergea A B C (heap-heapOfInt D A B C) ) + ) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (> G H) + (rank B H) + (rank C G) + (rank B F) + ) + (mergea A B C (heap-heapOfInt D A C B) ) + ) + ) +) + +(assert + (forall ( (A heapOfInt) ) + (merge A hleaf-heapOfInt A) + ) +) +(assert + (forall ( (A heapOfInt) ) + (merge hleaf-heapOfInt A A) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (< F B) + (mergea B C K I) + (merge D (heap-heapOfInt E F G H) K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (>= F B) + (mergea F G K I) + (merge (heap-heapOfInt A B C D) H K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Bool) ) + (=> + (= A true) + (hasleftistproperty hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= E true) + (= A (+ 1 F)) + (hasleftistproperty C E) + (hasleftistproperty D E) + (<= G H) + (rightheight C H) + (rightheight D G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty C E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty D E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) ) + (=> + (and + (= E false) + (> F G) + (rightheight C G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) ) + (=> + (and + (= E false) + (not (= A (+ 1 F))) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Bool) (B Bool) (C heapOfInt) (D heapOfInt) (E heapOfInt) ) + (=> + (and + (= A true) + (= A true) + (= A true) + (not (= B true)) + (merge C D E) + (hasleftistproperty E B) + (hasleftistproperty C A) + (hasleftistproperty D A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal5.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal5.smt2 new file mode 100644 index 000000000..a2bbdf67b --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal5.smt2 @@ -0,0 +1,201 @@ +(set-logic HORN) + +(declare-datatypes ((heapOfInt 0) ) +(((heap-heapOfInt (rk-heapOfInt Int) (value-heapOfInt Int) (left-heapOfInt heapOfInt) (right-heapOfInt heapOfInt)) (hleaf-heapOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun rightheight (heapOfInt Int) Bool) +(declare-fun rank (heapOfInt Int) Bool) +(declare-fun mergea (Int heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun merge (heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun hasleftistproperty (heapOfInt Bool) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rightheight hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) ) + (=> + (and + (= E (+ 1 F)) + (rightheight D F) + ) + (rightheight (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rank hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) ) + (rank (heap-heapOfInt A B C D) A) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (<= G H) + (rank B H) + (rank C G) + (rank C F) + ) + (mergea A B C (heap-heapOfInt D A B C) ) + ) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (> G H) + (rank B H) + (rank C G) + (rank B F) + ) + (mergea A B C (heap-heapOfInt D A C B) ) + ) + ) +) + +(assert + (forall ( (A heapOfInt) ) + (merge A hleaf-heapOfInt A) + ) +) +(assert + (forall ( (A heapOfInt) ) + (merge hleaf-heapOfInt A A) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (< F B) + (mergea B C K I) + (merge D (heap-heapOfInt E F G H) K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (>= F B) + (mergea F G K I) + (merge (heap-heapOfInt A B C D) H K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Bool) ) + (=> + (= A true) + (hasleftistproperty hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= E true) + (= A (+ 1 F)) + (hasleftistproperty C E) + (hasleftistproperty D E) + (<= G H) + (rightheight C H) + (rightheight D G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty C E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty D E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) ) + (=> + (and + (= E false) + (> F G) + (rightheight C G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) ) + (=> + (and + (= E false) + (not (= A (+ 1 F))) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Bool) (B Bool) (C heapOfInt) (D heapOfInt) (E heapOfInt) ) + (=> + (and + (= A true) + (= A true) + (= A true) + (not (= B true)) + (merge C D E) + (hasleftistproperty E B) + (hasleftistproperty C A) + (hasleftistproperty D A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal6.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal6.smt2 new file mode 100644 index 000000000..b67f137b9 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal6.smt2 @@ -0,0 +1,224 @@ +(set-logic HORN) + +(declare-datatypes ((heapOfInt 0) ) +(((heap-heapOfInt (rk-heapOfInt Int) (value-heapOfInt Int) (left-heapOfInt heapOfInt) (right-heapOfInt heapOfInt)) (hleaf-heapOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun rightheight (heapOfInt Int) Bool) +(declare-fun rank (heapOfInt Int) Bool) +(declare-fun mergea (Int heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun merge (heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun hsize (heapOfInt Int) Bool) +(declare-fun hasleftistproperty (heapOfInt Bool) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rightheight hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) ) + (=> + (and + (= E (+ 1 F)) + (rightheight D F) + ) + (rightheight (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rank hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) ) + (rank (heap-heapOfInt A B C D) A) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (<= G H) + (rank B H) + (rank C G) + (rank C F) + ) + (mergea A B C (heap-heapOfInt D A B C) ) + ) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (> G H) + (rank B H) + (rank C G) + (rank B F) + ) + (mergea A B C (heap-heapOfInt D A C B) ) + ) + ) +) + +(assert + (forall ( (A heapOfInt) ) + (merge A hleaf-heapOfInt A) + ) +) +(assert + (forall ( (A heapOfInt) ) + (merge hleaf-heapOfInt A A) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (< F B) + (mergea B C K I) + (merge D (heap-heapOfInt E F G H) K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (>= F B) + (mergea F G K I) + (merge (heap-heapOfInt A B C D) H K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Bool) ) + (=> + (= A true) + (hasleftistproperty hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= E true) + (= A (+ 1 F)) + (hasleftistproperty C E) + (hasleftistproperty D E) + (<= G H) + (rightheight C H) + (rightheight D G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty C E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty D E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) ) + (=> + (and + (= E false) + (> F G) + (rightheight C G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) ) + (=> + (and + (= E false) + (not (= A (+ 1 F))) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (hsize hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G Int) (H Int) ) + (=> + (and + (= E (+ 1 F)) + (hsize C G) + (hsize D H) + (= F (+ G H)) + ) + (hsize (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Bool) (B Int) (C Int) (D Int) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) ) + (=> + (and + (= A true) + (not (= B (+ C 1))) + (= (+ D E) C) + (mergea F G H I) + (hsize I B) + (hsize G D) + (hsize H E) + (hasleftistproperty G A) + (hasleftistproperty H A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal7.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal7.smt2 new file mode 100644 index 000000000..792749aaf --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal7.smt2 @@ -0,0 +1,224 @@ +(set-logic HORN) + +(declare-datatypes ((heapOfInt 0) ) +(((heap-heapOfInt (rk-heapOfInt Int) (value-heapOfInt Int) (left-heapOfInt heapOfInt) (right-heapOfInt heapOfInt)) (hleaf-heapOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun rightheight (heapOfInt Int) Bool) +(declare-fun rank (heapOfInt Int) Bool) +(declare-fun mergea (Int heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun merge (heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun hsize (heapOfInt Int) Bool) +(declare-fun hasleftistproperty (heapOfInt Bool) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rightheight hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) ) + (=> + (and + (= E (+ 1 F)) + (rightheight D F) + ) + (rightheight (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rank hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) ) + (rank (heap-heapOfInt A B C D) A) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (<= G H) + (rank B H) + (rank C G) + (rank C F) + ) + (mergea A B C (heap-heapOfInt D A B C) ) + ) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (> G H) + (rank B H) + (rank C G) + (rank B F) + ) + (mergea A B C (heap-heapOfInt D A C B) ) + ) + ) +) + +(assert + (forall ( (A heapOfInt) ) + (merge A hleaf-heapOfInt A) + ) +) +(assert + (forall ( (A heapOfInt) ) + (merge hleaf-heapOfInt A A) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (< F B) + (mergea B C K I) + (merge D (heap-heapOfInt E F G H) K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (>= F B) + (mergea F G K I) + (merge (heap-heapOfInt A B C D) H K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Bool) ) + (=> + (= A true) + (hasleftistproperty hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= E true) + (= A (+ 1 F)) + (hasleftistproperty C E) + (hasleftistproperty D E) + (<= G H) + (rightheight C H) + (rightheight D G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty C E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty D E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) ) + (=> + (and + (= E false) + (> F G) + (rightheight C G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) ) + (=> + (and + (= E false) + (not (= A (+ 1 F))) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (hsize hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G Int) (H Int) ) + (=> + (and + (= E (+ 1 F)) + (hsize C G) + (hsize D H) + (= F (+ G H)) + ) + (hsize (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Bool) (B Int) (C Int) (D Int) (E Int) (F heapOfInt) (G heapOfInt) (H heapOfInt) ) + (=> + (and + (= A true) + (not (= B C)) + (= (+ D E) B) + (merge F G H) + (hsize H C) + (hsize F D) + (hsize G E) + (hasleftistproperty F A) + (hasleftistproperty G A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal8.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal8.smt2 new file mode 100644 index 000000000..72f8fb780 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal8.smt2 @@ -0,0 +1,233 @@ +(set-logic HORN) + +(declare-datatypes ((heapOfInt 0) ) +(((heap-heapOfInt (rk-heapOfInt Int) (value-heapOfInt Int) (left-heapOfInt heapOfInt) (right-heapOfInt heapOfInt)) (hleaf-heapOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun rightheight (heapOfInt Int) Bool) +(declare-fun rank (heapOfInt Int) Bool) +(declare-fun mergea (Int heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun merge (heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun hsize (heapOfInt Int) Bool) +(declare-fun hasleftistproperty (heapOfInt Bool) Bool) +(declare-fun hinsert (heapOfInt Int heapOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rightheight hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) ) + (=> + (and + (= E (+ 1 F)) + (rightheight D F) + ) + (rightheight (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rank hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) ) + (rank (heap-heapOfInt A B C D) A) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (<= G H) + (rank B H) + (rank C G) + (rank C F) + ) + (mergea A B C (heap-heapOfInt D A B C) ) + ) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (> G H) + (rank B H) + (rank C G) + (rank B F) + ) + (mergea A B C (heap-heapOfInt D A C B) ) + ) + ) +) + +(assert + (forall ( (A heapOfInt) ) + (merge A hleaf-heapOfInt A) + ) +) +(assert + (forall ( (A heapOfInt) ) + (merge hleaf-heapOfInt A A) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (< F B) + (mergea B C K I) + (merge D (heap-heapOfInt E F G H) K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (>= F B) + (mergea F G K I) + (merge (heap-heapOfInt A B C D) H K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Bool) ) + (=> + (= A true) + (hasleftistproperty hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= E true) + (= A (+ 1 F)) + (hasleftistproperty C E) + (hasleftistproperty D E) + (<= G H) + (rightheight C H) + (rightheight D G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty C E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty D E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) ) + (=> + (and + (= E false) + (> F G) + (rightheight C G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) ) + (=> + (and + (= E false) + (not (= A (+ 1 F))) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (hsize hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G Int) (H Int) ) + (=> + (and + (= E (+ 1 F)) + (hsize C G) + (hsize D H) + (= F (+ G H)) + ) + (hsize (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A heapOfInt) (B Int) (C heapOfInt) (D Int) ) + (=> + (and + (= D 1) + (merge (heap-heapOfInt D B hleaf-heapOfInt hleaf-heapOfInt) A C) + ) + (hinsert A B C) + ) + ) +) +(assert + (forall ( (A Bool) (B Int) (C Int) (D heapOfInt) (E Int) (F heapOfInt) ) + (=> + (and + (= A true) + (not (= (- B C) 1)) + (hinsert D E F) + (hsize F B) + (hsize D C) + (hasleftistproperty D A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal9.smt2 b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal9.smt2 new file mode 100644 index 000000000..a059d22b5 --- /dev/null +++ b/bench_horn_adt/benchmarks-vmcai2015/leon/heap/heap-goal9.smt2 @@ -0,0 +1,272 @@ +(set-logic HORN) + +(declare-datatypes ((heapOfInt 0) ) +(((heap-heapOfInt (rk-heapOfInt Int) (value-heapOfInt Int) (left-heapOfInt heapOfInt) (right-heapOfInt heapOfInt)) (hleaf-heapOfInt)))) +(declare-datatypes ((listOfInt 0) ) +(((cons-listOfInt (head-listOfInt Int) (tail-listOfInt listOfInt)) (nil-listOfInt)))) + +(declare-fun len (listOfInt Int) Bool) +(declare-fun rightheight (heapOfInt Int) Bool) +(declare-fun rank (heapOfInt Int) Bool) +(declare-fun mergea (Int heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun merge (heapOfInt heapOfInt heapOfInt) Bool) +(declare-fun hsize (heapOfInt Int) Bool) +(declare-fun hasleftistproperty (heapOfInt Bool) Bool) +(declare-fun hinsert (heapOfInt Int heapOfInt) Bool) +(declare-fun hinsertall (listOfInt heapOfInt heapOfInt) Bool) +(declare-fun ff () Bool) + +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (len nil-listOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C Int) (D Int) ) + (=> + (and + (= C (+ 1 D)) + (len B D) + ) + (len (cons-listOfInt A B) C) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rightheight hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) ) + (=> + (and + (= E (+ 1 F)) + (rightheight D F) + ) + (rightheight (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (rank hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) ) + (rank (heap-heapOfInt A B C D) A) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (<= G H) + (rank B H) + (rank C G) + (rank C F) + ) + (mergea A B C (heap-heapOfInt D A B C) ) + ) + ) +) +(assert + (forall ( (A Int) (B heapOfInt) (C heapOfInt) (D Int) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= D (+ 1 F)) + (> G H) + (rank B H) + (rank C G) + (rank B F) + ) + (mergea A B C (heap-heapOfInt D A C B) ) + ) + ) +) + +(assert + (forall ( (A heapOfInt) ) + (merge A hleaf-heapOfInt A) + ) +) +(assert + (forall ( (A heapOfInt) ) + (merge hleaf-heapOfInt A A) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (< F B) + (mergea B C K I) + (merge D (heap-heapOfInt E F G H) K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G heapOfInt) (H heapOfInt) (I heapOfInt) (J Bool) (K heapOfInt) ) + (=> + (and + (>= F B) + (mergea F G K I) + (merge (heap-heapOfInt A B C D) H K) + ) + (merge (heap-heapOfInt A B C D) (heap-heapOfInt E F G H) I) + ) + ) +) +(assert + (forall ( (A Bool) ) + (=> + (= A true) + (hasleftistproperty hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) (H Int) ) + (=> + (and + (= E true) + (= A (+ 1 F)) + (hasleftistproperty C E) + (hasleftistproperty D E) + (<= G H) + (rightheight C H) + (rightheight D G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty C E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) ) + (=> + (and + (= E false) + (hasleftistproperty D E) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) (G Int) ) + (=> + (and + (= E false) + (> F G) + (rightheight C G) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Bool) (F Int) ) + (=> + (and + (= E false) + (not (= A (+ 1 F))) + (rightheight D F) + ) + (hasleftistproperty (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A Int) ) + (=> + (= A 0) + (hsize hleaf-heapOfInt A) + ) + ) +) +(assert + (forall ( (A Int) (B Int) (C heapOfInt) (D heapOfInt) (E Int) (F Int) (G Int) (H Int) ) + (=> + (and + (= E (+ 1 F)) + (hsize C G) + (hsize D H) + (= F (+ G H)) + ) + (hsize (heap-heapOfInt A B C D) E) + ) + ) +) +(assert + (forall ( (A heapOfInt) (B Int) (C heapOfInt) (D Int) ) + (=> + (and + (= D 1) + (merge (heap-heapOfInt D B hleaf-heapOfInt hleaf-heapOfInt) A C) + ) + (hinsert A B C) + ) + ) +) +(assert + (forall ( (A heapOfInt) ) + (hinsertall nil-listOfInt A A) + ) +) +(assert + (forall ( (A Int) (B listOfInt) (C heapOfInt) (D heapOfInt) (E heapOfInt) ) + (=> + (and + (hinsertall B C E) + (hinsert E A D) + ) + (hinsertall (cons-listOfInt A B) C D) + ) + ) +) +(assert + (forall ( (A Bool) (B Int) (C Int) (D Int) (E Int) (F listOfInt) (G heapOfInt) (H heapOfInt) ) + (=> + (and + (= A true) + (not (= B C)) + (= (+ D E) B) + (hinsertall F G H) + (hsize H C) + (hsize G D) + (len F E) + (hasleftistproperty G A) + ) + ff + ) + ) +) + +(assert (not ff)) +(check-sat) diff --git a/include/adt/ADTSolver.hpp b/include/adt/ADTSolver.hpp index 4d8c93808..6ff8405f4 100644 --- a/include/adt/ADTSolver.hpp +++ b/include/adt/ADTSolver.hpp @@ -34,6 +34,7 @@ namespace ufo bool verbose; int sp = 2; int glob_ind = 0; + int lev = 0; bool useZ3 = false; unsigned to; ExprVector blockedAssms; @@ -41,8 +42,8 @@ namespace ufo public: - ADTSolver(Expr _goal, ExprVector& _assumptions, ExprVector& _constructors, int _maxDepth = 5, int _maxGrow = 3, int _mergingIts = 3, int _earlySplit = 1, bool _verbose = false, bool _useZ3 = true, unsigned _to = 1000, unsigned _l = 0) : - goal(_goal), assumptions(_assumptions), constructors(_constructors), efac(_goal->getFactory()), u(_goal->getFactory(), _to), maxDepth(_maxDepth), maxGrow(_maxGrow), mergingIts(_mergingIts), earlySplit(_earlySplit), verbose(_verbose), useZ3(_useZ3), to (_to), nestedLevel(_l) + ADTSolver(Expr _goal, ExprVector& _assumptions, ExprVector& _constructors, int _glob_ind = 0, int _lev = 0, int _maxDepth = 5, int _maxGrow = 3, int _mergingIts = 3, int _earlySplit = 1, bool _verbose = false, bool _useZ3 = true, unsigned _to = 1000, unsigned _l = 0) : + goal(_goal), assumptions(_assumptions), constructors(_constructors), glob_ind(_glob_ind), lev(_lev), efac(_goal->getFactory()), u(_goal->getFactory(), _to), maxDepth(_maxDepth), maxGrow(_maxGrow), mergingIts(_mergingIts), earlySplit(_earlySplit), verbose(_verbose), useZ3(_useZ3), to (_to), nestedLevel(_l) { // for convenience, rename assumptions (to have unique quantified variables) renameAssumptions(); @@ -150,7 +151,6 @@ namespace ufo Expr &a = assumptions[i]; a = simplifyBool(a); } - if (bnd == -1) bnd = mergingIts; // default val for (int i = 0; i < bnd; i++) { @@ -575,10 +575,13 @@ namespace ufo } // TODO: proper matching - if (isOpX(subgoal) && u.implies(subgoal->left(), assm)) + if (isOpX(subgoal)) { - result.push_back(subgoal->right()); - return true; + if (u.implies(subgoal->left(), assm)) + { + result.push_back(subgoal->right()); + return true; + } } if (isOpX(subgoal)) { @@ -615,13 +618,12 @@ namespace ufo return true; } } - if (isOp(assm)) { Expr res = replaceAll(subgoal, assm, mk(efac)); res = replaceAll(res, mkNeg(assm), mk(efac)); Expr tmp = reBuildCmpSym(assm, assm->left(), assm->right()); - assert(u.isEquiv(assm, tmp)); + assert((bool)u.isEquiv(assm, tmp)); res = replaceAll(res, tmp, mk(efac)); res = replaceAll(res, mkNeg(tmp), mk(efac)); if (res != subgoal) @@ -986,15 +988,37 @@ namespace ufo rewriteSequence.pop_back(); } - if (subgoal != exp && nestedLevel < maxGrow) + if (subgoal != exp && lev < 2 /* max meta-induction level, hardcoded for now */) { - // nested induction - auto assumptionsTmp = assumptions; - ADTSolver sol (exp, assumptionsTmp, constructors, maxDepth, maxGrow, mergingIts, earlySplit, false, useZ3, to, nestedLevel+1); - if (sol.solveNoind(false)) + map occs; + getCommonSubterms(exp, occs); // get common subterms in `exp` to further replace by fresh symbols + auto it = occs.begin(); + for (int i = 0; i < occs.size() + 1; i++) { - if (verbose) if (exp) outs () << string(sp, ' ') << "proven by induction: " << *exp << "\n"; - return true; + Expr expGen = exp; + if (it != occs.end()) // try generalizing based on the current subterm from occs + { + expGen = generalizeGoal(exp, it->first, it->second); + ++it; + if (expGen == NULL) continue; + } + else + { + // if nothing worked, try to prove it as is (exactly once, but if not very large) + if (getMonotDegree(expGen) > 2 || countFuns(expGen) > 3) // hand-selected heuristics + continue; + } + + auto assumptionsTmp = assumptions; + // nested induction + ADTSolver sol (expGen, assumptionsTmp, constructors, glob_ind, lev+1, + maxDepth, maxGrow, mergingIts, earlySplit, false, useZ3, to); + + if (sol.solveNoind(false)) + { + if (verbose) if (exp) outs () << string(sp, ' ') << "proven by induction: " << *expGen << "\n"; + return true; + } } } // backtrack: @@ -1004,6 +1028,24 @@ namespace ufo return false; } + // a particular heuristic, to be extended + Expr generalizeGoal(Expr e, Expr subterm, int occs /* how often `subterm` occurs in `e` */) + { + if (occs < 2) return NULL; // `subterm` should occur at least twice + if (subterm->arity() == 0) return NULL; // it should not be a constant + if (isOpX(subterm) && + subterm->left()->arity() == 2) return NULL; // it should not be a variable + Expr expGen = e; + Expr s = bind::mkConst(mkTerm ("_w_" + to_string(glob_ind), efac), typeOf(subterm)); + glob_ind++; // create a fresh symmbol + expGen = replaceAll(expGen, subterm, s); + if (!emptyIntersect(expGen, subterm)) return NULL; // there should not be any leftovers after replacement + int cnt = countFuns(expGen); // check the result + if (cnt == 0 || cnt > 3) return NULL; + if (getMonotDegree(expGen) > 2) return NULL; // if it is still "too complex", scratch it + return expGen; + } + bool proveByContradiction (Expr subgoal) { auto assumptionsTmp = assumptions; @@ -1423,7 +1465,6 @@ namespace ufo for (int i = 1; i < indConstructor->arity() - 1; i++) { // TODO: make sure the name is unique - Expr s; Expr singleCons = NULL; for (auto & a : constructors) @@ -1482,8 +1523,6 @@ namespace ufo // always add symmetric IH? insertSymmetricAssumption(a); } - - // prove the inductive step Expr indConsApp = bind::fapp(indConstructor, args); Expr indSubgoal = replaceAll(goalQF, bind::fapp(typeDecl), indConsApp); @@ -1496,7 +1535,6 @@ namespace ufo eliminateEqualities(indSubgoal); if (mergeAssumptions()) return true; - splitAssumptions(); if (verbose) outs() << "Inductive step: " << * indSubgoal << "\n{\n"; rewriteHistory.clear(); @@ -1505,7 +1543,7 @@ namespace ufo bool indres = simpleSMTcheck(indSubgoal); if (indres) { - if (verbose) outs() << " proven trivially by Z3\n}\n"; + if (verbose) outs() << " proven trivially\n}\n"; return true; } else @@ -1695,17 +1733,8 @@ namespace ufo { if (!isOpX(*it)) { - if (isOp(*it) || isOpX(*it) || isOpX(*it)) // super big hack qFreeAssms.insert(*it); - } - if (isOpX(*it)) - { - if (newGoal == NULL && isOpX(goal)) - goal = (*it)->last(); - else - qFreeAssms.insert(*it); - } it = assumptions.erase(it); } @@ -1765,7 +1794,7 @@ namespace ufo bool simpleSMTcheck(Expr goal) { if (!useZ3) return false; - return u.implies(conjoin(assumptions, efac), goal); + return (bool)u.implies(conjoin(assumptions, efac), goal); } }; @@ -1799,7 +1828,7 @@ namespace ufo return; } - ADTSolver sol (goal, assumptions, constructors, maxDepth, maxGrow, mergingIts, earlySplit, verbose, useZ3, to); + ADTSolver sol (goal, assumptions, constructors, 0, 0, maxDepth, maxGrow, mergingIts, earlySplit, verbose, useZ3, to); bool res = isOpX(goal) ? sol.solve() : sol.solveNoind(); outs () << (res ? "unsat\n" : "sat\n"); } diff --git a/include/adt/CHCSolver.hpp b/include/adt/CHCSolver.hpp index 9ada640c1..fec9a2a92 100644 --- a/include/adt/CHCSolver.hpp +++ b/include/adt/CHCSolver.hpp @@ -15,6 +15,7 @@ namespace ufo ExprFactory &efac; ExprSet &adts; + // Keep the current return values std::map values_inds; ExprVector &constructors; ExprVector &assumptions; @@ -26,6 +27,13 @@ namespace ufo bool givePriority = false; bool ignoreBaseVar = false; + map baseConstructors; + map indConstructors; + + map baseDefinitions; + map indDefinitions; + map interpretations; + public: CHCSolver(ExprVector& _constructors, ExprSet& _adts, ExprFactory &_efac, ExprSet &_decls, ExprVector &_assms, vector &_chcs, bool _nonadtPriority = false, bool _ignoreBase = false) : constructors(_constructors), adts(_adts), efac(_efac), decls(_decls), assumptions(_assms), chcs(_chcs), givePriority(_nonadtPriority), ignoreBaseVar(_ignoreBase) {} @@ -46,9 +54,12 @@ namespace ufo return app; } - void createLeftConjs(HornRuleExt chc, ExprVector & cnj) { + void replaceDeclsInLeftPart(HornRuleExt chc, ExprVector & cnj) { for (int i = 0; i < chc.srcRelations.size(); i++) { if (decls.find(chc.srcRelations[i]) != decls.end()) { + // as we don't allow mutual recursion and decls are sorted, + // we suppose that srcRelations doesn't contain predicates with unknown definition + // TODO: should check the assumption above int ind = values_inds[chc.srcRelations[i]->left()]; Expr app = createNewApp(chc, i, ind); Expr def = mk(app, chc.srcVars[i][ind]); @@ -61,78 +72,61 @@ namespace ufo } } - bool findMatchingFromBodyElement(HornRuleExt chc, Expr body_elem, ExprMap &matching) { - if (body_elem->left()->arity() == 1 - && std::find(chc.dstVars.begin(), chc.dstVars.end(), body_elem->left()) != chc.dstVars.end()) { - matching[body_elem->left()] = body_elem->right(); - return true; - } - else if (body_elem->right()->arity() == 1 - && std::find(chc.dstVars.begin(), chc.dstVars.end(), body_elem->right()) != chc.dstVars.end()) { - matching[body_elem->right()] = body_elem->left(); - return true; - } + bool findMatchingFromElement(HornRuleExt chc, Expr elem, ExprMap &matching) { + if (!chc.isQuery) { + if (elem->left()->arity() == 1 + && std::find(chc.dstVars.begin(), chc.dstVars.end(), elem->left()) != chc.dstVars.end()) { + matching[elem->left()] = elem->right(); + return true; + } + else if (elem->right()->arity() == 1 + && std::find(chc.dstVars.begin(), chc.dstVars.end(), elem->right()) != chc.dstVars.end()) { + matching[elem->right()] = elem->left(); + return true; + } for (auto & v : chc.dstVars) { - Expr ineq = ineqSimplifier(v, body_elem); + Expr ineq = ineqSimplifier(v, elem); if (ineq->left() == v) { matching[ineq->left()] = ineq->right(); return true; } } - if ((body_elem->left()->arity() == 1) && !(isConsctructor(bind::fname(body_elem->left())))) { - matching[body_elem->left()] = body_elem->right(); - return true; - } - else if ((body_elem->right()->arity() == 1) && !(isConsctructor(bind::fname(body_elem->right())))) { - matching[body_elem->right()] = body_elem->left(); - return true; - } + } + if ((elem->left()->arity() == 1) && !(isConstructor(bind::fname(elem->left())))) { + matching[elem->left()] = elem->right(); + return true; + } + else if ((elem->right()->arity() == 1) && !(isConstructor(bind::fname(elem->right())))) { + matching[elem->right()] = elem->left(); + return true; + } return false; } - // find possible substitutions from body (add to cnj otherwise) - void findMatchingFromBody(HornRuleExt chc, ExprMap &matching, ExprVector &cnj) { - if (chc.body->arity() > 1 && !findMatchingFromBodyElement(chc, chc.body, matching)) { - for(int j = 0; j < chc.body->arity(); ++j) { - Expr body_elem = chc.body->arg(j); - if (!isOpX(body_elem) || !findMatchingFromBodyElement(chc, body_elem, matching)) { - cnj.push_back(body_elem); + bool findMatchingFromRule(HornRuleExt chc, ExprMap &matching, Expr rule) { + if (isOpX(rule)) { + rule = rule->left(); + } + if (isOpX(rule)) { + for(int j = 0; j < rule->arity(); ++j) { + Expr elem = rule->arg(j); + if (isOpX(elem) && findMatchingFromElement(chc, elem, matching)) { + return true; } } } else { - if (!isOpX(chc.body) || findMatchingFromBodyElement(chc, chc.body, matching)) { - cnj.push_back(chc.body); + if (isOpX(rule) && findMatchingFromElement(chc, rule, matching)) { + return true; } } + return false; } - bool isConsctructor(Expr elem) { + bool isConstructor(Expr elem) { return std::find(constructors.begin(), constructors.end(), elem) != constructors.end(); } - void findMatchingFromLeftSideElem(Expr elem, ExprMap &matching) { - if (isOpX(elem)) { - if (elem->left()->arity() == 1 && !(isConsctructor(bind::fname (elem->left())))) { - matching[elem->left()] = elem->right(); - } - else if (elem->right()->arity() == 1 && !(isConsctructor(bind::fname (elem->right())))) { - matching[elem->right()] = elem->left(); - } - } - } - - void findMatchingFromLeftSide(Expr left, ExprMap &matching) { - if (isOpX(left)) { - for (int i = 0; i < left->arity(); ++i) { - findMatchingFromLeftSideElem(left->arg(i), matching); - } - } - else { - findMatchingFromLeftSideElem(left, matching); - } - } - Expr createDestination(HornRuleExt chc) { int ind = values_inds[chc.dstRelation->left()]; ExprVector types; @@ -150,40 +144,129 @@ namespace ufo return destination; } - bool createQueries() { - // creating assumptions + Expr convertToFunction(HornRuleExt chc) { + ExprVector cnj; + ExprMap matching; + Expr destination = bind::fapp (chc.dstRelation, chc.dstVars); + if (decls.find(chc.dstRelation) != decls.end()) { + destination = createDestination(chc); + interpretations[chc.dstRelation] = destination; + } + replaceDeclsInLeftPart(chc, cnj); + cnj.push_back(chc.body); + Expr asmpt = mk(conjoin(cnj, efac), destination); + while (!isOpX(asmpt) && findMatchingFromRule(chc, matching, asmpt)) { + asmpt = replaceAll(asmpt, matching); + asmpt = simplifyBool(asmpt); + matching.clear(); + } + asmpt = simplifyArithm(asmpt); + if (asmpt->arity() > 0) { + asmpt = createQuantifiedFormula(asmpt, constructors); + } + return asmpt; + } + + bool createAndCheckDefinition(Expr &decl) { + ExprVector current_assumptions = assumptions; for (auto & chc : chcs) { - if (!chc.isQuery) { - ExprVector cnj; - ExprMap matching; - createLeftConjs(chc, cnj); - findMatchingFromBody(chc, matching, cnj); - Expr destination = bind::fapp (chc.dstRelation, chc.dstVars); - int ind; - if (decls.find(chc.dstRelation) != decls.end()) { - destination = createDestination(chc); - } - Expr asmpt = mk(conjoin(cnj, efac), destination); - asmpt = replaceAll(asmpt, matching); - - // trying substitute equalities from left side to the right one - matching.clear(); - Expr left = asmpt->left(); - findMatchingFromLeftSide(left, matching); - - // outs() << *asmpt << "\n"; - asmpt = replaceAll(asmpt, matching); - asmpt = simplifyArithm(asmpt); - asmpt = simplifyBool(asmpt); - if (asmpt->arity() > 0) { - asmpt = createQuantifiedFormula(asmpt, constructors); + if (chc.dstRelation == decl && chc.isFact) { + for (int i = 0; i < chc.dstVars.size(); ++i) { + // inductive variable should be an adt + if (adts.find(bind::typeOf(chc.dstVars[i])) != adts.end()) { + Expr baseConstructor = baseConstructors[bind::typeOf(chc.dstVars[i])]; + int baseConstructorArity = baseConstructor->arity() - 1; + for(int j = 0; j < chc.body->arity(); ++j) { + Expr body_elem = chc.body->arg(j); + if (isOpX(body_elem)) { + if ((body_elem->left() == chc.dstVars[i] && body_elem->right()->arity() == baseConstructorArity) || + (body_elem->right() == chc.dstVars[i] && body_elem->left()->arity() == baseConstructorArity)) { + + Expr base_asmpt = convertToFunction(chc); + baseDefinitions[decl] = base_asmpt; + + Expr indConstructor = indConstructors[bind::typeOf(chc.dstVars[i])]; + if (indConstructor == NULL) { + assumptions.push_back(base_asmpt); + return true; + } + int indConstructorArity = indConstructor->arity() - 1; + ExprVector lemmas; + + // we should check that this variable is inductive in inductive rule + for (auto & ind_chc : chcs) { + if (ind_chc.dstRelation == decl && !ind_chc.isFact) { + for (int k = 0; k < ind_chc.srcRelations.size(); ++k) { + if (ind_chc.srcRelations[k] == decl) { + Expr elem = ind_chc.body; + bool shouldBeChecked = false; + if (isOpX(elem)) { + if ((elem->left() == ind_chc.dstVars[i] && elem->right()->arity() == indConstructorArity) || + (elem->right() == ind_chc.dstVars[i] && elem->left()->arity() == indConstructorArity)) { + shouldBeChecked = true; + } + } + else { + for(int m = 0; m < ind_chc.body->arity(); ++m) { + Expr ind_body_elem = ind_chc.body->arg(m); + if (isOpX(ind_body_elem)) { + // TODO: add comparison of src vars with conctructor + if ((ind_body_elem->left() == ind_chc.dstVars[i] && ind_body_elem->right()->arity() == indConstructorArity) || + (ind_body_elem->right() == ind_chc.dstVars[i] && ind_body_elem->left()->arity() == indConstructorArity)) { + shouldBeChecked = true; + } + } + } + } + if (shouldBeChecked) { + Expr ind_asmpt = convertToFunction(ind_chc); + indDefinitions[decl] = ind_asmpt; + bool foundRecursiveDefinition = true; + // We should check that for all rules (including non-definitive) this definition is correct + for (auto & rule : chcs) { + if (rule.dstRelation == decl) { + Expr goal = convertToFunction(rule); + current_assumptions.clear(); + current_assumptions = assumptions; + current_assumptions.push_back(baseDefinitions[decl]); + current_assumptions.push_back(indDefinitions[decl]); + if (!prove (current_assumptions, goal)) { + foundRecursiveDefinition = false; + break; + } + else { + lemmas.push_back(goal); + } + } + } + if (foundRecursiveDefinition == true) { + for (auto & lemma : lemmas) { + assumptions.push_back(lemma); + } + return true; + } + } + } + } + } + } + } + } + } + } } - // outs() << "new assumption: " << *asmpt << "\n"; - assumptions.push_back(asmpt); } } + return false; + } + + bool createAndCheckInterpretations() { + // creating assumptions + for (auto & decl : ordered_decls) { + createAndCheckDefinition(decl); + } - // creating queries for ADT-ind + // creating goals for ADT-ind from CHC-queries for (auto & chc : chcs) { if (chc.isQuery) { Expr destination; @@ -191,11 +274,12 @@ namespace ufo ExprMap matching; if (chc.body->arity() > 1) { for(int j = 0; j < chc.body->arity(); ++j) { - if (isOpX(chc.body->arg(j))) { - destination = mkNeg(chc.body->arg(j)); + Expr body_elem = chc.body->arg(j); + if (isOpX(body_elem)) { + destination = mkNeg(body_elem); } else { - cnj.push_back(chc.body->arg(j)); + cnj.push_back(body_elem); } } } @@ -215,94 +299,34 @@ namespace ufo types.push_back(bind::typeOf(destination->arg(ind + 1))); Expr rel = bind::fdecl (efac.mkTerm(destination->left()->left()->op()), types); Expr baseApp = bind::fapp (rel, newVars); - // outs() << "DESTINATION " << *destination <<" " << destination->arity() << ind<< "\n"; destination = mk(baseApp, destination->arg(ind + 1)); - // outs() << *destination << "\n"; - } - - for (int i = 0; i < chc.srcRelations.size(); i++) { - if (decls.find(chc.srcRelations[i]) != decls.end()) { - int ind = values_inds[chc.srcRelations[i]->left()]; - Expr app = createNewApp(chc, i, ind); - matching[chc.srcVars[i][ind]] = app; - } - else { - Expr tmp = bind::fapp (chc.srcRelations[i], chc.srcVars[i]); - cnj.push_back(tmp); - } } - Expr goal = replaceAll(mk(conjoin(cnj, efac), destination), matching); - matching.clear(); - Expr left = goal->left(); - - // outs() << "GOAL: \n"; - // outs() << *goal << "\n"; - // findMatchingFromLeftSide(left, matching); - // goal = replaceAll(goal, matching); - // goal = simplifyBool(goal); - // matching.clear(); - - // outs() << "GOAL: \n"; - // outs() << *goal << "\n"; - // findMatchingFromLeftSide(goal->left(), matching); - // goal = replaceAll(goal, matching); - // goal = simplifyBool(goal); - // matching.clear(); - - // outs() << "GOAL: \n"; - // outs() << *goal << "\n"; - findMatchingFromLeftSide(goal->left(), matching); - goal = replaceAll(goal, matching); -// goal = simplifyArithm(goal); - goal = simplifyBool(goal); - // if (goal->arity() > 0) { - // goal = createQuantifiedFormula(goal, constructors); - // } + replaceDeclsInLeftPart(chc, cnj); + Expr goal = mk(conjoin(cnj, efac), destination); + while (!isOpX(goal) && findMatchingFromRule(chc, matching, goal)) { + goal = replaceAll(goal, matching); + goal = simplifyBool(goal); + matching.clear(); + } ExprVector current_assumptions = assumptions; - // outs() << "assumptions:\n"; - // for (auto & a : current_assumptions) { - // outs() << *a << "\n"; - // } - // outs() << "goal: \n"; - // outs() << *goal << "\n"; + goal = createQuantifiedFormula(goal, constructors); + // Check if the goal may be proved in current interpretations if (!prove (current_assumptions, goal)) { - // outs() << "CANT PROVE" << *goal << "\n"; return false; } else { assumptions.push_back(goal); } } - else { - ExprVector cnj; - ExprMap matching; - createLeftConjs(chc, cnj); - findMatchingFromBody(chc, matching, cnj); - Expr destination = bind::fapp (chc.dstRelation, chc.dstVars); - ExprVector vars = chc.dstVars; - if (decls.find(chc.dstRelation) != decls.end()) { - destination = createDestination(chc); - } - Expr goal = mk(conjoin(cnj, efac), destination); - goal = replaceAll(goal, matching); - goal = simplifyArithm(goal); - goal = simplifyBool(goal); - ExprVector current_assumptions = assumptions; - // outs() << "assumptions:\n"; - // for (auto & a : current_assumptions) { - // outs() << *a << "\n"; - // } - // outs() << "goal: \n"; - // outs() << *goal << "\n"; - if (!prove (current_assumptions, goal)) { - // outs() << "CANT PROVE\n"; - return false; - } - } + } + for (auto & decl : ordered_decls) { + outs() << interpretations[decl] << "\n"; + outs() << baseDefinitions[decl] << "\n"; + outs() << indDefinitions[decl] << "\n"; } return true; - } + } int baseVar(Expr &decl) { for (auto & chc : chcs) { @@ -318,25 +342,32 @@ namespace ufo } } } - } + } } } } return -1; } - void orderDecls(Expr decl, ExprSet &cur_decls) { + // result is written to ordered_decls + // cur_decls is used to find the mutual recursion + bool orderDecls(Expr decl, ExprSet &cur_decls) { + // Already contains this decl if (std::find(ordered_decls.begin(), ordered_decls.end(), decl) != ordered_decls.end()) - return; + return true; cur_decls.insert(decl); for (auto & chc : chcs) { if (chc.dstRelation == decl && !chc.isFact) { for (int i = 0; i < chc.srcRelations.size(); i++) { + // if the src symbol is already in ordered_decls do nothing if (chc.srcRelations[i] != decl && std::find(ordered_decls.begin(), ordered_decls.end(), chc.srcRelations[i]) == ordered_decls.end()) { + // there is a mutual recursion, for now we cannot handle this if (cur_decls.find(chc.srcRelations[i]) != cur_decls.end()) { - ordered_decls.push_back(chc.srcRelations[i]); + outs () << "could not order predicates -- mutual recursion is not supported\n"; + return false; } else { + // current predicate depends on another, so we need to push this another predicate earlier orderDecls(chc.srcRelations[i], cur_decls); } } @@ -344,7 +375,7 @@ namespace ufo } } ordered_decls.push_back(decl); - + return true; } // Get indexes in right order and remove the base index @@ -387,13 +418,43 @@ namespace ufo } } - bool returnValues(int idx, ExprVector &decls, std::map &buf) { - if (idx >= decls.size()) { + void setConstructors() { + for (auto & a : constructors) { + Expr type = a->last(); + bool ind = false; + for (int i = 0; i < a->arity() - 1; i++) + { + if (a->last() == a->arg(i)) + { + ind = true; + if (indConstructors[type] != NULL && indConstructors[type] != a) + { + outs () << "Several inductive constructors are not supported\n"; + exit(1); + } + indConstructors[type] = a; + } + } + if (!ind) + { + if (baseConstructors[type] != NULL && baseConstructors[type] != a) + { + outs () << "Several base constructors are not supported\n"; + exit(1); + } + baseConstructors[type] = a; + } + } + } + + bool findInterpretations(int idx, std::map &buf) { + if (idx >= ordered_decls.size()) { values_inds = buf; assumptions.clear(); - return createQueries(); + return createAndCheckInterpretations(); } - Expr cur = decls[idx]; + // Get the possible version of return variables + Expr cur = ordered_decls[idx]; for (auto & chc : chcs) { if (chc.dstRelation == cur) { size_t vars_size = chc.dstRelation->arity(); @@ -408,7 +469,7 @@ namespace ufo for (int i = idxs.size() - 1; i >= 0; --i) { buf[chc.dstRelation->left()] = idxs[i]; // outs() << *chc.dstRelation->left() << " " << idxs[i] << "\n"; - if (returnValues(idx + 1, decls, buf)) + if (findInterpretations(idx + 1, buf)) return true; } break; @@ -418,64 +479,16 @@ namespace ufo } bool solve() { - // find the return value for uninterpreted symbols (keep it in values_inds map) - int index = 0; + // Order current uninterpreted predicate symbols for (auto & decl: decls) { // outs() << *decl << "\n"; ExprSet cur_decls; - orderDecls(decl, cur_decls); + if (!orderDecls(decl, cur_decls)) + return false; } + setConstructors(); std::map buf; - return returnValues(0, ordered_decls, buf); - // for (auto & decl: decls) { - // if (decl->arity() <= 3) { - // continue; - // } - // for (auto & chc : chcs) { - // if (chc.dstRelation == decl && !chc.isFact) { - // // TODO: think about return value when there are only adt vars - // // std::vector adt_inds; - // size_t vars_size = chc.dstRelation->arity(); - // // bool found = false; - // // for (size_t i = vars_size - 2; i > 0; --i) { - // // bool is_adt = false; - // // for (auto & adt : adts) { - // // if ((*chc.dstRelation)[i] == adt) { - // // is_adt = true; - // // adt_inds.push_back(i - 1); - // // break; - // // } - // // } - // // if (!is_adt) { - // // values_inds[chc.dstRelation->left()] = i - 1; - // // found = true; - // // break; - // // } - // // } - // // if (!found) { - // // for (int i = 0; i < chc.srcRelations.size(); i++) { - // // if (chc.srcRelations[i] == decl) { - // // for (int j = 0; j < adt_inds.size(); ++j) { - // // size_t ind = adt_inds[j]; - // // Expr eq1 = mk(chc.srcVars[0][ind], chc.dstVars[ind]); - // // Expr eq2 = mk(chc.dstVars[ind], chc.srcVars[0][ind]); - // // if (!contains(chc.body, eq1) && !contains(chc.body, eq2)) { - // // values_inds[chc.dstRelation->left()] = ind; - // // found = true; - // // break; - // // } - // // } - // // break; - // // } - // // } - // // } - // // if (!found) { - // values_inds[chc.dstRelation->left()] = vars_size - 3; - // // } - // break; - // } - // } - // } + return findInterpretations(0, buf); } bool solveArr(){ @@ -541,7 +554,7 @@ namespace ufo return true; } - bool checkCHC(HornRuleExt& hr, bool print = false){ + bool checkCHC(HornRuleExt& hr, bool print = false) { ExprVector assms = assumptions; Expr goal = hr.isQuery ? mk(efac) : bind::fapp (hr.dstRelation, hr.dstVars); for (int i = 0; i < hr.srcRelations.size(); i++){ @@ -553,7 +566,7 @@ namespace ufo bool prove (ExprVector& lemmas, Expr fla, int rounds = 2, bool print = false) { - ADTSolver sol (fla, lemmas, constructors, 5, 2, 3, 1, print); // last false is for verbosity + ADTSolver sol (fla, lemmas, constructors); // last false is for verbosity return isOpX(fla) ? sol.solve() : sol.solveNoind(rounds); } }; @@ -565,10 +578,9 @@ namespace ufo CHCs ruleManager(efac, z3); ExprSet adts; ruleManager.parse(smt_file); - // ruleManager.print(); + // ruleManager.print(); ExprVector constructors; - ExprVector assumptions; ExprSet& decls = ruleManager.decls; @@ -577,7 +589,7 @@ namespace ufo adts.insert(a->last()); } - CHCSolver sol (constructors, adts, efac, decls, ruleManager.extras, ruleManager.chcs, + CHCSolver sol (constructors, adts, efac, decls, ruleManager.extras, ruleManager.chcs, givePriorityNonAdt, ignoreBaseVar); bool res = containsOp(conjoin(decls, efac)) ? sol.solveArr() : sol.solve(); outs () << (res ? "sat\n" : "unknown\n"); diff --git a/include/ae/AeValSolver.hpp b/include/ae/AeValSolver.hpp index bc2e62b26..4a199fc6a 100644 --- a/include/ae/AeValSolver.hpp +++ b/include/ae/AeValSolver.hpp @@ -235,7 +235,7 @@ namespace ufo } instantiations.push_back(conjoin(cnjs, efac)); - if (debug) outs() << "Sanity check [" < (s,mk (projections[i], instantiations[i])), t) << "\n"; + if (debug) outs() << "Sanity check [" < (s,mk (projections[i], instantiations[i])), t) << "\n"; } Expr sk = mk(efac); @@ -246,7 +246,7 @@ namespace ufo Expr skol = simplifiedAnd(skolSkope, sk); - if (true) outs() << "Sanity check: " << u.implies(mk(s, skol), t) << "\n"; + if (true) outs() << "Sanity check: " << (bool)u.implies(mk(s, skol), t) << "\n"; return skol; } @@ -462,7 +462,7 @@ namespace ufo Expr getDefaultAssignment(Expr var) { if (bind::isBoolConst(var)) return mk(efac); - if (bind::isIntConst(var)) return mkTerm (mpz_class (0), efac); + if (bind::isIntConst(var)) return mkMPZ(0, efac); else // that is, isRealConst(var) == true return mkTerm (mpq_class (0), efac); } @@ -473,10 +473,10 @@ namespace ufo Expr getPlusConst(Expr e, bool isInt, cpp_int c) { if (isOpX(e) && isInt) - return mkTerm (mpz_class (string (c + boost::lexical_cast (e))), efac); + return mkMPZ(c + boost::lexical_cast (e), efac); - Expr ce = isInt ? mkTerm (mpz_class (string(c)), efac) : - mkTerm (mpq_class (string(c)), efac); + Expr ce = isInt ? mkMPZ(c, efac) : + mkTerm (mpq_class (lexical_cast(c)), efac); return mk(e, ce); } diff --git a/include/ae/ExprSimpl.hpp b/include/ae/ExprSimpl.hpp index ca12fe54b..5165d35a5 100644 --- a/include/ae/ExprSimpl.hpp +++ b/include/ae/ExprSimpl.hpp @@ -1,7 +1,7 @@ #ifndef EXPRSIMPL__HPP__ #define EXPRSIMPL__HPP__ #include -#include + #include "ufo/Smt/EZ3.hh" using namespace std; @@ -92,26 +92,56 @@ namespace ufo } } - inline static void getCounters (Expr a, ExprVector &cntrs) + inline static Expr distribDisjoin(Expr d1, Expr d2) { - if (isOpX(a) || isOpX(a)) + && !containsOp(t))) + { + int indl = getVarIndex(t->left(), vars); + int indr = getVarIndex(t->right(), vars); + + Expr key = t; + if (indl >= 0) key = replaceAll(key, t->left(), vars[indl]); + if (indr >= 0) key = replaceAll(key, t->right(), vars[indr]); + + if (isOpX(t->left()) && lexical_cast(t->left()) == 0) + return mkMPZ (0, t->getFactory()); + + if (extraVars[key] == NULL) + { + Expr new_name = mkTerm ("__e__" + to_string(extraVars.size()), t->getFactory()); + Expr var = intConst(new_name); + extraVars[key] = var; + } + return extraVars[key]; + } + return t; + } + }; + + inline static Expr findNonlinAndRewrite (Expr exp, ExprVector& vars, ExprMap& extraVars, bool arrays = false) + { + RW mu(new FindNonlinAndRewrite(vars, extraVars, arrays)); + return dagVisit (mu, exp); + } + + struct FindNonlin : public std::unary_function { bool found; - FindArray () : found (false) {} + FindNonlin () : found (false) {} VisitAction operator() (Expr exp) { if (found) { + found = true; return VisitAction::skipKids (); } else if (isConst (exp)) @@ -1688,13 +2044,28 @@ namespace ufo found = true; return VisitAction::skipKids (); } + else if (isOpX(exp) || isOpX(exp) || isOpX
(exp) || isOpX(exp)) + { + int v = 0; + for (unsigned j = 0; j < exp->arity(); j++) + { + Expr q = exp->arg(j); + if (isIntConst(q)) v++; // GF: a simple counter, to extend + } + + if (v > 1) + { + found = true; + return VisitAction::skipKids (); + } + } return VisitAction::doKids (); } }; - inline bool findArray (Expr e1) + inline bool findNonlin (Expr e1) { - FindArray fn; + FindNonlin fn; dagVisit (fn, e1); return fn.found; } @@ -1726,6 +2097,26 @@ namespace ufo return c.size(); } + Expr projectITE(Expr ite, Expr var) + { + if (isOpX(ite)) + { + return mk(ite->arg(0), projectITE(ite->arg(1), var), projectITE(ite->arg(2), var)); + } + else + { + ExprSet cnjs; + getConj(ite, cnjs); + for (auto & a : cnjs) + { + if (a->left() == var) return a->right(); + else if (a->right() == var) return a->left(); + } + + assert(0); + } + } + inline static void productAnd (ExprSet& as, ExprSet& bs, ExprSet& ps) { for (auto &a : as) @@ -1747,7 +2138,7 @@ namespace ufo int maxConjs = 0; ExprSet disjs; getDisj(exp, disjs); - if (disjs.size() == 1) + if (disjs.size() <= 1) return disjoin(disjs, exp->getFactory()); vector dconjs; @@ -1811,40 +2202,147 @@ namespace ufo return NULL; } - inline static bool hasBoolSort(Expr e) + inline static void cloneVector(ExprVector& src, ExprVector& dst, string new_prefix) { - if (isBoolConst(e) || isOp(e)) return true; - return false; + assert (dst.empty()); + for (int i = 0; i < src.size(); i++) + { + Expr new_name = mkTerm (new_prefix + lexical_cast(src[i]), src[i]->getFactory()); + dst.push_back(cloneVar(src[i], new_name)); + } } - inline static Expr convertToGEandGT(Expr fla) + inline static bool isBool(Expr e) { - Expr lhs = fla->left(); - Expr rhs = fla->right(); - - if (isOpX(fla)) return mkNeg(convertToGEandGT(lhs)); + return typeOf(e) == mk(e->getFactory()); + } - if (isOpX(fla)) return mk(rhs, lhs); + inline Expr rewriteDivConstraints(Expr fla) + { + // heuristic for the divisibility constraints + assert (isOp(fla)); + ExprVector plusOpsLeft; + ExprVector plusOpsRight; + getAddTerm(fla->left(), plusOpsLeft); + getAddTerm(fla->right(), plusOpsRight); + Expr lhs = NULL; + for (auto & a : plusOpsRight) plusOpsLeft.push_back(additiveInverse(a)); + plusOpsRight.clear(); + for (auto it1 = plusOpsLeft.begin(); it1 != plusOpsLeft.end(); ) + { + if (isOpX(*it1)) + { + lhs = *it1; + plusOpsLeft.erase(it1); + for (auto & a : plusOpsLeft) plusOpsRight.push_back(additiveInverse(a)); + break; + } + if (isOpX(*it1) && isOpX((*it1)->left())) + { + lhs = (*it1)->left(); + plusOpsLeft.erase(it1); + for (auto & a : plusOpsLeft) plusOpsRight.push_back(a); + break; + } + ++it1; + } - if (isOpX(fla)) return mk(rhs, lhs); + if (lhs == NULL) return fla; + Expr rhs = mkplus(plusOpsRight, fla->getFactory()); if (isOpX(fla)) - { - if (hasBoolSort(lhs)) return - mk(mk(lhs, rhs), - mk(mkNeg(lhs), mkNeg(rhs))); - else if (isNumeric(lhs)) return mk( - mk(lhs, rhs), mk(rhs, lhs)); - else return fla; - } + return mk(mk(lhs->left(), mk(lhs->right(), rhs)), + mk(mk (mk(lhs->right(), rhs), lhs->right()), lhs->left())); + else if (isOpX(fla)) + return mk(mk(mk(lhs->right(), rhs), lhs->left()), + mk(lhs->left(), mk (mk(lhs->right(), rhs), lhs->right()))); + return fla; + } - if (isOpX(fla)) + inline Expr rewriteModConstraints(Expr fla) + { + // heuristic for the divisibility constraints + assert (isOp(fla)); + ExprVector plusOpsLeft; + ExprVector plusOpsRight; + getAddTerm(fla->left(), plusOpsLeft); + getAddTerm(fla->right(), plusOpsRight); + Expr lhs = NULL; + for (auto & a : plusOpsRight) plusOpsLeft.push_back(additiveInverse(a)); + plusOpsRight.clear(); + cpp_int c1, c2; + for (auto it1 = plusOpsLeft.begin(); it1 != plusOpsLeft.end(); ) + { + if (isOpX(*it1)) + { + Expr d = simplifyArithm((*it1)->last()); + if (isNumericConst(d)) + { + lhs = replaceAll(*it1, (*it1)->last(), d); + c1 = lexical_cast(d); + plusOpsLeft.erase(it1); + for (auto & a : plusOpsLeft) plusOpsRight.push_back(additiveInverse(a)); + plusOpsLeft.clear(); + break; + } + } + ++it1; + } + if (!plusOpsLeft.empty() || lhs == NULL) return fla; + + Expr rhs = mkplus(plusOpsRight, fla->getFactory()); + rhs = simplifyArithm(rhs); + if (isNumericConst(rhs)) c2 = lexical_cast(rhs); + else return fla; + + ExprSet dsjs; + for (auto i = 0; i < c1; i++) + if (evaluateCmpConsts(fla, i, c2)) + dsjs.insert(mk(lhs, mkMPZ(i, fla->getFactory()))); + + fla = disjoin(dsjs, fla->getFactory()); + return fla; + } + + inline static Expr convertToGEandGT(Expr fla) + { + Expr lhs = fla->left(); + Expr rhs = fla->right(); + + if (isOpX(fla)) return mkNeg(convertToGEandGT(lhs)); + + if (isOpX(fla)) return mk(rhs, lhs); + + if (isOpX(fla)) return mk(rhs, lhs); + + if (isOpX(fla)) { - if (hasBoolSort(lhs)) return + if (isBool(lhs)) return + mk(mk(lhs, rhs), + mk(mkNeg(lhs), mkNeg(rhs))); + else if (isNumeric(lhs)) { + // heuristic for the divisibility constraints + if (isOpX(rhs) || isOpX(lhs)) { + return rewriteDivConstraints(fla); + } + else + return mk(mk(lhs, rhs), mk(rhs, lhs)); + } + else return fla; + } + + if (isOpX(fla)) + { + if (isBool(lhs)) return mk(mk(lhs, mkNeg(rhs)), mk(mkNeg(lhs), rhs)); - else if (isNumeric(lhs)) return mk( + else if (isNumeric(lhs)) { + if (isOpX(rhs) || isOpX(lhs)) { + return rewriteDivConstraints(fla); + } + else return mk( mk(lhs, rhs), mk(rhs, lhs)); + } else return fla; } @@ -1950,7 +2448,7 @@ namespace ufo inline static Expr unfoldITE(Expr term) { - if (isOpX(term)) + if (isOpX(term) && isBool (term->last())) { Expr iteCond = unfoldITE (term->arg(0)); Expr iteC1 = unfoldITE (term->arg(1)); @@ -2233,6 +2731,25 @@ namespace ufo } }; + struct SelectStoreRewriterHelpRepairer + { + Expr ind; + ExprFactory& efac; + SelectStoreRewriterHelpRepairer (Expr _ind) : + ind(_ind), efac(ind->getFactory()) {}; + + Expr operator() (Expr exp) + { + if (isOpX(exp) && isOpX(exp->left()->left(), exp->right())); } - if (isOpX(exp) && isOpX(exp->right())) + + // to avoid this, try unfoldITE first + if (containsOp(exp)) return exp; + + Expr sel, val; + if (isOpX(exp)) { - ExprSet tmp; - tmp.insert(rewriteSelectStore(mk(exp->left(), exp->right()->left()))); - tmp.insert(mk(exp->right()->last(), mk(exp->right(), exp->left()->right()))); - return conjoin (tmp, exp->getFactory()); + Expr main = mk(sel->last(), mk(arrVar, indVar), valVar)); + return arrVar; + } + + struct TransitionOverapprox + { + ExprVector& srcVars; + ExprVector& dstVars; + + TransitionOverapprox (ExprVector& _srcVars, ExprVector& _dstVars): + srcVars(_srcVars), dstVars(_dstVars) {}; + + Expr operator() (Expr exp) + { + if (isOp(exp) && !containsOp(exp)) + { + ExprSet tmp; + if (isOpX(exp->left())) + { + processNestedStores(exp->left(), tmp); + return conjoin(tmp, exp->getFactory()); + } + else if (isOpX(exp->right())) + { + processNestedStores(exp->right(), tmp); + return conjoin(tmp, exp->getFactory()); + } + + ExprVector av; + filter (exp, IsConst (), inserter(av, av.begin())); + if (!emptyIntersect(av, srcVars) && !emptyIntersect(av, dstVars)) + return mk(exp->getFactory()); + } + else if (isOpX(exp)) + { + ExprSet newDsjs; + for (unsigned i = 0; i < exp->arity (); i++) + { + ExprSet cnjs; + getConj(exp->arg(i), cnjs); + map sels; + bool allselects = true; + bool noselects = true; + for (auto & a : cnjs) + { + sels[a] = containsOp(exp) || isOpX(exp)) && !findArray(exp->right())) + if ((isOpX(v)) return typeOf(v->left())->right(); + if (isOpX(v)) return sort::arrayTy(typeOf(v->right()), typeOf(v->last())); + if (isOpX