1
module tests.Forcing3 where
3
open import Prelude.Nat
5
open import Prelude.Product
6
open import Prelude.Unit
8
data _**_ (A B : Set) : Set where
11
data P {A B : Set} : A ** B -> Set where
12
_,_ : (x : A)(y : B) -> P (x , y)
14
data Q {A : Set} : A ** A -> Set where
15
[_] : (x : A) -> Q (x , x)
18
t = (Nat ** Nat) ** Nat
19
in (q : t ** t) -> Q q -> Nat
20
test ._ [ ( Z , Z ) , Z ] = Z
21
test ._ [ ( Z , S l) , m ] = S l + m
22
test ._ [ ( S Z , Z) , m ] = S m
23
test ._ [ ( S Z , S l) , m ] = S Z + m + l
24
test ._ [ ( S (S n) , l) , m ] = S (S n) + m + l
25
test ._ [ ( n , l ) , m ] = m
30
tTyp = (Nat ** Nat) ** Nat
44
pn t = printNat (test (t , t) [ t ])
b'\\ No newline at end of file'