equal
deleted
inserted
replaced
183 |
183 |
184 fun minimal_pats vs ct = |
184 fun minimal_pats vs ct = |
185 if has_all_vars vs (Thm.term_of ct) then |
185 if has_all_vars vs (Thm.term_of ct) then |
186 (case Thm.term_of ct of |
186 (case Thm.term_of ct of |
187 _ $ _ => |
187 _ $ _ => |
188 (case pairself (minimal_pats vs) (Thm.dest_comb ct) of |
188 (case apply2 (minimal_pats vs) (Thm.dest_comb ct) of |
189 ([], []) => [[ct]] |
189 ([], []) => [[ct]] |
190 | (ctss, ctss') => union (eq_set (op aconvc)) ctss ctss') |
190 | (ctss, ctss') => union (eq_set (op aconvc)) ctss ctss') |
191 | _ => []) |
191 | _ => []) |
192 else [] |
192 else [] |
193 |
193 |
201 |
201 |
202 val pat = |
202 val pat = |
203 Old_SMT_Utils.mk_const_pat @{theory} @{const_name pat} Old_SMT_Utils.destT1 |
203 Old_SMT_Utils.mk_const_pat @{theory} @{const_name pat} Old_SMT_Utils.destT1 |
204 fun mk_pat ct = Thm.apply (Old_SMT_Utils.instT' ct pat) ct |
204 fun mk_pat ct = Thm.apply (Old_SMT_Utils.instT' ct pat) ct |
205 |
205 |
206 fun mk_clist T = pairself (Thm.cterm_of @{theory}) |
206 fun mk_clist T = apply2 (Thm.cterm_of @{theory}) |
207 (HOLogic.cons_const T, HOLogic.nil_const T) |
207 (HOLogic.cons_const T, HOLogic.nil_const T) |
208 fun mk_list (ccons, cnil) f cts = fold_rev (Thm.mk_binop ccons o f) cts cnil |
208 fun mk_list (ccons, cnil) f cts = fold_rev (Thm.mk_binop ccons o f) cts cnil |
209 val mk_pat_list = mk_list (mk_clist @{typ pattern}) |
209 val mk_pat_list = mk_list (mk_clist @{typ pattern}) |
210 val mk_mpat_list = mk_list (mk_clist @{typ "pattern list"}) |
210 val mk_mpat_list = mk_list (mk_clist @{typ "pattern list"}) |
211 fun mk_trigger ctss = mk_mpat_list (mk_pat_list mk_pat) ctss |
211 fun mk_trigger ctss = mk_mpat_list (mk_pat_list mk_pat) ctss |