// Numbas version: finer_feedback_settings {"name": "Luis's copy of Truth tables 4 (v2)", "extensions": [], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "question_groups": [{"pickingStrategy": "all-ordered", "questions": [{"statement": "

In the following question you are asked to construct a truth table for:

\n

\\[((\\var{a} \\var{op} \\var{b})\\var{op1}(\\var{a1} \\var{op2} \\var{b1}))\\var{op4}\\var{a2}.\\]

\n

\n

Enter T if true, else enter F.

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

", "variablesTest": {"maxRuns": "150", "condition": "a1 <>b1 and\nif(a='p' or a='\\\\neg p',b=random('q','\\\\neg q'),b=random('p','\\\\neg p'))\n"}, "tags": [], "metadata": {"notes": "", "description": "

Create a truth table for a logical expression of the form $((a \\operatorname{op1} b) \\operatorname{op2}(c \\operatorname{op3} d))\\operatorname{op4}e $ where each of $a, \\;b,\\;c,\\;d,\\;e$ can be one the Boolean variables $p,\\;q,\\;r,\\;\\neg p,\\;\\neg q,\\;\\neg r$ and each of $\\operatorname{op1},\\;\\operatorname{op2},\\;\\operatorname{op3},\\;\\operatorname{op4}$ one of $\\lor,\\;\\land,\\;\\to$.

\n

For example: $((q \\lor \\neg r) \\to (p \\land \\neg q)) \\land \\neg r$

", "licence": "Creative Commons Attribution 4.0 International"}, "parts": [{"variableReplacements": [], "gaps": [{"variableReplacements": [], "answer": "{final_value[0]}", "marks": 1, "type": "patternmatch", "showCorrectAnswer": true, "scripts": {}, "displayAnswer": "{final_value[0]}", "variableReplacementStrategy": "originalfirst"}, {"variableReplacements": [], "answer": "{final_value[1]}", "marks": 1, "type": "patternmatch", "showCorrectAnswer": true, "scripts": {}, "displayAnswer": "{final_value[1]}", "variableReplacementStrategy": "originalfirst"}, {"variableReplacements": [], "answer": "{final_value[2]}", "marks": 1, "type": "patternmatch", "showCorrectAnswer": true, "scripts": {}, "displayAnswer": "{final_value[2]}", "variableReplacementStrategy": "originalfirst"}, {"variableReplacements": [], "answer": "{final_value[3]}", "marks": 1, "type": "patternmatch", "showCorrectAnswer": true, "scripts": {}, "displayAnswer": "{final_value[3]}", "variableReplacementStrategy": "originalfirst"}, {"variableReplacements": [], "answer": "{final_value[4]}", "marks": 1, "type": "patternmatch", "showCorrectAnswer": true, "scripts": {}, "displayAnswer": "{final_value[4]}", "variableReplacementStrategy": "originalfirst"}, {"variableReplacements": [], "answer": "{final_value[5]}", "marks": 1, "type": "patternmatch", "showCorrectAnswer": true, "scripts": {}, "displayAnswer": "{final_value[5]}", "variableReplacementStrategy": "originalfirst"}, {"variableReplacements": [], "answer": "{final_value[6]}", "marks": 1, "type": "patternmatch", "showCorrectAnswer": true, "scripts": {}, "displayAnswer": "{final_value[6]}", "variableReplacementStrategy": "originalfirst"}, {"variableReplacements": [], "answer": "{final_value[7]}", "marks": 1, "type": "patternmatch", "showCorrectAnswer": true, "scripts": {}, "displayAnswer": "{final_value[7]}", "variableReplacementStrategy": "originalfirst"}], "marks": 0, "type": "gapfill", "showCorrectAnswer": true, "scripts": {}, "prompt": "

