equal
deleted
inserted
replaced
172 in |
172 in |
173 if not (is_prefix op = prfx is) then [] else |
173 if not (is_prefix op = prfx is) then [] else |
174 let val is' = map (fn i => i - k) (List.drop (is, k)) |
174 let val is' = map (fn i => i - k) (List.drop (is, k)) |
175 in map (fn x => Mode (m, is', x)) (cprods (map |
175 in map (fn x => Mode (m, is', x)) (cprods (map |
176 (fn (NONE, _) => [NONE] |
176 (fn (NONE, _) => [NONE] |
177 | (SOME js, arg) => map SOME (List.filter |
177 | (SOME js, arg) => map SOME (filter |
178 (fn Mode (_, js', _) => js=js') (modes_of modes arg))) |
178 (fn Mode (_, js', _) => js=js') (modes_of modes arg))) |
179 (iss ~~ args1))) |
179 (iss ~~ args1))) |
180 end |
180 end |
181 end)) (AList.lookup op = modes name) |
181 end)) (AList.lookup op = modes name) |
182 |
182 |
235 | SOME vs => subset (op =) (concl_vs, vs)) |
235 | SOME vs => subset (op =) (concl_vs, vs)) |
236 end; |
236 end; |
237 |
237 |
238 fun check_modes_pred thy arg_vs preds modes (p, ms) = |
238 fun check_modes_pred thy arg_vs preds modes (p, ms) = |
239 let val SOME rs = AList.lookup (op =) preds p |
239 let val SOME rs = AList.lookup (op =) preds p |
240 in (p, List.filter (fn m => case find_index |
240 in (p, filter (fn m => case find_index |
241 (not o check_mode_clause thy arg_vs modes m) rs of |
241 (not o check_mode_clause thy arg_vs modes m) rs of |
242 ~1 => true |
242 ~1 => true |
243 | i => (message ("Clause " ^ string_of_int (i+1) ^ " of " ^ |
243 | i => (message ("Clause " ^ string_of_int (i+1) ^ " of " ^ |
244 p ^ " violates mode " ^ string_of_mode m); false)) ms) |
244 p ^ " violates mode " ^ string_of_mode m); false)) ms) |
245 end; |
245 end; |