With only one exception, failure, Felix now produces
*.why files for every compilation that pass thru why
syntax checks. The exception is a stupid test case:
test/regress/rt-1.01.26-0
axiom poly[t] ( sym:t * t -> t, eq:t * t-> bool, x:t, y:t):
sym(x,y) == sym(y,x)
;
which generates this:
axiom poly:
forall sym_47: (dunno, 'T46) fn.
forall eq_50: (dunno, bool) fn.
forall x_53: 'T46.
forall y_56: 'T46.
true=
(eq_50)(((sym_47)((x_53, y_56)), (sym_47)((y_56, x_53))))
File "test/regress/rt-1.01.26-0.why", line 48, characters 21-23:
Syntax error
If I clean up the syntax I get this:
sym_47(x_53, y_56) = sym_47(y_56, x_53)
Unbound variable sym_47
The first problem is that why doesn't support higher order functions.
To fix this I think is easy: the type I'm using in lieu is:
type ('a,'b) fn (* functions *)
so i just need a something like:
logic apply: ('a, 'b) fn, 'a -> 'b
The second problem is the 'dunno', which is an encoding
for an untranslatable data type, in this case a tuple (pair).
I guess I just have to introduce
type ('a, 'b) tup2
type ('a, 'b, 'c) tup3
...
I'm not sure how to handle Felix arrays. In Felix arrays
are tuples so
t ^ 2 = t * t
and the array form is canonical so
f: int * int -> int
is always represented by
f: int ^ 2 -> int
The next step, I plan to add:
lemma L(x:int): x + 1 = 1 + x;
which is the same form as an axiom, but is labelled as a lemma
to indicate it should be derivable from the axioms.
These will become Why goals, and it should be possible to
prove them by processing the *.why file with --simplify
and then passing the result to simplify.
Another thing to do is translate Felix pre- and post-conditions.
--
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Felix-language mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/felix-language