65 val full_name = full name; |
65 val full_name = full name; |
66 val set = prep_term (ctxt |> fold declare_type_name vs) raw_set; |
66 val set = prep_term (ctxt |> fold declare_type_name vs) raw_set; |
67 val setT = Term.fastype_of set; |
67 val setT = Term.fastype_of set; |
68 val rhs_tfrees = term_tfrees set; |
68 val rhs_tfrees = term_tfrees set; |
69 val oldT = HOLogic.dest_setT setT handle TYPE _ => |
69 val oldT = HOLogic.dest_setT setT handle TYPE _ => |
70 error ("Not a set type: " ^ quote (ProofContext.string_of_typ ctxt setT)); |
70 error ("Not a set type: " ^ quote (Syntax.string_of_typ ctxt setT)); |
71 fun mk_nonempty A = |
71 fun mk_nonempty A = |
72 HOLogic.mk_exists ("x", oldT, HOLogic.mk_mem (Free ("x", oldT), A)); |
72 HOLogic.mk_exists ("x", oldT, HOLogic.mk_mem (Free ("x", oldT), A)); |
73 fun mk_admissible A = |
73 fun mk_admissible A = |
74 mk_adm ("x", oldT, HOLogic.mk_mem (Free ("x", oldT), A)); |
74 mk_adm ("x", oldT, HOLogic.mk_mem (Free ("x", oldT), A)); |
75 fun mk_UU_mem A = HOLogic.mk_mem (Const ("Pcpo.UU", oldT), A); |
75 fun mk_UU_mem A = HOLogic.mk_mem (Const ("Pcpo.UU", oldT), A); |