src/ZF/Resid/SubUnion.thy
author lcp
Thu, 13 Apr 1995 15:38:07 +0200
changeset 1048 5ba0314f8214
child 1155 928a16e02f9f
permissions -rw-r--r--
New example by Ole Rasmussen
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1048
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     1
(*  Title: 	SubUnion.thy
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     2
    ID:         $Id$
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     3
    Author: 	Ole Rasmussen
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     4
    Copyright   1995  University of Cambridge
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     5
    Logic Image: ZF
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     6
*)
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     7
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     8
SubUnion = Redex +
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     9
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    10
consts
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    11
  Ssub,Scomp,Sreg  :: "i"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    12
  "<==","~"        :: "[i,i]=>o" (infixl 70)
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    13
  un               :: "[i,i]=>i" (infixl 70)
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    14
  regular	   :: "i=>o"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    15
  
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    16
translations
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    17
  "a<==b"        == "<a,b>:Ssub"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    18
  "a ~ b"        == "<a,b>:Scomp"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    19
  "regular(a)"   == "a:Sreg"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    20
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    21
inductive
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    22
  domains       "Ssub" <= "redexes*redexes"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    23
  intrs
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    24
    Sub_Var	"n:nat ==> Var(n)<== Var(n)"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    25
    Sub_Fun	"[|u<== v|]==> Fun(u)<== Fun(v)"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    26
    Sub_App1	"[|u1<== v1; u2<== v2; b:bool|]==>   \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    27
\		     App(0,u1,u2)<== App(b,v1,v2)"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    28
    Sub_App2	"[|u1<== v1; u2<== v2|]==>   \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    29
\		     App(1,u1,u2)<== App(1,v1,v2)"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    30
  type_intrs	"redexes.intrs@bool_typechecks"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    31
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    32
inductive
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    33
  domains       "Scomp" <= "redexes*redexes"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    34
  intrs
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    35
    Comp_Var	"n:nat ==> Var(n) ~ Var(n)"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    36
    Comp_Fun	"[|u ~ v|]==> Fun(u) ~ Fun(v)"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    37
    Comp_App	"[|u1 ~ v1; u2 ~ v2; b1:bool; b2:bool|]==>   \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    38
\		     App(b1,u1,u2) ~ App(b2,v1,v2)"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    39
  type_intrs	"redexes.intrs@bool_typechecks"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    40
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    41
inductive
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    42
  domains       "Sreg" <= "redexes"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    43
  intrs
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    44
    Reg_Var	"n:nat ==> regular(Var(n))"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    45
    Reg_Fun	"[|regular(u)|]==> regular(Fun(u))"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    46
    Reg_App1	"[|regular(Fun(u)); regular(v) \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    47
\		     |]==>regular(App(1,Fun(u),v))"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    48
    Reg_App2	"[|regular(u); regular(v) \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    49
\		     |]==>regular(App(0,u,v))"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    50
  type_intrs	"redexes.intrs@bool_typechecks"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    51
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    52
defs
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    53
  union_def  "u un v == redex_rec(u,   \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    54
\	 %i.lam t:redexes.redexes_case(%j.Var(i), %x.0, %b x y.0, t),   \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    55
\      %x m.lam t:redexes.redexes_case(%j.0, %y.Fun(m`y), %b y z.0, t),   \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    56
\%b x y m p.lam t:redexes.redexes_case(%j.0, %y.0,   \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    57
\	                               %c z u. App(b or c, m`z, p`u), t))`v"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    58
end
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    59