API Reference

Complete API documentation for all Asgard classes and functions.

Full reference: See the detailed API reference for comprehensive documentation including all parameters, return types, and examples.

Core Classes

Equation

Mathematical equation representation in LEAN-style syntax. Parse, manipulate, and compile equations.

Circuit

Computational circuit for executing stream transformations. Built from combinators and atomic operations.

Stream

Multi-dimensional coefficient array with labeled dimensions. Represents functions as expansions.

Equation

from gimle.asgard.equation.equation import Equation

eq = Equation.from_string("diff(f, x) = g")

Equation.from_string(equation_str: str) -> Equation

Parse an equation from a string representation.

# Simple equation
eq = Equation.from_string("diff(f, x) = g")

# Fundamental theorem of calculus
eq = Equation.from_string("diff(int(f, x), x) = f")

# Differential equation
eq = Equation.from_string("diff(y, t) = scalar(-0.1, y)")

Properties

Property Type Description
lhs lark.Tree Left-hand side of the equation
rhs lark.Tree Right-hand side of the equation
parse_tree lark.Tree Full parse tree

Circuit

from gimle.asgard.circuit.circuit import Circuit

circuit = Circuit.from_string("composition(register(x), deregister(x))")

Circuit.from_string(circuit_str: str) -> Circuit

Parse a circuit from a string representation.

# Simple atomic operation
circuit = Circuit.from_string("register(x)")

# Composition
circuit = Circuit.from_string("composition(register(x), deregister(x))")

# Monoidal product
circuit = Circuit.from_string("monoidal(scalar(2.0), scalar(3.0))")

execute(inputs, state) -> Tuple[List[Stream], StreamState]

Execute the circuit on input streams.

from gimle.asgard.runtime.stream import Stream, StreamState
import jax.numpy as jnp

circuit = Circuit.from_string("register(x)")

input_stream = Stream(
    data=jnp.array([[1.0, 2.0, 3.0]]),
    dim_labels=("x",),
    chunk_size=1
)

outputs, state = circuit.execute([input_stream], StreamState())
print(outputs[0].data)  # [[0. 1. 2.]]

Properties

Property Type Description
input_degree int Number of input streams expected
output_degree int Number of output streams produced
parse_tree lark.Tree Circuit parse tree

Stream

from gimle.asgard.runtime.stream import Stream, StreamState
import jax.numpy as jnp

stream = Stream(
    data=jnp.array([[1.0, 2.0, 3.0]]),
    dim_labels=("x",),
    chunk_size=1
)

Parameters

Parameter Type Description
data jnp.ndarray JAX array of coefficients
dim_labels Tuple[str, ...] Dimension labels (e.g., ("x",) or ("x", "t"))
chunk_size int Number of samples per chunk

StreamState

Holds boundary conditions for stateful operations like integration.

state = StreamState()
outputs, new_state = circuit.execute([input_stream], state)
# Pass new_state to next execution for continuous processing

Calculi

Three mathematical interpretations for evaluating streams.

RealCalculus

Taylor series expansion for deterministic computation.

from gimle.asgard.runtime.stream_evaluator import RealCalculus

calculus = RealCalculus(center=0.0)

StochasticCalculus

Monte Carlo simulation of stochastic differential equations.

from gimle.asgard.runtime.stream_evaluator import StochasticCalculus

calculus = StochasticCalculus(
    drift=0.0,
    diffusion=1.0,
    n_paths=1000,
    dt=0.01,
    seed=42
)

DiscreteCalculus

Discrete-time sequence processing.

from gimle.asgard.runtime.stream_evaluator import DiscreteCalculus

calculus = DiscreteCalculus(start_index=0)

StreamEvaluator

Evaluates streams using calculus-specific basis functions.

from gimle.asgard.runtime.stream_evaluator import StreamEvaluator, RealCalculus
import jax.numpy as jnp

stream = Stream(
    data=jnp.array([[2.0, 3.0, 1.0]]),
    dim_labels=("x",),
    chunk_size=1
)

evaluator = StreamEvaluator(stream, {"x": RealCalculus()})
values = evaluator.evaluate(x=jnp.linspace(0, 10, 100))

Compilation

compile_equation_to_circuit()

Compile an equation to a circuit. Variable isolation and trace wiring are applied automatically.

from gimle.asgard.compile.compiler import compile_equation_to_circuit

eq = Equation.from_string("diff(int(f, x), x) = f")
circuit, metadata = compile_equation_to_circuit(eq)

Import Quick Reference

# Core classes
from gimle.asgard.equation.equation import Equation
from gimle.asgard.circuit.circuit import Circuit

# Runtime
from gimle.asgard.runtime.stream import Stream, StreamState
from gimle.asgard.runtime.stream_evaluator import (
    StreamEvaluator,
    RealCalculus,
    StochasticCalculus,
    DiscreteCalculus
)

# Compilation
from gimle.asgard.compile.compiler import compile_equation_to_circuit

# JAX
import jax.numpy as jnp

Next Steps