planning with certainty figure blocks problem blocks tower {clear(' '):trueon(' '):' 'clear(' '):falseon(' '):' 'clear(' '):falseon(' '):' 'clear(' '):falseon(' '):'table'blocks planning_problem(blocks domtower initial state {on(' '):' ',on(' '):' ',on(' '):' '}#goal the problem blocks is to move the bottom block to the top of tower of size stripsproblem py -(continued blocks planning_problem(blocks domtower initial state {on(' '):' 'on(' '):' 'on(' '):' '}#goal exercise represent the problem of given tower of blocks ( on on on on table)the goal is to have tower with the previous top block on the bottom ( on on on ado not include the table in your goal (the goal does not care whether is on the table[before you run the programestimate how many steps it will take to solve this how many steps does an optimal planner takeexercise represent the domain so that on(xyis boolean feature that is true when is on ydoes the representation of the state need to not include negative on factswhy or why not(note that this may depend on the plannerwrite your answer with respect to particular planners exercise it is possible to write the representation of the problem without using clearwhere clear(xmeans nothing is on change the definition of the blocks world so that it does not use clear but uses on being false instead does this work better for any of the planners forward planning to run the demoin folder "aipython"load "stripsforwardplanner py"and copy and paste the commentedout example queries at the bottom of that file version june