atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
TLA+メモ@ウィキ
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
TLA+メモ@ウィキ
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
TLA+メモ@ウィキ
ページ検索 メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • TLA+メモ@ウィキ
  • ボイラープレート

TLA+メモ@ウィキ

ボイラープレート

最終更新:2023年05月02日 22:29

Bot(ページ名リンク)

- view
メンバー限定 登録/ログイン
ボイラープレートとはいわゆるテンプレートのこと。

ボイラープレート


TLA+は一見ではプログラミング言語のように見える。しかし、プログラムは実行される処理を表しているのに対してTLA+は仕様そのものを記述する。

  1. ------------------------------- MODULE sample-------------------------------
  2.  
  3. EXTENDS Integers
  4.  
  5. (*--algorithm sample {
  6. \* ここにPlusCalのコードを記述する。
  7. (* グローバル変数宣言 *)
  8. (* define(演算子)定義 *)
  9. (* マクロ定義 *)
  10. (* プロシジャ *)
  11. (* アルゴリズム本体、もしくはプロセス宣言 *)
  12. }*)
  13. \* BEGIN TRANSLATION
  14. \* PlusCalからTLAに翻訳されたコードは以下に出力される。
  15.  
  16. Next == Lbl_1 \/ Terminating
  17.  
  18. Spec == Init /\ [][Next]_vars
  19.  
  20. Termination == <>(pc = "Done")
  21. \* END TRANSLATION
  22. =============================================================================
  23.  

モジュール (MODULE)


TLA+ にはモジュールという大きな単位があり、モジュールは、他のモジュールから再利用可能なコードの塊を定義する。
“---- MODULE モジュール名 ----" で始まり “====” で終了する。またモジュール中の “----" は可読性のための罫線として使用することができる。
これらは 4 文字以上連続する - または = であれば良い。
ファイル名の [モジュール名].tla と TLA+ 構文の MODULE [モジュール名] でモジュール名を同じにしなければならない。
ただし、 PlusCal構文の algorithm [アルゴリズム名] はモジュール名とは異なる名前にしても良い。


EXTENDS


EXTENDS はモジュールをインポートする。EXTENDS はモジュールの先頭に定義する必要がある。EXTENDS 文は複数あってはならない。複数のモジュールをインポートする場合は、連続して記述する。

EXTENDS ModuleA, ModuleB, ModuleC

以下は正しくない。

EXTENDS ModuleA
EXTENDS ModuleB

EXTENDSでインポートされたモジュールの演算子等はグローバルなものとして扱われる。

INSTANCE


EXTENDS同様にモジュールをインポートする。似ているが異なる点がいくつかある。INSTANCE文は複数のモジュールを一度にインポートすることができない。複数のモジュールをインポートする場合は、複数回定義する。EXTENDSと異なる点に注意。

INSTANCE SequencesA
INSTANCE SequencesB

演算子に代入することでネームスペースとして使用できる。

Foo == SequencesA
 
Foo!Append(x,y)

FooやBarはネームスペースとして扱われ、呼び出す際に頭にネームスペースに続き、’!’をつける。
INSTANCE の前にLOCALをつけることでそのモジュールのローカルインスタンスとすることができる。

LOCAL INSTANCE SequencesA

LET文と組み合わせてローカルにインポートすることができる。(範囲を限定できる)

LET Foo == INSTANCE Sequences
IN Foo!Append(seq, 1)

標準モジュールについて

TLA+の標準モジュールには以下のようなモジュールがある。

MODULE名 機能
FiniteSets (有限集合) 集合とその操作に関する定義を提供しています。
Sequences (シーケンス) シーケンス(順序付けられた要素の集合)の操作と関数を提供する。
Bags (バッグ) 重複を許す集合(マルチセット)とその操作を提供する。
Naturals このモジュールは、自然数とその演算に関する定義を提供する。
Integers 整数を定義する。
Reals 実数と除算と無限大を定義する。
RealTime リアルタイムシステムのモデリングに必要な時刻とその操作を提供する。
TLC アサートやプリントなどのユーティリティ関数を提供する。

定数宣言 (CONSTANTS)


CONSTANTSキーワードを使用して、定数を宣言することができる。例えば以下は名前が"MaxValue"の定数を宣言することを示す。

