From: Claudio Sacerdoti Coen <string>::= '"' [ "\" . | '^ " \' ] * '"' <alpha>::= [ 'A - Z' | 'a - z' |' :_' ] + <number>::= [ '0 - 9' ] + <rvar>::= "@" <id> <svar>::= "%" <id> <vvar>::= "$" <id> <refine>::= [ "sub" | "super" ] ? <set>::= "ref" <val> <boole>::= [ "false" | "true" ] <val>::= "{" [ <string_list> ] ? "}" <Id>::= [ 'A-Z' | 'a-z' ][ 'A-Z' | 'a-z' | '0-9' | \- | _ | \' ]* <Indconuri>::= "cic:/" [<Id> "/" ]*<Id> ".ind#1/" ['0-9']+ "/" ['0-9']+ <Exp_Named_Subst>::= "{" [ [ [<Id> | <Varuri> ] ":=" <Expression> ";" ]* [ [<Id> | <Varuri> ] ":=" <Expression> ] ]? "}" <Alias>::= "alias" <Id> <Uri>
+
+ <Genid>::= [ <Id> | <Varuri> | <Indtyuri> | <Indconuri> ] <Exp_Named_Subst>
+
+ <Expr>::= "\" <Genid> [ ":" | ":=" ] <Expr>"."<Expr>
+
+The interface is composed by five frames, as you can see below.
+In order to compose a low-level query, you must click the "compose a query" button in the main page. Here's what you'll get:
+
+
+ Select one of the following:
+
+
+
\ No newline at end of file
diff --git a/helm/searchEngine/html/constraints_choice_template.html b/helm/searchEngine/html/constraints_choice_template.html
new file mode 100644
index 000000000..c81a8d74d
--- /dev/null
+++ b/helm/searchEngine/html/constraints_choice_template.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/helm/searchEngine/html/editorpdq.html b/helm/searchEngine/html/editorpdq.html
new file mode 100644
index 000000000..21e803906
--- /dev/null
+++ b/helm/searchEngine/html/editorpdq.html
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
diff --git a/helm/searchEngine/html/expnamedsubst.html b/helm/searchEngine/html/expnamedsubst.html
new file mode 100644
index 000000000..3db7acaba
--- /dev/null
+++ b/helm/searchEngine/html/expnamedsubst.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+You must now enter a list of named_subst. A named_subst is an Id or a Varuri followed by ":=" followed by an expression.
+You may enter as many of them as you want (even none), after each one click the button "add" or press enter and it will be added. When you are done, click "done".
+
+
+
+
+
+
+
+
+
+
diff --git a/helm/searchEngine/html/expr.html b/helm/searchEngine/html/expr.html
new file mode 100644
index 000000000..3e302b8b2
--- /dev/null
+++ b/helm/searchEngine/html/expr.html
@@ -0,0 +1,60 @@
+
+
+
+
+
+You are entering an expression. Select one of the following.
+
+
+
\ No newline at end of file
diff --git a/helm/searchEngine/html/genid.html b/helm/searchEngine/html/genid.html
new file mode 100644
index 000000000..1ca94c4cf
--- /dev/null
+++ b/helm/searchEngine/html/genid.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+You are now entering a Genid. It may be a simple Id, or an Uri followed by nothing or by an Exp_Named_Subst.
+
+
+
diff --git a/helm/searchEngine/html/grammar.html b/helm/searchEngine/html/grammar.html
new file mode 100644
index 000000000..a18b27cd7
--- /dev/null
+++ b/helm/searchEngine/html/grammar.html
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+| "pattern" <val>
+
+| <svar>
+
+| <rvar>
+
+| "(" <set> ")"
+
+| "relation" <qualifier> <val> <attr_list>
+
+| "select" <rvar> "in" <set> "where" <boole>
+
+| <set> [ "union" | "intersect" | "diff" ] <set>
+
+| "let" <svar> "be" <set> "in" <set>
+
+| "let" <vvar> "be" <val> "in" <set>
+
+
+
+| "(" <boole> ")"
+
+| [ "not" | "ex" ] <boole>
+
+| <boole> [ "and" | "or" ] <boole>
+
+| <val> [ "sub" | "meet" | "eq" ] <val>
+
+
+
+| <string>
+
+| "refof" <set>
+
+| <rvar> "." <vvar>
+
+| <vvar>
+
+| "(" <val> ")"
+
+| "property" <qualifier> <val>
+
+
\ No newline at end of file
diff --git a/helm/searchEngine/html/grammarpdq.html b/helm/searchEngine/html/grammarpdq.html
new file mode 100644
index 000000000..bd3835bf9
--- /dev/null
+++ b/helm/searchEngine/html/grammarpdq.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+::= "!" <Genid> ":" <Expr>"."<Expr>
+
+::= <Expr>"->"<Expr>
+
+::= "(" <Expr> ")" "->"<Expr>
+
+::= "(" <Expr> [ " " <Expr>]* ")"
+
+::= "Prop" | "Set" | "Type" | "?" | <Uri> | <Id>
+
+
\ No newline at end of file
diff --git a/helm/searchEngine/html/index.html b/helm/searchEngine/html/index.html
new file mode 100644
index 000000000..e7b73b5d2
--- /dev/null
+++ b/helm/searchEngine/html/index.html
@@ -0,0 +1,636 @@
+
+Search Engine Interface Online Manual
+Index
+1. Roles of the frames
+2. How to compose a low-level query
+3. How to compose a pre-defined query
+1. Roles of the frames
+
+
+Each frame has its own role, in particular:
+
+
+
+
+
+
+2. How to compose a low-level query
+
+Being "set" the main production of MathQL, at the beginning frame 1 is empty and frame 2 contains the menu for "set". You should choose one option by clicking on its radio button and then press "compose". The interface will perform a syntax check of what you entered and should something be wrong a message will appear, otherwise the query will be updated. Afterwards, the query will appear in frame 1 and in frame 3, and frame 2 will display the menu of the first production found in the new query string. For example, in the picture below you see the interface after the selection of the 10th production inserting "positions" as the requested identifier. As you can see, frame 2 now displays the "val" menu.
+
+
+Now your options include following the instructions in frame 2, choosing a different production by clicking on a link in frame 1, or manually modifying the query by writing the changes in the textarea in frame 3 and then clicking "apply changes". Obviously "undo" and "redo" buttons will allow you to recover from mistakes; just DON'T use "back","forward" and "refresh" buttons on your browser since they will cause unpredictable errors. Once the query is completed, the "submit the query" button will display the results in frame 2.
+There are actually three pre-defined queries, Locate Object, Search Pattern and Match Conclusion. By clicking on "submit a pre-defined query" in the main page, a small menu with the three options will appear in frame 2.
+Locate Object is very simple, you must enter the name of the object to search in the text box and click "display results".
+Search Pattern, which takes a CIC term and finds theorems which have it as thesis, and Match Conclusion which takes a CIC term and finds theorems which have it as conclusion, have an identical interface, being the only difference in the output.
+First thing to do is to insert a list of aliases (you may skip this step since the search engine will ask you later about ambiguous interpretations of your query if you don't know objects names, for example), then you must compose the CIC term. Composing a CIC term is pretty much the same thing as composing a MathQL query, except that the term is usually so short that there is no need for links, undo buttons and the like. While composing the term, you may modify your list of aliases (i.e. add or remove them) anytime by clicking "edit" in the frame 3. When the query is completed, the "submit" button will display the results in frame 2, and the server will ask you to solve ambiguities, thus adding aliases to your list. Once a result is displayed, you may want to submit a different query but keep your aliases; in this case, just click "new expression" in frame 3. The "edit" button will work even in this phase.
+
+