equal
deleted
inserted
replaced
107 let |
107 let |
108 val (ct, ctxt') = |
108 val (ct, ctxt') = |
109 SMT_Utils.dest_all_cbinders (SMT_Utils.dest_cprop rhs) ctxt |
109 SMT_Utils.dest_all_cbinders (SMT_Utils.dest_cprop rhs) ctxt |
110 val (cl, cv) = Thm.dest_binop ct |
110 val (cl, cv) = Thm.dest_binop ct |
111 val (cg, (cargs, cf)) = Drule.strip_comb cl ||> split_last |
111 val (cg, (cargs, cf)) = Drule.strip_comb cl ||> split_last |
112 val cu = fold_rev Thm.cabs cargs (mk_inv_of ctxt' (Thm.cabs cv cf)) |
112 val cu = fold_rev Thm.lambda cargs (mk_inv_of ctxt' (Thm.lambda cv cf)) |
113 in Thm.assume (SMT_Utils.mk_cequals cg cu) end |
113 in Thm.assume (SMT_Utils.mk_cequals cg cu) end |
114 |
114 |
115 fun prove_inj_eq ctxt ct = |
115 fun prove_inj_eq ctxt ct = |
116 let |
116 let |
117 val (lhs, rhs) = |
117 val (lhs, rhs) = |