Skip to content

Tutorial 60: Temporal Logic Verification

Prove safety properties of your SNN — or find counterexamples.

Why Verification?

Testing checks N inputs. Verification checks ALL inputs (within bounds). EU AI Act requires verification for high-risk AI. No SNN framework has this.

Available Properties

from sc_neurocore.verification.temporal_properties import (
    fires_within, mutual_exclusion, rate_bound,
    refractory_guarantee, causal_order, bounded_activity,
)

Response Time Guarantee

result = fires_within(spikes, neuron_id=5, stimulus_times=[100, 200], max_latency=10)
print(result.summary())
# [PASS] fires_within: Neuron 5 responds within 10 steps for all 2 stimuli

Safety: No Simultaneous Outputs

result = mutual_exclusion(spikes, neuron_set=[0, 1, 2, 3])
if result.result.value == "violated":
    print(f"Collision at t={result.counterexample.timestep}")

Rate Safety Bound

result = rate_bound(spikes, neuron_id=0, max_rate=0.3, window_size=20)

Minimum Refractory Period

result = refractory_guarantee(spikes, neuron_id=0, min_gap=5)

Causal Ordering

result = causal_order(spikes, neuron_a=0, neuron_b=3, max_delay=10)
# Verifies A always fires before B within 10 steps

Activity Bound

result = bounded_activity(spikes, neuron_set=[0, 1, 2], window_size=10, max_total_spikes=5)