[ProofPower] Type-check bug?

Stephen Brackin SBrackin at cygnacom.com
Sun Sep 19 15:45:10 EDT 2004


I'm working with a schema that contains proprietary information, so I can't
send the actual data, but I've prepared sanitized extracts from it that show
the problem.  I've apparently run into a ProofPower type-checking bug and
need a work-around.

I'll call the schema I'm working with S.  S is a complicated generic schema,
but I'm trying to prove a trivial function-existence theorem about it that
can take the identity relation on S as the existential witness.  When I
execute

a(z_%exists%_tac %SZT%id S%>%);

though, I get the error response

Exception-
   Fail
      * %SZT%id S%>% cannot be interpreted as a binding that matches
      %SZT%%SML%decl_of%SZT%[f : S %fun% S]%>%%>%%>% [z_%exists%_tac.41021]
* raised
Exception+ Fail * nid SR cannot be interpreted as a binding that matches
 n'decl_ofn[f : S - S]RRR [z__tac.41021] * raised

Following Philip Clayton's suggestion, I computed and compared the Z types
of the existentially quantified bound variable in the goal and the identity
relation on S as follows:

val (asms,concl) = top_goal();
val (decl,_,_) = dest_z_%exists% concl;
val decs = dest_z_decl decl;
val bvars = flat (map (fst o dest_z_dec) decs);
val x = z_type_of (hd bvars);
val y = z_type_of (%SZT%id S%>%);

As expected, I got the response:

:) val bvars = [%SZT%f%>%] : TERM list

I compared the types by doing everything in a Linux typescript and running
diff on appropriate segments of the result.  After sanitization, I got the
following:

1,2c1,2
< :) val x = z_type_of (hd bvars);
< val x =
---
> :) val y = z_type_of (%SZT%id S%>%);
> val y =
133c133,134
<              v1, v2 : %pset% [v7 : %bbU%; v8 : %pset% %bbU%];
---
>              v1 : %pset% [v7 : %bbU%; v8 : %pset% %bbU%];
>              v2 : %pset% [v7 : %bbU%; v8 : %pset% %bbU%];
138,139c139,142
<              v3, v4, v5, v6 : %pset%
<                [v7 : %bbU%; v8 : %pset% %bbU%]];
---
>              v3 : %pset% [v7 : %bbU%; v8 : %pset% %bbU%];
>              v4 : %pset% [v7 : %bbU%; v8 : %pset% %bbU%];
>              v5 : %pset% [v7 : %bbU%; v8 : %pset% %bbU%];
>              v6 : %pset% [v7 : %bbU%; v8 : %pset% %bbU%]];

I don't use commas in the declaration portion of any schema.  Apparently,
different pieces of ProofPower software use different representations for Z
types, and these different representations sometimes cause identical types
to compare as unequal.

Bug or not, will someone tell me how to get around this so that
z_%exists%_tac accepts the witness I want to provide?

Steve

Stephen Brackin
Senior Security Analyst
CygnaCom Solutions, Inc.
an Entrust company
Phone: 607-277-8211 Fax:  607-277-8211
http://www.cygnacom.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lemma-one.com/pipermail/proofpower_lemma-one.com/attachments/20040919/b7976886/attachment.htm>


More information about the Proofpower mailing list