Question 7 Write a program that takes as input a proposition in propositional logic and evaluates its truth value, given the truth values of its constituent propositions. The program should be able to handle the standard propositional logic connectives (negation, conjunction, disjunction, implication, and equivalence). For example, given the input proposition "p q r", where "p", "q", and "r" are Boolean variables, the program should prompt the user to enter the truth values of "p", "q", and "r", and then evaluate the truth value of the proposition using the standard rules of propositional logic. The program should be able to handle propositions of arbitrary complexity, including nested connectives and propositions with multiple occurrences of the same variable. The program should also be able to handle propositions in which some of the constituent propositions do not have assigned truth values, in which case the program should prompt the user for these truth values. The program should output the truth value of the input proposition, as well as the truth tables for any sub-propositions that are evaluated during the evaluation process. The truth tables should show the truth values of all constituent propositions for each row of the table..