@@ -15,16 +15,35 @@ DecType {a} _ = a
15syntax "{{" [prfname] ":" "accept" [dec] "}}" "->" [ret]
15syntax "{{" [prfname] ":" "accept" [dec] "}}" "->" [ret]
16 = { default (decProof dec) prfname : DecType dec } -> ret
16 = { default (decProof dec) prfname : DecType dec } -> ret
18+syntax "{{" [prfname] ":" "reject" [dec] "}}" "->" [ret]
19+ = { default (decProof dec) prfname : DecType dec -> _|_ } -> ret
19argsAreSame : (n:Nat) -> (m:Nat)
22argsAreSame : (n:Nat) -> (m:Nat)
20 -> {{ same : accept (decEq n m) }} -> ()
23 -> {{ same : accept (decEq n m) }} -> ()
21argsAreSame _ _ = ()
24argsAreSame _ _ = ()
27+argsAreDiff : (n:Nat) -> (m:Nat)
28+ -> {{ diff : reject (decEq m n) }} -> ()
23data SameNats : Type where
32data SameNats : Type where
24 same : (n:Nat) -> (m:Nat) -> {{ same : accept (decEq m n) }} -> SameNats
33 same : (n:Nat) -> (m:Nat) -> {{ same : accept (decEq m n) }} -> SameNats
35+data DiffNats : Type where
36+ diff : (n:Nat) -> (m:Nat) -> {{ diff : reject (decEq m n) }} -> DiffNats
26zArgsAreSame : ()
39zArgsAreSame : ()
27zArgsAreSame = argsAreSame Z Z
40zArgsAreSame = argsAreSame Z Z
43+zszArgsAreDiff = argsAreDiff Z (S Z)
29sameNatZs : SameNats
45sameNatZs : SameNats
30sameNatZs = same Z Z
46sameNatZs = same Z Z
48+diffNatsZSZ : DiffNats
49+diffNatsZSZ = diff Z (S Z)