[Date Prev][Date Next] [Chronological] [Thread] [Top]

[mizar] the latest version of my question



Dear All,

For the past week I have been both searching MML for a suitable scheme for a recursive function that I wrote and looking into the schemes for proof of recursive functions to get a feeling on how to write my own. I looked into every scheme in the MML not to miss anything. Finally, I focused more on  NAT_1:shc 12 yesterday which seemed more promising.

scheme :: NAT_1:sch 12
LambdaRecExD{ F1() -> non empty set , F2() -> Element of F1(), F3( set , set ) -> Element of F1() } :
ex f being Function of NAT ,F1() st
( f . 0 = F2() & ( for n being Nat holds f . (n + 1) = F3(n,(f . n)) ) )
proof end;


and those in the recdef_1 and _2. So far, I am unable to make connections or drive some conclusions on where to start. The scheme I am trying to write for existence and uniqueness proofs is "for now" could be very specific to my function definition. For example, going back to NAT_1:shc 12, the last part could be
....
   (for m,n being Nat holds f.[m,n] = F(m,n,f.[(n mod m), m]);
....
,that is, all parameters are passed together with what needs to be constructed. If I can write this scheme, I will try the following scheme later:
...
  (for m,n being Nat holds f.[m,n] = F(m,n,f));
...
if it could be done in mizar like this (passing just "f" without its application to arguments so that I can make this scheme work for any function with two arguments no matter how it is defined.

By the way, the function I am trying to write a scheme for is the following one:

definition
  func megcd -> Function of [:NAT, NAT:], NAT means
  :Defmegcd:
  for m,n being Element of NAT holds
   it.[m,n] = IFEQ(m,0,n,it.[n mod m, m]);
  existence;
  uniqueness;
end;


I appreciate any guideline on how to write a scheme for recursive functions. I really need some instructions on where to start. Any referral to any link, tutorial, notes...Thank you all...

Adem Ozyavas
Graduate Student
Texas Tech University