Complete the following truth table:

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
$p$$q$$r$$((\\var{a} \\var{op} \\var{b})\\var{op1}(\\var{a1} \\var{op2} \\var{b1}))\\var{op4}\\var{a2} $
$\\var{p[0]}$$\\var{q[0]}$$\\var{r[0]}$[[0]]
$\\var{p[1]}$$\\var{q[1]}$$\\var{r[1]}$[[1]]
$\\var{p[2]}$$\\var{q[2]}$$\\var{r[2]}$[[2]]
$\\var{p[3]}$$\\var{q[3]}$$\\var{r[3]}$[[3]]
$\\var{p[4]}$$\\var{q[4]}$$\\var{r[4]}$[[4]]
$\\var{p[5]}$$\\var{q[5]}$$\\var{r[5]}$[[5]]
$\\var{p[6]}$$\\var{q[6]}$$\\var{r[6]}$[[6]]
$\\var{p[7]}$$\\var{q[7]}$$\\var{r[7]}$[[7]]
", "variableReplacementStrategy": "originalfirst"}], "variables": {"bool_r": {"name": "bool_r", "definition": "list_to_boolean(list(logic_values[2]))", "group": "Truth values", "description": "", "templateType": "anything"}, "b": {"name": "b", "definition": "latex(latex_symbol_list[s[1]])", "group": "First Bracket", "description": "", "templateType": "anything"}, "logic_symbol_list": {"name": "logic_symbol_list", "definition": "[\"p\",\"q\",\"not p\",\"not q\",\"r\",\"not r\"]", "group": "Lists of symbols", "description": "", "templateType": "anything"}, "bool_q": {"name": "bool_q", "definition": "list_to_boolean(list(logic_values[1]))", "group": "Truth values", "description": "", "templateType": "anything"}, "a1": {"name": "a1", "definition": "latex(latex_symbol_list[s[2]])", "group": "Second Bracket", "description": "", "templateType": "anything"}, "a2": {"name": "a2", "definition": "latex(random(\"\\\\neg p\",\"\\\\neg q\",\"\\\\neg r\"))", "group": "Last ", "description": "", "templateType": "anything"}, "p": {"name": "p", "definition": "bool_to_label(list_to_boolean(list(logic_values[0])))", "group": "Truth values", "description": "", "templateType": "anything"}, "r": {"name": "r", "definition": "bool_to_label(list_to_boolean(list(logic_values[2])))", "group": "Truth values", "description": "", "templateType": "anything"}, "t_value": {"name": "t_value", "definition": "bool_to_label(pre_t_value)", "group": "First and Second Brackets", "description": "", "templateType": "anything"}, "s": {"name": "s", "definition": "repeat(random(0..5),6)", "group": "Lists of symbols", "description": "", "templateType": "anything"}, "logic_values": {"name": "logic_values", "definition": "transpose(matrix(cart(3)))", "group": "Ungrouped variables", "description": "", "templateType": "anything"}, "pre_ev3": {"name": "pre_ev3", "definition": "map(evaluate(convch(a2),[bool_p[t],bool_q[t],bool_r[t]]),t,0..7)", "group": "Last ", "description": "", "templateType": "anything"}, "a": {"name": "a", "definition": "latex(latex_symbol_list[s[0]])", "group": "First Bracket", "description": "", "templateType": "anything"}, "latex_symbol_list": {"name": "latex_symbol_list", "definition": "[\"p\",\"q\",\"\\\\neg p\",\"\\\\neg q\",\"r\",\"\\\\neg r\"]", "group": "Lists of symbols", "description": "", "templateType": "anything"}, "pre_final_value": {"name": "pre_final_value", "definition": "map(evaluate(pre_t_value[t]+\" \"+conv(op4)+\" \"+pre_ev3[t],[]),t,0..7)", "group": "Ungrouped variables", "description": "", "templateType": "anything"}, "op": {"name": "op", "definition": "latex(random(\"\\\\lor\",\"\\\\land\",\"\\\\to\"))", "group": "First Bracket", "description": "", "templateType": "anything"}, "pre_ev1": {"name": "pre_ev1", "definition": "map(evaluate(convch(a)+\" \"+conv(op)+\" \"+convch(b),[bool_p[t],bool_q[t],bool_r[t]]),t,0..7)", "group": "First Bracket", "description": "", "templateType": "anything"}, "c2": {"name": "c2", "definition": "latex(switch(a2=\"\\\\neg p\",\"p\",a2=\"\\\\neg q\",\"q\",\"r\"))", "group": "Last ", "description": "", "templateType": "anything"}, "op1": {"name": "op1", "definition": "latex(random(\"\\\\lor\",\"\\\\land\",\"\\\\to\"))", "group": "First and Second Brackets", "description": "", "templateType": "anything"}, "b1": {"name": "b1", "definition": "latex(latex_symbol_list[s[3]])", "group": "Second Bracket", "description": "", "templateType": "anything"}, "pre_t_value": {"name": "pre_t_value", "definition": "map(evaluate(pre_ev1[t]+\" \"+conv(op1)+\" \"+pre_ev2[t],[]),t,0..7)", "group": "First and Second Brackets", "description": "", "templateType": "anything"}, "ev1": {"name": "ev1", "definition": "bool_to_label(pre_ev1)", "group": "First Bracket", "description": "", "templateType": "anything"}, "bool_p": {"name": "bool_p", "definition": "list_to_boolean(list(logic_values[0]))", "group": "Truth values", "description": "", "templateType": "anything"}, "op4": {"name": "op4", "definition": "latex(random(\"\\\\lor\",\"\\\\land\",\"\\\\to\"))", "group": "Ungrouped variables", "description": "", "templateType": "anything"}, "d2": {"name": "d2", "definition": "switch(a2=\"\\\\neg p\",p,a2=\"\\\\neg q\",q,r)", "group": "Last ", "description": "", "templateType": "anything"}, "op2": {"name": "op2", "definition": "latex(random(\"\\\\lor\",\"\\\\land\",\"\\\\to\"))", "group": "Second Bracket", "description": "", "templateType": "anything"}, "ev3": {"name": "ev3", "definition": "bool_to_label(pre_ev3)", "group": "Last ", "description": "", "templateType": "anything"}, "ev2": {"name": "ev2", "definition": "bool_to_label(pre_ev2)", "group": "Second Bracket", "description": "", "templateType": "anything"}, "q": {"name": "q", "definition": "bool_to_label(list_to_boolean(list(logic_values[1])))", "group": "Truth values", "description": "", "templateType": "anything"}, "pre_ev2": {"name": "pre_ev2", "definition": "map(evaluate(convch(a1)+\" \"+conv(op2)+\" \"+convch(b1),[bool_p[t],bool_q[t],bool_r[t]]),t,0..7)", "group": "Second Bracket", "description": "", "templateType": "anything"}, "final_value": {"name": "final_value", "definition": "bool_to_label(pre_final_value)", "group": "Ungrouped variables", "description": "", "templateType": "anything"}}, "name": "Luis's copy of Truth tables 4 (v2)", "advice": "

