18 |
18 |
19 inductive |
19 inductive |
20 domains "Sres" <= "redexes*redexes*redexes" |
20 domains "Sres" <= "redexes*redexes*redexes" |
21 intrs |
21 intrs |
22 Res_Var "n:nat ==> residuals(Var(n),Var(n),Var(n))" |
22 Res_Var "n:nat ==> residuals(Var(n),Var(n),Var(n))" |
23 Res_Fun "[|residuals(u,v,w)|]==> \ |
23 Res_Fun "[|residuals(u,v,w)|]==> |
24 \ residuals(Fun(u),Fun(v),Fun(w))" |
24 residuals(Fun(u),Fun(v),Fun(w))" |
25 Res_App "[|residuals(u1,v1,w1); \ |
25 Res_App "[|residuals(u1,v1,w1); |
26 \ residuals(u2,v2,w2); b:bool|]==> \ |
26 residuals(u2,v2,w2); b:bool|]==> |
27 \ residuals(App(b,u1,u2),App(0,v1,v2),App(b,w1,w2))" |
27 residuals(App(b,u1,u2),App(0,v1,v2),App(b,w1,w2))" |
28 Res_redex "[|residuals(u1,v1,w1); \ |
28 Res_redex "[|residuals(u1,v1,w1); |
29 \ residuals(u2,v2,w2); b:bool|]==> \ |
29 residuals(u2,v2,w2); b:bool|]==> |
30 \ residuals(App(b,Fun(u1),u2),App(1,Fun(v1),v2),w2/w1)" |
30 residuals(App(b,Fun(u1),u2),App(1,Fun(v1),v2),w2/w1)" |
31 type_intrs "[subst_type]@nat_typechecks@redexes.intrs@bool_typechecks" |
31 type_intrs "[subst_type]@nat_typechecks@redexes.intrs@bool_typechecks" |
32 |
32 |
33 rules |
33 rules |
34 res_func_def "u |> v == THE w.residuals(u,v,w)" |
34 res_func_def "u |> v == THE w.residuals(u,v,w)" |
35 end |
35 end |