tcLoopAnn :: ProverK loc m => LoopAnnotation Identifier loc -> TcM m (LoopAnnotation GIdentifier (Typed loc))
tcLoopAnn (DecreasesAnn l isFree e) = tcStmtBlock l "decreases annotation" $ insideAnnotation $ withKind FKind $ withLeak False $ do
    (e') <- tcAnnExpr Nothing e
    return $ DecreasesAnn (Typed l $ typed $ loc e') isFree e'
tcLoopAnn :: ProverK loc m => LoopAnnotation Identifier loc -> TcM m (LoopAnnotation GIdentifier (Typed loc))
tcLoopAnn (DecreasesAnn l isFree e) = tcStmtBlock l "decreases annotation" $ insideAnnotation $ withKind FKind $ withLeak False $ do
    (e') <- tcAnnExpr Nothing e
    return $ DecreasesAnn (Typed l $ typed $ loc e') isFree e'
tcLoopAnn (DecreasesAnn l isFree e) = tcStmtBlock l "decreases annotation" $ insideAnnotation $ withKind FKind $ withLeak False $ do
    (e') <- tcAnnExpr Nothing e
    return $ DecreasesAnn (Typed l $ typed $ loc e') isFree e'