Dwa zegary.
Jeden strumień, bez strat.
Podaj dwa ciągi oraz odstęp między kolejnymi elementami każdego z nich
(jako liczbę wymierną, np. 2/3, lub dziesiętną, np. 0.5).
Operator scala je w jeden połączony ciąg o połączonym odstępie
Δc = Δ1·Δ2 / (Δ1+Δ2).
Odstępy
Połączony ciąg
FROM core0#core1
Scalenie, które zawsze można cofnąć
Interlace tka dwa regularne strumienie w jeden, w kolejności czasu. Połączony strumień tyka częściej niż którekolwiek wejście, bo musi pomieścić każdy element obu.
Kompletność
Każdy element obu wejść pojawia się w wyniku dokładnie raz, w kolejności, w jakiej jego takt wypada na osi czasu. Nic nie jest gubione ani powtarzane.
Odwracalność
Połączony strumień zawsze da się rozdzielić na dokładnie te dwa zegary, z których powstał. Scalanie i rozdzielanie są operacjami odwrotnymi.
Dokładność
To, które wejście dostarcza dany takt, wyznacza wymierny ciąg Beatty’ego; twierdzenie o podziale Fraenkla gwarantuje, że oba zbiory pozycji pokrywają wynik dokładnie, bez nakładania się.
Ten sam operator w zapytaniu
W RQL interlace zapisuje się jako # między dwoma
strumieniami. Tutaj core0 tyka co 1/16, a
core1 co 1/8, więc str3 tyka co 1/24.
Formalna definicja i dowód znajdują się w artykule. Algebra operatorów jest streszczona na stronie głównej.