はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

はてなブックマーク

  • はてなブックマークって?
  • アプリ・拡張の紹介
  • ユーザー登録
  • ログイン
  • Hatena
  • Hatena

    はてなブックマーク

    トップへ戻る

    • 総合
      • 人気
      • 新着
      • IT
      • 最新ガジェット
      • 自然科学
      • 経済・金融
      • おもしろ
      • マンガ
      • ゲーム
      • はてなブログ(総合)
    • 一般
      • 人気
      • 新着
      • 社会ニュース
      • 地域
      • 国際
      • 天気
      • グルメ
      • 映画・音楽
      • スポーツ
      • はてな匿名ダイアリー
      • はてなブログ(一般)
    • 世の中
      • 人気
      • 新着
      • 新型コロナウイルス
      • 働き方
      • 生き方
      • 地域
      • 医療・ヘルス
      • 教育
      • はてな匿名ダイアリー
      • はてなブログ(世の中)
    • 政治と経済
      • 人気
      • 新着
      • 政治
      • 経済・金融
      • 企業
      • 仕事・就職
      • マーケット
      • 国際
      • はてなブログ(政治と経済)
    • 暮らし
      • 人気
      • 新着
      • カルチャー・ライフスタイル
      • ファッション
      • 運動・エクササイズ
      • 結婚・子育て
      • 住まい
      • グルメ
      • 相続
      • はてなブログ(暮らし)
      • 掃除・整理整頓
      • 雑貨
      • 買ってよかったもの
      • 旅行
      • アウトドア
      • 趣味
    • 学び
      • 人気
      • 新着
      • 人文科学
      • 社会科学
      • 自然科学
      • 語学
      • ビジネス・経営学
      • デザイン
      • 法律
      • 本・書評
      • 将棋・囲碁
      • はてなブログ(学び)
    • テクノロジー
      • 人気
      • 新着
      • IT
      • セキュリティ技術
      • はてなブログ(テクノロジー)
      • AI・機械学習
      • プログラミング
      • エンジニア
    • おもしろ
      • 人気
      • 新着
      • まとめ
      • ネタ
      • おもしろ
      • これはすごい
      • かわいい
      • 雑学
      • 癒やし
      • はてなブログ(おもしろ)
    • エンタメ
      • 人気
      • 新着
      • スポーツ
      • 映画
      • 音楽
      • アイドル
      • 芸能
      • お笑い
      • サッカー
      • 話題の動画
      • はてなブログ(エンタメ)
    • アニメとゲーム
      • 人気
      • 新着
      • マンガ
      • Webマンガ
      • ゲーム
      • 任天堂
      • PlayStation
      • アニメ
      • バーチャルYouTuber
      • オタクカルチャー
      • はてなブログ(アニメとゲーム)
      • はてなブログ(ゲーム)
    • おすすめ

      Google I/O

    『にわとり小屋でのプログラミング日記』

    • 人気
    • 新着
    • すべて
    • あみだくじが無限ループしないことを証明した - にわとり小屋でのプログラミング

      26 users

      yosh.hateblo.jp

      どんなあみだくじでも答えにたどり着くことを証明した。 ここでいうあみだくじとは 有限本のくじ(縦棒)がある 縦棒上の点と点を結ぶ横道が有限本ある 横道は水平線だけじゃなく、遠くのくじへ行ったり自身を上に行ったりできる ダメなこと 「ふりだしへもどる」はない 同じ点と点を結ぶことはできない 一方通行はない 一度通ると崩れるマリオのブロックみたいな道はない どちらに行くか選べる分岐みたいなのはない なぜ証明したか PPLで話題になって証明しようかなと思った。 ざっくりとしたアイディア あみだくじを形式的に定義するアイディア くじ(縦棒)の集合があったとき、横道の集まりで一つのあみだくじのデータを表現した。 例えばこのあみだくじは A0--B2, A1--B0, B1--C0 という3本の横道として表現する。横道は端点のペアであり、端点の添字は点の高さで上から順に一つづつ大きい数字になる。各くじ

      • テクノロジー
      • 2025/03/12 17:21
      • coq
      • あとで読む
      • 技術
      • Programming
      • (株)proof ninjaが(株)ドワンゴから資金調達を実施 - にわとり小屋でのプログラミング

        4 users

        yosh.hateblo.jp

        この度、株式会社proof ninja (本社: 東京都板橋区、代表取締役: 今井宜洋、以下「当社」)は、2019年10月に新規株主となる株式会社ドワンゴを引受先として、第三者割当増資による資金調達を実施したことをおしらせします。資金調達額は1000万円です。 当社は形式証明で数学的に証明されたソフトウェアを提供することを目指しています。暗号通貨Tezosのコア開発に参加し、関数型プログラミング言語OCamlおよび証明支援器Coqによる開発に力を注いでおります。 調達した資金は証明駆動開発や関数プログラミングの開発促進のために投資することにより、ソフトウェアの高信頼化に貢献していく所存です。 本資金の出資者 株式会社ドワンゴ (本社: 東京都中央区) お問い合わせ Email: [email protected] Twitter: @proof_ninja

        • 暮らし
        • 2019/10/21 14:39
        • 会社を作ります その1 - にわとり小屋でのプログラミング

          8 users

          yosh.hateblo.jp

          会社を作ろうとしています。 ウェブ上にも身の回りでもあまり情報がまだ少ないと感じているため、このような記事が今後起業する誰かの参考になるかもしれません。 概要 会社名: 株式会社 proof ninja 事業内容: ソフトウェアの開発・検証 設立希望時期: 今年の9月2日 決算月: 8月 会社を設立するためには定款などの書類を法務局に申請する必要があります。私はマネーフォワード会社設立というサービスの「自分で会社設立」プランを利用しました。 マネーフォワード会社設立 会社設立手続きから健康保険や税務署への届け出などもサポートしてくれそうです。 やったこと ドメイン取得 `co.jp` ドメインは会社法人しかとれないですが、登記前に申請・設定ができるみたいです。私はお名前.comで `proof-ninja.co.jp` を取得しました。 印鑑作成 特にこだわりはなかったので最も安そうな楽天

          • 政治と経済
          • 2019/08/27 20:58
          • 起業
          • 依存関係のある値のうちの一部をrewriteしようとしたときの問題 - にわとり小屋でのプログラミング

            4 users

            yosh.hateblo.jp

            この記事は「Theorem Prover Advent Calendar 2013」5日目の記事である。 最近、とある大手企業のシステムのバイナリデータを扱う処理の高速化のためにCoqを使ったのだが、ちょっとアレっと思ったことを体験したのでそれを共有したいと思う。 問題の概要は表題の通り。シンプルな問題なので、レガシーCoq (version 8.4pl2) で説明する。 簡単のため、やや人工的な例を紹介する。 まず、正の自然数を引数にとる関数fを仮定し、その関数は引数が偶数のときは、戻り値はその半分になるとする。深い意味は無いので考えてはいけない。 Variable f : forall n : nat, n > 0 -> nat. Hypothesis h : forall (n : nat) (H : 2 * n > 0), f (2 * n) H = n. さて、ここで ある変数x

            • テクノロジー
            • 2013/12/07 20:07
            • OCamlとCoqを連携してIO処理をモナディックに扱う - にわとり小屋でのプログラミング

              7 users

              yosh.hateblo.jp

              この記事は OCaml Advent Calendar の5日目の記事です。 OCamlと連携して、CoqでもIO処理ができるようにするためのライブラリを作った。 http://github.com/yoshihiro503/coqio このライブラリを使えば、例えば次のようなコードを書くことができる。 Require Import Monad IO. Open Scope string_scope. Definition main : IO unit := do _ <- print "Hello" ; println ", world!". Haskell風のdo式みたいな記法が便利だね。print関数には文字列だけでなく、Showクラスのインスタンスとなる型を持つ式ならばなんでも与えることができる*1。 このコードを次のコマンドでExtractすればcoq.mlというOCamlのソー

              • テクノロジー
              • 2012/12/06 02:28
              • ocaml
              • monad
              • Coqで型クラス(Haskell風 モナドの定義) - にわとり小屋でのプログラミング

                3 users

                yosh.hateblo.jp

                Coq version 8.2以降からHaskell風の型クラスが使えるようになったから使ってみることにした。 Haskellで型クラスといえばMonadが有名な気がするのでHaskell風のモナドHMonadを定義しよう。 Coqでの型クラスは次のように宣言するみたいだ。 Class HMonad (M: Type -> Type) := { mreturn : forall {A}, A -> M A ; mbind : forall {A B}, M A -> (A -> M B) -> M B }. *1 この定義だとHaskellのモナドとあんまり変わらないが、Coqは証明も第一級の値なので、なんらか満たしてほしい性質を型で指定することができる。モナドはモナド則を満たしてほしいので、モナド則をみたしていないといけないクラスにしよう。 モナド則を加えるとちょうどこんな感じになった。

                • テクノロジー
                • 2012/10/28 00:30
                • Coq
                • 証明された証明支援器をScalaで書いてみた - にわとり小屋でのプログラミング

                  11 users

                  yosh.hateblo.jp

                  この記事はTheorem Proving Advent Calendarの7日目の記事である。 静的型付き関数型言語は言語処理系の実装が容易であることから多くの場合、証明支援器(proof assistant)が実装されている。例えばStandard MLではIsabelle/HOL、OCamlでCoq、HaskellでAgdaが実装されている。 しかしながら、Twitter社が使っていることなどで最近有名になっている関数型言語のScalaはそのような証明支援器はあまり見受けられない。これはScalaが言語処理系だけでなく一般のアプリケーションでも効果的であることを示している。そうは言ってもScalaで証明支援器を書いてもいいんじゃないかと思ったので書いてみた。 実装に関して、証明支援器のモデルを実装したCoqのライブラリを使用した。coq2scalaを使ってこれをScalaのライブラリと

                  • テクノロジー
                  • 2011/12/07 18:16
                  • Coq
                  • Scala
                  • プログラミング
                  • 証明支援器
                  • OCamlでlet recを使わずにfact関数を定義する - にわとり小屋でのプログラミング

                    8 users

                    yosh.hateblo.jp

                    今日はProofCafeでCPDTの三章を読み進めたが、そこでCoqではInductive型のコンストラクタの引数が関数のとき、その関数の左側に自分自身が現れてはいけないということを学んだ。もしそれを可能にしてしまうと無限ループが定義でき、公理系が矛盾してしまうからだ。次のシンプルな例を見てみよう。 Inductive t (A: Set) : Set := | T : (t A -> A) -> t A. 一見なんの問題も無さそうな この型定義は失敗し、次のようなコンパイルエラーが出力される。 Error: Non strictly positive occurrence of "t" in "(t A -> A) -> t A".もしこの型が定義できたとすると次のような関数が定義できてしまう。 Definition ワォ (T f) := f (T f). ここで (ワォ (T ワォ)

                    • テクノロジー
                    • 2010/07/24 23:06
                    • OCaml
                    • lambda
                    • ポジティブ型とマイポジティブ型 - にわとり小屋でのプログラミング

                      3 users

                      yosh.hateblo.jp

                      (** Remark 今回はZArithモジュールを使うよ。 Require Import ZArith. をタイプしてね。 *) 導入 Coqでは、整数全体の型はZで表され、次のように定義されている。 Coq < Print Z. Inductive Z : Set := Z0 : Z | Zpos : positive -> Z | Zneg : positive -> Z Z0はゼロで、Zposは正の数、Znegは負の数を表している。 ここでpositiveという型が使われているが、これは1以上の整数全体を表している。 Coqでは、このpositive型に工夫がしてあって、現実のプログラムとの親和性をよくしている。 具体的には次のような再帰的な定義になっている。 Coq < Print positive. Inductive positive : Set := xI : positi

                      • テクノロジー
                      • 2010/03/14 16:19
                      • Coq
                      • OCamlerのためのCoq便利モジュールを公開してみた - にわとり小屋でのプログラミング

                        3 users

                        yosh.hateblo.jp

                        このBaseモジュールをインストールすれば、写真の用なコードを書くことが出来る。 ダウンロード: http://sourceforge.jp/projects/coqbase/ 具体的には以下のことを定義した。 標準出力へ出力するprint, println関数 命令をつなげるセミコロン演算子 依存型を使った型安全なprintf関数 natからOCamlのint、stringからOCamlのstringへの相互変換関数 Coqでのbool、sumbool、list、option型をそのままOCamlの型として使うための連携

                        • テクノロジー
                        • 2010/01/26 12:55
                        • OCaml
                        • Coq
                        • programming
                        • 迷路の試験問題を解いてみた - にわとり小屋でのプログラミング

                          27 users

                          yosh.hateblo.jp

                          参考:人材獲得作戦・4 試験問題ほか: 人生を書き換える者すらいた。 Lv4に評価されるためには、最短性の完全なチェックが必要だったのでCoqで証明してみた。 まず、accessiblesという関数を定義し、以下の性質を証明した。 ここでplengthはパスの長さを計る関数で、Path x pはpがxを起点としたパスであるという述語。endofはパスの終点を求める関数。 Fixpoint accessibles (start : node) (len : nat) : list path := match len with | O => (PUnit start) :: nil | S n' => div_equiv path_equiv_dec @@ (flat_map expand @@ accessibles start n') end. この関数はstartから始まってlenの長さ

                          • テクノロジー
                          • 2010/01/19 22:15
                          • Coq
                          • OCaml
                          • algorithm
                          • Programming
                          • *programming
                          • 数学
                          • プログラミング
                          • Coqによる証明駆動開発で Merge Sort プログラムをつくってみた - にわとり小屋でのプログラミング

                            18 users

                            yosh.hateblo.jp

                            OCaml合宿で帰りの車の中でid:zyxwv さんにMergeSortの正しさをどうやって証明するか聞かれてとっさに証明できなかったので、合宿から帰ったあとに一生懸命証明してみた。 プログラムと証明の全体はこちら: yoshihiro503 / mergesort / source / — Bitbucket。 思ったより簡単ではなく、いろいろなテクニックが必要で非常に勉強になった。Coq初心者の人はMergeSortの問題をとりあえずの目標にして証明を頑張ると非常に効率がいいのではないかと思う。 私は、だいたい以下の流れでプログラムした。 Sortedという命題を作り、リストがソート済みであるという状態を定義する mergesort関数があるとして、満たすべき性質(i)を定理として記述する mergesort関数を定義する mergesort関数に必要な補助関数 merge関数を定義し

                            • テクノロジー
                            • 2009/12/07 18:42
                            • Coq
                            • 証明
                            • プログラミング
                            • *programming
                            • プログラム
                            • test
                            • 2009-10-23

                              3 users

                              yosh.hateblo.jp

                              Proof Party に行けないけど、参加してるつもりで問題に挑戦してみた。今日は名古屋で一人証明パーティ。パズルと応用問題は解いていない。 東京は遠いので、Proof Partyの次回がもしあれば 名古屋か関西で開催していただければありがたいです。> ranhaさん 自然数の様々な性質は既にCoqの標準ライブラリに豊富に揃っているが、これらの性質は非常にベーシックなので、一から定義して証明してみた。以下はCoqのArithライブラリも特別なタクティックも使わずに実装した。 まず、自然数全体の型 nat を定義する。 Inductive nat : Set := | O : nat | S : nat -> nat. 次にこの自然数上での足し算を計算する plus 関数を定義する。 Fixpoint plus x y := match x with | O => y | S x => S

                              • テクノロジー
                              • 2009/10/24 02:45
                              • Leightweight Language Future (LLFuture) と、等価変換セミナーに行ってきた。 - にわとり小屋でのプログラミング

                                4 users

                                yosh.hateblo.jp

                                LL Future LL Futureでは、id:sumiiさんがラムダ式や、ユークリッドのアルゴリズムなどの歴史を語っていたのがおもしろかった。数学でのおもしろい概念は何百年後も利用されるのか。 じゃあ今、数学(や計算機科学)でホットな話題が100年後利用されるのかな?学術分野で今ホットなことってなんだろう? 今回のイベントは未来のプログラミングがテーマなのに、全体的にプログラムの品質などについて言及している人が少なかった気がする。ちょっと不思議だと思った。 ともあれ、控え室などでいろんな人とお話出来たのはなによりの収穫だった。 Haskellのshelarcyさんとラムダな話ができた。未来のHaskellには依存型が入るとか、System Fが入るとか。 Haskellのid:nobsunさんと名刺交換できた。nobsunのソースコードから、厳格な厳しい感じの人を想像していたが、真逆だ

                                • テクノロジー
                                • 2008/09/01 22:55
                                • llfuture
                                • Coqで依存型 - にわとり小屋でのプログラミング

                                  7 users

                                  yosh.hateblo.jp

                                  最近Agdaがはやっているみたいなので、Coqでも依存型(dependent type)を使ってみた。 実装したのは長さ n のベクトル型だ。このベクトル型を使うと、空でないとか、長さが等しいとかを型の段階で保証できるので、より安全なプログラムを書くことができるのだ。 Variable A:Set. Inductive Vec : nat -> Set := | VNil : Vec O | VCons : forall n, A -> Vec n -> Vec (S n). このベクトル型を使えば、コンパイル時に長さの整合性もチェックしてくれて、間違いがある場所を教えてくれる。コンパイルさえ通れば、OutOfBoundsExceptionのような実行時エラーは起こりえないことが保証される。 例えば、一般的にリストのhead関数は、引数が1以上の長さのときのみ定義でき、空リストの場合には値

                                  • テクノロジー
                                  • 2008/07/15 23:56
                                  • coq
                                  • Coqで、クイックソート - にわとり小屋でのプログラミング

                                    3 users

                                    yosh.hateblo.jp

                                    (* 注意:今回はCoq 8.1以上を使用。 *) 今回は、らくがきえんじんで、昔 言及されていた、クイックソートに挑戦してみる。 Coqで、再帰する関数を書く場合は、Definitionコマンドではなく、Fixpointコマンドを使う。 しかし、Fixpointによる関数定義では、明らかに停止する構造を持つ必要がある。 Coqでは、必ず停止する関数のみが定義できる、という制限のため、このように再帰する関数を定義するのは難しいが、Coqで作った関数は、必ず停止して結果を返す、という性質を保っている。 しかし、Fixpointによる定義では、簡単に定義できない再帰関数もある。 例えば、次のように、クイックソートの関数を素直にかいてみると、以下のようなエラーになる。 (* クイックソートの定義 失敗例 *) Fixpoint qsort (l : list A) : list A := mat

                                    • テクノロジー
                                    • 2008/03/09 10:34
                                    • coq
                                    • おもしろい
                                    • programming
                                    • Coqでニコニコ :-] - にわとり小屋でのプログラミング

                                      5 users

                                      yosh.hateblo.jp

                                      Coqで証明をする動画を作って、にこにこ動画に公開した。 http://www.nicovideo.jp/watch/sm1276083

                                      • テクノロジー
                                      • 2007/10/15 14:06
                                      • Coq
                                      • nicovideo
                                      • 後で読む
                                      • 大阪人に関するうわさ - にわとり小屋でのプログラミング

                                        4 users

                                        yosh.hateblo.jp

                                        世の中には大阪人に関する間違った認識があふれているように思う。 例えば、大阪人は縦縞のユニフォームを着ている、とか嫁さんが強くてカカア天下である、とかである。 今回はそのような間違った俗説を払拭するべくCoqで証明してみた。 Coq < Section なにわ. まず、次のような文を定めて、6つの噂を仮定する。ただし ~(にょろ) は否定を表す記号である。 Coq < Variable 大阪人である : Prop. Coq < Variable たこ焼きを食べたことがある : Prop. Coq < Variable 常に縦縞の服を着る : Prop. Coq < Variable 嫁さんの尻に敷かれてる : Prop. Coq < Variable 阪神の試合には欠かさず行く : Prop. 大阪人である is assumed たこ焼きを食べたことがある is assumed 常に縦縞の

                                        • テクノロジー
                                        • 2007/07/24 13:09
                                        • *ネタ
                                        • Coqのインストール - にわとり小屋でのプログラミング

                                          4 users

                                          yosh.hateblo.jp

                                          最近パソコンを買ったんだけど、使い方がよく解らない。という人のために、今日はCoqのインストールの方法を紹介しよう。 対象となる OS はWindows Vistaだ! Coqはだいたい次の3ステップで、使うことが出来る。恐れずに挑戦してみよう。 1。CoqのサイトからCoqのもとをダウンロード → 2。それを自分のパソコンにセットアップ → 3。起動 1。Coqのもとをダウンロード まずは Coqのサイト を見てみよう。(インターネットにつながっている必要がある。注意しよう) そこは黄色い雰囲気のサイトで、何やら英語でいろいろ書いてあるだろう。 よくみると[Coq 8.1]という項目の近くに鶏の絵があって、その近くに Download とかいてある部分が見つかる。そこをマウスでクリックしてみよう。 [The current version : Coq 8.1]という項目の中をよくよくさが

                                          • テクノロジー
                                          • 2007/07/08 03:38
                                          • Coq
                                          • language
                                          • 数学
                                          • *ネタ
                                          • これはすごい
                                          • にわとり小屋でのプログラミング日記

                                            15 users

                                            yosh.hateblo.jp

                                            どんなあみだくじでも答えにたどり着くことを証明した。 ここでいうあみだくじとは 有限本のくじ(縦棒)がある 縦棒上の点と点を結ぶ横道が有限本ある 横道は水平線だけじゃなく、遠くのくじへ行ったり自身を上に行ったりできる ダメなこと 「ふりだしへもどる」はない 同じ点と点を結ぶことはできない 一方通行はない 一度通ると崩れるマリオのブロックみたいな道はない どちらに行くか選べる分岐みたいなのはない なぜ証明したか PPLで話題になって証明しようかなと思った。 ざっくりとしたアイディア あみだくじを形式的に定義するアイディア くじ(縦棒)の集合があったとき、横道の集まりで一つのあみだくじのデータを表現した。 例えばこのあみだくじは A0--B2, A1--B0, B1--C0 という3本の横道として表現する。横道は端点のペアであり、端点の添字は点の高さで上から順に一つづつ大きい数字になる。各くじ

                                            • テクノロジー
                                            • 2007/06/18 19:03
                                            • Coq
                                            • functional
                                            • ocaml
                                            • programming
                                            • blog
                                            • math
                                            • 言語
                                            • 数学
                                            • プログラミング

                                            このページはまだ
                                            ブックマークされていません

                                            このページを最初にブックマークしてみませんか?

                                            『にわとり小屋でのプログラミング日記』の新着エントリーを見る

                                            キーボードショートカット一覧

                                            j次のブックマーク

                                            k前のブックマーク

                                            lあとで読む

                                            eコメント一覧を開く

                                            oページを開く

                                            はてなブックマーク

                                            • 総合
                                            • 一般
                                            • 世の中
                                            • 政治と経済
                                            • 暮らし
                                            • 学び
                                            • テクノロジー
                                            • エンタメ
                                            • アニメとゲーム
                                            • おもしろ
                                            • アプリ・拡張機能
                                            • 開発ブログ
                                            • ヘルプ
                                            • お問い合わせ
                                            • ガイドライン
                                            • 利用規約
                                            • プライバシーポリシー
                                            • 利用者情報の外部送信について
                                            • ガイドライン
                                            • 利用規約
                                            • プライバシーポリシー
                                            • 利用者情報の外部送信について

                                            公式Twitter

                                            • 公式アカウント
                                            • ホットエントリー

                                            はてなのサービス

                                            • はてなブログ
                                            • はてなブログPro
                                            • 人力検索はてな
                                            • はてなブログ タグ
                                            • はてなニュース
                                            • ソレドコ
                                            • App Storeからダウンロード
                                            • Google Playで手に入れよう
                                            Copyright © 2005-2025 Hatena. All Rights Reserved.
                                            設定を変更しましたx