tcProcedureAnn :: ProverK loc m => Bool -> ProcedureAnnotation Identifier loc -> TcM m (Maybe Bool,ProcedureAnnotation GIdentifier (Typed loc))
tcProcedureAnn isAxiom (PDecreasesAnn l e) = tcStmtBlock l "decreases annotation" $ tcAddDeps l "pann" $ insideAnnotation $ withLeak False $ do
    if isAxiom
        then do
            ppe <- pp e
            genTcError (locpos l) False $ text "decreases annotation not supported inside axioms:" <+> ppe
        else do
            (e') <- tcAnnExpr Nothing e
            return (Nothing,PDecreasesAnn (Typed l $ typed $ loc e') e')
tcProcedureAnn :: ProverK loc m => Bool -> ProcedureAnnotation Identifier loc -> TcM m (Maybe Bool,ProcedureAnnotation GIdentifier (Typed loc))
tcProcedureAnn isAxiom (PDecreasesAnn l e) = tcStmtBlock l "decreases annotation" $ tcAddDeps l "pann" $ insideAnnotation $ withLeak False $ do
    if isAxiom
        then do
            ppe <- pp e
            genTcError (locpos l) False $ text "decreases annotation not supported inside axioms:" <+> ppe
        else do
            (e') <- tcAnnExpr Nothing e
            return (Nothing,PDecreasesAnn (Typed l $ typed $ loc e') e')
tcProcedureAnn isAxiom (PDecreasesAnn l e) = tcStmtBlock l "decreases annotation" $ tcAddDeps l "pann" $ insideAnnotation $ withLeak False $ do
    if isAxiom
        then do
            ppe <- pp e
            genTcError (locpos l) False $ text "decreases annotation not supported inside axioms:" <+> ppe
        else do
            (e') <- tcAnnExpr Nothing e
            return (Nothing,PDecreasesAnn (Typed l $ typed $ loc e') e')