(*  Title:      Conversion.thy
    ID:         $Id$
    Author:     Ole Rasmussen
    Copyright   1995  University of Cambridge
    Logic Image: ZF
*)
Conversion = Confluence+
consts
  Sconv1        :: i
  "<-1->"       :: [i,i]=>o (infixl 50)
  Sconv         :: i
  "<--->"       :: [i,i]=>o (infixl 50)
translations
  "a<-1->b"    == "<a,b>:Sconv1"
  "a<--->b"    == "<a,b>:Sconv"
  
inductive
  domains       "Sconv1" <= "lambda*lambda"
  intrs
    red1        "m -1-> n ==> m<-1->n"
    expl        "n -1-> m ==> m<-1->n"
  type_intrs    "[red1D1,red1D2]@lambda.intrs@bool_typechecks"
inductive
  domains       "Sconv" <= "lambda*lambda"
  intrs
    one_step    "m<-1->n  ==> m<--->n"
    refl        "m:lambda ==> m<--->m"
    trans       "[|m<--->n; n<--->p|] ==> m<--->p"
  type_intrs    "[Sconv1.dom_subset RS subsetD]@lambda.intrs@bool_typechecks"
end