これを理解する最良の方法は、Agdaではなく、集合論的集合としてこれらのものがどのようなものかを考えることだと思いますSet
。あなたが持っているとしましょうA = {a,b,c}
。関数の例はf : A → A
ペアのセットです。たとえばf = { (a,a) , (b,b) , (c,c) }
、この説明に関係のないいくつかのプロパティを満たしているとします。つまり、f
の要素は、の要素と同じ種類のものA
です。これらは単なる値、または値のペアであり、「大きすぎる」ものではありません。
ここで、関数について考えてみましょうF : A → Set
。それもペアのセットですが、そのペアは異なって見えF = { (a,A) , (b,Nat) , (c,Bool) }
ます。各ペアの最初の要素はの要素でA
あるため、非常に単純ですが、各ペアの2番目の要素はSet
!つまり、2番目の要素自体が「大きな」種類のものです。設定できなかった可能性があります。設定した場合は、のように見えるものを作成A → Set
できるはずです。これができるとすぐに、ラッセルのパラドックスを得ることができます。代わりに言います。G : A → Set
G = { (a,G) , ... }
A → Set : Set1
これは、ペアのsが右側にあり、 sが左側にあることを除いて、の関数がの関数と同じであるため、の代わりにをSet → A
含める必要があるかどうかの問題にも対処します。Set1
Set
Set → A
A → Set
A
Set