CurryInfo: contract-prover-4.0.0 / ContractProver.renamePatternVars

definition: Info
 
renamePatternVars :: TABranchExpr -> TransStateM TABranchExpr
renamePatternVars (ABranch p e) =
  if isConsPattern p
    then do
      fv <- getFreshVarIndex
      let args = map fst (patArgs p)
          minarg = minimum (0 : args)
          maxarg = maximum (0 : args)
          rnm i = if i `elem` args then i - minarg + fv else i
          nargs = map (\ (v,t) -> (rnm v,t)) (patArgs p)
      setFreshVarIndex (fv + maxarg - minarg + 1)
      addVarTypes nargs
      return $ ABranch (updPatArgs (map (\ (v,t) -> (rnm v,t))) p)
                       (rnmAllVars rnm e)
    else return $ ABranch p e
demand: Info
 argument 1
deterministic: Info
 deterministic operation
documentation: Info
 
Rename argument variables of constructor pattern
failfree: Info
 <FAILING>
indeterministic: Info
 referentially transparent operation
infix: Info
 no fixity defined
iotype: Info
 {({ABranch}) |-> _}
name: Info
 renamePatternVars
precedence: Info
 no precedence defined
result-values: Info
 _
signature: Info
 FlatCurry.Annotated.Types.ABranchExpr FlatCurry.Types.TypeExpr
-> Control.Monad.Trans.State.StateT TransState Prelude.IO (FlatCurry.Annotated.Types.ABranchExpr FlatCurry.Types.TypeExpr)
solution-complete: Info
 operation might suspend on free variables
terminating: Info
 possibly non-terminating
totally-defined: Info
 possibly non-reducible on same data term