src/HOL/ex/Perm.thy
author paulson
Thu, 18 Jan 1996 10:38:29 +0100
changeset 1444 23ceb1dc9755
parent 1376 92f83b9d17e1
child 1476 608483c2122a
permissions -rw-r--r--
trivial updates
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1173
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
     1
(*  Title: 	HOL/ex/Perm.thy
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
     2
    ID:         $Id$
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
     3
    Author: 	Lawrence C Paulson, Cambridge University Computer Laboratory
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
     4
    Copyright   1995  University of Cambridge
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
     5
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
     6
Permutations: example of an inductive definition
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
     7
*)
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
     8
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
     9
Perm = List +
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
    10
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
    11
consts  perm    :: "('a list * 'a list) set"   
1376
92f83b9d17e1 removed quotes from consts and syntax sections
clasohm
parents: 1193
diff changeset
    12
syntax "@perm"  :: ['a list, 'a list] => bool ("_ <~~> _"  [50,50] 50)
1173
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
    13
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
    14
translations
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
    15
    "x <~~> y" == "(x,y) : perm"
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
    16
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
    17
inductive "perm"
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
    18
  intrs
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
    19
    Nil   "[] <~~> []"
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
    20
    swap  "y#x#l <~~> x#y#l"
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
    21
    Cons  "xs <~~> ys ==> z#xs <~~> z#ys"
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
    22
    trans "[| xs <~~> ys;  ys <~~> zs |] ==> xs <~~> zs"
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
    23
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
    24
end