From @sun.tfl.dk:kimdam@sun.tfl.dk  Wed Aug 22 09:04:33 1990
Received: by iris.ucdavis.edu (5.57/UCD.EECS.2.0)
        id AA12232; Wed, 22 Aug 90 09:04:33 PDT
Received: from danpost.uni-c.dk by clover.ucdavis.edu (5.59/UCD.EECS.1.11)
        id AA15424; Wed, 22 Aug 90 09:08:12 PDT
Received: from vms2.uni-c.dk by danpost.uni-c.dk (5.61/4.7)
        id AA18605; Wed, 22 Aug 90 16:04:29 GMT
Received: from tfl.dk by vms2.uni-c.dk; Wed, 22 Aug 90 18:06 GMT+2
Received: from sun0.tfl.dk by tfl.dk; Wed, 22 Aug 90 18:03 +2:00
Received: from sun1 by sun0.tfl.dk with SMTP (5.61++/IDA-1.2.8) id AA16368;
 Wed, 22 Aug 90 18:06:13 +0200
Received: by sun1.tfl.dk (5.61++/IDA-1.2.8) id AA01851; Wed, 22 Aug 90 18:02:53
 +0200
Date: Wed, 22 Aug 90 18:02:53 +0200
From: kimdam@tfl.dk
Subject: Problems with new_recursive_definition
To: info-hol@clover.ucdavis.edu
Message-Id: <9008221602.AA01851@sun1.tfl.dk>
X-Envelope-To: info-hol@clover.ucdavis.edu

Hello,

   I have problems using new_recursive_definition.

#let Aterm_Axiom = define_type `Aterm_Axiom`
#  `Aterm = AVar num | AConst * | AComb Aterm Aterm`;;

The system reply as expected with:

#Aterm_Axiom =
#|- !f0 f1 f2.
#    ?! fn.
#     (!n. fn(AVar n) = f0 n) /\
#     (!x. fn(AConst x) = f1 x) /\
#     (!A A'. fn(AComb A A') = f2(fn A)(fn A')A A')

When I try to define a recursive interpretation function Aip for
objects of the defined type:

#let v  = "v:num->*";;
#let DP = "DP:((*->bool)#(*->*->*))";;

#let Aip = new_recursive_definition false Aterm_Axiom `Aip`
#  "(!n.    Aip (AVar n) ^DP ^v   = v n) /\
#   (!x.    Aip (AConst x) DP v   = x) /\
#   (!t t'. Aip (Acomb t t') DP v =
#        (SND DP) (Aip t DP v) (Aip t' DP v))";;

the reply from the system is:

#evaluation failed     Can't solve recursion equation: Can't derive existence
 theorem
#evaluation failed     load -- /tmp/Emacs-Tmp.ml

Aip *is* a proper recursive function, as I've been able to define it
step by step using Aterm_Axiom returned by define_type.

Could anyone please tell me what is wrong with the recursive
definition above, and how, if possible, it may be fixed.

Kindly regards
        Kim Dam Petersen        (kimdam@tfl.dk)

