Skip to content

Instantly share code, notes, and snippets.

View louisswarren's full-sized avatar

Louis Warren louisswarren

View GitHub Profile
@louisswarren
louisswarren / Tree.agda
Created November 22, 2018 03:03
Terminating decision on a tree
open import Agda.Builtin.Nat renaming (Nat to ℕ)
open import List
open import Decidable
data _≤_ : ℕ → ℕ → Set where
0≤n : ∀{n} → zero ≤ n
sn≤sm : ∀{n m} → n ≤ m → (suc n) ≤ (suc m)
_≤?_ : (n m : ℕ) → Dec (n ≤ m)
@louisswarren
louisswarren / Frontier.agda
Created November 3, 2018 09:50
Frontier algorithm
open import Agda.Primitive
open import Agda.Builtin.Equality
data Chain {n} {A : Set n} (f : A → A) (x : A) : A → Set (lsuc n) where
nil : Chain f x x
link : ∀{y} → Chain f x y → Chain f x (f y)
record FixedPoint {n} {A : Set n} (R : A → A → Set) (f : A → A) : Set (lsuc n) where
constructor fp
field
@louisswarren
louisswarren / .gitignore
Last active November 2, 2018 10:03
Void content management system
www
ds
@louisswarren
louisswarren / WgetMakefile
Created November 1, 2018 02:04
Makefile which downloads binary resources
DL=wget -O $@
example.pdf: example.tex bin
pdflatex example.tex
.PHONY: bin
bin: image1.png image2.png
image1.png:
$(DL) https://....png
@louisswarren
louisswarren / neural.py
Last active October 25, 2018 04:08
P(ropositional) Rover - A program for searching for proofs in propositional logic
import time
import numpy as np
import random
class Layer:
def __init__(self, weights, biases):
self.weights = weights
self.biases = biases
def breed(self, other):
@louisswarren
louisswarren / max.agda
Created October 14, 2018 23:37
Max in agda
open import Agda.Builtin.Nat renaming (Nat to ℕ)
open import Agda.Builtin.Sigma
open import Vec
data Max⟨_,_⟩≡_ : ℕ → ℕ → ℕ → Set where
maxl : ∀{n} → Max⟨ n , zero ⟩≡ n
maxr : ∀{n} → Max⟨ zero , n ⟩≡ n
suc : ∀{n m k} → Max⟨ n , m ⟩≡ k → Max⟨ suc n , suc m ⟩≡ suc k
@louisswarren
louisswarren / tclass.py
Last active October 9, 2018 12:06
Extension of inheriting from namedtuple
def tclass(*argnames, then_do=None):
if len(argnames) == 1 and isinstance(argnames[0], dict):
argnames = argnames[0]
def decorator(cls):
def inner_init(self, *args, **kwargs):
for argname, arg in zip(argnames, args):
self.__setattr__(argname, arg)
for argname in list(argnames)[len(args):]:
self.__setattr__(argname, argnames[argname])
@louisswarren
louisswarren / ac.agda
Created September 28, 2018 19:07
Axiom of choice in Agda
open import Agda.Builtin.Sigma
ac : {X Y : Set} → (ρ : X → Y → Set) → (∀ x → Σ Y (ρ x)) → Σ (X → Y) (λ φ → ∀ x → ρ x (φ x))
fst (ac ρ rel) x = fst (rel x)
snd (ac ρ rel) x = snd (rel x)
@louisswarren
louisswarren / Fvec.agda
Last active September 25, 2018 21:20
Closure attempt number omega
open import Agda.Builtin.Equality
open import Agda.Builtin.Nat renaming (Nat to ℕ)
open import Agda.Builtin.Sigma
open import Decidable
module Fvec where
data Fin : ℕ → Set where
fzero : ∀{n} → Fin (suc n)
fsuc : ∀{n} → Fin n → Fin (suc n)
@louisswarren
louisswarren / omega.agda
Last active September 20, 2018 21:07
Show there is no bijection from A to 2^A
open import Agda.Builtin.Nat renaming (Nat to ℕ)
open import Agda.Builtin.Equality
open import Agda.Builtin.Sigma
trans : {A : Set} {x y z : A} → x ≡ y → y ≡ z → x ≡ z
trans refl y = y
data Bool : Set where
False True : Bool