Traceback (most recent call last):
File "compiler.py", line 16, in <module>
s = omniscience(Ninf_map) == x
File "compiler.py", line 12, in omniscience
return None if p(x := eps(p)) else x
File "/usr/lib/py/typing.py", line 624, in __call__
result = self.__origin__(*args, **kwargs)
TypeError: Callable() takes no arguments
On the line 12 you are calling an abstract class Ninf_map assigned to the variable p. You cannot call an abstract class having an abstract __call__ method.
You can recreate exactly the same error on your Ninf* definitions using this shorter code:
Abstract classes are used to act as parent classes to create subclasses. They are not supposed to be used directly.
typing.Callable exists to be used for typing annotations, not to be called as a function. You have to define a specific function to be called. You cannot call typing.Callable whose purpose is to be used just to describe a type of a function or other callable.