constant prop : func(2, [@(0); @(1)])
data Peano 0 = [
| mkZ { }
| mkS { cS0 : Peano }
]
data Ev 0 = [
| mkEv { cEv0 : Peano }
]
data Even 0 = [
| mkEZ { }
| mkESS { cESS0 : Peano, cESS1 : Even }
]
bind 0 n : {n:Peano | true}
bind 1 p : {p:Even | prop p = mkEv (mkS (mkS n)) && prop p = mkEv mkZ}
bind 2 m : {m:Peano | true}
bind 3 q : {q:Even | prop q = mkEv m }
bind 4 p : {p:Even | prop p = mkEv (mkS (mkS n)) && prop p = mkEv (mkS (mkS m))}
constraint:
env [0; 1]
lhs {v:Even | true}
rhs {v:Even | prop v = mkEv n}
id 1 tag []
constraint:
env [0; 2; 3; 4]
lhs {v:Even | v = q}
rhs {v:Even | prop v = mkEv n}
id 2 tag []