| 
1478
 | 
     1  | 
(*  Title:      Residuals.thy
  | 
| 
1048
 | 
     2  | 
    ID:         $Id$
  | 
| 
1478
 | 
     3  | 
    Author:     Ole Rasmussen
  | 
| 
1048
 | 
     4  | 
    Copyright   1995  University of Cambridge
  | 
| 
 | 
     5  | 
    Logic Image: ZF
  | 
| 
 | 
     6  | 
  | 
| 
 | 
     7  | 
*)
  | 
| 
 | 
     8  | 
  | 
| 
 | 
     9  | 
Residuals = Substitution+
  | 
| 
 | 
    10  | 
  | 
| 
 | 
    11  | 
consts
  | 
| 
1478
 | 
    12  | 
  Sres          :: i
  | 
| 
 | 
    13  | 
  residuals     :: [i,i,i]=>i
  | 
| 
 | 
    14  | 
  "|>"          :: [i,i]=>i     (infixl 70)
  | 
| 
1048
 | 
    15  | 
  
  | 
| 
 | 
    16  | 
translations
  | 
| 
 | 
    17  | 
  "residuals(u,v,w)"  == "<u,v,w>:Sres"
  | 
| 
 | 
    18  | 
  | 
| 
 | 
    19  | 
inductive
  | 
| 
 | 
    20  | 
  domains       "Sres" <= "redexes*redexes*redexes"
  | 
| 
 | 
    21  | 
  intrs
  | 
| 
1478
 | 
    22  | 
    Res_Var     "n:nat ==> residuals(Var(n),Var(n),Var(n))"
  | 
| 
 | 
    23  | 
    Res_Fun     "[|residuals(u,v,w)|]==>   
  | 
| 
 | 
    24  | 
                     residuals(Fun(u),Fun(v),Fun(w))"
  | 
| 
 | 
    25  | 
    Res_App     "[|residuals(u1,v1,w1);   
  | 
| 
 | 
    26  | 
                   residuals(u2,v2,w2); b:bool|]==>   
  | 
| 
 | 
    27  | 
                 residuals(App(b,u1,u2),App(0,v1,v2),App(b,w1,w2))"
  | 
| 
 | 
    28  | 
    Res_redex   "[|residuals(u1,v1,w1);   
  | 
| 
 | 
    29  | 
                   residuals(u2,v2,w2); b:bool|]==>   
  | 
| 
 | 
    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"
  | 
| 
1048
 | 
    32  | 
  | 
| 
 | 
    33  | 
rules
  | 
| 
3840
 | 
    34  | 
  res_func_def  "u |> v == THE w. residuals(u,v,w)"
  | 
| 
1048
 | 
    35  | 
end
  | 
| 
 | 
    36  | 
  |