private IEnumerable <Variable> AvailableLinearLocalVars(Absy absy)
 {
     if (absy is Implementation impl)
     {
         return(FilterInParams((MapAbsy(impl) as Implementation).InParams));
     }
     if (absy is Procedure proc)
     {
         return(FilterInParams((MapAbsy(proc) as Procedure).InParams));
     }
     return(linearTypeChecker.AvailableLinearVars(MapAbsy(absy)).Where(v =>
                                                                       !(v is GlobalVariable) &&
                                                                       civlTypeChecker.LocalVariableLayerRange(v).Contains(layerNum)));
 }
        private IEnumerable <Variable> AvailableLinearLocalVars(Absy absy)
        {
            if (absy is Implementation impl)
            {
                return(FilterInParams(absyMap.OriginalOrInput(impl).InParams));
            }

            if (absy is Procedure proc)
            {
                return(FilterInParams(absyMap.OriginalOrInput(proc).InParams));
            }

            return(civlTypeChecker.linearTypeChecker.AvailableLinearVars(absyMap[absy]).Where(v =>
                                                                                              !(v is GlobalVariable) &&
                                                                                              civlTypeChecker.LocalVariableLayerRange(v).Contains(layerNum)));
        }