12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849(* This file is free software, part of Zipperposition. See file "license" for more details. *)(** {1 Unification Constraint} *)moduleT=InnerTermtypeterm=T.ttypet={t1:term;sc1:Scoped.scope;t2:term;sc2:Scoped.scope;tags:Proof.taglist;}let[@inline]make~tags(t1,sc1)(t2,sc2)={t1;sc1;t2;sc2;tags}let[@inline]tagst=t.tagsletapply_substrenamingsubst(c:t):term*term=Subst.applyrenamingsubst(c.t1,c.sc1),Subst.applyrenamingsubst(c.t2,c.sc2)letapply_subst_lrenamingsubst(l:tlist):_list=List.map(apply_substrenamingsubst)lletppout(c:t)=CCFormat.fprintfout"(@[%a =?=@ %a@])"T.ppc.t1T.ppc.t2lethash(c:t)=Hash.combine4(T.hashc.t1)c.sc1(T.hashc.t2)c.sc2letequalc1c2=T.equalc1.t1c2.t1&&T.equalc1.t2c2.t2&&c1.sc1=c2.sc1&&c1.sc2=c2.sc2letcomparec1c2:int=letopenCCOrd.InfixinT.comparec1.t1c2.t1<?>(T.compare,c1.t2,c2.t2)<?>(CCOrd.int,c1.sc1,c2.sc1)<?>(CCOrd.int,c1.sc2,c2.sc2)letto_string=CCFormat.to_stringppmoduleFO=structletmake~tags(t1,sc1)(t2,sc2)=make~tags((t1:Term.t:>T.t),sc1)((t2:Term.t:>T.t),sc2)end