Skip to content

Commit

Permalink
opaque コマンドの説明を見直して読みやすくする
Browse files Browse the repository at this point in the history
  • Loading branch information
Seasawher committed Aug 20, 2024
1 parent 04cd0c2 commit 41ebbe3
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions Examples/Command/Declarative/Opaque.lean
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
/- # opaque
`opaque` は、定義に展開できない名前を宣言するコマンドです。
`opaque` は、定義に展開できない名前を宣言するコマンドです。具体的な実装を与えずに特定の型を持つ項が「とりあえず何かある」という表現ができます。
`opaque` コマンドを使用して宣言した名前は、`#reduce` コマンドで簡約できません。
## def との違い
[`def`](./Def.md) と異なり `opaque` コマンドを使用して宣言した名前は、`#reduce` コマンドで簡約できません。
-/

-- def を使って定義
Expand Down Expand Up @@ -74,8 +76,8 @@ Additional diagnostic information may be available using the `set_option diagnos
-/
#guard_msgs in opaque something : Something

/- ## 使用例
具体的に値を与えずに型だけを指定することができるため、「...という要件を満たす何かが、とにかく存在すると仮定する」という表現ができます
/- ## variable との違い
`opaque` と同じく [`variable`](./Variable.md) コマンドも「特定の型を持つ項がとりあえず何かある」という表現をするために使用されることがありますが、両者には重要な違いがあります
たとえば、Lean の型システムにおいて「自分自身に適用することができる関数 `f : (A → B) → C` は存在しない」ということをコードで確かめたかったとします。このとき「何でもいいので」型 `A, B, C` と関数 `f` が存在すると仮定を置きたくなります。
Expand Down

0 comments on commit 41ebbe3

Please sign in to comment.