First we find the truth table for $\\var{a} \\var{op} \\var{b}$:

\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
$p$$q$$r$$\\var{a} \\var{op} \\var{b}$
$\\var{p[0]}$$\\var{q[0]}$$\\var{r[0]}$$\\var{ev1[0]}$
$\\var{p[1]}$$\\var{q[1]}$$\\var{r[1]}$$\\var{ev1[1]}$
$\\var{p[2]}$$\\var{q[2]}$$\\var{r[2]}$$\\var{ev1[2]}$
$\\var{p[3]}$$\\var{q[3]}$$\\var{r[3]}$$\\var{ev1[3]}$
$\\var{p[4]}$$\\var{q[4]}$$\\var{r[4]}$$\\var{ev1[4]}$
$\\var{p[5]}$$\\var{q[5]}$$\\var{r[5]}$$\\var{ev1[5]}$
$\\var{p[6]}$$\\var{q[6]}$$\\var{r[6]}$$\\var{ev1[6]}$
$\\var{p[7]}$$\\var{q[7]}$$\\var{r[7]}$$\\var{ev1[7]}$
\n

Then the truth table for $\\var{a1} \\var{op2} \\var{b1}$:

\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n
$p$$q$$r$$\\var{a1} \\var{op2} \\var{b1}$
$\\var{p[0]}$$\\var{q[0]}$$\\var{r[0]}$$\\var{ev2[0]}$
$\\var{p[1]}$$\\var{q[1]}$$\\var{r[1]}$$\\var{ev2[1]}$
$\\var{p[2]}$$\\var{q[2]}$$\\var{r[2]}$$\\var{ev2[2]}$
$\\var{p[3]}$$\\var{q[3]}$$\\var{r[3]}$$\\var{ev2[3]}$
$\\var{p[4]}$$\\var{q[4]}$$\\var{r[4]}$$\\var{ev2[4]}$
$\\var{p[5]}$$\\var{q[5]}$$\\var{r[5]}$$\\var{ev2[5]}$
$\\var{p[6]}$$\\var{q[6]}$$\\var{r[6]}$$\\var{ev2[6]}$
$\\var{p[7]}$$\\var{q[7]}$$\\var{r[7]}$$\\var{ev2[7]}$
\n

