summaryrefslogtreecommitdiff
path: root/Test/hofs/Renaming.dfy
blob: 8a2dc03a43ac167bc4c998453eb437bcc8cab0c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// RUN: %dafny "%s" > "%t"
// RUN: %diff "%s.expect" "%t"

function OnId(f : (bool -> bool) -> int) : int
  reads f.reads(x => x);
  requires f.requires(y => y);
{
  f(z => z)
}

method Equal() {
  var id1 : bool -> bool := x => x;
  var id2                := y => y;
  assert forall x :: id1(x) == id2(x);
  assert id1 == id2;
}

method K<A,B>(P : (A -> A) -> bool)
  requires P.requires(x => x);
  requires P(y => y);
{
  assert P(z => z);
  assert (x => y => x) == ((a : A) => (b : B) => a);
}