Racket code only please Using the logical operators, and, or, implies, not, and iff, and atoms representing truth values, we can make a list that would represent proposition: For instance: '(A and (not A)), or '((B iff (A or C)) implies (not (C implies A))) would represent the formal statements (?∧¬?) and ((? ≡(?∨?)→¬(? →?))). We use the following convention when we represent propositions in this way: for every operator – unary or binary – there corresponds at least one pair of parentheses defining its scope (and perhaps more). Thus, the lists ‘(A and not A) and (B iff A or C) are not permitted but ‘((A and ((not A))) and ‘(B iff (((A or C)))) are acceptable. 1. Define collect-prop-variables, which will take as input a list representing a proposition, and return a list, representing a set, of all the variables used in the expression. Example: (collect-prop-variables '(A and (not A))) should return '(A) and (collect-prop-variables '((B iff (A or C)) implies (not (C implies A))) ) should return '(A B C). No loops or hash please Allowed functions. Your code must use only the following functions: 1. define, let 2. lambda 3. cons, car, cdr, list, list?, append, empty?, length, equal? 4. and, or, not 5. if, cond 6. map, append-map, andmap, ormap, filter, begin 7. +, -, /, *
Racket code only please
Using the logical operators, and, or, implies, not, and iff, and atoms representing truth values,
we can make a list that would represent proposition: For instance: '(A and (not A)), or '((B iff (A or C)) implies (not (C implies A))) would represent the formal statements (?∧¬?) and ((? ≡(?∨?)→¬(? →?))).
We use the following convention when we represent propositions in this way: for every operator
– unary or binary – there corresponds at least one pair of parentheses defining its scope (and
perhaps more). Thus, the lists ‘(A and not A) and (B iff A or C) are not permitted but ‘((A and
((not A))) and ‘(B iff (((A or C)))) are acceptable.
1. Define collect-prop-variables, which will take as input a list representing a proposition, and return a list, representing a set, of all the variables used in the expression. Example: (collect-prop-variables '(A and (not A))) should return '(A) and (collect-prop-variables '((B iff (A or C)) implies (not (C implies A))) ) should return '(A B C).
No loops or hash please
Allowed functions. Your code must use only the following functions:
1. define, let
2. lambda
3. cons, car, cdr, list, list?, append, empty?, length, equal?
4. and, or, not
5. if, cond
6. map, append-map, andmap, ormap, filter, begin
7. +, -, /, *
Thank you!!!
Trending now
This is a popular solution!
Step by step
Solved in 2 steps