@@ -564,13 +564,7 @@ end = struct
564564 let db_sub = Unchecked. db_level_sub_inv c in
565565 let c, _, _ = Unchecked. db_levels c in
566566 let c = Ctx. check c in
567- let name, susp, func = fun_pp_data pp_data in
568- let rec rename f =
569- match f with
570- | [] -> []
571- | (x , i ) :: f -> (Display_maps. var_apply_sub x db_sub, i) :: rename f
572- in
573- let pp_data = (name, susp, List. map rename func) in
567+ let pp_data = Display_maps. pp_data_rename (fun_pp_data pp_data) db_sub in
574568 let tm = Unchecked. tm_apply_sub (fun_tm (UnnamedTm. forget tm)) db_sub in
575569 (check c pp_data tm, db_sub)
576570end
@@ -612,6 +606,20 @@ and Coh : sig
612606 val func_data : t -> (Var .t * int ) list list
613607 val check_equal : t -> t -> unit
614608 val dim : t -> int
609+
610+ val apply_ps :
611+ (ps -> ps ) ->
612+ (Unchecked_types (Coh )(Tm ).ty -> Unchecked_types (Coh )(Tm ).ty) ->
613+ (pp_data -> pp_data ) ->
614+ t ->
615+ t
616+
617+ val apply :
618+ (Unchecked_types (Coh )(Tm ).ctx -> Unchecked_types (Coh )(Tm ).ctx) ->
619+ (Unchecked_types (Coh )(Tm ).ty -> Unchecked_types (Coh )(Tm ).ty) ->
620+ (pp_data -> pp_data ) ->
621+ t ->
622+ t * Unchecked_types (Coh )(Tm ).sub
615623end = struct
616624 type cohInv = { ps : PS .t ; ty : Ty .t }
617625
@@ -638,6 +646,7 @@ end = struct
638646
639647 open Unchecked (Coh ) (Tm )
640648 module Unchecked = Make (Coh ) (Tm )
649+ module Display_maps = Unchecked. Display_maps
641650
642651 let ps = function Inv (data , _ ) -> data.ps | NonInv (data , _ ) -> data.ps
643652
@@ -774,6 +783,22 @@ end = struct
774783 Ty. check_equal d1.total_ty d2.total_ty
775784 | Inv _ , NonInv _ | NonInv _ , Inv _ ->
776785 raise (NotEqual (to_string coh1, to_string coh2))
786+
787+ let apply_ps fun_ps fun_ty fun_pp_data coh =
788+ let ps, ty, pp = forget coh in
789+ let ps = fun_ps ps in
790+ let pp_data = fun_pp_data pp in
791+ let ty = fun_ty ty in
792+ check ps ty pp_data
793+
794+ let apply fun_ctx fun_ty fun_pp_data coh =
795+ let ps, ty, pp = forget coh in
796+ let ctx = fun_ctx (Unchecked. ps_to_ctx ps) in
797+ let ps = PS. forget (PS. mk (Ctx. check ctx)) in
798+ let db_sub = Unchecked. db_level_sub_inv ctx in
799+ let pp_data = Display_maps. pp_data_rename (fun_pp_data pp) db_sub in
800+ let ty = Unchecked. ty_apply_sub (fun_ty ty) db_sub in
801+ (check ps ty pp_data, db_sub)
777802end
778803
779804module U = Unchecked (Coh ) (Tm )
0 commit comments