Skip to content

Instantly share code, notes, and snippets.

View AlecsFerra's full-sized avatar
👾
λ

Alessio AlecsFerra

👾
λ
View GitHub Profile
@AlecsFerra
AlecsFerra / Proposal.md
Created October 7, 2024 11:05
LiquidHaskell proposal for local unfoldings

Local Definitions Proposal

The Issue

Suppose we are working with the following Liquid Haskell code:

{-@ LIQUID "--ple" @-}
{-@ LIQUID "--reflection" @-}
@AlecsFerra
AlecsFerra / cmd.nix
Created September 2, 2024 08:34
Run eduroam installers on NixOS
nix-shell -p "python3.withPackages (ps: with ps; [ dbus-python distro ])" --run "python3 <your-eduroam.py>"
@AlecsFerra
AlecsFerra / flatten.py
Created June 27, 2024 16:59
Transform a LaTeX project using \import and \subimport in a standalone LaTeX file
#! /usr/bin/env python3
# flatten.py
# Copyright (C) 2024 Alessio Ferrarini <github.com/alecsferra>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
@AlecsFerra
AlecsFerra / PolyRecord.hs
Created May 7, 2024 18:54
WIP not working
{-# LANGUAGE GADTs #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
import Data.Data (Proxy (Proxy))
import Data.Kind (Type)
import Text.Printf (printf)
module AxiomK where
open import Relation.Binary.PropositionalEquality using (_≡_)
open _≡_
-- All the equality proofs are the same ⁾
-- Unless we use the `--without-K` option ⁾
same-≡ : ∀ {l} {A : Set l} {a b : A} → (p₁ p₂ : a ≡ b) → p₁ ≡ p₂
same-≡ refl refl = refl
module RewriteAbuse where
import Relation.Binary.PropositionalEquality as Eq
open Eq using (_≡_; refl; cong; sym)
open import Data.Nat using (ℕ; zero; suc; _+_; _*_; _∸_)
+-swap : ∀ (m n p : ℕ) → m + (n + p) ≡ n + (m + p)
+-swap m n p rewrite (sym (+-assoc m n p))
| (+-comm m n)
| (+-assoc n m p)
@AlecsFerra
AlecsFerra / pairs.pie
Created August 1, 2022 16:29
Some proofs bout pairs
;; Some proofs about pairs
;; ∀ a b c. a = b → (a, c) = (b, c)
(claim a=b→ac=bc
(Π ([T U]
[K U]
[a T]
[b T]
[c K]
[_ (= T a b)])
(= (Pair T K) (cons a c) (cons b c))))
@AlecsFerra
AlecsFerra / last.pie
Created July 30, 2022 19:25
Get the last element but in a type safe way
; last
(claim last
(Π ((Of U)
(many-1 Nat)
(vec (Vec Of (add1 many-1))))
Of))
(define last
(λ (Of many-1 vec)
((ind-Nat many-1
(λ (many-1)

Keybase proof

I hereby claim:

  • I am alecsferra on github.
  • I am alecsferra (https://keybase.io/alecsferra) on keybase.
  • I have a public key ASAJE6eEkoGFeGf_LAF1ZhaduDhazfmJRUIMvemvGYDItQo

To claim this, I am signing this object:

@AlecsFerra
AlecsFerra / gencalc.py
Last active December 8, 2021 15:14
A compiler friendly calculator
print("""
main = do
print "Welcome to my addition calculator :)"
a <- getLine
b <- getLine
print $ add (read a) (read b)
""")
for i in range(1000):
for j in range(1000):