equal
deleted
inserted
replaced
202 | @{term Not} $ _ => abstr1 cvs ct |
202 | @{term Not} $ _ => abstr1 cvs ct |
203 | @{term HOL.conj} $ _ $ _ => abstr2 cvs ct |
203 | @{term HOL.conj} $ _ $ _ => abstr2 cvs ct |
204 | @{term HOL.disj} $ _ $ _ => abstr2 cvs ct |
204 | @{term HOL.disj} $ _ $ _ => abstr2 cvs ct |
205 | @{term HOL.implies} $ _ $ _ => abstr2 cvs ct |
205 | @{term HOL.implies} $ _ $ _ => abstr2 cvs ct |
206 | Const (@{const_name HOL.eq}, _) $ _ $ _ => abstr2 cvs ct |
206 | Const (@{const_name HOL.eq}, _) $ _ $ _ => abstr2 cvs ct |
207 | Const (@{const_name distinct}, _) $ _ => |
207 | Const (@{const_name SMT.distinct}, _) $ _ => |
208 if ext_logic then abs_arg (abs_list abstr fresh_abstraction) cvs ct |
208 if ext_logic then abs_arg (abs_list abstr fresh_abstraction) cvs ct |
209 else fresh_abstraction cvs ct |
209 else fresh_abstraction cvs ct |
210 | Const (@{const_name If}, _) $ _ $ _ $ _ => |
210 | Const (@{const_name If}, _) $ _ $ _ $ _ => |
211 if ext_logic then abstr3 cvs ct else fresh_abstraction cvs ct |
211 if ext_logic then abstr3 cvs ct else fresh_abstraction cvs ct |
212 | Const (@{const_name All}, _) $ _ => |
212 | Const (@{const_name All}, _) $ _ => |
261 |
261 |
262 fun set_conv ct = |
262 fun set_conv ct = |
263 (Conv.rewrs_conv [set1, set2, set3, set4] else_conv |
263 (Conv.rewrs_conv [set1, set2, set3, set4] else_conv |
264 (Conv.rewr_conv set5 then_conv Conv.arg_conv set_conv)) ct |
264 (Conv.rewr_conv set5 then_conv Conv.arg_conv set_conv)) ct |
265 |
265 |
266 val dist1 = @{lemma "distinct [] == ~False" by simp} |
266 val dist1 = @{lemma "SMT.distinct [] == ~False" by (simp add: distinct_def)} |
267 val dist2 = @{lemma "distinct [x] == ~False" by simp} |
267 val dist2 = @{lemma "SMT.distinct [x] == ~False" by (simp add: distinct_def)} |
268 val dist3 = @{lemma "distinct (x # xs) == x ~: set xs & distinct xs" |
268 val dist3 = @{lemma "SMT.distinct (x # xs) == x ~: set xs & distinct xs" |
269 by simp} |
269 by (simp add: distinct_def)} |
270 |
270 |
271 fun binop_conv cv1 cv2 = Conv.combination_conv (Conv.arg_conv cv1) cv2 |
271 fun binop_conv cv1 cv2 = Conv.combination_conv (Conv.arg_conv cv1) cv2 |
272 in |
272 in |
273 fun unfold_distinct_conv ct = |
273 fun unfold_distinct_conv ct = |
274 (Conv.rewrs_conv [dist1, dist2] else_conv |
274 (Conv.rewrs_conv [dist1, dist2] else_conv |