CurryInfo: verify-non-fail-2.0.0 / Verify.ESMT.matchSorts

definition:
 
matchSorts :: [Sort] -> [Sort] -> Maybe TPSubst
matchSorts []       []       = Just emptyTPSubst
matchSorts []       (_:_)    = Nothing
matchSorts (_:_)    []       = Nothing
matchSorts (t1:ts1) (t2:ts2) = do
  s <- matchSort t1 t2
  t <- matchSorts (map (substSort s) ts1) ts2
  return (FM.union s t)
demand:
 arguments 1 2
deterministic:
 deterministic operation
failfree:
 <FAILING>
indeterministic:
 referentially transparent operation
infix:
 no fixity defined
iotype:
 {({[]},{[]}) |-> {Just} || ({[]},{:}) |-> {Nothing} || ({:},{[]}) |-> {Nothing} || ({:},{:}) |-> _}
name:
 matchSorts
precedence:
 no precedence defined
result-values:
 _
signature:
 [Sort] -> [Sort] -> Prelude.Maybe (Data.Map.Map String Sort)
solution-complete:
 operation might suspend on free variables
terminating:
 possibly non-terminating
totally-defined:
 possibly non-reducible on same data term