CONSTANTS MaxValue

変数宣言 (VARIABLES)


“VARIABLES” (“VARIABLE”でも可)に続き変数を定義する。TLA+の変数、演算子に日本語は使用できない。
変数の宣言は以下のように行う。

VARIABLES x, y

コメント


TLA+では1行コメントは ”\*”、ブロックコメントは ”(*” で始まり、“*)”で終わる。
コメントには日本語を使用することもできる。PlusCalの構文はコメント内に配置される。

\* This is a single-line comment
 
(*
  This is a
  multi-line comment
*)
 

セミコロン


TLA+は文末にセミコロンを必要としない。PlusCalは文末にセミコロンを必要とする。
「ボイラープレート」をウィキ内検索
LINE
シェア
Tweet

[Amazon商品]


TLA+メモ@ウィキ
記事メニュー

メニュー

  • トップページ
  • TLA+とは
  • ボイラープレート
  • 型 (Type)
  • 文法 (Syntax)
  • PlusCal構文
  • 時相論理 (temporal logic)
  • TLA+ TooolBox
  • よく使う表現
  • 例題


リンク

  • The TLA+ Home Page
  • TLA+ Foundation
  • TLA+ GitHub
  • TLA+ Video Course (YouTube)
  • Learn TLA+
  • @wiki
  • @wikiご利用ガイド


アクセス

今日: -
昨日: -
合計: -


ここを編集
記事メニュー2

人気のページ

  • TLA+とは
  • PlusCal構文
  • 食事する哲学者の問題
  • トップページ
  • 型 (Type)
  • 例題
  • 文法 (Syntax)
  • 時相論理 (temporal logic)
  • うそつき牛(レイトン教授)
  • ボイラープレート

更新履歴


編集履歴

取得中です。

ここを編集
最近更新されたページ
  • 58日前

    TLA+とは
  • 58日前

    メニュー
  • 434日前

    PlusCal構文
  • 618日前

    型 (Type)
  • 619日前

    時相論理 (temporal logic)
  • 636日前

    文法 (Syntax)
  • 774日前

    川渡り問題
  • 775日前

    例題
  • 779日前

    うそつき牛(レイトン教授)
  • 779日前

    食事する哲学者の問題
もっと見る
最近更新されたページ
  • 58日前

    TLA+とは
  • 58日前

    メニュー
  • 434日前

    PlusCal構文
  • 618日前

    型 (Type)
  • 619日前

    時相論理 (temporal logic)
  • 636日前

    文法 (Syntax)
  • 774日前

    川渡り問題
  • 775日前

    例題
  • 779日前

    うそつき牛(レイトン教授)
  • 779日前

    食事する哲学者の問題
もっと見る
ウィキ募集バナー
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. MadTown GTA (Beta) まとめウィキ
  2. AviUtl2のWiki
  3. R.E.P.O. 日本語解説Wiki
  4. シュガードール情報まとめウィキ
  5. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  6. ソードランページ @ 非公式wiki
  7. シミュグラ2Wiki(Simulation Of Grand2)GTARP
  8. ドラゴンボール Sparking! ZERO 攻略Wiki
  9. 星飼いの詩@ ウィキ
  10. ヒカマーWiki
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ストグラ まとめ @ウィキ
  3. ゲームカタログ@Wiki ~名作からクソゲーまで~
  4. 初音ミク Wiki
  5. 検索してはいけない言葉 @ ウィキ
  6. 発車メロディーwiki
  7. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  8. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  9. オレカバトル アプリ版 @ ウィキ
  10. MadTown GTA (Beta) まとめウィキ
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 参加者一覧 - ストグラ まとめ @ウィキ
  2. モンスター一覧_第2章 - モンスター烈伝オレカバトル2@wiki
  3. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  4. 高崎線 - 発車メロディーwiki
  5. 近藤旬子 - 馬主データベース@Wiki
  6. 地獄のデザイナーさん1 - 【トレパク】 きりつき 検証まとめwiki 【地獄のデザイナーさん】
  7. 召喚 - PATAPON(パタポン) wiki
  8. 細田守 - アニヲタWiki(仮)
  9. ステージ攻略 - パタポン2 ドンチャカ♪@うぃき
  10. 鬼レンチャン(レベル順) - 鬼レンチャンWiki
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.