Lean

Leanタクティク 1

過去記事: タクティク解説、等式の種類も タクティクのためのゲンツェン法則 「Leanタクティク」は、実際のLeanのタクティクを話題にする。参考URL: https://www.ma.imperial.ac.uk/~buzzard/xena/formalising-mathematics-2022/Part_C/Part_C.html ケビン…

ゲーム構造とシナリオ

ステージデザインとシナリオスクリプトで指定すること。 ストーリー〈コース〉の開始ステージ(入り口)と終了(出口)の指定。 各ステージのコンテキスト(予備知識)とスキル(コマンドセット) ステージクリア条件 クリアした後の進行先の選択肢、条件付…

リーズニングゲームと証明モーション

論理的体系のマクロな構造とその学習は、リーズニングゲームで行う。リーズニングゲームは、背景知識/背景スキル〈コマンドセット〉を提供するグリモワ〈仏: grimoire | 魔導書〉と、ゲーム・ストーリーからなる。ゲームストーリーはパッケージとして流通単…

2-コンテナとインスティチューション

まだユルユルな議論なのだが、コンテナの次元UPした概念である2-コンテナとインスティチューションを組み合わせてセオリー論を洗練させられる気がする。$`\newcommand{\cat}[1]{ \mathcal{#1} } \newcommand{\mrm}[1]{ \mathrm{#1} }`$ コンテナ インスティ…

定理証明ライブラリの非互換性と相互運用性

この論文、参考になる。 https://kwarc.info/people/frabe/Research/KRW_isabelle_19.pdf Making Isabelle Content Accessible in Knowledge Representation Formats Michael Kohlhase, Florian Rabe, Makarius Wenzel 日付はハッキリしないが、2020以降なの…

Lean do記法 説明 2

新しく導入する構文は: 変更可能代入文 副作用付きif文〈手続き的if文〉 キーワードと構文: let mut := 代入の右辺式は純 if-then-else if-then unless-do 翻訳: mutキーワードは、変数が変更可能であることを宣言する。let mut 変数 ← ... は、変更可能…

Lean do記法 説明 1

少しずつ説明。 構文範疇に、式と文〈ステートメント〉がある。 文には式文(式はそのまま文)と副作用let文がある。 do構文は式(do式)、純let式も式 let文といったときは副作用let文で、let式は純let式。 翻訳: do式の翻訳は、そのボディブロックを翻訳…

シーケント記法とステージ

前提: 条件{節}? conditional clause 事実: 主張 assertive sentence 判断: 証拠付き主張 / 証拠 with Evidence 質問: 疑問文 interrogative sentence / Question コンテキスト、項、戻り型〈return type〉がある。 コンテキスト 項 戻り型 記号 知識 …

拡張do記法

https://dl.acm.org/doi/pdf/10.1145/3547640 より:

Leanのモナド 2

総称型も「型」と言ってる。Type u → Type v は宇宙非エンド〈universe non-endo〉な型関数だが、これが単項〈1パラメータ〉の総称型。関手やモナドの台構造はこの種の「型」。広義の“型”上に構造が載るので型クラスになる。 「総称型=型関数」という“型”上…

ステージ構造〈レベル〉とシナリオ

https://www.slideshare.net/onoremiz/mmorpg-14352457 より: レベルの要素とは: アイテムの配置 地形や動線の設定 敵の配置/AIの設定 ギミックの配置 クリア条件の設定 レベルデザインとは: ゲーム内の環境や経験をデザインすること。 レベルエディタ〈…

型クラスとかちょっと一般論

