Hi all,
Because not everybody has Firefox and Greasemonkey, I've included
Marnixes scripts on my pages.
You can switch to this indentation by clicking the "M" on the top
right of the proof tables (you have to reload page to switch back
to the original display).
Marnix, you did not provide much explanation, could you tell how it's working?
BR,
_
Thierry
--
You received this message because you are subscribed to the Google Groups "Metamath" group.
To unsubscribe from this group and stop receiving emails from it, send an email to metamath+unsubscribe@googlegroups.com.
To post to this group, send email to meta...@googlegroups.com.
Visit this group at https://groups.google.com/group/metamath.
For more options, visit https://groups.google.com/d/optout.
I'll point out that this is the same indentation scheme as used (by convention) in (Python) Ghilbert proofs, and with the same motivations.Regarding indentation depth, it becomes something you can optimize for. For example, "A B C 3bitri" can become "A B bitri C bitri". I personally tend to prefer the latter and feel that it's more of the "calculational style".Raph
Hi Thierry,
--
You received this message because you are subscribed to the Google Groups "Metamath" group.
To unsubscribe from this group and stop receiving emails from it, send an email to metamath+unsubscribe@googlegroups.com.
To post to this group, send email to meta...@googlegroups.com.
Visit this group at https://groups.google.com/group/metamath.
For more options, visit https://groups.google.com/d/optout.
| (1...(ϕ‘𝑁)) ≈ {𝑘 ∈ (0..^𝑁) ∣ (𝑘 gcd 𝑁) = 1} | |
| ⇒ | “using sylib 189 and bren 7108” |
| ∃𝑓 𝑓:(1...(ϕ‘𝑁))–1-1-onto→{𝑘 ∈ (0..^𝑁) ∣ (𝑘 gcd 𝑁) = 1} |
- What confuses me: The collabse/expand. Why should
I need that when I can sroll the window content?
Ok I see this navigation is already available,
you can check here:
http://metamath.tirix.org/risefacval.html#6
Basically I would be more intrested in an ability to click on
symbols than to click on hypothesis. Like clicking on the
word RiseFac and getting automatically transported to
its definition. These symbol clicks would be something
new. I just see that the original proof without any
collapse/expand has already hypothesis links.
Hi all,
For those who don't follow the Github repository: I've made several changes on the scripts for displaying proofs (mm-web-ui) during the last few days:
BR,
_
Thierry
To unsubscribe from this group and stop receiving emails from it, send an email to metamath+u...@googlegroups.com.
I have a question concerning the unicode rendering
and metamath in general. Lets look at this rendering:
((𝐴 ≼ 𝐵 ∧ 𝐵 ≼ 𝐴) → 𝐴 ≈ 𝐵)
http://us.metamath.org/mpeuni/sbth.html
Do operators in metamath have some operator
precendence? My expectation was that I would see:
𝐴 ≼ 𝐵 ∧ 𝐵 ≼ 𝐴 → 𝐴 ≈ 𝐵
In case this was already asked, sorry for duplicate post.
So the operator precedence is derived from the
arity, the type and the argument types.
And http://us.metamath.org/mpeuni/sbth.html shows the theorem verbatim.
But I guess verbatim does not hold for the proof. Or do the proofs take
lemmas also verbatim, and even substitute verbatim?
Hi Jan,
The "structured" rendering is actually using MathJax, which is the software which provides the contextual menu you mention (just look at the last line of the menu, it says "About MathJax").
However MathJax is slow when rendering big amounts of mathematics, and it took tens of seconds to render a single page, so I switched to off-line rendering: the "Structured" pages are rendered into a static format, SVG, and the contextual menu is lost in the process. SVG is also the reason why text selection is not possible: you have the same result if you choose "Math Settings/Math Renderer/SVG" in the contextual menu in Math Stack Exchange: the math becomes unselectable.
As you point out, as a commodity, the original Metamath "source" is shown when hovering over the formulas, and it's possible to copy that "source".
_
I just tried now. Structured view doesn't use right click mouse
event for anything. Shows the usual browser menu.
Oki Doki
Am Samstag, 12. Januar 2019 23:23:18 UTC+1 schrieb j4n bur53:Concerning the disabled mouse select for copy. MSE has
an elegant solution. You can right click mouse on some
math text, and it shows you a menu:
Show Math as
-------------------
Math Settings ...
....
And Show Math as is a submenu:
MathML Code
Tex Commands
...
I am using this quite frequently. Tex Commands opens a little
window, and I can still decide whether I copy it, or only copy
a part of it whatever. Just take any MSE page to play with it:
https://math.stackexchange.com/q/3071418/4414
Am Samstag, 12. Januar 2019 23:16:00 UTC+1 schrieb j4n bur53:Oh its now possible to click on symbols, and get
to the defintion, thats great!
Am Samstag, 12. Januar 2019 23:13:47 UTC+1 schrieb j4n bur53:The structured view does eliminate some parenthesis:
Normal view:
⊢ (∀𝑥(𝑥 ∈ 𝑦 ↔ 𝑥 ∉ 𝑥) → (𝑦 ∈ 𝑦 ↔ ¬ 𝑦 ∈ 𝑦))
⊢ ({𝑥 ∣ 𝑥 ∉ 𝑥} ∈ V ↔ ∃𝑦 𝑦 = {𝑥 ∣ 𝑥 ∉ 𝑥})
http://us.metamath.org/mpeuni/ru.html
Structured view:
Its shown without the outer parenthesis
Its shown without the outer parenthesis
http://metamath.tirix.org/ru.html
But it cannot do my initial example:
Normal view:
⊢ ((𝐴 ≼ 𝐵 ∧ 𝐵 ≼ 𝐴) → 𝐴 ≈ 𝐵)
http://us.metamath.org/mpeuni/sbth.html
Structured view:
Its shown without the outer parenthesis,
but the parenthesis around the conjunction are still there
http://metamath.tirix.org/sbth.html
I cannot show here what the structured view shows,
since the HTML has mouse selection disabled(*) for
the corresponding HTML divs.
(*)
BTW: I guess it uses:
https://stackoverflow.com/a/52457561/502187
Was too lazy to use web browser debug and CSS liveedit
to enable it. Why is this disabled, doesn't make any sense
if there is anyway a copy button for the metamath original?
Some copy right fear?
--
Hi Jan,
There are two issues to overcome to achieve that:Ok, I didn't notice its SVG. Isn't it possible to attach an alt text
to the canvas that can be copied, which would be a flat
unicode version of the rendered formula?
When I copy HTML text and it has an img tag with alt
attribute, I usually see the alt text as plain text.
Something like that.
Hi,
Very good catch!
This is most likely due to the ` NN ` in the comment.
When displaying math in comments, the "Structured" output tries to parse the formula, assuming it is a valid one. However the symbol ` NN ` is declared after ~ df-om, so the string ` NN ` is not a valid Metamath formula at that point of the set.mm file (Metamath has a way to check this by giving the "stateNum", the statement number beyond which it shall not search for symbols - that is in the function "parseMathTokens" I use). this triggers the warning.
However this shall not be relevant when parsing comments: in comments, it is not rare to make forwards references like this, and this shall be accepted. When parsing comments, I shall pass "statements", the total number of statements, as "stateNum", so that there is no restriction in the valid tokens.
I've fixed the issue and re-launched a generation of the pages (this takes a lot of time, please be patient if you still find the same issue in the coming days!).
BR,_
Thierry
PS. This also reminds me I shall take the time to share the code
for the generation!
Its red here:
={<.2,6>.,<.3,9>.}->(`3)=9
(A)http://metamath.tirix.org/df-fv.htmliota
Am Mittwoch, 23. Januar 2019 21:12:05 UTC+1 schrieb j4n bur53:Just made a funny discovery. Structured view changes F'A to F(A).
But I guess the red rendering here indicates some problems:
http://us.metamath.org/mpegif/df-fv.html
What would be great, would be a free text search that can also
search symbols. Like Symbolhound:
SymbolHound is a search engine that doesn't ignore special characters
http://symbolhound.com/
Most search engines, their index crawler and query processing
are configured that they only search alphanum.
So you need to have a custom search engine, if you want
to have better recall and precision for text that
contains symbols.
Disclaimer: Again the above link doesn't imply any endorsment
of symbolhood. Just to make a case.
Am Freitag, 1. Februar 2019 13:07:56 UTC+1 schrieb j4n bur53:Does metamath have a free text search. Like Solr or something
like that. Since recently I guess Google has updated their search
and its not anymore possible to find metamath theorems via
Google search. They only show main entry, and a book by
Chaitin which happens to have the name meta math in it.
So metamath has become less usable.
Apache Solr
https://en.wikipedia.org/wiki/Apache_Solr
Disclaimer: I am not endorsing apache solr. I posted only the link
to explain what I am missing, some free text search, since recently
Google changed their ranking.
I also don't see NOINDEX in the pages or some such.
So I guess the pages are not to blame. Roibots txt
seems also ok, nothing that would prevent indexing.
Right?
Symbolhound gives me:
0 results found for ALL OF: omega | FROM SITE: matemath.org
Am Freitag, 1. Februar 2019 13:07:56 UTC+1 schrieb j4n bur53:
Does metamath have a free text search. Like Solr or something
like that. Since recently I guess Google has updated their search
and its not anymore possible to find metamath theorems via
Google search. They only show main entry, and a book by
Chaitin which happens to have the name meta math in it.
So metamath has become less usable.
Apache Solr
https://en.wikipedia.org/wiki/Apache_Solr
Disclaimer: I am not endorsing apache solr. I posted only the link
to explain what I am missing, some free text search, since recently
Google changed their ranking.
If you are the owner of metamath.org, you can place a certifcate
on the website and then go to:
https://search.google.com/search-console
And check what the crawler does. Whether there is some problem.
Am Freitag, 1. Februar 2019 13:16:51 UTC+1 schrieb j4n bur53:
I also don't see NOINDEX in the pages or some such.
So I guess the pages are not to blame. Roibots txt
seems also ok, nothing that would prevent indexing.
Right?
Symbolhound gives me:
0 results found for ALL OF: omega | FROM SITE: matemath.org
Am Freitag, 1. Februar 2019 13:07:56 UTC+1 schrieb j4n bur53:
Does metamath have a free text search. Like Solr or something
like that. Since recently I guess Google has updated their search
and its not anymore possible to find metamath theorems via
Google search. They only show main entry, and a book by
Chaitin which happens to have the name meta math in it.
So metamath has become less usable.
Apache Solr
https://en.wikipedia.org/wiki/Apache_Solr
Disclaimer: I am not endorsing apache solr. I posted only the link
to explain what I am missing, some free text search, since recently
Google changed their ranking.
Hi Jan,
The comment of ~df-fv
seems to explain the origin and choice for the notation of the
value of a function:
The left apostrophe notation originated with Peano and was adopted in Definition *30.01 of [WhiteheadRussell] p. 235, Definition 10.11 of [Quine] p. 68, and Definition 6.11 of [TakeutiZaring] p. 26. It means the same thing as the more familiar ` F ( A ) ` notation for a function's value at ` A ` , i.e. " ` F ` of ` A ` ," but without context-dependent notational ambiguity.
From this sentence, I believed the choice was made based on the ease of parsing. The notation ( F ` A ) is probably better known to logisticians, but the notation ` F ( A ) ` should be more familiar to many, as it was the case for me when I started reading Metamath proofs, so it was the one I chose for the structured view. The structured view has no added value for the first chapters set.mm, including logic, but it should help when more complex notations are introduced, where the notation F(A) is the norm.
Are there cases where this is a problem?
_
Thierry
Ok, gotcha, I have to click on the ∈. Thats a little strange,
but well then. Its also part of the definition of mapsto:
http://metamath.tirix.org/df-mpt.html
As a syntax tree I would read maps to as (the LHS side
of the definition):
↦
/ \
∈ B
/ \
x A
But the structured view has its own ideas about that....
On Sunday, March 3, 2019 at 5:32:37 PM UTC+1, j4n bur53 wrote:Was playing around with metamath and noticed again something
interesting. The structured view provides me with the ability to
click on symbols, and it leads me directly to their definition.
This seems not to work for the mapsto symbol. Why is this so?
For example here, I cannot click on mapsto:
sigaGen = (𝑥 ∈ V ↦ ∩ {𝑠 ∈ (sigAlgebra‘∪ 𝑥) ∣ 𝑥 ⊆ 𝑠})
http://metamath.tirix.org/df-sigagen.html
Means I cannot click on ↦ . The other symbols seem to work.
I wanted to explore what is behind the mapsto symbol.
Looks like a kind of dependent type thingy inside
metamath, which makes me courious.
Corr.: Missing quantification:
|-> a F = z <=> forall x,y(<x,y> e z <=> x e a /\ F x = y)
On Sunday, March 3, 2019 at 6:05:59 PM UTC+1, j4n bur53 wrote:Corr.: The poast was nonsense. Second try:
|-> : i x (i -> i) -> i
And then:
|-> a F = z <=> forall x(<x,y> e z <=> x e a /\ F x = y)
Interestingly metamath can simply use B = y in its definition
inside df-mpt.html . Something I cannot get used to so easly.
On Sunday, March 3, 2019 at 5:50:29 PM UTC+1, j4n bur53 wrote:I would nevertheless define an operator,
(sketich with set parameters only):
|-> : i x (i -> o) -> i
Where:
|-> a (lambda x.B) := { y e a | (lambda x.B)y }
Or for short:
|-> a P:= { y e a | P y }
Which can be made into:
|-> a P = z <=> forall y(y e z <=> y e a /\ P y)
Just some ideas. This avoids overloading e.
On Sunday, March 3, 2019 at 5:43:33 PM UTC+1, j4n bur53 wrote:Yes I understand. How would you define such a construct
in Lean Theorem Prover? The definition df-mpt.html has a
lot of side conditions, which I guess are necessary to reach
its goal. Can you do the same in Lean Theorem Prover?
Some lambda x:A,B you can only instantiate x. You would need maybe
more like pi A:set pi B:set lambda x:A.B, so that A and B can be also
instantiated. But this might be implicity done by the system, i.e. you
might or might not need to write pi A:set pi B:set as well.
In as far, maybe metamath can be broken down to some smaller
units, type abstraction and value abstraction.
But I don't know
whether this all works out correctly. Since after all a type which is a
set, is also a value. I am really currious how this all works out.
Here is an example where levels get blured, first we have:
𝑦 ∈ 𝑇
So T is something like a type. And then:
𝑇 ∈ 𝑊
So T is something like a value. I am refering to this:
http://us.metamath.org/mpeuni/sxval.html
But somehow this is not an optimal example, since W is not used
in the theorem. But anyway, I guess it can nevertheless serve
to illustrate what I mean.
You wrote: "The abstraction over A and B is of the second kind, an
abstraction that lifts to the lop level of the theorem and can't be manipulated."
Now I have a little theorem, which I discovered recently, which
would show that this limitation could lead to problems. How would
you with your modelling then proof this here, which is generally valid
in FOL=+ZFC if I am not totally wrong.
forall A forall x (x e A => P(x)) <=> forall x P(x)
The forall A quantifier is not outside of <=>, its inside the LHS
of <=>. How would you do it in Lean Theorem Prover via a type
variable for A?
Corr.:
Will type variables be sets sometimes? Can we use
them for sets in Lean Theorem Prover.
On Monday, March 4, 2019 at 12:30:33 AM UTC+1, j4n bur53 wrote:There is a sectionIn Paulsons paper, side remark I don't know whether it has virtual
10.4 Zermelo-Fraenkel set theory
classes. This doesn't imply that the |-> example and the A type
variable was about virtual classes.
First things first. Will type variables be sets? Later could
discuss virtual classes.
On Monday, March 4, 2019 at 12:26:46 AM UTC+1, j4n bur53 wrote:No no, A is not a class variable. When I started asking about
a Lean Theorem Prover solution I had this product type in mind:
pi A:set pi B:set lambda x:A.B
https://groups.google.com/d/msg/metamath/Df4--aqbjwg/RBSi9hjvAgAJ
So A would be of the some kind "set". Not a class. I did not
specify how this kind "set" is realized, but the idea was only
to look at the set parameter case. I also wrote this when I said
"I would nevertheless define an operator, (sketich with set parameters
only)" You see with set parametrs only. No class thingy. The meta math
|-> is a class thingy. But I wanted to know how to do it set wise
in Lean Theorem Prover. And what I have heard with Lambda x:A.B
left some doubts for me. Because in Isabelle you can access
A,B. There is the level of using a logic, which is mostly done
in the Isar Proof language (Lean looks like a rip off of it, or vice
versa). But the you can also access Isabelle a little bit lowerlevel
and use the other Proof language, where you can mix constructs
from the logic framework with the present logic. It has already
tactics like auto (Lean ripped it off as tidy?) The lower level goes
by the name bla bla, and has its own implication and forall.
Paulson calls it meta-logic if I remember well. Also when you do
proofs in the higher level you might see artefacts from the lower level,
stuff is sometimes displayed when you work on proofs, the hints and
everything you get etc.. is still pickeld with this meta-logic. This
meta-logic allows you to make different "logics" inside Isabelle.
See also:
Isabelle: The Next 700 Theorem Provers - Lawrence Paulson
https://www.researchgate.net/publication/1960971_Isabelle_The_Next_700_Theorem_Provers
I have the feeling to do something in Lean Theorem Prover towards
metamath, you need also to have access to the meta-level of the Lean
Theorem Prover, if there is such a level. Or then follow some
other approaches. Not sure.
Disclaimer: For metamath I have only conjectured A e V /\ B e V
then (x e A |-> B) e V. Didn't dig up whether there is already
some such proves, or whether there are some nudges that
would prevent such a lemma or theorem....
On Monday, March 4, 2019 at 12:07:00 PM UTC+1, j4n bur53 wrote:In my naivity I would do something pi A:set pi B:set |->
(lamdda x:A.B) : set. So simply say that mapsto gives a set again.
In as far I wonder why in metamath the replacement axiom of set
theory, is no where mentioned in connection with
http://metamath.tirix.org/df-mpt.html
If I look here:
http://us.metamath.org/mpegif/ax-rep.html
I don't find any references to df-mpt. But they are somehow related,
like for example could prove A e V /\ B e V then (x e A |-> B) e V.
P.S.: This is also nice, Peter Aczels sup: 4.1 The SetsSets in Types, Types in Sets (1997) Cached
by Benjamin Wernerhttp://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.55.1709
Hi Jan,
Thanks for your remarks!
I've fixed at least the links to Lim, Ord, and "maps to" (link
to GitHub commit), and a few others in other commits (I've
also caught up with newly added symbols).
I've launched the regeneration of the pages just now; this usually takes a few days to complete.
_
Thierry
Now I stepped into a new problem, that clicking on symbols doesn't
work. A recent problem was "mapsto". But now "Lim" doesn't work either.
I wanted to click on "Lim" here:
𝜔 = {𝑥 ∈ On ∣ ∀𝑦(Lim 𝑦 → 𝑥 ∈ 𝑦)
http://metamath.tirix.org/df-om.html
But no reaction of the system. I was expecting that it sends me to here:
(Lim 𝐴 ↔ (Ord 𝐴 ∧ 𝐴 ≠ ∅ ∧ 𝐴 = ∪ 𝐴))
http://metamath.tirix.org/df-lim.html
Also "Ord" doesn't work. On the other hand "On" and "U" do work.
Also the links back to the non-structured unicode view don't work.
When clicking on the right top "Unicode version" in the structure
view I get the following error:
Not Found
The requested URL /mpeuni/df-lim.html was not found on this server.
http://metamath.tirix.org/mpeuni/df-lim.html
Thank you!
I have a small question. Is the syntax of a hypothesis in
definition not broken down? Bug or feature?
I was just looking at:
http://us.metamath.org/mpegif/df-cleq.html
And I have the feeling there is no breakdown
of df-cleq.1. Is there a trick to see it somewhere?
Bye
Thank you!
I have a small question. Is the syntax of a hypothesis in
definition not broken down? Bug or feature?
I was just looking at:
http://us.metamath.org/mpegif/df-cleq.html
And I have the feeling there is no breakdown
of df-cleq.1. Is there a trick to see it somewhere?
Bye
On Saturday, March 9, 2019 at 8:56:43 AM UTC+1, Thierry Arnoux wrote:
Hi all,Yesterday I got tired of manipulating the existing HTML proof tables in my Greasemonkey script, so I hacked up 'mm-calc2' which more directly renders to the proof format I have in mind, leaving the original proof table untouched. Get it at https://gist.github.com/marnix/7c2ab51156b34b8a54c61861bec452a3/raw/mm-calc2.user.js. Above each proof table, it renders a calculational equivalent of the table. It currently also works on metamath.tirix.org.Try it, for example, on http://us.metamath.org/mpeuni/eulerth.html and http://metamath.tirix.org/eulerth.html. Or on http://us.metamath.org/mpeuni/ru.html and http://metamath.tirix.org/ru.html.This initial version of mm-calc2 does not yet do collapse/expand, and it just shows both formats at the same time. So it will look not look too good on large proofs-- but I'd argue the table format is not easier to understand for large proofs anyway. :-)Also, it has a bug in that it doesn't show reused steps correctly. (For example, in http://us.metamath.org/mpeuni/pm5.54.html, the second reference to step 2 / bicomd is missing.)But despite these restrictions, it already helps me read some proofs more easily, especially with the formatting on metamath.tirix.org.And for the future this gives me a kind of 'test bed' to try different orderings of the same calculation, e.g. using a chain of <== instead of ==>, choosing not the first antecedent but a different one, or even using set.mm operators like <-> and = in the left hand column, instead of just the 'meta-implications' ==> and <==, and removing repetition by extracting common contexts like this:In context ⊢ ((𝑁 ∈ ℕ ∧ 𝐴 ∈ ℤ ∧ (𝐴 gcd 𝑁) = 1) → ...) we have
(1...(ϕ‘𝑁)) ≈ {𝑘 ∈ (0..^𝑁) ∣ (𝑘 gcd 𝑁) = 1} ⇒ “using sylib 189 and bren 7108” ∃𝑓 𝑓:(1...(ϕ‘𝑁))–1-1-onto→{𝑘 ∈ (0..^𝑁) ∣ (𝑘 gcd 𝑁) = 1} Again, no idea when I'll continue work on this, feedback welcome.Groetjes,<><Marnix2018-06-06 18:07 GMT+02:00 Marnix Klooster <marnix....@gmail.com>:(Forgot to include the group...)--Hi Thierry,Thanks for including, and so quickly! :-)What that indentation algorithm does, is take a tree like2: F4: E3: D3: C2: B1: Aand make it look like a calculation, by indenting the first parent/antecedent of a step the same as the step, the second one level deeper, etc.:2: F4: E3: D3: C2: B1: AThis is intended to match the following calculational proof:F==> "by sub-proof"E==>D==> "by C"BAI'm trying to update my Greasemonkey userscript to collapse/expand on the granularity of such calculations and sub-calculations, and to render proofs more and more in this form.Even with the current limited indentation form, with basically your (Thierry's) expand/collapse, a number of proofs start to be actually a bit readable to me. :-)And yes, a large proof will still indent quite a lot, and my indentation size might a bit too large-- but still for me it is an improvement on the standard metamath /html format. I think that my algorithm actually indents less than the original format...Groetjes,<><Marnix--2018-06-06 16:34 GMT+02:00 Thierry Arnoux <thierry...@gmx.net>:Hi all,
Because not everybody has Firefox and Greasemonkey, I've included Marnixes scripts on my pages.
You can switch to this indentation by clicking the "M" on the top right of the proof tables (you have to reload page to switch back to the original display).Marnix, you did not provide much explanation, could you tell how it's working?
BR,
_
Thierry
On 06/06/2018 04:10, Marnix Klooster wrote:
Hi all,
For quite a while I've been looking into different ways to render Metamath proofs-- and Thierry's rendering experiments (which look great!) inspired me to do some experiments in JavaScript.
To allow me easy experimentation, I've chosen to use Greasemonkey on Firefox.
To use this, you need to install the Greasemonkey add-on (https://addons.mozilla.org/en-GB/firefox/addon/greasemonkey/), and then open or install my script from https://gist.github.com/marnix/7c2ab51156b34b8a54c61861bec452a3/raw/mm-calc.user.js . (I think your Firefox Greasemonkey should auto-update when I change this script the correct way, but I'm not sure yet.)
(Caveat emptor: For any Greasemonkey script you run, make sure you get it from a trusted source, and analyze the source code if you're not sure. The above script runs with no special permissions.)
The goal of this script is to make a proof look more like a 'calculation', which (for me at least) usually makes them easier to follow. For example, try it on http://us.metamath.org/mpeuni/ru.html or http://metamath.tirix.org/ru.html (with all steps expanded).
The current version of this script only re-indents the formulas in a way that makes more sense to me than the usual tree structure. (Tested on metamath.org Gif+Unicode and metamath.tirix.org.)
I have ideas for other changes/improvements, but I have no idea whether I will have the time...
Anyway, feedback welcome, and enjoy!
Groetjes,<><Marnix--
--
