src/HOL/ex/Perm.thy
author paulson
Thu, 06 Jun 1996 14:39:44 +0200
changeset 1789 aade046ec6d5
parent 1476 608483c2122a
permissions -rw-r--r--
Quotes now optional around inductive set
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1476
608483c2122a expanded tabs; incorporated Konrad's changes
clasohm
parents: 1376
diff changeset
     1
(*  Title:      HOL/ex/Perm.thy
1173
b3f2ddef1438 new inductive definition: permutations
lcp
parents:
diff changeset
     2
    ID:         $Id$
1476
608483c2122a expanded tabs; incorporated Konrad's changes
clasohm
parents: 1376
diff changeset
     3
    Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
1173
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
1789
aade046ec6d5 Quotes now optional around inductive set
paulson
parents: 1476
diff changeset
    17
inductive perm
1173
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