From 4bbcf7dfee362fee1c3a23650912a2e259f2f51a Mon Sep 17 00:00:00 2001 From: Jim Pryor Date: Sat, 20 Nov 2010 07:37:29 -0500 Subject: [PATCH] assignment7 tweaks Signed-off-by: Jim Pryor --- hints/assignment_7_hint_6.mdwn | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/hints/assignment_7_hint_6.mdwn b/hints/assignment_7_hint_6.mdwn index 344451a8..740eba2b 100644 --- a/hints/assignment_7_hint_6.mdwn +++ b/hints/assignment_7_hint_6.mdwn @@ -8,12 +8,14 @@ Here's how to do that in our framework: type clause_op = bool dpm -> bool dpm set;; + + (* filter out which bool dpms in a set are true when receiving (r, h) as input *) + let extensions set (r, h) = List.filter (fun one_dpm -> let (truth_value, _, _) = one_dpm (r, h) in truth_value) set;; let negate_op (phi : clause_op) : clause_op = fun one_dpm -> unit_set ( fun (r, h) -> - let extensions set = List.filter (fun one_dpm -> let (truth_value, _, _) = one_dpm (r, h) in truth_value) set - in let truth_value' = extensions (phi one_dpm) = [] + let truth_value' = extensions (phi one_dpm) (r, h) = [] in (truth_value', r, h) ) @@ -29,16 +31,17 @@ (* NOT: negate_op (and_op (negate_op phi) (negate_op psi)) *) fun one_dpm -> unit_set ( fun (r, h) -> - let extensions set = List.filter (fun one_dpm -> let (truth_value, _, _) = one_dpm (r, h) in truth_value) set - in let truth_value' = extensions (phi one_dpm) <> [] || extensions (bind_set (negate_op phi one_dpm) psi) <> [] + in let truth_value' = extensions (phi one_dpm) (r, h) <> [] || extensions (bind_set (negate_op phi one_dpm) psi) (r, h) <> [] in (truth_value', r, h)) let if_op (phi : clause_op) (psi : clause_op) : clause_op = (* NOT: negate_op (and_op phi (negate_op psi)) *) fun one_dpm -> unit_set ( fun (r, h) -> - let extensions set = List.filter (fun one_dpm -> let (truth_value, _, _) = one_dpm (r, h) in truth_value) set - in let truth_value' = List.for_all (fun one_dpm -> let (truth_value, _, _) = one_dpm (r, h) in truth_value = false || extensions (psi one_dpm) <> []) (phi one_dpm) + in let truth_value' = List.for_all (fun one_dpm -> + let (truth_value, _, _) = one_dpm (r, h) + in truth_value = false || extensions (psi one_dpm) (r, h) <> [] + ) (phi one_dpm) in (truth_value', r, h));; -- 2.11.0