I'm having trouble tranlating the idiom
{ x: P(x) }
into larch. Any clues? I checked the larch FAQ
http://www.cs.iastate.edu/~leavens/larch-faq.html#SEC39
with no luck.
The actual example I'm after is more like:
Dom(u) = {1} \U {1.v1.v2...vk : v1.v2...vk \in Dom(v)}
This seems to provide a clue:
===============
http://www.realtime-info.be/encyc/techno/terms/26/102.htm
the
Replacement axiom
schema:
If F(x,y) is a formula
such that for any x,
there is a unique y
making F true, and X is
a set, then
{F x : x in X}
is a set. In other words,
if you do something to
each element of a set,
the result is a set.
===============
But I can't figure out how to use that clue.
I might be avoiding the use of \E for no good reason.
Maybe that solves the problem.
I'm trying to absorb a paper about Forest autonoma
http://www.geocities.com/ResearchTriangle/Lab/6259/prelim1.pdf
by transcribing it into larch. I made it through
the basic definitions, but I'm having trouble with
some of the more complex ones. I've attached
my work so far. Any clues?
Also... is there any hope of running the larch prover
on a linux box?
--
Dan Connolly
http://www.w3.org/People/Connolly/
forest(E, C): trait
%
% Transcribed by Dan Connolly <connolly@w3.org> from:
% Forest-regular Languages and Tree-regular Languages
% MURATA Makoto
% May 26, 1995
% http://www.geocities.com/ResearchTriangle/Lab/6259/prelim1.pdf
%
% $Id$
includes
Integer,
List(Int, IntList),
Set(IntList, IntListSet)
introduces
empty: -> C
__{__} : E, C -> C
__ || __ : C, C -> C
tree: C -> Bool
width : C -> Int
Dom: C -> IntListSet
Domaux: C -> IntListSet
Domaux2: C, C -> IntListSet
forest: C, IntList -> E
__ / __ : C, IntList -> C
asserts
C generated by empty, __{__}, || % 2.1 Forest
forall a: E, u,v,w: C, i, w1, u1: Int, v1k, w2k, u1k, u2k, d: IntList
% 2.2 tree
tree(a{u}) == true; % 2.2. Tree
tree(empty) == false;
tree(u||v) == false;
% 2.3 forest width
width(empty) == 0;
width(a{u}) == 1;
width(u||v) == width(u) + width(v);
% 2.4 forest domain
Dom(empty) = {};
Dom(a{v}) == {{1}} \U Domaux(a{v});
(1 \precat v1k) \in Domaux(a{v}) == v1k \in Dom(v);
% @@ and nothing else is in Domaux(a{v})
Dom(v || w) == Dom(v) \U Domaux2(v,w);
((w1 + width(v)) \precat w2k) \in Domaux2(v,w) == w2k \in Dom(w);
% @@ and nothing else
% 2.6 forest function
forest(a{v}, {1}) == a;
forest(a{v}, 1 \precat v1k) == forest(v, v1k);
u1k \in Dom(v) => forest(v || w, u1k) = forest(v, u1k);
(\not ((u1 \precat u2k) \in Dom(v))) =>
forest(v || w, u1 \precat u2k) =
forest(w, (u1 + width(v)) \precat u2k)
% 2.8 subtree
% Dom(u/d) == { 1 \precat v1k