まず、Leanコミュニティでも用語の個人差がある。object, term, value, element なんかは要注意。型クラスのパラメータは、相対指標の部分指標の指定なので、ファイバー付き圏のベース圏を指定する。C が1パラメータの型クラスとして、固定したξに対して (C …

Leanのモナド たぶん続きがある

クラスBindは、">>=" または bind を持っている構造のクラス。 クラスPureは、pure を持っている構造のクラス。 クラスFunctorは、map を持っている構造のクラス。mapしてから適用するのを <$> で表す?? 型クラスのベース〈パラメータ〉は型関数=総称型だ…

main関数

戻り値にステータスを返したいなら IO UInt32 とする。戻り値不要なら Unit でもよい。 def main(args : List String) : IO Unit := do let len := List.length args IO.println s!"length of args is {len}" for i in [0:len] do IO.println (List.get! arg…

テンプレート文字列

s!を前置するとテンプレート文字列になる。他にもナントカビックリがあるのか? s!"Hello, {hello}!"改行は普通に入れられる。エスケープの必要はない。

Lean4のモナド系統図

Listはなぜかモナドから外されて単なる関手扱い。 白が“クラス”で青が“インスタンス”ということだろう。 矢印はクラス間の extends と、インスタンス-クラス間の member-of モナドの末尾は M というネーミングルールだが、守られてはいない。 Pure と Bind …

main関数

戻り値にステータスを返したいなら IO UInt32 とする。戻り値不要なら Unit でもよい。 def main(args : List String) : IO Unit := do let len := List.length args IO.println s!"length of args is {len}" for i in [0:len] do IO.println (List.get! arg…

テンプレート文字列

s!を前置するとテンプレート文字列になる。他にもナントカビックリがあるのか? s!"Hello, {hello}!"改行は普通に入れられる。エスケープの必要はない。

ステージとシーケントボックス

ステージと知識シーケントは同じもの。ステージは内部にシーケントをホストする。 ステージのコンテキストはステージ矩形の上部にだけ描いて、内部には貫入しない。 ステージのコンテキスト部のレイアウトは知識シーケントと同じ。 ステージは、コンテキスト…

ステージクリア型ゲームとしてのリーズニング

基本的にステージクリア型ゲーム。ビジュアルノベル(選択式アドベンチャーゲーム)の要素も入る。 ステージはツリー状に配置される。親ステージと子ステージ〈サブステージ〉がある。 ステージツリーは、状態遷移により動的に変化する。 ステージにコンテキ…

タクティクのためのゲンツェン法則

Ident 公理 Cut オペラッド結合 Weak 水増し Cont 冗長性縮約 contraは矛盾 Perm 交換 CtxAndIntroL CtxAndIntroR CtxtOrIntro CtXImpIntro (LJ変形) CtxNotIntro CtxUnivIntro CtxExIntro TrgAndIntro TrgOrIntroL TrgOrIntroR TrgImpIntro TrgNotIntro T…

タクティク解説、等式の種類も

等式の種類: definitional equality : Leanカーネルが判定する項の同一性。システムレベルで「同じ」とみなす。 propositional equality : 等値性を意味する命題(真か偽の文)。証明がないと保証されない。システムレベルで事前に成立している同一性では…

やること、練習問題

型付きJSON(むかし、XIONとかXJSON呼んでいたヤツ)をマクロで実装する。 ベキ等可換モノイドからジョイン半束を作る。 乗法ベキ等可換環のスペクトル理論(昔のブログ記事にある) 距離連続写像は位相連続写像である。 定義・証明だけでなくて組織化を注意…

カリー/ハワード/ランベック対応 基本用語の対応

型と計算 命題と証明 型演算/構成子 命題結合子 依存型構成子 限量子 型ファミリー (命題ファミリー) インデックス域 論域 インデックス 個体 インデックス変数 限量束縛変数 関数 保証 戻り型 結論命題 ターゲット型 ターゲット命題(質問の) 引数リスト …

宇宙構造と圏論的定式化

Coqの宇宙は {Set, Prop} → Type → Type → ... Leanの宇宙は Prop → Type → Type → ...Typeには番号が付く。別にどっちでもいい。圏論的には次の圏を準備する。$`\newcommand{\mrm}[1]{\mathrm{#1}} `$ $`{\bf Ded}`$ $`{\bf Set}`$ $`{\bf SET}`$ $`{\bf CA…

Lean 4 でよく使うUnicode文字

入力法は、コマンド "lean4: Show all abbribiations" で表示される。 文字 名前 番号 入力法 用途 “λ” Greek Small Letter Lamda U+03BB \lam ラムダ抽象 “↦” Rightwards Arrow from Bar U+21A6 \map ラムダ抽象の区切り “·” Middle Dot U+00B7 \. 無名ラム…

Lean 4 tips : main関数、ライブラリサーチ、名前短縮

def main (args : List String) : IO UInt32 := doimport Mathlib.Tactic.LibrarySearch #check library_search%パーセント記号は相変わらず意味不明。名前短縮とは、修飾名を短くすること。ひとつは、open でカレント名前空間に別名前空間の名前をぶちまけ…

Lean 4 tips : main関数とライブラリサーチ

def main (args : List String) : IO UInt32 := doimport Mathlib.Tactic.LibrarySearch #check library_search%パーセント記号は相変わらず意味不明。

自然言語の例

http://www.omdoc.org/pubs/omdoc1.2.pdf の印刷ページ21(p.37)から:Definition 3.2.5 (Monoid) A monoid is a semigroup $`S = (G, \circ)`$ with an element $`e\in G`$, such that $`e ◦ x = x`$ for all $`x ∈ G`$. $`e`$ is called a left unit of $…

組織化と可視性制御

モジュール(Leanモジュールと外部・他言語モジュール) 名前空間 セクション キーワード (module は無い、欲しかったが) import namespace section open : pretectedなら修飾必要、privateは見えない。export は修飾なしになる。 scoped : 名前空間内に…