equal
deleted
inserted
replaced
199 let |
199 let |
200 fun setsum_tr' [Abs (x, Tx, t), Const (@{const_syntax Collect}, _) $ Abs (y, Ty, P)] = |
200 fun setsum_tr' [Abs (x, Tx, t), Const (@{const_syntax Collect}, _) $ Abs (y, Ty, P)] = |
201 if x <> y then raise Match |
201 if x <> y then raise Match |
202 else |
202 else |
203 let |
203 let |
204 val x' = Syntax_Trans.mark_bound x; |
204 val x' = Syntax_Trans.mark_bound_body (x, Tx); |
205 val t' = subst_bound (x', t); |
205 val t' = subst_bound (x', t); |
206 val P' = subst_bound (x', P); |
206 val P' = subst_bound (x', P); |
207 in Syntax.const @{syntax_const "_qsetsum"} $ Syntax_Trans.mark_bound x $ P' $ t' end |
207 in |
|
208 Syntax.const @{syntax_const "_qsetsum"} $ Syntax_Trans.mark_bound_abs (x, Tx) $ P' $ t' |
|
209 end |
208 | setsum_tr' _ = raise Match; |
210 | setsum_tr' _ = raise Match; |
209 in [(@{const_syntax setsum}, setsum_tr')] end |
211 in [(@{const_syntax setsum}, setsum_tr')] end |
210 *} |
212 *} |
211 |
213 |
212 lemma setsum_empty: |
214 lemma setsum_empty: |