UMass Amherst

1. Multi-physics modeling

2. Surrogate modeling and emulation

3. Simulation-based inference

4. Causal modeling and inference

5. Agent-based modeling

6. Probabilistic programming

7. Differentiable programming

8. Open-ended optimization

9. Machine programming

- Lavin et al.Simulation Intelligence: Towards a New Generation of Scientific Methods

1. Multi-physics modeling

2. Surrogate modeling and emulation

3. Simulation-based inference

4. Causal modeling and inference

5. Agent-based modeling

6. Probabilistic programming

7. Differentiable programming

8. Open-ended optimization

9. Machine programming

- Lavin et al.Simulation Intelligence: Towards a New Generation of Scientific Methods

Quantum systems are expensive to model...

...and there is a diverse set of modeling techniques.

```
a = random_pauli(1_000_000_000);
b = random_pauli(1_000_000_000);
@benchmark mul_left!(a,b)
# Time (median): 32.246 ms
```

- Krastanov and contributorsQuantumClifford.jl

... and work on GPU acceleration for Clifford circuits¹

... and a library of codes and syndrome measurement circuit compilers²

... and expander-graph LDPC code generators³

- past and current undergrad projects at MIT and Hampshire
- past and current undergrad projects at GSoC and UMass
- current undergrad projects at MIT (Vaishnavi Addala)QuantumExpanders.jl

- past undergrad projects at MIT (Shu Ge)BPGates.jl

```
julia> N⊗X * vac⊗X1
n̂⊗σˣ|0⟩|+⟩
julia> express(vac⊗X1)
Ket(...)
julia> express(X1⊗Z2, CliffordRepr())
X_
-_Z
```

```
traits = [Qubit(), Qubit(), Qumode()]
reg = Register(traits)
```

A register "stores" the states being simulated.

```
initialize!(reg[1], X₁)
```

A register's slot can be initialized to an arbitrary state, e.g. $|x_1\rangle$ an eigenstate of $\hat{\sigma}_x$.

```
initialize!(reg[1], X₁)
initialize!(reg[2], Z₁)
apply!((reg[1], reg[2]), CNOT)
```

Arbitrary quantum gates or channels can be applied.

```
for (;src, dst) in edges(mgraph)
@process entangler(sim, mgraph, src, dst, ...)
end
for node in vertices(mgraph)
@process swapper(sim, mgraph, node, ...)
end
for (;src, dst) in all_node_pairs(mgraph)
@process entangler(sim, mgraph, src, dst, ...)
end
```

Play with it at areweentangledyet.com

1. Multi-physics modeling

2. Surrogate modeling and emulation

3. Simulation-based inference

4. Causal modeling and inference

5. Agent-based modeling

6. Probabilistic programming

7. Differentiable programming

8. Open-ended optimization

9. Machine programming

Multi-formalism QIS modeling