Skip to content

Instantly share code, notes, and snippets.

@notogawa
notogawa / Exp.hs
Created August 14, 2013 06:10
Haskellの依存型ムズカシネ
{-# LANGUAGE GADTs #-}
{-# LANGUAGE FunctionalDependencies #-}
-- 0/1/二項演算op2 だけしか無い式の構文で,
-- 0が高々1回しか表れないようなものを表現し,
-- Eqのインスタンスにしたい.
class ContainsZeroAtMostOne a where
data WithZero
@notogawa
notogawa / gold.hs
Last active December 20, 2015 16:38
gold用
#!/usr/bin/runhaskell
-- cabal install --with-ld=./gold.hs
import Data.List
import System.Environment
import System.Exit
import System.Process
ignores :: [String]
ignores = [ "--hash-size"
, "--reduce-memory-overheads"
@notogawa
notogawa / TypeLevel.cpp
Last active December 18, 2015 19:49
Template Meta なんちゃら
// >=gcc-4.7
#include <iostream>
#include <type_traits>
// Universes
template < unsigned int Level >
struct Set {
typedef Set< 1 + Level > type;
typedef Set< Level > value;
static const unsigned int level = Level;
-- 饂飩はモノイドについて
-- https://twitter.com/tanakh/status/325586411191427073
--
module 饂飩 where
open import Data.List as List using (List; []; _∷_; _++_)
open import Algebra
data 基本味 : Set where
たぬき : 基本味
@notogawa
notogawa / CoqAgdaCorrespond.agda
Created April 11, 2013 14:56
CoqのtacticとAgdaの対応
module CoqAgdaCorrespond where
import Data.Nat as Nat
import Data.Bool as Bool
import Relation.Binary.PropositionalEquality as PropEq
open PropEq using (_≡_; refl)
-- Moduleはmodule
-- Definitionは非再帰関数
-- Fixpointは再帰関数
@notogawa
notogawa / Rational.agda
Last active December 16, 2015 02:39
agda-stdlibの有理数をもっとがんばる
------------------------------------------------------------------------
-- The Agda standard library
--
-- Rational numbers
------------------------------------------------------------------------
module Data.Rational where
import Algebra
import Data.Bool.Properties as Bool
@notogawa
notogawa / RS3.agda
Created March 14, 2013 13:35
ロマサガ3のパーティ外成長について.
-- see. http://www.nicovideo.jp/watch/sm17339259
module RS3 where
open import Function
open import Function.Equivalence using (_⇔_; equivalence)
open import Data.Bool
open import Data.Nat
open import Data.Nat.DivMod
open import Data.Product
import Relation.Binary.PropositionalEquality as PropEq
@notogawa
notogawa / PFAD3.agda
Created March 3, 2013 03:49
PFAD3章最初の,fが狭義単調増加関数ならx ≤ f x y かつ y ≤ f x y という部分の証明
module PFAD3 where
open import Data.Nat
open import Data.Product
open import Relation.Binary.PropositionalEquality using (_≡_)
open import Function
infixr 2 _かつ_
_かつ_ = _×_
@notogawa
notogawa / PFAD2.agda
Last active December 12, 2015 07:58
PFAD2章の最初のmsc
module PFAD2 where
open import Function
open import Relation.Binary
module Ord {t₁ t₂ t₃} (T : DecTotalOrder t₁ t₂ t₃) where
open import Data.List.NonEmpty
open import Relation.Nullary
open Relation.Binary.DecTotalOrder T
@notogawa
notogawa / PFAD1.agda
Last active December 12, 2015 02:39
PFAD1章の最初のminfreeを定義するまで
module PFAD1 where
open import Function
open import Coinduction
open import Data.Bool
open import Data.List
open import Data.Colist
open import Data.Nat
open import Data.Product
open import Relation.Binary.PropositionalEquality using (_≡_; refl; cong; sym)