Logtk.UnifSourceRaised when a unification/matching attempt fails
val occurs_check :
depth:int ->
subst ->
InnerTerm.t HVar.t Scoped.t ->
InnerTerm.t Scoped.t ->
boolval unif_array_com :
?size:[ `Same | `Smaller ] ->
'subst ->
op:('subst -> 'a Scoped.t -> 'a Scoped.t -> 'subst Iter.t) ->
'a array Scoped.t ->
'a array Scoped.t ->
'subst Iter.tGeneric unification over two arrays (of the same size, or the first one must be smaller or equal)
val unif_list :
'subst ->
op:('subst -> 'a Scoped.t -> 'a Scoped.t -> 'subst Iter.t) ->
'a list Scoped.t ->
'a list Scoped.t ->
'subst Iter.tGeneric unification over two lists (of the same size)
val unif_list_com :
?size:[ `Same | `Smaller ] ->
'subst ->
op:('subst -> 'a Scoped.t -> 'a Scoped.t -> 'subst Iter.t) ->
'a list Scoped.t ->
'a list Scoped.t ->
'subst Iter.tGeneric unification over two lists (of the same size or smaller)
in HO, we have f1 l1 and f2 l2, where application is left-associative. we need to unify from the right (the outermost application is on the right) so this returns pairs to unify (including heads).
in HO, we have l1 -> ret1 and l2 -> ret2, where -> is right-associative. we need to unify from the left, so this returns pairs to unify (including return types).
To be used only on terms without InnerTerm.Multiset constructor