I hereby claim:
- I am mgttlinger on github.
- I am mgttlinger (https://keybase.io/mgttlinger) on keybase.
- I have a public key ASDg_8KGStC1qz4to97HYutUaVq-tWcMHYf98CR5HVL2aQo
To claim this, I am signing this object:
| #! /usr/bin/env bash | |
| for f in "$@" | |
| do | |
| pandoc --to=markdown "$f" -o "$f.md" | |
| done | |
| if [ $# -eq 3 ]; | |
| then | |
| emacs -q --eval "(require 'ediff)" --eval "(ediff-files3 \"$1.md\" \"$2.md\" \"$3.md\")" |
| { nixpkgs ? import <nixpkgs> {} }: | |
| nixpkgs.pkgs.callPackage ./minetime.nix {} |
| Program Fixpoint rule_transform `{UInverse opu} `{BInverse opb} (p : pro) (free_nominals : Stream nat) (ed : eqn) {measure (complexity p ed)} : EnvT failure (Stream nat) (list eqn) := | |
| if orb (is_alpha p ed) (is_beta p ed) then (free_nominals, succ: ([ed])) else | |
| let av := ed.(a) in | |
| let bv := ed.(b) in | |
| match (av, bv, (bmf_pure_in p av, bmf_pure_in p bv)) with | |
| | (b_conj a1 a2, o, (false, _)) | (o, b_conj a1 a2, (_, false)) => (* /\ rule *) | |
| recurse free_nominals (rule_transform p) [{|a := a1; b := o|}; {|a := a2; b := o|}] | |
| | (b_negnom x, b_diab o a1 a2, (_, false)) | (b_diab o a1 a2, b_negnom x, (false, _)) => (* binary dia rule *) | |
| let (n1, n2) := (inr (free_nominals 0) : nom + nat, inr (free_nominals 1)) in (* if the type in there is not explicitly annotated coq inferrs something else which causes a universe inconsistency in the end *) | |
| fmap (fun r => {|a := |
| module Polyadic | |
| import Data.Vect | |
| parameters (o : Nat -> Type) | |
| mutual | |
| data MT : Nat -> Type where | |
| Pf : novar f = true -> MT 0 | |
| Iota1 : MT 1 | |
| Iota2 : MT 2 |
| Module MatchContext. | |
| Inductive D := | |
| | d_a : D | |
| | d_b : D -> D -> D. | |
| Fixpoint cmpl d := match d with | |
| | d_a => 1 | |
| | d_b x x0 => S (cmpl x + cmpl x0) | |
| end. | |
| Record T d := {a : d; b : d}. | |
| Import ListNotations. |
| data RT a = N a [RT a] deriving (Show) | |
| no a ns = N a ns | |
| lea a = N a [] | |
| sz (N _ cs) = length cs | |
| l (N a cs) = foldl (\accu b -> b) a (l <$> cs) | |
| slast l = if length l > 0 then Just (last l) else Nothing |
| Require Import Vectors.Vector. | |
| Section CT. | |
| Context {F : Type -> Type}. | |
| Record Functor__Dict := { | |
| fmap__ {a b} : (a -> b) -> F a -> F b; | |
| fmap_id__ {t} : forall ft, fmap__ (fun a : t => a) ft = ft; | |
| fmap_fusion__ {a b c} : forall (f : a -> b) (g : b -> c) fa, fmap__ g (fmap__ f fa) = fmap__ (fun e => g (f e)) fa | |
| }. |
| Require Import Vectors.Vector. | |
| Import VectorNotations. | |
| Section CT. | |
| Context {F : Type -> Type}. | |
| Record Functor__Dict := { | |
| fmap__ {a b} : (a -> b) -> F a -> F b; | |
| fmap_id__ {t} : forall ft, fmap__ (fun a : t => a) ft = ft; | |
| fmap_fusion__ {a b c} : forall (f : a -> b) (g : b -> c) fa, fmap__ g (fmap__ f fa) = fmap__ (fun e => g (f e)) fa | |
| }. |
| Section CT. | |
| Context {F : Set -> Set}. | |
| Class Functor := { fmap {a b : Set} : (a -> b) -> F a -> F b; | |
| fmap_id {t : Set} : forall ft, fmap (fun a : t => a) ft = ft; | |
| fmap_fusion {a b c : Set} : forall (f : a -> b) (g : b -> c) fa, fmap g (fmap f fa) = fmap (fun e => g (f e)) fa | |
| }. | |
| Class Pure `{Functor} := { pure {t : Set} : t -> F t }. | |
| Class Applicative `{Pure} := { zip {a b : Set} : F a -> F b -> F (a * b)%type; | |
| ap {a b : Set} : F (a -> b) -> F a -> F b := fun ff fa => fmap (fun t => match t with (f, e) => f e end) (zip ff fa); |
I hereby claim:
To claim this, I am signing this object: