senooken JP Social
  • FAQ
  • Login
senooken JP Socialはsenookenの専用分散SNSです。
  • Public

    • Public
    • Network
    • Groups
    • Popular
    • People

Conversation

Notices

  1. きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 06-Feb-2021 22:59:39 JST きゅーけー きゅーけー

    全ての関数が全域で変な値がどの分岐に入るかを一応考えないといけないのは少し難しい気がしてる。再帰関数の場合は変な値は基底部の方に入れるようにする。変な値を受け入れていいのかという問題自体は Guard で解決可能なのでそこを気にする必要はないんだけど、納得するのがむずかしい問題かもしれない。

    In conversation Saturday, 06-Feb-2021 22:59:39 JST from mastodon.tojo.tokyo permalink
    • 杉田匠 (tacumi@misskey.io)'s status on Saturday, 06-Feb-2021 23:18:05 JST 杉田匠 杉田匠
      in reply to

      @tojoqk@mastodon.tojo.tokyo https://www.cs.utexas.edu/users/moore/acl2/manuals/current/manual/index-seo.php/COMMON-LISP____FLETfletで局所関数も作れたりするので変な値とやらはそこに隠すのもいいかも

      In conversation Saturday, 06-Feb-2021 23:18:05 JST permalink

      Attachments


      きゅーけー repeated this.
    • きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 06-Feb-2021 23:18:05 JST きゅーけー きゅーけー
      in reply to
      • 杉田匠

      @tacumi ここで話している変な値は関数が本来受け入れたくない値のことでした。たとえば、階乗を計算をする関数を実装する場合に自然数のみを引数に取りたいと思っても ACL2 では全ての関数が全域でないといけないので、どんな値を渡しても計算が停止しなんらかの値を返さなければなりません。この例の場合では zp という関数を使って条件分岐すると、自然数以外の値を全て 0 として処理してくれて、 0 の場合が基底部になるのでこれが正解(zerop で分岐すると話が難しくなる)なんですが、これに納得するのが難しいだろうなという趣旨でした。基本的には上記の zp のような異常な値を特定の値であるとみなす述語を使うことで解決します。

      http://www.mathcs.duq.edu/simon/acl2/ZERO-TEST-IDIOMS.html

      (誤解されると非常にまずいので毎回書いているのですが、ACL2 は Guard という機能で自然数でない値が渡されないことを静的に検証することが可能です。ただ、Guard を使っていても、自然数でない値を引数にとってもなんらかの値を返すように関数を書かないといけないんです)

      In conversation Saturday, 06-Feb-2021 23:18:05 JST permalink

Feeds

  • Activity Streams
  • RSS 2.0
  • Atom
  • Help
  • About
  • FAQ
  • TOS
  • Privacy
  • Source
  • Version
  • Contact

senooken JP Social is a social network, courtesy of senooken. It runs on GNU social, version 2.0.2-beta0, available under the GNU Affero General Public License.

Creative Commons Attribution 3.0 All senooken JP Social content and data are available under the Creative Commons Attribution 3.0 license.