export

export コマンドは, 他の名前空間から定義を現在の名前空間に追加します.

具体的には,Some.Namespace の配下に nameᵢ がある状態で export Some.Namespace (name₁ name₂ ...) を実行することにより,以下の両方の処理が行われます.

  • open と同様に,nameᵢSome.Namespace の接頭辞なしで現在の名前空間 N 上で見えるようになります.
  • 現在の名前空間 N の外部の名前空間から N.nameᵢ としてアクセスできるようになります.
namespace N -- export コマンドが実行される名前空間

  inductive Sample : Type where
    | foo
    | bar
    | baz

  -- foo は名前空間 Sample 上にあるので,
  -- 短い名前ではアクセスできない
  #check_failure foo
  #check Sample.foo

  -- foo を現在の名前空間 N に追加する
  export N.Sample (foo)

  -- 短い名前でもアクセス可能になった
  #check foo

end N

-- 名前空間 `N` の外部からアクセスするには,
-- 普通はフルネームが必要
#check_failure N.bar
#check N.Sample.bar

-- しかし foo は名前空間 N の内部で export されているので,
-- N を指定するだけでアクセス可能
#check N.foo