ClearAll[SMP, $RecCounter]SetAttributes[{SMP, $RecCounter}, HoldAll]$RecCounter[_] = 0;unTerminate = ReplaceAll[HoldPattern[TerminatedEvaluation[_, HoldForm[subExpr_]]] :> subExpr];SMP[expr : proj_Symbol[filters : PatternSequence[___, Except[_TerminatedEvaluation] ? ValueQ, ___]]] := With[ evalFilters = proj @@@ HoldForm @ Evaluate[Join @@ MapIndexed[ Function[ {filter, index}, With[{i = index[[1]]}, Which[ ! ValueQ[filter] || ! FreeQ[Unevaluated[filter], _TerminatedEvaluation], HoldForm[filter], Rec[proj] || Smp[proj, i] > $RecCounter[proj], With[evalFilter = ResourceFunction["InheritedBlock"][{$RecCounter = $RecCounter}, $RecCounter[proj]++; SMP @@ (*unTerminate @ *)Hold[filter] ], If[ unTerminate[evalFilter] === HoldForm[filter], HoldForm[Evaluate @ TerminatedEvaluation[Union @@ Cases[evalFilter, TerminatedEvaluation[p_, _] :> p, All], HoldForm[filter]]], unTerminate[evalFilter] ] ], True, HoldForm[TerminatedEvaluation[{proj}, HoldForm[filter]]] ] ], HoldFirst ], Unevaluated[{filters}] ]], If[ unTerminate[evalFilters] === HoldForm[expr], evalFilters, SMP @@ evalFilters ]]SMP[expr : proj_Symbol[___]] /; MatchQ[Unevaluated[expr], Alternatives @@ Keys[DownValues[proj]]] := ResourceFunction["InheritedBlock"][{$RecCounter = $RecCounter}, $RecCounter[proj]++; With[{newExpr = Replace[Unevaluated[expr], MapAt[HoldForm, DownValues[proj], {All, 2}]]}, SMP @@ newExpr ] ]SMP[expr_] /; ValueQ[expr] := HoldForm @ Evaluate @ exprSMP[expr_] := (*unTerminate @ *)HoldForm[expr]