equal
deleted
inserted
replaced
851 val unconstrain_proof = Same.commit (map_proof_types {hyps = true} unconstrain_ztyp); |
851 val unconstrain_proof = Same.commit (map_proof_types {hyps = true} unconstrain_ztyp); |
852 |
852 |
853 val constrain_instT = |
853 val constrain_instT = |
854 ZTVars.build (present_set |> Types.fold (fn (T, _) => |
854 ZTVars.build (present_set |> Types.fold (fn (T, _) => |
855 let |
855 let |
856 val ZTVar v = ztyp_of (unconstrain_typ T); |
856 val ZTVar v = ztyp_of (unconstrain_typ T) and U = ztyp_of T; |
857 val U = ztyp_of T; |
|
858 val equal = (case U of ZTVar u => u = v | _ => false); |
857 val equal = (case U of ZTVar u => u = v | _ => false); |
859 in not equal ? ZTVars.add (v, U) end)); |
858 in not equal ? ZTVars.add (v, U) end)); |
860 val constrain_proof = |
859 val constrain_proof = |
861 if ZTVars.is_empty constrain_instT then I |
860 if ZTVars.is_empty constrain_instT then I |
862 else |
861 else |