rainbowadn/rainbowadn/flow/verification/core/_compositionverification.py
2022-12-22 21:48:40 +00:00

27 lines
745 B
Python

from typing import Generic, TypeVar
from rainbowadn.core import *
from rainbowadn.flow.core import *
from ._verification import *
__all__ = ('CompositionVerification',)
Verified = TypeVar('Verified', contravariant=True)
Middle = TypeVar('Middle')
class CompositionVerification(
Verification[Verified],
Generic[Verified, Middle]
):
def __init__(self, domain: Mapper[Verified, Middle], codomain: Verification[Middle]):
assert isinstance(domain, Mapper)
assert isinstance(codomain, Verification)
self.domain = domain
self.codomain = codomain
async def verify(self, element: Verified) -> bool:
assert_true(await self.codomain.verify(await self.domain.map(element)))
return True