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. Define substitute, which will take as input a list representing (a) a truth expression, (b) a variable, and (3) an element (of any type.) Substitute will replace all instances of the variable in the truth expression with that element. For example: (substitute '(C or (D or D)) 'D #f) should return '(C or (#f or #f)) and (substitute '(not ((B and A) or (A implies B))) 'B '(#t and C) ) should return '(not (((#t and X) and A) or (A implies (#t and 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!!!
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.
Define substitute, which will take as input a list representing (a) a truth expression, (b) a variable, and (3) an element (of any type.) Substitute will replace all instances of the variable in the truth expression with that element. For example: (substitute '(C or (D or D)) 'D #f) should return '(C or (#f or #f)) and (substitute '(not ((B and A) or (A implies B))) 'B '(#t and C) ) should return '(not (((#t and X) and A) or (A implies (#t and 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 3 steps
The test cases return
'(not #<void>)
'(not #<void>)
Thank you for your help. The test cases cases from the instructions return something different than supposed to.
substitute '(C or (D or D)) 'D #f) should return '(C or (#f or #f))
and (substitute '(not ((B and A) or (A implies B))) 'B '(#t and C) ) should return
'(not (((#t and X) and A) or (A implies (#t and C)))
Right now they return