私はステンレスで証明しようとしていますが、2つのリストの内容が同じで、1つのリストがxで囲まれていれば、もう一方のリストもxで囲まれています。そうするために、私は、構文を使用するように言われている:ステンレスのforallコンストラクトの使用
forall(x => list.content.contains(x) ==> p(x))
補題のように(冗長な方法で)書かれます:問題は、私は次のエラーを得ることである
def lowerBoundLemma(l1: List[BigInt],l2: List[BigInt],x:BigInt) : Boolean = {
require(l1.content == l2.content && forall(y => l1.content.contains(y) ==> y <= x))
forall(z => l2.content.contains(z) ==> z <= x) because{
forall(z => l2.content.contains(z) ==> z <= x) ==| l1.content == l2.content |
forall(z => l1.content.contains(z) ==> z <= x) ==| trivial |
forall(y => l1.content.contains(z) ==> y <= x)
}
}.holds
:
exercise.scala:12:48: error: missing parameter type
require(l1.content == l2.content && forall(y => l1.content.contains(y) ==> y <= x))
私はyにタイプを追加すると、私は(括弧が含まれているの左中括弧を指して)このエラーが出る:
exercise.scala:12:81: error: ')' expected but '(' found.
require(l1.content == l2.content && forall(y : BigInt => l1.content.contains(y) ==> y <= x))
これはなぜ起こっているのですか?
私はまた、構文l.forall(_ <= x)
を試みたが、タイプのbecause
と==|
のような構造と組み合わせたとき、私はエラーを取得:ブールのメンバーではないので。