From rbotting@wiley.csusb.edu Tue Feb 15 10:49 PST 1994
Return-Path: <rbotting@wiley.csusb.edu>
Received: from wiley.csusb.edu by silicon.csci.csusb.edu (5.0/SMI-SVR4)
	id AA16403; Tue, 15 Feb 94 10:49:35 PST
Received: by wiley.csusb.edu (5.67a/1.34)
	id AA11964; Tue, 15 Feb 1994 10:50:46 -0800
Date: Tue, 15 Feb 1994 10:50:46 -0800
From: rbotting@wiley.csusb.edu ("Dr. Richard Botting")
Message-Id: <199402151850.AA11964@wiley.csusb.edu>
To: dick@silicon.csci.csusb.edu
Subject: (fwd) Re: Finding minimums of a set
Newsgroups: comp.specification.z
Content-Type: text
Content-Length: 2356
Status: R

Newsgroups: comp.specification.z
Path: csus.edu!wupost!howland.reston.ans.net!usenet.ins.cwru.edu!news.ecn.bgu.edu!siemens!ps
From: ps@scr.siemens.com (Phil Stocks)
Subject: Re: Finding minimums of a set
Message-ID: <CL7xp4.DE3@scr.siemens.com>
Sender: news@scr.siemens.com (NeTnEwS)
Nntp-Posting-Host: kingswood.siemens.com
Organization: Siemens Corporate Research, Princeton (Plainsboro), NJ
References: <2jnljp$6lt@greene.dur.ac.uk>
Date: Mon, 14 Feb 1994 14:31:52 GMT
Lines: 39

Alexis Manning <Alexis.Manning@durham.ac.uk> writes:

>I have a partial function from a given set to a natural number. What I'm 
>after doing is to find which member(s) of the given set map to the lowest 
>natural number. I thought that there was some sort of \min function, but 

If I understand what you're trying to achieve, this passes fUZZ for me:

\begin{zed}
    [GIVEN]
\end{zed}

\begin{axdef}
    f: GIVEN \pfun \nat
\end{axdef}

\begin{axdef}
    m: \power GIVEN
\where
    m = f\inv \limg \{min (\ran f)\} \rimg
\end{axdef}

Is that what you're after?  The variable m here is a set, because there
could be more than one member of GIVEN which maps to the minimum range
element of f.  You can use various methods (\mu, \exists) to get an
arbitrary element of m.

>While I'm on, can anyone recommend a good fuzz reference? My Z textbook 
>is damnably useful, but not particularly helpful in isolating which fuzz 
>command is required. (Or in helping with fuzz's error messages)

There is a fUZZ manual (called "The fUZZ Manual", oddly enough) by Mike
Spivey.  I thought it came with fUZZ.  I haven't wanted to do anything with
fUZZ that I couldn't find out how to do in some form from the manual.

---------------------------------------------------------------------------
Phil Stocks                                              ps@scr.siemens.com
Siemens Corporate Research, Inc.                       tel: +1 609 734 3649
755 College Road East, Princeton, NJ 08540             fax: +1 609 734 6565

--
rbotting@wiley.csusb.edu.
rbotting::=`Dr. Richard J. Botting`, wiley::=`Faculty EMail System`,
csusb::=`California State University, San Bernardino, CA 92407, USA`.
Aka::=`dick@doc.csci.csusb.edu`.
Disclaimer::=`CSUSB may or may not agree with this message`.
Copyright(1994)::=`Copy and use as you wish as long as you include this
	copywrite and signature`.

From rbotting@wiley.csusb.edu Thu May 19 11:59 PDT 1994
Return-Path: <rbotting@wiley.csusb.edu>
Received: from wiley.csusb.edu by silicon.csci.csusb.edu (5.0/SMI-SVR4)
	id AA27643; Thu, 19 May 94 11:59:08 PDT
Received: by wiley.csusb.edu (5.67a/1.34)
	id AA14066; Thu, 19 May 1994 11:59:08 -0700
Date: Thu, 19 May 1994 11:59:08 -0700
From: rbotting@wiley.csusb.edu ("Dr. Richard Botting")
Message-Id: <199405191859.AA14066@wiley.csusb.edu>
To: dick@silicon.csci.csusb.edu
Subject: (fwd) Re: A question about style (or a problem with Z?)
Newsgroups: comp.specification.z
Content-Type: text
Content-Length: 2468
Status: R

Path: csus.edu!wupost!howland.reston.ans.net!spool.mu.edu!news.clark.edu!netnews.nwnet.net!news.u.washington.edu!news.u.washington.edu!jon
From: jon@bilbo.radonc.washington.edu (Jon Jacky)
Newsgroups: comp.specification.z
Subject: Re: A question about style (or a problem with Z?)
Date: 13 May 94 15:44:52
Organization: /users/jon/.organization
Lines: 48
Distribution: world
Message-ID: <JON.94May13154452@bilbo.radonc.washington.edu>
References: <Cp8DAu.H9s@dm.unibo.it> <CpACsn.FIG@scr.siemens.com> <CpE0ur.Bq7.3@cs.cmu.edu>
	<2qgc0c$8i9@cybernet.cse.fau.edu> <2qkg0s$apn@uqcspe.cs.uq.oz.au>
NNTP-Posting-Host: bilbo.radonc.washington.edu
In-reply-to: brendan@cs.uq.oz.au's message of 9 May 1994 05:00:12 GMT


I'm a bit puzzled by this thread.  Everyone realizes you can update a
function at one value (leaving the rest unchanged) using the override
operator,

	f' = f (+) { k |-> d }

but some of the discussion suggests that updating a function at more
than one value is a special problem that requires a rather complicated
solution.  The override operator works just as well at multiple
values:

	f' = f (+) { k1 |-> d1, k2 |-> d2, k3 |-> d3 }

So you don't need to define different operations for updating with
one, two and more values.  This works for any number of values:

  F == Key -+> Data

  +--Update---------------
  | f, f': F
  | updates?: F
  +----------------------
  | f' = f (+) updates?
  +----------------------

You can specialize this if you must have names for updates with particular
numbers of values:

  +--DoubleUpdate--------- 
  | Update
  | k1?,k2?: Key
  | d1?,d2?: Data 
  +-----------------------
  | updates? = { k1? |-> d1?, k2? |-> d2? } 
  +-----------------------

The definition of overriding ensures that the function remains the
same at values outside the domain of ``updates?''

- Jon
--

Jonathan Jacky				jon@radonc.washington.edu
Radiation Oncology RC-08		voice:	(206)-548-4117
University of Washington		FAX:	(206)-548-6218	
Seattle, Washington  98195
USA

--
rbotting@wiley.csusb.edu.
rbotting::=`Dr. Richard J. Botting`, wiley::=`Faculty EMail System`,
csusb::=`California State University, San Bernardino, CA 92407, USA`.
Aka::=`dick@doc.csci.csusb.edu`.
Disclaimer::=`CSUSB may or may not agree with this message`.
Copyright(1994)::=`Copy and use as you wish as long as you include this
	copyright and signature`.
Send EMail to gradinfo@silicon.csci.csusb.edu for info on a new
	Masters degree in Computer Science!