Putting these together to find $(\\var{a} \\var{op} \\var{b})\\var{op1}(\\var{a1} \\var{op2} \\var{b1})$:

\n

\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n
$p$$q$$r$$\\var{a} \\var{op} \\var{b}$$\\var{a1} \\var{op2} \\var{b1}$$(\\var{a} \\var{op} \\var{b})\\var{op1}(\\var{a1} \\var{op2} \\var{b1})$
$\\var{p[0]}$$\\var{q[0]}$$\\var{r[0]}$$\\var{ev1[0]}$$\\var{ev2[0]}$$\\var{t_value[0]}$
$\\var{p[1]}$$\\var{q[1]}$$\\var{r[1]}$$\\var{ev1[1]}$$\\var{ev2[1]}$$\\var{t_value[1]}$
$\\var{p[2]}$$\\var{q[2]}$$\\var{r[2]}$$\\var{ev1[2]}$$\\var{ev2[2]}$$\\var{t_value[2]}$
$\\var{p[3]}$$\\var{q[3]}$$\\var{r[3]}$$\\var{ev1[3]}$$\\var{ev2[3]}$$\\var{t_value[3]}$
$\\var{p[4]}$$\\var{q[4]}$$\\var{r[4]}$$\\var{ev1[4]}$$\\var{ev2[4]}$$\\var{t_value[4]}$
$\\var{p[5]}$$\\var{q[5]}$$\\var{r[5]}$$\\var{ev1[5]}$$\\var{ev2[5]}$$\\var{t_value[5]}$
$\\var{p[6]}$$\\var{q[6]}$$\\var{r[6]}$$\\var{ev1[6]}$$\\var{ev2[6]}$$\\var{t_value[6]}$
$\\var{p[7]}$$\\var{q[7]}$$\\var{r[7]}$$\\var{ev1[7]}$$\\var{ev2[7]}$$\\var{t_value[7]}$
\n

Next we find the truth table for $\\var{a2}$:

\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
$\\var{c2}$$\\var{a2}$
$\\var{d2[0]}$$\\var{ev3[0]}$
$\\var{d2[1]}$$\\var{ev3[1]}$
$\\var{d2[2]}$$\\var{ev3[2]}$
$\\var{d2[3]}$$\\var{ev3[3]}$
$\\var{d2[4]}$$\\var{ev3[4]}$
$\\var{d2[5]}$$\\var{ev3[5]}$
$\\var{d2[6]}$$\\var{ev3[6]}$
$\\var{d2[7]}$$\\var{ev3[7]}$
\n

Putting this all together to obtain the truth table we want:

\n\n\n \n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n
$p$$q$$r$$(\\var{a} \\var{op} \\var{b})\\var{op1}(\\var{a1} \\var{op2} \\var{b1})$$\\var{a2}$$((\\var{a} \\var{op} \\var{b})\\var{op1}(\\var{a1} \\var{op2} \\var{b1}))\\var{op4}\\var{a2} $
$\\var{p[0]}$$\\var{q[0]}$$\\var{r[0]}$$\\var{t_value[0]}$$\\var{ev3[0]}$$\\var{final_value[0]}$
$\\var{p[1]}$$\\var{q[1]}$$\\var{r[1]}$$\\var{t_value[1]}$$\\var{ev3[1]}$$\\var{final_value[1]}$
$\\var{p[2]}$$\\var{q[2]}$$\\var{r[2]}$$\\var{t_value[2]}$$\\var{ev3[2]}$$\\var{final_value[2]}$
$\\var{p[3]}$$\\var{q[3]}$$\\var{r[3]}$$\\var{t_value[3]}$$\\var{ev3[3]}$$\\var{final_value[3]}$
$\\var{p[4]}$$\\var{q[4]}$$\\var{r[4]}$$\\var{t_value[4]}$$\\var{ev3[4]}$$\\var{final_value[4]}$
$\\var{p[5]}$$\\var{q[5]}$$\\var{r[5]}$$\\var{t_value[5]}$$\\var{ev3[5]}$$\\var{final_value[5]}$
$\\var{p[6]}$$\\var{q[6]}$$\\var{r[6]}$$\\var{t_value[6]}$$\\var{ev3[6]}$$\\var{final_value[6]}$
$\\var{p[7]}$$\\var{q[7]}$$\\var{r[7]}$$\\var{t_value[7]}$$\\var{ev3[7]}$$\\var{final_value[7]}$
", "preamble": {"js": "", "css": ""}, "showQuestionGroupNames": false, "type": "question", "ungrouped_variables": ["pre_final_value", "op4", "logic_values", "final_value"], "question_groups": [{"name": "", "pickingStrategy": "all-ordered", "pickQuestions": 0, "questions": []}], "functions": {"evaluate": {"language": "javascript", "parameters": [["expr", "string"], ["dependencies", "list"]], "definition": "return scope.evaluate(expr);", "type": "number"}, "conv": {"language": "jme", "parameters": [["op", "string"]], "definition": "switch(op=\"\\\\land\",\"and\",op=\"\\\\lor\",\"or\",\"implies\")", "type": "string"}, "list_to_boolean": {"language": "jme", "parameters": [["l", "list"]], "definition": "map(if(l[x]<>0,true,false),x,0..length(l)-1)", "type": "list"}, "cart": {"language": "jme", "parameters": [["n", "number"]], "definition": "if(n=2,[[true,true],[true,false],[false,true],[false,false]],map([true]+cart(n-1)[x],x,0..2^(n-1)-1)+map([false]+cart(n-1)[x],x,0..2^(n-1)-1))", "type": "number"}, "convch": {"language": "jme", "parameters": [["ch", "string"]], "definition": "switch(ch=\"\\\\neg p\",\"not bool_p[t]\",ch=\"\\\\neg q\",\"not bool_q[t]\",ch=\"p\",\"bool_p[t]\",ch=\"q\",\"bool_q[t]\",ch=\"r\",\"bool_r[t]\",\"not bool_r[t]\")", "type": "string"}, "bool_to_label": {"language": "jme", "parameters": [["l", "list"]], "definition": "map(if(l[x],'T','F'),x,0..length(l)-1)", "type": "number"}}, "rulesets": {}, "variable_groups": [{"name": "Lists of symbols", "variables": ["logic_symbol_list", "latex_symbol_list", "s"]}, {"name": "First Bracket", "variables": ["a", "b", "op", "pre_ev1", "ev1"]}, {"name": "Second Bracket", "variables": ["a1", "b1", "op2", "pre_ev2", "ev2"]}, {"name": "Truth values", "variables": ["p", "q", "r", "bool_p", "bool_q", "bool_r"]}, {"name": "Last ", "variables": ["a2", "pre_ev3", "c2", "d2", "ev3"]}, {"name": "First and Second Brackets", "variables": ["op1", "pre_t_value", "t_value"]}], "contributors": [{"name": "Newcastle University Mathematics and Statistics", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/697/"}, {"name": "Luis Hernandez", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/2870/"}]}]}], "contributors": [{"name": "Newcastle University Mathematics and Statistics", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/697/"}, {"name": "Luis Hernandez", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/2870/"}]}