1 needs "../formal_lp/hypermap/tests/Tri2.ml";;
2 needs "../formal_lp/hypermap/tests/Quad2.ml";;
3 needs "../formal_lp/hypermap/tests/Pent2.ml";;
4 needs "../formal_lp/hypermap/tests/Hex2.ml";;
7 length pent + length hex + length tri + length quad;;
17 | h :: t -> if mem h t then undup t else h :: undup t;;
24 | h :: t -> if mem h t then false else uniq_test t;;
27 (* list_of_elements *)
28 let list_of_elements hyp = undup (flatten hyp);;
34 let rec list_pairs_head s =
36 [] -> failwith "list_pairs"
38 | h1 :: h2 :: t -> (h1,h2) :: list_pairs_head (h2 :: t) in
43 let list_of_faces hyp =
48 let list_of_darts hyp = flatten (list_of_faces hyp);;
52 let rec find_pair_list hyp d =
55 | f :: t -> if mem d (list_pairs f) then f else find_pair_list t d;;
59 let find_face hyp d = list_pairs (find_pair_list hyp d);;
67 [] -> failwith "next_el"
68 | [h] -> if Pervasives.compare h d = 0 then head else next []
69 | h1 :: h2 :: t -> if Pervasives.compare h1 d = 0 then h2 else next (h2 :: t) in
75 let rec prev_rec prev s =
77 [] -> failwith "prev_el"
78 | h :: t -> if Pervasives.compare h d = 0 then prev else prev_rec h t in
83 let e_list (d1,d2) = d2,d1;;
87 let f_list hyp d = next_el (find_face hyp d) d;;
91 let n_list hyp d = e_list (prev_el (find_face hyp d) d);;
96 let rec orbit_acc acc x =
98 if mem next acc then acc else orbit_acc (next :: acc) next in
99 rev (orbit_acc [d] d);;
104 let rec orbits_rec set =
109 x :: orbits_rec (subtract set x) in
115 let darts = list_of_darts hyp in
116 let c1 = uniq_test darts in
117 let c2 = for_all (fun l -> l <> []) hyp in
118 let c3 = for_all (fun (d1,d2) -> mem (d2,d1) darts) darts in
122 (* good_list_nodes *)
123 let good_list_nodes hyp =
124 let darts = list_of_darts hyp in
125 let n0 = length (list_of_elements hyp) in
126 let n1 = length (orbits (n_list hyp) darts) in
135 let good_test = fold_left (fun l h -> l & good_list h) true;;
136 let good_nodes_test = fold_left (fun l h -> l & good_list_nodes h) true;;
138 let tri_test = good_test tri;;
139 let quad_test = good_test quad;;
140 let pent_test = good_test pent;;
141 let hex_test = good_test hex;;
144 let tri_test2 = good_nodes_test tri;;
145 let quad_test2 = good_nodes_test quad;;
146 let pent_test2 = good_nodes_test pent;;
147 let hex_test2 = good_nodes_test hex;;