src/HOL/NumberTheory/WilsonRuss.thy
author wenzelm
Sun, 21 Jan 2001 19:54:52 +0100
changeset 10954 a555bfb66c2d
parent 9508 4d01dbf6ded7
child 11049 7eef34adb852
permissions -rw-r--r--
setup indent;

(*  Title:	WilsonRuss.thy
    ID:         $Id$
    Author:	Thomas M. Rasmussen
    Copyright	2000  University of Cambridge
*)

WilsonRuss = EulerFermat +

consts
  inv    :: "[int,int] => int" 
  wset   :: "int*int=>int set"

defs
  inv_def   "inv p a == (a ^ (nat (p - #2))) mod p"

recdef wset "measure ((%(a,p).(nat a)) ::int*int=>nat)"
    "wset (a,p) = (if #1<a then let ws = wset (a-#1,p) in
                     (if a:ws then ws else insert a (insert (inv p a) ws))
                   else {})"

end