{-# OPTIONS --cubical #-} module Data.Binary.Testing where open import Data.Binary.Increment open import Data.Binary.Definition open import Agda.Builtin.List open import Data.Binary.Helpers open import Agda.Builtin.Strict force : š¹ ā š¹ force 0įµ = 0įµ force (1įµ xs) = primForce (force xs) 1įµ_ force (2įµ xs) = primForce (force xs) 2įµ_ incā² : š¹ ā š¹ incā² 0įµ = 1įµ 0įµ incā² (1įµ xs) = 2įµ xs incā² (2įµ xs) = primForce (incā² xs) 1įµ_ up-to : ā ā List š¹ up-to = go 0įµ where go : š¹ ā ā ā List š¹ go i zero = [] go i (suc n) = primForce i Ī» i ā i ā· go (incā² i) n up-toā² : ā ā List ā up-toā² = go zero where go : ā ā ā ā List ā go i zero = [] go i (suc n) = i ā· go (suc i) n module _ {A : Set} (f : A ā A ā A) where combā² : A ā List A ā List A ā List A combā² x [] zs = zs combā² x (y ā· ys) zs = f x y ā· combā² x ys zs comb : List A ā List A ā List A comb [] ys = [] comb (x ā· xs) ys = combā² x ys (comb xs ys) forces : List š¹ ā List š¹ forces [] = [] forces (x ā· xs) = primForce (force x) Ī» xā² ā primForce (forces xs) Ī» xsā² ā xā² ā· xsā² open import Data.Binary.Conversion.Fast open import Data.Binary.Properties.Helpers using (_ā”_; refl) public open import Agda.Builtin.Bool using (true) perf-test : (š¹ ā š¹ ā š¹) ā ā ā Set perf-test f n = true ā” primForce (forces (comb f (up-to n) (up-to n))) (Ī» _ ā true) map : {A B : Set} ā (A ā B) ā List A ā List B map _ [] = [] map f (x ā· xs) = f x ā· map f xs test : (š¹ ā š¹ ā š¹) ā (ā ā ā ā ā) ā ā ā Set test f g n = let xs = comb f (up-to n) (up-to n) ys = comb g (up-toā² n) (up-toā² n) in xs ā” forces (map ā¦_āā§ ys)