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 Evaluate-WFF, which will take as input a formula of prepositional logic in which there are only truth values and no propositional variables, such as the following: (#t or (not #t)). Evaluate-WFF should return #t if the formula under the particular truth assignment evaluates to #t and false otherwise. By way of example, (Evaluate-WFF ‘(#t or (not #t)) should return #t and (Evaluate-WFF ‘(#t and (not #t) should return #f. 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.
Define Evaluate-WFF, which will take as input a formula of prepositional logic in which there are only truth values and no propositional variables, such as the following: (#t or (not #t)).
Evaluate-WFF should return #t if the formula under the particular truth assignment evaluates to #t and false otherwise. By way of example, (Evaluate-WFF ‘(#t or (not #t)) should return #t and (Evaluate-WFF ‘(#t and (not #t) should return #f.
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
Thank you very much. How could I get it to work with these test cases as well?
(Evaluate-WFF '(#t or (not #t))) ; returns #t
(Evaluate-WFF '(#t and (not #t))) ; returns #f