aboutsummaryrefslogtreecommitdiff
path: root/entries/ionchy/agda/Fib.agda
diff options
context:
space:
mode:
authorBraxton Hall2022-10-23 23:26:32 +0000
committerGitHub2022-10-23 23:26:32 +0000
commit3e7fc904482f049e5ce549b555b96ea0ef151f71 (patch)
tree3858ab626796592c25c5c422c9f115acec67cc79 /entries/ionchy/agda/Fib.agda
parent70773c25993c9efe2c48f53521367eb7561708e6 (diff)
parent760fb3275b2af023d099a8c1e2a143cab41c5c6b (diff)
Merge pull request #8 from ionathanch/patch-1
Create Fib.agda
Diffstat (limited to 'entries/ionchy/agda/Fib.agda')
-rw-r--r--entries/ionchy/agda/Fib.agda19
1 files changed, 19 insertions, 0 deletions
diff --git a/entries/ionchy/agda/Fib.agda b/entries/ionchy/agda/Fib.agda
new file mode 100644
index 0000000..a12b0a5
--- /dev/null
+++ b/entries/ionchy/agda/Fib.agda
@@ -0,0 +1,19 @@
+
+open import Agda.Builtin.Nat
+open import Agda.Builtin.List
+open import Agda.Builtin.Reflection
+
+data Fib : Nat → Nat → Set where
+ instance F0 : Fib 0 0
+ instance F1 : Fib 1 1
+ instance Fk : ∀ {k n m} → ⦃ Fib k n ⦄ → ⦃ Fib (suc k) m ⦄ → Fib (suc (suc k)) (n + m)
+
+fib' : ∀ k {n} → ⦃ Fib k n ⦄ → Nat
+fib' k {n} ⦃ fib ⦄ = n
+
+macro
+ fib : Term → Term → TC _
+ fib t hole = unify hole (def (quote fib') (arg i t ∷ []))
+ where i = arg-info visible (modality relevant quantity-ω)
+
+{- Get the [n]th Fibonacci number by normalization via C-n `fib [n]`. -}