- let bool_set = List.map (fun one_dpm -> let (value, r, h) = one_dpm (initial_r, []) in value) dpm_set
- in List.exists (fun truth_value -> truth_value) bool_set;;
-
- let male obj = obj = Bob || obj = Ted;;
- let wife_of x y = (x,y) = (Bob, Carol) || (x,y) = (Ted, Alice);;
- let kisses x y = (x,y) = (Bob, Carol) || (x,y) = (Ted, Alice);;
- let misses x y = (x,y) = (Bob, Carol) || (x,y) = (Ted, Carol);;
- let getx = get 'x';;
- let gety = get 'y';;
+ (* do any of the dpms in the set return (true, _, _) when given (initial_r, []) as input? *)
+ List.filter (fun one_dpm -> let (truth_value, _, _) = one_dpm (initial_r, []) in truth_value) dpm_set <> [];;
+
+ (* let's define some predicates *)
+ let male e = (e = Bob || e = Ted);;
+ let wife_of e1 e2 = ((e1,e2) = (Bob, Carol) || (e1,e2) = (Ted, Alice));;
+ let kisses e1 e2 = ((e1,e2) = (Bob, Carol) || (e1,e2) = (Ted, Alice));;
+ let misses e1 e2 = ((e1,e2) = (Bob, Carol) || (e1,e2) = (Ted, Carol));;