clause('light_l ')assumable('ok_l ')assumable('ok_l ')assumable('ok_s ')assumable('ok_s ')assumable('ok_s ')assumable('ok_cb ')assumable('ok_cb ')assumable('live_outside')clause('live_l '['live_w '])clause('live_w '['up_s ','ok_s ','live_w '])clause('live_w '['down_s ','ok_s ','live_w '])clause('live_w '['up_s ''ok_s ''live_w '])clause('live_w '['down_s ''ok_s ','live_w ])clause('live_l '['live_w '])clause('live_w '['up_s ','ok_s ','live_w ])clause('live_p_ '['live_w '])clause('live_w '['live_w ''ok_cb '])clause('live_p_ '['live_w '])clause('live_w '['live_w ''ok_cb '])clause('live_w '['live_outside'])clause('lit_l '['light_l ''live_l ''ok_l '])clause('lit_l '['light_l ''live_l ''ok_l '])askable('up_s ')askable('down_s ')askable('up_s ')askable('down_s ')askable('up_s ')askable('down_s ')askable('dark_l ')askable('dark_l ')clause('false'['dark_l ''lit_l '])clause('false'['dark_l ''lit_l ']]electa prove_all_ass(['false']cs=electa conflicts(print(csdiagnoses(csdiagnoses from conflicts exercise to implement version of conflicts that never generates non-minimal conflictsmodify prove all ass to implement iterative deepening on the number of assumables used in proofand prune any set of assumables that is superset of conflict exercise implement explanations(self body)where body is list of atomsthat returns the list of the minimal explanations of the body this does not require modification of prove all ass exercise implement explanationsas in the previous questionso that it never generates non-minimal explanations hintmodify prove all ass to implement iterversion june