@@ -3,6 +3,7 @@ open Common
33open Unchecked_types
44open Unchecked
55open Printing
6+ open Equality
67
78exception IsObj
89exception IsCoh
@@ -106,7 +107,7 @@ end = struct
106107 module Unchecked = U. Make (Coh ) (Tm )
107108 module P = Printing (Coh ) (Tm )
108109 module Printing = P. Make (Coh ) (Tm )
109- module E = Equality. Equality (Coh ) (Tm )
110+ module E = Equality (Coh ) (Tm )
110111 module Equality = E. Make (Coh ) (Tm )
111112
112113 let tbl : (ctx, Ctx.t) Hashtbl.t = Hashtbl. create 7829
@@ -185,7 +186,7 @@ end = struct
185186 module Unchecked = U. Make (Coh ) (Tm )
186187 module P = Printing (Coh ) (Tm )
187188 module Printing = P. Make (Coh ) (Tm )
188- module E = Equality. Equality (Coh ) (Tm )
189+ module E = Equality (Coh ) (Tm )
189190 module Equality = E. Make (Coh ) (Tm )
190191
191192 (* * A pasting scheme. *)
@@ -346,7 +347,7 @@ end = struct
346347 module Unchecked = U. Make (Coh ) (Tm )
347348 module P = Printing (Coh ) (Tm )
348349 module Printing = P. Make (Coh ) (Tm )
349- module E = Equality. Equality (Coh ) (Tm )
350+ module E = Equality (Coh ) (Tm )
350351 module Equality = E. Make (Coh ) (Tm )
351352
352353 (* * A type exepression. *)
@@ -440,12 +441,15 @@ and UnnamedTm : sig
440441 val apply_sub : t -> Sub .t -> t
441442 val preimage : t -> Sub .t -> t
442443 val develop : t -> Unchecked_types (Coh )(Tm ).tm
444+ val is_equal : t -> t -> bool
443445end = struct
444- open Unchecked (Coh ) (Tm )
445- module Unchecked = Make (Coh ) (Tm )
446+ module U = Unchecked (Coh ) (Tm )
447+ module Unchecked = U. Make (Coh ) (Tm )
446448 module Types = Unchecked_types (Coh ) (Tm )
447- open Printing (Coh ) (Tm )
448- module Printing = Make (Coh ) (Tm )
449+ module P = Printing (Coh ) (Tm )
450+ module Printing = P. Make (Coh ) (Tm )
451+ module E = Equality (Coh ) (Tm )
452+ module Equality = E. Make (Coh ) (Tm )
449453
450454 type expr = Var of Var .t | Coh of Coh .t * Sub .t | App of Tm .t * Sub .t
451455
@@ -531,6 +535,10 @@ end = struct
531535 let c = Sub. tgt sub in
532536 let t = Unchecked. tm_sub_preimage (forget t) (Sub. forget sub) in
533537 check c t
538+
539+ let is_equal t1 t2 =
540+ Ctx. is_equal (Ty. ctx t1.ty) (Ty. ctx t2.ty)
541+ && Equality. is_equal_tm t1.unchecked t2.unchecked
534542end
535543
536544(* * Operations on terms. *)
@@ -547,6 +555,7 @@ and Tm : sig
547555 val func_data : t -> (Var .t * int ) list list
548556 val pp_data : t -> pp_data
549557 val develop : t -> Unchecked_types (Coh )(Tm ).tm
558+ val is_equal : t -> t -> bool
550559
551560 val apply :
552561 (Unchecked_types (Coh )(Tm ).ctx -> Unchecked_types (Coh )(Tm ).ctx) ->
@@ -595,6 +604,8 @@ end = struct
595604 let pp_data = fun_pp_data pp_data in
596605 let tm = Unchecked. tm_apply_sub (fun_tm (UnnamedTm. forget tm)) db_sub in
597606 (check c pp_data tm, db_sub)
607+
608+ let is_equal (t1 , _ ) (t2 , _ ) = UnnamedTm. is_equal t1 t2
598609end
599610
600611(* * A coherence. *)
@@ -807,7 +818,7 @@ module U = Unchecked (Coh) (Tm)
807818module Unchecked = U. Make (Coh ) (Tm )
808819module P = Printing (Coh ) (Tm )
809820module Printing = P. Make (Coh ) (Tm )
810- module E = Equality. Equality (Coh ) (Tm )
821+ module E = Equality (Coh ) (Tm )
811822module Equality = E. Make (Coh ) (Tm )
812823
813824let check check_fn name =
0 commit comments