from ..structure import Structure
from ..vocabulary import Vocabulary
from typing import Self

class Assertions:
    def __init__(self, vocabulary: Vocabulary) -> None: ...
    def vocab(self) -> Vocabulary: ...
    def parse(self, decls: str) -> Self: ...
    def __str__(self) -> str: ...

class Theory:
    def __init__(self, assertions: Assertions, structure: Structure) -> None: ...
    @classmethod
    def from_specification(cls, spec: str) -> Self: ...
    def structure(self) -> Structure: ...
    def vocab(self) -> Vocabulary: ...
    def assertions(self) -> Assertions: ...
    def __str__(self) -> str: ...
