I used prenex normal form in a loose way. More worse I don’t know the definition of the nnf yet. Seeing the short codes of leanTAP I took it by guess that nnf is the internal form that leanTAP handle.
Currently, my preprocessor convert to the “nnf” in my sense like this. I am afraid I did a big mistake here, but so far I met no problem.
I supposed that nnf is the form built up from literal, and, or, all by the standard induction, and in fact, leanTAP accepts them (generously ? ) including Skolem functions.
Is prenex normal form (PNF) is of the form all(x1, all(x2, …, all(xn, F)…)), where F is quantifier free ? If so, a PNF seems almost a set of clauses. Anyway, it is clear that the leanTAP accepts not only PNF but also non PNF. Also I agree in that moving up quantifier is not necessary, but I have no evidence.
Yes, I know the famous rules, but my preprocessor ignore them because of simplicity.
[quote=“j4n_bur53, post:100, topic:4930”]
Not at all. It is all/some/all/some at the root.
Introducing Skolemfunctions or Herbrandfunctions comes later.
[/quote
How about some/all/some/all/some at the root. For me there is no reason to reject this form. My preprocessor accepts closed formulas. some(x, all(y, p(y) → (p(x)->p(y)))).
I believe that prenix normal form is merely where the quantifiers on all variables are explicitly stated… ( Plus all skolems have been deskolemized back )
% there exists one thing that is worshipped by all men"
some(g, all(m, man(m) => worship(m, g)))
% this is skolemized to a constant
verses
% all men worship something
all(m, some(g, man(m) => worship(m, g)))
% this is skolemized to a function taking one universal var
The very safest way is to ensure before converting to NNF that the quantifiers are all present… that why Jens (and everyone else’s, ROK’s, Stickel’s, etc) NNF predicate requires all forms to start from PNF …
I assume this is why @kuniaki.mukai is confirming what PNF is
I am afraid for more confusion, but I would like to believe
it is useful for you and readers. It belongs to “ancient technology.”
For every closed formula F, there exists a closed formula G,
such that
G has no existential quantifier.
F and G are model thoretically equivalent:
a model of F can be extended to that of G.
a model of G is also a model of F.
I am not sure it is related to “prenex normal form” in this thread,
again I am sorry for possible more confusion. I lost the source, but it is folklore.
What the clause below is meant to do is pick up explicitly quantified universal variables and collects them into the FreeV. This is what allows them to be used in the scope of skolemization.
If a variable is not picked up this way, then when skolemization happens further down, it will miss the universal variable.
This is by design to allow more versatility to how we the nnf/6 predicate.
The reliable way to use nnf/6 is that you dont let any implicit quantification to happen… (thus, you use explicit quantification as what PNF demands) If you are doing implicit quantification, you do it at your own peril. PNF doesn’t mean quantifiers are merely moved outward… (It can mean that, but not all always) But what it does mean is that the quantifiers are vetted to be as outward as legally required in order to not change ethe meaning of the sentence. We do this in order to ensure that skolem function that nnf creates contains all the required universals that are needed within the scope of the existential.