]> matita.cs.unibo.it Git - helm.git/commitdiff
0.5.9 released
authorClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Tue, 23 Dec 2014 10:30:50 +0000 (10:30 +0000)
committerClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Tue, 23 Dec 2014 10:30:50 +0000 (10:30 +0000)
195 files changed:
helm/www/matita/FILES/matita-0.5.8.orig.tar.gz [new file with mode: 0644]
helm/www/matita/FILES/matita-0.5.9.tar.gz [new file with mode: 0644]
helm/www/matita/FILES/matita-0.99.1.iso [new file with mode: 0644]
helm/www/matita/FILES/matita-0.99.1.tar.gz [new file with mode: 0644]
helm/www/matita/FILES/matita-doc_0.5.9_all.deb [new file with mode: 0644]
helm/www/matita/FILES/matita_0.5.9_amd64.deb [new file with mode: 0644]
helm/www/matita/FILES/matita_0.99.1.orig.tar.gz [new file with mode: 0644]
helm/www/matita/PAPERS/lmcs_types_2010.pdf [new file with mode: 0644]
helm/www/matita/PAPERS/nonunifcoerc.pdf [new file with mode: 0644]
helm/www/matita/PAPERS/plmms09.pdf [new file with mode: 0644]
helm/www/matita/PAPERS/sadhana.pdf [new file with mode: 0644]
helm/www/matita/PAPERS/smart.pdf [new file with mode: 0644]
helm/www/matita/PAPERS/system_description2011.pdf [new file with mode: 0644]
helm/www/matita/PAPERS/tphol09.pdf [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/Makefile [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/TODO [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/WrtCoq.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/authoring.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/axiom_definition_declaration.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/ch05s02.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/cicbrowser.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/command_check.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/command_coercion.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/command_default.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/command_eval.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/command_hint.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/command_include.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/command_include_first.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/command_inline.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/command_prefer_coercion.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/command_qed.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/command_whelp.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/declarative_tactics_quickref.xml [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/docbook.css [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/figures/database.dia [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/figures/database.png [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/figures/matita.png [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/figures/vbox1.png [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/figures/vbox2.png [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/figures/vbox3.png [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/figures/vbox35.png [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/figures/vbox4.png [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/figures/vbox5.png [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/figures/vbox6.png [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/figures/vbox7.png [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/html-stamp [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/index.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/inst_from_src.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/legal.xml [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/matita.conf.xml.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/matita.pdf [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/matita.txt [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/matita.xml [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/pdf-stamp [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/proofs.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/proofstatus.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/quickref-stamp [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/scripts/fix-symbols.sh [new file with mode: 0755]
helm/www/matita/docs/manual-0.5.9/sec_commands.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/sec_commands.xml [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/sec_declarative_tactics.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/sec_declarative_tactics.xml [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/sec_gettingstarted.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/sec_gettingstarted.xml [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/sec_install.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/sec_install.xml [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/sec_intro.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/sec_intro.xml [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/sec_license.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/sec_license.xml [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/sec_tacticals.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/sec_tacticals.xml [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/sec_tactics.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/sec_tactics.xml [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/sec_terms.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/sec_terms.xml [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/sec_usernotation.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/sec_usernotation.xml [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_absurd.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_andelim.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_apply.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_applyS.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_assume.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_assumption.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_auto.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_bydone.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_byinduction.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_bytermweproved.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_case.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_cases.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_change.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_clear.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_clearbody.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_compose.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_constructor.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_contradiction.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_cut.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_decompose.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_demodulate.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_destruct.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_elim.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_elimType.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_exact.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_exists.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_exitselim.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_fail.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_fold.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_fourier.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_fwd.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_generalize.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_id.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_intro.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_intros.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_inversion.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_lapply.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_left.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_letin.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_normalize.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_obtain.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_reflexivity.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_replace.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_rewrite.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_right.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_ring.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_simplify.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_split.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_subst.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_suppose.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_symmetry.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_thesisbecomes.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_transitivity.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_unfold.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_weneedtoprove.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_weproceedbycases.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_weproceedbyinduction.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tac_whd.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tactic_quickref.xml [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tacticals.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tacticargs.html [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/tactics_quickref.xml [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/version.txt [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/version.txt.in [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/xhtml1-transitional.dtd [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/xsl/matita-fo.xsl [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/xsl/matita-xhtml.xsl [new file with mode: 0644]
helm/www/matita/docs/manual-0.5.9/xsl/tactic_quickref.xsl [new file with mode: 0644]
helm/www/matita/docs/tutorial/cover.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/def-fish-rec-1.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/def-fish-rec-2-1.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/def-fish-rec-2.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/def-fish-rec-3.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/def-fish-rec-5-1.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/def-fish-rec-5.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/def-fish-rec-6.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/def-fish-rec-7.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/def-fish-rec-9.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/igft-CIC-universes.svg [new file with mode: 0644]
helm/www/matita/docs/tutorial/igft-minimality-CIC.svg [new file with mode: 0644]
helm/www/matita/docs/tutorial/igft.html [new file with mode: 0644]
helm/www/matita/docs/tutorial/igft.pdf [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-cov-inf-1.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-cov-inf-2.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-cov-inf-3.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-cov-inf-4.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-cov-inf-5.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-cov-inf-6.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-cov-inf-7.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-cov-inf-8.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-cov-inf-9.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-cov-min-2.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-cov-min-3.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-cov-min-4.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-cov-min-5.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-f-compat-1.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-f-compat-2.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-f-compat-3.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-f-compat-4.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-f-compat-5.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-f-compat-6.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/n-f-max-1.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/retr-1.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/retr-2.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/retr-3.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/retr-4.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/retr2.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/sh_gedit.css [new file with mode: 0644]
helm/www/matita/docs/tutorial/sh_grafite.js [new file with mode: 0644]
helm/www/matita/docs/tutorial/sh_main.js [new file with mode: 0644]
helm/www/matita/docs/tutorial/xcover-set-1.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/xcover-set-2.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/xcover-set-3.png [new file with mode: 0644]
helm/www/matita/docs/tutorial/xcover-set-4.png [new file with mode: 0644]
helm/www/matita/download.shtml
helm/www/matita/library.shtml
helm/www/matita/news.shtml

diff --git a/helm/www/matita/FILES/matita-0.5.8.orig.tar.gz b/helm/www/matita/FILES/matita-0.5.8.orig.tar.gz
new file mode 100644 (file)
index 0000000..46cd1e9
Binary files /dev/null and b/helm/www/matita/FILES/matita-0.5.8.orig.tar.gz differ
diff --git a/helm/www/matita/FILES/matita-0.5.9.tar.gz b/helm/www/matita/FILES/matita-0.5.9.tar.gz
new file mode 100644 (file)
index 0000000..4fa25a1
Binary files /dev/null and b/helm/www/matita/FILES/matita-0.5.9.tar.gz differ
diff --git a/helm/www/matita/FILES/matita-0.99.1.iso b/helm/www/matita/FILES/matita-0.99.1.iso
new file mode 100644 (file)
index 0000000..8c615dc
Binary files /dev/null and b/helm/www/matita/FILES/matita-0.99.1.iso differ
diff --git a/helm/www/matita/FILES/matita-0.99.1.tar.gz b/helm/www/matita/FILES/matita-0.99.1.tar.gz
new file mode 100644 (file)
index 0000000..790b694
Binary files /dev/null and b/helm/www/matita/FILES/matita-0.99.1.tar.gz differ
diff --git a/helm/www/matita/FILES/matita-doc_0.5.9_all.deb b/helm/www/matita/FILES/matita-doc_0.5.9_all.deb
new file mode 100644 (file)
index 0000000..8bdf54f
Binary files /dev/null and b/helm/www/matita/FILES/matita-doc_0.5.9_all.deb differ
diff --git a/helm/www/matita/FILES/matita_0.5.9_amd64.deb b/helm/www/matita/FILES/matita_0.5.9_amd64.deb
new file mode 100644 (file)
index 0000000..33ddc8a
Binary files /dev/null and b/helm/www/matita/FILES/matita_0.5.9_amd64.deb differ
diff --git a/helm/www/matita/FILES/matita_0.99.1.orig.tar.gz b/helm/www/matita/FILES/matita_0.99.1.orig.tar.gz
new file mode 100644 (file)
index 0000000..790b694
Binary files /dev/null and b/helm/www/matita/FILES/matita_0.99.1.orig.tar.gz differ
diff --git a/helm/www/matita/PAPERS/lmcs_types_2010.pdf b/helm/www/matita/PAPERS/lmcs_types_2010.pdf
new file mode 100644 (file)
index 0000000..66d63bb
Binary files /dev/null and b/helm/www/matita/PAPERS/lmcs_types_2010.pdf differ
diff --git a/helm/www/matita/PAPERS/nonunifcoerc.pdf b/helm/www/matita/PAPERS/nonunifcoerc.pdf
new file mode 100644 (file)
index 0000000..b93f38e
Binary files /dev/null and b/helm/www/matita/PAPERS/nonunifcoerc.pdf differ
diff --git a/helm/www/matita/PAPERS/plmms09.pdf b/helm/www/matita/PAPERS/plmms09.pdf
new file mode 100644 (file)
index 0000000..a7f5751
Binary files /dev/null and b/helm/www/matita/PAPERS/plmms09.pdf differ
diff --git a/helm/www/matita/PAPERS/sadhana.pdf b/helm/www/matita/PAPERS/sadhana.pdf
new file mode 100644 (file)
index 0000000..c09ff4f
Binary files /dev/null and b/helm/www/matita/PAPERS/sadhana.pdf differ
diff --git a/helm/www/matita/PAPERS/smart.pdf b/helm/www/matita/PAPERS/smart.pdf
new file mode 100644 (file)
index 0000000..d0e35ee
Binary files /dev/null and b/helm/www/matita/PAPERS/smart.pdf differ
diff --git a/helm/www/matita/PAPERS/system_description2011.pdf b/helm/www/matita/PAPERS/system_description2011.pdf
new file mode 100644 (file)
index 0000000..c6bf870
Binary files /dev/null and b/helm/www/matita/PAPERS/system_description2011.pdf differ
diff --git a/helm/www/matita/PAPERS/tphol09.pdf b/helm/www/matita/PAPERS/tphol09.pdf
new file mode 100644 (file)
index 0000000..dc82df4
Binary files /dev/null and b/helm/www/matita/PAPERS/tphol09.pdf differ
diff --git a/helm/www/matita/docs/manual-0.5.9/Makefile b/helm/www/matita/docs/manual-0.5.9/Makefile
new file mode 100644 (file)
index 0000000..817d696
--- /dev/null
@@ -0,0 +1,51 @@
+
+include ../../../Makefile.defs
+
+XSLTPROC=xsltproc
+XHTML_XSL=xsl/matita-xhtml.xsl
+MAIN=matita.xml
+DEPS := $(wildcard *.xml)
+
+DESTDIR = /usr/local/share/doc/matita/
+
+all: quickref-stamp html-stamp pdf-stamp
+
+quickref-stamp: tactics_quickref.xml declarative_tactics_quickref.xml
+       touch $@
+
+tactics_quickref.xml: xsl/tactic_quickref.xsl sec_tactics.xml
+       $(XSLTPROC) --param declarative "''" $< matita.xml > $@
+declarative_tactics_quickref.xml: xsl/tactic_quickref.xsl sec_declarative_tactics.xml
+       $(XSLTPROC) --param declarative "'declarative_'" $< matita.xml > $@
+
+html: quickref-stamp html-stamp
+html-stamp: $(MAIN) $(DEPS) $(XHTML_XSL)
+       $(XSLTPROC) $(XHTML_XSL) $<
+       touch $@
+
+pdf: quickref-stamp pdf-stamp
+pdf-stamp: $(patsubst %.xml,%.pdf,$(MAIN))
+       touch $@
+
+%.pdf: %.xml
+       dblatex -rscripts/fix-symbols.sh -tpdf $< 
+%.dvi: %.xml
+       dblatex -rscripts/fix-symbols.sh -tdvi $<
+%.ps: %.xml
+       dblatex -rscripts/fix-symbols.sh -tps $<
+
+install: install-html install-pdf
+install-pdf: pdf-stamp
+       mkdir -p $(DESTDIR)/pdf
+       cp matita.pdf $(DESTDIR)/pdf
+
+install-html: html-stamp 
+       mkdir -p $(DESTDIR)/html
+       cp *.html *.css $(DESTDIR)/html
+       test -d $(DESTDIR)/html/figures || mkdir $(DESTDIR)/html/figures
+       cp figures/* $(DESTDIR)/html/figures/
+
+clean:
+       rm -f *.html *.pdf *.ps *.dvi *.tex
+       rm -f *-stamp 
+
diff --git a/helm/www/matita/docs/manual-0.5.9/TODO b/helm/www/matita/docs/manual-0.5.9/TODO
new file mode 100644 (file)
index 0000000..73c4146
--- /dev/null
@@ -0,0 +1,12 @@
+
+1) in order to generated chunked html directly
+    XHTML_XSL=http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl
+
+2) to obtain a better pdf, package db2latex-xsl
+
+3) write a separate XSLT that includes the standard one
+
+4) have a look at:
+    svn checkout svn://svn.debian.org/svn/ddp/refcard/trunk
+    http://people.debian.org/~debacle/ (thanks Debacle!)
+
diff --git a/helm/www/matita/docs/manual-0.5.9/WrtCoq.html b/helm/www/matita/docs/manual-0.5.9/WrtCoq.html
new file mode 100644 (file)
index 0000000..1355dca
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Matita vs Coq</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_intro.html" title="Chapter 1. Introduction" /><link rel="prev" href="sec_intro.html" title="Chapter 1. Introduction" /><link rel="next" href="sec_install.html" title="Chapter 2. Installation" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Matita vs Coq</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="sec_intro.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Introduction</th><td width="20%" align="right"> <a accesskey="n" href="sec_install.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="WrtCoq"></a>Matita vs Coq</h2></div></div></div><p>
+      The system shares a common look&amp;feel with the Coq proof assistant
+      and its graphical user interface. The two systems have the same logic,
+      very close proof languages and similar sets of tactics. Moreover,
+      Matita is compatible with the library of Coq.
+      From the user point of view the main lacking features
+      with respect to Coq are:
+    </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>proof extraction;</p></li><li class="listitem"><p>an extensible language of tactics;</p></li><li class="listitem"><p>automatic implicit arguments;</p></li><li class="listitem"><p>several ad-hoc decision procedures;</p></li><li class="listitem"><p>several rarely used variants for most of the tactics;</p></li><li class="listitem"><p>sections and local variables. To maintain compatibility with the library of Coq, theorems defined inside sections are abstracted by name over the section variables; their instances are explicitly applied to actual arguments by means of explicit named substitutions.</p></li></ul></div><p>
+      Still from the user point of view, the main differences with respect
+      to Coq are:
+    </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>the language of tacticals that allows execution of partial tactical application;</p></li><li class="listitem"><p>the unification of the concept of metavariable and existential variable;</p></li><li class="listitem"><p>terms with subterms that cannot be inferred are always allowed as arguments of tactics or other commands;</p></li><li class="listitem"><p>ambiguous terms are disambiguated by direct interaction with the user;</p></li><li class="listitem"><p>theorems and definitions in the library are always accessible without needing to require/include them; right now, only notation needs to be included to become active, but we plan to remove this limitation.</p></li></ul></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="sec_intro.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="sec_install.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 1. Introduction </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 2. Installation</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/authoring.html b/helm/www/matita/docs/manual-0.5.9/authoring.html
new file mode 100644 (file)
index 0000000..88ec2cf
--- /dev/null
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Authoring</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_gettingstarted.html" title="Chapter 3. Getting started" /><link rel="prev" href="cicbrowser.html" title="Browsing and searching" /><link rel="next" href="sec_terms.html" title="Chapter 4. Syntax" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Authoring</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="cicbrowser.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Getting started</th><td width="20%" align="right"> <a accesskey="n" href="sec_terms.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authoring"></a>Authoring</h2></div></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="compilation"></a>How to compile a script</h3></div></div></div><p>
+       Scripts are compiled to base URIs. Base URIs are of the form
+       "cic:/matita/path" and are given once for all for a set
+       of scripts using the "root" file. 
+   </p><p>
+       A "root" file has to be placed in the root of a script set,
+       for example, consider the following files and directories, and
+       assume you keep files in "list" separated from files
+       in "sort" (for example the former directory may contain
+       functions and proofs about lists, while latter sorting algorithms
+       for lists):
+</p><pre class="programlisting">
+  list/
+    list.ma (* depending just on the standard library *)
+    utils/
+      swap.ma (* including list.ma *)
+  sort/
+    qsort.ma (* including utils/swap.ma *)
+</pre><p>
+       To be able to compile properly the contents of "list"
+       a file called root has to be placed in it. The file should be like
+       the following snippet.
+</p><pre class="programlisting">
+  baseuri=cic:/matita/mydatastructures
+</pre><p>
+       This file tells Matita that objects generated by 
+       "list.ma" have to be placed in 
+       "cic:/matita/mydatastructures/list" while 
+       objects generated by 
+       "swap.ma" have to be placed in 
+       "cic:/matita/mydatastructures/utils/swap".
+  </p><p>
+       Once you created the root file, you must generate a depend file.
+       Enter the "list" directory (the root of yuor file set)
+       and type "matitadep". Remember to regenerate the depend file
+       every time you alter the dependencies of your files (for example 
+       including other scripts).
+       You can now compile you files typing "matitac".
+  </p><p>
+         To compile the "sort" directory, create a root file
+         in "sort/" like the following one and then run 
+         "matitadep".
+</p><pre class="programlisting">
+  baseuri=cic:/matita/myalgorithms
+  include_paths=../list
+</pre><p>
+       The include_paths field can declare a list of paths separated by space.
+       Please omit any "/" from the end of base URIs or paths.
+  </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="authoringinterface"></a>The authoring interface</h3></div></div></div><p><span class="emphasis"><em>TODO</em></span></p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="cicbrowser.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_gettingstarted.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="sec_terms.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Browsing and searching </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 4. Syntax</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/axiom_definition_declaration.html b/helm/www/matita/docs/manual-0.5.9/axiom_definition_declaration.html
new file mode 100644 (file)
index 0000000..67b7e6e
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Definitions and declarations</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_terms.html" title="Chapter 4. Syntax" /><link rel="prev" href="sec_terms.html" title="Chapter 4. Syntax" /><link rel="next" href="proofs.html" title="Proofs" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Definitions and declarations</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="sec_terms.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Syntax</th><td width="20%" align="right"> <a accesskey="n" href="proofs.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="axiom_definition_declaration"></a>Definitions and declarations</h2></div></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="axiom"></a><span class="bold"><strong>axiom</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span><span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span></h3></div></div></div><p><strong class="userinput"><code>axiom H: P</code></strong></p><p><span class="command"><strong>H</strong></span> is declared as an axiom that states <span class="command"><strong>P</strong></span></p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="definition"></a><span class="bold"><strong>definition</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>[<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>] [<span class="bold"><strong>≝</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]</h3></div></div></div><p><strong class="userinput"><code>definition f: T ≝ t</code></strong></p><p><span class="command"><strong>f</strong></span> is defined as <span class="command"><strong>t</strong></span>;
+     <span class="command"><strong>T</strong></span> is its type. An error is raised if the type of
+     <span class="command"><strong>t</strong></span> is not convertible to <span class="command"><strong>T</strong></span>.</p><p><span class="command"><strong>T</strong></span> is inferred from <span class="command"><strong>t</strong></span> if
+      omitted.</p><p><span class="command"><strong>t</strong></span> can be omitted only if <span class="command"><strong>T</strong></span> is
+     given. In this case Matita enters in interactive mode and
+     <span class="command"><strong>f</strong></span> must be defined by means of tactics.</p><p>Notice that the command is equivalent to <span class="command"><strong>theorem f: T ≝ t</strong></span>.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="letrec"></a><span class="bold"><strong>letrec</strong></span> <span class="emphasis"><em>TODO</em></span></h3></div></div></div><p><span class="emphasis"><em>TODO</em></span></p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="inductive"></a>[<span class="bold"><strong>inductive</strong></span>|<span class="bold"><strong>coinductive</strong></span>] <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.args2">args2</a></em></span>]… <span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="bold"><strong>≝</strong></span> [<span class="bold"><strong>|</strong></span>] [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span><span class="bold"><strong>:</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>] [<span class="bold"><strong>|</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span><span class="bold"><strong>:</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]…
+[<span class="bold"><strong>with</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> <span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="bold"><strong>≝</strong></span> [<span class="bold"><strong>|</strong></span>] [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span><span class="bold"><strong>:</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>] [<span class="bold"><strong>|</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span><span class="bold"><strong>:</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]…]…
+</h3></div></div></div><p><strong class="userinput"><code>inductive i x y z: S ≝ k1:T1 | … | kn:Tn with i' : S' ≝ k1':T1' | … | km':Tm'</code></strong></p><p>Declares a family of two mutually inductive types
+     <span class="command"><strong>i</strong></span> and <span class="command"><strong>i'</strong></span> whose types are
+     <span class="command"><strong>S</strong></span> and <span class="command"><strong>S'</strong></span>, which must be convertible
+     to sorts.</p><p>The constructors <span class="command"><strong>ki</strong></span> of type <span class="command"><strong>Ti</strong></span>
+     and <span class="command"><strong>ki'</strong></span> of type <span class="command"><strong>Ti'</strong></span> are also
+     simultaneously declared. The declared types <span class="command"><strong>i</strong></span> and
+     <span class="command"><strong>i'</strong></span> may occur in the types of the constructors, but
+     only in strongly positive positions according to the rules of the
+     calculus.</p><p>The whole family is parameterized over the arguments <span class="command"><strong>x,y,z</strong></span>.</p><p>If the keyword <span class="command"><strong>coinductive</strong></span> is used, the declared
+     types are considered mutually coinductive.</p><p>Elimination principles for the record are automatically generated
+     by Matita, if allowed by the typing rules of the calculus according to
+     the sort <span class="command"><strong>S</strong></span>. If generated,
+     they are named <span class="command"><strong>i_ind</strong></span>, <span class="command"><strong>i_rec</strong></span> and
+     <span class="command"><strong>i_rect</strong></span> according to the sort of their induction
+     predicate.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="record"></a><span class="bold"><strong>record</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.args2">args2</a></em></span>]… <span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="bold"><strong>≝</strong></span><span class="bold"><strong>{</strong></span>[<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> [<span class="bold"><strong>:</strong></span>|<span class="bold"><strong>:&gt;</strong></span>] <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>] [<span class="bold"><strong>;</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> [<span class="bold"><strong>:</strong></span>|<span class="bold"><strong>:&gt;</strong></span>] <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]…<span class="bold"><strong>}</strong></span></h3></div></div></div><p><strong class="userinput"><code>record id x y z: S ≝ { f1: T1; …; fn:Tn }</code></strong></p><p>Declares a new record family <span class="command"><strong>id</strong></span> parameterized over
+     <span class="command"><strong>x,y,z</strong></span>.</p><p><span class="command"><strong>S</strong></span> is the type of the record
+     and it must be convertible to a sort.</p><p>Each field <span class="command"><strong>fi</strong></span> is declared by giving its type
+     <span class="command"><strong>Ti</strong></span>. A record without any field is admitted.</p><p>Elimination principles for the record are automatically generated
+     by Matita, if allowed by the typing rules of the calculus according to
+     the sort <span class="command"><strong>S</strong></span>. If generated,
+     they are named <span class="command"><strong>i_ind</strong></span>, <span class="command"><strong>i_rec</strong></span> and
+     <span class="command"><strong>i_rect</strong></span> according to the sort of their induction
+     predicate.</p><p>For each field <span class="command"><strong>fi</strong></span> a record projection
+     <span class="command"><strong>fi</strong></span> is also automatically generated if projection
+     is allowed by the typing rules of the calculus according to the
+     sort <span class="command"><strong>S</strong></span>, the type <span class="command"><strong>T1</strong></span> and
+     the definability of depending record projections.</p><p>If the type of a field is declared with <span class="command"><strong>:&gt;</strong></span>,
+     the corresponding record projection becomes an implicit coercion.
+     This is just syntactic sugar and it has the same effect of declaring the
+     record projection as a coercion later on.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="sec_terms.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_terms.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="proofs.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 4. Syntax </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Proofs</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/ch05s02.html b/helm/www/matita/docs/manual-0.5.9/ch05s02.html
new file mode 100644 (file)
index 0000000..a03cc30
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>interpretation</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_usernotation.html" title="Chapter 5. Extending the syntax" /><link rel="prev" href="sec_usernotation.html" title="Chapter 5. Extending the syntax" /><link rel="next" href="sec_tacticals.html" title="Chapter 6. Tacticals" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">interpretation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="sec_usernotation.html">Prev</a> </td><th width="60%" align="center">Chapter 5. Extending the syntax</th><td width="20%" align="right"> <a accesskey="n" href="sec_tacticals.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="idp70369200"></a>interpretation</h2></div></div></div><p><strong class="userinput"><code>interpretation "description" 'symbol p<sub>1</sub> … p<sub>n</sub> =
+         rhs</code></strong></p><p><a id="interpretation"></a>
+    </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>interpretation</strong></span>
+           <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.qstring">qstring</a></em></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.csymbol">csymbol</a></em></span> [<span class="emphasis"><em><a class="link" href="ch05s02.html#grammar.interpretation_argument">interpretation_argument</a></em></span>]…
+           <span class="bold"><strong>=</strong></span>
+           <span class="emphasis"><em><a class="link" href="ch05s02.html#grammar.interpretation_rhs">interpretation_rhs</a></em></span>
+          </p></dd><dt><span class="term">Action:</span></dt><dd><p>It declares a bi-directional mapping <span class="command"><strong>{…}</strong></span> between the content-level AST <span class="command"><strong>'symbol t<sub>1</sub> … t<sub>n</sub></strong></span> and the semantic term <span class="command"><strong>rhs[{t<sub>1</sub>}/p<sub>1</sub>;…;{t<sub>n</sub>}/p<sub>n</sub>]</strong></span>
+          (the simultaneous substitution in <span class="command"><strong>rhs</strong></span> of the
+          interpretation <span class="command"><strong>{…}</strong></span> of every content-level
+          actual argument <span class="command"><strong>t<sub>i</sub></strong></span> for its
+          corresponding formal parameter
+          <span class="command"><strong>p<sub>i</sub></strong></span>). The
+          <span class="command"><strong>description</strong></span> must be a textual description of the
+          meaning associated to <span class="command"><strong>'symbol</strong></span> by this
+          interpretation, and is used by the user interface of Matita to
+          provide feedback on the interpretation of ambiguous terms.
+         </p></dd><dt><span class="term">Interpretation arguments:</span></dt><dd><div class="table"><a id="idp70392768"></a><p class="title"><strong>Table 5.11. interpretation_argument</strong></p><div class="table-contents"><table summary="interpretation_argument" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.interpretation_argument"></a><span class="emphasis"><em><a class="link" href="ch05s02.html#grammar.interpretation_argument">interpretation_argument</a></em></span></td><td style="">::=</td><td style="">[<span class="bold"><strong>η</strong></span><span class="bold"><strong>.</strong></span>]… <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span></td><td style="">A formal parameter. If the name of the formal parameter is
+         prefixed by n symbols "η", then the mapping performs
+         (multiple) η-expansions to grant that the semantic actual
+         parameter begins with at least n λ-abstractions.</td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp70401072"></a><p class="title"><strong>Table 5.12. interpretation_rhs</strong></p><div class="table-contents"><table summary="interpretation_rhs" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.interpretation_rhs"></a><span class="emphasis"><em><a class="link" href="ch05s02.html#grammar.interpretation_rhs">interpretation_rhs</a></em></span></td><td style="">::=</td><td style=""><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.uri">uri</a></em></span></td><td style="">A constant, specified by its URI</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span></td><td style="">A constant, specified by its name, or a bound variable. If
+               the constant name is ambiguous, the one corresponding to the
+               last implicitly or explicitly specified alias is used.</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>?</strong></span></td><td style="">An implicit parameter</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>(</strong></span>
+               <span class="emphasis"><em><a class="link" href="ch05s02.html#grammar.interpretation_rhs">interpretation_rhs</a></em></span>
+               [<span class="emphasis"><em><a class="link" href="ch05s02.html#grammar.interpretation_rhs">interpretation_rhs</a></em></span>]…
+               <span class="bold"><strong>)</strong></span></td><td style="">An application</td></tr></tbody></table></div></div><br class="table-break" /></dd></dl></div><p>
+   </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="sec_usernotation.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_usernotation.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="sec_tacticals.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 5. Extending the syntax </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 6. Tacticals</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/cicbrowser.html b/helm/www/matita/docs/manual-0.5.9/cicbrowser.html
new file mode 100644 (file)
index 0000000..418e2b8
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Browsing and searching</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_gettingstarted.html" title="Chapter 3. Getting started" /><link rel="prev" href="sec_gettingstarted.html" title="Chapter 3. Getting started" /><link rel="next" href="authoring.html" title="Authoring" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Browsing and searching</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="sec_gettingstarted.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Getting started</th><td width="20%" align="right"> <a accesskey="n" href="authoring.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="cicbrowser"></a>Browsing and searching</h2></div></div></div><p>The CIC browser is used to browse and search the library.
+    You can open a new CIC browser selecting "New Cic Browser"
+    from the "View" menu of Matita, or by pressing "F3".
+    The CIC browser is similar to a traditional Web browser.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="browsinglib"></a>Browsing the library</h3></div></div></div><p>To browse the library, type in the location bar the absolute URI of
+    the theorem, definition or library fragment you are interested in.
+    "cic:/" is the root of the library. Contributions developed
+    in Matita are under "cic:/matita"; all the others are
+    part of the library of Coq.</p><p>Following the hyperlinks it is possible to navigate in the Web
+    of mathematical notions. Proof are rendered in pseudo-natural language
+    and mathematical notation is used for formulae. For now, mathematical
+    notation must be included in the current script to be activated, but we
+    plan to remove this limitation.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="aboutproof"></a>Looking at a proof under development</h3></div></div></div><p>A proof under development is not yet part of the library.
+     The special URI "about:proof" can be used to browse the
+     proof currently under development, if there is one.
+     The "home" button of the CIC browser sets the location bar to
+     "about:proof".
+    </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="whelp"></a>Searching the library</h3></div></div></div><p>The query bar of the CIC browser can be used to search the library
+     of Matita for theorems or definitions that match certain criteria.
+     The criteria is given by typing a term in the query bar and selecting
+     an action in the drop down menu right of it.</p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="locate"></a>Searching by name</h4></div></div></div><p>     <span class="emphasis"><em>TODO</em></span></p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="hint"></a>List of lemmas that can be applied</h4></div></div></div><p>     <span class="emphasis"><em>TODO</em></span></p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="match"></a>Searching by exact match</h4></div></div></div><p>     <span class="emphasis"><em>TODO</em></span></p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="elim"></a>List of elimination principles for a given type</h4></div></div></div><p>     <span class="emphasis"><em>TODO</em></span></p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="instance"></a>Searching by instantiation</h4></div></div></div><p>     <span class="emphasis"><em>TODO</em></span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="sec_gettingstarted.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_gettingstarted.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="authoring.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 3. Getting started </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Authoring</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/command_check.html b/helm/www/matita/docs/manual-0.5.9/command_check.html
new file mode 100644 (file)
index 0000000..f826f9b
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>check</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_commands.html" title="Chapter 9. Other commands" /><link rel="prev" href="sec_commands.html" title="Chapter 9. Other commands" /><link rel="next" href="command_eval.html" title="eval" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">check</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="sec_commands.html">Prev</a> </td><th width="60%" align="center">Chapter 9. Other commands</th><td width="20%" align="right"> <a accesskey="n" href="command_eval.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="command_check"></a>check</h2></div></div></div><p><strong class="userinput"><code>check t</code></strong></p><p>
+     </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>check</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span></p></dd><dt><span class="term">Action:</span></dt><dd><p>Opens a CIC browser window that shows <span class="command"><strong>t</strong></span>
+            together with its type. The command is immediately removed from
+            the script.</p></dd></dl></div><p>
+   </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="sec_commands.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_commands.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="command_eval.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 9. Other commands </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> eval</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/command_coercion.html b/helm/www/matita/docs/manual-0.5.9/command_coercion.html
new file mode 100644 (file)
index 0000000..580317a
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>coercion</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_commands.html" title="Chapter 9. Other commands" /><link rel="prev" href="command_prefer_coercion.html" title="prefer coercion" /><link rel="next" href="command_default.html" title="default" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">coercion</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="command_prefer_coercion.html">Prev</a> </td><th width="60%" align="center">Chapter 9. Other commands</th><td width="20%" align="right"> <a accesskey="n" href="command_default.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="command_coercion"></a>coercion</h2></div></div></div><p><strong class="userinput"><code>coercion u with ariety saturation nocomposites</code></strong></p><p>
+     </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p>
+                        <span class="bold"><strong>coercion</strong></span> 
+                        (<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.uri">uri</a></em></span> | <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="bold"><strong>with</strong></span>)
+                        [ <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span>]] 
+                        [ <span class="bold"><strong>nocomposites</strong></span> ]
+                </p></dd><dt><span class="term">Action:</span></dt><dd><p>Declares <span class="command"><strong>u</strong></span> as an implicit coercion.
+                If the type of <span class="command"><strong>u</strong></span> is      
+                <span class="command"><strong>∀x1:T1. … ∀x(n-1):T(n-1).Tn</strong></span> the coercion target is
+                <span class="command"><strong>T(n - ariety)</strong></span> while its source is 
+                <span class="command"><strong>T(n - ariety - saturation - 1)</strong></span>.
+           Every time a term <span class="command"><strong>x</strong></span>
+            of type source is used with expected type target, Matita
+            automatically replaces <span class="command"><strong>x</strong></span> with
+            <span class="command"><strong>(u ? … ? x ? … ?)</strong></span> to avoid a typing error.</p>
+            Note that the number of <span class="command"><strong>?</strong></span> added after 
+           <span class="command"><strong>x</strong></span> is saturation.
+           <p>Implicit coercions are not displayed to the user:
+            <span class="command"><strong>(u ? … ? x)</strong></span> is rendered simply
+            as <span class="command"><strong>x</strong></span>.</p><p>When a coercion <span class="command"><strong>u</strong></span> is declared
+            from source <span class="command"><strong>s</strong></span> to target <span class="command"><strong>t</strong></span>
+            and there is already a coercion <span class="command"><strong>u'</strong></span> of
+            target <span class="command"><strong>s</strong></span> or source <span class="command"><strong>t</strong></span>,
+            a composite implicit coercion is automatically computed
+           by Matita unless <span class="bold"><strong>nocomposites</strong></span> 
+           is specified.</p></dd></dl></div><p>
+   </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="command_prefer_coercion.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_commands.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="command_default.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">prefer coercion </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> default</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/command_default.html b/helm/www/matita/docs/manual-0.5.9/command_default.html
new file mode 100644 (file)
index 0000000..2bf2811
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>default</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_commands.html" title="Chapter 9. Other commands" /><link rel="prev" href="command_coercion.html" title="coercion" /><link rel="next" href="command_hint.html" title="hint" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">default</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="command_coercion.html">Prev</a> </td><th width="60%" align="center">Chapter 9. Other commands</th><td width="20%" align="right"> <a accesskey="n" href="command_hint.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="command_default"></a>default</h2></div></div></div><p><strong class="userinput"><code>default "s" u<sub>1</sub> … u<sub>n</sub></code></strong></p><p>
+     </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>default</strong></span>
+            <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.qstring">qstring</a></em></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.uri">uri</a></em></span> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.uri">uri</a></em></span>]…
+           </p></dd><dt><span class="term">Action:</span></dt><dd><p>It registers a cluster of related definitions and
+            theorems to be used by tactics and the rendering engine.
+            Some functionalities of Matita are not available when some
+            clusters have not been registered. Overloading a cluster
+            registration is possible: the last registration will be the
+            default one, but the previous ones are still in effect.</p><p>
+            <span class="command"><strong>s</strong></span> is an identifier of the cluster and
+            <span class="command"><strong>u<sub>1</sub> … u<sub>n</sub></strong></span>
+            are the URIs of the definitions and theorems of the cluster.
+            The number <span class="command"><strong>n</strong></span> of required URIs depends on the
+            cluster. The following clusters are supported.
+           </p><div class="table"><a id="idp73808912"></a><p class="title"><strong>Table 9.1. clusters</strong></p><div class="table-contents"><table summary="clusters" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; border-left: 0.5pt solid ; border-right: 0.5pt solid ; "><colgroup><col /><col /><col /><col /><col /><col /></colgroup><thead><tr><th style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; ">name</th><th style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; ">expected object for 1st URI</th><th style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; ">expected object for 2nd URI</th><th style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; ">expected object for 3rd URI</th><th style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; ">expected object for 4th URI</th><th style="border-bottom: 0.5pt solid ; ">expected object for 5th URI</th><th style="border-bottom: 0.5pt solid ; ">expected object for 6th URI</th><th style="border-bottom: 0.5pt solid ; ">expected object for 7th URI</th><th style="border-bottom: 0.5pt solid ; ">expected object for 8th URI</th><th style="border-bottom: 0.5pt solid ; ">expected object for 9th URI</th><th style="border-bottom: 0.5pt solid ; ">expected object for 10th URI</th><th style="border-bottom: 0.5pt solid ; ">expected object for 11th URI</th></tr></thead><tbody><tr><td style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; ">equality</td><td style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; ">an inductive type (say, of type <span class="command"><strong>eq</strong></span>) of type ∀A:Type.A <span class="bold"><strong>→</strong></span> <span class="bold"><strong>Prop</strong></span> with one family parameter and one constructor of type ∀x:A.eq A x</td><td style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; ">a theorem of type <span class="bold"><strong>∀</strong></span>A.<span class="bold"><strong>∀</strong></span>x,y:A.eq A x y <span class="bold"><strong>→</strong></span> eq A y x</td><td style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; ">a theorem of type <span class="bold"><strong>∀</strong></span>A.<span class="bold"><strong>∀</strong></span>x,y,z:A.eq A x y <span class="bold"><strong>→</strong></span> eq A y z <span class="bold"><strong>→</strong></span> eq A x z</td><td style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; "><span class="bold"><strong>∀</strong></span>A.<span class="bold"><strong>∀</strong></span>a.<span class="bold"><strong>∀</strong></span> P:A <span class="bold"><strong>→</strong></span> <span class="bold"><strong>Prop</strong></span>.P x <span class="bold"><strong>→</strong></span> <span class="bold"><strong>∀</strong></span>y.eq A x y <span class="bold"><strong>→</strong></span> P y</td><td style="border-bottom: 0.5pt solid ; "><span class="bold"><strong>∀</strong></span>A.<span class="bold"><strong>∀</strong></span>a.<span class="bold"><strong>∀</strong></span> P:A <span class="bold"><strong>→</strong></span> <span class="bold"><strong>Prop</strong></span>.P x <span class="bold"><strong>→</strong></span> <span class="bold"><strong>∀</strong></span>y.eq A y x <span class="bold"><strong>→</strong></span> P y</td><td style="border-bottom: 0.5pt solid ; "><span class="bold"><strong>∀</strong></span>A.<span class="bold"><strong>∀</strong></span>a.<span class="bold"><strong>∀</strong></span> P:A <span class="bold"><strong>→</strong></span> <span class="bold"><strong>Set</strong></span>.P x <span class="bold"><strong>→</strong></span> <span class="bold"><strong>∀</strong></span>y.eq A x y <span class="bold"><strong>→</strong></span> P y</td><td style="border-bottom: 0.5pt solid ; "><span class="bold"><strong>∀</strong></span>A.<span class="bold"><strong>∀</strong></span>a.<span class="bold"><strong>∀</strong></span> P:A <span class="bold"><strong>→</strong></span> <span class="bold"><strong>Set</strong></span>.P x <span class="bold"><strong>→</strong></span> <span class="bold"><strong>∀</strong></span>y.eq A y x <span class="bold"><strong>→</strong></span> P y</td><td style="border-bottom: 0.5pt solid ; "><span class="bold"><strong>∀</strong></span>A.<span class="bold"><strong>∀</strong></span>a.<span class="bold"><strong>∀</strong></span> P:A <span class="bold"><strong>→</strong></span> <span class="bold"><strong>Type</strong></span>.P x <span class="bold"><strong>→</strong></span> <span class="bold"><strong>∀</strong></span>y.eq A x y <span class="bold"><strong>→</strong></span> P y</td><td style="border-bottom: 0.5pt solid ; "><span class="bold"><strong>∀</strong></span>A.<span class="bold"><strong>∀</strong></span>a.<span class="bold"><strong>∀</strong></span> P:A <span class="bold"><strong>→</strong></span> <span class="bold"><strong>Type</strong></span>.P x <span class="bold"><strong>→</strong></span> <span class="bold"><strong>∀</strong></span>y.eq A y x <span class="bold"><strong>→</strong></span> P y</td><td style="border-bottom: 0.5pt solid ; "><span class="bold"><strong>∀</strong></span>A.<span class="bold"><strong>∀</strong></span>B.<span class="bold"><strong>∀</strong></span> f:A <span class="bold"><strong>→</strong></span> B.<span class="bold"><strong>∀</strong></span>x,y:A.eq A x y <span class="bold"><strong>→</strong></span> eq B (f x) (f y)</td><td style="border-bottom: 0.5pt solid ; "><span class="bold"><strong>∀</strong></span>A.<span class="bold"><strong>∀</strong></span>B.<span class="bold"><strong>∀</strong></span> f:A <span class="bold"><strong>→</strong></span> B.<span class="bold"><strong>∀</strong></span>x,y:A.eq A x y <span class="bold"><strong>→</strong></span> eq B (f y) (f x)</td></tr><tr><td style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; ">true</td><td style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; ">an inductive type of type <span class="bold"><strong>Prop</strong></span> with only one constructor that has no arguments</td><td style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; "> </td><td style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; "> </td><td style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; "> </td><td style="border-bottom: 0.5pt solid ; "> </td></tr><tr><td style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; ">false</td><td style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; ">an inductive type of type <span class="bold"><strong>Prop</strong></span> without constructors</td><td style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; "> </td><td style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; "> </td><td style="border-right: 0.5pt solid ; border-bottom: 0.5pt solid ; "> </td><td style="border-bottom: 0.5pt solid ; "> </td></tr><tr><td style="border-right: 0.5pt solid ; ">absurd</td><td style="border-right: 0.5pt solid ; ">a theorem of type <span class="bold"><strong>∀</strong></span>A:Prop.<span class="bold"><strong>∀</strong></span>B:Prop.A <span class="bold"><strong>→</strong></span> Not A <span class="bold"><strong>→</strong></span> B</td><td style="border-right: 0.5pt solid ; "> </td><td style="border-right: 0.5pt solid ; "> </td><td style="border-right: 0.5pt solid ; "> </td><td style=""> </td></tr></tbody></table></div></div><br class="table-break" /></dd></dl></div><p>
+   </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="command_coercion.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_commands.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="command_hint.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">coercion </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> hint</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/command_eval.html b/helm/www/matita/docs/manual-0.5.9/command_eval.html
new file mode 100644 (file)
index 0000000..94474ad
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>eval</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_commands.html" title="Chapter 9. Other commands" /><link rel="prev" href="command_check.html" title="check" /><link rel="next" href="command_prefer_coercion.html" title="prefer coercion" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">eval</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="command_check.html">Prev</a> </td><th width="60%" align="center">Chapter 9. Other commands</th><td width="20%" align="right"> <a accesskey="n" href="command_prefer_coercion.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="command_eval"></a>eval</h2></div></div></div><p><strong class="userinput"><code>eval red on t</code></strong></p><p>
+     </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>eval</strong></span> 
+            <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.reduction-kind">reduction-kind</a></em></span> 
+             <span class="bold"><strong>on</strong></span>
+             <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span></p></dd><dt><span class="term">Action:</span></dt><dd><p>Opens a CIC browser window that shows 
+             the reduct of 
+             <span class="command"><strong>t</strong></span>
+             together with its type.</p></dd></dl></div><p>
+   </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="command_check.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_commands.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="command_prefer_coercion.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">check </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> prefer coercion</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/command_hint.html b/helm/www/matita/docs/manual-0.5.9/command_hint.html
new file mode 100644 (file)
index 0000000..270e18b
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hint</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_commands.html" title="Chapter 9. Other commands" /><link rel="prev" href="command_default.html" title="default" /><link rel="next" href="command_include.html" title="include" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">hint</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="command_default.html">Prev</a> </td><th width="60%" align="center">Chapter 9. Other commands</th><td width="20%" align="right"> <a accesskey="n" href="command_include.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="command_hint"></a>hint</h2></div></div></div><p><strong class="userinput"><code>hint</code></strong></p><p>
+     </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>hint</strong></span>
+           </p></dd><dt><span class="term">Action:</span></dt><dd><p>Displays a list of theorems that can be successfully
+            applied to the current selected sequent. The command is
+            removed from the script, but the window that displays the
+            theorems allow to add to the script the application of the
+            selected theorem.
+           </p></dd></dl></div><p>
+   </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="command_default.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_commands.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="command_include.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">default </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> include</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/command_include.html b/helm/www/matita/docs/manual-0.5.9/command_include.html
new file mode 100644 (file)
index 0000000..2ae7d39
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>include</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_commands.html" title="Chapter 9. Other commands" /><link rel="prev" href="command_hint.html" title="hint" /><link rel="next" href="command_include_first.html" title="include' &quot;s&quot;" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">include</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="command_hint.html">Prev</a> </td><th width="60%" align="center">Chapter 9. Other commands</th><td width="20%" align="right"> <a accesskey="n" href="command_include_first.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="command_include"></a>include</h2></div></div></div><p><strong class="userinput"><code>include "s"</code></strong></p><p>
+     </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>include</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.qstring">qstring</a></em></span></p></dd><dt><span class="term">Action:</span></dt><dd><p>Every <a class="link" href="command_coercion.html" title="coercion">coercion</a>,
+            <a class="link" href="sec_usernotation.html#notation">notation</a> and
+            <a class="link" href="ch05s02.html#interpretation">interpretation</a> that was active
+            when the file <span class="command"><strong>s</strong></span> was compiled last time
+            is made active. The same happens for declarations of
+            <a class="link" href="command_default.html" title="default">default definitions and
+            theorems</a> and disambiguation
+            hints (<a class="link" href="sec_commands.html#command_alias" title="alias">aliases</a>).
+            On the contrary, theorem and definitions declared in a file can be
+           immediately used without including it.</p><p>The file <span class="command"><strong>s</strong></span> is automatically compiled
+         if it is not compiled yet.
+          </p></dd></dl></div><p>
+   </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="command_hint.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_commands.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="command_include_first.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">hint </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> include' "s"</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/command_include_first.html b/helm/www/matita/docs/manual-0.5.9/command_include_first.html
new file mode 100644 (file)
index 0000000..085c33b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>include' "s"</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_commands.html" title="Chapter 9. Other commands" /><link rel="prev" href="command_include.html" title="include" /><link rel="next" href="command_whelp.html" title="whelp" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">include' "s"</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="command_include.html">Prev</a> </td><th width="60%" align="center">Chapter 9. Other commands</th><td width="20%" align="right"> <a accesskey="n" href="command_whelp.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="command_include_first"></a>include' "s"</h2></div></div></div><p><strong class="userinput"><code></code></strong></p><p>
+     </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>include'</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.qstring">qstring</a></em></span></p></dd><dt><span class="term">Action:</span></dt><dd><p>Not documented (<span class="emphasis"><em>TODO</em></span>), do not use it.</p></dd></dl></div><p>
+   </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="command_include.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_commands.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="command_whelp.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">include </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> whelp</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/command_inline.html b/helm/www/matita/docs/manual-0.5.9/command_inline.html
new file mode 100644 (file)
index 0000000..b657df3
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>inline</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_commands.html" title="Chapter 9. Other commands" /><link rel="prev" href="command_qed.html" title="qed" /><link rel="next" href="sec_license.html" title="Chapter 10. License" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">inline</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="command_qed.html">Prev</a> </td><th width="60%" align="center">Chapter 9. Other commands</th><td width="20%" align="right"> <a accesskey="n" href="sec_license.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="command_inline"></a>inline</h2></div></div></div><p><strong class="userinput"><code>inline "s" params</code></strong></p><p>
+     </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p>
+            <span class="bold"><strong>inline</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.qstring">qstring</a></em></span> <span class="emphasis"><em><a class="link" href="command_inline.html#grammar.inlineparams">inline_params</a></em></span>
+           </p></dd><dt><span class="term">Action:</span></dt><dd><p>Inlines a representation of the item <span class="command"><strong>s</strong></span>,
+which can be the URI of a HELM object. If an entire HELM directory (i.e. a base
+URI) or the path of a *.ma source file is provided, all the contained objects
+are represented in a row.
+If the inlined object has a proof, this proof is represented in several ways
+depending on the provided parameters.</p></dd></dl></div><p>
+   </p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="inline-params"></a>inline-params</h3></div></div></div><div class="table"><a id="idp73947536"></a><p class="title"><strong>Table 9.2. inline-params</strong></p><div class="table-contents"><table summary="inline-params" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.inlineparams"></a><span class="emphasis"><em><a class="link" href="command_inline.html#grammar.inlineparams">inline_params</a></em></span></td><td style="">::=</td><td style="">[<span class="emphasis"><em><a class="link" href="command_inline.html#grammar.inlineparam">inline_param</a></em></span> [<span class="emphasis"><em><a class="link" href="command_inline.html#grammar.inlineparam">inline_param</a></em></span>] … ]</td><td class="auto-generated" style=""> </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp73955728"></a><p class="title"><strong>Table 9.3. inline-param</strong></p><div class="table-contents"><table summary="inline-param" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.inlineparam"></a><span class="emphasis"><em><a class="link" href="command_inline.html#grammar.inlineparam">inline_param</a></em></span></td><td style="">::=</td><td style=""><span class="bold"><strong>axiom</strong></span></td><td style="">Try to give an <a class="link" href="axiom_definition_declaration.html#axiom" title="axiom id: term">axiom</a> flavour
+           (bodies are omitted even if present) 
+       </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>definition</strong></span></td><td style="">Try give a <a class="link" href="axiom_definition_declaration.html#definition" title="definition id[: term] [≝ term]">definition</a> flavour
+       </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>theorem</strong></span></td><td style="">Try give a <a class="link" href="proofs.html#theorem" title="theorem id[: term] [≝ term]">theorem</a> flavour
+       </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>lemma</strong></span></td><td style="">Try give a <a class="link" href="proofs.html#lemma" title="lemma id[: term] [≝ term]">lemma</a> flavour
+       </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>remark</strong></span></td><td style="">Try give a <a class="link" href="proofs.html#remark" title="remark id[: term] [≝ term]">remark</a> flavour
+       </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>fact</strong></span></td><td style="">Try give a <a class="link" href="proofs.html#fact" title="fact id[: term] [≝ term]">fact</a> flavour
+       </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>variant</strong></span></td><td style="">Try give a <a class="link" href="proofs.html#variant" title="variant id: term ≝ term">variant</a> flavour
+              (implies <span class="bold"><strong>plain</strong></span>)
+       </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>declarative</strong></span></td><td style="">Represent proofs using 
+           <a class="link" href="sec_declarative_tactics.html" title="Chapter 8. Declarative Tactics">declarative tactics</a>
+          (this is the dafault and can be omitted)
+       </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>procedural</strong></span></td><td style="">Represent proofs using 
+           <a class="link" href="sec_tactics.html" title="Chapter 7. Tactics">procedural tactics</a>
+               </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>plain</strong></span></td><td style="">Represent proofs using plain 
+          <a class="link" href="sec_terms.html#tbl_terms" title="Table 4.9. Terms">proof terms</a>
+       </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>nodefaults</strong></span></td><td style="">
+        Do not use the tactics depending on the
+        <a class="link" href="command_default.html" title="default">default</a> command
+          (<a class="link" href="tac_rewrite.html" title="rewrite">rewrite</a>
+           in the <span class="bold"><strong>procedural</strong></span> mode)
+       </td></tr><tr valign="top"><td style="" valign="top"> </td><td style="" valign="top">|</td><td style="" valign="top"><span class="bold"><strong>level=<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span></strong></span></td><td style="" valign="top">
+        Set the level of the procedural proof representation
+        (the default is the highest level)
+         <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+          Tactics used at level 1:
+           <a class="link" href="tac_exact.html" title="exact">exact</a></li><li class="listitem">
+          Additional tactics used at level 2:
+           <a class="link" href="tac_letin.html" title="letin">letin</a>,
+           <a class="link" href="tac_cut.html" title="cut">cut</a>,
+           <a class="link" href="tac_change.html" title="change">change</a>,
+           <a class="link" href="tac_intros.html" title="intros">intros</a>,
+           <a class="link" href="tac_apply.html" title="apply">apply</a>,
+           <a class="link" href="tac_elim.html" title="elim">elim</a>,
+           <a class="link" href="tac_cases.html" title="cases">cases</a>,
+           <a class="link" href="tac_rewrite.html" title="rewrite">rewrite</a></li></ul></div>
+       </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>depth=<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span></strong></span></td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="command_qed.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_commands.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="sec_license.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">qed </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 10. License</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/command_prefer_coercion.html b/helm/www/matita/docs/manual-0.5.9/command_prefer_coercion.html
new file mode 100644 (file)
index 0000000..0a099b3
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>prefer coercion</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_commands.html" title="Chapter 9. Other commands" /><link rel="prev" href="command_eval.html" title="eval" /><link rel="next" href="command_coercion.html" title="coercion" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">prefer coercion</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="command_eval.html">Prev</a> </td><th width="60%" align="center">Chapter 9. Other commands</th><td width="20%" align="right"> <a accesskey="n" href="command_coercion.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="command_prefer_coercion"></a>prefer coercion</h2></div></div></div><p><strong class="userinput"><code>prefer coercion u</code></strong></p><p>
+     </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p>
+                        <span class="bold"><strong>prefer coercion</strong></span> 
+       (<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.uri">uri</a></em></span> | <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>)
+                </p></dd><dt><span class="term">Action:</span></dt><dd><p>The already declared coercion <span class="command"><strong>u</strong></span> 
+             is preferred to other coercions with the same source and target.
+           </p></dd></dl></div><p>
+   </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="command_eval.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_commands.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="command_coercion.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">eval </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> coercion</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/command_qed.html b/helm/www/matita/docs/manual-0.5.9/command_qed.html
new file mode 100644 (file)
index 0000000..6ca3152
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>qed</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_commands.html" title="Chapter 9. Other commands" /><link rel="prev" href="command_whelp.html" title="whelp" /><link rel="next" href="command_inline.html" title="inline" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">qed</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="command_whelp.html">Prev</a> </td><th width="60%" align="center">Chapter 9. Other commands</th><td width="20%" align="right"> <a accesskey="n" href="command_inline.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="command_qed"></a>qed</h2></div></div></div><p><strong class="userinput"><code>qed</code></strong></p><p>
+     </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>qed</strong></span>
+           </p></dd><dt><span class="term">Action:</span></dt><dd><p>Saves and indexes the current interactive theorem or
+            definition.
+            In order to do this, the set of sequents still to be proved
+            must be empty.</p></dd></dl></div><p>
+   </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="command_whelp.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_commands.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="command_inline.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">whelp </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> inline</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/command_whelp.html b/helm/www/matita/docs/manual-0.5.9/command_whelp.html
new file mode 100644 (file)
index 0000000..0d7f2bc
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>whelp</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_commands.html" title="Chapter 9. Other commands" /><link rel="prev" href="command_include_first.html" title="include' &quot;s&quot;" /><link rel="next" href="command_qed.html" title="qed" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">whelp</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="command_include_first.html">Prev</a> </td><th width="60%" align="center">Chapter 9. Other commands</th><td width="20%" align="right"> <a accesskey="n" href="command_qed.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="command_whelp"></a>whelp</h2></div></div></div><p><strong class="userinput"><code>whelp locate "s"</code></strong></p><p><strong class="userinput"><code>whelp hint t</code></strong></p><p><strong class="userinput"><code>whelp elim t</code></strong></p><p><strong class="userinput"><code>whelp match t</code></strong></p><p><strong class="userinput"><code>whelp instance t</code></strong></p><p>
+     </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>whelp</strong></span>
+            [<span class="bold"><strong>locate</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.qstring">qstring</a></em></span>
+            | <span class="bold"><strong>hint</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>
+            | <span class="bold"><strong>elim</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>
+            | <span class="bold"><strong>match</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>
+            | <span class="bold"><strong>instance</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>
+            ]
+           </p></dd><dt><span class="term">Action:</span></dt><dd><p>Performs the corresponding <a class="link" href="cicbrowser.html#whelp" title="Searching the library">query</a>,
+            showing the result in the CIC browser. The command is removed
+            from the script.
+           </p></dd></dl></div><p>
+   </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="command_include_first.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_commands.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="command_qed.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">include' "s" </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> qed</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/declarative_tactics_quickref.xml b/helm/www/matita/docs/manual-0.5.9/declarative_tactics_quickref.xml
new file mode 100644 (file)
index 0000000..002a7a3
--- /dev/null
@@ -0,0 +1,75 @@
+<table frame="topbot" rowsep="0" colsep="0" role="grammar">
+  <title>tactics</title>
+  <tgroup cols="3">
+    <tbody>
+      <row>
+        <entry id="grammar.declarative_tactic">&tactic;</entry>
+        <entry>::=</entry>
+        <entry><link linkend="tac_assume"><emphasis role="bold">assume</emphasis></link> <emphasis><link linkend="grammar.id">id</link></emphasis> <emphasis role="bold"> : </emphasis> <emphasis><link linkend="grammar.sterm">sterm</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_by induction hypothesis we know"><emphasis role="bold">by induction hypothesis we know</emphasis></link> <emphasis><link linkend="grammar.term">term</link></emphasis> <emphasis role="bold"> (</emphasis> <emphasis><link linkend="grammar.id">id</link></emphasis> <emphasis role="bold">)</emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_case"><emphasis role="bold">case</emphasis></link> <emphasis><link linkend="grammar.id">id</link></emphasis> [<emphasis role="bold">(</emphasis> <emphasis><link linkend="grammar.id">id</link></emphasis> <emphasis role="bold">:</emphasis> <emphasis><link linkend="grammar.term">term</link></emphasis>  <emphasis role="bold">)</emphasis>] … </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><emphasis><link linkend="grammar.justification">justification</link></emphasis> <link linkend="tac_done"><emphasis role="bold">done</emphasis></link></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><emphasis><link linkend="grammar.justification">justification</link></emphasis> <emphasis role="bold">let</emphasis> <emphasis><link linkend="grammar.id">id</link></emphasis> 
+                   <emphasis role="bold">:</emphasis> <emphasis><link linkend="grammar.term">term</link></emphasis> <emphasis role="bold">such that</emphasis> <emphasis><link linkend="grammar.term">term</link></emphasis> 
+                    <emphasis role="bold">(</emphasis> <emphasis><link linkend="grammar.id">id</link></emphasis> <emphasis role="bold">)</emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry>[<link linkend="tac_obtain"><emphasis role="bold">obtain</emphasis></link> <emphasis><link linkend="grammar.id">id</link></emphasis> | <emphasis role="bold">conclude</emphasis> <emphasis><link linkend="grammar.term">term</link></emphasis>] <emphasis role="bold">=</emphasis> <emphasis><link linkend="grammar.term">term</link></emphasis> [<emphasis><link linkend="grammar.autoparams">auto_params</link></emphasis> | <emphasis role="bold">using</emphasis> <emphasis><link linkend="grammar.term">term</link></emphasis> | <emphasis role="bold">using once</emphasis> <emphasis><link linkend="grammar.term">term</link></emphasis> | <emphasis role="bold">proof</emphasis>] [<emphasis role="bold">done</emphasis>]</entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_suppose"><emphasis role="bold">suppose</emphasis></link> <emphasis><link linkend="grammar.term">term</link></emphasis> <emphasis role="bold"> (</emphasis> <emphasis><link linkend="grammar.id">id</link></emphasis> 
+            <emphasis role="bold">) </emphasis> [ <emphasis role="bold">that is equivalent to</emphasis>  <emphasis><link linkend="grammar.term">term</link></emphasis> ]</entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_the thesis becomes"><emphasis role="bold">the thesis becomes</emphasis></link> <emphasis><link linkend="grammar.term">term</link></emphasis> </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_we need to prove"><emphasis role="bold">we need to prove</emphasis></link> <emphasis><link linkend="grammar.term">term</link></emphasis>
+        [<emphasis role="bold">(</emphasis><emphasis><link linkend="grammar.id">id</link></emphasis>
+        <emphasis role="bold">)</emphasis>]
+        [ <emphasis role="bold">or equivalently</emphasis> <emphasis><link linkend="grammar.term">term</link></emphasis>]</entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_we proceed by cases on"><emphasis role="bold">we proceed by cases on</emphasis></link> <emphasis><link linkend="grammar.term">term</link></emphasis> <emphasis role="bold">to prove</emphasis> <emphasis><link linkend="grammar.term">term</link></emphasis> </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_we proceed by induction on"><emphasis role="bold">we proceed by induction on</emphasis></link> <emphasis><link linkend="grammar.term">term</link></emphasis> <emphasis role="bold"> to prove </emphasis> <emphasis><link linkend="grammar.term">term</link></emphasis> </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><emphasis><link linkend="grammar.justification">justification</link></emphasis> <link linkend="tac_we proved"><emphasis role="bold">we proved</emphasis></link> <emphasis><link linkend="grammar.term">term</link></emphasis> 
+         <emphasis role="bold">(</emphasis> <emphasis><link linkend="grammar.id">id</link></emphasis> 
+         <emphasis role="bold">)</emphasis></entry>
+      </row>
+    </tbody>
+  </tgroup>
+</table>
diff --git a/helm/www/matita/docs/manual-0.5.9/docbook.css b/helm/www/matita/docs/manual-0.5.9/docbook.css
new file mode 100644 (file)
index 0000000..a6ea52f
--- /dev/null
@@ -0,0 +1,56 @@
+
+body {
+  background: url(../../images/sheetbg.png);
+}
+
+ul.authorgroup {
+  list-style-type: none;
+  padding-left: 1em;
+}
+
+div.titlepage {
+  background: #eaeaea;
+}
+
+div.titlepage hr {
+  display: none;
+}
+
+div.navheader hr {
+  display: none;
+}
+
+div.navfooter hr {
+  display: none;
+}
+
+div.navheader {
+  padding-left: 150px;
+  background: #eaeaea;
+}
+
+div.navfooter {
+  background: #eaeaea;
+}
+
+div.matita_logo {
+  position: absolute;
+  top: 3px;
+  left: 5px;
+}
+
+div.matita_logo img {
+  border-style: none;
+}
+
+div.matita_logo span {
+  position: absolute;
+  top: 13px;
+  left: 65px;
+  text-decoration: underline;
+}
+
+div.figure {
+  text-align: center;
+}
+
diff --git a/helm/www/matita/docs/manual-0.5.9/figures/database.dia b/helm/www/matita/docs/manual-0.5.9/figures/database.dia
new file mode 100644 (file)
index 0000000..652ea01
Binary files /dev/null and b/helm/www/matita/docs/manual-0.5.9/figures/database.dia differ
diff --git a/helm/www/matita/docs/manual-0.5.9/figures/database.png b/helm/www/matita/docs/manual-0.5.9/figures/database.png
new file mode 100644 (file)
index 0000000..7e9b1ca
Binary files /dev/null and b/helm/www/matita/docs/manual-0.5.9/figures/database.png differ
diff --git a/helm/www/matita/docs/manual-0.5.9/figures/matita.png b/helm/www/matita/docs/manual-0.5.9/figures/matita.png
new file mode 100644 (file)
index 0000000..5a68071
Binary files /dev/null and b/helm/www/matita/docs/manual-0.5.9/figures/matita.png differ
diff --git a/helm/www/matita/docs/manual-0.5.9/figures/vbox1.png b/helm/www/matita/docs/manual-0.5.9/figures/vbox1.png
new file mode 100644 (file)
index 0000000..f7c85fe
Binary files /dev/null and b/helm/www/matita/docs/manual-0.5.9/figures/vbox1.png differ
diff --git a/helm/www/matita/docs/manual-0.5.9/figures/vbox2.png b/helm/www/matita/docs/manual-0.5.9/figures/vbox2.png
new file mode 100644 (file)
index 0000000..8d2182f
Binary files /dev/null and b/helm/www/matita/docs/manual-0.5.9/figures/vbox2.png differ
diff --git a/helm/www/matita/docs/manual-0.5.9/figures/vbox3.png b/helm/www/matita/docs/manual-0.5.9/figures/vbox3.png
new file mode 100644 (file)
index 0000000..48f6309
Binary files /dev/null and b/helm/www/matita/docs/manual-0.5.9/figures/vbox3.png differ
diff --git a/helm/www/matita/docs/manual-0.5.9/figures/vbox35.png b/helm/www/matita/docs/manual-0.5.9/figures/vbox35.png
new file mode 100644 (file)
index 0000000..313bd1c
Binary files /dev/null and b/helm/www/matita/docs/manual-0.5.9/figures/vbox35.png differ
diff --git a/helm/www/matita/docs/manual-0.5.9/figures/vbox4.png b/helm/www/matita/docs/manual-0.5.9/figures/vbox4.png
new file mode 100644 (file)
index 0000000..432f3ff
Binary files /dev/null and b/helm/www/matita/docs/manual-0.5.9/figures/vbox4.png differ
diff --git a/helm/www/matita/docs/manual-0.5.9/figures/vbox5.png b/helm/www/matita/docs/manual-0.5.9/figures/vbox5.png
new file mode 100644 (file)
index 0000000..465e545
Binary files /dev/null and b/helm/www/matita/docs/manual-0.5.9/figures/vbox5.png differ
diff --git a/helm/www/matita/docs/manual-0.5.9/figures/vbox6.png b/helm/www/matita/docs/manual-0.5.9/figures/vbox6.png
new file mode 100644 (file)
index 0000000..bc353de
Binary files /dev/null and b/helm/www/matita/docs/manual-0.5.9/figures/vbox6.png differ
diff --git a/helm/www/matita/docs/manual-0.5.9/figures/vbox7.png b/helm/www/matita/docs/manual-0.5.9/figures/vbox7.png
new file mode 100644 (file)
index 0000000..7d17a85
Binary files /dev/null and b/helm/www/matita/docs/manual-0.5.9/figures/vbox7.png differ
diff --git a/helm/www/matita/docs/manual-0.5.9/html-stamp b/helm/www/matita/docs/manual-0.5.9/html-stamp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/helm/www/matita/docs/manual-0.5.9/index.html b/helm/www/matita/docs/manual-0.5.9/index.html
new file mode 100644 (file)
index 0000000..0578255
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Matita V0.5.9 User Manual (rev. 0.5.9 )</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="next" href="sec_intro.html" title="Chapter 1. Introduction" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="application">Matita</span> V0.5.9
+ User Manual (rev. 0.5.9
+)</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="sec_intro.html">Next</a></td></tr></table><hr /></div><div xml:lang="en" class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="matita_manual"></a><span class="application">Matita</span> V0.5.9
+ User Manual (rev. 0.5.9
+)</h1></div><div><ul xmlns="" class="authorgroup"><li class="author">Andrea Asperti &lt;<a href="mailto:asperti@cs.unibo.it">asperti@cs.unibo.it</a>&gt;</li><li class="author">Claudio Sacerdoti Coen &lt;<a href="mailto:sacerdot@cs.unibo.it">sacerdot@cs.unibo.it</a>&gt;</li><li class="author">Ferruccio Guidi &lt;<a href="mailto:fguidi@cs.unibo.it">fguidi@cs.unibo.it</a>&gt;</li><li class="author">Enrico Tassi &lt;<a href="mailto:tassi@cs.unibo.it">tassi@cs.unibo.it</a>&gt;</li><li class="author">Stefano Zacchiroli &lt;<a href="mailto:zacchiro@cs.unibo.it">zacchiro@cs.unibo.it</a>&gt;</li></ul></div><div><p class="copyright">Copyright © 2006 The HELM team.</p></div><div><div class="legalnotice"><a id="idp64061872"></a><p> Both Matita and this document are free software, you can
+       redistribute them and/or modify them under the terms of the GNU General
+       Public License as published by the Free Software Foundation.  See <a class="xref" href="sec_license.html" title="Chapter 10. License">Chapter 10, <em>License</em></a> for more information. </p></div></div><div><div xmlns="" class="revhistory"><span class="revision">Revision: <span class="revnumber">0.5.9
+</span>, <span class="date">12/07/2006</span></span></div></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="chapter"><a href="sec_intro.html">1. Introduction</a></span></dt><dd><dl><dt><span class="sect1"><a href="sec_intro.html#Features">Features</a></span></dt><dt><span class="sect1"><a href="WrtCoq.html">Matita vs Coq</a></span></dt></dl></dd><dt><span class="chapter"><a href="sec_install.html">2. Installation</a></span></dt><dd><dl><dt><span class="sect1"><a href="sec_install.html#inst_livecd">Using the LiveCD</a></span></dt><dd><dl><dt><span class="sect2"><a href="sec_install.html#make_vmachine">Creating the virtual machine</a></span></dt><dt><span class="sect2"><a href="sec_install.html#idp68645040">Sharing files with the real PC</a></span></dt></dl></dd><dt><span class="sect1"><a href="inst_from_src.html">Installing from sources</a></span></dt><dd><dl><dt><span class="sect2"><a href="inst_from_src.html#get_source_code">Getting the source code</a></span></dt><dt><span class="sect2"><a href="inst_from_src.html#build_requirements">Requirements</a></span></dt><dt><span class="sect2"><a href="inst_from_src.html#database_setup">(optional)  MySQL  setup</a></span></dt><dt><span class="sect2"><a href="inst_from_src.html#build_instructions">Compiling and installing</a></span></dt></dl></dd><dt><span class="sect1"><a href="matita.conf.xml.html">Configuring Matita</a></span></dt></dl></dd><dt><span class="chapter"><a href="sec_gettingstarted.html">3. Getting started</a></span></dt><dd><dl><dt><span class="sect1"><a href="sec_gettingstarted.html#unicode">How to type Unicode symbols</a></span></dt><dt><span class="sect1"><a href="cicbrowser.html">Browsing and searching</a></span></dt><dd><dl><dt><span class="sect2"><a href="cicbrowser.html#browsinglib">Browsing the library</a></span></dt><dt><span class="sect2"><a href="cicbrowser.html#aboutproof">Looking at a proof under development</a></span></dt><dt><span class="sect2"><a href="cicbrowser.html#whelp">Searching the library</a></span></dt></dl></dd><dt><span class="sect1"><a href="authoring.html">Authoring</a></span></dt><dd><dl><dt><span class="sect2"><a href="authoring.html#compilation">How to compile a script</a></span></dt><dt><span class="sect2"><a href="authoring.html#authoringinterface">The authoring interface</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="sec_terms.html">4. Syntax</a></span></dt><dd><dl><dt><span class="sect1"><a href="sec_terms.html#terms_and_co">Terms &amp; co.</a></span></dt><dd><dl><dt><span class="sect2"><a href="sec_terms.html#lexical">Lexical conventions</a></span></dt><dt><span class="sect2"><a href="sec_terms.html#terms">Terms</a></span></dt></dl></dd><dt><span class="sect1"><a href="axiom_definition_declaration.html">Definitions and declarations</a></span></dt><dd><dl><dt><span class="sect2"><a href="axiom_definition_declaration.html#axiom">axiom</a></span></dt><dt><span class="sect2"><a href="axiom_definition_declaration.html#definition">definition</a></span></dt><dt><span class="sect2"><a href="axiom_definition_declaration.html#letrec"><span class="emphasis"><em>TODO</em></span></a></span></dt><dt><span class="sect2"><a href="axiom_definition_declaration.html#inductive">(co)inductive types declaration</a></span></dt><dt><span class="sect2"><a href="axiom_definition_declaration.html#record">record</a></span></dt></dl></dd><dt><span class="sect1"><a href="proofs.html">Proofs</a></span></dt><dd><dl><dt><span class="sect2"><a href="proofs.html#theorem">theorem</a></span></dt><dt><span class="sect2"><a href="proofs.html#variant">variant</a></span></dt><dt><span class="sect2"><a href="proofs.html#lemma">lemma</a></span></dt><dt><span class="sect2"><a href="proofs.html#fact">fact</a></span></dt><dt><span class="sect2"><a href="proofs.html#remark">remark</a></span></dt></dl></dd><dt><span class="sect1"><a href="tacticargs.html">Tactic arguments</a></span></dt><dd><dl><dt><span class="sect2"><a href="tacticargs.html#introsspec">intros-spec</a></span></dt><dt><span class="sect2"><a href="tacticargs.html#pattern">pattern</a></span></dt><dt><span class="sect2"><a href="tacticargs.html#reduction-kind">reduction-kind</a></span></dt><dt><span class="sect2"><a href="tacticargs.html#auto-params">auto-params</a></span></dt><dt><span class="sect2"><a href="tacticargs.html#justification">justification</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="sec_usernotation.html">5. Extending the syntax</a></span></dt><dd><dl><dt><span class="sect1"><a href="sec_usernotation.html#idp70046384">notation</a></span></dt><dt><span class="sect1"><a href="ch05s02.html">interpretation</a></span></dt></dl></dd><dt><span class="chapter"><a href="sec_tacticals.html">6. Tacticals</a></span></dt><dd><dl><dt><span class="sect1"><a href="sec_tacticals.html#idp70716848">Interactive proofs and definitions</a></span></dt><dt><span class="sect1"><a href="proofstatus.html">The proof status</a></span></dt><dt><span class="sect1"><a href="tacticals.html">Tacticals</a></span></dt></dl></dd><dt><span class="chapter"><a href="sec_tactics.html">7. Tactics</a></span></dt><dd><dl><dt><span class="sect1"><a href="sec_tactics.html#tactics_quickref">Quick reference card</a></span></dt><dt><span class="sect1"><a href="tac_absurd.html">absurd</a></span></dt><dt><span class="sect1"><a href="tac_apply.html">apply</a></span></dt><dt><span class="sect1"><a href="tac_applyS.html">applyS</a></span></dt><dt><span class="sect1"><a href="tac_assumption.html">assumption</a></span></dt><dt><span class="sect1"><a href="tac_auto.html">auto</a></span></dt><dt><span class="sect1"><a href="tac_cases.html">cases</a></span></dt><dt><span class="sect1"><a href="tac_clear.html">clear</a></span></dt><dt><span class="sect1"><a href="tac_clearbody.html">clearbody</a></span></dt><dt><span class="sect1"><a href="tac_compose.html">compose</a></span></dt><dt><span class="sect1"><a href="tac_change.html">change</a></span></dt><dt><span class="sect1"><a href="tac_constructor.html">constructor</a></span></dt><dt><span class="sect1"><a href="tac_contradiction.html">contradiction</a></span></dt><dt><span class="sect1"><a href="tac_cut.html">cut</a></span></dt><dt><span class="sect1"><a href="tac_decompose.html">decompose</a></span></dt><dt><span class="sect1"><a href="tac_demodulate.html">demodulate</a></span></dt><dt><span class="sect1"><a href="tac_destruct.html">destruct</a></span></dt><dt><span class="sect1"><a href="tac_elim.html">elim</a></span></dt><dt><span class="sect1"><a href="tac_elimType.html">elimType</a></span></dt><dt><span class="sect1"><a href="tac_exact.html">exact</a></span></dt><dt><span class="sect1"><a href="tac_exists.html">exists</a></span></dt><dt><span class="sect1"><a href="tac_fail.html">fail</a></span></dt><dt><span class="sect1"><a href="tac_fold.html">fold</a></span></dt><dt><span class="sect1"><a href="tac_fourier.html">fourier</a></span></dt><dt><span class="sect1"><a href="tac_fwd.html">fwd</a></span></dt><dt><span class="sect1"><a href="tac_generalize.html">generalize</a></span></dt><dt><span class="sect1"><a href="tac_id.html">id</a></span></dt><dt><span class="sect1"><a href="tac_intro.html">intro</a></span></dt><dt><span class="sect1"><a href="tac_intros.html">intros</a></span></dt><dt><span class="sect1"><a href="tac_inversion.html">inversion</a></span></dt><dt><span class="sect1"><a href="tac_lapply.html">lapply</a></span></dt><dt><span class="sect1"><a href="tac_left.html">left</a></span></dt><dt><span class="sect1"><a href="tac_letin.html">letin</a></span></dt><dt><span class="sect1"><a href="tac_normalize.html">normalize</a></span></dt><dt><span class="sect1"><a href="tac_reflexivity.html">reflexivity</a></span></dt><dt><span class="sect1"><a href="tac_replace.html">change</a></span></dt><dt><span class="sect1"><a href="tac_rewrite.html">rewrite</a></span></dt><dt><span class="sect1"><a href="tac_right.html">right</a></span></dt><dt><span class="sect1"><a href="tac_ring.html">ring</a></span></dt><dt><span class="sect1"><a href="tac_simplify.html">simplify</a></span></dt><dt><span class="sect1"><a href="tac_split.html">split</a></span></dt><dt><span class="sect1"><a href="tac_subst.html">subst</a></span></dt><dt><span class="sect1"><a href="tac_symmetry.html">symmetry</a></span></dt><dt><span class="sect1"><a href="tac_transitivity.html">transitivity</a></span></dt><dt><span class="sect1"><a href="tac_unfold.html">unfold</a></span></dt><dt><span class="sect1"><a href="tac_whd.html">whd</a></span></dt></dl></dd><dt><span class="chapter"><a href="sec_declarative_tactics.html">8. Declarative Tactics</a></span></dt><dd><dl><dt><span class="sect1"><a href="sec_declarative_tactics.html#declarative_tactics_quickref">Quick reference card</a></span></dt><dt><span class="sect1"><a href="tac_assume.html">assume</a></span></dt><dt><span class="sect1"><a href="tac_byinduction.html">by induction hypothesis we know</a></span></dt><dt><span class="sect1"><a href="tac_case.html">case</a></span></dt><dt><span class="sect1"><a href="tac_bydone.html">done</a></span></dt><dt><span class="sect1"><a href="tac_exitselim.html">let such that</a></span></dt><dt><span class="sect1"><a href="tac_obtain.html">obtain</a></span></dt><dt><span class="sect1"><a href="tac_suppose.html">suppose</a></span></dt><dt><span class="sect1"><a href="tac_thesisbecomes.html">the thesis becomes</a></span></dt><dt><span class="sect1"><a href="tac_weneedtoprove.html">we need to prove</a></span></dt><dt><span class="sect1"><a href="tac_andelim.html">we have</a></span></dt><dt><span class="sect1"><a href="tac_weproceedbycases.html">we proceed by cases on</a></span></dt><dt><span class="sect1"><a href="tac_weproceedbyinduction.html">we proceed by induction on</a></span></dt><dt><span class="sect1"><a href="tac_bytermweproved.html">we proved</a></span></dt></dl></dd><dt><span class="chapter"><a href="sec_commands.html">9. Other commands</a></span></dt><dd><dl><dt><span class="sect1"><a href="sec_commands.html#command_alias">alias</a></span></dt><dt><span class="sect1"><a href="command_check.html">check</a></span></dt><dt><span class="sect1"><a href="command_eval.html">eval</a></span></dt><dt><span class="sect1"><a href="command_prefer_coercion.html">prefer coercion</a></span></dt><dt><span class="sect1"><a href="command_coercion.html">coercion</a></span></dt><dt><span class="sect1"><a href="command_default.html">default</a></span></dt><dt><span class="sect1"><a href="command_hint.html">hint</a></span></dt><dt><span class="sect1"><a href="command_include.html">include</a></span></dt><dt><span class="sect1"><a href="command_include_first.html">include' "s"</a></span></dt><dt><span class="sect1"><a href="command_whelp.html">whelp</a></span></dt><dt><span class="sect1"><a href="command_qed.html">qed</a></span></dt><dt><span class="sect1"><a href="command_inline.html">inline</a></span></dt><dd><dl><dt><span class="sect2"><a href="command_inline.html#inline-params">inline-params</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="sec_license.html">10. License</a></span></dt></dl></div><div class="list-of-figures"><p><strong>List of Figures</strong></p><dl><dt>2.1. <a href="sec_install.html#idp68630080">The brand new virtual machine</a></dt><dt>2.2. <a href="sec_install.html#idp68633472">Mounting an ISO image</a></dt><dt>2.3. <a href="sec_install.html#idp68637552">Choosing the ISO image</a></dt><dt>2.4. <a href="sec_install.html#idp68641216">Choosing the ISO image</a></dt><dt>2.5. <a href="sec_install.html#idp68647616">Set up a shared folder</a></dt><dt>2.6. <a href="sec_install.html#idp68651136">Choosing the folder to share</a></dt><dt>2.7. <a href="sec_install.html#idp68654928">Naming the shared folder</a></dt><dt>2.8. <a href="sec_install.html#idp68658672">Using it from the virtual machine</a></dt><dt>2.9. <a href="matita.conf.xml.html#idp68778624">Configuring the Databases</a></dt></dl></div><div class="list-of-tables"><p><strong>List of Tables</strong></p><dl><dt>4.1. <a href="sec_terms.html#idp69058128">qstring</a></dt><dt>4.2. <a href="sec_terms.html#idp69064992">id</a></dt><dt>4.3. <a href="sec_terms.html#idp69071584">nat</a></dt><dt>4.4. <a href="sec_terms.html#idp69079568">char</a></dt><dt>4.5. <a href="sec_terms.html#idp69086976">uri-step</a></dt><dt>4.6. <a href="sec_terms.html#idp69095648">uri</a></dt><dt>4.7. <a href="sec_terms.html#idp69112080">csymbol</a></dt><dt>4.8. <a href="sec_terms.html#idp69118752">symbol</a></dt><dt>4.9. <a href="sec_terms.html#tbl_terms">Terms</a></dt><dt>4.10. <a href="sec_terms.html#idp69190544">Simple terms</a></dt><dt>4.11. <a href="sec_terms.html#idp69241744">Arguments</a></dt><dt>4.12. <a href="sec_terms.html#idp69274944">Pattern matching</a></dt><dt>4.13. <a href="tacticargs.html#idp69423248">intros-spec</a></dt><dt>4.14. <a href="tacticargs.html#idp69433952">pattern</a></dt><dt>4.15. <a href="tacticargs.html#idp69453472">path</a></dt><dt>4.16. <a href="tacticargs.html#idp69506592">reduction-kind</a></dt><dt>4.17. <a href="tacticargs.html#idp69522400">auto-params</a></dt><dt>4.18. <a href="tacticargs.html#idp69531952">simple-auto-param</a></dt><dt>4.19. <a href="tacticargs.html#idp69555152">justification</a></dt><dt>5.1. <a href="sec_usernotation.html#idp70117712">usage</a></dt><dt>5.2. <a href="sec_usernotation.html#idp70126480">associativity</a></dt><dt>5.3. <a href="sec_usernotation.html#idp70139344">notation_rhs</a></dt><dt>5.4. <a href="sec_usernotation.html#idp70148064">unparsed_ast</a></dt><dt>5.5. <a href="sec_usernotation.html#idp70166064">enriched_term</a></dt><dt>5.6. <a href="sec_usernotation.html#idp70173616">unparsed_meta</a></dt><dt>5.7. <a href="sec_usernotation.html#idp70190032">level2_meta</a></dt><dt>5.8. <a href="sec_usernotation.html#idp70234960">notation_lhs</a></dt><dt>5.9. <a href="sec_usernotation.html#idp70242480">layout</a></dt><dt>5.10. <a href="sec_usernotation.html#idp70356272">literal</a></dt><dt>5.11. <a href="ch05s02.html#idp70392768">interpretation_argument</a></dt><dt>5.12. <a href="ch05s02.html#idp70401072">interpretation_rhs</a></dt><dt>6.1. <a href="tacticals.html#idp70790512">proof script</a></dt><dt>6.2. <a href="tacticals.html#idp70799712">proof steps</a></dt><dt>6.3. <a href="tacticals.html#idp70846288">tactics and LCF tacticals</a></dt><dt>7.1. <a href="sec_tactics.html#idp71070096">tactics</a></dt><dt>8.1. <a href="sec_declarative_tactics.html#idp73048816">tactics</a></dt><dt>9.1. <a href="command_default.html#idp73808912">clusters</a></dt><dt>9.2. <a href="command_inline.html#idp73947536">inline-params</a></dt><dt>9.3. <a href="command_inline.html#idp73955728">inline-param</a></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="sec_intro.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Chapter 1. Introduction</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/inst_from_src.html b/helm/www/matita/docs/manual-0.5.9/inst_from_src.html
new file mode 100644 (file)
index 0000000..7e0f5bd
--- /dev/null
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Installing from sources</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_install.html" title="Chapter 2. Installation" /><link rel="prev" href="sec_install.html" title="Chapter 2. Installation" /><link rel="next" href="matita.conf.xml.html" title="Configuring Matita" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Installing from sources</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="sec_install.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Installation</th><td width="20%" align="right"> <a accesskey="n" href="matita.conf.xml.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="inst_from_src"></a>Installing from sources</h2></div></div></div><p>Install Matita from the sources is hard, you have been warned!
+    </p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="get_source_code"></a>Getting the source code</h3></div></div></div><p>You can get the Matita source code in two ways:
+       </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p> go to the <a class="ulink" href="http://matita.cs.unibo.it/download.shtml" target="_top">download
+               page</a> and get the <a class="ulink" href="http://matita.cs.unibo.it/sources/matita-latest.tar.gz" target="_top">latest released source tarball</a>;</p></li><li class="listitem"><p> get the development sources from <a class="ulink" href="http://helm.cs.unibo.it/websvn/listing.php?repname=helm&amp;path=%2F&amp;sc=0" target="_top">our
+               SVN repository</a>. You will need the
+             <span class="application">components/</span> and
+             <span class="application">matita/</span> directories from the
+             <code class="filename">trunk/helm/software/</code> directory, plus the
+             <code class="filename">configure</code> and <code class="filename">Makefile*</code>
+             stuff from the same directory.  </p><p>In this case you will need to run
+               <span class="command"><strong>autoconf</strong></span> before proceding with the building
+               instructions below.</p></li></ol></div><p>
+      </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="build_requirements"></a>Requirements</h3></div></div></div><p>In order to build Matita from sources you will need some
+       tools and libraries. They are listed below.
+
+       </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note for Debian (and derivatives) users</h3><p>If you are running a 
+                 <a class="ulink" href="http://www.debian.org" target="_top">Debian GNU/Linux</a>
+                 distribution,
+                 or any of its derivative like <a class="ulink" href="http://ubuntu.com" target="_top">Ubuntu</a>, 
+                 you can use APT to install all the required tools and
+                 libraries since they are all part of the Debian archive. 
+         </p><p>         
+                 apt-get install ocaml ocaml-findlib libgdome2-ocaml-dev liblablgtk2-ocaml-dev liblablgtkmathview-ocaml-dev liblablgtksourceview-ocaml-dev libsqlite3-ocaml-dev libocamlnet-ocaml-dev libzip-ocaml-dev libhttp-ocaml-dev ocaml-ulex08 libexpat-ocaml-dev libmysql-ocaml-dev camlp5
+         </p><p>         
+                 An official debian package is going to be added to the
+                 archive too.
+         </p></div><p>
+
+       </p><div class="variablelist"><p class="title"><strong>Required tools and libraries</strong></p><dl class="variablelist"><dt><span class="term">
+             <span class="application"> <a class="ulink" href="http://caml.inria.fr" target="_top">OCaml</a> </span>
+           </span></dt><dd><p> the Objective Caml compiler, version 3.09 or above </p></dd><dt><span class="term">
+             <span class="application"> <a class="ulink" href="http://www.ocaml-programming.de/packages/" target="_top">Findlib</a>
+             </span>
+           </span></dt><dd><p> OCaml package manager, version 1.1.1 or above</p></dd><dt><span class="term">
+             <span class="application"> <a class="ulink" href="http://www.xs4all.nl/~mmzeeman/ocaml/" target="_top">OCaml
+                 Expat</a> </span>
+           </span></dt><dd><p>OCaml bindings for the <span class="application"><a class="ulink" href="http://expat.sourceforge.net/" target="_top">expat</a>
+                 library</span> </p></dd><dt><span class="term">
+             <span class="application"> <a class="ulink" href="http://gmetadom.sourceforge.net/" target="_top">GMetaDOM</a>
+             </span>
+           </span></dt><dd><p>OCaml bindings for the <span class="application"><a class="ulink" href="http://gdome2.cs.unibo.it/" target="_top">Gdome 2</a>
+                 library</span></p></dd><dt><span class="term">
+             <span class="application"> <a class="ulink" href="http://www.bononia.it/~zack/ocaml-http.en.html" target="_top">OCaml
+                 HTTP</a> </span>
+           </span></dt><dd><p> OCaml library to write HTTP daemons (and clients) </p></dd><dt><span class="term">
+             <span class="application"> <a class="ulink" href="http://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/lablgtk.html" target="_top">LablGTK</a>
+             </span>
+           </span></dt><dd><p> OCaml bindings for the <span class="application"> <a class="ulink" href="http://www.gtk.org" target="_top"> GTK+</a> library
+             </span>, version 2.6.0 or above </p></dd><dt><span class="term">
+             <span class="application"> <a class="ulink" href="http://helm.cs.unibo.it/mml-widget/" target="_top">GtkMathView</a>
+             </span>
+           , </span><span class="term">
+             <span class="application"> <a class="ulink" href="http://helm.cs.unibo.it/mml-widget/" target="_top">LablGtkMathView</a>
+             </span>
+           </span></dt><dd><p> GTK+ widget to render <a class="ulink" href="http://www.w3.org/Math/" target="_top">MathML</a> documents and its
+               OCaml bindings </p></dd><dt><span class="term">
+             <span class="application"> <a class="ulink" href="http://gtksourceview.sourceforge.net/" target="_top">GtkSourceView</a>
+             </span>
+           , </span><span class="term">
+             <span class="application"> <a class="ulink" href="http://helm.cs.unibo.it/software/lablgtksourceview/" target="_top">LablGtkSourceView</a>
+             </span>
+           </span></dt><dd><p> extension for the GTK+ text widget (adding the typical
+               features of source code editors) and its OCaml bindings </p></dd><dt><span class="term"> <span class="application"> <a class="ulink" href="http://www.mysql.com" target="_top">MySQL</a> </span> , </span><span class="term">
+             <span class="application"> <a class="ulink" href="http://raevnos.pennmush.org/code/ocaml-mysql/" target="_top">OCaml
+                 MySQL</a> </span>
+           </span></dt><dd><p> SQL database and OCaml bindings for its client-side library
+             </p><p> The SQL database itself is not strictly needed to run
+               Matita, but the client libraries are.</p></dd><dt><span class="term"> <span class="application"> <a class="ulink" href="http://www.sqlite.org" target="_top">Sqlite</a> </span> , </span><span class="term">
+                   <span class="application"> 
+                         <a class="ulink" href="http://ocaml.info/home/ocaml_sources.html" target="_top">
+               OCaml Sqlite3
+             </a> </span>
+           </span></dt><dd><p> Sqlite database and OCaml bindings
+             </p></dd><dt><span class="term">
+             <span class="application"> <a class="ulink" href="http://ocamlnet.sourceforge.net/" target="_top">Ocamlnet</a>
+             </span>
+           </span></dt><dd><p> collection of OCaml libraries to deal with
+               application-level Internet protocols and conventions </p></dd><dt><span class="term">
+             <span class="application"> <a class="ulink" href="http://www.cduce.org/download.html" target="_top">ulex</a>
+             </span>
+           </span></dt><dd><p> Unicode lexer generator for OCaml </p></dd><dt><span class="term">
+             <span class="application"> <a class="ulink" href="http://cristal.inria.fr/~xleroy/software.html" target="_top">CamlZip</a>
+             </span>
+           </span></dt><dd><p> OCaml library to access <code class="filename">.gz</code> files
+             </p></dd></dl></div><p> </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="database_setup"></a>(optional) <span class="application"> <a class="ulink" href="http://www.mysql.com" target="_top">MySQL</a> </span> setup</h3></div></div></div><p> To fully exploit Matita indexing and search capabilities 
+       on a huge metadata set you may
+       need a working <span class="application"> <a class="ulink" href="http://www.mysql.com" target="_top">MySQL</a> </span> database. Detalied instructions on how to do
+       it can be found in the <a class="ulink" href="http://dev.mysql.com/doc/" target="_top">MySQL documentation</a>. Here you
+       can find a quick howto. </p><p> In order to create a database you need administrator permissions on
+       your MySQL installation, usually the root account has them. Once you
+       have the permissions, a new database can be created executing
+       <strong class="userinput"><code>mysqladmin create matita</code></strong>
+       (<span class="emphasis"><em>matita</em></span> is the default database name, you can
+       change it using the <em class="parameter"><code>db.user</code></em> key of the
+       configuration file). </p><p> Then you need to grant the necessary access permissions to the
+       database user of Matita, typing <strong class="userinput"><code>echo "grant all privileges
+         on matita.* to helm;" | mysql matita</code></strong> should do the trick
+       (<span class="emphasis"><em>helm</em></span> is the default user name used by Matita to
+       access the database, you can change it using the
+       <em class="parameter"><code>db.user</code></em> key of the configuration file).
+      </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p> This way you create a database named <span class="emphasis"><em>matita</em></span>
+         on which anyone claiming to be the <span class="emphasis"><em>helm</em></span> user can
+         do everything (like adding dummy data or destroying the contained
+         one). It is strongly suggested to apply more fine grained permissions,
+         how to do it is out of the scope of this manual.</p></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="build_instructions"></a>Compiling and installing</h3></div></div></div><p> Once you get the source code the installations steps should be
+       quite familiar.</p><p> First of all you need to configure the build process executing
+       <strong class="userinput"><code>./configure</code></strong>. This will check that all needed
+       tools and library are installed and prepare the sources for compilation
+       and installation. </p><p> Quite a few (optional) arguments may be passed to the
+       <span class="application">configure</span> command line to change build time
+       parameters. They are listed below, together with their
+       default values: </p><div class="variablelist"><p class="title"><strong> <span class="application">configure</span> command line
+           arguments</strong></p><dl class="variablelist"><dt><span class="term">
+             <strong class="userinput"><code>--with-runtime-dir=<em class="replaceable"><code>dir</code></em></code></strong>
+           </span></dt><dd><p>
+               (<span class="emphasis"><em>Default:</em></span>
+               <code class="filename">/usr/local/matita</code>) Runtime base directory
+               where all Matita stuff (executables, configuration files,
+               standard library, ...) will be installed
+             </p></dd><dt><span class="term">
+             <strong class="userinput"><code>--with-dbhost=<em class="replaceable"><code>host</code></em></code></strong>
+           </span></dt><dd><p>
+               (<span class="emphasis"><em>Default:</em></span> localhost) Default SQL server
+               hostname. Will be used while building the standard library
+               during the installation and to create the default Matita
+               configuration. May be changed later in configuration file.
+             </p></dd><dt><span class="term">
+             <strong class="userinput"><code>--enable-debug</code></strong>
+           </span></dt><dd><p>
+               (<span class="emphasis"><em>Default:</em></span> disabled) Enable debugging code.
+               Not for the casual user.
+             </p></dd></dl></div><p> Then you will manage the build and install process using
+       <span class="application"><a class="ulink" href="http://www.gnu.org/software/make/" target="_top">make</a></span>
+       as usual. Below are reported the targets you have to invoke in sequence
+       to build and install:
+      </p><div class="variablelist"><p class="title"><strong><span class="application">make</span> targets</strong></p><dl class="variablelist"><dt><span class="term"><strong class="userinput"><code>world</code></strong></span></dt><dd><p>builds components needed by Matita and Matita itself
+               (in bytecode or native code depending
+               on the availability of the OCaml native code compiler) </p></dd><dt><span class="term"><strong class="userinput"><code>install</code></strong></span></dt><dd><p>installs Matita related tools, standard library and the
+               needed runtime stuff in the proper places on the filesystem.
+             </p><p>As a part of the installation process the Matita
+               standard library will be compiled, thus testing that the just
+               built <span class="application">matitac</span> compiler works
+               properly.</p><p>For this step you will need a working SQL database (for
+               indexing the standard library while you are compiling it). See
+               <a class="ulink" href="#database_setup" target="_top">Database setup</a>
+               for instructions on how to set it up.
+             </p></dd></dl></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="sec_install.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_install.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="matita.conf.xml.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 2. Installation </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Configuring Matita</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/legal.xml b/helm/www/matita/docs/manual-0.5.9/legal.xml
new file mode 100644 (file)
index 0000000..115ae00
--- /dev/null
@@ -0,0 +1,20 @@
+<para> Both &appname; and this document are part of HELM, an Hypertextual,
+  Electronic Library of Mathematics, developed at the Computer Science
+  Department, University of Bologna, Italy. </para>
+
+<para> HELM is free software; you can redistribute it and/or modify it under
+  the terms of the GNU General Public License as published by the Free Software
+  Foundation; either version 2 of the License, or (at your option) any later
+  version.  </para>
+
+<para> HELM is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+</para>
+
+<para> You should have received a copy of the GNU General Public License along
+  with HELM; if not, write to the Free Software Foundation, Inc., 51 Franklin
+  St, Fifth Floor, Boston, MA  02110-1301  USA.  A copy of the GNU General
+  Public License is available at <ulink
+    url="http://www.gnu.org/copyleft/gpl.html">this link</ulink>. </para>
+
diff --git a/helm/www/matita/docs/manual-0.5.9/matita.conf.xml.html b/helm/www/matita/docs/manual-0.5.9/matita.conf.xml.html
new file mode 100644 (file)
index 0000000..73d7497
--- /dev/null
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Configuring Matita</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_install.html" title="Chapter 2. Installation" /><link rel="prev" href="inst_from_src.html" title="Installing from sources" /><link rel="next" href="sec_gettingstarted.html" title="Chapter 3. Getting started" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Configuring Matita</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="inst_from_src.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Installation</th><td width="20%" align="right"> <a accesskey="n" href="sec_gettingstarted.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="matita.conf.xml"></a>Configuring Matita</h2></div></div></div><p>
+           The configuration file is divided in four sections. The user and
+           matita ones are self explicative and does not need user
+           intervention. Here we report a sample snippet for these two
+           sections. The remaining db and getter sections will be explained in
+           details later.
+          </p><pre class="programlisting">
+
+  &lt;section name="user"&gt;
+    &lt;key name="home"&gt;$(HOME)&lt;/key&gt;
+    &lt;key name="name"&gt;$(USER)&lt;/key&gt;
+  &lt;/section&gt;
+  &lt;section name="matita"&gt;
+    &lt;key name="basedir"&gt;$(user.home)/.matita&lt;/key&gt;
+    &lt;key name="rt_base_dir"&gt;/usr/share/matita/&lt;/key&gt;
+    &lt;key name="owner"&gt;$(user.name)&lt;/key&gt;
+  &lt;/section&gt;
+</pre><p>
+    </p><p>
+          Matita needs to store/fetch data and metadata. Data is essentially
+          composed of XML files, metadata is a set of tuples for a relational
+          model. Data and metadata can produced by the user or be already
+          available. Both kind of data/metadata can be local and/or remote.
+   </p><p>
+          The db section tells Matita where to store and retrieve metadata,
+          while the getter section describes where XML files have to be
+          found. The following picture describes the suggested configuration.
+          Dashed arrows are determined by the configuration file.
+   </p><div class="figure"><a id="idp68778624"></a><p class="title"><strong>Figure 2.9. Configuring the Databases</strong></p><div class="figure-contents"><div class="mediaobject"><img src="figures/database.png" alt="How to configure the databases." /></div></div></div><br class="figure-break" /><p>The getter</p><p>
+          Consider the following snippet and the URI
+          <strong class="userinput"><code>cic:/matita/foo/bar.con</code></strong>. If Matita
+          is asked to read that object it will resolve the object trough
+          the getter. Since the first two entries are equally specific
+          (longest match rule applies) first the path
+          <strong class="userinput"><code>file://$(matita.rt_base_dir)/xml/standard-library/foo/bar.con</code></strong>
+          and then <strong class="userinput"><code>file://$(user.home)/.matita/xml/matita/foo/bar.con</code></strong>
+          are inspected.
+          </p><pre class="programlisting">
+
+  &lt;section name="getter"&gt;
+    &lt;key name="cache_dir"&gt;$(user.home)/.matita/getter/cache&lt;/key&gt;
+    &lt;key name="prefix"&gt;
+      cic:/matita/
+      file://$(matita.rt_base_dir)/xml/standard-library/
+      ro
+    &lt;/key&gt;
+    &lt;key name="prefix"&gt;
+      cic:/matita/
+      file://$(user.home)/.matita/xml/matita/
+    &lt;/key&gt;
+    &lt;key name="prefix"&gt;
+      cic:/Coq/
+      http://mowgli.cs.unibo.it/xml/
+      legacy
+    &lt;/key&gt;
+  &lt;/section&gt;
+       
+       </pre><p> 
+       if the same URI has to be written, the former prefix is skipped
+       since it is marked as readonly (<strong class="userinput"><code>ro</code></strong>).
+       Objects resolved using the third prefix are readonly too, and are
+       retrieved using the network. There is no limit to the number of
+       prefixes the user can define. The distinction between prefixes marked
+       as readonly and legacy is that, legacy ones are really read only, while
+       the ones marked with <strong class="userinput"><code>ro</code></strong> are considered for
+       writing when Matita is started in system mode (used to publish user
+       developments in the library space).
+   </p><p>The db</p><p>
+          The database subsystem has three fron ends: library, user and
+          legacy.  The latter is the only optional one. Every query is done on
+          every frontend, making the duplicate free union of the results.
+          The user front end kepps metadata produced by the user, and is thus
+          heavily accessed in read/write mode, while the library and legacy
+          fron ends are read only. Every front end can be connected to
+          backend, the storage actually. 
+          Consider the following snippet.
+          </p><pre class="programlisting">
+
+  &lt;section name="db"&gt;
+    &lt;key name="metadata"&gt;mysql://mowgli.cs.unibo.it matita helm none legacy&lt;/key&gt;
+    &lt;key name="metadata"&gt;file://$(matita.rt_base_dir) metadata.db helm helm library&lt;/key&gt;
+    &lt;key name="metadata"&gt;file://$(matita.basedir) user.db helm helm user&lt;/key&gt;
+  &lt;/section&gt;
+       
+       </pre><p> 
+       Here the usr database is a file (thus locally accessed trough the
+       Sqlite library) placed in the user's home directory. The library one is
+       placed in the Matita runtime directory. The legacy fron end is
+       connected to a remote <span class="application"> <a class="ulink" href="http://www.mysql.com" target="_top">MySQL</a> </span> based storage. Every metadata key 
+       takes a path to the storage, the name of the database, the user name,
+       a password (or <strong class="userinput"><code>none</code></strong>) and the name of the front 
+       end to which it is attached.
+   </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="inst_from_src.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_install.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="sec_gettingstarted.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Installing from sources </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 3. Getting started</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/matita.pdf b/helm/www/matita/docs/manual-0.5.9/matita.pdf
new file mode 100644 (file)
index 0000000..c3eb222
Binary files /dev/null and b/helm/www/matita/docs/manual-0.5.9/matita.pdf differ
diff --git a/helm/www/matita/docs/manual-0.5.9/matita.txt b/helm/www/matita/docs/manual-0.5.9/matita.txt
new file mode 100644 (file)
index 0000000..5578e9d
--- /dev/null
@@ -0,0 +1,2322 @@
+
+Matita V0.1.0 User Manual (rev. 1α)
+
+Andrea Asperti
+
+    <asperti@cs.unibo.it>
+
+Claudio Sacerdoti Coen
+
+    <sacerdot@cs.unibo.it>
+
+Ferruccio Guidi
+
+    <fguidi@cs.unibo.it>
+
+Enrico Tassi
+
+    <tassi@cs.unibo.it>
+
+Stefano Zacchiroli
+
+    <zacchiro@cs.unibo.it>
+
+   Copyright © 2006 The HELM team.
+
+   Both Matita and this document are free software, you can
+   redistribute them and/or modify them under the terms of the
+   GNU General Public License as published by the Free Software
+   Foundation. See Chapter 9 for more information.
+     _________________________________________________________
+
+   Table of Contents
+   1. Introduction
+
+        1.1. Features
+        1.2. Matita vs Coq
+
+   2. Installation
+
+        2.1. Installing from sources
+
+              2.1.1. Getting the source code
+              2.1.2. Requirements
+              2.1.3. Database setup
+              2.1.4. Compiling and installing
+
+        2.2. Configuring Matita
+
+   3. Getting started
+
+        3.1. How to type Unicode symbols
+        3.2. Browsing and searching
+
+              3.2.1. Browsing the library
+              3.2.2. Looking at a proof under development
+              3.2.3. Searching the library
+
+        3.3. Authoring
+
+              3.3.1. How to use developments
+              3.3.2. The authoring interface
+
+   4. Syntax
+
+        4.1. Terms & co.
+
+              4.1.1. Lexical conventions
+              4.1.2. Terms
+
+        4.2. Definitions and declarations
+
+              4.2.1. axiom id: term
+              4.2.2. definition id[: term] [â term]
+              4.2.3. [inductive|coinductive] id [args2]⦠: term
+                      â [|] [id:term] [| id:term]⦠[with id :
+                      term â [|] [id:term] [| id:term]â¦]â¦
+
+              4.2.4. record id [args2]⦠: term â{[id [:|:>]
+                      term] [;id [:|:>] term]â¦}
+
+        4.3. Proofs
+
+              4.3.1. theorem id[: term] [â term]
+              4.3.2. variant id: term â term
+              4.3.3. lemma id[: term] [â term]
+              4.3.4. fact id[: term] [â term]
+              4.3.5. remark id[: term] [â term]
+
+        4.4. Tactic arguments
+
+              4.4.1. intros-spec
+              4.4.2. pattern
+              4.4.3. reduction-kind
+              4.4.4. auto-params
+
+   5. Extending the syntax
+
+        5.1. Introduction
+
+   6. Tacticals
+
+        6.1. Interactive proofs and definitions
+        6.2. The proof status
+        6.3. Tacticals
+
+   7. Tactics
+
+        7.1. Quick reference card
+        7.2. absurd
+        7.3. apply
+        7.4. applyS
+        7.5. assumption
+        7.6. auto
+        7.7. clear
+        7.8. clearbody
+        7.9. change
+        7.10. constructor
+        7.11. contradiction
+        7.12. cut
+        7.13. decompose
+        7.14. demodulate
+        7.15. destruct
+        7.16. elim
+        7.17. elimType
+        7.18. exact
+        7.19. exists
+        7.20. fail
+        7.21. fold
+        7.22. fourier
+        7.23. fwd
+        7.24. generalize
+        7.25. id
+        7.26. intro
+        7.27. intros
+        7.28. inversion
+        7.29. lapply
+        7.30. left
+        7.31. letin
+        7.32. normalize
+        7.33. reduce
+        7.34. reflexivity
+        7.35. replace
+        7.36. rewrite
+        7.37. right
+        7.38. ring
+        7.39. simplify
+        7.40. split
+        7.41. subst
+        7.42. symmetry
+        7.43. transitivity
+        7.44. unfold
+        7.45. whd
+
+   8. Other commands
+
+        8.1. alias
+        8.2. check
+        8.3. coercion
+        8.4. default
+        8.5. hint
+        8.6. include
+        8.7. include' "s"
+        8.8. set
+        8.9. whelp
+        8.10. qed
+
+   9. License
+
+   List of Tables
+   4-1. qstring
+   4-2. id
+   4-3. nat
+   4-4. char
+   4-5. uri-step
+   4-6. uri
+   4-7. Terms
+   4-8. Simple terms
+   4-9. Arguments
+   4-10. Pattern matching
+   4-11. intros-spec
+   4-12. pattern
+   4-13. path
+   4-14. reduction-kind
+   4-15. reduction-kind
+   6-1. proof script
+   6-2. proof steps
+   6-3. tactics and LCF tacticals
+   7-1. tactics
+   8-1. clusters
+
+   List of Figures
+   3-1. The Developments window
+     _________________________________________________________
+
+Chapter 1. Introduction
+
+1.1. Features
+
+   Matita is an interactive theorem prover (or proof assistant)
+   with the following characteristics:
+
+     * It is based on a variant of the Calculus of (Co)Inductive
+       Constructions (CIC). CIC is also the logic of the Coq
+       proof assistant.
+     * It adopts a procedural proof language, but it has a new
+       set of small step tacticals that improve proof structuring
+       and debugging.
+     * It has a stand-alone graphical user interface (GUI)
+       inspired by CtCoq/Proof General. The GUI is implemented
+       according to the state of the art. In particular:
+          + It is based and fully integrated with Gtk/Gnome.
+          + An on-line help can be browsed via the Gnome
+            documentation browser.
+          + Mathematical formulae are rendered in two dimensional
+            notation via MathML and Unicode.
+     * It integrates advanced browsing and searching procedures.
+     * It allows the use of the typical ambiguous mathematical
+       notation by means of a disambiguating parser.
+     * It is compatible with the library of Coq (definitions and
+       proof objects).
+     _________________________________________________________
+
+1.2. Matita vs Coq
+
+   The system shares a common look&feel with the Coq proof
+   assistant and its graphical user interface. The two systems
+   have the same logic, very close proof languages and similar
+   sets of tactics. Moreover, Matita is compatible with the
+   library of Coq. From the user point of view the main lacking
+   features with respect to Coq are:
+
+     * proof extraction;
+     * an extensible language of tactics;
+     * automatic implicit arguments;
+     * several ad-hoc decision procedures;
+     * several rarely used variants for most of the tactics;
+     * sections and local variables. To maintain compatibility
+       with the library of Coq, theorems defined inside sections
+       are abstracted by name over the section variables; their
+       instances are explicitly applied to actual arguments by
+       means of explicit named substitutions.
+
+   Still from the user point of view, the main differences with
+   respect to Coq are:
+
+     * the language of tacticals that allows execution of partial
+       tactical application;
+     * the unification of the concept of metavariable and
+       existential variable;
+     * terms with subterms that cannot be inferred are always
+       allowed as arguments of tactics or other commands;
+     * ambiguous terms are disambiguated by direct interaction
+       with the user;
+     * theorems and definitions in the library are always
+       accessible without needing to require/include them; right
+       now, only notation needs to be included to become active,
+       but we plan to remove this limitation.
+     _________________________________________________________
+
+Chapter 2. Installation
+
+2.1. Installing from sources
+
+   Currently, the only intended way to install Matita is starting
+   from its source code.
+     _________________________________________________________
+
+2.1.1. Getting the source code
+
+   You can get the Matita source code in two ways:
+
+    1. go to the download page and get the latest released source
+       tarball;
+    2. get the development sources from our SVN repository. You
+       will need the components/ and matita/ directories from the
+       trunk/helm/software/ directory, plus the configure and
+       Makefile* stuff from the same directory.
+       In this case you will need to run autoconf before
+       proceding with the building instructions below.
+     _________________________________________________________
+
+2.1.2. Requirements
+
+   In order to build Matita from sources you will need some tools
+   and libraries. They are listed below.
+
+   Note Note for Debian users
+
+
+   If you are running a Debian GNU/Linux distribution you can
+   have APT install all the required tools and libraries by
+   adding the following repository to your /etc/apt/sources.list:
+              deb http://people.debian.org/~zack unstable helm
+
+
+   and installing the helm-matita-deps package.
+
+   Required tools and libraries
+
+   OCaml
+          the Objective Caml compiler, version 3.09 or above
+
+   Findlib
+          OCaml package manager, version 1.1.1 or above
+
+   OCaml Expat
+          OCaml bindings for the expat library
+
+   GMetaDOM
+          OCaml bindings for the Gdome 2 library
+
+   OCaml HTTP
+          OCaml library to write HTTP daemons (and clients)
+
+   LablGTK
+          OCaml bindings for the GTK+ library , version 2.6.0 or
+          above
+
+   GtkMathView , LablGtkMathView
+          GTK+ widget to render MathML documents and its OCaml
+          bindings
+
+   GtkSourceView , LablGtkSourceView
+          extension for the GTK+ text widget (adding the typical
+          features of source code editors) and its OCaml bindings
+
+   MySQL , OCaml MySQL
+          SQL database and OCaml bindings for its client-side
+          library
+
+          The SQL database itself is not strictly needed to run
+          Matita, but we stronly encourage its use since a lot of
+          features are disabled without it. Still, the OCaml
+          bindings of the library are needed at compile time.
+
+   Ocamlnet
+          collection of OCaml libraries to deal with
+          application-level Internet protocols and conventions
+
+   ulex
+          Unicode lexer generator for OCaml
+
+   CamlZip
+          OCaml library to access .gz files
+     _________________________________________________________
+
+2.1.3. Database setup
+
+   To fully exploit Matita indexing and search capabilities you
+   will need a working MySQL database. Detalied instructions on
+   how to do it can be found in the MySQL documentation. Here you
+   can find a quick howto.
+
+   In order to create a database you need administrator
+   permissions on your MySQL installation, usually the root
+   account has them. Once you have the permissions, a new
+   database can be created executing mysqladmin create matita
+   (matita is the default database name, you can change it using
+   the db.user key of the configuration file).
+
+   Then you need to grant the necessary access permissions to the
+   database user of Matita, typing echo "grant all privileges on
+   matita.* to helm;" | mysql matita should do the trick (helm is
+   the default user name used by Matita to access the database,
+   you can change it using the db.user key of the configuration
+   file).
+
+   Note
+
+   This way you create a database named matita on which anyone
+   claiming to be the helm user can do everything (like adding
+   dummy data or destroying the contained one). It is strongly
+   suggested to apply more fine grained permissions, how to do it
+   is out of the scope of this manual.
+     _________________________________________________________
+
+2.1.4. Compiling and installing
+
+   Once you get the source code the installations steps should be
+   quite familiar.
+
+   First of all you need to configure the build process executing
+   ./configure. This will check that all needed tools and library
+   are installed and prepare the sources for compilation and
+   installation.
+
+   Quite a few (optional) arguments may be passed to the
+   configure command line to change build time parameters. They
+   are listed below, together with their default values:
+
+   configure command line arguments
+
+   --with-runtime-dir=dir
+          (Default: /usr/local/matita) Runtime base directory
+          where all Matita stuff (executables, configuration
+          files, standard library, ...) will be installed
+
+   --with-dbhost=host
+          (Default: localhost) Default SQL server hostname. Will
+          be used while building the standard library during the
+          installation and to create the default Matita
+          configuration. May be changed later in configuration
+          file.
+
+   --enable-debug
+          (Default: disabled) Enable debugging code. Not for the
+          casual user.
+
+   Then you will manage the build and install process using make
+   as usual. Below are reported the targets you have to invoke in
+   sequence to build and install:
+
+   make targets
+
+   world
+          builds components needed by Matita and Matita itself
+          (in bytecode or native code depending on the
+          availability of the OCaml native code compiler)
+
+   install
+          installs Matita related tools, standard library and the
+          needed runtime stuff in the proper places on the
+          filesystem.
+
+          As a part of the installation process the Matita
+          standard library will be compiled, thus testing that
+          the just built matitac compiler works properly.
+
+          For this step you will need a working SQL database (for
+          indexing the standard library while you are compiling
+          it). See Database setup for instructions on how to set
+          it up.
+     _________________________________________________________
+
+2.2. Configuring Matita
+
+   The file matita.conf.xml... TODO
+     _________________________________________________________
+
+Chapter 3. Getting started
+
+   If you are already familiar with the Calculus of (Co)Inductive
+   Constructions (CIC) and with interactive theorem provers with
+   procedural proof languages (expecially Coq), getting started
+   with Matita is relatively easy. You just need to learn how to
+   type Unicode symbols, how to browse and search the library and
+   how to author a proof script.
+     _________________________________________________________
+
+3.1. How to type Unicode symbols
+
+   Unicode characters can be typed in several ways:
+
+     * Using the "Ctrl+Shift+Unicode code" standard Gnome
+       shortcut. E.g. Ctrl+Shift+3a9 generates "Ω".
+     * Typing the ligature "\name" where "name" is a standard
+       Unicode or LaTeX name for the character. Pressing "Alt+L"
+       just after the last character of the name converts the
+       ligature to the Unicode symbol. This operation is not
+       required since Matita understands also the "\name"
+       sequences. E.g. "\Omega" followed by Alt+L generates "Ω".
+     * Typing one of the following ligatures (and optionally
+       converting the ligature to the Unicode character has
+       described before): ":=" (which stands for â); "->" (which
+       stands for "â"); "=>" (which stands for "â").
+     _________________________________________________________
+
+3.2. Browsing and searching
+
+   The CIC browser is used to browse and search the library. You
+   can open a new CIC browser selecting "New Cic Browser" from
+   the "View" menu of Matita, or by pressing "F3". The CIC
+   browser is similar to a traditional Web browser.
+     _________________________________________________________
+
+3.2.1. Browsing the library
+
+   To browse the library, type in the location bar the absolute
+   URI of the theorem, definition or library fragment you are
+   interested in. "cic:/" is the root of the library.
+   Contributions developed in Matita are under "cic:/matita"; all
+   the others are part of the library of Coq.
+
+   Following the hyperlinks it is possible to navigate in the Web
+   of mathematical notions. Proof are rendered in pseudo-natural
+   language and mathematical notation is used for formulae. For
+   now, mathematical notation must be included in the current
+   script to be activated, but we plan to remove this limitation.
+     _________________________________________________________
+
+3.2.2. Looking at a proof under development
+
+   A proof under development is not yet part of the library. The
+   special URI "about:proof" can be used to browse the proof
+   currently under development, if there is one. The "home"
+   button of the CIC browser sets the location bar to
+   "about:proof".
+     _________________________________________________________
+
+3.2.3. Searching the library
+
+   The query bar of the CIC browser can be used to search the
+   library of Matita for theorems or definitions that match
+   certain criteria. The criteria is given by typing a term in
+   the query bar and selecting an action in the drop down menu
+   right of it.
+     _________________________________________________________
+
+3.2.3.1. Searching by name
+
+   TODO
+     _________________________________________________________
+
+3.2.3.2. List of lemmas that can be applied
+
+   TODO
+     _________________________________________________________
+
+3.2.3.3. Searching by exact match
+
+   TODO
+     _________________________________________________________
+
+3.2.3.4. List of elimination principles for a given type
+
+   TODO
+     _________________________________________________________
+
+3.2.3.5. Searching by instantiation
+
+   TODO
+     _________________________________________________________
+
+3.3. Authoring
+
+3.3.1. How to use developments
+
+   A development is a set of scripts files that are strictly
+   related (i.e. they depend on each other). Matita is able to
+   automatically manage dependencies among the scripts in a
+   development, compiling them in the correct order.
+
+   The include statement can be performed by Matita only if the
+   mentioned script is compiled. If both scripts (the one that
+   includes and the included) are part of the same development,
+   the included script (and recursively all its dependencies) can
+   be compiled automatically. Dependencies among scripts
+   belonging to different developments is not implemented yet.
+
+   The "Developments..." item the File menu (or pressing Ctrl+D)
+   opens the Developments window.
+
+   Figure 3-1. The Developments window
+
+   [developments.png]
+
+   Developments window buttons
+
+   New
+          To create a new Development the user needs to specify a
+          name[1] and the root directory in which all scripts
+          will be placed, eventually organized in subdirectories.
+          The Development should be named as the directory in
+          which it lives. A "makefile" file is placed in the
+          specified root directory. That makefile supports the
+          following targets:
+
+        all
+                Build the whole development.
+
+        clean
+                Cleans the whole development.
+
+        cleanall
+                Resets the user environment (i.e. deleting all
+                the results of compilation of every development,
+                including the contents of the database). This
+                target should be used only in case something goes
+                wrong and Matita behaves incorrectly.
+
+        scriptname.mo
+                Compiles "scriptname.ma"
+
+   Delete
+          Decompiles the whole development and removes it.
+
+   Build
+          Compiles all the scripts in the development.
+
+   Clean
+          Decompiles the whole development.
+
+   Publish
+          All the user developments live in the "user" space.
+          That is, the result of the compilation of scripts is
+          placed in his home directory and the tuples are placed
+          in personal tables inside the database. Publishing a
+          development means putting it in the "library" space.
+          This means putting the result of compilation in the
+          same place where the standard library lives. This
+          feature will be improved in the future to support
+          publishing the development in the "distributed library"
+          space (making your development public).
+
+   Close
+          Closes the Developments window
+     _________________________________________________________
+
+3.3.2. The authoring interface
+
+   TODO
+     _________________________________________________________
+
+Chapter 4. Syntax
+
+   To describe syntax in this manual we use the following
+   conventions:
+
+    1. Non terminal symbols are emphasized and have a link to
+       their definition. E.g.: term
+    2. Terminal symbols are in bold. E.g.: theorem
+    3. Optional sequences of elements are put in square brackets.
+       E.g.: [in term]
+    4. Alternatives are put in square brakets and they are
+       separated by vertical bars. E.g.: [<|>]
+    5. Repetitions of a sequence of elements are given by putting
+       the sequence in square brackets, that are followed by
+       three dots. The empty sequence is a valid repetition.
+       E.g.: [and term]â¦
+    6. Characters belonging to a set of characters are given by
+       listing the set elements in square brackets. Hyphens are
+       used to specify ranges of characters in the set. E.g.:
+       [a-zA-Z0-9_-]
+     _________________________________________________________
+
+4.1. Terms & co.
+
+4.1.1. Lexical conventions
+
+   Table 4-1. qstring
+   qstring ::= "â©â©any sequence of characters excluded "âªâª"
+
+   Table 4-2. id
+   id ::= â©â©any sequence of letters, underscores or valid XML
+   digits prefixed by a latin letter ([a-zA-Z]) and post-fixed by
+   a possible empty sequence of decorators ([?'`])âªâª
+
+   Table 4-3. nat
+   nat ::= â©â©any sequence of valid XML digitsâªâª
+
+   Table 4-4. char
+   char ::= [a-zA-Z0-9_-]
+
+   Table 4-5. uri-step
+   uri-step ::= char[char]â¦
+
+   Table 4-6. uri
+                 uri ::=
+   [cic:/|theory:/]uri-step[/uri-step]â¦.id[.id]â¦[#xpointer(nat/
+   nat[/nat]â¦)]
+     _________________________________________________________
+
+4.1.2. Terms
+
+   Table 4-7. Terms
+   term ::= sterm simple or delimited term
+     | term term application
+     | λargs.term λ-abstraction
+     | Î args.term dependent product meant to define a datatype
+     | âargs.term dependent product meant to define a proposition
+     | term â term non-dependent product (logical implication or
+   function space)
+     | let [id|(id: term)] â term in term local definition
+     | let [co]rec rec_def (co)recursive definitions
+       [and rec_def]â¦
+       in term
+     | â¦ user provided notation
+   rec_def ::= id [id|(id[,term]⦠:term)]â¦
+       [on id] [: term] â term]
+
+   Table 4-8. Simple terms
+   sterm ::= (term)
+     | id[\subst[ idâterm [;idâterm]⦠]] identifier with
+   optional explicit named substitution
+     | uri a qualified reference
+     | Prop the impredicative sort of propositions
+     | Set the impredicate sort of datatypes
+     | CProp one fixed predicative sort of constructive
+   propositions
+     | Type one predicative sort of datatypes
+     | ? implicit argument
+     | ?n [[ [_|term]⦠]] metavariable
+     | match term [ in term ] [ return term ] with case analysis
+       [ match_branch[|match_branch]⦠]
+     | (term:term) cast
+     | â¦ user provided notation at precedence 90
+
+   Table 4-9. Arguments
+   args  ::= _[: term]           ignored argument
+         |   (_[: term])         ignored argument
+         |   id[,id]â¦[: term]  
+         |   (id[,id]â¦[: term])
+   args2 ::= id                 
+         |   (id[,id]â¦: term)  
+
+   Table 4-10. Pattern matching
+   match_branch ::= match_pattern â term
+   match_pattern ::= id 0-ary constructor
+     | (id id [id]â¦) n-ary constructor (binds the n arguments)
+     _________________________________________________________
+
+4.2. Definitions and declarations
+
+4.2.1. axiom id: term
+
+   axiom H: P
+
+   H is declared as an axiom that states P
+     _________________________________________________________
+
+4.2.2. definition id[: term] [â term]
+
+   definition f: T â t
+
+   f is defined as t; T is its type. An error is raised if the
+   type of t is not convertible to T.
+
+   T is inferred from t if omitted.
+
+   t can be omitted only if T is given. In this case Matita
+   enters in interactive mode and f must be defined by means of
+   tactics.
+
+   Notice that the command is equivalent to theorem f: T â t.
+     _________________________________________________________
+
+4.2.3. [inductive|coinductive] id [args2]⦠: term â [|] [id:term]
+[| id:term]⦠[with id : term â [|] [id:term] [| id:term]â¦]â¦
+
+   inductive i x y z: S â k1:T1 | â¦ | kn:Tn with i' : S' â
+   k1':T1' | â¦ | km':Tm'
+
+   Declares a family of two mutually inductive types i and i'
+   whose types are S and S', which must be convertible to sorts.
+
+   The constructors ki of type Ti and ki' of type Ti' are also
+   simultaneously declared. The declared types i and i' may occur
+   in the types of the constructors, but only in strongly
+   positive positions according to the rules of the calculus.
+
+   The whole family is parameterized over the arguments x,y,z.
+
+   If the keyword coinductive is used, the declared types are
+   considered mutually coinductive.
+
+   Elimination principles for the record are automatically
+   generated by Matita, if allowed by the typing rules of the
+   calculus according to the sort S. If generated, they are named
+   i_ind, i_rec and i_rect according to the sort of their
+   induction predicate.
+     _________________________________________________________
+
+4.2.4. record id [args2]⦠: term â{[id [:|:>] term] [;id [:|:>]
+term]â¦}
+
+   record id x y z: S â { f1: T1; â¦; fn:Tn }
+
+   Declares a new record family id parameterized over x,y,z.
+
+   S is the type of the record and it must be convertible to a
+   sort.
+
+   Each field fi is declared by giving its type Ti. A record
+   without any field is admitted.
+
+   Elimination principles for the record are automatically
+   generated by Matita, if allowed by the typing rules of the
+   calculus according to the sort S. If generated, they are named
+   i_ind, i_rec and i_rect according to the sort of their
+   induction predicate.
+
+   For each field fi a record projection fi is also automatically
+   generated if projection is allowed by the typing rules of the
+   calculus according to the sort S, the type T1 and the
+   definability of depending record projections.
+
+   If the type of a field is declared with :>, the corresponding
+   record projection becomes an implicit coercion. This is just
+   syntactic sugar and it has the same effect of declaring the
+   record projection as a coercion later on.
+     _________________________________________________________
+
+4.3. Proofs
+
+4.3.1. theorem id[: term] [â term]
+
+   theorem f: P â p
+
+   Proves a new theorem f whose thesis is P.
+
+   If p is provided, it must be a proof term for P. Otherwise an
+   interactive proof is started.
+
+   P can be omitted only if the proof is not interactive.
+
+   Proving a theorem already proved in the library is an error.
+   To provide an alternative name and proof for the same theorem,
+   use variant f: P â p.
+
+   A warning is raised if the name of the theorem cannot be
+   obtained by mangling the name of the constants in its thesis.
+
+   Notice that the command is equivalent to definition f: T â t.
+     _________________________________________________________
+
+4.3.2. variant id: term â term
+
+   variant f: T â t
+
+   Same as theorem f: T â t, but it does not complain if the
+   theorem has already been proved. To be used to give an
+   alternative name or proof to a theorem.
+     _________________________________________________________
+
+4.3.3. lemma id[: term] [â term]
+
+   lemma f: T â t
+
+   Same as theorem f: T â t
+     _________________________________________________________
+
+4.3.4. fact id[: term] [â term]
+
+   fact f: T â t
+
+   Same as theorem f: T â t
+     _________________________________________________________
+
+4.3.5. remark id[: term] [â term]
+
+   remark f: T â t
+
+   Same as theorem f: T â t
+     _________________________________________________________
+
+4.4. Tactic arguments
+
+   This section documents the syntax of some recurring arguments
+   for tactics.
+     _________________________________________________________
+
+4.4.1. intros-spec
+
+   Table 4-11. intros-spec
+   intros-spec ::= [nat] [([id]â¦)]
+
+   The natural number is the number of new hypotheses to be
+   introduced. The list of identifiers gives the name for the
+   first hypotheses.
+     _________________________________________________________
+
+4.4.2. pattern
+
+   Table 4-12. pattern
+ pattern ::= in [id[: path]]⦠[⢠path]]                simple pattern
+         |   in match term [in [id[: path]]⦠[⢠path]] full pattern
+
+   Table 4-13. path
+   path ::= â©â©any sterm whithout occurrences of Set, Prop,
+   CProp, Type, id, uri and user provided notation; however, % is
+   now an additional production for stermâªâª
+
+   A path locates zero or more subterms of a given term by
+   mimicking the term structure up to:
+
+    1. Occurrences of the subterms to locate that are represented
+       by %.
+    2. Subterms without any occurrence of subterms to locate that
+       can be represented by ?.
+
+   For instance, the path â_,_:?.(? ? % ?)â(? ? ? %) locates at
+   once the subterms x+y and x*y in the term âx,y:nat.x+y=1â0=x*y
+   (where the notation A=B hides the term (eq T A B) for some
+   type T).
+
+   A simple pattern extends paths to locate subterms in a whole
+   sequent. In particular, the pattern in H: p K: q â¢ r locates
+   at once all the subterms located by the pattern r in the
+   conclusion of the sequent and by the patterns p and q in the
+   hypotheses H and K of the sequent.
+
+   If no list of hypotheses is provided in a simple pattern, no
+   subterm is selected in the hypothesis. If the â¢ p part of the
+   pattern is not provided, no subterm will be matched in the
+   conclusion if at least one hypothesis is provided; otherwise
+   the whole conclusion is selected.
+
+   Finally, a full pattern is interpreted in three steps. In the
+   first step the match T in part is ignored and a set S of
+   subterms is located as for the case of simple patterns. In the
+   second step the term T is parsed and interpreted in the
+   context of each subterm s â S. In the last term for each s â S
+   the interpreted term T computed in the previous step is looked
+   for. The final set of subterms located by the full pattern is
+   the set of occurrences of the interpreted T in the subterms s.
+
+   A full pattern can always be replaced by a simple pattern,
+   often at the cost of increased verbosity or decreased
+   readability.
+
+   Example: the pattern â¢ in match x+y in â_,_:?.(? ? % ?)
+   locates only the first occurrence of x+y in the sequent x,y:
+   nat â¢ âz,w:nat. (x+y) * (z+w) = z * (x+y) + w * (x+y). The
+   corresponding simple pattern is â¢ â_,_:?.(? ? (? % ?) ?).
+
+   Every tactic that acts on subterms of the selected sequents
+   have a pattern argument for uniformity. To automatically
+   generate a simple pattern:
+
+    1. Select in the current goal the subterms to pass to the
+       tactic by using the mouse. In order to perform a multiple
+       selection of subterms, hold the Ctrl key while selecting
+       every subterm after the first one.
+    2. From the contextual menu select "Copy".
+    3. From the "Edit" or the contextual menu select "Paste as
+       pattern"
+     _________________________________________________________
+
+4.4.3. reduction-kind
+
+   Reduction kinds are normalization functions that transform a
+   term to a convertible but simpler one. Each reduction kind can
+   be used both as a tactic argument and as a stand-alone tactic.
+
+   Table 4-14. reduction-kind
+   reduction-kind ::= normalize Computes the βδιζ-normal form
+     | reduce Computes the βδιζ-normal form
+     | simplify Computes a form supposed to be simpler
+     | unfold [sterm] δ-reduces the constant or variable if
+   specified, or that in head position
+     | whd Computes the βδιζ-weak-head normal form
+     _________________________________________________________
+
+4.4.4. auto-params
+
+   TODO
+
+   Table 4-15. reduction-kind
+   auto_params ::= depth=â« TODO
+               |   width=â« TODO
+               |   TODO     TODO
+     _________________________________________________________
+
+Chapter 5. Extending the syntax
+
+5.1. Introduction
+
+   TODO
+
+   notation: TODO
+
+   interpretation: TODO
+     _________________________________________________________
+
+Chapter 6. Tacticals
+
+6.1. Interactive proofs and definitions
+
+   An interactive definition is started by giving a definition
+   command omitting the definiens. An interactive proof is
+   started by using one of the proof commands omitting an
+   explicit proof term.
+
+   An interactive proof or definition can and must be terminated
+   by a qed command when no more sequents are left to prove.
+   Between the command that starts the interactive session and
+   the qed command the user must provide a procedural proof
+   script made of tactics structured by means of tacticals.
+
+   In the tradition of the LCF system, tacticals can be
+   considered higher order tactics. Their syntax is structured
+   and they are executed atomically. On the contrary, in Matita
+   the syntax of several tacticals is destructured into a
+   sequence of tokens and tactics in such a way that is is
+   possible to stop execution after every single token or tactic.
+   The original semantics is preserved: the execution of the
+   whole sequence yields the result expected by the original
+   LCF-like tactical.
+     _________________________________________________________
+
+6.2. The proof status
+
+   During an interactive proof, the proof status is made of the
+   set of sequents to prove and the partial proof built so far.
+
+   The partial proof can be inspected on demand in the CIC
+   browser. It will be shown in pseudo-natural language produced
+   on the fly from the proof term.
+
+   The set of sequents to prove is shown in the notebook of the
+   authoring interface, in the top-right corner of the main
+   window of Matita. Each tab shows a different sequent, named
+   with a question mark followed by a number. The current role of
+   the sequent, according to the following description, is also
+   shown in the tab tag.
+
+    1. Selected sequents (name in boldface, e.g. ?3). The next
+       tactic will be applied to every selected sequent,
+       producing new selected sequents. Tacticals such as
+       branching ("[") or "focus" can be used to change the set
+       of selected sequents.
+    2. Sibling sequents (name prefixed by a vertical bar and
+       their position, e.g. |[3]?2). When the set of selected
+       sequents has more than one element, the user can decide to
+       focus in turn on each of them. The branching tactical
+       ("[") selects the first sequent only, marking every
+       previously selected sequent as a sibling sequent. Each
+       sibling sequent is given a different position. The
+       tactical "2,3:" can be used to select one or more sibling
+       sequents, different from the one proposed, according to
+       their position. Once the user starts to work on the
+       selected sibling sequents it becomes impossible to select
+       a new set of siblings until the ("|") tactical is used to
+       end work on the current one.
+    3. Automatically solved sibling sequents (name strokethrough,
+       e.g. |[3]?2). Sometimes a tactic can close by side effects
+       a sibling sequent the user has not selected yet. The
+       sequent is left in the automatically solved status in
+       order for the user to explicitly accept (using the "skip"
+       tactical) the automatic instantiation in the proof script.
+       This way the correspondence between the number of branches
+       in the proof script and the number of sequents generated
+       in the proof is preserved.
+     _________________________________________________________
+
+6.3. Tacticals
+
+   Table 6-1. proof script
+   proof-script ::= proof-step [proof-step]â¦
+
+   Every proof step can be immediately executed.
+
+   Table 6-2. proof steps
+   proof-step ::= LCF-tactical The tactical is applied to each
+   selected sequent. Each new sequent becomes a selected sequent.
+     | . The first selected sequent becomes the only one
+   selected. All the remaining previously selected sequents are
+   proposed to the user one at a time when the next "." is used.
+     | ; Nothing changes. Use this proof step as a separator in
+   concrete syntax.
+     | [ Every selected sequent becomes a sibling sequent that
+   constitute a branch in the proof. Moreover, the first sequent
+   is also selected.
+     | | Stop working on the current branch of the innermost
+   branching proof. The sibling branches become the sibling
+   sequents and the first one is also selected.
+     | nat[,nat]â¦: The sibling sequents specified by the user
+   become the next selected sequents.
+     | *: Every sibling branch not considered yet in the
+   innermost branching proof becomes a selected sequent.
+     | skip Accept the automatically provided instantiation (not
+   shown to the user) for the currently selected automatically
+   closed sibling sequent.
+     | ] Stop analyzing branches for the innermost branching
+   proof. Every sequent opened during the branching proof and not
+   closed yet becomes a selected sequent.
+     | focus nat [nat]⦠Selects the sequents specified by the
+   user. The selected sequents must be completely closed (no new
+   sequents left open) before doing an "unfocus that restores the
+   current set of sibling branches.
+     | unfocus Used to match the innermost "focus" tactical when
+   all the sequents selected by it have been closed. Until
+   "unfocus" is performed, it is not possible to progress in the
+   rest of the proof.
+
+   Table 6-3. tactics and LCF tacticals
+   LCF-tactical ::= tactic Applies the specified tactic.
+     | LCF-tactical ; LCF-tactical Applies the first tactical
+   first and the second tactical to each sequent opened by the
+   first one.
+     | LCF-tactical [ [LCF-tactical] [| LCF-tactical]⦠] Applies
+   the first tactical first and each tactical in the list of
+   tacticals to the corresponding sequent opened by the first
+   one. The number of tacticals provided in the list must be
+   equal to the number of sequents opened by the first tactical.
+     | do nat LCF-tactical end TODO
+     | repeat LCF-tactical end TODO
+     | first [ [LCF-tactical] [| LCF-tactical]⦠] TODO
+     | try LCF-tactical TODO
+     | solve [ [LCF-tactical] [| LCF-tactical]⦠] TODO
+     | (LCF-tactical) Used for grouping during parsing.
+     _________________________________________________________
+
+Chapter 7. Tactics
+
+7.1. Quick reference card
+
+   Table 7-1. tactics
+   tactic ::= absurd sterm
+     | apply sterm
+     | applyS sterm
+     | assumption 
+     | auto [depth=nat] [width=nat] [paramodulation] [full]
+     | change pattern with sterm
+     | clear id [idâ¦]
+     | clearbody id
+     | constructor nat
+     | contradiction 
+     | cut sterm [as id]
+     | decompose [( id⦠)] [id] [as idâ¦]
+     | demodulate 
+     | destruct sterm
+     | elim sterm [using sterm] intros-spec
+     | elimType sterm [using sterm] intros-spec
+     | exact sterm
+     | exists 
+     | fail 
+     | fold reduction-kind sterm pattern
+     | fourier 
+     | fwd id [as id [id]â¦]
+     | generalize pattern [as id]
+     | id 
+     | intro [id]
+     | intros intros-spec
+     | inversion sterm
+     | lapply [linear] [depth=nat] sterm [to sterm [,stermâ¦] ]
+   [as id]
+     | left 
+     | letin id â sterm
+     | normalize pattern
+     | reduce pattern
+     | reflexivity 
+     | replace pattern with sterm
+     | rewrite [<|>] sterm pattern
+     | right 
+     | ring 
+     | simplify pattern
+     | split 
+     | subst 
+     | symmetry 
+     | transitivity sterm
+     | unfold [sterm] pattern
+     | whd pattern
+     _________________________________________________________
+
+7.2. absurd
+
+   absurd P
+
+   Synopsis:
+          absurd sterm
+
+   Pre-conditions:
+          P must have type Prop.
+
+   Action:
+          It closes the current sequent by eliminating an absurd
+          term.
+
+   New sequents to prove:
+          It opens two new sequents of conclusion P and ¬P.
+     _________________________________________________________
+
+7.3. apply
+
+   apply t
+
+   Synopsis:
+          apply sterm
+
+   Pre-conditions:
+          t must have type T[1] â ... â T[n] â G where G can be
+          unified with the conclusion of the current sequent.
+
+   Action:
+          It closes the current sequent by applying t to n
+          implicit arguments (that become new sequents).
+
+   New sequents to prove:
+          It opens a new sequent for each premise T[i] that is
+          not instantiated by unification. T[i] is the conclusion
+          of the i-th new sequent to prove.
+     _________________________________________________________
+
+7.4. applyS
+
+   applyS t auto_params
+
+   Synopsis:
+          applyS sterm auto_params
+
+   Pre-conditions:
+          t must have type T[1] â ... â T[n] â G.
+
+   Action:
+          applyS is useful when apply fails because the current
+          goal and the conclusion of the applied theorems are
+          extensionally equivalent up to instantiation of
+          metavariables, but cannot be unified. E.g. the goal is
+          P(n*O+m) and the theorem to be applied proves
+          âm.P(m+O).
+
+          It tries to automatically rewrite the current goal
+          using auto paramodulation to make it unifiable with G.
+          Then it closes the current sequent by applying t to n
+          implicit arguments (that become new sequents). The
+          auto_params parameters are passed directly to auto
+          paramodulation.
+
+   New sequents to prove:
+          It opens a new sequent for each premise T[i] that is
+          not instantiated by unification. T[i] is the conclusion
+          of the i-th new sequent to prove.
+     _________________________________________________________
+
+7.5. assumption
+
+   assumption
+
+   Synopsis:
+          assumption
+
+   Pre-conditions:
+          There must exist an hypothesis whose type can be
+          unified with the conclusion of the current sequent.
+
+   Action:
+          It closes the current sequent exploiting an hypothesis.
+
+   New sequents to prove:
+          None
+     _________________________________________________________
+
+7.6. auto
+
+   auto depth=d width=w paramodulation full
+
+   Synopsis:
+          auto [depth=nat] [width=nat] [paramodulation] [full]
+
+   Pre-conditions:
+          None, but the tactic may fail finding a proof if every
+          proof is in the search space that is pruned away.
+          Pruning is controlled by d and w. Moreover, only lemmas
+          whose type signature is a subset of the signature of
+          the current sequent are considered. The signature of a
+          sequent is ...TODO
+
+   Action:
+          It closes the current sequent by repeated application
+          of rewriting steps (unless paramodulation is omitted),
+          hypothesis and lemmas in the library.
+
+   New sequents to prove:
+          None
+     _________________________________________________________
+
+7.7. clear
+
+   clear H[1] ... H[m]
+
+   Synopsis:
+          clear id [idâ¦]
+
+   Pre-conditions:
+          H[1] ... H[m] must be hypotheses of the current sequent
+          to prove.
+
+   Action:
+          It hides the hypotheses H[1] ... H[m] from the current
+          sequent.
+
+   New sequents to prove:
+          None
+     _________________________________________________________
+
+7.8. clearbody
+
+   clearbody H
+
+   Synopsis:
+          clearbody id
+
+   Pre-conditions:
+          H must be an hypothesis of the current sequent to
+          prove.
+
+   Action:
+          It hides the definiens of a definition in the current
+          sequent context. Thus the definition becomes an
+          hypothesis.
+
+   New sequents to prove:
+          None.
+     _________________________________________________________
+
+7.9. change
+
+   change patt with t
+
+   Synopsis:
+          change pattern with sterm
+
+   Pre-conditions:
+          Each subterm matched by the pattern must be convertible
+          with the term t disambiguated in the context of the
+          matched subterm.
+
+   Action:
+          It replaces the subterms of the current sequent matched
+          by patt with the new term t. For each subterm matched
+          by the pattern, t is disambiguated in the context of
+          the subterm.
+
+   New sequents to prove:
+          None.
+     _________________________________________________________
+
+7.10. constructor
+
+   constructor n
+
+   Synopsis:
+          constructor nat
+
+   Pre-conditions:
+          The conclusion of the current sequent must be an
+          inductive type or the application of an inductive type
+          with at least n constructors.
+
+   Action:
+          It applies the n-th constructor of the inductive type
+          of the conclusion of the current sequent.
+
+   New sequents to prove:
+          It opens a new sequent for each premise of the
+          constructor that can not be inferred by unification.
+          For more details, see the apply tactic.
+     _________________________________________________________
+
+7.11. contradiction
+
+   contradiction
+
+   Synopsis:
+          contradiction
+
+   Pre-conditions:
+          There must be in the current context an hypothesis of
+          type False.
+
+   Action:
+          It closes the current sequent by applying an hypothesis
+          of type False.
+
+   New sequents to prove:
+          None
+     _________________________________________________________
+
+7.12. cut
+
+   cut P as H
+
+   Synopsis:
+          cut sterm [as id]
+
+   Pre-conditions:
+          P must have type Prop.
+
+   Action:
+          It closes the current sequent.
+
+   New sequents to prove:
+          It opens two new sequents. The first one has an extra
+          hypothesis H:P. If H is omitted, the name of the
+          hypothesis is automatically generated. The second
+          sequent has conclusion P and hypotheses the hypotheses
+          of the current sequent to prove.
+     _________________________________________________________
+
+7.13. decompose
+
+   decompose (T[1] ... T[n]) H as H[1] ... H[m]
+
+   Synopsis:
+          decompose [( id⦠)] [id] [as idâ¦]
+
+   Pre-conditions:
+          H must inhabit one inductive type among T[1] ... T[n]
+          and the types of a predefined list.
+
+   Action:
+          Runs elim H H[1] ... H[m] , clears H and tries to run
+          itself recursively on each new identifier introduced by
+          elim in the opened sequents. If H is not provided tries
+          this operation on each premise in the current context.
+
+   New sequents to prove:
+          The ones generated by all the elim tactics run.
+     _________________________________________________________
+
+7.14. demodulate
+
+   demodulate
+
+   Synopsis:
+          demodulate
+
+   Pre-conditions:
+          None.
+
+   Action:
+          TODO
+
+   New sequents to prove:
+          None.
+     _________________________________________________________
+
+7.15. destruct
+
+   destruct p
+
+   Synopsis:
+          destruct sterm
+
+   Pre-conditions:
+          p must have type E[1] = E[2] where the two sides of the
+          equality are possibly applied constructors of an
+          inductive type.
+
+   Action:
+          The tactic recursively compare the two sides of the
+          equality looking for different constructors in
+          corresponding position. If two of them are found, the
+          tactic closes the current sequent by proving the
+          absurdity of p. Otherwise it adds a new hypothesis for
+          each leaf of the formula that states the equality of
+          the subformulae in the corresponding positions on the
+          two sides of the equality.
+
+   New sequents to prove:
+          None.
+     _________________________________________________________
+
+7.16. elim
+
+   elim t using th hyps
+
+   Synopsis:
+          elim sterm [using sterm] intros-spec
+
+   Pre-conditions:
+          t must inhabit an inductive type and th must be an
+          elimination principle for that inductive type. If th is
+          omitted the appropriate standard elimination principle
+          is chosen.
+
+   Action:
+          It proceeds by cases on the values of t, according to
+          the elimination principle th.
+
+   New sequents to prove:
+          It opens one new sequent for each case. The names of
+          the new hypotheses are picked by hyps, if provided. If
+          hyps specifies also a number of hypotheses that is less
+          than the number of new hypotheses for a new sequent,
+          then the exceeding hypothesis will be kept as
+          implications in the conclusion of the sequent.
+     _________________________________________________________
+
+7.17. elimType
+
+   elimType T using th hyps
+
+   Synopsis:
+          elimType sterm [using sterm] intros-spec
+
+   Pre-conditions:
+          T must be an inductive type.
+
+   Action:
+          TODO (severely bugged now).
+
+   New sequents to prove:
+          TODO
+     _________________________________________________________
+
+7.18. exact
+
+   exact p
+
+   Synopsis:
+          exact sterm
+
+   Pre-conditions:
+          The type of p must be convertible with the conclusion
+          of the current sequent.
+
+   Action:
+          It closes the current sequent using p.
+
+   New sequents to prove:
+          None.
+     _________________________________________________________
+
+7.19. exists
+
+   exists
+
+   Synopsis:
+          exists
+
+   Pre-conditions:
+          The conclusion of the current sequent must be an
+          inductive type or the application of an inductive type
+          with at least one constructor.
+
+   Action:
+          Equivalent to constructor 1.
+
+   New sequents to prove:
+          It opens a new sequent for each premise of the first
+          constructor of the inductive type that is the
+          conclusion of the current sequent. For more details,
+          see the constructor tactic.
+     _________________________________________________________
+
+7.20. fail
+
+   fail
+
+   Synopsis:
+          fail
+
+   Pre-conditions:
+          None.
+
+   Action:
+          This tactic always fail.
+
+   New sequents to prove:
+          N.A.
+     _________________________________________________________
+
+7.21. fold
+
+   fold red t patt
+
+   Synopsis:
+          fold reduction-kind sterm pattern
+
+   Pre-conditions:
+          The pattern must not specify the wanted term.
+
+   Action:
+          First of all it locates all the subterms matched by
+          patt. In the context of each matched subterm it
+          disambiguates the term t and reduces it to its red
+          normal form; then it replaces with t every occurrence
+          of the normal form in the matched subterm.
+
+   New sequents to prove:
+          None.
+     _________________________________________________________
+
+7.22. fourier
+
+   fourier
+
+   Synopsis:
+          fourier
+
+   Pre-conditions:
+          The conclusion of the current sequent must be a linear
+          inequation over real numbers taken from standard
+          library of Coq. Moreover the inequations in the
+          hypotheses must imply the inequation in the conclusion
+          of the current sequent.
+
+   Action:
+          It closes the current sequent by applying the Fourier
+          method.
+
+   New sequents to prove:
+          None.
+     _________________________________________________________
+
+7.23. fwd
+
+   fwd H as H[0] ... H[n]
+
+   Synopsis:
+          fwd id [as id [id]â¦]
+
+   Pre-conditions:
+          The type of H must be the premise of a forward
+          simplification theorem.
+
+   Action:
+          This tactic is under development. It simplifies the
+          current context by removing H using the following
+          methods: forward application (by lapply) of a suitable
+          simplification theorem, chosen automatically, of which
+          the type of H is a premise, decomposition (by
+          decompose), rewriting (by rewrite). H[0] ... H[n] are
+          passed to the tactics fwd invokes, as names for the
+          premise they introduce.
+
+   New sequents to prove:
+          The ones opened by the tactics fwd invokes.
+     _________________________________________________________
+
+7.24. generalize
+
+   generalize patt as H
+
+   Synopsis:
+          generalize pattern [as id]
+
+   Pre-conditions:
+          All the terms matched by patt must be convertible and
+          close in the context of the current sequent.
+
+   Action:
+          It closes the current sequent by applying a stronger
+          lemma that is proved using the new generated sequent.
+
+   New sequents to prove:
+          It opens a new sequent where the current sequent
+          conclusion G is generalized to âx.G{x/t} where {x/t} is
+          a notation for the replacement with x of all the
+          occurrences of the term t matched by patt. If patt
+          matches no subterm then t is defined as the wanted part
+          of the pattern.
+     _________________________________________________________
+
+7.25. id
+
+   id
+
+   Synopsis:
+          id
+
+   Pre-conditions:
+          None.
+
+   Action:
+          This identity tactic does nothing without failing.
+
+   New sequents to prove:
+          None.
+     _________________________________________________________
+
+7.26. intro
+
+   intro H
+
+   Synopsis:
+          intro [id]
+
+   Pre-conditions:
+          The conclusion of the sequent to prove must be an
+          implication or a universal quantification.
+
+   Action:
+          It applies the right introduction rule for implication,
+          closing the current sequent.
+
+   New sequents to prove:
+          It opens a new sequent to prove adding to the
+          hypothesis the antecedent of the implication and
+          setting the conclusion to the consequent of the
+          implicaiton. The name of the new hypothesis is H if
+          provided; otherwise it is automatically generated.
+     _________________________________________________________
+
+7.27. intros
+
+   intros hyps
+
+   Synopsis:
+          intros intros-spec
+
+   Pre-conditions:
+          If hyps specifies a number of hypotheses to introduce,
+          then the conclusion of the current sequent must be
+          formed by at least that number of imbricated
+          implications or universal quantifications.
+
+   Action:
+          It applies several times the right introduction rule
+          for implication, closing the current sequent.
+
+   New sequents to prove:
+          It opens a new sequent to prove adding a number of new
+          hypotheses equal to the number of new hypotheses
+          requested. If the user does not request a precise
+          number of new hypotheses, it adds as many hypotheses as
+          possible. The name of each new hypothesis is either
+          popped from the user provided list of names, or it is
+          automatically generated when the list is (or becomes)
+          empty.
+     _________________________________________________________
+
+7.28. inversion
+
+   inversion t
+
+   Synopsis:
+          inversion sterm
+
+   Pre-conditions:
+          The type of the term t must be an inductive type or the
+          application of an inductive type.
+
+   Action:
+          It proceeds by cases on t paying attention to the
+          constraints imposed by the actual "right arguments" of
+          the inductive type.
+
+   New sequents to prove:
+          It opens one new sequent to prove for each case in the
+          definition of the type of t. With respect to a simple
+          elimination, each new sequent has additional hypotheses
+          that states the equalities of the "right parameters" of
+          the inductive type with terms originally present in the
+          sequent to prove.
+     _________________________________________________________
+
+7.29. lapply
+
+   lapply linear depth=d t to t[1], ..., t[n] as H
+
+   Synopsis:
+          lapply [linear] [depth=nat] sterm [to sterm [,stermâ¦]
+          ] [as id]
+
+   Pre-conditions:
+          t must have at least d independent premises and n must
+          not be greater than d.
+
+   Action:
+          Invokes letin H â (t ? ... ?) with enough ?'s to reach
+          the d-th independent premise of t (d is maximum if
+          unspecified). Then istantiates (by apply) with t[1],
+          ..., t[n] the ?'s corresponding to the first n
+          independent premises of t. Usually the other ?'s
+          preceding the n-th independent premise of t are
+          istantiated as a consequence. If the linear flag is
+          specified and if t, t[1], ..., t[n] are (applications
+          of) premises in the current context, they are cleared.
+
+   New sequents to prove:
+          The ones opened by the tactics lapply invokes.
+     _________________________________________________________
+
+7.30. left
+
+   left
+
+   Synopsis:
+          left
+
+   Pre-conditions:
+          The conclusion of the current sequent must be an
+          inductive type or the application of an inductive type
+          with at least one constructor.
+
+   Action:
+          Equivalent to constructor 1.
+
+   New sequents to prove:
+          It opens a new sequent for each premise of the first
+          constructor of the inductive type that is the
+          conclusion of the current sequent. For more details,
+          see the constructor tactic.
+     _________________________________________________________
+
+7.31. letin
+
+   letin x â t
+
+   Synopsis:
+          letin id â sterm
+
+   Pre-conditions:
+          None.
+
+   Action:
+          It adds to the context of the current sequent to prove
+          a new definition x â t.
+
+   New sequents to prove:
+          None.
+     _________________________________________________________
+
+7.32. normalize
+
+   normalize patt
+
+   Synopsis:
+          normalize pattern
+
+   Pre-conditions:
+          None.
+
+   Action:
+          It replaces all the terms matched by patt with their
+          βδιζ-normal form.
+
+   New sequents to prove:
+          None.
+     _________________________________________________________
+
+7.33. reduce
+
+   reduce patt
+
+   Synopsis:
+          reduce pattern
+
+   Pre-conditions:
+          None.
+
+   Action:
+          It replaces all the terms matched by patt with their
+          βδιζ-normal form.
+
+   New sequents to prove:
+          None.
+     _________________________________________________________
+
+7.34. reflexivity
+
+   reflexivity
+
+   Synopsis:
+          reflexivity
+
+   Pre-conditions:
+          The conclusion of the current sequent must be t=t for
+          some term t
+
+   Action:
+          It closes the current sequent by reflexivity of
+          equality.
+
+   New sequents to prove:
+          None.
+     _________________________________________________________
+
+7.35. replace
+
+   change patt with t
+
+   Synopsis:
+          replace pattern with sterm
+
+   Pre-conditions:
+          None.
+
+   Action:
+          It replaces the subterms of the current sequent matched
+          by patt with the new term t. For each subterm matched
+          by the pattern, t is disambiguated in the context of
+          the subterm.
+
+   New sequents to prove:
+          For each matched term t' it opens a new sequent to
+          prove whose conclusion is t'=t.
+     _________________________________________________________
+
+7.36. rewrite
+
+   rewrite dir p patt
+
+   Synopsis:
+          rewrite [<|>] sterm pattern
+
+   Pre-conditions:
+          p must be the proof of an equality, possibly under some
+          hypotheses.
+
+   Action:
+          It looks in every term matched by patt for all the
+          occurrences of the left hand side of the equality that
+          p proves (resp. the right hand side if dir is <). Every
+          occurence found is replaced with the opposite side of
+          the equality.
+
+   New sequents to prove:
+          It opens one new sequent for each hypothesis of the
+          equality proved by p that is not closed by unification.
+     _________________________________________________________
+
+7.37. right
+
+   right
+
+   Synopsis:
+          right
+
+   Pre-conditions:
+          The conclusion of the current sequent must be an
+          inductive type or the application of an inductive type
+          with at least two constructors.
+
+   Action:
+          Equivalent to constructor 2.
+
+   New sequents to prove:
+          It opens a new sequent for each premise of the second
+          constructor of the inductive type that is the
+          conclusion of the current sequent. For more details,
+          see the constructor tactic.
+     _________________________________________________________
+
+7.38. ring
+
+   ring
+
+   Synopsis:
+          ring
+
+   Pre-conditions:
+          The conclusion of the current sequent must be an
+          equality over Coq's real numbers that can be proved
+          using the ring properties of the real numbers only.
+
+   Action:
+          It closes the current sequent veryfying the equality by
+          means of computation (i.e. this is a reflexive tactic,
+          implemented exploiting the "two level reasoning"
+          technique).
+
+   New sequents to prove:
+          None.
+     _________________________________________________________
+
+7.39. simplify
+
+   simplify patt
+
+   Synopsis:
+          simplify pattern
+
+   Pre-conditions:
+          None.
+
+   Action:
+          It replaces all the terms matched by patt with other
+          convertible terms that are supposed to be simpler.
+
+   New sequents to prove:
+          None.
+     _________________________________________________________
+
+7.40. split
+
+   split
+
+   Synopsis:
+          split
+
+   Pre-conditions:
+          The conclusion of the current sequent must be an
+          inductive type or the application of an inductive type
+          with at least one constructor.
+
+   Action:
+          Equivalent to constructor 1.
+
+   New sequents to prove:
+          It opens a new sequent for each premise of the first
+          constructor of the inductive type that is the
+          conclusion of the current sequent. For more details,
+          see the constructor tactic.
+     _________________________________________________________
+
+7.41. subst
+
+   subst
+
+   Synopsis:
+          subst
+
+   Pre-conditions:
+          None.
+
+   Action:
+          For each premise of the form H: x = t or H: t = x where
+          x is a local variable and t does not depend on x, the
+          tactic rewrites H wherever x appears clearing H and x
+          afterwards.
+
+   New sequents to prove:
+          The one opened by the applied tactics.
+     _________________________________________________________
+
+7.42. symmetry
+
+   The tactic symmetry
+
+   symmetry
+
+   Synopsis:
+          symmetry
+
+   Pre-conditions:
+          The conclusion of the current proof must be an
+          equality.
+
+   Action:
+          It swaps the two sides of the equalityusing the
+          symmetric property.
+
+   New sequents to prove:
+          None.
+     _________________________________________________________
+
+7.43. transitivity
+
+   transitivity t
+
+   Synopsis:
+          transitivity sterm
+
+   Pre-conditions:
+          The conclusion of the current proof must be an
+          equality.
+
+   Action:
+          It closes the current sequent by transitivity of the
+          equality.
+
+   New sequents to prove:
+          It opens two new sequents l=t and t=r where l and r are
+          the left and right hand side of the equality in the
+          conclusion of the current sequent to prove.
+     _________________________________________________________
+
+7.44. unfold
+
+   unfold t patt
+
+   Synopsis:
+          unfold [sterm] pattern
+
+   Pre-conditions:
+          None.
+
+   Action:
+          It finds all the occurrences of t (possibly applied to
+          arguments) in the subterms matched by patt. Then it
+          δ-expands each occurrence, also performing
+          β-reduction of the obtained term. If t is omitted it
+          defaults to each subterm matched by patt.
+
+   New sequents to prove:
+          None.
+     _________________________________________________________
+
+7.45. whd
+
+   whd patt
+
+   Synopsis:
+          whd pattern
+
+   Pre-conditions:
+          None.
+
+   Action:
+          It replaces all the terms matched by patt with their
+          βδιζ-weak-head normal form.
+
+   New sequents to prove:
+          None.
+     _________________________________________________________
+
+Chapter 8. Other commands
+
+8.1. alias
+
+   alias id "s" = "def"
+
+   alias symbol "s" (instance n) = "def"
+
+   alias num (instance n) = "def"
+
+   Synopsis:
+          alias [id qstring = qstring | symbol qstring [(instance
+          nat)] = qstring | num [(instance nat)] = qstring ]
+
+   Action:
+          Used to give an hint to the disambiguating parser. When
+          the parser is faced to the identifier (or symbol) s or
+          to any number, it will prefer interpretations that "map
+          s (or the number) to def". For identifiers, "def" is
+          the URI of the interpretation. E.g.:
+          cic:/matita/nat/nat.ind#xpointer(1/1/1) for the first
+          constructor of the first inductive type defined in the
+          block of inductive type(s) cic:/matita/nat/nat.ind. For
+          symbols and numbers, "def" is the label used to mark
+          the wanted interpretation.
+
+          When a symbol or a number occurs several times in the
+          term to be parsed, it is possible to give an hint only
+          for the instance n. When the instance is omitted, the
+          hint is valid for every occurrence.
+
+          Hints are automatically inserted in the script by
+          Matita every time the user is interactively asked a
+          question to disambiguate a term. This way the user
+          won't be posed the same question twice when the script
+          will be executed again.
+     _________________________________________________________
+
+8.2. check
+
+   check t
+
+   Synopsis:
+          check term
+
+   Action:
+          Opens a CIC browser window that shows t together with
+          its type. The command is immediately removed from the
+          script.
+     _________________________________________________________
+
+8.3. coercion
+
+   coercion u
+
+   Synopsis:
+          coercion uri
+
+   Action:
+          Declares u as an implicit coercion from the type of its
+          last argument (source) to its codomain (target). Every
+          time a term x of type source is used with expected type
+          target, Matita automatically replaces x with (u ? â¦ ?
+          x) to avoid a typing error.
+
+          Implicit coercions are not displayed to the user: (u ?
+          â¦ ? x) is rendered simply as x.
+
+          When a coercion u is declared from source s to target t
+          and there is already a coercion u' of target s or
+          source t, a composite implicit coercion is
+          automatically computed by Matita.
+     _________________________________________________________
+
+8.4. default
+
+   default "s" u[1] â¦ u[n]
+
+   Synopsis:
+          default qstring uri [uri]â¦
+
+   Action:
+          It registers a cluster of related definitions and
+          theorems to be used by tactics and the rendering
+          engine. Some functionalities of Matita are not
+          available when some clusters have not been registered.
+          Overloading a cluster registration is possible: the
+          last registration will be the default one, but the
+          previous ones are still in effect.
+
+          s is an identifier of the cluster and u[1] â¦ u[n] are
+          the URIs of the definitions and theorems of the
+          cluster. The number n of required URIs depends on the
+          cluster. The following clusters are supported.
+
+          Table 8-1. clusters
+
+   name expected object for 1st URI expected object for 2nd URI
+   expected object for 3rd URI expected object for 4th URI
+   expected object for 5th URI
+   equality an inductive type (say, of type eq) of type âA:Type.A
+   â Prop with one family parameter and one constructor of type
+   âx:A.eq A x a theorem of type âA.âx,y:A.eq A x y â eq A y x a
+   theorem of type âA.âx,y,z:A.eq A x y â eq A y z â eq A x z
+   âA.âa.â P:A â Prop.P x â ây.eq A x y â P y âA.âa.â P:A â
+   Prop.P x â ây.eq A y x â P y
+   true an inductive type of type Prop with only one constructor
+   that has no arguments
+   false an inductive type of type Prop without constructors
+
+   absurd a theorem of type âA:Prop.âB:Prop.A â Not A â B
+     _________________________________________________________
+
+8.5. hint
+
+   hint
+
+   Synopsis:
+          hint
+
+   Action:
+          Displays a list of theorems that can be successfully
+          applied to the current selected sequent. The command is
+          removed from the script, but the window that displays
+          the theorems allow to add to the script the application
+          of the selected theorem.
+     _________________________________________________________
+
+8.6. include
+
+   include "s"
+
+   Synopsis:
+          include qstring
+
+   Action:
+          Every coercion, notation and interpretation that was
+          active when the file s was compiled last time is made
+          active. The same happens for declarations of default
+          definitions and theorems and disambiguation hints
+          (aliases). On the contrary, theorem and definitions
+          declared in a file can be immediately used without
+          including it.
+
+          The file s is automatically compiled if it is not
+          compiled yet and if it is handled by a development.
+     _________________________________________________________
+
+8.7. include' "s"
+
+   Synopsis:
+          include' qstring
+
+   Action:
+          Not documented (TODO), do not use it.
+     _________________________________________________________
+
+8.8. set
+
+   set "baseuri" "s"
+
+   Synopsis:
+          set qstring qstring
+
+   Action:
+          Sets to s the baseuri of all the theorems and
+          definitions stated in the current file. The baseuri
+          should be a/b/c/foo if the file is named foo and it is
+          in the subtree a/b/c of the current development. This
+          requirement is not enforced, but it could be in the
+          future.
+
+          Currently, baseuri is the only property that can be set
+          even if the parser accepts arbitrary property names.
+     _________________________________________________________
+
+8.9. whelp
+
+   whelp locate "s"
+
+   whelp hint t
+
+   whelp elim t
+
+   whelp match t
+
+   whelp instance t
+
+   Synopsis:
+          whelp [locate qstring | hint term | elim term | match
+          term | instance term ]
+
+   Action:
+          Performs the corresponding query, showing the result in
+          the CIC browser. The command is removed from the
+          script.
+     _________________________________________________________
+
+8.10. qed
+
+   Synopsis:
+          qed
+
+   Action:
+          Saves and indexes the current interactive theorem or
+          definition. In order to do this, the set of sequents
+          still to be proved must be empty.
+     _________________________________________________________
+
+Chapter 9. License
+
+   Both Matita and this document are part of HELM, an
+   Hypertextual, Electronic Library of Mathematics, developed at
+   the Computer Science Department, University of Bologna, Italy.
+
+   HELM is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of
+   the License, or (at your option) any later version.
+
+   HELM is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public
+   License along with HELM; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+   02110-1301 USA. A copy of the GNU General Public License is
+   available at this link.
+
+  Notes
+
+   [1]
+
+   The name of the Development should be the name of the
+   directory in which it lives. This is not a requirement, but
+   the makefile automatically generated by matita in the root
+   directory of the development will eventually generate a new
+   Development with a name that follows this convention. Having
+   more than one development for the same set of files is not an
+   issue.
diff --git a/helm/www/matita/docs/manual-0.5.9/matita.xml b/helm/www/matita/docs/manual-0.5.9/matita.xml
new file mode 100644 (file)
index 0000000..aa45a80
--- /dev/null
@@ -0,0 +1,198 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
+"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+
+  <!ENTITY legal SYSTEM "legal.xml">
+  <!ENTITY license SYSTEM "sec_license.xml">
+  <!ENTITY install SYSTEM "sec_install.xml">
+  <!ENTITY gettingstarted SYSTEM "sec_gettingstarted.xml">
+  <!ENTITY intro SYSTEM "sec_intro.xml">
+  <!ENTITY terms SYSTEM "sec_terms.xml">
+  <!ENTITY tacticals SYSTEM "sec_tacticals.xml">
+  <!ENTITY tactics SYSTEM "sec_tactics.xml">
+  <!ENTITY declarative_tactics SYSTEM "sec_declarative_tactics.xml">
+  <!ENTITY othercommands SYSTEM "sec_commands.xml">
+  <!ENTITY usernotation SYSTEM "sec_usernotation.xml">
+
+  <!ENTITY tacticref SYSTEM "tactics_quickref.xml">
+  <!ENTITY declarativetacticref SYSTEM "declarative_tactics_quickref.xml">
+
+  <!ENTITY manrevision SYSTEM "version.txt">
+  <!ENTITY date "12/07/2006">
+  <!ENTITY app "<application>Matita</application>">
+  <!ENTITY appname "Matita">
+  <!ENTITY appversion SYSTEM "version.txt">
+
+  <!ENTITY TODO "<emphasis>TODO</emphasis>">
+  <!ENTITY MYSQL "<application> <ulink type='http'
+      url='http://www.mysql.com'>MySQL</ulink> </application>">
+  <!ENTITY Sqlite "<application> <ulink type='http'
+      url='http://www.sqlite.org'>Sqlite</ulink> </application>">
+
+  <!-- Entities for BNF -->
+  <!ENTITY id "<emphasis><link linkend='grammar.id'>id</link></emphasis>">
+  <!ENTITY uri "<emphasis><link linkend='grammar.uri'>uri</link></emphasis>">
+  <!ENTITY char "<emphasis><link linkend='grammar.char'>char</link></emphasis>">
+  <!ENTITY uri-step "<emphasis><link linkend='grammar.uri-step'>uri-step</link></emphasis>">
+  <!ENTITY nat "<emphasis><link linkend='grammar.nat'>nat</link></emphasis>">
+  <!ENTITY term "<emphasis><link linkend='grammar.term'>term</link></emphasis>">
+  <!ENTITY rec_def "<emphasis><link linkend='grammar.rec_def'>rec_def</link></emphasis>">
+  <!ENTITY match_pattern "<emphasis><link linkend='grammar.match_pattern'>match_pattern</link></emphasis>">
+  <!ENTITY match_branch "<emphasis><link linkend='grammar.match_branch'>match_branch</link></emphasis>">
+  <!ENTITY args "<emphasis><link linkend='grammar.args'>args</link></emphasis>">
+  <!ENTITY args2 "<emphasis><link linkend='grammar.args2'>args2</link></emphasis>">
+  <!ENTITY sterm "<emphasis><link linkend='grammar.sterm'>sterm</link></emphasis>">
+  <!ENTITY intros-spec "<emphasis><link linkend='grammar.intros-spec'>intros-spec</link></emphasis>">
+  <!ENTITY pattern "<emphasis><link linkend='grammar.pattern'>pattern</link></emphasis>">
+  <!ENTITY reduction-kind "<emphasis><link linkend='grammar.reduction-kind'>reduction-kind</link></emphasis>">
+  <!ENTITY path "<emphasis><link linkend='grammar.path'>path</link></emphasis>">
+  <!ENTITY proofscript "<emphasis><link linkend='grammar.proofscript'>proof-script</link></emphasis>">
+  <!ENTITY proofstep "<emphasis><link linkend='grammar.proofstep'>proof-step</link></emphasis>">
+  <!ENTITY tactic "<emphasis><link linkend='grammar.tactic'>tactic</link></emphasis>">
+  <!ENTITY LCFtactical "<emphasis><link linkend='grammar.LCFtactical'>LCF-tactical</link></emphasis>">
+  <!ENTITY qstring "<emphasis><link linkend='grammar.qstring'>qstring</link></emphasis>">
+  <!ENTITY interpretation "<emphasis><link linkend='grammar.interpretation'>interpretation</link></emphasis>">
+  <!ENTITY autoparams "<emphasis><link linkend='grammar.autoparams'>auto_params</link></emphasis>">
+  <!ENTITY justification "<emphasis><link linkend='grammar.justification'>justification</link></emphasis>">
+  <!ENTITY simpleautoparam "<emphasis><link linkend='grammar.simpleautoparam'>simple_auto_param</link></emphasis>">
+  <!ENTITY inlineparams "<emphasis><link linkend='grammar.inlineparams'>inline_params</link></emphasis>">  
+  <!ENTITY inlineparam "<emphasis><link linkend='grammar.inlineparam'>inline_param</link></emphasis>">  
+  <!ENTITY interpretation_argument "<emphasis><link linkend='grammar.interpretation_argument'>interpretation_argument</link></emphasis>">
+  <!ENTITY interpretation_rhs "<emphasis><link linkend='grammar.interpretation_rhs'>interpretation_rhs</link></emphasis>">
+  <!ENTITY csymbol "<emphasis><link linkend='grammar.csymbol'>csymbol</link></emphasis>">
+  <!ENTITY usage "<emphasis><link linkend='grammar.usage'>usage</link></emphasis>">
+  <!ENTITY notation_lhs "<emphasis><link linkend='grammar.notation_lhs'>notation_lhs</link></emphasis>">
+  <!ENTITY layout "<emphasis><link linkend='grammar.layout'>layout</link></emphasis>">
+  <!ENTITY literal "<emphasis><link linkend='grammar.literal'>literal</link></emphasis>">
+  <!ENTITY notation_rhs "<emphasis><link linkend='grammar.notation_rhs'>notation_rhs</link></emphasis>">
+  <!ENTITY associativity "<emphasis><link linkend='grammar.associativity'>associativity</link></emphasis>">
+  <!ENTITY symbol "<emphasis><link linkend='grammar.symbol'>symbol</link></emphasis>">
+  <!ENTITY level2_meta "<emphasis><link linkend='grammar.level2_meta'>level2_meta</link></emphasis>">
+  <!ENTITY unparsed_ast "<emphasis><link linkend='grammar.unparsed_ast'>unparsed_ast</link></emphasis>">
+  <!ENTITY unparsed_meta "<emphasis><link linkend='grammar.unparsed_meta'>unparsed_meta</link></emphasis>">
+  <!ENTITY enriched_term "<emphasis><link linkend='grammar.enriched_term'>enriched_term</link></emphasis>">
+]>
+
+<?yelp:chunk-depth 3?>
+
+<book id="matita_manual" lang="en">
+
+  <title>&app; V&appversion; User Manual (rev. &manrevision;)</title>
+
+  <bookinfo>
+
+    <copyright>
+      <year>2006</year>
+      <holder>The HELM team.</holder>
+    </copyright>
+
+    <authorgroup> 
+      <author> 
+       <firstname>Andrea</firstname> 
+       <surname>Asperti</surname> 
+       <affiliation> 
+         <address> <email>asperti@cs.unibo.it</email> </address> 
+       </affiliation> 
+      </author> 
+      <author> 
+       <firstname>Claudio</firstname> 
+       <surname>Sacerdoti Coen</surname> 
+       <affiliation> 
+         <address> <email>sacerdot@cs.unibo.it</email> </address> 
+       </affiliation> 
+      </author> 
+      <author> 
+       <firstname>Ferruccio</firstname> 
+       <surname>Guidi</surname> 
+       <affiliation> 
+         <address> <email>fguidi@cs.unibo.it</email> </address> 
+       </affiliation> 
+      </author>       
+      <author> 
+       <firstname>Enrico</firstname> 
+       <surname>Tassi</surname> 
+       <affiliation> 
+         <address> <email>tassi@cs.unibo.it</email> </address> 
+       </affiliation> 
+      </author> 
+      <author> 
+       <firstname>Stefano</firstname> 
+       <surname>Zacchiroli</surname> 
+       <affiliation> 
+         <address> <email>zacchiro@cs.unibo.it</email> </address> 
+       </affiliation> 
+      </author>
+    </authorgroup>
+
+    <legalnotice>
+      <para> Both &appname; and this document are free software, you can
+       redistribute them and/or modify them under the terms of the GNU General
+       Public License as published by the Free Software Foundation.  See <xref
+         linkend="sec_license" /> for more information. </para>
+    </legalnotice>
+
+    <revhistory>
+      <revision>
+       <revnumber>&manrevision;</revnumber>
+       <date>&date;</date>
+      </revision>
+    </revhistory>
+
+  </bookinfo>
+
+<!-- ============= Document Body ============================= -->
+
+&intro;
+&install;
+&gettingstarted;
+&terms;
+&usernotation;
+&tacticals;
+&tactics;
+&declarative_tactics;
+&othercommands;
+&license;
+
+</book>
+
+<!-- CSC: valid element tags
+<sect1 id="intro"> <title>Introduction</title> ...
+<sect2 id="what"> <title>What is Matita?</title>
+<para>
+<note> <title>Note:</title> <para> ...
+<footnote> <para> ...
+<itemizedlist mark="opencircle">
+    <listitem>
+     <para>
+       The computer player for Iagno is easy to beat.
+     </para>
+    </listitem>
+ </itemizedlist>
+
+<ulink type="http" url="http://www.gnome.org/gdp">
+<email>itp@gnu.org</email>
+<application>Matita</application>
+<command>iagno</command> on the command line
+<citetitle>Othello</citetitle>
+
+<guimenuitem>Iagno</guimenuitem>
+<guisubmenu>Games</guisubmenu>
+<guibutton>none</guibutton>
+<menuchoice> <guimenu>Settings</guimenu> <guisubmenu>Preferences </guisubmenu> </menuchoice>
+
+<xref linkend="start-shot"/>. 
+<figure id="start-shot">
+ <title>Starting Position</title>
+ <screenshot>
+   <mediaobject> 
+   <imageobject>
+ <imagedata fileref="figures/START.png" format="PNG" srccredit="Eric Baudais"/>
+  </imageobject>
+   <textobject> 
+     <phrase>Screenshot of the starting position.</phrase> 
+   </textobject> 
+ </mediaobject>
+ </screenshot>
+</figure>
+
+-->
diff --git a/helm/www/matita/docs/manual-0.5.9/pdf-stamp b/helm/www/matita/docs/manual-0.5.9/pdf-stamp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/helm/www/matita/docs/manual-0.5.9/proofs.html b/helm/www/matita/docs/manual-0.5.9/proofs.html
new file mode 100644 (file)
index 0000000..ebcdda5
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Proofs</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_terms.html" title="Chapter 4. Syntax" /><link rel="prev" href="axiom_definition_declaration.html" title="Definitions and declarations" /><link rel="next" href="tacticargs.html" title="Tactic arguments" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Proofs</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="axiom_definition_declaration.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Syntax</th><td width="20%" align="right"> <a accesskey="n" href="tacticargs.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="proofs"></a>Proofs</h2></div></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="theorem"></a><span class="bold"><strong>theorem</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>[<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>] [<span class="bold"><strong>≝</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]</h3></div></div></div><p><strong class="userinput"><code>theorem f: P ≝ p</code></strong></p><p>Proves a new theorem <span class="command"><strong>f</strong></span> whose thesis is
+     <span class="command"><strong>P</strong></span>.</p><p>If <span class="command"><strong>p</strong></span> is provided, it must be a proof term for
+     <span class="command"><strong>P</strong></span>. Otherwise an interactive proof is started.</p><p><span class="command"><strong>P</strong></span> can be omitted only if the proof is not
+     interactive.</p><p>Proving a theorem already proved in the library is an error.
+     To provide an alternative name and proof for the same theorem, use
+     <span class="command"><strong>variant f: P ≝ p</strong></span>.</p><p>A warning is raised if the name of the theorem cannot be obtained
+      by mangling the name of the constants in its thesis.</p><p>Notice that the command is equivalent to <span class="command"><strong>definition f: T ≝ t</strong></span>.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="variant"></a><span class="bold"><strong>variant</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span><span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="bold"><strong>≝</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span></h3></div></div></div><p><strong class="userinput"><code>variant f: T ≝ t</code></strong></p><p>Same as <span class="command"><strong>theorem f: T ≝ t</strong></span>, but it does not
+     complain if the theorem has already been proved. To be used to give
+     an alternative name or proof to a theorem.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="lemma"></a><span class="bold"><strong>lemma</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>[<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>] [<span class="bold"><strong>≝</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]</h3></div></div></div><p><strong class="userinput"><code>lemma f: T ≝ t</code></strong></p><p>Same as <span class="command"><strong>theorem f: T ≝ t</strong></span></p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="fact"></a><span class="bold"><strong>fact</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>[<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>] [<span class="bold"><strong>≝</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]</h3></div></div></div><p><strong class="userinput"><code>fact f: T ≝ t</code></strong></p><p>Same as <span class="command"><strong>theorem f: T ≝ t</strong></span></p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="remark"></a><span class="bold"><strong>remark</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>[<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>] [<span class="bold"><strong>≝</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]</h3></div></div></div><p><strong class="userinput"><code>remark f: T ≝ t</code></strong></p><p>Same as <span class="command"><strong>theorem f: T ≝ t</strong></span></p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="axiom_definition_declaration.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_terms.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tacticargs.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Definitions and declarations </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Tactic arguments</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/proofstatus.html b/helm/www/matita/docs/manual-0.5.9/proofstatus.html
new file mode 100644 (file)
index 0000000..ca08ef6
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The proof status</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tacticals.html" title="Chapter 6. Tacticals" /><link rel="prev" href="sec_tacticals.html" title="Chapter 6. Tacticals" /><link rel="next" href="tacticals.html" title="Tacticals" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The proof status</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="sec_tacticals.html">Prev</a> </td><th width="60%" align="center">Chapter 6. Tacticals</th><td width="20%" align="right"> <a accesskey="n" href="tacticals.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="proofstatus"></a>The proof status</h2></div></div></div><p>
+   During an interactive proof, the proof status is made of
+   the set of sequents to prove and the partial proof built so far.
+  </p><p>The partial proof can be <a class="link" href="cicbrowser.html#aboutproof" title="Looking at a proof under development">inspected</a>
+   on demand in the CIC browser. It will be shown in pseudo-natural language
+   produced on the fly from the proof term.</p><p>The set of sequents to prove is shown in the notebook of the
+   <a class="link" href="authoring.html#authoringinterface" title="The authoring interface">authoring interface</a>, in the
+   top-right corner of the main window of Matita. Each tab shows a different
+   sequent, named with a question mark followed by a number. The current
+   role of the sequent, according to the following description, is also
+   shown in the tab tag.
+  </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p><a id="selectedsequents"></a>
+     <span class="bold"><strong>Selected sequents</strong></span>
+      (name in boldface, e.g. <span class="bold"><strong>?3</strong></span>).
+      The next tactic will be applied to every selected sequent, producing
+      new selected sequents. <a class="link" href="tacticals.html" title="Tacticals">Tacticals</a>
+      such as branching ("<span class="bold"><strong>[</strong></span>")
+      or "<span class="bold"><strong>focus</strong></span>" can be used
+      to change the set of selected sequents.
+    </p></li><li class="listitem"><p><a id="siblingsequents"></a>
+     <span class="bold"><strong>Sibling sequents</strong></span>
+     (name prefixed by a vertical bar and their position, e.g.
+      |<sub>3</sub>?2). When the set of selected sequents
+     has more than one element, the user can decide to focus in turn on each
+     of them. The branching <a class="link" href="tacticals.html" title="Tacticals">tactical</a>
+     ("<span class="bold"><strong>[</strong></span>") selects the first
+     sequent only, marking every previously selected sequent as a sibling
+     sequent. Each sibling sequent is given a different position. The
+     tactical "<span class="bold"><strong>2,3:</strong></span>" can be used to
+     select one or more sibling sequents, different from the one proposed,
+     according to their position. Once the user starts to work on the
+     selected sibling sequents it becomes impossible to select a new
+     set of siblings until the ("<span class="bold"><strong>|</strong></span>")
+     tactical is used to end work on the current one.
+    </p></li><li class="listitem"><p><a id="solvedsequents"></a>
+     <span class="bold"><strong>Automatically solved sibling sequents</strong></span>
+     (name strokethrough, e.g. |<sub>3</sub><span class="strikethrough">?2</span>).
+     Sometimes a tactic can close by side effects a sibling sequent the
+     user has not selected yet. The sequent is left in the automatically
+     solved status in order for the user to explicitly accept
+     (using the "<span class="bold"><strong>skip</strong></span>"
+     <a class="link" href="tacticals.html" title="Tacticals">tactical</a>) the automatic
+     instantiation in the proof script. This way the correspondence between
+     the number of branches in the proof script and the number of sequents
+     generated in the proof is preserved.
+    </p></li></ol></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="sec_tacticals.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tacticals.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tacticals.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 6. Tacticals </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Tacticals</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/quickref-stamp b/helm/www/matita/docs/manual-0.5.9/quickref-stamp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/helm/www/matita/docs/manual-0.5.9/scripts/fix-symbols.sh b/helm/www/matita/docs/manual-0.5.9/scripts/fix-symbols.sh
new file mode 100755 (executable)
index 0000000..eb49148
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+sed -i 's/\\&\\#x225d;/\\ensuremath{\\stackrel{def}{=}}/g' $1
+sed -i 's/\\&\\#x3a9;/\\ensuremath{\\Omega}/g' $1
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_commands.html b/helm/www/matita/docs/manual-0.5.9/sec_commands.html
new file mode 100644 (file)
index 0000000..17d7aa8
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 9. Other commands</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="prev" href="tac_bytermweproved.html" title="we proved" /><link rel="next" href="command_check.html" title="check" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 9. Other commands</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_bytermweproved.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="command_check.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="sec_commands"></a>Chapter 9. Other commands</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="sect1"><a href="sec_commands.html#command_alias">alias</a></span></dt><dt><span class="sect1"><a href="command_check.html">check</a></span></dt><dt><span class="sect1"><a href="command_eval.html">eval</a></span></dt><dt><span class="sect1"><a href="command_prefer_coercion.html">prefer coercion</a></span></dt><dt><span class="sect1"><a href="command_coercion.html">coercion</a></span></dt><dt><span class="sect1"><a href="command_default.html">default</a></span></dt><dt><span class="sect1"><a href="command_hint.html">hint</a></span></dt><dt><span class="sect1"><a href="command_include.html">include</a></span></dt><dt><span class="sect1"><a href="command_include_first.html">include' "s"</a></span></dt><dt><span class="sect1"><a href="command_whelp.html">whelp</a></span></dt><dt><span class="sect1"><a href="command_qed.html">qed</a></span></dt><dt><span class="sect1"><a href="command_inline.html">inline</a></span></dt><dd><dl><dt><span class="sect2"><a href="command_inline.html#inline-params">inline-params</a></span></dt></dl></dd></dl></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="command_alias"></a>alias</h2></div></div></div><p><strong class="userinput"><code>alias id "s" = "def"</code></strong></p><p><strong class="userinput"><code>alias symbol "s" (instance n) = "def"</code></strong></p><p><strong class="userinput"><code>alias num (instance n) = "def"</code></strong></p><p>
+     </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>alias</strong></span>
+            [<span class="bold"><strong>id</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.qstring">qstring</a></em></span> <span class="bold"><strong>=</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.qstring">qstring</a></em></span>
+            | <span class="bold"><strong>symbol</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.qstring">qstring</a></em></span> [<span class="bold"><strong>(instance</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span><span class="bold"><strong>)</strong></span>] <span class="bold"><strong>=</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.qstring">qstring</a></em></span>
+            | <span class="bold"><strong>num</strong></span> [<span class="bold"><strong>(instance</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span><span class="bold"><strong>)</strong></span>] <span class="bold"><strong>=</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.qstring">qstring</a></em></span>
+            ]
+           </p></dd><dt><span class="term">Action:</span></dt><dd><p>Used to give an hint to the disambiguating parser.
+            When the parser is faced to the identifier (or symbol)
+            <span class="command"><strong>s</strong></span> or to any number, it will prefer
+            interpretations that "map <span class="command"><strong>s</strong></span> (or the
+            number) to <span class="command"><strong>def</strong></span>". For identifiers,
+            "def" is the URI of the interpretation.
+            E.g.: <span class="command"><strong>cic:/matita/nat/nat.ind#xpointer(1/1/1)</strong></span>
+            for the first constructor of the first inductive type defined
+            in the block of inductive type(s)
+            <span class="command"><strong>cic:/matita/nat/nat.ind</strong></span>.
+            For symbols and numbers, "def" is the label used to
+            mark the wanted
+            <a class="link" href="ch05s02.html#interpretation">interpretation</a>.
+           </p><p>When a symbol or a number occurs several times in the
+           term to be parsed, it is possible to give an hint only for the
+           instance <span class="command"><strong>n</strong></span>. When the instance is omitted,
+           the hint is valid for every occurrence.
+          </p><p>
+           Hints are automatically inserted in the script by Matita every
+           time the user is interactively asked a question to disambiguate
+           a term. This way the user won't be posed the same question twice
+           when the script will be executed again.</p></dd></dl></div><p>
+   </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_bytermweproved.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="command_check.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">we proved </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> check</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_commands.xml b/helm/www/matita/docs/manual-0.5.9/sec_commands.xml
new file mode 100644 (file)
index 0000000..7e22f33
--- /dev/null
@@ -0,0 +1,588 @@
+
+<!-- ============ Commands ====================== -->
+<chapter id="sec_commands">
+ <title>Other commands</title>
+ <sect1 id="command_alias">
+   <title>alias</title>
+   <para><userinput>alias id &quot;s&quot; = &quot;def&quot;</userinput></para>
+   <para><userinput>alias symbol &quot;s&quot; (instance n) = &quot;def&quot;</userinput></para>
+   <para><userinput>alias num (instance n) = &quot;def&quot;</userinput></para>
+   <para>
+     <variablelist>
+       <varlistentry>
+         <term>Synopsis:</term>
+         <listitem>
+           <para><emphasis role="bold">alias</emphasis>
+            [<emphasis role="bold">id</emphasis> &qstring; <emphasis role="bold">=</emphasis> &qstring;
+            | <emphasis role="bold">symbol</emphasis> &qstring; [<emphasis role="bold">(instance</emphasis> &nat;<emphasis role="bold">)</emphasis>] <emphasis role="bold">=</emphasis> &qstring;
+            | <emphasis role="bold">num</emphasis> [<emphasis role="bold">(instance</emphasis> &nat;<emphasis role="bold">)</emphasis>] <emphasis role="bold">=</emphasis> &qstring;
+            ]
+           </para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>Action:</term>
+         <listitem>
+           <para>Used to give an hint to the disambiguating parser.
+            When the parser is faced to the identifier (or symbol)
+            <command>s</command> or to any number, it will prefer
+            interpretations that &quot;map <command>s</command> (or the
+            number) to <command>def</command>&quot;. For identifiers,
+            &quot;def&quot; is the URI of the interpretation.
+            E.g.: <command>cic:/matita/nat/nat.ind#xpointer(1/1/1)</command>
+            for the first constructor of the first inductive type defined
+            in the block of inductive type(s)
+            <command>cic:/matita/nat/nat.ind</command>.
+            For symbols and numbers, &quot;def&quot; is the label used to
+            mark the wanted
+            <link linkend="interpretation">interpretation</link>.
+           </para>
+          <para>When a symbol or a number occurs several times in the
+           term to be parsed, it is possible to give an hint only for the
+           instance <command>n</command>. When the instance is omitted,
+           the hint is valid for every occurrence.
+          </para>
+          <para>
+           Hints are automatically inserted in the script by Matita every
+           time the user is interactively asked a question to disambiguate
+           a term. This way the user won't be posed the same question twice
+           when the script will be executed again.</para>
+         </listitem>
+       </varlistentry>
+     </variablelist>
+   </para>
+ </sect1>
+ <sect1 id="command_check">
+   <title>check</title>
+   <para><userinput>check t</userinput></para>
+   <para>
+     <variablelist>
+       <varlistentry>
+         <term>Synopsis:</term>
+         <listitem>
+           <para><emphasis role="bold">check</emphasis> &term;</para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>Action:</term>
+         <listitem>
+           <para>Opens a CIC browser window that shows <command>t</command>
+            together with its type. The command is immediately removed from
+            the script.</para>
+         </listitem>
+       </varlistentry>
+     </variablelist>
+   </para>
+ </sect1>
+ <sect1 id="command_eval">
+   <title>eval</title>
+   <para><userinput>eval red on t</userinput></para>
+   <para>
+     <variablelist>
+       <varlistentry>
+         <term>Synopsis:</term>
+         <listitem>
+           <para><emphasis role="bold">eval</emphasis> 
+            &reduction-kind; 
+             <emphasis role="bold">on</emphasis>
+             &term;</para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>Action:</term>
+         <listitem>
+           <para>Opens a CIC browser window that shows 
+             the reduct of 
+             <command>t</command>
+             together with its type.</para>
+         </listitem>
+       </varlistentry>
+     </variablelist>
+   </para>
+ </sect1>
+ <sect1 id="command_prefer_coercion">
+   <title>prefer coercion</title>
+   <para><userinput>prefer coercion u</userinput></para>
+   <para>
+     <variablelist>
+       <varlistentry>
+         <term>Synopsis:</term>
+         <listitem>
+                <para>
+                        <emphasis role="bold">prefer coercion</emphasis> 
+       (&uri; | &term;)
+                </para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>Action:</term>
+         <listitem>
+           <para>The already declared coercion <command>u</command> 
+             is preferred to other coercions with the same source and target.
+           </para>
+         </listitem>
+       </varlistentry>
+     </variablelist>
+   </para>
+ </sect1>
+ <sect1 id="command_coercion">
+   <title>coercion</title>
+   <para><userinput>coercion u with ariety saturation nocomposites</userinput></para>
+   <para>
+     <variablelist>
+       <varlistentry>
+         <term>Synopsis:</term>
+         <listitem>
+                <para>
+                        <emphasis role="bold">coercion</emphasis> 
+                        (&uri; | &term; <emphasis role="bold">with</emphasis>)
+                        [ &nat; [&nat;]] 
+                        [ <emphasis role="bold">nocomposites</emphasis> ]
+                </para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>Action:</term>
+         <listitem>
+                <para>Declares <command>u</command> as an implicit coercion.
+                If the type of <command>u</command> is         
+                <command>∀x1:T1. … ∀x(n-1):T(n-1).Tn</command> the coercion target is
+                <command>T(n - ariety)</command> while its source is 
+                <command>T(n - ariety - saturation - 1)</command>.
+           Every time a term <command>x</command>
+            of type source is used with expected type target, Matita
+            automatically replaces <command>x</command> with
+            <command>(u ? … ? x ? … ?)</command> to avoid a typing error.</para>
+            Note that the number of <command>?</command> added after 
+           <command>x</command> is saturation.
+           <para>Implicit coercions are not displayed to the user:
+            <command>(u ? … ? x)</command> is rendered simply
+            as <command>x</command>.</para>
+           <para>When a coercion <command>u</command> is declared
+            from source <command>s</command> to target <command>t</command>
+            and there is already a coercion <command>u'</command> of
+            target <command>s</command> or source <command>t</command>,
+            a composite implicit coercion is automatically computed
+           by Matita unless <emphasis role="bold">nocomposites</emphasis> 
+           is specified.</para>
+         </listitem>
+       </varlistentry>
+     </variablelist>
+   </para>
+ </sect1>
+ <sect1 id="command_default">
+   <title>default</title>
+   <para><userinput>default &quot;s&quot; u<subscript>1</subscript> … u<subscript>n</subscript></userinput></para>
+   <para>
+     <variablelist>
+       <varlistentry>
+         <term>Synopsis:</term>
+         <listitem>
+           <para><emphasis role="bold">default</emphasis>
+            &qstring; &uri; [&uri;]…
+           </para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>Action:</term>
+         <listitem>
+           <para>It registers a cluster of related definitions and
+            theorems to be used by tactics and the rendering engine.
+            Some functionalities of Matita are not available when some
+            clusters have not been registered. Overloading a cluster
+            registration is possible: the last registration will be the
+            default one, but the previous ones are still in effect.</para>
+           <para>
+            <command>s</command> is an identifier of the cluster and
+            <command>u<subscript>1</subscript> … u<subscript>n</subscript></command>
+            are the URIs of the definitions and theorems of the cluster.
+            The number <command>n</command> of required URIs depends on the
+            cluster. The following clusters are supported.
+           </para>
+           <table>
+            <title>clusters</title>
+            <tgroup cols="6">
+            <thead>
+             <row>
+              <entry>name</entry>
+              <entry>expected object for 1st URI</entry>
+              <entry>expected object for 2nd URI</entry>
+              <entry>expected object for 3rd URI</entry>
+              <entry>expected object for 4th URI</entry>
+              <entry>expected object for 5th URI</entry>
+              <entry>expected object for 6th URI</entry>
+              <entry>expected object for 7th URI</entry>
+              <entry>expected object for 8th URI</entry>
+              <entry>expected object for 9th URI</entry>
+              <entry>expected object for 10th URI</entry>
+              <entry>expected object for 11th URI</entry>
+             </row>
+            </thead>
+            <tbody>
+             <row>
+              <entry>equality</entry>
+              <entry>an inductive type (say, of type <command>eq</command>) of type ∀A:Type.A <emphasis role="bold">→</emphasis> <emphasis role="bold">Prop</emphasis> with one family parameter and one constructor of type ∀x:A.eq A x</entry>
+              <entry>a theorem of type <emphasis role="bold">∀</emphasis>A.<emphasis role="bold">∀</emphasis>x,y:A.eq A x y <emphasis role="bold">→</emphasis> eq A y x</entry>
+              <entry>a theorem of type <emphasis role="bold">∀</emphasis>A.<emphasis role="bold">∀</emphasis>x,y,z:A.eq A x y <emphasis role="bold">→</emphasis> eq A y z <emphasis role="bold">→</emphasis> eq A x z</entry>
+              <entry><emphasis role="bold">∀</emphasis>A.<emphasis role="bold">∀</emphasis>a.<emphasis role="bold">∀</emphasis> P:A <emphasis role="bold">→</emphasis> <emphasis role="bold">Prop</emphasis>.P x <emphasis role="bold">→</emphasis> <emphasis role="bold">∀</emphasis>y.eq A x y <emphasis role="bold">→</emphasis> P y</entry>
+              <entry><emphasis role="bold">∀</emphasis>A.<emphasis role="bold">∀</emphasis>a.<emphasis role="bold">∀</emphasis> P:A <emphasis role="bold">→</emphasis> <emphasis role="bold">Prop</emphasis>.P x <emphasis role="bold">→</emphasis> <emphasis role="bold">∀</emphasis>y.eq A y x <emphasis role="bold">→</emphasis> P y</entry>
+              <entry><emphasis role="bold">∀</emphasis>A.<emphasis role="bold">∀</emphasis>a.<emphasis role="bold">∀</emphasis> P:A <emphasis role="bold">→</emphasis> <emphasis role="bold">Set</emphasis>.P x <emphasis role="bold">→</emphasis> <emphasis role="bold">∀</emphasis>y.eq A x y <emphasis role="bold">→</emphasis> P y</entry>
+              <entry><emphasis role="bold">∀</emphasis>A.<emphasis role="bold">∀</emphasis>a.<emphasis role="bold">∀</emphasis> P:A <emphasis role="bold">→</emphasis> <emphasis role="bold">Set</emphasis>.P x <emphasis role="bold">→</emphasis> <emphasis role="bold">∀</emphasis>y.eq A y x <emphasis role="bold">→</emphasis> P y</entry>
+              <entry><emphasis role="bold">∀</emphasis>A.<emphasis role="bold">∀</emphasis>a.<emphasis role="bold">∀</emphasis> P:A <emphasis role="bold">→</emphasis> <emphasis role="bold">Type</emphasis>.P x <emphasis role="bold">→</emphasis> <emphasis role="bold">∀</emphasis>y.eq A x y <emphasis role="bold">→</emphasis> P y</entry>
+              <entry><emphasis role="bold">∀</emphasis>A.<emphasis role="bold">∀</emphasis>a.<emphasis role="bold">∀</emphasis> P:A <emphasis role="bold">→</emphasis> <emphasis role="bold">Type</emphasis>.P x <emphasis role="bold">→</emphasis> <emphasis role="bold">∀</emphasis>y.eq A y x <emphasis role="bold">→</emphasis> P y</entry>
+              <entry><emphasis role="bold">∀</emphasis>A.<emphasis role="bold">∀</emphasis>B.<emphasis role="bold">∀</emphasis> f:A <emphasis role="bold">→</emphasis> B.<emphasis role="bold">∀</emphasis>x,y:A.eq A x y <emphasis role="bold">→</emphasis> eq B (f x) (f y)</entry>
+              <entry><emphasis role="bold">∀</emphasis>A.<emphasis role="bold">∀</emphasis>B.<emphasis role="bold">∀</emphasis> f:A <emphasis role="bold">→</emphasis> B.<emphasis role="bold">∀</emphasis>x,y:A.eq A x y <emphasis role="bold">→</emphasis> eq B (f y) (f x)</entry>
+             </row>
+             <row>
+              <entry>true</entry>
+              <entry>an inductive type of type <emphasis role="bold">Prop</emphasis> with only one constructor that has no arguments</entry>
+              <entry/>
+              <entry/>
+              <entry/>
+              <entry/>
+             </row>
+             <row>
+              <entry>false</entry>
+              <entry>an inductive type of type <emphasis role="bold">Prop</emphasis> without constructors</entry>
+              <entry/>
+              <entry/>
+              <entry/>
+              <entry/>
+             </row>
+             <row>
+              <entry>absurd</entry>
+              <entry>a theorem of type <emphasis role="bold">∀</emphasis>A:Prop.<emphasis role="bold">∀</emphasis>B:Prop.A <emphasis role="bold">→</emphasis> Not A <emphasis role="bold">→</emphasis> B</entry>
+              <entry/>
+              <entry/>
+              <entry/>
+              <entry/>
+             </row>
+            </tbody>
+            </tgroup>
+           </table>
+         </listitem>
+       </varlistentry>
+     </variablelist>
+   </para>
+ </sect1>
+ <sect1 id="command_hint">
+   <title>hint</title>
+   <para><userinput>hint</userinput></para>
+   <para>
+     <variablelist>
+       <varlistentry>
+         <term>Synopsis:</term>
+         <listitem>
+           <para><emphasis role="bold">hint</emphasis>
+           </para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>Action:</term>
+         <listitem>
+           <para>Displays a list of theorems that can be successfully
+            applied to the current selected sequent. The command is
+            removed from the script, but the window that displays the
+            theorems allow to add to the script the application of the
+            selected theorem.
+           </para>
+         </listitem>
+       </varlistentry>
+     </variablelist>
+   </para>
+ </sect1>
+ <sect1 id="command_include">
+   <title>include</title>
+   <para><userinput>include &quot;s&quot;</userinput></para>
+   <para>
+     <variablelist>
+       <varlistentry>
+         <term>Synopsis:</term>
+         <listitem>
+           <para><emphasis role="bold">include</emphasis> &qstring;</para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>Action:</term>
+         <listitem>
+           <para>Every <link linkend="command_coercion">coercion</link>,
+            <link linkend="notation">notation</link> and
+            <link linkend="interpretation">interpretation</link> that was active
+            when the file <command>s</command> was compiled last time
+            is made active. The same happens for declarations of
+            <link linkend="command_default">default definitions and
+            theorems</link> and disambiguation
+            hints (<link linkend="command_alias">aliases</link>).
+            On the contrary, theorem and definitions declared in a file can be
+           immediately used without including it.</para>
+          <para>The file <command>s</command> is automatically compiled
+         if it is not compiled yet.
+          </para>
+         </listitem>
+       </varlistentry>
+     </variablelist>
+   </para>
+ </sect1>
+ <sect1 id="command_include_first">
+   <title>include' &quot;s&quot;</title>
+   <para><userinput></userinput></para>
+   <para>
+     <variablelist>
+       <varlistentry>
+         <term>Synopsis:</term>
+         <listitem>
+           <para><emphasis role="bold">include'</emphasis> &qstring;</para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>Action:</term>
+         <listitem>
+           <para>Not documented (&TODO;), do not use it.</para>
+         </listitem>
+       </varlistentry>
+     </variablelist>
+   </para>
+ </sect1>
+ <sect1 id="command_whelp">
+   <title>whelp</title>
+   <para><userinput>whelp locate &quot;s&quot;</userinput></para>
+   <para><userinput>whelp hint t</userinput></para>
+   <para><userinput>whelp elim t</userinput></para>
+   <para><userinput>whelp match t</userinput></para>
+   <para><userinput>whelp instance t</userinput></para>
+   <para>
+     <variablelist>
+       <varlistentry>
+         <term>Synopsis:</term>
+         <listitem>
+           <para><emphasis role="bold">whelp</emphasis>
+            [<emphasis role="bold">locate</emphasis> &qstring;
+            | <emphasis role="bold">hint</emphasis> &term;
+            | <emphasis role="bold">elim</emphasis> &term;
+            | <emphasis role="bold">match</emphasis> &term;
+            | <emphasis role="bold">instance</emphasis> &term;
+            ]
+           </para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>Action:</term>
+         <listitem>
+           <para>Performs the corresponding <link linkend="whelp">query</link>,
+            showing the result in the CIC browser. The command is removed
+            from the script.
+           </para>
+         </listitem>
+       </varlistentry>
+     </variablelist>
+   </para>
+ </sect1>
+ <sect1 id="command_qed">
+   <title>qed</title>
+   <para><userinput>qed</userinput></para>
+   <para>
+     <variablelist>
+       <varlistentry>
+         <term>Synopsis:</term>
+         <listitem>
+           <para><emphasis role="bold">qed</emphasis>
+           </para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>Action:</term>
+         <listitem>
+           <para>Saves and indexes the current interactive theorem or
+            definition.
+            In order to do this, the set of sequents still to be proved
+            must be empty.</para>
+         </listitem>
+       </varlistentry>
+     </variablelist>
+   </para>
+ </sect1>
+ <sect1 id="command_inline">
+   <title>inline</title>
+   <para><userinput>inline &quot;s&quot; params</userinput></para>
+   <para>
+     <variablelist>
+       <varlistentry>
+         <term>Synopsis:</term>
+         <listitem>
+           <para>
+            <emphasis role="bold">inline</emphasis> &qstring; &inlineparams;
+           </para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>Action:</term>
+         <listitem>
+           <para>Inlines a representation of the item <command>s</command>,
+which can be the URI of a HELM object. If an entire HELM directory (i.e. a base
+URI) or the path of a *.ma source file is provided, all the contained objects
+are represented in a row.
+If the inlined object has a proof, this proof is represented in several ways
+depending on the provided parameters.</para>
+         </listitem>
+       </varlistentry>
+     </variablelist>
+   </para>
+   
+    <sect2 id="inline-params">
+    <title>inline-params</title>
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>inline-params</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+       <entry id="grammar.inlineparams">&inlineparams;</entry>
+       <entry>::=</entry>
+        <entry>[&inlineparam; [&inlineparam;] … ]</entry>
+       </row>
+      </tbody>
+     </tgroup>
+    </table>
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>inline-param</title>
+      <tgroup cols="4">
+      <tbody>
+       
+       <row>
+       <entry id="grammar.inlineparam">&inlineparam;</entry>
+       <entry>::=</entry>
+       <entry><emphasis role="bold">axiom</emphasis></entry>
+        <entry>Try to give an <link linkend="axiom">axiom</link> flavour
+           (bodies are omitted even if present) 
+       </entry>
+       </row>
+
+       <row>
+        <entry/>
+        <entry>|</entry>       
+       <entry><emphasis role="bold">definition</emphasis></entry>
+        <entry>Try give a <link linkend="definition">definition</link> flavour
+       </entry>
+       </row>
+
+       <row>
+        <entry/>
+        <entry>|</entry>       
+       <entry><emphasis role="bold">theorem</emphasis></entry>
+        <entry>Try give a <link linkend="theorem">theorem</link> flavour
+       </entry>
+       </row>
+
+       <row>
+        <entry/>
+        <entry>|</entry>       
+       <entry><emphasis role="bold">lemma</emphasis></entry>
+        <entry>Try give a <link linkend="lemma">lemma</link> flavour
+       </entry>
+       </row>
+
+       <row>
+        <entry/>
+        <entry>|</entry>       
+       <entry><emphasis role="bold">remark</emphasis></entry>
+        <entry>Try give a <link linkend="remark">remark</link> flavour
+       </entry>
+       </row>
+
+       <row>
+        <entry/>
+        <entry>|</entry>       
+       <entry><emphasis role="bold">fact</emphasis></entry>
+        <entry>Try give a <link linkend="fact">fact</link> flavour
+       </entry>
+       </row>
+
+       <row>
+        <entry/>
+        <entry>|</entry>       
+       <entry><emphasis role="bold">variant</emphasis></entry>
+        <entry>Try give a <link linkend="variant">variant</link> flavour
+              (implies <emphasis role="bold">plain</emphasis>)
+       </entry>
+       </row>
+
+       <row>
+        <entry/>
+        <entry>|</entry>       
+       <entry><emphasis role="bold">declarative</emphasis></entry>
+        <entry>Represent proofs using 
+           <link linkend="sec_declarative_tactics">declarative tactics</link>
+          (this is the dafault and can be omitted)
+       </entry>
+       </row>
+       
+       <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><emphasis role="bold">procedural</emphasis></entry>
+        <entry>Represent proofs using 
+           <link linkend="sec_tactics">procedural tactics</link>
+               </entry>
+       </row>
+       
+       <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><emphasis role="bold">plain</emphasis></entry>
+        <entry>Represent proofs using plain 
+          <link linkend="tbl_terms">proof terms</link>
+       </entry>
+       </row>
+
+       <row>
+        <entry/>
+        <entry>|</entry>
+       <entry><emphasis role="bold">nodefaults</emphasis></entry>
+        <entry>
+        Do not use the tactics depending on the
+        <link linkend="command_default">default</link> command
+          (<link linkend="tac_rewrite">rewrite</link>
+           in the <emphasis role="bold">procedural</emphasis> mode)
+       </entry>
+       </row>
+
+       <row valign="top">
+        <entry/>
+        <entry>|</entry>
+       <entry><emphasis role="bold">level=&nat;</emphasis></entry>
+        <entry>
+        Set the level of the procedural proof representation
+        (the default is the highest level)
+         <itemizedlist>
+          <listitem>
+          Tactics used at level 1:
+           <link linkend="tac_exact">exact</link>
+         </listitem>
+          <listitem>
+          Additional tactics used at level 2:
+           <link linkend="tac_letin">letin</link>,
+           <link linkend="tac_cut">cut</link>,
+           <link linkend="tac_change">change</link>,
+           <link linkend="tac_intros">intros</link>,
+           <link linkend="tac_apply">apply</link>,
+           <link linkend="tac_elim">elim</link>,
+           <link linkend="tac_cases">cases</link>,
+           <link linkend="tac_rewrite">rewrite</link>
+          </listitem>
+         </itemizedlist>
+       </entry>
+       </row>
+
+       <row>
+        <entry/>
+        <entry>|</entry>
+       <entry><emphasis role="bold">depth=&nat;</emphasis></entry>
+        <entry>&TODO;</entry>
+       </row>
+      
+      </tbody>
+     </tgroup>
+    </table>
+    </sect2>   
+ </sect1>
+</chapter>
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_declarative_tactics.html b/helm/www/matita/docs/manual-0.5.9/sec_declarative_tactics.html
new file mode 100644 (file)
index 0000000..2a3a537
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 8. Declarative Tactics</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="prev" href="tac_whd.html" title="whd" /><link rel="next" href="tac_assume.html" title="assume" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 8. Declarative Tactics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_whd.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="tac_assume.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="sec_declarative_tactics"></a>Chapter 8. Declarative Tactics</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="sect1"><a href="sec_declarative_tactics.html#declarative_tactics_quickref">Quick reference card</a></span></dt><dt><span class="sect1"><a href="tac_assume.html">assume</a></span></dt><dt><span class="sect1"><a href="tac_byinduction.html">by induction hypothesis we know</a></span></dt><dt><span class="sect1"><a href="tac_case.html">case</a></span></dt><dt><span class="sect1"><a href="tac_bydone.html">done</a></span></dt><dt><span class="sect1"><a href="tac_exitselim.html">let such that</a></span></dt><dt><span class="sect1"><a href="tac_obtain.html">obtain</a></span></dt><dt><span class="sect1"><a href="tac_suppose.html">suppose</a></span></dt><dt><span class="sect1"><a href="tac_thesisbecomes.html">the thesis becomes</a></span></dt><dt><span class="sect1"><a href="tac_weneedtoprove.html">we need to prove</a></span></dt><dt><span class="sect1"><a href="tac_andelim.html">we have</a></span></dt><dt><span class="sect1"><a href="tac_weproceedbycases.html">we proceed by cases on</a></span></dt><dt><span class="sect1"><a href="tac_weproceedbyinduction.html">we proceed by induction on</a></span></dt><dt><span class="sect1"><a href="tac_bytermweproved.html">we proved</a></span></dt></dl></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="declarative_tactics_quickref"></a>Quick reference card</h2></div></div></div><p>
+      </p><div class="table"><a id="idp73048816"></a><p class="title"><strong>Table 8.1. tactics</strong></p><div class="table-contents"><table summary="tactics" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.declarative_tactic"></a><span class="emphasis"><em><a class="link" href="sec_tactics.html#grammar.tactic">tactic</a></em></span></td><td style="">::=</td><td style=""><a class="link" href="tac_assume.html" title="assume"><span class="bold"><strong>assume</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> <span class="bold"><strong> : </strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href=""><span class="bold"><strong>by induction hypothesis we know</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="bold"><strong> (</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> <span class="bold"><strong>)</strong></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_case.html" title="case"><span class="bold"><strong>case</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> [<span class="bold"><strong>(</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> <span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>  <span class="bold"><strong>)</strong></span>] … </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.justification">justification</a></em></span> <a class="link" href=""><span class="bold"><strong>done</strong></span></a></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.justification">justification</a></em></span> <span class="bold"><strong>let</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> 
+                   <span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="bold"><strong>such that</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> 
+                    <span class="bold"><strong>(</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> <span class="bold"><strong>)</strong></span></td></tr><tr><td style=""> </td><td style="">|</td><td style="">[<a class="link" href="tac_obtain.html" title="obtain"><span class="bold"><strong>obtain</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> | <span class="bold"><strong>conclude</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>] <span class="bold"><strong>=</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> [<span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.autoparams">auto_params</a></em></span> | <span class="bold"><strong>using</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> | <span class="bold"><strong>using once</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> | <span class="bold"><strong>proof</strong></span>] [<span class="bold"><strong>done</strong></span>]</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_suppose.html" title="suppose"><span class="bold"><strong>suppose</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="bold"><strong> (</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> 
+            <span class="bold"><strong>) </strong></span> [ <span class="bold"><strong>that is equivalent to</strong></span>  <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> ]</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href=""><span class="bold"><strong>the thesis becomes</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href=""><span class="bold"><strong>we need to prove</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>
+        [<span class="bold"><strong>(</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>
+        <span class="bold"><strong>)</strong></span>]
+        [ <span class="bold"><strong>or equivalently</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href=""><span class="bold"><strong>we proceed by cases on</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="bold"><strong>to prove</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href=""><span class="bold"><strong>we proceed by induction on</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="bold"><strong> to prove </strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.justification">justification</a></em></span> <a class="link" href=""><span class="bold"><strong>we proved</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> 
+         <span class="bold"><strong>(</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> 
+         <span class="bold"><strong>)</strong></span></td></tr></tbody></table></div></div><p><br class="table-break" />
+
+    </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_whd.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="tac_assume.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">whd </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> assume</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_declarative_tactics.xml b/helm/www/matita/docs/manual-0.5.9/sec_declarative_tactics.xml
new file mode 100644 (file)
index 0000000..bc0b424
--- /dev/null
@@ -0,0 +1,518 @@
+<!-- ================= Tactics ========================= -->
+<chapter id="sec_declarative_tactics">
+  <title>Declarative Tactics</title>
+
+  <sect1
+  id="declarative_tactics_quickref">
+    <title>Quick reference card</title>
+    <para>
+      &declarativetacticref;
+    </para>
+  </sect1>
+
+  
+  <sect1 id="tac_assume">
+    <title>assume</title>
+    <titleabbrev>assume</titleabbrev>
+    <para><userinput>assume x : t</userinput></para>
+  <para>
+    <variablelist>
+      <varlistentry role="tactic.synopsis">
+       <term>Synopsis:</term>
+       <listitem>
+         <para><emphasis role="bold">assume</emphasis> &id; <emphasis role="bold"> : </emphasis> &sterm;</para>
+       </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>Pre-conditions:</term>
+       <listitem>
+         <para>The conclusion of the current proof must be
+          <command>∀x:T.P</command> or
+          <command>T→P</command> where <command>T</command> is
+          a data type (i.e. <command>T</command> has type
+          <command>Set</command> or <command>Type</command>).</para>
+       </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>Action:</term>
+       <listitem>
+         <para>It adds to the context of the current sequent to prove a new
+          declaration <command>x : T </command>. The new conclusion becomes
+          <command>P</command>.</para>
+       </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>New sequents to prove:</term>
+       <listitem>
+         <para>None.</para>
+       </listitem>
+      </varlistentry>
+    </variablelist>
+   </para>
+  </sect1>
+
+    <sect1 id="tac_byinduction">
+      <title>by induction hypothesis we know</title>
+      <titleabbrev>by induction hypothesis we know</titleabbrev>
+      <para><userinput>by induction hypothesis we know t (id)</userinput></para>
+      <para>
+        <variablelist>
+         <varlistentry role="tactic.synopsis">
+           <term>Synopsis:</term>
+           <listitem><para><emphasis role="bold">by induction hypothesis we know</emphasis> &term; <emphasis role="bold"> (</emphasis> &id; <emphasis role="bold">)</emphasis></para>
+           </listitem>
+         </varlistentry>
+         <varlistentry>
+           <term>Pre-condition:</term>
+           <listitem>
+        <para>To be used in a proof by induction to state the inductive
+          hypothesis.</para>
+           </listitem>
+         </varlistentry>
+         <varlistentry>
+           <term>Action:</term>
+             <listitem>
+               <para> Introduces the inductive hypothesis. </para>
+             </listitem>
+         </varlistentry>
+          <varlistentry>
+             <term>New sequents to prove:</term>
+                <listitem>
+                <para>None.</para>
+                </listitem>
+         </varlistentry>
+         </variablelist>
+      </para>
+    </sect1>  
+
+   <sect1 id="tac_case">
+     <title>case</title>
+     <titleabbrev>case</titleabbrev>
+     <para><userinput>case id (id1:t1) … (idn:tn)</userinput></para>
+     <para>
+       <variablelist>
+         <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">case</emphasis> &id; [<emphasis role="bold">(</emphasis> &id; <emphasis role="bold">:</emphasis> &term;  <emphasis role="bold">)</emphasis>] … </para>
+          </listitem>
+        </varlistentry>
+         <varlistentry>
+            <term>Pre-condition:</term>
+           <listitem>
+        <para>To be used in a proof by induction or by cases to start
+          a new case</para>
+           </listitem>
+        </varlistentry>
+         <varlistentry>
+            <term>Action:</term>
+            <listitem>
+              <para>Starts the new case <command>id</command> declaring
+                the local parameters <command>(id1:t1) … (idn:tn)</command></para>
+            </listitem>
+         </varlistentry>
+         <varlistentry>
+           <term>New sequents to prove:</term>
+           <listitem>
+               <para>None</para>
+           </listitem>
+         </varlistentry>
+       </variablelist>
+     </para>
+  </sect1> 
+
+ <sect1 id="tac_bydone">
+   <title>done</title>
+   <titleabbrev>done</titleabbrev>
+   <para><userinput>justification done</userinput></para>
+   <para>
+     <variablelist>
+       <varlistentry role="tactic.synopsis">
+         <term>Synopsis:</term>
+        <listitem>
+          <para>&justification; <emphasis role="bold">done</emphasis></para>
+        </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>Pre-condition:</term>
+        <listitem>
+          <para></para>
+        </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>Action:</term>
+          <listitem> 
+            <para>It closes the current sequent given the justification.</para>
+          </listitem>
+       </varlistentry>
+       <varlistentry>
+           <term>New sequents to prove:</term>
+           <listitem>
+               <para>None.</para>
+           </listitem>
+       </varlistentry>
+   </variablelist>
+     </para>
+  </sect1>
+
+
+  <sect1 id="tac_exitselim">
+    <title>let such that</title>
+    <titleabbrev>let such that</titleabbrev>
+    <para><userinput>justification let x:t such that p (id)</userinput>
+    </para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+         <term>Synopsis:</term>
+         <listitem>
+           <para>&justification; <emphasis role="bold">let</emphasis> &id; 
+                   <emphasis role="bold">:</emphasis> &term; <emphasis role="bold">such that</emphasis> &term; 
+                    <emphasis role="bold">(</emphasis> &id; <emphasis role="bold">)</emphasis></para>
+          </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>Pre-condition:</term>
+         <listitem>
+      <para>
+           </para>
+         </listitem>  
+       </varlistentry>
+       <varlistentry>
+         <term>Action:</term>
+         <listitem>
+      <para>It derives <command>∃x:t.p</command> using the
+        <command>justification</command> and then it introduces in the context
+        <command>x</command> and the hypothesis  
+        <command>p</command> labelled with
+        <command>id</command>.
+      </para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>New sequent to prove:</term>
+         <listitem>
+      <para>None.</para>
+         </listitem>
+       </varlistentry>
+     </variablelist>
+    </para>
+  </sect1>
+
+  <sect1 id="tac_obtain">
+    <title>obtain</title>
+    <titleabbrev>obtain</titleabbrev>
+    <para><userinput>obtain H t1 = t2 justification</userinput></para>
+    <para>
+      <variablelist>
+         <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para>[<emphasis role="bold">obtain</emphasis> &id; | <emphasis role="bold">conclude</emphasis> &term;] <emphasis role="bold">=</emphasis> &term; [&autoparams; | <emphasis role="bold">using</emphasis> &term; | <emphasis role="bold">using once</emphasis> &term; | <emphasis role="bold">proof</emphasis>] [<emphasis role="bold">done</emphasis>]</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-condition:</term>
+            <listitem>
+         <para><command>conclude</command> can be used only if the current
+           sequent is stating an equality. The left hand side must be omitted
+           in an equality chain.</para> 
+       </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+       <para>Starts or continues an equality chain. If the chain starts 
+         with <command>obtain H</command> a new subproof named 
+         <command>H</command> is started.</para>
+           </listitem>
+         </varlistentry>
+        <varlistentry>
+          <term>New sequent to prove:</term>
+            <listitem>
+               <para>If the chain starts 
+            with <command>obtain H</command> a nre sequent for
+            <command>t2 = ?</command> is opened.
+          </para>
+            </listitem>
+        </varlistentry>
+       </variablelist>
+     </para>
+   </sect1>
+
+  <sect1 id="tac_suppose">
+    <title>suppose</title>
+    <titleabbrev>suppose</titleabbrev>
+    <para><userinput>suppose t1 (x) that is equivalent to t2</userinput></para>
+  <para>
+     <variablelist>
+       <varlistentry role="tactic.synopsis">
+         <term>Synopsis:</term>
+        <listitem>
+          <para><emphasis role="bold">suppose</emphasis> &term; <emphasis role="bold"> (</emphasis> &id; 
+            <emphasis role="bold">) </emphasis> [ <emphasis role="bold">that is equivalent to</emphasis>  &term; ]</para>
+        </listitem>
+       </varlistentry>
+      <varlistentry>
+         <term>Pre-condition:</term>
+        <listitem>
+          <para>The conclusion of the current proof must be
+          <command>∀x:T.P</command> or
+          <command>T→P</command> where <command>T</command> is
+          a proposition (i.e. <command>T</command> has type
+          <command>Prop</command> or <command>CProp</command>).</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>Action:</term>
+         <listitem>
+           <para>It adds to the context of the current sequent to prove a new
+          declaration <command>x : T </command>. The new conclusion becomes
+          <command>P</command>.</para>
+         </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>New sequents to prove:</term>
+        <listitem>
+            <para>None.</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+   </para>
+  </sect1>
+
+   <sect1 id="tac_thesisbecomes">
+     <title>the thesis becomes</title>
+     <titleabbrev>the thesis becomes</titleabbrev>
+     <para><userinput>the thesis becomes t</userinput></para>
+     <para>
+        <variablelist>
+          <varlistentry role="tactic.synopsis">
+            <term>Synopsis:</term>
+            <listitem>
+              <para><emphasis role ="bold">the thesis becomes</emphasis> &term; </para>
+            </listitem>
+          </varlistentry>
+          <varlistentry>
+            <term>Pre-condition:</term>
+            <listitem>
+         <para>The provided term <command>t</command> must be convertible with
+           current sequent.</para>
+            </listitem>
+          </varlistentry>
+          <varlistentry>
+            <term>Action:</term>
+            <listitem>
+              <para>It changes the current goal to the one provided.</para>
+            </listitem>
+          </varlistentry>
+          <varlistentry>
+            <term>New sequent to prove:</term>
+            <listitem>
+              <para>None.</para>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+       </para>
+   </sect1>
+   
+  <sect1 id="tac_weneedtoprove">
+    <title>we need to prove</title>
+    <titleabbrev>we need to prove</titleabbrev>
+    <para><userinput>we need to prove t1 (id) or equivalently t2</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+         <term>Synopsis:</term>
+         <listitem>
+      <para><emphasis role="bold">we need to prove</emphasis> &term;
+        [<emphasis role="bold">(</emphasis>&id;
+        <emphasis role="bold">)</emphasis>]
+        [ <emphasis role="bold">or equivalently</emphasis> &term;]</para> 
+         </listitem>
+       </varlistentry>
+        <varlistentry>
+          <term>Pre-condition:</term>
+         <listitem>
+           <para></para>
+         </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+           <listitem>
+        <para>If <command>id</command> is provided, starts a subproof that once concluded 
+              will be named <command>id</command>. Otherwise states what needs to be proved.
+              If <command>t2</command> is provided, the new goal is 
+              immediately changed to <command>t2</command> wich must
+              be equivalent to <command>t1</command>.
+            </para>
+           </listitem>
+        </varlistentry>
+        <varlistentry>
+           <term>New sequents to prove:</term>
+          <listitem>
+            <para>The stated one if <command>id</command> is provided</para>
+          </listitem>
+       </varlistentry>     
+     </variablelist>
+    </para>
+  </sect1>
+
+
+  <sect1 id="tac_andelim">
+    <title>we have</title>
+    <titleabbrev>we have</titleabbrev>
+    <para><userinput>justification we have t1 (id1) and t2 (id2)</userinput>
+    </para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic_synopsis">
+         <term>Synopsis:</term>
+         <listitem>
+           <para>&justification; <emphasis role="bold">we have</emphasis> &term; 
+                   <emphasis role="bold">( </emphasis> &id; <emphasis role="bold"> ) and </emphasis> &term; 
+                     <emphasis role="bold"> ( </emphasis> &id; <emphasis role="bold">)</emphasis></para>
+          </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>Pre-condition:</term>
+         <listitem>
+           <para></para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>Action:</term>
+         <listitem>
+      <para>It derives <command>t1∧t2</command> using the 
+        <command>justification</command> then it introduces in the context
+        <command>t1</command>   labelled with <command>id1</command> and
+        <command>t2</command>   labelled with <command>id2</command>.
+      </para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>New sequent to prove:</term>
+         <listitem>
+            <para>None.</para>
+          </listitem>
+       </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+
+  <sect1 id="tac_weproceedbycases">
+    <title>we proceed by cases on</title>
+      <titleabbrev>we proceed by cases on</titleabbrev>
+      <para><userinput>we proceed by cases on t to prove th</userinput></para>
+      <para>
+        <variablelist>
+         <varlistentry role="tactic.synopsis">
+           <term>Synopsis:</term>
+           <listitem>
+             <para><emphasis role="bold">we proceed by cases on</emphasis> &term; <emphasis role="bold">to prove</emphasis> &term; </para>
+            </listitem>
+          </varlistentry>
+         <varlistentry>
+           <term>Pre-condition:</term>
+           <listitem>
+        <para><command>t</command> must inhabitant of an inductive type and
+          <command>th</command> must be the conclusion to be proved by 
+          cases.</para>
+           </listitem>
+         </varlistentry>
+         <varlistentry>
+           <term>Action:</term>
+             <listitem>
+          <para> It proceeds by cases on <command>t</command> </para>
+              </listitem>
+         </varlistentry>
+          <varlistentry>
+            <term>New sequents to prove:</term>
+           <listitem>
+              <para>It opens one new sequent for each constructor of the
+                type of <command>t</command>.</para>
+           </listitem>
+         </varlistentry>
+         </variablelist>
+       </para>
+    </sect1>
+    
+    <sect1 id="tac_weproceedbyinduction">
+    <title>we proceed by induction on</title>
+    <titleabbrev>we proceed by induction on</titleabbrev>
+    <para><userinput>we proceed by induction on t to prove th</userinput></para>        
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+         <term>Synopsis:</term>
+         <listitem>
+           <para><emphasis role="bold">we proceed by induction on</emphasis> &term; <emphasis role="bold"> to prove </emphasis> &term; </para>
+         </listitem>
+       </varlistentry>
+        <varlistentry>
+         <term>Pre-condition:</term>
+         <listitem>
+      <para><command>t</command> must inhabitant of an inductive type and 
+        <command>th</command> must be the conclusion to be proved by induction.
+        </para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>Action:</term>
+           <listitem>
+             <para>It proceed by induction on <command>t</command>.</para>
+           </listitem>
+       </varlistentry>
+        <varlistentry>
+            <term>New sequents to prove:</term>
+            <listitem>
+              <para>It opens one new sequent for each constructor of the
+                type of <command>t</command>.</para>
+            </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+
+
+ <sect1 id="tac_bytermweproved">
+   <title>we proved</title>
+     <titleabbrev>we proved</titleabbrev>
+     <para><userinput>justification we proved t (id)</userinput></para>
+     <para>
+       <variablelist>
+         <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para>&justification; <emphasis role="bold">we proved</emphasis> &term; 
+         <emphasis role="bold">(</emphasis> &id; 
+         <emphasis role="bold">)</emphasis></para>
+           </listitem>
+          </varlistentry>
+          <varlistentry>
+            <term>Pre-condition:</term>
+            <listitem>
+              <para><command>t</command>must have type <command>Prop</command>.
+         </para>
+            </listitem>
+          </varlistentry>
+          <varlistentry>
+            <term>Action:</term>
+            <listitem>
+         <para>It derives <command>t</command>
+           using the justification and labels the conclusion with
+           <command>id</command>.
+         </para>
+            </listitem>
+          </varlistentry>
+          <varlistentry>
+            <term>New sequent to prove:</term>
+            <listitem>
+              <para>None.</para>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+       </para>
+    </sect1>
+
+</chapter>
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_gettingstarted.html b/helm/www/matita/docs/manual-0.5.9/sec_gettingstarted.html
new file mode 100644 (file)
index 0000000..7092e34
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 3. Getting started</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="prev" href="matita.conf.xml.html" title="Configuring Matita" /><link rel="next" href="cicbrowser.html" title="Browsing and searching" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 3. Getting started</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="matita.conf.xml.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="cicbrowser.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="sec_gettingstarted"></a>Chapter 3. Getting started</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="sect1"><a href="sec_gettingstarted.html#unicode">How to type Unicode symbols</a></span></dt><dt><span class="sect1"><a href="cicbrowser.html">Browsing and searching</a></span></dt><dd><dl><dt><span class="sect2"><a href="cicbrowser.html#browsinglib">Browsing the library</a></span></dt><dt><span class="sect2"><a href="cicbrowser.html#aboutproof">Looking at a proof under development</a></span></dt><dt><span class="sect2"><a href="cicbrowser.html#whelp">Searching the library</a></span></dt></dl></dd><dt><span class="sect1"><a href="authoring.html">Authoring</a></span></dt><dd><dl><dt><span class="sect2"><a href="authoring.html#compilation">How to compile a script</a></span></dt><dt><span class="sect2"><a href="authoring.html#authoringinterface">The authoring interface</a></span></dt></dl></dd></dl></div><p> If you are already familiar with the Calculus of (Co)Inductive
+  Constructions (CIC) and with interactive theorem provers with procedural
+  proof languages (expecially Coq), getting started with Matita is relatively
+  easy. You just need to learn how to type Unicode symbols, how to browse
+  and search the library and how to author a proof script.</p><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="unicode"></a>How to type Unicode symbols</h2></div></div></div><p>Unicode characters can be typed in several ways:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Using the "Ctrl+Shift+Unicode code" standard Gnome shortcut. E.g. Ctrl+Shift+3a9 generates "Ω".</p></li><li class="listitem"><p>Typing the ligature "\name" where "name"
+                    is a standard Unicode or LaTeX name for the character or an 
+                    ASCII art resembling the shape of the character. Pressing
+      "Alt+L" or Space or Enter just after the last character 
+      of the name converts
+      the ligature to the Unicode symbol. 
+      E.g. "\Delta" followed by Alt+L generates
+      "Δ", while pressing Alt-L after "=&gt;" generates
+      "⇒"</p></li><li class="listitem"><p>Typing a symbol and rotating trough its equivalence class
+                  with Alt-L. E.g. pressing Alt-L after an  "l"
+                  generates a "λ", while pressing Alt-L after an
+                  "→" once generates "⇉" and pressing
+                  Alt-L again generates "⇒".
+         </p></li></ul></div><p>
+    The comprehensive list of symbols names or shortcuts and their equivalence
+    classes is available clicking on the "TeX/UTF-8 table" item
+    of the "View" menu.
+    </p><p>
+           There is a memory mechanism related to equivalence classes that
+           remembers your last choice, making it the default one. For example,
+           if you use "_" to generate "⎻" 
+           (that is the third choice, after "⎽" and "⎼"), 
+           the next time you type Alt-L
+           after "_" you immediately get "⎻".
+    </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="matita.conf.xml.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="cicbrowser.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Configuring Matita </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Browsing and searching</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_gettingstarted.xml b/helm/www/matita/docs/manual-0.5.9/sec_gettingstarted.xml
new file mode 100644 (file)
index 0000000..e18f3a0
--- /dev/null
@@ -0,0 +1,171 @@
+
+<!-- ============= Getting started ============================== -->
+
+<chapter id="sec_gettingstarted">
+  <title>Getting started</title>
+  <para> If you are already familiar with the Calculus of (Co)Inductive
+  Constructions (CIC) and with interactive theorem provers with procedural
+  proof languages (expecially Coq), getting started with Matita is relatively
+  easy. You just need to learn how to type Unicode symbols, how to browse
+  and search the library and how to author a proof script.</para>
+
+  <sect1 id="unicode">
+   <title>How to type Unicode symbols</title>
+   <para>Unicode characters can be typed in several ways:</para>
+    <itemizedlist>
+      <listitem><para>Using the &quot;Ctrl+Shift+Unicode code&quot; standard Gnome shortcut. E.g. Ctrl+Shift+3a9 generates &quot;Ω&quot;.</para>
+     </listitem>
+     <listitem><para>Typing the ligature &quot;\name&quot; where &quot;name&quot;
+                    is a standard Unicode or LaTeX name for the character or an 
+                    ASCII art resembling the shape of the character. Pressing
+      &quot;Alt+L&quot; or Space or Enter just after the last character 
+      of the name converts
+      the ligature to the Unicode symbol. 
+      E.g. &quot;\Delta&quot; followed by Alt+L generates
+      &quot;Δ&quot;, while pressing Alt-L after &quot;=>&quot; generates
+      &quot;⇒&quot;</para>
+     </listitem>
+     <listitem>
+            <para>Typing a symbol and rotating trough its equivalence class
+                  with Alt-L. E.g. pressing Alt-L after an  &quot;l&quot;
+                  generates a &quot;λ&quot;, while pressing Alt-L after an
+                  &quot;→&quot; once generates &quot;⇉&quot; and pressing
+                  Alt-L again generates &quot;⇒&quot;.
+         </para>
+     </listitem>
+    </itemizedlist>
+    <para>
+    The comprehensive list of symbols names or shortcuts and their equivalence
+    classes is available clicking on the &quot;TeX/UTF-8 table&quot; item
+    of the &quot;View&quot; menu.
+    </para>
+    <para>
+           There is a memory mechanism related to equivalence classes that
+           remembers your last choice, making it the default one. For example,
+           if you use &quot;_&quot; to generate &quot;⎻&quot; 
+           (that is the third choice, after &quot;⎽&quot; and &quot;⎼&quot;), 
+           the next time you type Alt-L
+           after &quot;_&quot; you immediately get &quot;⎻&quot;.
+    </para>
+  </sect1>
+  <sect1 id="cicbrowser">
+   <title>Browsing and searching</title>
+   <para>The CIC browser is used to browse and search the library.
+    You can open a new CIC browser selecting &quot;New Cic Browser&quot;
+    from the &quot;View&quot; menu of Matita, or by pressing &quot;F3&quot;.
+    The CIC browser is similar to a traditional Web browser.</para>
+   <sect2 id="browsinglib">
+    <title>Browsing the library</title>
+    <para>To browse the library, type in the location bar the absolute URI of
+    the theorem, definition or library fragment you are interested in.
+    &quot;cic:/&quot; is the root of the library. Contributions developed
+    in Matita are under &quot;cic:/matita&quot;; all the others are
+    part of the library of Coq.</para>
+    <para>Following the hyperlinks it is possible to navigate in the Web
+    of mathematical notions. Proof are rendered in pseudo-natural language
+    and mathematical notation is used for formulae. For now, mathematical
+    notation must be included in the current script to be activated, but we
+    plan to remove this limitation.</para>
+   </sect2>
+   <sect2 id="aboutproof">
+    <title>Looking at a proof under development</title>
+    <para>A proof under development is not yet part of the library.
+     The special URI &quot;about:proof&quot; can be used to browse the
+     proof currently under development, if there is one.
+     The &quot;home&quot; button of the CIC browser sets the location bar to
+     &quot;about:proof&quot;.
+    </para>
+   </sect2>
+   <sect2 id="whelp">
+    <title>Searching the library</title>
+    <para>The query bar of the CIC browser can be used to search the library
+     of Matita for theorems or definitions that match certain criteria.
+     The criteria is given by typing a term in the query bar and selecting
+     an action in the drop down menu right of it.</para>
+    <sect3 id="locate">
+     <title>Searching by name</title>
+     <para>     &TODO;</para>
+   </sect3>
+    <sect3 id="hint">
+     <title>List of lemmas that can be applied</title>
+     <para>     &TODO;</para>
+   </sect3>
+    <sect3 id="match">
+     <title>Searching by exact match</title>
+     <para>     &TODO;</para>
+   </sect3>
+    <sect3 id="elim">
+     <title>List of elimination principles for a given type</title>
+     <para>     &TODO;</para>
+   </sect3>
+    <sect3 id="instance">
+     <title>Searching by instantiation</title>
+     <para>     &TODO;</para>
+   </sect3>
+   </sect2>
+  </sect1>
+  <sect1 id="authoring">
+   <title>Authoring</title>
+   <sect2 id="compilation">
+   <title>How to compile a script</title>
+   <para>
+       Scripts are compiled to base URIs. Base URIs are of the form
+       &quot;cic:/matita/path&quot; and are given once for all for a set
+       of scripts using the &quot;root&quot; file. 
+   </para>
+   <para>
+       A &quot;root&quot; file has to be placed in the root of a script set,
+       for example, consider the following files and directories, and
+       assume you keep files in &quot;list&quot; separated from files
+       in &quot;sort&quot; (for example the former directory may contain
+       functions and proofs about lists, while latter sorting algorithms
+       for lists):
+<programlisting><![CDATA[
+  list/
+    list.ma (* depending just on the standard library *)
+    utils/
+      swap.ma (* including list.ma *)
+  sort/
+    qsort.ma (* including utils/swap.ma *)
+]]></programlisting>
+       To be able to compile properly the contents of &quot;list&quot;
+       a file called root has to be placed in it. The file should be like
+       the following snippet.
+<programlisting><![CDATA[
+  baseuri=cic:/matita/mydatastructures
+]]></programlisting>
+       This file tells &appname; that objects generated by 
+       &quot;list.ma&quot; have to be placed in 
+       &quot;cic:/matita/mydatastructures/list&quot; while 
+       objects generated by 
+       &quot;swap.ma&quot; have to be placed in 
+       &quot;cic:/matita/mydatastructures/utils/swap&quot;.
+  </para>
+  <para>
+       Once you created the root file, you must generate a depend file.
+       Enter the &quot;list&quot; directory (the root of yuor file set)
+       and type &quot;matitadep&quot;. Remember to regenerate the depend file
+       every time you alter the dependencies of your files (for example 
+       including other scripts).
+       You can now compile you files typing &quot;matitac&quot;.
+  </para>
+  <para>
+         To compile the &quot;sort&quot; directory, create a root file
+         in &quot;sort/&quot; like the following one and then run 
+         &quot;matitadep&quot;.
+<programlisting><![CDATA[
+  baseuri=cic:/matita/myalgorithms
+  include_paths=../list
+]]></programlisting>
+       The include_paths field can declare a list of paths separated by space.
+       Please omit any &quot;/&quot; from the end of base URIs or paths.
+  </para>
+ </sect2>
+   <sect2 id="authoringinterface">
+    <title>The authoring interface</title>
+    <para>&TODO;</para>
+   </sect2>
+ </sect1>
+</chapter>
+
+
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_install.html b/helm/www/matita/docs/manual-0.5.9/sec_install.html
new file mode 100644 (file)
index 0000000..a43b92c
--- /dev/null
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 2. Installation</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="prev" href="WrtCoq.html" title="Matita vs Coq" /><link rel="next" href="inst_from_src.html" title="Installing from sources" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 2. Installation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="WrtCoq.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="inst_from_src.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="sec_install"></a>Chapter 2. Installation</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="sect1"><a href="sec_install.html#inst_livecd">Using the LiveCD</a></span></dt><dd><dl><dt><span class="sect2"><a href="sec_install.html#make_vmachine">Creating the virtual machine</a></span></dt><dt><span class="sect2"><a href="sec_install.html#idp68645040">Sharing files with the real PC</a></span></dt></dl></dd><dt><span class="sect1"><a href="inst_from_src.html">Installing from sources</a></span></dt><dd><dl><dt><span class="sect2"><a href="inst_from_src.html#get_source_code">Getting the source code</a></span></dt><dt><span class="sect2"><a href="inst_from_src.html#build_requirements">Requirements</a></span></dt><dt><span class="sect2"><a href="inst_from_src.html#database_setup">(optional)  MySQL  setup</a></span></dt><dt><span class="sect2"><a href="inst_from_src.html#build_instructions">Compiling and installing</a></span></dt></dl></dd><dt><span class="sect1"><a href="matita.conf.xml.html">Configuring Matita</a></span></dt></dl></div><p>
+         Matita is a quite complex piece of software, we thus recommend
+         you to either install al precompiled version or use the LiveCD.
+         If you are running Debian GNU/Linux (or one of its derivatives
+         like Ubuntu), you can install matita typing
+          </p><pre class="programlisting"> aptitude install matita matita-standard-library </pre><p>
+          If you are running MacOSX or Windows, give the LiveCD a try before
+         trying to compile Matita from its sources.
+  </p><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="inst_livecd"></a>Using the LiveCD</h2></div></div></div><p>
+           In the following, we will assume you have installed 
+           <a class="ulink" href="http://www.virtualbox.org" target="_top">virtualbox</a>
+           for your platform and downloaded the .iso image of the LiveCD
+    </p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="make_vmachine"></a>Creating the virtual machine</h3></div></div></div><p>
+           Click on the New button, a wizard will popup, you should ask to
+           its questions as follows
+      </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p> 
+               The name should be something like Matita, but can
+               be any meaningful string.
+             </p></li><li class="listitem"><p> 
+               The OS type should be Debian
+              </p></li><li class="listitem"><p> 
+               The base memory size can be 256 mega bytes, but you may
+               want to increase it if you are going to work with huge
+               formalizations.
+            </p></li><li class="listitem"><p> 
+        The boot hard disk should be no hard disk. It may complain
+        that this choice is not common, but it is right, since you
+        will run a LiveCD you do not need to emulate an hard drive.
+         </p></li></ol></div><p>
+      Now that you are done with the creation of the virtual machine, 
+      you need to insert the LiveCD in the virtual cd reader unit.
+      </p><div class="figure"><a id="idp68630080"></a><p class="title"><strong>Figure 2.1. The brand new virtual machine</strong></p><div class="figure-contents"><div class="mediaobject"><img src="figures/vbox1.png" alt="The breand new virtual machine" /></div></div></div><br class="figure-break" /><p>
+      Click on CD/DVD-ROM (that should display something like: Not mouted).
+      Then click on mount CD/DVD drive and select the ISO image
+      option. The combo-box should display no available image, you need to 
+      add the ISO image you downloaded from the Matita website clicking on
+      the button near the combo-box. 
+      to start the virtual machine. 
+    </p><div class="figure"><a id="idp68633472"></a><p class="title"><strong>Figure 2.2. Mounting an ISO image</strong></p><div class="figure-contents"><div class="mediaobject"><img src="figures/vbox2.png" alt="Mounting an ISO image" /></div></div></div><br class="figure-break" /><p>
+      In the newely opened window click 
+      the Add button
+    </p><div class="figure"><a id="idp68637552"></a><p class="title"><strong>Figure 2.3. Choosing the ISO image</strong></p><div class="figure-contents"><div class="mediaobject"><img src="figures/vbox3.png" alt="Choosing the ISO image" /></div></div></div><br class="figure-break" /><p>
+      A new windows will pop-up: choose the file you downloaded
+      (usually matita-version.iso) and click open.
+    </p><div class="figure"><a id="idp68641216"></a><p class="title"><strong>Figure 2.4. Choosing the ISO image</strong></p><div class="figure-contents"><div class="mediaobject"><img src="figures/vbox35.png" alt="Choosing the ISO image" /></div></div></div><br class="figure-break" /><p>
+          Now select the new entry you just added as the CD image
+          you want to insert in the virtual CD drive.
+          You are now ready to start the virtual machine. 
+    </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="idp68645040"></a>Sharing files with the real PC</h3></div></div></div><p>
+                 The virtual machine Matita will run on, has its own file 
+                 system, that is completely separated from the one of your 
+                 real PC (thus your files are not available in the
+                 emulated environment) and moreover it is a non-presistent
+                 file system (thus you data is lost every time you
+                 turn off the virtual machine).
+          </p><p>
+                 Virtualbox allows you to share a real folder (beloging
+                 to your real PC) with the emulated computer. Since this 
+                 folder is persistent, you are encouraged to put
+                 your work there, so that it is not lost when the virtual 
+                 machine is powered off.
+          </p><p>
+                 The first step to set up a shared folder is to click
+                 on the shared folder configuration entry
+                 of the virtual machine.
+         </p><div class="figure"><a id="idp68647616"></a><p class="title"><strong>Figure 2.5. Set up a shared folder</strong></p><div class="figure-contents"><div class="mediaobject"><img src="figures/vbox4.png" alt="Shared folder" /></div></div></div><br class="figure-break" /><p>
+                 Then you shuld add a shared folder clicking on the 
+                 plus icon on the right
+         </p><div class="figure"><a id="idp68651136"></a><p class="title"><strong>Figure 2.6. Choosing the folder to share</strong></p><div class="figure-contents"><div class="mediaobject"><img src="figures/vbox5.png" alt="Shared folder" /></div></div></div><br class="figure-break" /><p>
+                 Then you have to specify the real PC folder you want to share
+                 and name it. A reasonable folder to share is /home on 
+                 a standard Unix system, while /Users on MaxOSX.
+                 The name you give to the share is important, you should
+                 remember it.
+         </p><div class="figure"><a id="idp68654928"></a><p class="title"><strong>Figure 2.7. Naming the shared folder</strong></p><div class="figure-contents"><div class="mediaobject"><img src="figures/vbox6.png" alt="Shared folder" /></div></div></div><br class="figure-break" /><p>
+                 Once your virtual machine is up and running, you can
+                 mount (that meand have access to) the shared folder 
+                 by clicking on the Mount VirtualBox share icon, and typing
+                 the name of the share.
+         </p><div class="figure"><a id="idp68658672"></a><p class="title"><strong>Figure 2.8. Using it from the virtual machine</strong></p><div class="figure-contents"><div class="mediaobject"><img src="figures/vbox7.png" alt="Shared folder at work" /></div></div></div><br class="figure-break" /><p>
+                 A window will then pop-up, and its content will be the
+                 the content of the real PC folder.
+         </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="WrtCoq.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="inst_from_src.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Matita vs Coq </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Installing from sources</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_install.xml b/helm/www/matita/docs/manual-0.5.9/sec_install.xml
new file mode 100644 (file)
index 0000000..92e9d62
--- /dev/null
@@ -0,0 +1,684 @@
+
+<!-- ============= Installation ============================== -->
+
+<chapter id="sec_install">
+  <title>Installation</title>
+
+  <para>
+         &appname; is a quite complex piece of software, we thus recommend
+         you to either install al precompiled version or use the LiveCD.
+         If you are running Debian GNU/Linux (or one of its derivatives
+         like Ubuntu), you can install matita typing
+          <programlisting><![CDATA[ aptitude install matita matita-standard-library ]]></programlisting>
+          If you are running MacOSX or Windows, give the LiveCD a try before
+         trying to compile &appname; from its sources.
+  </para>
+  
+  <sect1 id="inst_livecd">
+    <title>Using the LiveCD</title>
+
+    <para>
+           In the following, we will assume you have installed 
+           <ulink type="http" url="http://www.virtualbox.org">virtualbox</ulink>
+           for your platform and downloaded the .iso image of the LiveCD
+    </para>
+
+    <sect2 id="make_vmachine">
+           <title>Creating the virtual machine</title>
+    <para>
+           Click on the New button, a wizard will popup, you should ask to
+           its questions as follows
+      <orderedlist>
+             <listitem><para> 
+               The name should be something like &appname;, but can
+               be any meaningful string.
+             </para></listitem>
+             <listitem><para> 
+               The OS type should be Debian
+              </para></listitem>
+             <listitem><para> 
+               The base memory size can be 256 mega bytes, but you may
+               want to increase it if you are going to work with huge
+               formalizations.
+            </para></listitem>
+         <listitem><para> 
+        The boot hard disk should be no hard disk. It may complain
+        that this choice is not common, but it is right, since you
+        will run a LiveCD you do not need to emulate an hard drive.
+         </para></listitem>
+      </orderedlist>
+      Now that you are done with the creation of the virtual machine, 
+      you need to insert the LiveCD in the virtual cd reader unit.
+      </para>
+   <figure><title>The brand new virtual machine</title>
+     <mediaobject>
+       <imageobject>
+         <imagedata fileref="figures/vbox1.png" format="PNG" srccredit="Enrico Tassi"/>
+       </imageobject>
+       <textobject><phrase>The breand new virtual machine</phrase></textobject>
+     </mediaobject>
+   </figure>
+   <para>
+      Click on CD/DVD-ROM (that should display something like: Not mouted).
+      Then click on mount CD/DVD drive and select the ISO image
+      option. The combo-box should display no available image, you need to 
+      add the ISO image you downloaded from the &appname; website clicking on
+      the button near the combo-box. 
+      to start the virtual machine. 
+    </para>
+   <figure><title>Mounting an ISO image</title>
+     <mediaobject>
+       <imageobject>
+         <imagedata fileref="figures/vbox2.png" format="PNG" srccredit="Enrico Tassi"/>
+       </imageobject>
+       <textobject><phrase>Mounting an ISO image</phrase></textobject>
+     </mediaobject>
+   </figure>
+   <para>
+      In the newely opened window click 
+      the Add button
+    </para>
+   <figure><title>Choosing the ISO image</title>
+     <mediaobject>
+       <imageobject>
+         <imagedata fileref="figures/vbox3.png" format="PNG" srccredit="Enrico Tassi"/>
+       </imageobject>
+       <textobject><phrase>Choosing the ISO image</phrase></textobject>
+     </mediaobject>
+   </figure>
+   <para>
+      A new windows will pop-up: choose the file you downloaded
+      (usually matita-version.iso) and click open.
+    </para>
+   <figure><title>Choosing the ISO image</title>
+     <mediaobject>
+       <imageobject>
+         <imagedata fileref="figures/vbox35.png" format="PNG" srccredit="Enrico Tassi"/>
+       </imageobject>
+       <textobject><phrase>Choosing the ISO image</phrase></textobject>
+     </mediaobject>
+   </figure>
+   <para>
+          Now select the new entry you just added as the CD image
+          you want to insert in the virtual CD drive.
+          You are now ready to start the virtual machine. 
+    </para>
+    </sect2>
+    <sect2>
+       <title>Sharing files with the real PC</title>
+         <para>
+                 The virtual machine &appname; will run on, has its own file 
+                 system, that is completely separated from the one of your 
+                 real PC (thus your files are not available in the
+                 emulated environment) and moreover it is a non-presistent
+                 file system (thus you data is lost every time you
+                 turn off the virtual machine).
+          </para>
+          <para>
+                 Virtualbox allows you to share a real folder (beloging
+                 to your real PC) with the emulated computer. Since this 
+                 folder is persistent, you are encouraged to put
+                 your work there, so that it is not lost when the virtual 
+                 machine is powered off.
+          </para>
+         <para>
+                 The first step to set up a shared folder is to click
+                 on the shared folder configuration entry
+                 of the virtual machine.
+         </para>
+          <figure><title>Set up a shared folder</title>
+            <mediaobject>
+              <imageobject>
+                     <imagedata fileref="figures/vbox4.png" 
+                             format="PNG" srccredit="Enrico Tassi"/>
+              </imageobject>
+              <textobject><phrase>Shared folder</phrase></textobject>
+            </mediaobject>
+          </figure>
+         <para>
+                 Then you shuld add a shared folder clicking on the 
+                 plus icon on the right
+         </para>
+          <figure><title>Choosing the folder to share</title>
+            <mediaobject>
+              <imageobject>
+                     <imagedata fileref="figures/vbox5.png" 
+                             format="PNG" srccredit="Enrico Tassi"/>
+              </imageobject>
+              <textobject><phrase>Shared folder</phrase></textobject>
+            </mediaobject>
+          </figure>
+         <para>
+                 Then you have to specify the real PC folder you want to share
+                 and name it. A reasonable folder to share is /home on 
+                 a standard Unix system, while /Users on MaxOSX.
+                 The name you give to the share is important, you should
+                 remember it.
+         </para>
+          <figure><title>Naming the shared folder</title>
+            <mediaobject>
+              <imageobject>
+                     <imagedata fileref="figures/vbox6.png" 
+                             format="PNG" srccredit="Enrico Tassi"/>
+              </imageobject>
+              <textobject><phrase>Shared folder</phrase></textobject>
+            </mediaobject>
+          </figure>
+         <para>
+                 Once your virtual machine is up and running, you can
+                 mount (that meand have access to) the shared folder 
+                 by clicking on the Mount VirtualBox share icon, and typing
+                 the name of the share.
+         </para>
+          <figure><title>Using it from the virtual machine</title>
+            <mediaobject>
+              <imageobject>
+                     <imagedata fileref="figures/vbox7.png" 
+                             format="PNG" srccredit="Enrico Tassi"/>
+              </imageobject>
+              <textobject><phrase>Shared folder at work</phrase></textobject>
+            </mediaobject>
+          </figure>
+         <para>
+                 A window will then pop-up, and its content will be the
+                 the content of the real PC folder.
+         </para>
+    </sect2>
+
+  </sect1>
+
+  <sect1 id="inst_from_src">
+    <title>Installing from sources</title>
+
+    <para>Install &appname; from the sources is hard, you have been warned!
+    </para>
+
+    <sect2 id="get_source_code">
+      <title>Getting the source code</title>
+
+      <para>You can get the &appname; source code in two ways:
+       <orderedlist>
+
+         <listitem> <para> go to the <ulink type="http"
+               url="http://matita.cs.unibo.it/download.shtml">download
+               page</ulink> and get the <ulink type="http"
+               url="http://matita.cs.unibo.it/sources/matita-latest.tar.gz"
+               >latest released source tarball</ulink>;</para> </listitem>
+
+         <listitem> <para> get the development sources from <ulink type="http"
+               url="http://helm.cs.unibo.it/websvn/listing.php?repname=helm&amp;path=%2F&amp;sc=0">our
+               SVN repository</ulink>. You will need the
+             <application>components/</application> and
+             <application>matita/</application> directories from the
+             <filename>trunk/helm/software/</filename> directory, plus the
+             <filename>configure</filename> and <filename>Makefile*</filename>
+             stuff from the same directory.  </para>
+
+             <para>In this case you will need to run
+               <command>autoconf</command> before proceding with the building
+               instructions below.</para> </listitem>
+
+       </orderedlist>
+      </para>
+      
+    </sect2>
+
+    <sect2 id="build_requirements">
+      <title>Requirements</title>
+
+      <para>In order to build &appname; from sources you will need some
+       tools and libraries. They are listed below.
+
+       <note>
+         <title>Note for Debian (and derivatives) users</title>
+
+         <para>If you are running a 
+                 <ulink type="http"
+                         url="http://www.debian.org">Debian GNU/Linux</ulink>
+                 distribution,
+                 or any of its derivative like <ulink type="http"
+                         url="http://ubuntu.com">Ubuntu</ulink>, 
+                 you can use APT to install all the required tools and
+                 libraries since they are all part of the Debian archive. 
+         </para>         
+         <para>          
+                 apt-get install ocaml ocaml-findlib libgdome2-ocaml-dev liblablgtk2-ocaml-dev liblablgtkmathview-ocaml-dev liblablgtksourceview-ocaml-dev libsqlite3-ocaml-dev libocamlnet-ocaml-dev libzip-ocaml-dev libhttp-ocaml-dev ocaml-ulex08 libexpat-ocaml-dev libmysql-ocaml-dev camlp5
+         </para>         
+         <para>          
+                 An official debian package is going to be added to the
+                 archive too.
+         </para>
+
+       </note>
+
+       <variablelist>
+         <title>Required tools and libraries</title>
+
+         <varlistentry>
+           <term>
+             <application> <ulink type="http"
+                 url="http://caml.inria.fr">OCaml</ulink> </application>
+           </term>
+           <listitem>
+             <para> the Objective Caml compiler, version 3.09 or above </para>
+           </listitem>
+         </varlistentry>
+
+         <varlistentry>
+           <term>
+             <application> <ulink type="http"
+                 url="http://www.ocaml-programming.de/packages/">Findlib</ulink>
+             </application>
+           </term>
+           <listitem>
+             <para> OCaml package manager, version 1.1.1 or above</para>
+           </listitem>
+         </varlistentry>
+
+         <varlistentry>
+           <term>
+             <application> <ulink type="http"
+                 url="http://www.xs4all.nl/~mmzeeman/ocaml/">OCaml
+                 Expat</ulink> </application>
+           </term>
+           <listitem>
+             <para>OCaml bindings for the <application><ulink type="http"
+                   url="http://expat.sourceforge.net/">expat</ulink>
+                 library</application> </para>
+           </listitem>
+         </varlistentry>
+
+         <varlistentry>
+           <term>
+             <application> <ulink type="http"
+                 url="http://gmetadom.sourceforge.net/">GMetaDOM</ulink>
+             </application>
+           </term>
+           <listitem>
+             <para>OCaml bindings for the <application><ulink type="http"
+                   url="http://gdome2.cs.unibo.it/">Gdome 2</ulink>
+                 library</application></para>
+           </listitem>
+         </varlistentry>
+
+         <varlistentry>
+           <term>
+             <application> <ulink type="http"
+                 url="http://www.bononia.it/~zack/ocaml-http.en.html">OCaml
+                 HTTP</ulink> </application>
+           </term>
+           <listitem>
+             <para> OCaml library to write HTTP daemons (and clients) </para>
+           </listitem>
+         </varlistentry>
+
+         <varlistentry>
+           <term>
+             <application> <ulink type="http"
+                 url="http://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/lablgtk.html">LablGTK</ulink>
+             </application>
+           </term>
+           <listitem>
+             <para> OCaml bindings for the <application> <ulink type="http"
+                   url="http://www.gtk.org"> GTK+</ulink> library
+             </application>, version 2.6.0 or above </para>
+           </listitem>
+         </varlistentry>
+
+         <varlistentry>
+           <term>
+             <application> <ulink type="http"
+                 url="http://helm.cs.unibo.it/mml-widget/">GtkMathView</ulink>
+             </application>
+           </term>
+           <term>
+             <application> <ulink type="http"
+                 url="http://helm.cs.unibo.it/mml-widget/">LablGtkMathView</ulink>
+             </application>
+           </term>
+           <listitem>
+             <para> GTK+ widget to render <ulink type="http"
+                 url="http://www.w3.org/Math/">MathML</ulink> documents and its
+               OCaml bindings </para>
+           </listitem>
+         </varlistentry>
+
+         <varlistentry>
+           <term>
+             <application> <ulink type="http"
+                 url="http://gtksourceview.sourceforge.net/">GtkSourceView</ulink>
+             </application>
+           </term>
+           <term>
+             <application> <ulink type="http"
+                 url="http://helm.cs.unibo.it/software/lablgtksourceview/">LablGtkSourceView</ulink>
+             </application>
+           </term>
+           <listitem>
+             <para> extension for the GTK+ text widget (adding the typical
+               features of source code editors) and its OCaml bindings </para>
+           </listitem>
+         </varlistentry>
+
+         <varlistentry>
+           <term> &MYSQL; </term>
+           <term>
+             <application> <ulink type="http"
+                 url="http://raevnos.pennmush.org/code/ocaml-mysql/">OCaml
+                 MySQL</ulink> </application>
+           </term>
+           <listitem>
+             <para> SQL database and OCaml bindings for its client-side library
+             </para>
+             <para> The SQL database itself is not strictly needed to run
+               &appname;, but the client libraries are.</para>
+           </listitem>
+         </varlistentry>
+
+         <varlistentry>
+           <term> &Sqlite; </term>
+           <term>
+                   <application> 
+                         <ulink type="http"
+                             url="http://ocaml.info/home/ocaml_sources.html">
+               OCaml Sqlite3
+             </ulink> </application>
+           </term>
+           <listitem>
+             <para> Sqlite database and OCaml bindings
+             </para>
+           </listitem>
+         </varlistentry>
+
+         <varlistentry>
+           <term>
+             <application> <ulink type="http"
+                 url="http://ocamlnet.sourceforge.net/">Ocamlnet</ulink>
+             </application>
+           </term>
+           <listitem>
+             <para> collection of OCaml libraries to deal with
+               application-level Internet protocols and conventions </para>
+           </listitem>
+         </varlistentry>
+
+         <varlistentry>
+           <term>
+             <application> <ulink type="http"
+                 url="http://www.cduce.org/download.html">ulex</ulink>
+             </application>
+           </term>
+           <listitem>
+             <para> Unicode lexer generator for OCaml </para>
+           </listitem>
+         </varlistentry>
+
+         <varlistentry>
+           <term>
+             <application> <ulink type="http"
+                 url="http://cristal.inria.fr/~xleroy/software.html">CamlZip</ulink>
+             </application>
+           </term>
+           <listitem>
+             <para> OCaml library to access <filename>.gz</filename> files
+             </para>
+           </listitem>
+         </varlistentry>
+
+       </variablelist> </para>
+
+    </sect2>
+
+    <sect2 id="database_setup">
+      <title>(optional) &MYSQL; setup</title>
+
+      <para> To fully exploit &appname; indexing and search capabilities 
+       on a huge metadata set you may
+       need a working &MYSQL; database. Detalied instructions on how to do
+       it can be found in the <ulink type="http"
+         url="http://dev.mysql.com/doc/">MySQL documentation</ulink>. Here you
+       can find a quick howto. </para>
+
+      <para> In order to create a database you need administrator permissions on
+       your MySQL installation, usually the root account has them. Once you
+       have the permissions, a new database can be created executing
+       <userinput>mysqladmin create matita</userinput>
+       (<emphasis>matita</emphasis> is the default database name, you can
+       change it using the <parameter>db.user</parameter> key of the
+       configuration file). </para>
+
+      <para> Then you need to grant the necessary access permissions to the
+       database user of &appname;, typing <userinput>echo "grant all privileges
+         on matita.* to helm;" | mysql matita</userinput> should do the trick
+       (<emphasis>helm</emphasis> is the default user name used by &appname; to
+       access the database, you can change it using the
+       <parameter>db.user</parameter> key of the configuration file).
+      </para>
+
+      <note>
+       <para> This way you create a database named <emphasis>matita</emphasis>
+         on which anyone claiming to be the <emphasis>helm</emphasis> user can
+         do everything (like adding dummy data or destroying the contained
+         one). It is strongly suggested to apply more fine grained permissions,
+         how to do it is out of the scope of this manual.</para>
+      </note>
+      
+    </sect2>
+
+    <sect2 id="build_instructions">
+      <title>Compiling and installing</title>
+
+      <para> Once you get the source code the installations steps should be
+       quite familiar.</para>
+
+      <para> First of all you need to configure the build process executing
+       <userinput>./configure</userinput>. This will check that all needed
+       tools and library are installed and prepare the sources for compilation
+       and installation. </para>
+       
+      <para> Quite a few (optional) arguments may be passed to the
+       <application>configure</application> command line to change build time
+       parameters. They are listed below, together with their
+       default values: </para>
+
+       <variablelist>
+         <title> <application>configure</application> command line
+           arguments</title>
+
+         <varlistentry>
+           <term>
+             <userinput>--with-runtime-dir=<replaceable>dir</replaceable></userinput>
+           </term>
+           <listitem>
+             <para>
+               (<emphasis>Default:</emphasis>
+               <filename>/usr/local/matita</filename>) Runtime base directory
+               where all &appname; stuff (executables, configuration files,
+               standard library, ...) will be installed
+             </para>
+           </listitem>
+         </varlistentry>
+
+         <varlistentry>
+           <term>
+             <userinput>--with-dbhost=<replaceable>host</replaceable></userinput>
+           </term>
+           <listitem>
+             <para>
+               (<emphasis>Default:</emphasis> localhost) Default SQL server
+               hostname. Will be used while building the standard library
+               during the installation and to create the default &appname;
+               configuration. May be changed later in configuration file.
+             </para>
+           </listitem>
+         </varlistentry>
+
+         <varlistentry>
+           <term>
+             <userinput>--enable-debug</userinput>
+           </term>
+           <listitem>
+             <para>
+               (<emphasis>Default:</emphasis> disabled) Enable debugging code.
+               Not for the casual user.
+             </para>
+           </listitem>
+         </varlistentry>
+       </variablelist>
+
+      <para> Then you will manage the build and install process using
+       <application><ulink type="http"
+           url="http://www.gnu.org/software/make/">make</ulink></application>
+       as usual. Below are reported the targets you have to invoke in sequence
+       to build and install:
+      </para>
+
+       <variablelist>
+         <title><application>make</application> targets</title>
+
+         <varlistentry>
+           <term><userinput>world</userinput></term>
+           <listitem>
+             <para>builds components needed by &appname; and &appname; itself
+               (in bytecode or native code depending
+               on the availability of the OCaml native code compiler) </para>
+           </listitem>
+         </varlistentry>
+
+         <varlistentry>
+           <term><userinput>install</userinput></term>
+           <listitem>
+             <para>installs &appname; related tools, standard library and the
+               needed runtime stuff in the proper places on the filesystem.
+             </para>
+             <para>As a part of the installation process the &appname;
+               standard library will be compiled, thus testing that the just
+               built <application>matitac</application> compiler works
+               properly.</para>
+             <para>For this step you will need a working SQL database (for
+               indexing the standard library while you are compiling it). See
+               <ulink type="http" url="#database_setup">Database setup</ulink>
+               for instructions on how to set it up.
+             </para>
+           </listitem>
+         </varlistentry>
+
+       </variablelist>
+      
+    </sect2>
+
+  </sect1>
+
+  <sect1 id="matita.conf.xml">
+    <title>Configuring &appname;</title>
+    <para>
+           The configuration file is divided in four sections. The user and
+           matita ones are self explicative and does not need user
+           intervention. Here we report a sample snippet for these two
+           sections. The remaining db and getter sections will be explained in
+           details later.
+          <programlisting>
+<![CDATA[
+  <section name="user">
+    <key name="home">$(HOME)</key>
+    <key name="name">$(USER)</key>
+  </section>
+  <section name="matita">
+    <key name="basedir">$(user.home)/.matita</key>
+    <key name="rt_base_dir">/usr/share/matita/</key>
+    <key name="owner">$(user.name)</key>
+  </section>
+]]></programlisting>
+    </para>
+   <para>
+          &appname; needs to store/fetch data and metadata. Data is essentially
+          composed of XML files, metadata is a set of tuples for a relational
+          model. Data and metadata can produced by the user or be already
+          available. Both kind of data/metadata can be local and/or remote.
+   </para>
+   <para>
+          The db section tells &appname; where to store and retrieve metadata,
+          while the getter section describes where XML files have to be
+          found. The following picture describes the suggested configuration.
+          Dashed arrows are determined by the configuration file.
+   </para>
+   <figure><title>Configuring the Databases</title>
+     <mediaobject>
+       <imageobject>
+         <imagedata fileref="figures/database.png" format="PNG" srccredit="Enrico Tassi"/>
+       </imageobject>
+       <textobject><phrase>How to configure the databases.</phrase></textobject>
+     </mediaobject>
+   </figure>
+   <para>The getter</para>
+   <para>
+          Consider the following snippet and the URI
+          <userinput>cic:/matita/foo/bar.con</userinput>. If &appname;
+          is asked to read that object it will resolve the object trough
+          the getter. Since the first two entries are equally specific
+          (longest match rule applies) first the path
+          <userinput>file://$(matita.rt_base_dir)/xml/standard-library/foo/bar.con</userinput>
+          and then <userinput>file://$(user.home)/.matita/xml/matita/foo/bar.con</userinput>
+          are inspected.
+          <programlisting>
+<![CDATA[
+  <section name="getter">
+    <key name="cache_dir">$(user.home)/.matita/getter/cache</key>
+    <key name="prefix">
+      cic:/matita/
+      file://$(matita.rt_base_dir)/xml/standard-library/
+      ro
+    </key>
+    <key name="prefix">
+      cic:/matita/
+      file://$(user.home)/.matita/xml/matita/
+    </key>
+    <key name="prefix">
+      cic:/Coq/
+      http://mowgli.cs.unibo.it/xml/
+      legacy
+    </key>
+  </section>
+]]>    
+       </programlisting> 
+       if the same URI has to be written, the former prefix is skipped
+       since it is marked as readonly (<userinput>ro</userinput>).
+       Objects resolved using the third prefix are readonly too, and are
+       retrieved using the network. There is no limit to the number of
+       prefixes the user can define. The distinction between prefixes marked
+       as readonly and legacy is that, legacy ones are really read only, while
+       the ones marked with <userinput>ro</userinput> are considered for
+       writing when &appname; is started in system mode (used to publish user
+       developments in the library space).
+   </para>
+         <para>The db</para>
+       <para>
+          The database subsystem has three fron ends: library, user and
+          legacy.  The latter is the only optional one. Every query is done on
+          every frontend, making the duplicate free union of the results.
+          The user front end kepps metadata produced by the user, and is thus
+          heavily accessed in read/write mode, while the library and legacy
+          fron ends are read only. Every front end can be connected to
+          backend, the storage actually. 
+          Consider the following snippet.
+          <programlisting>
+<![CDATA[
+  <section name="db">
+    <key name="metadata">mysql://mowgli.cs.unibo.it matita helm none legacy</key>
+    <key name="metadata">file://$(matita.rt_base_dir) metadata.db helm helm library</key>
+    <key name="metadata">file://$(matita.basedir) user.db helm helm user</key>
+  </section>
+]]>    
+       </programlisting> 
+       Here the usr database is a file (thus locally accessed trough the
+       Sqlite library) placed in the user's home directory. The library one is
+       placed in the &appname; runtime directory. The legacy fron end is
+       connected to a remote &MYSQL; based storage. Every metadata key 
+       takes a path to the storage, the name of the database, the user name,
+       a password (or <userinput>none</userinput>) and the name of the front 
+       end to which it is attached.
+   </para>
+  </sect1>
+
+</chapter>
+
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_intro.html b/helm/www/matita/docs/manual-0.5.9/sec_intro.html
new file mode 100644 (file)
index 0000000..7eb40a9
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 1. Introduction</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="prev" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="next" href="WrtCoq.html" title="Matita vs Coq" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. Introduction</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="WrtCoq.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="sec_intro"></a>Chapter 1. Introduction</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="sect1"><a href="sec_intro.html#Features">Features</a></span></dt><dt><span class="sect1"><a href="WrtCoq.html">Matita vs Coq</a></span></dt></dl></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Features"></a>Features</h2></div></div></div><p><span class="application">Matita</span> is an interactive theorem prover
+      (or proof assistant) with the following characteristics:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>It is based on a variant of the Calculus of (Co)Inductive Constructions (CIC). CIC is also the logic of the Coq proof assistant.</p></li><li class="listitem"><p>It adopts a procedural proof language, but it has a new set of small step tacticals that improve proof structuring and debugging.</p></li><li class="listitem"><p>It has a stand-alone graphical user interface (GUI) inspired by
+CtCoq/Proof General. The GUI is implemented according to the state
+of the art. In particular:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>It is based and fully integrated with Gtk/Gnome.</p></li><li class="listitem"><p>An on-line help can be browsed via the Gnome documentation browser.</p></li><li class="listitem"><p>Mathematical formulae are rendered in two dimensional notation via MathML and Unicode.</p></li></ul></div></li><li class="listitem"><p>It integrates advanced browsing and searching procedures.</p></li><li class="listitem"><p>It allows the use of the typical ambiguous mathematical notation by means of a disambiguating parser.</p></li><li class="listitem"><p>It is compatible with the library of Coq (definitions and proof objects).</p></li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="WrtCoq.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="application">Matita</span> V0.5.9
+ User Manual (rev. 0.5.9
+) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Matita vs Coq</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_intro.xml b/helm/www/matita/docs/manual-0.5.9/sec_intro.xml
new file mode 100644 (file)
index 0000000..6c22f46
--- /dev/null
@@ -0,0 +1,96 @@
+
+<!-- ============= Introduction ============================== -->
+
+<chapter id="sec_intro">
+  <title>Introduction</title>
+  <sect1 id="Features">
+    <title>Features</title>
+    <para><application>Matita</application> is an interactive theorem prover
+      (or proof assistant) with the following characteristics:</para>
+    <itemizedlist>
+      <listitem>
+        <para>It is based on a variant of the Calculus of (Co)Inductive Constructions (CIC). CIC is also the logic of the Coq proof assistant.</para>
+      </listitem>
+      <listitem>
+        <para>It adopts a procedural proof language, but it has a new set of small step tacticals that improve proof structuring and debugging.</para>
+      </listitem>
+      <listitem>
+        <para>It has a stand-alone graphical user interface (GUI) inspired by
+CtCoq/Proof General. The GUI is implemented according to the state
+of the art. In particular:</para>
+        <itemizedlist>
+          <listitem>
+            <para>It is based and fully integrated with Gtk/Gnome.</para>
+          </listitem>
+          <listitem>
+            <para>An on-line help can be browsed via the Gnome documentation browser.</para>
+          </listitem>
+          <listitem>
+            <para>Mathematical formulae are rendered in two dimensional notation via MathML and Unicode.</para>
+          </listitem>
+        </itemizedlist>
+      </listitem>
+      <listitem>
+        <para>It integrates advanced browsing and searching procedures.</para>
+      </listitem>
+      <listitem>
+        <para>It allows the use of the typical ambiguous mathematical notation by means of a disambiguating parser.</para>
+      </listitem>
+      <listitem>
+        <para>It is compatible with the library of Coq (definitions and proof objects).</para>
+      </listitem>
+    </itemizedlist>
+  </sect1>
+  <sect1 id="WrtCoq">
+    <title>Matita vs Coq</title>
+    <para>
+      The system shares a common look&amp;feel with the Coq proof assistant
+      and its graphical user interface. The two systems have the same logic,
+      very close proof languages and similar sets of tactics. Moreover,
+      Matita is compatible with the library of Coq.
+      From the user point of view the main lacking features
+      with respect to Coq are:
+    </para>
+    <itemizedlist>
+      <listitem>
+        <para>proof extraction;</para>
+      </listitem>
+      <listitem>
+        <para>an extensible language of tactics;</para>
+      </listitem>
+      <listitem>
+        <para>automatic implicit arguments;</para>
+      </listitem>
+      <listitem>
+        <para>several ad-hoc decision procedures;</para>
+      </listitem>
+      <listitem>
+        <para>several rarely used variants for most of the tactics;</para>
+      </listitem>
+      <listitem>
+        <para>sections and local variables. To maintain compatibility with the library of Coq, theorems defined inside sections are abstracted by name over the section variables; their instances are explicitly applied to actual arguments by means of explicit named substitutions.</para>
+      </listitem>
+    </itemizedlist>
+    <para>
+      Still from the user point of view, the main differences with respect
+      to Coq are:
+    </para>
+    <itemizedlist>
+      <listitem>
+        <para>the language of tacticals that allows execution of partial tactical application;</para>
+      </listitem>
+      <listitem>
+        <para>the unification of the concept of metavariable and existential variable;</para>
+      </listitem>
+      <listitem>
+        <para>terms with subterms that cannot be inferred are always allowed as arguments of tactics or other commands;</para>
+      </listitem>
+      <listitem>
+        <para>ambiguous terms are disambiguated by direct interaction with the user;</para>
+      </listitem>
+      <listitem>
+        <para>theorems and definitions in the library are always accessible without needing to require/include them; right now, only notation needs to be included to become active, but we plan to remove this limitation.</para>
+      </listitem>
+    </itemizedlist>
+  </sect1>
+</chapter>
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_license.html b/helm/www/matita/docs/manual-0.5.9/sec_license.html
new file mode 100644 (file)
index 0000000..ad0755d
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 10. License</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="prev" href="command_inline.html" title="inline" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 10. License</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="command_inline.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> </td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="sec_license"></a>Chapter 10. License</h1></div></div></div><p> Both Matita and this document are part of HELM, an Hypertextual,
+  Electronic Library of Mathematics, developed at the Computer Science
+  Department, University of Bologna, Italy. </p><p> HELM is free software; you can redistribute it and/or modify it under
+  the terms of the GNU General Public License as published by the Free Software
+  Foundation; either version 2 of the License, or (at your option) any later
+  version.  </p><p> HELM is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+</p><p> You should have received a copy of the GNU General Public License along
+  with HELM; if not, write to the Free Software Foundation, Inc., 51 Franklin
+  St, Fifth Floor, Boston, MA  02110-1301  USA.  A copy of the GNU General
+  Public License is available at <a class="ulink" href="http://www.gnu.org/copyleft/gpl.html" target="_top">this link</a>. </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="command_inline.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top">inline </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_license.xml b/helm/www/matita/docs/manual-0.5.9/sec_license.xml
new file mode 100644 (file)
index 0000000..47e1461
--- /dev/null
@@ -0,0 +1,8 @@
+
+<!-- ============= Application License ============================= -->
+
+<chapter id="sec_license">
+  <title>License</title>
+  &legal;
+</chapter>
+
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_tacticals.html b/helm/www/matita/docs/manual-0.5.9/sec_tacticals.html
new file mode 100644 (file)
index 0000000..3f48d28
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 6. Tacticals</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="prev" href="ch05s02.html" title="interpretation" /><link rel="next" href="proofstatus.html" title="The proof status" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 6. Tacticals</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch05s02.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="proofstatus.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="sec_tacticals"></a>Chapter 6. Tacticals</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="sect1"><a href="sec_tacticals.html#idp70716848">Interactive proofs and definitions</a></span></dt><dt><span class="sect1"><a href="proofstatus.html">The proof status</a></span></dt><dt><span class="sect1"><a href="tacticals.html">Tacticals</a></span></dt></dl></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="idp70716848"></a>Interactive proofs and definitions</h2></div></div></div><p>
+    An interactive definition is started by giving a
+    <a class="link" href="axiom_definition_declaration.html#definition" title="definition id[: term] [≝ term]">definition</a> command omitting
+    the definiens.
+    An interactive proof is started by using one of the
+    <a class="link" href="proofs.html" title="Proofs">proof commands</a> omitting
+    an explicit proof term.
+   </p><p>An interactive proof or definition can and must be terminated by
+    a <a class="link" href="command_qed.html" title="qed">qed</a> command when no more sequents are
+    left to prove. Between the command that starts the interactive session and
+    the qed command the user must provide a procedural proof script made
+    of <a class="link" href="sec_tactics.html" title="Chapter 7. Tactics">tactics</a> structured by means of
+    <a class="link" href="tacticals.html" title="Tacticals">tacticals</a>.</p><p>In the tradition of the LCF system, tacticals can be considered
+    higher order tactics. Their syntax is structured and they are executed
+    atomically. On the contrary, in Matita the syntax of several tacticals is
+    destructured into a sequence of tokens and tactics in such a way that is
+    is possible to stop execution after every single token or tactic.
+    The original semantics is preserved: the execution of the whole sequence
+    yields the result expected by the original LCF-like tactical.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch05s02.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="proofstatus.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">interpretation </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> The proof status</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_tacticals.xml b/helm/www/matita/docs/manual-0.5.9/sec_tacticals.xml
new file mode 100644 (file)
index 0000000..2f84ae7
--- /dev/null
@@ -0,0 +1,305 @@
+
+<!-- ============ Tacticals ====================== -->
+<chapter id="sec_tacticals">
+ <title>Tacticals</title>
+ <sect1>
+   <title>Interactive proofs and definitions</title>
+   <para>
+    An interactive definition is started by giving a
+    <link linkend="definition">definition</link> command omitting
+    the definiens.
+    An interactive proof is started by using one of the
+    <link linkend="proofs">proof commands</link> omitting
+    an explicit proof term.
+   </para>
+   <para>An interactive proof or definition can and must be terminated by
+    a <link linkend="command_qed">qed</link> command when no more sequents are
+    left to prove. Between the command that starts the interactive session and
+    the qed command the user must provide a procedural proof script made
+    of <link linkend="sec_tactics">tactics</link> structured by means of
+    <link linkend="tacticals">tacticals</link>.</para>
+   <para>In the tradition of the LCF system, tacticals can be considered
+    higher order tactics. Their syntax is structured and they are executed
+    atomically. On the contrary, in Matita the syntax of several tacticals is
+    destructured into a sequence of tokens and tactics in such a way that is
+    is possible to stop execution after every single token or tactic.
+    The original semantics is preserved: the execution of the whole sequence
+    yields the result expected by the original LCF-like tactical.</para>
+ </sect1>
+ <sect1 id="proofstatus">
+  <title>The proof status</title>
+  <para>
+   During an interactive proof, the proof status is made of
+   the set of sequents to prove and the partial proof built so far.
+  </para>
+  <para>The partial proof can be <link linkend="aboutproof">inspected</link>
+   on demand in the CIC browser. It will be shown in pseudo-natural language
+   produced on the fly from the proof term.</para>
+  <para>The set of sequents to prove is shown in the notebook of the
+   <link linkend="authoringinterface">authoring interface</link>, in the
+   top-right corner of the main window of Matita. Each tab shows a different
+   sequent, named with a question mark followed by a number. The current
+   role of the sequent, according to the following description, is also
+   shown in the tab tag.
+  </para>
+  <orderedlist>
+   <listitem id="selectedsequents">
+    <para>
+     <emphasis role="bold">Selected sequents</emphasis>
+      (name in boldface, e.g. <emphasis role="bold">?3</emphasis>).
+      The next tactic will be applied to every selected sequent, producing
+      new selected sequents. <link linkend="tacticals">Tacticals</link>
+      such as branching (&quot;<emphasis role="bold">[</emphasis>&quot;)
+      or &quot;<emphasis role="bold">focus</emphasis>&quot; can be used
+      to change the set of selected sequents.
+    </para>
+   </listitem>
+   <listitem id="siblingsequents">
+    <para>
+     <emphasis role="bold">Sibling sequents</emphasis>
+     (name prefixed by a vertical bar and their position, e.g.
+      |<subscript>3</subscript>?2). When the set of selected sequents
+     has more than one element, the user can decide to focus in turn on each
+     of them. The branching <link linkend="tacticals">tactical</link>
+     (&quot;<emphasis role="bold">[</emphasis>&quot;) selects the first
+     sequent only, marking every previously selected sequent as a sibling
+     sequent. Each sibling sequent is given a different position. The
+     tactical &quot;<emphasis role="bold">2,3:</emphasis>&quot; can be used to
+     select one or more sibling sequents, different from the one proposed,
+     according to their position. Once the user starts to work on the
+     selected sibling sequents it becomes impossible to select a new
+     set of siblings until the (&quot;<emphasis role="bold">|</emphasis>&quot;)
+     tactical is used to end work on the current one.
+    </para>
+   </listitem>
+   <listitem id="solvedsequents">
+    <para>
+     <emphasis role="bold">Automatically solved sibling sequents</emphasis>
+     (name strokethrough, e.g. |<subscript>3</subscript><emphasis role="strikethrough">?2</emphasis>).
+     Sometimes a tactic can close by side effects a sibling sequent the
+     user has not selected yet. The sequent is left in the automatically
+     solved status in order for the user to explicitly accept
+     (using the &quot;<emphasis role="bold">skip</emphasis>&quot;
+     <link linkend="tacticals">tactical</link>) the automatic
+     instantiation in the proof script. This way the correspondence between
+     the number of branches in the proof script and the number of sequents
+     generated in the proof is preserved.
+    </para>
+   </listitem>
+  </orderedlist>
+ </sect1>
+ <sect1 id="tacticals">
+  <title>Tacticals</title>
+   <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+     <title>proof script</title>
+     <tgroup cols="4">
+     <tbody>
+      <row>
+       <entry id="grammar.proofscript">&proofscript;</entry>
+       <entry>::=</entry>
+       <entry>&proofstep; [&proofstep;]…</entry>
+      </row>
+     </tbody>
+    </tgroup>
+   </table>
+   <para>Every proof step can be immediately executed.</para>
+   <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+     <title>proof steps</title>
+     <tgroup cols="4">
+     <tbody>
+      <row>
+       <entry id="grammar.proofstep">&proofstep;</entry>
+       <entry>::=</entry>
+       <entry>&LCFtactical;</entry>
+       <entry>The tactical is applied to each
+        <link linkend="selectedsequents">selected sequent</link>.
+        Each new sequent becomes a selected sequent.</entry>
+      </row>
+      <row>
+       <entry/>
+       <entry>|</entry>
+       <entry><emphasis role="bold">.</emphasis></entry>
+       <entry>The first
+        <link linkend="selectedsequents">selected sequent</link> becomes
+        the only one selected. All the remaining previously selected sequents
+        are proposed to the user one at a time when the next
+        &quot;<emphasis role="bold">.</emphasis>&quot; is used.
+       </entry>
+      </row>
+      <row>
+       <entry/>
+       <entry>|</entry>
+       <entry><emphasis role="bold">;</emphasis></entry>
+       <entry>Nothing changes. Use this proof step as a separator in
+        concrete syntax.</entry>
+      </row>
+      <row>
+       <entry/>
+       <entry>|</entry>
+       <entry><emphasis role="bold">[</emphasis></entry>
+       <entry>Every <link linkend="selectedsequents">selected sequent</link>
+        becomes a <link linkend="siblingsequents">sibling sequent</link>
+        that constitute a branch in the proof.
+        Moreover, the first sequent is also selected.
+       </entry>
+      </row>
+      <row>
+       <entry/>
+       <entry>|</entry>
+       <entry><emphasis role="bold">|</emphasis></entry>
+       <entry>Stop working on the current branch of the innermost branching
+        proof.
+        The sibling branches become the <link linkend="siblingsequents">sibling
+        sequents</link> and the first one is also selected.
+       </entry>
+      </row>
+      <row>
+       <entry/>
+       <entry>|</entry>
+       <entry>&nat;[<emphasis role="bold">,</emphasis>&nat;]…<emphasis role="bold">:</emphasis></entry>
+       <entry>The <link linkend="siblingsequents">sibling sequents</link>
+        specified by the user become the next
+        <link linkend="selectedsequents">selected sequents</link>.
+       </entry>
+      </row>
+      <row>
+       <entry/>
+       <entry>|</entry>
+       <entry><emphasis role="bold">*:</emphasis></entry>
+       <entry>Every sibling branch not considered yet in the innermost
+        branching proof becomes a
+        <link linkend="selectedsequents">selected sequent</link>.
+       </entry>
+      </row>
+      <row>
+       <entry/>
+       <entry>|</entry>
+       <entry><emphasis role="bold">skip</emphasis></entry>
+       <entry>Accept the automatically provided instantiation (not shown
+        to the user) for the currently selected
+        <link linkend="solvedsequents">automatically closed sibling sequent</link>.
+       </entry>
+      </row>
+      <row>
+       <entry/>
+       <entry>|</entry>
+       <entry><emphasis role="bold">]</emphasis></entry>
+       <entry>Stop analyzing branches for the innermost branching proof.
+        Every sequent opened during the branching proof and not closed yet
+        becomes a <link linkend="selectedsequents">selected sequent</link>.
+       </entry>
+      </row>
+      <row>
+       <entry/>
+       <entry>|</entry>
+       <entry><emphasis role="bold">focus</emphasis>&nbsp;&nat;&nbsp;[&nat;]…</entry>
+       <entry>
+        Selects the sequents specified by the user. The selected sequents
+        must be completely closed (no new sequents left open) before doing an
+        &quot;<emphasis role="bold">unfocus</emphasis> that restores
+        the current set of sibling branches.
+       </entry>
+      </row>
+      <row>
+       <entry/>
+       <entry>|</entry>
+       <entry><emphasis role="bold">unfocus</emphasis></entry>
+       <entry>
+        Used to match the innermost
+        &quot;<emphasis role="bold">focus</emphasis>&quot; tactical
+        when all the sequents selected by it have been closed.
+        Until &quot;<emphasis role="bold">unfocus</emphasis>&quot; is
+        performed, it is not possible to progress in the rest of the
+        proof.
+       </entry>
+      </row>
+     </tbody>
+    </tgroup>
+   </table>
+   <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+     <title>tactics and LCF tacticals</title>
+     <tgroup cols="4">
+     <tbody>
+      <row>
+       <entry id="grammar.LCFtactical">&LCFtactical;</entry>
+       <entry>::=</entry>
+       <entry>&tactic;</entry>
+       <entry>Applies the specified tactic.</entry>
+      </row>
+      <row>
+       <entry/>
+       <entry>|</entry>
+       <entry>&LCFtactical; <emphasis role="bold">;</emphasis> &LCFtactical;</entry>
+       <entry>Applies the first tactical first and the second tactical
+        to each sequent opened by the first one.</entry>
+      </row>
+      <row>
+       <entry/>
+       <entry>|</entry>
+       <entry>&LCFtactical;
+        <emphasis role="bold">[</emphasis>
+        [&LCFtactical;]
+        [<emphasis role="bold">|</emphasis> &LCFtactical;]…
+        <emphasis role="bold">]</emphasis>
+       </entry>
+       <entry>Applies the first tactical first and each tactical in the
+        list of tacticals to the corresponding sequent opened by the
+        first one. The number of tacticals provided in the list must be
+        equal to the number of sequents opened by the first tactical.</entry>
+      </row>
+      <row>
+       <entry/>
+       <entry>|</entry>
+       <entry><emphasis role="bold">do</emphasis> &nat;
+        &LCFtactical;
+       </entry>
+       <entry>&TODO;</entry>
+      </row>
+      <row>
+       <entry/>
+       <entry>|</entry>
+       <entry><emphasis role="bold">repeat</emphasis>
+        &LCFtactical;
+       </entry>
+       <entry>&TODO;</entry>
+      </row>
+      <row>
+       <entry/>
+       <entry>|</entry>
+       <entry>
+        <emphasis role="bold">first [</emphasis>
+        [&LCFtactical;]
+        [<emphasis role="bold">|</emphasis> &LCFtactical;]…
+        <emphasis role="bold">]</emphasis>
+       </entry>
+       <entry>&TODO;</entry>
+      </row>
+      <row>
+       <entry/>
+       <entry>|</entry>
+       <entry><emphasis role="bold">try</emphasis> &LCFtactical;</entry>
+       <entry>&TODO;</entry>
+      </row>
+      <row>
+       <entry/>
+       <entry>|</entry>
+       <entry>
+        <emphasis role="bold">solve [</emphasis>
+        [&LCFtactical;]
+        [<emphasis role="bold">|</emphasis> &LCFtactical;]…
+        <emphasis role="bold">]</emphasis>
+       </entry>
+       <entry>&TODO;</entry>
+      </row>
+      <row>
+       <entry/>
+       <entry>|</entry>
+       <entry><emphasis role="bold">(</emphasis>&LCFtactical;<emphasis role="bold">)</emphasis></entry>
+       <entry>Used for grouping during parsing.</entry>
+      </row>
+     </tbody>
+    </tgroup>
+   </table>
+ </sect1>
+</chapter>
+
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_tactics.html b/helm/www/matita/docs/manual-0.5.9/sec_tactics.html
new file mode 100644 (file)
index 0000000..b905d92
--- /dev/null
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 7. Tactics</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="prev" href="tacticals.html" title="Tacticals" /><link rel="next" href="tac_absurd.html" title="absurd" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 7. Tactics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tacticals.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="tac_absurd.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="sec_tactics"></a>Chapter 7. Tactics</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="sect1"><a href="sec_tactics.html#tactics_quickref">Quick reference card</a></span></dt><dt><span class="sect1"><a href="tac_absurd.html">absurd</a></span></dt><dt><span class="sect1"><a href="tac_apply.html">apply</a></span></dt><dt><span class="sect1"><a href="tac_applyS.html">applyS</a></span></dt><dt><span class="sect1"><a href="tac_assumption.html">assumption</a></span></dt><dt><span class="sect1"><a href="tac_auto.html">auto</a></span></dt><dt><span class="sect1"><a href="tac_cases.html">cases</a></span></dt><dt><span class="sect1"><a href="tac_clear.html">clear</a></span></dt><dt><span class="sect1"><a href="tac_clearbody.html">clearbody</a></span></dt><dt><span class="sect1"><a href="tac_compose.html">compose</a></span></dt><dt><span class="sect1"><a href="tac_change.html">change</a></span></dt><dt><span class="sect1"><a href="tac_constructor.html">constructor</a></span></dt><dt><span class="sect1"><a href="tac_contradiction.html">contradiction</a></span></dt><dt><span class="sect1"><a href="tac_cut.html">cut</a></span></dt><dt><span class="sect1"><a href="tac_decompose.html">decompose</a></span></dt><dt><span class="sect1"><a href="tac_demodulate.html">demodulate</a></span></dt><dt><span class="sect1"><a href="tac_destruct.html">destruct</a></span></dt><dt><span class="sect1"><a href="tac_elim.html">elim</a></span></dt><dt><span class="sect1"><a href="tac_elimType.html">elimType</a></span></dt><dt><span class="sect1"><a href="tac_exact.html">exact</a></span></dt><dt><span class="sect1"><a href="tac_exists.html">exists</a></span></dt><dt><span class="sect1"><a href="tac_fail.html">fail</a></span></dt><dt><span class="sect1"><a href="tac_fold.html">fold</a></span></dt><dt><span class="sect1"><a href="tac_fourier.html">fourier</a></span></dt><dt><span class="sect1"><a href="tac_fwd.html">fwd</a></span></dt><dt><span class="sect1"><a href="tac_generalize.html">generalize</a></span></dt><dt><span class="sect1"><a href="tac_id.html">id</a></span></dt><dt><span class="sect1"><a href="tac_intro.html">intro</a></span></dt><dt><span class="sect1"><a href="tac_intros.html">intros</a></span></dt><dt><span class="sect1"><a href="tac_inversion.html">inversion</a></span></dt><dt><span class="sect1"><a href="tac_lapply.html">lapply</a></span></dt><dt><span class="sect1"><a href="tac_left.html">left</a></span></dt><dt><span class="sect1"><a href="tac_letin.html">letin</a></span></dt><dt><span class="sect1"><a href="tac_normalize.html">normalize</a></span></dt><dt><span class="sect1"><a href="tac_reflexivity.html">reflexivity</a></span></dt><dt><span class="sect1"><a href="tac_replace.html">change</a></span></dt><dt><span class="sect1"><a href="tac_rewrite.html">rewrite</a></span></dt><dt><span class="sect1"><a href="tac_right.html">right</a></span></dt><dt><span class="sect1"><a href="tac_ring.html">ring</a></span></dt><dt><span class="sect1"><a href="tac_simplify.html">simplify</a></span></dt><dt><span class="sect1"><a href="tac_split.html">split</a></span></dt><dt><span class="sect1"><a href="tac_subst.html">subst</a></span></dt><dt><span class="sect1"><a href="tac_symmetry.html">symmetry</a></span></dt><dt><span class="sect1"><a href="tac_transitivity.html">transitivity</a></span></dt><dt><span class="sect1"><a href="tac_unfold.html">unfold</a></span></dt><dt><span class="sect1"><a href="tac_whd.html">whd</a></span></dt></dl></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tactics_quickref"></a>Quick reference card</h2></div></div></div><p>
+      </p><div class="table"><a id="idp71070096"></a><p class="title"><strong>Table 7.1. tactics</strong></p><div class="table-contents"><table summary="tactics" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.tactic"></a><span class="emphasis"><em><a class="link" href="sec_tactics.html#grammar.tactic">tactic</a></em></span></td><td style="">::=</td><td style=""><a class="link" href="tac_absurd.html" title="absurd"><span class="bold"><strong>absurd</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_apply.html" title="apply"><span class="bold"><strong>apply</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_applyS.html" title="applyS"><span class="bold"><strong>applyS</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.autoparams">auto_params</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+          <a class="link" href="tac_assumption.html" title="assumption">
+            <span class="bold"><strong>assumption</strong></span>
+          </a>
+        </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_auto.html" title="auto"><span class="bold"><strong>auto</strong></span></a> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.autoparams">auto_params</a></em></span>. <span class="bold"><strong>autobatch</strong></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.autoparams">auto_params</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+            <a class="link" href="tac_cases.html" title="cases"><span class="bold"><strong>cases</strong></span></a>
+            <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span> [<span class="bold"><strong>(</strong></span>[<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]…<span class="bold"><strong>)</strong></span>]
+           </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_change.html" title="change"><span class="bold"><strong>change</strong></span></a> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span> <span class="bold"><strong>with</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+            <a class="link" href="tac_clear.html" title="clear"><span class="bold"><strong>clear</strong></span></a>
+            <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>…]
+           </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_clearbody.html" title="clearbody"><span class="bold"><strong>clearbody</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_compose.html" title="compose"><span class="bold"><strong>compose</strong></span></a> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span>] <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span> [<span class="bold"><strong>with</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span>] [<span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.intros-spec">intros-spec</a></em></span>]</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_constructor.html" title="constructor"><span class="bold"><strong>constructor</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+          <a class="link" href="tac_contradiction.html" title="contradiction">
+            <span class="bold"><strong>contradiction</strong></span>
+          </a>
+        </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_cut.html" title="cut"><span class="bold"><strong>cut</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span> [<span class="bold"><strong>as</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]</td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+            <a class="link" href="tac_decompose.html" title="decompose"><span class="bold"><strong>decompose</strong></span></a>
+            [<span class="bold"><strong>as</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>…]
+           </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_demodulate.html" title="demodulate"><span class="bold"><strong>demodulate</strong></span></a> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.autoparams">auto_params</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_destruct.html" title="destruct"><span class="bold"><strong>destruct</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_elim.html" title="elim"><span class="bold"><strong>elim</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span> [<span class="bold"><strong>using</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span>] <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.intros-spec">intros-spec</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_elimType.html" title="elimType"><span class="bold"><strong>elimType</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span> [<span class="bold"><strong>using</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span>] <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.intros-spec">intros-spec</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_exact.html" title="exact"><span class="bold"><strong>exact</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+          <a class="link" href="tac_exists.html" title="exists">
+            <span class="bold"><strong>exists</strong></span>
+          </a>
+        </td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+          <a class="link" href="tac_fail.html" title="fail">
+            <span class="bold"><strong>fail</strong></span>
+          </a>
+        </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_fold.html" title="fold"><span class="bold"><strong>fold</strong></span></a> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.reduction-kind">reduction-kind</a></em></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+          <a class="link" href="tac_fourier.html" title="fourier">
+            <span class="bold"><strong>fourier</strong></span>
+          </a>
+        </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_fwd.html" title="fwd"><span class="bold"><strong>fwd</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> [<span class="bold"><strong>as</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]…]</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_generalize.html" title="generalize"><span class="bold"><strong>generalize</strong></span></a> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span> [<span class="bold"><strong>as</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]</td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+          <a class="link" href="tac_id.html" title="id">
+            <span class="bold"><strong>id</strong></span>
+          </a>
+        </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_intro.html" title="intro"><span class="bold"><strong>intro</strong></span></a> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_intros.html" title="intros"><span class="bold"><strong>intros</strong></span></a> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.intros-spec">intros-spec</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_inversion.html" title="inversion"><span class="bold"><strong>inversion</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+            <a class="link" href="tac_lapply.html" title="lapply"><span class="bold"><strong>lapply</strong></span></a> 
+            [<span class="bold"><strong>linear</strong></span>]
+            [<span class="bold"><strong>depth=</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span>] 
+            <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span> 
+            [<span class="bold"><strong>to</strong></span>
+             <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span>
+             [<span class="bold"><strong>,</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span>…]
+            ] 
+            [<span class="bold"><strong>as</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]
+           </td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+          <a class="link" href="tac_left.html" title="left">
+            <span class="bold"><strong>left</strong></span>
+          </a>
+        </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_letin.html" title="letin"><span class="bold"><strong>letin</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> <span class="bold"><strong>≝</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_normalize.html" title="normalize"><span class="bold"><strong>normalize</strong></span></a> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+          <a class="link" href="tac_reflexivity.html" title="reflexivity">
+            <span class="bold"><strong>reflexivity</strong></span>
+          </a>
+        </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_replace.html" title="replace"><span class="bold"><strong>replace</strong></span></a> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span> <span class="bold"><strong>with</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_rewrite.html" title="rewrite"><span class="bold"><strong>rewrite</strong></span></a> [<span class="bold"><strong>&lt;</strong></span>|<span class="bold"><strong>&gt;</strong></span>] <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+          <a class="link" href="tac_right.html" title="right">
+            <span class="bold"><strong>right</strong></span>
+          </a>
+        </td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+          <a class="link" href="tac_ring.html" title="ring">
+            <span class="bold"><strong>ring</strong></span>
+          </a>
+        </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_simplify.html" title="simplify"><span class="bold"><strong>simplify</strong></span></a> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+          <a class="link" href="tac_split.html" title="split">
+            <span class="bold"><strong>split</strong></span>
+          </a>
+        </td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+          <a class="link" href="tac_subst.html" title="subst">
+            <span class="bold"><strong>subst</strong></span>
+          </a>
+        </td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+          <a class="link" href="tac_symmetry.html" title="symmetry">
+            <span class="bold"><strong>symmetry</strong></span>
+          </a>
+        </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_transitivity.html" title="transitivity"><span class="bold"><strong>transitivity</strong></span></a> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_unfold.html" title="unfold"><span class="bold"><strong>unfold</strong></span></a> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span>] <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><a class="link" href="tac_whd.html" title="whd"><span class="bold"><strong>whd</strong></span></a> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span></td></tr></tbody></table></div></div><p><br class="table-break" />
+
+    </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tacticals.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="tac_absurd.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Tacticals </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> absurd</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_tactics.xml b/helm/www/matita/docs/manual-0.5.9/sec_tactics.xml
new file mode 100644 (file)
index 0000000..ebd100a
--- /dev/null
@@ -0,0 +1,1802 @@
+
+<!-- ============ Tactics ====================== -->
+<chapter id="sec_tactics">
+  <title>Tactics</title>
+
+  <sect1 id="tactics_quickref">
+    <title>Quick reference card</title>
+    <para>
+      &tacticref;
+    </para>
+  </sect1>
+
+  <sect1 id="tac_absurd">
+    <title>absurd</title>
+    <titleabbrev>absurd</titleabbrev>
+    <para><userinput>absurd P</userinput></para>
+     <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">absurd</emphasis> &sterm;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para><command>P</command> must have type <command>Prop</command>.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It closes the current sequent by eliminating an
+             absurd term.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>It opens two new sequents of conclusion <command>P</command>
+             and <command>¬P</command>.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+     </para>
+  </sect1>
+  <sect1 id="tac_apply">
+    <title>apply</title>
+    <titleabbrev>apply</titleabbrev>
+    <para><userinput>apply t</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">apply</emphasis> &sterm;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para><command>t</command> must have type
+             <command>T<subscript>1</subscript> → … →
+              T<subscript>n</subscript> → G</command>
+             where <command>G</command> can be unified with the conclusion
+             of the current sequent.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It closes the current sequent by applying <command>t</command> to <command>n</command> implicit arguments (that become new sequents).</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>It opens a new sequent for each premise 
+             <command>T<subscript>i</subscript></command> that is not
+             instantiated by unification. <command>T<subscript>i</subscript></command> is
+             the conclusion of the <command>i</command>-th new sequent to
+             prove.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_applyS">
+    <title>applyS</title>
+    <titleabbrev>applyS</titleabbrev>
+    <para><userinput>applyS t auto_params</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">applyS</emphasis> &sterm; &autoparams;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para><command>t</command> must have type
+             <command>T<subscript>1</subscript> → ... →
+              T<subscript>n</subscript> → G</command>.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para><command>applyS</command> is useful when
+             <command>apply</command> fails because the current goal
+             and the conclusion of the applied theorems are extensionally
+             equivalent up to instantiation of metavariables, but cannot
+             be unified. E.g. the goal is <command>P(n*O+m)</command> and
+             the theorem to be applied proves <command>∀m.P(m+O)</command>.
+            </para>
+            <para>
+             It tries to automatically rewrite the current goal using
+             <link linkend="tac_auto">auto paramodulation</link>
+             to make it unifiable with <command>G</command>.
+             Then it closes the current sequent by applying
+             <command>t</command> to <command>n</command>
+             implicit arguments (that become new sequents).
+             The <command>auto_params</command> parameters are passed
+             directly to <command>auto paramodulation</command>.
+            </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>It opens a new sequent for each premise 
+             <command>T<subscript>i</subscript></command> that is not
+             instantiated by unification. <command>T<subscript>i</subscript></command> is
+             the conclusion of the <command>i</command>-th new sequent to
+             prove.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_assumption">
+    <title>assumption</title>
+    <titleabbrev>assumption</titleabbrev>
+    <para><userinput>assumption </userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">assumption</emphasis></para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>There must exist an hypothesis whose type can be unified with
+             the conclusion of the current sequent.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It closes the current sequent exploiting an hypothesis.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_auto">
+    <title>auto</title>
+    <titleabbrev>auto</titleabbrev>
+    <para><userinput>auto params</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">auto</emphasis> &autoparams;. </para>
+            <para><emphasis role="bold">autobatch</emphasis> &autoparams;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>None, but the tactic may fail finding a proof if every
+             proof is in the search space that is pruned away. Pruning is
+             controlled by the optional <command>params</command>.
+             Moreover, only lemmas whose type signature is a subset of the
+             signature of the current sequent are considered. The signature of
+             a sequent is essentially the set of constats appearing in it.
+           </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It closes the current sequent by repeated application of
+             rewriting steps (unless <command>paramodulation</command> is
+             omitted), hypothesis and lemmas in the library.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_cases">
+    <title>cases</title>
+    <titleabbrev>cases</titleabbrev>
+    <para><userinput>
+     cases t pattern hyps
+    </userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para>
+            <emphasis role="bold">cases</emphasis>
+            &term; &pattern; [<emphasis role="bold">(</emphasis>[&id;]…<emphasis role="bold">)</emphasis>]
+           </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>
+            <command>t</command> must inhabit an inductive type
+           </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>
+            It proceed by cases on <command>t</command>. The new generated
+             hypothesis in each branch are named according to
+             <command>hyps</command>.
+             The elimintation predicate is restricted by
+             <command>pattern</command>. In particular, if some hypothesis
+             is listed in <command>pattern</command>, the hypothesis is
+             generalized and cleared before proceeding by cases on
+             <command>t</command>. Currently, we only support patterns of the
+             form <command>H<subscript>1</subscript> … H<subscript>n</subscript> ⊢ %</command>. This limitation will be lifted in the future.
+           </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>One new sequent for each constructor of the type of
+             <command>t</command>. Each sequent has a new hypothesis for
+             each argument of the constructor.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_clear">
+    <title>clear</title>
+    <titleabbrev>clear</titleabbrev>
+    <para><userinput>
+     clear H<subscript>1</subscript> ... H<subscript>m</subscript>
+    </userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para>
+            <emphasis role="bold">clear</emphasis>
+            &id; [&id;…]
+           </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>
+            <command>
+             H<subscript>1</subscript> ... H<subscript>m</subscript>
+            </command> must be hypotheses of the
+             current sequent to prove.
+           </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>
+            It hides the hypotheses 
+             <command>
+             H<subscript>1</subscript> ... H<subscript>m</subscript>
+             </command> from the current sequent.
+           </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_clearbody">
+    <title>clearbody</title>
+    <titleabbrev>clearbody</titleabbrev>
+    <para><userinput>clearbody H</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">clearbody</emphasis> &id;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para><command>H</command> must be an hypothesis of the
+             current sequent to prove.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It hides the definiens of a definition in the current
+             sequent context. Thus the definition becomes an hypothesis.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_compose">
+    <title>compose</title>
+    <titleabbrev>compose</titleabbrev>
+    <para><userinput>compose n t1 with t2 hyps</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">compose</emphasis> [&nat;] &sterm; [<emphasis role="bold">with</emphasis> &sterm;] [&intros-spec;]</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para></para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>Composes t1 with t2 in every possible way
+              <command>n</command> times introducing generated terms
+              as if <command>intros hyps</command> was issued.</para>
+            <para>If <command>t1:∀x:A.B[x]</command> and
+            <command>t2:∀x,y:A.B[x]→B[y]→C[x,y]</command> it generates:
+             <itemizedlist>
+                <listitem>
+                  <para><command>λx,y:A.t2 x y (t1 x) : ∀x,y:A.B[y]→C[x,y]</command></para>
+                </listitem>
+                <listitem>
+                  <para><command>λx,y:A.λH:B[x].t2 x y H (t1 y) : ∀x,y:A.B[x]→C[x,y]
+                  </command></para>
+                </listitem>
+             </itemizedlist>
+          </para>
+          <para>If <command>t2</command> is omitted it composes 
+            <command>t1</command>
+              with every hypothesis that can be introduced.  
+              <command>n</command> iterates the process.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>The same, but with more hypothesis eventually introduced
+            by the &intros-spec;.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_change">
+    <title>change</title>
+    <titleabbrev>change</titleabbrev>
+    <para><userinput>change patt with t</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">change</emphasis> &pattern; <emphasis role="bold">with</emphasis> &sterm;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>Each subterm matched by the pattern must be convertible
+             with the term <command>t</command> disambiguated in the context
+             of the matched subterm.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It replaces the subterms of the current sequent matched by
+             <command>patt</command> with the new term <command>t</command>.
+             For each subterm matched by the pattern, <command>t</command> is
+             disambiguated in the context of the subterm.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_constructor">
+    <title>constructor</title>
+    <titleabbrev>constructor</titleabbrev>
+    <para><userinput>constructor n</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">constructor</emphasis> &nat;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>The conclusion of the current sequent must be
+             an inductive type or the application of an inductive type with
+             at least <command>n</command> constructors.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It applies the <command>n</command>-th constructor of the
+             inductive type of the conclusion of the current sequent.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>It opens a new sequent for each premise of the constructor
+             that can not be inferred by unification. For more details,
+             see the <command>apply</command> tactic.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_contradiction">
+    <title>contradiction</title>
+    <titleabbrev>contradiction</titleabbrev>
+    <para><userinput>contradiction </userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">contradiction</emphasis></para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>There must be in the current context an hypothesis of type
+             <command>False</command>.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It closes the current sequent by applying an hypothesis of
+             type <command>False</command>.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_cut">
+    <title>cut</title>
+    <titleabbrev>cut</titleabbrev>
+    <para><userinput>cut P as H</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">cut</emphasis> &sterm; [<emphasis role="bold">as</emphasis> &id;]</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para><command>P</command> must have type <command>Prop</command>.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It closes the current sequent.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>It opens two new sequents. The first one has an extra
+             hypothesis <command>H:P</command>. If <command>H</command> is
+             omitted, the name of the hypothesis is automatically generated.
+             The second sequent has conclusion <command>P</command> and
+             hypotheses the hypotheses of the current sequent to prove.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_decompose">
+    <title>decompose</title>
+    <titleabbrev>decompose</titleabbrev>
+    <para><userinput>
+     decompose as H<subscript>1</subscript> ... H<subscript>m</subscript>
+    </userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para>
+            <emphasis role="bold">decompose</emphasis>
+            [<emphasis role="bold">as</emphasis> &id;…]
+           </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>
+            For each each premise <command>H</command> of type 
+            <command>T</command> in the current context where
+            <command>T</command> is a non-recursive inductive type without
+            right parameters and of sort Prop or CProp, the tactic runs
+            <command> 
+             elim H as H<subscript>1</subscript> ... H<subscript>m</subscript>
+            </command>, clears <command>H</command>  and runs itself
+            recursively on each new premise introduced by 
+            <command>elim</command> in the opened sequents. 
+           </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>
+            The ones generated by all the <command>elim</command> tactics run.
+           </para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_demodulate">
+    <title>demodulate</title>
+    <titleabbrev>demodulate</titleabbrev>
+    <para><userinput>demodulate auto_params</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">demodulate</emphasis> &autoparams;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>&TODO;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_destruct">
+    <title>destruct</title>
+    <titleabbrev>destruct</titleabbrev>
+    <para><userinput>destruct p</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">destruct</emphasis> &sterm;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para><command>p</command> must have type <command>E<subscript>1</subscript> = E<subscript>2</subscript></command> where the two sides of the equality are possibly applied constructors of an inductive type.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>The tactic recursively compare the two sides of the equality
+             looking for different constructors in corresponding position.
+             If two of them are found, the tactic closes the current sequent
+             by proving the absurdity of <command>p</command>. Otherwise
+             it adds a new hypothesis for each leaf of the formula that
+             states the equality of the subformulae in the corresponding
+             positions on the two sides of the equality.
+            </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_elim">
+    <title>elim</title>
+    <titleabbrev>elim</titleabbrev>
+    <para><userinput>elim t pattern using th hyps</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">elim</emphasis> &sterm; &pattern; [<emphasis role="bold">using</emphasis> &sterm;] &intros-spec;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para><command>t</command> must inhabit an inductive type and
+             <command>th</command> must be an elimination principle for that
+             inductive type. If <command>th</command> is omitted the appropriate
+             standard elimination principle is chosen.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It proceeds by cases on the values of <command>t</command>,
+             according to the elimination principle <command>th</command>.
+             The induction predicate is restricted by
+             <command>pattern</command>. In particular, if some hypothesis
+             is listed in <command>pattern</command>, the hypothesis is
+             generalized and cleared before eliminating <command>t</command>
+            </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>It opens one new sequent for each case. The names of
+             the new hypotheses are picked by <command>hyps</command>, if
+             provided. If hyps specifies also a number of hypotheses that
+             is less than the number of new hypotheses for a new sequent,
+             then the exceeding hypothesis will be kept as implications in
+             the conclusion of the sequent.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_elimType">
+    <title>elimType</title>
+    <titleabbrev>elimType</titleabbrev>
+    <para><userinput>elimType T using th hyps</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">elimType</emphasis> &sterm; [<emphasis role="bold">using</emphasis> &sterm;] &intros-spec;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para><command>T</command> must be an inductive type.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>TODO (severely bugged now).</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>TODO</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_exact">
+    <title>exact</title>
+    <titleabbrev>exact</titleabbrev>
+    <para><userinput>exact p</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">exact</emphasis> &sterm;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>The type of <command>p</command> must be convertible
+             with the conclusion of the current sequent.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It closes the current sequent using <command>p</command>.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_exists">
+    <title>exists</title>
+    <titleabbrev>exists</titleabbrev>
+    <para><userinput>exists </userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">exists</emphasis></para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>The conclusion of the current sequent must be
+             an inductive type or the application of an inductive type
+             with at least one constructor.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>Equivalent to <command>constructor 1</command>.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>It opens a new sequent for each premise of the first
+             constructor of the inductive type that is the conclusion of the
+             current sequent. For more details, see the <command>constructor</command> tactic.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_fail">
+    <title>fail</title>
+    <titleabbrev>fail</titleabbrev>
+    <para><userinput>fail</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">fail</emphasis></para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>This tactic always fail.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>N.A.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_fold">
+    <title>fold</title>
+    <titleabbrev>fold</titleabbrev>
+    <para><userinput>fold red t patt</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">fold</emphasis> &reduction-kind; &sterm; &pattern;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>The pattern must not specify the wanted term.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>First of all it locates all the subterms matched by
+             <command>patt</command>. In the context of each matched subterm
+             it disambiguates the term <command>t</command> and reduces it
+             to its <command>red</command> normal form; then it replaces with
+             <command>t</command> every occurrence of the normal form in the
+             matched subterm.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_fourier">
+    <title>fourier</title>
+    <titleabbrev>fourier</titleabbrev>
+    <para><userinput>fourier </userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">fourier</emphasis></para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>The conclusion of the current sequent must be a linear
+             inequation over real numbers taken from standard library of
+             Coq. Moreover the inequations in the hypotheses must imply the
+             inequation in the conclusion of the current sequent.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It closes the current sequent by applying the Fourier method.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_fwd">
+    <title>fwd</title>
+    <titleabbrev>fwd</titleabbrev>
+    <para><userinput>fwd H as H<subscript>0</subscript> ... H<subscript>n</subscript></userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">fwd</emphasis> &id; [<emphasis role="bold">as</emphasis> &id; [&id;]…]</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>
+              The type of <command>H</command> must be the premise of a
+               forward simplification theorem.
+           </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>
+            This tactic is under development.
+             It simplifies the current context by removing
+            <command>H</command> using the following methods:
+            forward application (by <command>lapply</command>) of a suitable
+            simplification theorem, chosen automatically, of which the type
+            of <command>H</command> is a premise, 
+            decomposition (by <command>decompose</command>),
+            rewriting (by <command>rewrite</command>).
+            <command>H<subscript>0</subscript> ... H<subscript>n</subscript></command>
+            are passed to the tactics <command>fwd</command> invokes, as
+             names for the premise they introduce.
+           </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>
+            The ones opened by the tactics <command>fwd</command> invokes.
+           </para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_generalize">
+    <title>generalize</title>
+    <titleabbrev>generalize</titleabbrev>
+    <para><userinput>generalize patt as H</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">generalize</emphasis> &pattern; [<emphasis role="bold">as</emphasis> &id;]</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>All the terms matched by <command>patt</command> must be
+             convertible and close in the context of the current sequent.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It closes the current sequent by applying a stronger
+             lemma that is proved using the new generated sequent.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>It opens a new sequent where the current sequent conclusion
+             <command>G</command> is generalized to
+             <command>∀x.G{x/t}</command> where <command>{x/t}</command>
+             is a notation for the replacement with <command>x</command> of all
+             the occurrences of the term <command>t</command> matched by
+             <command>patt</command>. If <command>patt</command> matches no
+             subterm then <command>t</command> is defined as the
+             <command>wanted</command> part of the pattern.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_id">
+    <title>id</title>
+    <titleabbrev>id</titleabbrev>
+    <para><userinput>id </userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">id</emphasis></para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>This identity tactic does nothing without failing.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_intro">
+    <title>intro</title>
+    <titleabbrev>intro</titleabbrev>
+    <para><userinput>intro H</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">intro</emphasis> [&id;]</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>The conclusion of the sequent to prove must be an implication
+             or a universal quantification.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It applies the right introduction rule for implication,
+             closing the current sequent.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>It opens a new sequent to prove adding to the hypothesis
+             the antecedent of the implication and setting the conclusion
+             to the consequent of the implicaiton. The name of the new
+             hypothesis is <command>H</command> if provided; otherwise it
+             is automatically generated.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_intros">
+    <title>intros</title>
+    <titleabbrev>intros</titleabbrev>
+    <para><userinput>intros hyps</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">intros</emphasis> &intros-spec;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>If <command>hyps</command> specifies a number of hypotheses
+             to introduce, then the conclusion of the current sequent must
+             be formed by at least that number of imbricated implications
+             or universal quantifications.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It applies several times the right introduction rule for
+             implication, closing the current sequent.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>It opens a new sequent to prove adding a number of new
+             hypotheses equal to the number of new hypotheses requested.
+             If the user does not request a precise number of new hypotheses,
+             it adds as many hypotheses as possible.
+             The name of each new hypothesis is either popped from the
+             user provided list of names, or it is automatically generated when
+             the list is (or becomes) empty.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_inversion">
+    <title>inversion</title>
+    <titleabbrev>inversion</titleabbrev>
+    <para><userinput>inversion t</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">inversion</emphasis> &sterm;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>The type of the term <command>t</command> must be an inductive
+             type or the application of an inductive type.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It proceeds by cases on <command>t</command> paying attention
+             to the constraints imposed by the actual &quot;right arguments&quot;
+             of the inductive type.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>It opens one new sequent to prove for each case in the
+             definition of the type of <command>t</command>. With respect to
+             a simple elimination, each new sequent has additional hypotheses
+             that states the equalities of the &quot;right parameters&quot;
+             of the inductive type with terms originally present in the
+             sequent to prove.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_lapply">
+    <title>lapply</title>
+    <titleabbrev>lapply</titleabbrev>
+    <para><userinput>
+     lapply linear depth=d t 
+     to t<subscript>1</subscript>, ..., t<subscript>n</subscript> as H
+    </userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para>
+            <emphasis role="bold">lapply</emphasis> 
+            [<emphasis role="bold">linear</emphasis>]
+            [<emphasis role="bold">depth=</emphasis>&nat;] 
+            &sterm; 
+            [<emphasis role="bold">to</emphasis>
+             &sterm;
+             [<emphasis role="bold">,</emphasis>&sterm;…]
+            ] 
+            [<emphasis role="bold">as</emphasis> &id;]
+           </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>
+            <command>t</command> must have at least <command>d</command>
+            independent premises and <command>n</command> must not be
+            greater than <command>d</command>.
+           </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>
+            Invokes <command>letin H ≝ (t ? ... ?)</command>
+            with enough <command>?</command>'s to reach the 
+            <command>d</command>-th independent premise of
+            <command>t</command>
+            (<command>d</command> is maximum if unspecified).       
+            Then istantiates (by <command>apply</command>) with
+            t<subscript>1</subscript>, ..., t<subscript>n</subscript>
+            the <command>?</command>'s corresponding to the first 
+            <command>n</command> independent premises of
+            <command>t</command>.
+            Usually the other <command>?</command>'s preceding the 
+            <command>n</command>-th independent premise of
+            <command>t</command> are istantiated as a consequence.
+            If the <command>linear</command> flag is specified and if 
+            <command>t, t<subscript>1</subscript>, ..., t<subscript>n</subscript></command>
+            are (applications of) premises in the current context, they are
+             <command>clear</command>ed. 
+           </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>
+            The ones opened by the tactics <command>lapply</command> invokes.
+           </para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_left">
+    <title>left</title>
+    <titleabbrev>left</titleabbrev>
+    <para><userinput>left </userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">left</emphasis></para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>The conclusion of the current sequent must be
+             an inductive type or the application of an inductive type
+             with at least one constructor.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>Equivalent to <command>constructor 1</command>.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>It opens a new sequent for each premise of the first
+             constructor of the inductive type that is the conclusion of the
+             current sequent. For more details, see the <command>constructor</command> tactic.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_letin">
+    <title>letin</title>
+    <titleabbrev>letin</titleabbrev>
+    <para><userinput>letin x ≝ t</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">letin</emphasis> &id; <emphasis role="bold">≝</emphasis> &sterm;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It adds to the context of the current sequent to prove a new
+             definition <command>x ≝ t</command>.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_normalize">
+    <title>normalize</title>
+    <titleabbrev>normalize</titleabbrev>
+    <para><userinput>normalize patt</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">normalize</emphasis> &pattern;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It replaces all the terms matched by <command>patt</command>
+             with their βδιζ-normal form.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_reflexivity">
+    <title>reflexivity</title>
+    <titleabbrev>reflexivity</titleabbrev>
+    <para><userinput>reflexivity </userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">reflexivity</emphasis></para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>The conclusion of the current sequent must be
+             <command>t=t</command> for some term <command>t</command></para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It closes the current sequent by reflexivity
+             of equality.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_replace">
+    <title>replace</title>
+    <titleabbrev>change</titleabbrev>
+    <para><userinput>change patt with t</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">replace</emphasis> &pattern; <emphasis role="bold">with</emphasis> &sterm;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It replaces the subterms of the current sequent matched by
+             <command>patt</command> with the new term <command>t</command>.
+             For each subterm matched by the pattern, <command>t</command> is
+             disambiguated in the context of the subterm.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>For each matched term <command>t'</command> it opens
+             a new sequent to prove whose conclusion is
+             <command>t'=t</command>.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_rewrite">
+    <title>rewrite</title>
+    <titleabbrev>rewrite</titleabbrev>
+    <para><userinput>rewrite dir p patt</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">rewrite</emphasis> [<emphasis role="bold">&lt;</emphasis>|<emphasis role="bold">&gt;</emphasis>] &sterm; &pattern;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para><command>p</command> must be the proof of an equality,
+             possibly under some hypotheses.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It looks in every term matched by <command>patt</command>
+             for all the occurrences of the
+             left hand side of the equality that <command>p</command> proves
+             (resp. the right hand side if <command>dir</command> is
+             <command>&lt;</command>). Every occurence found is replaced with
+             the opposite side of the equality.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>It opens one new sequent for each hypothesis of the
+             equality proved by <command>p</command> that is not closed
+             by unification.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_right">
+    <title>right</title>
+    <titleabbrev>right</titleabbrev>
+    <para><userinput>right </userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">right</emphasis></para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>The conclusion of the current sequent must be
+             an inductive type or the application of an inductive type with
+             at least two constructors.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>Equivalent to <command>constructor 2</command>.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>It opens a new sequent for each premise of the second
+             constructor of the inductive type that is the conclusion of the
+             current sequent. For more details, see the <command>constructor</command> tactic.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_ring">
+    <title>ring</title>
+    <titleabbrev>ring</titleabbrev>
+    <para><userinput>ring </userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">ring</emphasis></para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>The conclusion of the current sequent must be an
+             equality over Coq's real numbers that can be proved using
+             the ring properties of the real numbers only.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It closes the current sequent veryfying the equality by
+             means of computation (i.e. this is a reflexive tactic, implemented
+             exploiting the &quot;two level reasoning&quot; technique).</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_simplify">
+    <title>simplify</title>
+    <titleabbrev>simplify</titleabbrev>
+    <para><userinput>simplify patt</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">simplify</emphasis> &pattern;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It replaces all the terms matched by <command>patt</command>
+             with other convertible terms that are supposed to be simpler.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_split">
+    <title>split</title>
+    <titleabbrev>split</titleabbrev>
+    <para><userinput>split </userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">split</emphasis></para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>The conclusion of the current sequent must be
+             an inductive type or the application of an inductive type with
+             at least one constructor.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>Equivalent to <command>constructor 1</command>.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>It opens a new sequent for each premise of the first
+             constructor of the inductive type that is the conclusion of the
+             current sequent. For more details, see the <command>constructor</command> tactic.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  
+  <sect1 id="tac_subst">
+    <title>subst</title>
+    <titleabbrev>subst</titleabbrev>
+    <para><userinput>subst</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">subst</emphasis></para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem><para>
+           None.
+         </para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem><para>
+           For each premise of the form 
+           <command>H: x = t</command> or <command>H: t = x</command>
+           where <command>x</command> is a local variable and 
+           <command>t</command> does not depend on <command>x</command>,
+           the tactic rewrites <command>H</command> wherever 
+           <command>x</command> appears clearing <command>H</command> and
+           <command>x</command> afterwards.
+         </para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem><para>
+           The one opened by the applied tactics.
+          </para></listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_symmetry">
+    <title>symmetry</title>
+    <titleabbrev>symmetry</titleabbrev>
+    <para>The tactic <command>symmetry</command> </para>
+    <para><userinput>symmetry </userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">symmetry</emphasis></para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>The conclusion of the current proof must be an equality.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It swaps the two sides of the equalityusing the symmetric
+             property.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_transitivity">
+    <title>transitivity</title>
+    <titleabbrev>transitivity</titleabbrev>
+    <para><userinput>transitivity t</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">transitivity</emphasis> &sterm;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>The conclusion of the current proof must be an equality.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It closes the current sequent by transitivity of the equality.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>It opens two new sequents <command>l=t</command> and
+             <command>t=r</command> where <command>l</command> and <command>r</command> are the left and right hand side of the equality in the conclusion of
+the current sequent to prove.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_unfold">
+    <title>unfold</title>
+    <titleabbrev>unfold</titleabbrev>
+    <para><userinput>unfold t patt</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">unfold</emphasis> [&sterm;] &pattern;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It finds all the occurrences of <command>t</command>
+             (possibly applied to arguments) in the subterms matched by
+             <command>patt</command>. Then it δ-expands each occurrence,
+             also performing β-reduction of the obtained term. If
+             <command>t</command> is omitted it defaults to each
+             subterm matched by <command>patt</command>.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+  <sect1 id="tac_whd">
+    <title>whd</title>
+    <titleabbrev>whd</titleabbrev>
+    <para><userinput>whd patt</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">whd</emphasis> &pattern;</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>It replaces all the terms matched by <command>patt</command>
+             with their βδιζ-weak-head normal form.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>None.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
+
+</chapter>
+
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_terms.html b/helm/www/matita/docs/manual-0.5.9/sec_terms.html
new file mode 100644 (file)
index 0000000..8d0b079
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 4. Syntax</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="prev" href="authoring.html" title="Authoring" /><link rel="next" href="axiom_definition_declaration.html" title="Definitions and declarations" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4. Syntax</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="authoring.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="axiom_definition_declaration.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="sec_terms"></a>Chapter 4. Syntax</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="sect1"><a href="sec_terms.html#terms_and_co">Terms &amp; co.</a></span></dt><dd><dl><dt><span class="sect2"><a href="sec_terms.html#lexical">Lexical conventions</a></span></dt><dt><span class="sect2"><a href="sec_terms.html#terms">Terms</a></span></dt></dl></dd><dt><span class="sect1"><a href="axiom_definition_declaration.html">Definitions and declarations</a></span></dt><dd><dl><dt><span class="sect2"><a href="axiom_definition_declaration.html#axiom">axiom</a></span></dt><dt><span class="sect2"><a href="axiom_definition_declaration.html#definition">definition</a></span></dt><dt><span class="sect2"><a href="axiom_definition_declaration.html#letrec"><span class="emphasis"><em>TODO</em></span></a></span></dt><dt><span class="sect2"><a href="axiom_definition_declaration.html#inductive">(co)inductive types declaration</a></span></dt><dt><span class="sect2"><a href="axiom_definition_declaration.html#record">record</a></span></dt></dl></dd><dt><span class="sect1"><a href="proofs.html">Proofs</a></span></dt><dd><dl><dt><span class="sect2"><a href="proofs.html#theorem">theorem</a></span></dt><dt><span class="sect2"><a href="proofs.html#variant">variant</a></span></dt><dt><span class="sect2"><a href="proofs.html#lemma">lemma</a></span></dt><dt><span class="sect2"><a href="proofs.html#fact">fact</a></span></dt><dt><span class="sect2"><a href="proofs.html#remark">remark</a></span></dt></dl></dd><dt><span class="sect1"><a href="tacticargs.html">Tactic arguments</a></span></dt><dd><dl><dt><span class="sect2"><a href="tacticargs.html#introsspec">intros-spec</a></span></dt><dt><span class="sect2"><a href="tacticargs.html#pattern">pattern</a></span></dt><dt><span class="sect2"><a href="tacticargs.html#reduction-kind">reduction-kind</a></span></dt><dt><span class="sect2"><a href="tacticargs.html#auto-params">auto-params</a></span></dt><dt><span class="sect2"><a href="tacticargs.html#justification">justification</a></span></dt></dl></dd></dl></div><p>To describe syntax in this manual we use the following conventions:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Non terminal symbols are emphasized and have a link to their
+       definition. E.g.: <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span></p></li><li class="listitem"><p>Terminal symbols are in bold. E.g.:
+       <span class="bold"><strong>theorem</strong></span></p></li><li class="listitem"><p>Optional sequences of elements are put in square brackets.
+       E.g.: [<span class="bold"><strong>in</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]</p></li><li class="listitem"><p>Alternatives are put in square brakets and they are
+       separated by vertical bars. E.g.: [<span class="bold"><strong>&lt;</strong></span>|<span class="bold"><strong>&gt;</strong></span>]</p></li><li class="listitem"><p>Repetitions of a sequence of elements are given by putting the
+    sequence in square brackets, that are followed by three dots. The empty
+    sequence is a valid repetition.
+    E.g.: [<span class="bold"><strong>and</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]…</p></li><li class="listitem"><p>Characters belonging to a set of characters are given
+     by listing the set elements in square brackets. Hyphens are used to
+     specify ranges of characters in the set.
+     E.g.: [<span class="bold"><strong>a</strong></span>-<span class="bold"><strong>zA</strong></span>-<span class="bold"><strong>Z0</strong></span>-<span class="bold"><strong>9_-</strong></span>]</p></li></ol></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="terms_and_co"></a>Terms &amp; co.</h2></div></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="lexical"></a>Lexical conventions</h3></div></div></div><div class="table"><a id="idp69058128"></a><p class="title"><strong>Table 4.1. qstring</strong></p><div class="table-contents"><table summary="qstring" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.qstring"></a><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.qstring">qstring</a></em></span></td><td style="">::=</td><td style=""><span class="bold"><strong>"</strong></span><span class="emphasis"><em>〈〈any sequence of characters excluded "〉〉</em></span><span class="bold"><strong>"</strong></span></td><td class="auto-generated" style=""> </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp69064992"></a><p class="title"><strong>Table 4.2. id</strong></p><div class="table-contents"><table summary="id" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.id"></a><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span></td><td style="">::=</td><td style=""><span class="emphasis"><em>〈〈any sequence of letters, underscores or valid <a class="ulink" href="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-Digit" target="_top">XML digits</a> prefixed by a latin letter ([a-zA-Z]) and post-fixed by a possible empty sequence of decorators ([?'`])〉〉</em></span></td><td class="auto-generated" style=""> </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp69071584"></a><p class="title"><strong>Table 4.3. nat</strong></p><div class="table-contents"><table summary="nat" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.nat"></a><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span></td><td style="">::=</td><td style=""><span class="emphasis"><em>〈〈any sequence of valid <a class="ulink" href="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-Digit" target="_top">XML digits</a>〉〉</em></span></td><td class="auto-generated" style=""> </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp69079568"></a><p class="title"><strong>Table 4.4. char</strong></p><div class="table-contents"><table summary="char" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.char"></a><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.char">char</a></em></span></td><td style="">::=</td><td style="">[<span class="bold"><strong>a</strong></span>-<span class="bold"><strong>zA</strong></span>-<span class="bold"><strong>Z0</strong></span>-<span class="bold"><strong>9_-</strong></span>]</td><td class="auto-generated" style=""> </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp69086976"></a><p class="title"><strong>Table 4.5. uri-step</strong></p><div class="table-contents"><table summary="uri-step" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.uri-step"></a><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.uri-step">uri-step</a></em></span></td><td style="">::=</td><td style=""><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.char">char</a></em></span>[<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.char">char</a></em></span>]…</td><td class="auto-generated" style=""> </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp69095648"></a><p class="title"><strong>Table 4.6. uri</strong></p><div class="table-contents"><table summary="uri" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.uri"></a><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.uri">uri</a></em></span></td><td style="">::=</td><td style="">[<span class="bold"><strong>cic:/</strong></span>|<span class="bold"><strong>theory:/</strong></span>]<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.uri-step">uri-step</a></em></span>[<span class="bold"><strong>/</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.uri-step">uri-step</a></em></span>]…<span class="bold"><strong>.</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>[<span class="bold"><strong>.</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]…[<span class="bold"><strong>#xpointer(</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span><span class="bold"><strong>/</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span>[<span class="bold"><strong>/</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span>]…<span class="bold"><strong>)</strong></span>]</td><td class="auto-generated" style=""> </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp69112080"></a><p class="title"><strong>Table 4.7. csymbol</strong></p><div class="table-contents"><table summary="csymbol" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.csymbol"></a><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.csymbol">csymbol</a></em></span></td><td style="">::=</td><td style=""><span class="bold"><strong>'</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span></td><td class="auto-generated" style=""> </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp69118752"></a><p class="title"><strong>Table 4.8. symbol</strong></p><div class="table-contents"><table summary="symbol" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.symbol"></a><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.symbol">symbol</a></em></span></td><td style="">::=</td><td style=""><span class="bold"><strong>〈〈None of the above〉〉</strong></span></td><td class="auto-generated" style=""> </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="terms"></a>Terms</h3></div></div></div><p>
+  </p><div class="table"><a id="tbl_terms"></a><p class="title"><strong>Table 4.9. Terms</strong></p><div class="table-contents"><table summary="Terms" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.term"></a><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span></td><td style="">::=</td><td style=""><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></td><td style="">simple or delimited term</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span></td><td style="">application</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>λ</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.args">args</a></em></span><span class="bold"><strong>.</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span></td><td style="">λ-abstraction</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>Π</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.args">args</a></em></span><span class="bold"><strong>.</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span></td><td style="">dependent product meant to define a datatype</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>∀</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.args">args</a></em></span><span class="bold"><strong>.</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span></td><td style="">dependent product meant to define a proposition</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="bold"><strong>→</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span></td><td style="">non-dependent product (logical implication or function space)</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>let</strong></span> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>|(<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span><span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>)] <span class="bold"><strong>≝</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="bold"><strong>in</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span></td><td style="">local definition</td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+       <span class="bold"><strong>let</strong></span>
+       [<span class="bold"><strong>co</strong></span>]<span class="bold"><strong>rec</strong></span>
+       <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.rec_def">rec_def</a></em></span>
+      </td><td style="">(co)recursive definitions</td></tr><tr><td style=""> </td><td style=""> </td><td style="">
+      [<span class="bold"><strong>and</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.rec_def">rec_def</a></em></span>]…
+      </td><td style=""> </td></tr><tr><td style=""> </td><td style=""> </td><td style="">
+      <span class="bold"><strong>in</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>
+      </td><td style=""> </td></tr><tr><td style=""> </td><td style="">|</td><td style="">…</td><td style="">user provided notation</td></tr><tr><td style=""><a id="grammar.rec_def"></a><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.rec_def">rec_def</a></em></span></td><td style="">::=</td><td style="">
+         <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>|<span class="bold"><strong>_</strong></span>|<span class="bold"><strong>(</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>[<span class="bold"><strong>,</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]… <span class="bold"><strong>:</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span><span class="bold"><strong>)</strong></span>]…
+       </td><td style=""> </td></tr><tr><td style=""> </td><td style=""> </td><td style="">
+         [<span class="bold"><strong>on</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]
+         [<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]
+         <span class="bold"><strong>≝</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]
+       </td><td style=""> </td></tr></tbody></table></div></div><p><br class="table-break" />
+
+  </p><div class="table"><a id="idp69190544"></a><p class="title"><strong>Table 4.10. Simple terms</strong></p><div class="table-contents"><table summary="Simple terms" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.sterm"></a><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></td><td style="">::=</td><td style=""><span class="bold"><strong>(</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span><span class="bold"><strong>)</strong></span></td><td style=""> </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>[<span class="bold"><strong>\subst[</strong></span>
+       <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span><span class="bold"><strong>≔</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>
+       [<span class="bold"><strong>;</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span><span class="bold"><strong>≔</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]…
+       <span class="bold"><strong>]</strong></span>]
+      </td><td style="">identifier with optional explicit named substitution</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.uri">uri</a></em></span></td><td style="">a qualified reference</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>Prop</strong></span></td><td style="">the impredicative sort of propositions</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>Set</strong></span></td><td style="">the impredicate sort of datatypes</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>CProp</strong></span></td><td style="">one fixed predicative sort of constructive propositions</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>Type</strong></span></td><td style="">one predicative sort of datatypes</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>?</strong></span></td><td style="">implicit argument</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>?n</strong></span>
+      [<span class="bold"><strong>[</strong></span>
+      [<span class="bold"><strong>_</strong></span>|<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]…
+      <span class="bold"><strong>]</strong></span>]</td><td style="">metavariable</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>match</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> 
+        [ <span class="bold"><strong>in</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> ]
+        [ <span class="bold"><strong>return</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> ]
+        <span class="bold"><strong>with</strong></span>
+      </td><td style="">case analysis</td></tr><tr><td style=""> </td><td style=""> </td><td style="">
+       <span class="bold"><strong>[</strong></span> 
+       <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.match_branch">match_branch</a></em></span>[<span class="bold"><strong>|</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.match_branch">match_branch</a></em></span>]…
+       <span class="bold"><strong>]</strong></span> 
+      </td><td style=""> </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>(</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span><span class="bold"><strong>:</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span><span class="bold"><strong>)</strong></span></td><td style="">cast</td></tr><tr><td style=""> </td><td style="">|</td><td style="">…</td><td style="">user provided notation at precedence 90</td></tr></tbody></table></div></div><p><br class="table-break" />
+
+  </p><div class="table"><a id="idp69241744"></a><p class="title"><strong>Table 4.11. Arguments</strong></p><div class="table-contents"><table summary="Arguments" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.args"></a><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.args">args</a></em></span></td><td style="">::=</td><td style="">
+       <span class="bold"><strong>_</strong></span>[<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]
+      </td><td style="">ignored argument</td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+       <span class="bold"><strong>(</strong></span><span class="bold"><strong>_</strong></span>[<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]<span class="bold"><strong>)</strong></span>
+      </td><td style="">ignored argument</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>[<span class="bold"><strong>,</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]…[<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]</td><td style=""> </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>(</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>[<span class="bold"><strong>,</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]…[<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]<span class="bold"><strong>)</strong></span></td><td style=""> </td></tr><tr><td style=""><a id="grammar.args2"></a><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.args2">args2</a></em></span></td><td style="">::=</td><td style=""><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span></td><td style=""> </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>(</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>[<span class="bold"><strong>,</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]…<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span><span class="bold"><strong>)</strong></span></td><td style=""> </td></tr></tbody></table></div></div><p><br class="table-break" />
+
+  </p><div class="table"><a id="idp69274944"></a><p class="title"><strong>Table 4.12. Pattern matching</strong></p><div class="table-contents"><table summary="Pattern matching" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.match_branch"></a><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.match_branch">match_branch</a></em></span></td><td style="">::=</td><td style=""><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.match_pattern">match_pattern</a></em></span> <span class="bold"><strong>⇒</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span></td><td style=""> </td></tr><tr><td style=""><a id="grammar.match_pattern"></a><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.match_pattern">match_pattern</a></em></span></td><td style="">::=</td><td style=""><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span></td><td style="">0-ary constructor</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>(</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]…<span class="bold"><strong>)</strong></span></td><td style="">n-ary constructor (binds the n arguments)</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]…</td><td style="">n-ary constructor (binds the n arguments)</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>_</strong></span></td><td style="">any remaining constructor (ignoring its arguments)</td></tr></tbody></table></div></div><p><br class="table-break" />
+  </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="authoring.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="axiom_definition_declaration.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Authoring </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Definitions and declarations</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_terms.xml b/helm/www/matita/docs/manual-0.5.9/sec_terms.xml
new file mode 100644 (file)
index 0000000..a1353b2
--- /dev/null
@@ -0,0 +1,843 @@
+
+<!-- =========== Terms, declarations and definitions ============ -->
+
+<chapter id="sec_terms">
+  <title>Syntax</title>
+  <para>To describe syntax in this manual we use the following conventions:</para>
+  <orderedlist>
+    <listitem><para>Non terminal symbols are emphasized and have a link to their
+       definition. E.g.: &term;</para></listitem>
+    <listitem><para>Terminal symbols are in bold. E.g.:
+       <emphasis role="bold">theorem</emphasis></para></listitem>
+    <listitem><para>Optional sequences of elements are put in square brackets.
+       E.g.: [<emphasis role="bold">in</emphasis> &term;]</para></listitem>
+    <listitem><para>Alternatives are put in square brakets and they are
+       separated by vertical bars. E.g.: [<emphasis role="bold">&lt;</emphasis>|<emphasis role="bold">&gt;</emphasis>]</para></listitem>
+    <listitem><para>Repetitions of a sequence of elements are given by putting the
+    sequence in square brackets, that are followed by three dots. The empty
+    sequence is a valid repetition.
+    E.g.: [<emphasis role="bold">and</emphasis> &term;]…</para></listitem>
+    <listitem><para>Characters belonging to a set of characters are given
+     by listing the set elements in square brackets. Hyphens are used to
+     specify ranges of characters in the set.
+     E.g.: [<emphasis role="bold">a</emphasis>-<emphasis role="bold">zA</emphasis>-<emphasis role="bold">Z0</emphasis>-<emphasis role="bold">9_-</emphasis>]</para></listitem>
+  </orderedlist>
+  <sect1 id="terms_and_co">
+  <title>Terms &amp; co.</title>
+  <sect2 id="lexical">
+  <title>Lexical conventions</title>
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>qstring</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+       <entry id="grammar.qstring">&qstring;</entry>
+       <entry>::=</entry>
+        <entry><emphasis role="bold">&quot;</emphasis><emphasis>〈〈any sequence of characters excluded &quot;〉〉</emphasis><emphasis role="bold">&quot;</emphasis></entry>
+       </row>
+      </tbody>
+     </tgroup>
+    </table>
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>id</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+       <entry id="grammar.id">&id;</entry>
+       <entry>::=</entry>
+        <entry><emphasis>〈〈any sequence of letters, underscores or valid <ulink type="http" url="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-Digit">XML digits</ulink> prefixed by a latin letter ([a-zA-Z]) and post-fixed by a possible empty sequence of decorators ([?'`])〉〉</emphasis></entry>
+       </row>
+      </tbody>
+     </tgroup>
+    </table>
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>nat</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+       <entry id="grammar.nat">&nat;</entry>
+       <entry>::=</entry>
+       <entry><emphasis>〈〈any sequence of valid <ulink type="http" url="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-Digit">XML digits</ulink>〉〉</emphasis></entry>
+       </row>
+      </tbody>
+     </tgroup>
+    </table>
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>char</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+       <entry id="grammar.char">&char;</entry>
+       <entry>::=</entry>
+       <entry>[<emphasis role="bold">a</emphasis>-<emphasis role="bold">zA</emphasis>-<emphasis role="bold">Z0</emphasis>-<emphasis role="bold">9_-</emphasis>]</entry>
+       </row>
+      </tbody>
+     </tgroup>
+    </table>
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>uri-step</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+       <entry id="grammar.uri-step">&uri-step;</entry>
+       <entry>::=</entry>
+       <entry>&char;[&char;]…</entry>
+       </row>
+      </tbody>
+     </tgroup>
+    </table>
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>uri</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+       <entry id="grammar.uri">&uri;</entry>
+       <entry>::=</entry>
+       <entry>[<emphasis role="bold">cic:/</emphasis>|<emphasis role="bold">theory:/</emphasis>]&uri-step;[<emphasis role="bold">/</emphasis>&uri-step;]…<emphasis role="bold">.</emphasis>&id;[<emphasis role="bold">.</emphasis>&id;]…[<emphasis role="bold">#xpointer(</emphasis>&nat;<emphasis role="bold">/</emphasis>&nat;[<emphasis role="bold">/</emphasis>&nat;]…<emphasis role="bold">)</emphasis>]</entry>
+       </row>
+      </tbody>
+     </tgroup>
+    </table>
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>csymbol</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+        <entry id="grammar.csymbol">&csymbol;</entry>
+        <entry>::=</entry>
+        <entry><emphasis role="bold">'</emphasis>&id;</entry>
+       </row>
+      </tbody>
+      </tgroup>
+    </table>
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>symbol</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+        <entry id="grammar.symbol">&symbol;</entry>
+        <entry>::=</entry>
+        <entry><emphasis role="bold">〈〈None of the above〉〉</emphasis></entry>
+       </row>
+      </tbody>
+      </tgroup>
+    </table>
+  </sect2>
+  <sect2 id="terms">
+  <title>Terms</title>
+
+  <!-- ZACK: Sample EBNF snippet, see:
+  http://www.docbook.org/tdg/en/html/productionset.html -->
+  <!--
+  <productionset>
+    <title>Terms</title>
+    <production id="grammar.term">
+      <lhs>&term;</lhs>
+      <rhs>&sterm;</rhs>
+      <lineannotation></lineannotation>
+    </production>
+  </productionset>
+  -->
+
+  <para>
+  <table id="tbl_terms" frame="topbot" rowsep="0" colsep="0" role="grammar">
+    <title>Terms</title>
+    <tgroup cols="4">
+    <tbody>
+     <row>
+      <entry id="grammar.term">&term;</entry>
+      <entry>::=</entry>
+      <entry>&sterm;</entry>
+      <entry>simple or delimited term</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry>&term; &term;</entry>
+      <entry>application</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry><emphasis role="bold">λ</emphasis>&args;<emphasis role="bold">.</emphasis>&term;</entry>
+      <entry>λ-abstraction</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry><emphasis role="bold">Π</emphasis>&args;<emphasis role="bold">.</emphasis>&term;</entry>
+      <entry>dependent product meant to define a datatype</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry><emphasis role="bold">∀</emphasis>&args;<emphasis role="bold">.</emphasis>&term;</entry>
+      <entry>dependent product meant to define a proposition</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry>&term; <emphasis role="bold">→</emphasis> &term;</entry>
+      <entry>non-dependent product (logical implication or function space)</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry><emphasis role="bold">let</emphasis> [&id;|(&id;<emphasis role="bold">:</emphasis> &term;)] <emphasis role="bold">≝</emphasis> &term; <emphasis role="bold">in</emphasis> &term;</entry>
+      <entry>local definition</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry>
+       <emphasis role="bold">let</emphasis>
+       [<emphasis role="bold">co</emphasis>]<emphasis role="bold">rec</emphasis>
+       &rec_def;
+      </entry>
+      <entry>(co)recursive definitions</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry/>
+      <entry>
+      [<emphasis role="bold">and</emphasis> &rec_def;]…
+      </entry>
+      <entry/>
+     </row>
+     <row>
+      <entry/>
+      <entry/>
+      <entry>
+      <emphasis role="bold">in</emphasis> &term;
+      </entry>
+      <entry/>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry>…</entry>
+      <entry>user provided notation</entry>
+     </row>
+      <row>
+       <entry id="grammar.rec_def">&rec_def;</entry>
+       <entry>::=</entry>
+       <entry>
+         &id; [&id;|<emphasis role="bold">_</emphasis>|<emphasis role="bold">(</emphasis>&id;[<emphasis role="bold">,</emphasis>&id;]… <emphasis role="bold">:</emphasis>&term;<emphasis role="bold">)</emphasis>]…
+       </entry>
+       <entry />
+      </row>
+      <row>
+       <entry />
+       <entry />
+       <entry>
+         [<emphasis role="bold">on</emphasis> &id;]
+         [<emphasis role="bold">:</emphasis> &term;]
+         <emphasis role="bold">≝</emphasis> &term;]
+       </entry>
+       <entry />
+      </row>
+    </tbody>
+   </tgroup>
+  </table>
+
+  <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+    <title>Simple terms</title>
+    <tgroup cols="4">
+    <tbody>
+     <row>
+      <entry id="grammar.sterm">&sterm;</entry>
+      <entry>::=</entry>
+      <entry><emphasis role="bold">(</emphasis>&term;<emphasis role="bold">)</emphasis></entry>
+      <entry/>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry>&id;[<emphasis role="bold">\subst[</emphasis>
+       &id;<emphasis role="bold">≔</emphasis>&term;
+       [<emphasis role="bold">;</emphasis>&id;<emphasis role="bold">≔</emphasis>&term;]…
+       <emphasis role="bold">]</emphasis>]
+      </entry>
+      <entry>identifier with optional explicit named substitution</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry>&uri;</entry>
+      <entry>a qualified reference</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry><emphasis role="bold">Prop</emphasis></entry>
+      <entry>the impredicative sort of propositions</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry><emphasis role="bold">Set</emphasis></entry>
+      <entry>the impredicate sort of datatypes</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry><emphasis role="bold">CProp</emphasis></entry>
+      <entry>one fixed predicative sort of constructive propositions</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry><emphasis role="bold">Type</emphasis></entry>
+      <entry>one predicative sort of datatypes</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry><emphasis role="bold">?</emphasis></entry>
+      <entry>implicit argument</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry><emphasis role="bold">?n</emphasis>
+      [<emphasis role="bold">[</emphasis>
+      [<emphasis role="bold">_</emphasis>|&term;]…
+      <emphasis role="bold">]</emphasis>]</entry>
+      <entry>metavariable</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+        <entry><emphasis role="bold">match</emphasis> &term; 
+        [ <emphasis role="bold">in</emphasis> &id; ]
+        [ <emphasis role="bold">return</emphasis> &term; ]
+        <emphasis role="bold">with</emphasis>
+      </entry>
+      <entry>case analysis</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry/>
+      <entry>
+       <emphasis role="bold">[</emphasis> 
+       &match_branch;[<emphasis role="bold">|</emphasis>&match_branch;]…
+       <emphasis role="bold">]</emphasis> 
+      </entry>
+      <entry/>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry><emphasis role="bold">(</emphasis>&term;<emphasis role="bold">:</emphasis>&term;<emphasis role="bold">)</emphasis></entry>
+      <entry>cast</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry>…</entry>
+      <entry>user provided notation at precedence 90</entry>
+     </row>
+    </tbody>
+   </tgroup>
+  </table>
+
+  <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+    <title>Arguments</title>
+    <tgroup cols="4">
+    <tbody>
+     <row>
+      <entry id="grammar.args">&args;</entry>
+      <entry>::=</entry>
+      <entry>
+       <emphasis role="bold">_</emphasis>[<emphasis role="bold">:</emphasis> &term;]
+      </entry>
+      <entry>ignored argument</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry>
+       <emphasis role="bold">(</emphasis><emphasis role="bold">_</emphasis>[<emphasis role="bold">:</emphasis> &term;]<emphasis role="bold">)</emphasis>
+      </entry>
+      <entry>ignored argument</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry>&id;[<emphasis role="bold">,</emphasis>&id;]…[<emphasis role="bold">:</emphasis> &term;]</entry>
+      <entry></entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry><emphasis role="bold">(</emphasis>&id;[<emphasis role="bold">,</emphasis>&id;]…[<emphasis role="bold">:</emphasis> &term;]<emphasis role="bold">)</emphasis></entry>
+      <entry/>
+     </row>
+     <row>
+      <entry id="grammar.args2">&args2;</entry>
+      <entry>::=</entry>
+      <entry>&id;</entry>
+      <entry/>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry><emphasis role="bold">(</emphasis>&id;[<emphasis role="bold">,</emphasis>&id;]…<emphasis role="bold">:</emphasis> &term;<emphasis role="bold">)</emphasis></entry>
+      <entry/>
+     </row>
+    </tbody>
+   </tgroup>
+  </table>
+
+  <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+    <title>Pattern matching</title>
+    <tgroup cols="4">
+    <tbody>
+      <row>
+       <entry id="grammar.match_branch">&match_branch;</entry>
+       <entry>::=</entry>
+       <entry>&match_pattern; <emphasis role="bold">⇒</emphasis> &term;</entry>
+       <entry />
+      </row>
+     <row>
+      <entry id="grammar.match_pattern">&match_pattern;</entry>
+      <entry>::=</entry>
+      <entry>&id;</entry>
+      <entry>0-ary constructor</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry><emphasis role="bold">(</emphasis>&id; &id; [&id;]…<emphasis role="bold">)</emphasis></entry>
+      <entry>n-ary constructor (binds the n arguments)</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry>&id; &id; [&id;]…</entry>
+      <entry>n-ary constructor (binds the n arguments)</entry>
+     </row>
+     <row>
+      <entry/>
+      <entry>|</entry>
+      <entry><emphasis role="bold">_</emphasis></entry>
+      <entry>any remaining constructor (ignoring its arguments)</entry>
+     </row>
+    </tbody>
+   </tgroup>
+  </table>
+  </para>
+
+  </sect2>
+  </sect1>
+
+  <sect1 id="axiom_definition_declaration">
+   <title>Definitions and declarations</title>
+   <sect2 id="axiom">
+    <title><emphasis role="bold">axiom</emphasis> &id;<emphasis role="bold">:</emphasis> &term;</title>
+    <titleabbrev>axiom</titleabbrev>
+    <para><userinput>axiom H: P</userinput></para>
+    <para><command>H</command> is declared as an axiom that states <command>P</command></para>
+  </sect2>
+  <sect2 id="definition">
+    <title><emphasis role="bold">definition</emphasis> &id;[<emphasis role="bold">:</emphasis> &term;] [<emphasis role="bold">≝</emphasis> &term;]</title>
+    <titleabbrev>definition</titleabbrev>
+    <para><userinput>definition f: T ≝ t</userinput></para>
+    <para><command>f</command> is defined as <command>t</command>;
+     <command>T</command> is its type. An error is raised if the type of
+     <command>t</command> is not convertible to <command>T</command>.</para>
+    <para><command>T</command> is inferred from <command>t</command> if
+      omitted.</para>
+    <para><command>t</command> can be omitted only if <command>T</command> is
+     given. In this case Matita enters in interactive mode and
+     <command>f</command> must be defined by means of tactics.</para>
+    <para>Notice that the command is equivalent to <command>theorem f: T ≝ t</command>.</para>
+  </sect2>
+  <sect2 id="letrec">
+    <title><emphasis role="bold">letrec</emphasis> &TODO;</title>
+    <titleabbrev>&TODO;</titleabbrev>
+    <para>&TODO;</para>
+  </sect2>
+  <sect2 id="inductive">
+    <title>[<emphasis role="bold">inductive</emphasis>|<emphasis role="bold">coinductive</emphasis>] &id; [&args2;]… <emphasis role="bold">:</emphasis> &term; <emphasis role="bold">≝</emphasis> [<emphasis role="bold">|</emphasis>] [&id;<emphasis role="bold">:</emphasis>&term;] [<emphasis role="bold">|</emphasis> &id;<emphasis role="bold">:</emphasis>&term;]…
+[<emphasis role="bold">with</emphasis> &id; <emphasis role="bold">:</emphasis> &term; <emphasis role="bold">≝</emphasis> [<emphasis role="bold">|</emphasis>] [&id;<emphasis role="bold">:</emphasis>&term;] [<emphasis role="bold">|</emphasis> &id;<emphasis role="bold">:</emphasis>&term;]…]…
+</title>
+    <titleabbrev>(co)inductive types declaration</titleabbrev>
+    <para><userinput>inductive i x y z: S ≝ k1:T1 | … | kn:Tn with i' : S' ≝ k1':T1' | … | km':Tm'</userinput></para>
+    <para>Declares a family of two mutually inductive types
+     <command>i</command> and <command>i'</command> whose types are
+     <command>S</command> and <command>S'</command>, which must be convertible
+     to sorts.</para>
+    <para>The constructors <command>ki</command> of type <command>Ti</command>
+     and <command>ki'</command> of type <command>Ti'</command> are also
+     simultaneously declared. The declared types <command>i</command> and
+     <command>i'</command> may occur in the types of the constructors, but
+     only in strongly positive positions according to the rules of the
+     calculus.</para>
+    <para>The whole family is parameterized over the arguments <command>x,y,z</command>.</para>
+    <para>If the keyword <command>coinductive</command> is used, the declared
+     types are considered mutually coinductive.</para>
+    <para>Elimination principles for the record are automatically generated
+     by Matita, if allowed by the typing rules of the calculus according to
+     the sort <command>S</command>. If generated,
+     they are named <command>i_ind</command>, <command>i_rec</command> and
+     <command>i_rect</command> according to the sort of their induction
+     predicate.</para> 
+  </sect2>
+  <sect2 id="record">
+    <title><emphasis role="bold">record</emphasis> &id; [&args2;]… <emphasis role="bold">:</emphasis> &term; <emphasis role="bold">≝</emphasis><emphasis role="bold">{</emphasis>[&id; [<emphasis role="bold">:</emphasis>|<emphasis role="bold">:&gt;</emphasis>] &term;] [<emphasis role="bold">;</emphasis>&id; [<emphasis role="bold">:</emphasis>|<emphasis role="bold">:&gt;</emphasis>] &term;]…<emphasis role="bold">}</emphasis></title>
+    <titleabbrev>record</titleabbrev>
+    <para><userinput>record id x y z: S ≝ { f1: T1; …; fn:Tn }</userinput></para>
+    <para>Declares a new record family <command>id</command> parameterized over
+     <command>x,y,z</command>.</para>
+    <para><command>S</command> is the type of the record
+     and it must be convertible to a sort.</para>
+    <para>Each field <command>fi</command> is declared by giving its type
+     <command>Ti</command>. A record without any field is admitted.</para>
+    <para>Elimination principles for the record are automatically generated
+     by Matita, if allowed by the typing rules of the calculus according to
+     the sort <command>S</command>. If generated,
+     they are named <command>i_ind</command>, <command>i_rec</command> and
+     <command>i_rect</command> according to the sort of their induction
+     predicate.</para> 
+    <para>For each field <command>fi</command> a record projection
+     <command>fi</command> is also automatically generated if projection
+     is allowed by the typing rules of the calculus according to the
+     sort <command>S</command>, the type <command>T1</command> and
+     the definability of depending record projections.</para>
+    <para>If the type of a field is declared with <command>:&gt;</command>,
+     the corresponding record projection becomes an implicit coercion.
+     This is just syntactic sugar and it has the same effect of declaring the
+     record projection as a coercion later on.</para>
+  </sect2>
+  </sect1>
+
+  <sect1 id="proofs">
+   <title>Proofs</title>
+   <sect2 id="theorem">
+    <title><emphasis role="bold">theorem</emphasis> &id;[<emphasis role="bold">:</emphasis> &term;] [<emphasis role="bold">≝</emphasis> &term;]</title>
+    <titleabbrev>theorem</titleabbrev>
+    <para><userinput>theorem f: P ≝ p</userinput></para>
+    <para>Proves a new theorem <command>f</command> whose thesis is
+     <command>P</command>.</para>
+    <para>If <command>p</command> is provided, it must be a proof term for
+     <command>P</command>. Otherwise an interactive proof is started.</para>
+    <para><command>P</command> can be omitted only if the proof is not
+     interactive.</para>
+    <para>Proving a theorem already proved in the library is an error.
+     To provide an alternative name and proof for the same theorem, use
+     <command>variant f: P ≝ p</command>.</para>
+    <para>A warning is raised if the name of the theorem cannot be obtained
+      by mangling the name of the constants in its thesis.</para>
+    <para>Notice that the command is equivalent to <command>definition f: T ≝ t</command>.</para>
+   </sect2>
+   <sect2 id="variant">
+    <title><emphasis role="bold">variant</emphasis> &id;<emphasis role="bold">:</emphasis> &term; <emphasis role="bold">≝</emphasis> &term;</title>
+    <titleabbrev>variant</titleabbrev>
+    <para><userinput>variant f: T ≝ t</userinput></para>
+    <para>Same as <command>theorem f: T ≝ t</command>, but it does not
+     complain if the theorem has already been proved. To be used to give
+     an alternative name or proof to a theorem.</para>
+   </sect2>
+   <sect2 id="lemma">
+    <title><emphasis role="bold">lemma</emphasis> &id;[<emphasis role="bold">:</emphasis> &term;] [<emphasis role="bold">≝</emphasis> &term;]</title>
+    <titleabbrev>lemma</titleabbrev>
+    <para><userinput>lemma f: T ≝ t</userinput></para>
+    <para>Same as <command>theorem f: T ≝ t</command></para>
+   </sect2>
+   <sect2 id="fact">
+    <title><emphasis role="bold">fact</emphasis> &id;[<emphasis role="bold">:</emphasis> &term;] [<emphasis role="bold">≝</emphasis> &term;]</title>
+    <titleabbrev>fact</titleabbrev>
+    <para><userinput>fact f: T ≝ t</userinput></para>
+    <para>Same as <command>theorem f: T ≝ t</command></para>
+   </sect2>
+   <sect2 id="remark">
+    <title><emphasis role="bold">remark</emphasis> &id;[<emphasis role="bold">:</emphasis> &term;] [<emphasis role="bold">≝</emphasis> &term;]</title>
+    <titleabbrev>remark</titleabbrev>
+    <para><userinput>remark f: T ≝ t</userinput></para>
+    <para>Same as <command>theorem f: T ≝ t</command></para>
+   </sect2>
+  </sect1>
+
+  <sect1 id="tacticargs">
+   <title>Tactic arguments</title>
+   <para>This section documents the syntax of some recurring arguments for
+    tactics.</para>
+
+    <sect2 id="introsspec">
+    <title>intros-spec</title>
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>intros-spec</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+       <entry id="grammar.intros-spec">&intros-spec;</entry>
+       <entry>::=</entry>
+        <entry>[&nat;] [<emphasis role="bold">(</emphasis>[&id;]…<emphasis role="bold">)</emphasis>]</entry>
+       </row>
+      </tbody>
+     </tgroup>
+    </table>
+        <para>The natural number is the number of new hypotheses to be introduced. The list of identifiers gives the name for the first hypotheses.</para>
+    </sect2>
+
+    <sect2 id="pattern">
+    <title>pattern</title>
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>pattern</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+       <entry id="grammar.pattern">&pattern;</entry>
+       <entry>::=</entry>
+        <entry><emphasis role="bold">in</emphasis>
+          [&id;[<emphasis role="bold">:</emphasis> &path;]]…
+          [<emphasis role="bold">⊢</emphasis> &path;]]</entry>
+        <entry>simple pattern</entry>
+       </row>
+       <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><emphasis role="bold">in match</emphasis> &path;
+          [<emphasis role="bold">in</emphasis>
+          [&id;[<emphasis role="bold">:</emphasis> &path;]]…
+          [<emphasis role="bold">⊢</emphasis> &path;]]</entry>
+        <entry>full pattern</entry>
+       </row>
+      </tbody>
+     </tgroup>
+    </table>
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>path</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+       <entry id="grammar.path">&path;</entry>
+       <entry>::=</entry>
+        <entry><emphasis>〈〈any &sterm; without occurrences of <emphasis role="bold">Set</emphasis>, <emphasis role="bold">Prop</emphasis>, <emphasis role="bold">CProp</emphasis>, <emphasis role="bold">Type</emphasis>, &id;, &uri; and user provided notation; however, <emphasis role="bold">%</emphasis> is now an additional production for &sterm;〉〉</emphasis></entry>
+       </row>
+      </tbody>
+     </tgroup>
+    </table>
+    <para>A <emphasis>path</emphasis> locates zero or more subterms of a given term by mimicking the term structure up to:</para>
+    <orderedlist>
+      <listitem><para>Occurrences of the subterms to locate that are
+       represented by <emphasis role="bold">%</emphasis>.</para></listitem>
+      <listitem><para>Subterms without any occurrence of subterms to locate
+       that can be represented by <emphasis role="bold">?</emphasis>.
+       </para></listitem>
+    </orderedlist>
+    <para>Warning: the format for a path for a <emphasis role="bold">match</emphasis> … <emphasis role="bold">with</emphasis>
+     expression is restricted to: <emphasis role="bold">match</emphasis> &path;
+     <emphasis role="bold">with</emphasis>
+     <emphasis role="bold">[</emphasis>
+     <emphasis role="bold">_</emphasis>
+     <emphasis role="bold">⇒</emphasis>
+     &path;
+     <emphasis role="bold">|</emphasis> …
+     <emphasis role="bold">|</emphasis>
+     <emphasis role="bold">_</emphasis>
+     <emphasis role="bold">⇒</emphasis>
+     &path;
+     <emphasis role="bold">]</emphasis>
+     Its semantics is the following: the n-th 
+     &quot;<emphasis role="bold">_</emphasis>
+     <emphasis role="bold">⇒</emphasis>
+     &path;&quot; branch is matched against the n-th constructor of the
+     inductive data type. The head λ-abstractions of &path; are matched
+     against the corresponding constructor arguments. 
+    </para>
+    <para>For instance, the path
+      <userinput>∀_,_:?.(? ? % ?)→(? ? ? %)</userinput>
+       locates at once the subterms
+      <userinput>x+y</userinput> and <userinput>x*y</userinput> in the
+      term <userinput>∀x,y:nat.x+y=1→0=x*y</userinput>
+      (where the notation <userinput>A=B</userinput> hides the term
+      <userinput>(eq T A B)</userinput> for some type <userinput>T</userinput>).
+    </para>
+    <para>A <emphasis>simple pattern</emphasis> extends paths to locate
+     subterms in a whole sequent. In particular, the pattern
+     <userinput>in H: p  K: q ⊢ r</userinput> locates at once all the subterms
+     located by the pattern <userinput>r</userinput> in the conclusion of the
+     sequent and by the patterns <userinput>p</userinput> and
+     <userinput>q</userinput> in the hypotheses <userinput>H</userinput>
+     and <userinput>K</userinput> of the sequent.
+    </para>
+    <para>If no list of hypotheses is provided in a simple pattern, no subterm
+     is selected in the hypothesis. If the <userinput>⊢ p</userinput>
+     part of the pattern is not provided, no subterm will be matched in the
+     conclusion if at least one hypothesis is provided; otherwise the whole
+     conclusion is selected.
+    </para>
+    <para>Finally, a <emphasis>full pattern</emphasis> is interpreted in three
+     steps. In the first step the <userinput>match T in</userinput>
+     part is ignored and a set <emphasis>S</emphasis> of subterms is
+     located as for the case of
+     simple patterns. In the second step the term <userinput>T</userinput>
+     is parsed and interpreted in the context of each subterm
+     <emphasis>s ∈ S</emphasis>. In the last term for each
+     <emphasis>s ∈ S</emphasis> the interpreted term <userinput>T</userinput>
+     computed in the previous step is looked for. The final set of subterms
+     located by the full pattern is the set of occurrences of
+     the interpreted <userinput>T</userinput> in the subterms <emphasis>s</emphasis>.
+    </para>
+    <para>A full pattern can always be replaced by a simple pattern,
+      often at the cost of increased verbosity or decreased readability.</para>
+    <para>Example: the pattern
+      <userinput>⊢ in match x+y in ∀_,_:?.(? ? % ?)</userinput>
+      locates only the first occurrence of <userinput>x+y</userinput>
+      in the sequent <userinput>x,y: nat ⊢ ∀z,w:nat. (x+y) * (z+w) =
+      z * (x+y) + w * (x+y)</userinput>. The corresponding simple pattern
+      is <userinput>⊢ ∀_,_:?.(? ? (? % ?) ?)</userinput>.
+    </para>
+    <para>Every tactic that acts on subterms of the selected sequents have
+     a pattern argument for uniformity. To automatically generate a simple
+     pattern:</para>
+    <orderedlist>
+     <listitem><para>Select in the current goal the subterms to pass to the
+      tactic by using the mouse. In order to perform a multiple selection of
+      subterms, hold the Ctrl key while selecting every subterm after the
+      first one.</para></listitem>
+     <listitem><para>From the contextual menu select &quot;Copy&quot;.</para></listitem>
+     <listitem><para>From the &quot;Edit&quot; or the contextual menu select
+      &quot;Paste as pattern&quot;</para></listitem>
+    </orderedlist>
+    </sect2>
+
+    <sect2 id="reduction-kind">
+    <title>reduction-kind</title>
+    <para>Reduction kinds are normalization functions that transform a term
+     to a convertible but simpler one. Each reduction kind can be used both
+     as a tactic argument and as a stand-alone tactic.</para>
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>reduction-kind</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+       <entry id="grammar.reduction-kind">&reduction-kind;</entry>
+       <entry>::=</entry>
+        <entry><emphasis role="bold">normalize</emphasis></entry>
+        <entry>Computes the βδιζ-normal form</entry>
+       </row>
+       <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><emphasis role="bold">simplify</emphasis></entry>
+        <entry>Computes a form supposed to be simpler</entry>
+       </row>
+       <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><emphasis role="bold">unfold</emphasis> [&sterm;]</entry>
+        <entry>δ-reduces the constant or variable if specified, or that
+         in head position</entry>
+       </row>
+       <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><emphasis role="bold">whd</emphasis></entry>
+        <entry>Computes the βδιζ-weak-head normal form</entry>
+       </row>
+      </tbody>
+     </tgroup>
+    </table>
+    </sect2>
+
+    <sect2 id="auto-params">
+    <title>auto-params</title>
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>auto-params</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+       <entry id="grammar.autoparams">&autoparams;</entry>
+       <entry>::=</entry>
+        <entry>[&simpleautoparam;]…
+               [<emphasis role="bold">by</emphasis>
+                &term; [,&term;]…]
+        </entry>
+       </row>
+      </tbody>
+     </tgroup>
+    </table>
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>simple-auto-param</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+       <entry id="grammar.simpleautoparam">&simpleautoparam;</entry>
+       <entry>::=</entry>
+        <entry><emphasis role="bold">depth=&nat;</emphasis></entry>
+        <entry>Give a bound to the depth of the search tree</entry>
+       </row>
+       <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><emphasis role="bold">width=&nat;</emphasis></entry>
+        <entry>The maximal width of the search tree</entry>
+       </row>
+       <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><emphasis role="bold">library</emphasis></entry>
+        <entry>Search everywhere (not only in included files)</entry>
+       </row>
+       <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><emphasis role="bold">type</emphasis></entry>
+        <entry>Try to close also goals of sort Type, otherwise only goals
+               living in sort Prop are attacked.
+        </entry>
+       </row>
+       <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><emphasis role="bold">paramodulation</emphasis></entry>
+        <entry>Try to close the goal performing unit-equality paramodulation
+        </entry>
+       </row>
+       <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><emphasis role="bold">size=&nat;</emphasis></entry>
+        <entry>The maximal number of nodes in the proof</entry>
+       </row>
+       <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><emphasis role="bold">timeout=&nat;</emphasis></entry>
+        <entry>Timeout in seconds
+        </entry>
+       </row>
+      </tbody>
+     </tgroup>
+    </table>
+    </sect2>
+
+    <sect2 id="justification">
+    <title>justification</title>
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>justification</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+       <entry id="grammar.justification">&justification;</entry>
+  <entry>::=</entry>
+        <entry><emphasis role="bold">using</emphasis> &term;</entry>
+        <entry>Proof term manually provided</entry>
+       </row>
+       <row>
+        <entry/>
+        <entry>|</entry>
+        <entry>&autoparams;</entry>
+        <entry>Call automation</entry>
+       </row>
+      </tbody>
+     </tgroup>
+    </table>
+    </sect2>
+  </sect1>
+
+</chapter>
+
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_usernotation.html b/helm/www/matita/docs/manual-0.5.9/sec_usernotation.html
new file mode 100644 (file)
index 0000000..322544b
--- /dev/null
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 5. Extending the syntax</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="prev" href="tacticargs.html" title="Tactic arguments" /><link rel="next" href="ch05s02.html" title="interpretation" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 5. Extending the syntax</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tacticargs.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch05s02.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="sec_usernotation"></a>Chapter 5. Extending the syntax</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="sect1"><a href="sec_usernotation.html#idp70046384">notation</a></span></dt><dt><span class="sect1"><a href="ch05s02.html">interpretation</a></span></dt></dl></div>
+  Introduction: <span class="emphasis"><em>TODO</em></span><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="idp70046384"></a>notation</h2></div></div></div><p><strong class="userinput"><code>notation usage "presentation" associativity with precedence p for content</code></strong></p><p><a id="notation"></a>
+    </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>notation</strong></span>
+           [<span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.usage">usage</a></em></span>] <span class="bold"><strong>"</strong></span><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.notation_lhs">notation_lhs</a></em></span><span class="bold"><strong>"</strong></span> [<span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.associativity">associativity</a></em></span>] <span class="bold"><strong>with</strong></span> <span class="bold"><strong>precedence</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span>
+           <span class="bold"><strong>for</strong></span>
+           <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.notation_rhs">notation_rhs</a></em></span>
+          </p></dd><dt><span class="term">Action:</span></dt><dd><p>Declares a mapping between the presentation
+          AST <span class="command"><strong>presentation</strong></span> and the content AST
+          <span class="command"><strong>content</strong></span>. The declared presentation AST fragment
+          <span class="command"><strong>presentation</strong></span> is at precedence level
+          <span class="command"><strong>p</strong></span>. The precedence level is used to determine where
+          parentheses must be inserted. In particular, the content AST fragment
+          <span class="command"><strong>content</strong></span> is actually a pattern, since it contains
+          placeholders (variables) for sub-ASTs. Every placeholder for a term
+          is given an expected precedence level. Parentheses must be inserted
+          around sub-ASTs having a precedence level strictly smaller than the
+          expected one.</p><p>If <span class="command"><strong>presentation</strong></span> describes a binary
+          infix operator and if no precedence level is explicitly given for the
+          operator arguments, an <span class="command"><strong>associativity</strong></span> declaration
+          can be given to automatically choose the right level for the operands.
+          Otherwise, no <span class="command"><strong>associativity</strong></span> can be given.</p><p>If <span class="command"><strong>direction</strong></span> is
+          omitted, the mapping is bi-directional and is used both during
+          parsing and pretty-printing of terms. If <span class="command"><strong>direction</strong></span>
+          is <span class="command"><strong>&gt;</strong></span>, the mapping is used only during parsing;
+          if it is <span class="command"><strong>&lt;</strong></span>, it is used only during
+          pretty-printing. Thus it is possible to use simple notations to type
+          for writing the term, and nicer ones for rendering it.</p></dd><dt><span class="term">Notation arguments:</span></dt><dd><div class="table"><a id="idp70117712"></a><p class="title"><strong>Table 5.1. usage</strong></p><div class="table-contents"><table summary="usage" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.usage"></a><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.usage">usage</a></em></span></td><td style="">::=</td><td style=""><span class="bold"><strong>&lt;</strong></span></td><td style="">Only for pretty-printing</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>&gt;</strong></span></td><td style="">Only for parsing</td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp70126480"></a><p class="title"><strong>Table 5.2. associativity</strong></p><div class="table-contents"><table summary="associativity" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.associativity"></a><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.associativity">associativity</a></em></span></td><td style="">::=</td><td style=""><span class="bold"><strong>left</strong></span> <span class="bold"><strong>associative</strong></span></td><td style="">Left associative</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>right</strong></span> <span class="bold"><strong>associative</strong></span></td><td style="">Right associative</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>non</strong></span> <span class="bold"><strong>associative</strong></span></td><td style="">Non associative (default)</td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp70139344"></a><p class="title"><strong>Table 5.3. notation_rhs</strong></p><div class="table-contents"><table summary="notation_rhs" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.notation_rhs"></a><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.notation_rhs">notation_rhs</a></em></span></td><td style="">::=</td><td style=""><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.unparsed_ast">unparsed_ast</a></em></span></td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.unparsed_meta">unparsed_meta</a></em></span></td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp70148064"></a><p class="title"><strong>Table 5.4. unparsed_ast</strong></p><div class="table-contents"><table summary="unparsed_ast" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.unparsed_ast"></a><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.unparsed_ast">unparsed_ast</a></em></span></td><td style="">::=</td><td style=""><span class="bold"><strong>@{</strong></span><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.enriched_term">enriched_term</a></em></span><span class="bold"><strong>}</strong></span></td><td style="">A content level AST (a term which is parsed, but not disambiguated).</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>@</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span></td><td style=""><span class="command"><strong>@id</strong></span> is just an abbreviation for <span class="command"><strong>@{id}</strong></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>@</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.csymbol">csymbol</a></em></span></td><td style=""><span class="command"><strong>@'symbol</strong></span> is just an abbreviation for <span class="command"><strong>@{'symbol}</strong></span></td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp70166064"></a><p class="title"><strong>Table 5.5. enriched_term</strong></p><div class="table-contents"><table summary="enriched_term" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.enriched_term"></a><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.enriched_term">enriched_term</a></em></span></td><td style="">::=</td><td style="">〈〈A term that may contain occurrences of <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.unparsed_meta">unparsed_meta</a></em></span>, even as variable names in binders, and occurrences of <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.csymbol">csymbol</a></em></span>〉〉</td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp70173616"></a><p class="title"><strong>Table 5.6. unparsed_meta</strong></p><div class="table-contents"><table summary="unparsed_meta" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.unparsed_meta"></a><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.unparsed_meta">unparsed_meta</a></em></span></td><td style="">::=</td><td style=""><span class="bold"><strong>${</strong></span><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.level2_meta">level2_meta</a></em></span><span class="bold"><strong>}</strong></span></td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>$</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span></td><td style=""><span class="command"><strong>$id</strong></span> is just an abbreviation for <span class="command"><strong>${id}</strong></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>$</strong></span><span class="bold"><strong>_</strong></span></td><td style=""><span class="command"><strong>$_</strong></span> is just an abbreviation for <span class="command"><strong>${_}</strong></span></td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp70190032"></a><p class="title"><strong>Table 5.7. level2_meta</strong></p><div class="table-contents"><table summary="level2_meta" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.level2_meta"></a><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.level2_meta">level2_meta</a></em></span></td><td style="">::=</td><td style=""><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.unparsed_ast">unparsed_ast</a></em></span></td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>term</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span></td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>number</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span></td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>ident</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span></td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>fresh</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span></td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>anonymous</strong></span></td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span></td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>fold</strong></span> [<span class="bold"><strong>left</strong></span>|<span class="bold"><strong>right</strong></span>] <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.level2_meta">level2_meta</a></em></span> <span class="bold"><strong>rec</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.level2_meta">level2_meta</a></em></span></td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>default</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.level2_meta">level2_meta</a></em></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.level2_meta">level2_meta</a></em></span></td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>if</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.level2_meta">level2_meta</a></em></span> <span class="bold"><strong>then</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.level2_meta">level2_meta</a></em></span> <span class="bold"><strong>else</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.level2_meta">level2_meta</a></em></span></td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>fail</strong></span></td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp70234960"></a><p class="title"><strong>Table 5.8. notation_lhs</strong></p><div class="table-contents"><table summary="notation_lhs" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.notation_lhs"></a><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.notation_lhs">notation_lhs</a></em></span></td><td style="">::=</td><td style=""><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span> [<span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span>]…</td><td class="auto-generated" style=""> </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp70242480"></a><p class="title"><strong>Table 5.9. layout</strong></p><div class="table-contents"><table summary="layout" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.layout"></a><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span></td><td style="">::=</td><td style=""><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span> <span class="bold"><strong>\sub</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span></td><td style="">Subscript</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span> <span class="bold"><strong>\sup</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span></td><td style="">Superscript</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span> <span class="bold"><strong>\below</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span></td><td style=""> </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span> <span class="bold"><strong>\above</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span></td><td style=""> </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span> <span class="bold"><strong>\over</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span></td><td style=""> </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span> <span class="bold"><strong>\atop</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span></td><td style=""> </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span> <span class="bold"><strong>\frac</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span></td><td style="">Fraction</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>\infrule</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span></td><td style="">Inference rule (premises, conclusion, rule name)</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>\sqrt</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span></td><td style="">Square root</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>\root</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span> <span class="bold"><strong>\of</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span></td><td style="">Generalized root</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>hbox</strong></span> <span class="bold"><strong>(</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span> [<span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span>]… <span class="bold"><strong>)</strong></span></td><td style="">Horizontal box</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>vbox</strong></span> <span class="bold"><strong>(</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span> [<span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span>]… <span class="bold"><strong>)</strong></span></td><td style="">Vertical box</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>hvbox</strong></span> <span class="bold"><strong>(</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span> [<span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span>]… <span class="bold"><strong>)</strong></span></td><td style="">Horizontal and vertical box</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>hovbox</strong></span> <span class="bold"><strong>(</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span> [<span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span>]… <span class="bold"><strong>)</strong></span></td><td style="">Horizontal or vertical box</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>break</strong></span></td><td style="">Breakable space</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>(</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span> [<span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span>]… <span class="bold"><strong>)</strong></span></td><td style="">Group</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span></td><td style="">Placeholder for a term with no explicit precedence</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>term</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span></td><td style="">Placeholder for a term with explicit expected precedence</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>number</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span></td><td style="">Placeholder for a natural number</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>ident</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span></td><td style="">Placeholder for an identifier</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.literal">literal</a></em></span></td><td style="">Literal</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>opt</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span></td><td style="">Optional layout (it can be omitted for parsing)</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>list0</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span>
+               [<span class="bold"><strong>sep</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.literal">literal</a></em></span>]</td><td style="">List of layouts separated by <span class="command"><strong>sep</strong></span> (default:
+               any blank)</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>list1</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span>
+               [<span class="bold"><strong>sep</strong></span> <span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.literal">literal</a></em></span>]</td><td style="">Non empty list of layouts separated by <span class="command"><strong>sep</strong></span>
+               (default: any blank)</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>mstyle</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> value (<span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span>)
+        </td><td style="">Style attributes like color #ff0000</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>mpadded</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> value (<span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span>)
+        </td><td style="">padding attributes like width -150%</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>maction</strong></span> (<span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span>)
+               [ (<span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.layout">layout</a></em></span>) … ]
+        </td><td style="">Alternative notations (output only)</td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp70356272"></a><p class="title"><strong>Table 5.10. literal</strong></p><div class="table-contents"><table summary="literal" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.literal"></a><span class="emphasis"><em><a class="link" href="sec_usernotation.html#grammar.literal">literal</a></em></span></td><td style="">::=</td><td style=""><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.symbol">symbol</a></em></span></td><td style="">Unicode symbol</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span></td><td style="">Natural number (a constant)</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>'</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span><span class="bold"><strong>'</strong></span></td><td style="">New keyword for the lexer</td></tr></tbody></table></div></div><br class="table-break" /></dd></dl></div><p>
+  </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tacticargs.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch05s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Tactic arguments </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> interpretation</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/sec_usernotation.xml b/helm/www/matita/docs/manual-0.5.9/sec_usernotation.xml
new file mode 100644 (file)
index 0000000..e141bd8
--- /dev/null
@@ -0,0 +1,583 @@
+
+<!-- ============ User Notation ====================== -->
+<chapter id="sec_usernotation">
+ <title>Extending the syntax</title>
+  Introduction: &TODO;
+ <sect1>
+  <title>notation</title>
+  <titleabbrev>notation</titleabbrev>
+   <para><userinput>notation usage &quot;presentation&quot; associativity with precedence p for content</userinput></para>
+  <para id="notation">
+    <variablelist>
+      <varlistentry role="tactic.synopsis">
+        <term>Synopsis:</term>
+        <listitem>
+          <para><emphasis role="bold">notation</emphasis>
+           [&usage;] <emphasis role="bold">&quot;</emphasis>&notation_lhs;<emphasis role="bold">&quot;</emphasis> [&associativity;] <emphasis role="bold">with</emphasis> <emphasis role="bold">precedence</emphasis> &nat;
+           <emphasis role="bold">for</emphasis>
+           &notation_rhs;
+          </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+       <term>Action:</term>
+       <listitem>
+         <para>Declares a mapping between the presentation
+          AST <command>presentation</command> and the content AST
+          <command>content</command>. The declared presentation AST fragment
+          <command>presentation</command> is at precedence level
+          <command>p</command>. The precedence level is used to determine where
+          parentheses must be inserted. In particular, the content AST fragment
+          <command>content</command> is actually a pattern, since it contains
+          placeholders (variables) for sub-ASTs. Every placeholder for a term
+          is given an expected precedence level. Parentheses must be inserted
+          around sub-ASTs having a precedence level strictly smaller than the
+          expected one.</para>
+          <para>If <command>presentation</command> describes a binary
+          infix operator and if no precedence level is explicitly given for the
+          operator arguments, an <command>associativity</command> declaration
+          can be given to automatically choose the right level for the operands.
+          Otherwise, no <command>associativity</command> can be given.</para>
+         <para>If <command>direction</command> is
+          omitted, the mapping is bi-directional and is used both during
+          parsing and pretty-printing of terms. If <command>direction</command>
+          is <command>&gt;</command>, the mapping is used only during parsing;
+          if it is <command>&lt;</command>, it is used only during
+          pretty-printing. Thus it is possible to use simple notations to type
+          for writing the term, and nicer ones for rendering it.</para>
+       </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>Notation arguments:</term>
+        <listitem>
+
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>usage</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+        <entry id="grammar.usage">&usage;</entry>
+        <entry>::=</entry>
+        <entry><emphasis role="bold">&lt;</emphasis></entry>
+        <entry>Only for pretty-printing</entry>
+       </row>
+       <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><emphasis role="bold">&gt;</emphasis></entry>
+        <entry>Only for parsing</entry>
+       </row>
+      </tbody>
+      </tgroup>
+     </table>
+
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>associativity</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+        <entry id="grammar.associativity">&associativity;</entry>
+        <entry>::=</entry>
+        <entry><emphasis role="bold">left</emphasis> <emphasis role="bold">associative</emphasis></entry>
+        <entry>Left associative</entry>
+       </row>
+       <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><emphasis role="bold">right</emphasis> <emphasis role="bold">associative</emphasis></entry>
+        <entry>Right associative</entry>
+       </row>
+       <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><emphasis role="bold">non</emphasis> <emphasis role="bold">associative</emphasis></entry>
+        <entry>Non associative (default)</entry>
+       </row>
+      </tbody>
+      </tgroup>
+     </table>
+
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>notation_rhs</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+        <entry id="grammar.notation_rhs">&notation_rhs;</entry>
+        <entry>::=</entry>
+        <entry>&unparsed_ast;</entry>
+        <entry>&TODO;</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry>&unparsed_meta;</entry>
+        <entry>&TODO;</entry>
+       </row>
+      </tbody>
+      </tgroup>
+     </table>
+
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>unparsed_ast</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+        <entry id="grammar.unparsed_ast">&unparsed_ast;</entry>
+        <entry>::=</entry>
+        <entry><emphasis role="bold">@{</emphasis>&enriched_term;<emphasis role="bold">}</emphasis></entry>
+        <entry>A content level AST (a term which is parsed, but not disambiguated).</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">@</emphasis>&id;</entry>
+        <entry><command>@id</command> is just an abbreviation for <command>@{id}</command></entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">@</emphasis>&csymbol;</entry>
+        <entry><command>@'symbol</command> is just an abbreviation for <command>@{'symbol}</command></entry>
+       </row>
+      </tbody>
+      </tgroup>
+     </table>
+
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>enriched_term</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+        <entry id="grammar.enriched_term">&enriched_term;</entry>
+        <entry>::=</entry>
+        <entry>〈〈A term that may contain occurrences of &unparsed_meta;, even as variable names in binders, and occurrences of &csymbol;〉〉</entry>
+        <entry>&TODO;</entry>
+       </row>
+      </tbody>
+      </tgroup>
+     </table>
+
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>unparsed_meta</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+        <entry id="grammar.unparsed_meta">&unparsed_meta;</entry>
+        <entry>::=</entry>
+        <entry><emphasis role="bold">${</emphasis>&level2_meta;<emphasis role="bold">}</emphasis></entry>
+        <entry>&TODO;</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">$</emphasis>&id;</entry>
+        <entry><command>$id</command> is just an abbreviation for <command>${id}</command></entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">$</emphasis><emphasis role="bold">_</emphasis></entry>
+        <entry><command>$_</command> is just an abbreviation for <command>${_}</command></entry>
+       </row>
+      </tbody>
+      </tgroup>
+     </table>
+
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>level2_meta</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+        <entry id="grammar.level2_meta">&level2_meta;</entry>
+        <entry>::=</entry>
+        <entry>&unparsed_ast;</entry>
+        <entry>&TODO;</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">term</emphasis> &nat; &id;</entry>
+        <entry>&TODO;</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">number</emphasis> &id;</entry>
+        <entry>&TODO;</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">ident</emphasis> &id;</entry>
+        <entry>&TODO;</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">fresh</emphasis> &id;</entry>
+        <entry>&TODO;</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">anonymous</emphasis></entry>
+        <entry>&TODO;</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry>&id;</entry>
+        <entry>&TODO;</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">fold</emphasis> [<emphasis role="bold">left</emphasis>|<emphasis role="bold">right</emphasis>] &level2_meta; <emphasis role="bold">rec</emphasis> &id; &level2_meta;</entry>
+        <entry>&TODO;</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">default</emphasis> &level2_meta; &level2_meta;</entry>
+        <entry>&TODO;</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">if</emphasis> &level2_meta; <emphasis role="bold">then</emphasis> &level2_meta; <emphasis role="bold">else</emphasis> &level2_meta;</entry>
+        <entry>&TODO;</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">fail</emphasis></entry>
+        <entry>&TODO;</entry>
+       </row>
+      </tbody>
+      </tgroup>
+     </table>
+
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>notation_lhs</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+        <entry id="grammar.notation_lhs">&notation_lhs;</entry>
+        <entry>::=</entry>
+        <entry>&layout; [&layout;]…</entry>
+       </row>
+      </tbody>
+      </tgroup>
+    </table>
+
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>layout</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+        <entry id="grammar.layout">&layout;</entry>
+        <entry>::=</entry>
+        <entry>&layout; <emphasis role="bold">\sub</emphasis> &layout;</entry>
+        <entry>Subscript</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry>&layout; <emphasis role="bold">\sup</emphasis> &layout;</entry>
+        <entry>Superscript</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry>&layout; <emphasis role="bold">\below</emphasis> &layout;</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry>&layout; <emphasis role="bold">\above</emphasis> &layout;</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry>&layout; <emphasis role="bold">\over</emphasis> &layout;</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry>&layout; <emphasis role="bold">\atop</emphasis> &layout;</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry>&layout; <emphasis role="bold">\frac</emphasis> &layout;</entry>
+        <entry>Fraction</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">\infrule</emphasis> &layout; &layout; &layout;</entry>
+        <entry>Inference rule (premises, conclusion, rule name)</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">\sqrt</emphasis> &layout;</entry>
+        <entry>Square root</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">\root</emphasis> &layout; <emphasis role="bold">\of</emphasis> &layout;</entry>
+        <entry>Generalized root</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">hbox</emphasis> <emphasis role="bold">(</emphasis> &layout; [&layout;]… <emphasis role="bold">)</emphasis></entry>
+        <entry>Horizontal box</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">vbox</emphasis> <emphasis role="bold">(</emphasis> &layout; [&layout;]… <emphasis role="bold">)</emphasis></entry>
+        <entry>Vertical box</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">hvbox</emphasis> <emphasis role="bold">(</emphasis> &layout; [&layout;]… <emphasis role="bold">)</emphasis></entry>
+        <entry>Horizontal and vertical box</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">hovbox</emphasis> <emphasis role="bold">(</emphasis> &layout; [&layout;]… <emphasis role="bold">)</emphasis></entry>
+        <entry>Horizontal or vertical box</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">break</emphasis></entry>
+        <entry>Breakable space</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">(</emphasis> &layout; [&layout;]… <emphasis role="bold">)</emphasis></entry>
+        <entry>Group</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry>&id;</entry>
+        <entry>Placeholder for a term with no explicit precedence</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">term</emphasis> &nat; &id;</entry>
+        <entry>Placeholder for a term with explicit expected precedence</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">number</emphasis> &id;</entry>
+        <entry>Placeholder for a natural number</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">ident</emphasis> &id;</entry>
+        <entry>Placeholder for an identifier</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry>&literal;</entry>
+        <entry>Literal</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">opt</emphasis> &layout;</entry>
+        <entry>Optional layout (it can be omitted for parsing)</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">list0</emphasis> &layout;
+               [<emphasis role="bold">sep</emphasis> &literal;]</entry>
+        <entry>List of layouts separated by <command>sep</command> (default:
+               any blank)</entry>
+       </row>
+
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">list1</emphasis> &layout;
+               [<emphasis role="bold">sep</emphasis> &literal;]</entry>
+        <entry>Non empty list of layouts separated by <command>sep</command>
+               (default: any blank)</entry>
+       </row>
+
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">mstyle</emphasis> &id; value (&layout;)
+        </entry>
+        <entry>Style attributes like color #ff0000</entry>
+       </row>
+
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">mpadded</emphasis> &id; value (&layout;)
+        </entry>
+        <entry>padding attributes like width -150%</entry>
+       </row>
+
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+       <entry><emphasis role="bold">maction</emphasis> (&layout;)
+               [ (&layout;) … ]
+        </entry>
+        <entry>Alternative notations (output only)</entry>
+       </row>
+
+
+      </tbody>
+      </tgroup>
+    </table>
+
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>literal</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+        <entry id="grammar.literal">&literal;</entry>
+        <entry>::=</entry>
+        <entry>&symbol;</entry>
+        <entry>Unicode symbol</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry>&nat;</entry>
+        <entry>Natural number (a constant)</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">&apos;</emphasis>&id;<emphasis role="bold">&apos;</emphasis></entry>
+        <entry>New keyword for the lexer</entry>
+       </row>
+      </tbody>
+      </tgroup>
+    </table>
+
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </para>
+ </sect1>
+ <sect1>
+   <title>interpretation</title>
+   <titleabbrev>interpretation</titleabbrev>
+   <para><userinput>interpretation &quot;description&quot; 'symbol p<subscript>1</subscript> … p<subscript>n</subscript> =
+         rhs</userinput></para>
+   <para id="interpretation">
+    <variablelist>
+      <varlistentry role="tactic.synopsis">
+        <term>Synopsis:</term>
+        <listitem>
+          <para><emphasis role="bold">interpretation</emphasis>
+           &qstring; &csymbol; [&interpretation_argument;]…
+           <emphasis role="bold">=</emphasis>
+           &interpretation_rhs;
+          </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+       <term>Action:</term>
+       <listitem>
+         <para>It declares a bi-directional mapping <command>{…}</command> between the content-level AST <command>'symbol t<subscript>1</subscript> … t<subscript>n</subscript></command> and the semantic term <command>rhs[{t<subscript>1</subscript>}/p<subscript>1</subscript>;…;{t<subscript>n</subscript>}/p<subscript>n</subscript>]</command>
+          (the simultaneous substitution in <command>rhs</command> of the
+          interpretation <command>{…}</command> of every content-level
+          actual argument <command>t<subscript>i</subscript></command> for its
+          corresponding formal parameter
+          <command>p<subscript>i</subscript></command>). The
+          <command>description</command> must be a textual description of the
+          meaning associated to <command>'symbol</command> by this
+          interpretation, and is used by the user interface of Matita to
+          provide feedback on the interpretation of ambiguous terms.
+         </para>
+       </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>Interpretation arguments:</term>
+        <listitem>
+
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>interpretation_argument</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+        <entry id="grammar.interpretation_argument">&interpretation_argument;</entry>
+        <entry>::=</entry>
+        <entry>[<emphasis role="bold">η</emphasis><emphasis role="bold">.</emphasis>]… &id;</entry>
+        <entry>A formal parameter. If the name of the formal parameter is
+         prefixed by n symbols &quot;η&quot;, then the mapping performs
+         (multiple) η-expansions to grant that the semantic actual
+         parameter begins with at least n λ-abstractions.</entry>
+       </row>
+      </tbody>
+      </tgroup>
+     </table>
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>interpretation_rhs</title>
+      <tgroup cols="4">
+      <tbody>
+       <row>
+        <entry id="grammar.interpretation_rhs">&interpretation_rhs;</entry>
+        <entry>::=</entry>
+        <entry>&uri;</entry>
+        <entry>A constant, specified by its URI</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry>&id;</entry>
+        <entry>A constant, specified by its name, or a bound variable. If
+               the constant name is ambiguous, the one corresponding to the
+               last implicitly or explicitly specified alias is used.</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">?</emphasis></entry>
+        <entry>An implicit parameter</entry>
+       </row>
+       <row>
+        <entry></entry>
+        <entry>|</entry>
+        <entry><emphasis role="bold">(</emphasis>
+               &interpretation_rhs;
+               [&interpretation_rhs;]…
+               <emphasis role="bold">)</emphasis></entry>
+        <entry>An application</entry>
+       </row>
+      </tbody>
+      </tgroup>
+     </table>
+
+        </listitem>
+      </varlistentry>
+    </variablelist>
+   </para>
+ </sect1>
+</chapter>
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_absurd.html b/helm/www/matita/docs/manual-0.5.9/tac_absurd.html
new file mode 100644 (file)
index 0000000..c124364
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>absurd</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="next" href="tac_apply.html" title="apply" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">absurd</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="sec_tactics.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_apply.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_absurd"></a>absurd</h2></div></div></div><p><strong class="userinput"><code>absurd P</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>absurd</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p><span class="command"><strong>P</strong></span> must have type <span class="command"><strong>Prop</strong></span>.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It closes the current sequent by eliminating an
+             absurd term.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>It opens two new sequents of conclusion <span class="command"><strong>P</strong></span>
+             and <span class="command"><strong>¬P</strong></span>.</p></dd></dl></div><p>
+     </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="sec_tactics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_apply.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 7. Tactics </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> apply</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_andelim.html b/helm/www/matita/docs/manual-0.5.9/tac_andelim.html
new file mode 100644 (file)
index 0000000..3e62abe
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>we have</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_declarative_tactics.html" title="Chapter 8. Declarative Tactics" /><link rel="prev" href="tac_weneedtoprove.html" title="we need to prove" /><link rel="next" href="tac_weproceedbycases.html" title="we proceed by cases on" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">we have</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_weneedtoprove.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Declarative Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_weproceedbycases.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_andelim"></a>we have</h2></div></div></div><p><strong class="userinput"><code>justification we have t1 (id1) and t2 (id2)</code></strong>
+    </p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.justification">justification</a></em></span> <span class="bold"><strong>we have</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> 
+                   <span class="bold"><strong>( </strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> <span class="bold"><strong> ) and </strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> 
+                     <span class="bold"><strong> ( </strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> <span class="bold"><strong>)</strong></span></p></dd><dt><span class="term">Pre-condition:</span></dt><dd><p></p></dd><dt><span class="term">Action:</span></dt><dd><p>It derives <span class="command"><strong>t1∧t2</strong></span> using the 
+        <span class="command"><strong>justification</strong></span> then it introduces in the context
+        <span class="command"><strong>t1</strong></span>   labelled with <span class="command"><strong>id1</strong></span> and
+        <span class="command"><strong>t2</strong></span>   labelled with <span class="command"><strong>id2</strong></span>.
+      </p></dd><dt><span class="term">New sequent to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_weneedtoprove.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_declarative_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_weproceedbycases.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">we need to prove </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> we proceed by cases on</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_apply.html b/helm/www/matita/docs/manual-0.5.9/tac_apply.html
new file mode 100644 (file)
index 0000000..917b508
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>apply</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_absurd.html" title="absurd" /><link rel="next" href="tac_applyS.html" title="applyS" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">apply</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_absurd.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_applyS.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_apply"></a>apply</h2></div></div></div><p><strong class="userinput"><code>apply t</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>apply</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p><span class="command"><strong>t</strong></span> must have type
+             <span class="command"><strong>T<sub>1</sub> → … →
+              T<sub>n</sub> → G</strong></span>
+             where <span class="command"><strong>G</strong></span> can be unified with the conclusion
+             of the current sequent.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It closes the current sequent by applying <span class="command"><strong>t</strong></span> to <span class="command"><strong>n</strong></span> implicit arguments (that become new sequents).</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>It opens a new sequent for each premise 
+             <span class="command"><strong>T<sub>i</sub></strong></span> that is not
+             instantiated by unification. <span class="command"><strong>T<sub>i</sub></strong></span> is
+             the conclusion of the <span class="command"><strong>i</strong></span>-th new sequent to
+             prove.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_absurd.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_applyS.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">absurd </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> applyS</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_applyS.html b/helm/www/matita/docs/manual-0.5.9/tac_applyS.html
new file mode 100644 (file)
index 0000000..afc7092
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>applyS</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_apply.html" title="apply" /><link rel="next" href="tac_assumption.html" title="assumption" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">applyS</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_apply.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_assumption.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_applyS"></a>applyS</h2></div></div></div><p><strong class="userinput"><code>applyS t auto_params</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>applyS</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.autoparams">auto_params</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p><span class="command"><strong>t</strong></span> must have type
+             <span class="command"><strong>T<sub>1</sub> → ... →
+              T<sub>n</sub> → G</strong></span>.</p></dd><dt><span class="term">Action:</span></dt><dd><p><span class="command"><strong>applyS</strong></span> is useful when
+             <span class="command"><strong>apply</strong></span> fails because the current goal
+             and the conclusion of the applied theorems are extensionally
+             equivalent up to instantiation of metavariables, but cannot
+             be unified. E.g. the goal is <span class="command"><strong>P(n*O+m)</strong></span> and
+             the theorem to be applied proves <span class="command"><strong>∀m.P(m+O)</strong></span>.
+            </p><p>
+             It tries to automatically rewrite the current goal using
+             <a class="link" href="tac_auto.html" title="auto">auto paramodulation</a>
+             to make it unifiable with <span class="command"><strong>G</strong></span>.
+             Then it closes the current sequent by applying
+             <span class="command"><strong>t</strong></span> to <span class="command"><strong>n</strong></span>
+             implicit arguments (that become new sequents).
+             The <span class="command"><strong>auto_params</strong></span> parameters are passed
+             directly to <span class="command"><strong>auto paramodulation</strong></span>.
+            </p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>It opens a new sequent for each premise 
+             <span class="command"><strong>T<sub>i</sub></strong></span> that is not
+             instantiated by unification. <span class="command"><strong>T<sub>i</sub></strong></span> is
+             the conclusion of the <span class="command"><strong>i</strong></span>-th new sequent to
+             prove.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_apply.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_assumption.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">apply </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> assumption</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_assume.html b/helm/www/matita/docs/manual-0.5.9/tac_assume.html
new file mode 100644 (file)
index 0000000..e527c90
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>assume</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_declarative_tactics.html" title="Chapter 8. Declarative Tactics" /><link rel="prev" href="sec_declarative_tactics.html" title="Chapter 8. Declarative Tactics" /><link rel="next" href="tac_byinduction.html" title="by induction hypothesis we know" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">assume</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="sec_declarative_tactics.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Declarative Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_byinduction.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_assume"></a>assume</h2></div></div></div><p><strong class="userinput"><code>assume x : t</code></strong></p><p>
+    </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>assume</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> <span class="bold"><strong> : </strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>The conclusion of the current proof must be
+          <span class="command"><strong>∀x:T.P</strong></span> or
+          <span class="command"><strong>T→P</strong></span> where <span class="command"><strong>T</strong></span> is
+          a data type (i.e. <span class="command"><strong>T</strong></span> has type
+          <span class="command"><strong>Set</strong></span> or <span class="command"><strong>Type</strong></span>).</p></dd><dt><span class="term">Action:</span></dt><dd><p>It adds to the context of the current sequent to prove a new
+          declaration <span class="command"><strong>x : T </strong></span>. The new conclusion becomes
+          <span class="command"><strong>P</strong></span>.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+   </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="sec_declarative_tactics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_declarative_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_byinduction.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 8. Declarative Tactics </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> by induction hypothesis we know</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_assumption.html b/helm/www/matita/docs/manual-0.5.9/tac_assumption.html
new file mode 100644 (file)
index 0000000..ca3a802
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>assumption</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_applyS.html" title="applyS" /><link rel="next" href="tac_auto.html" title="auto" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">assumption</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_applyS.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_auto.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_assumption"></a>assumption</h2></div></div></div><p><strong class="userinput"><code>assumption </code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>assumption</strong></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>There must exist an hypothesis whose type can be unified with
+             the conclusion of the current sequent.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It closes the current sequent exploiting an hypothesis.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_applyS.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_auto.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">applyS </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> auto</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_auto.html b/helm/www/matita/docs/manual-0.5.9/tac_auto.html
new file mode 100644 (file)
index 0000000..086e566
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>auto</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_assumption.html" title="assumption" /><link rel="next" href="tac_cases.html" title="cases" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">auto</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_assumption.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_cases.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_auto"></a>auto</h2></div></div></div><p><strong class="userinput"><code>auto params</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>auto</strong></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.autoparams">auto_params</a></em></span>. </p><p><span class="bold"><strong>autobatch</strong></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.autoparams">auto_params</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>None, but the tactic may fail finding a proof if every
+             proof is in the search space that is pruned away. Pruning is
+             controlled by the optional <span class="command"><strong>params</strong></span>.
+             Moreover, only lemmas whose type signature is a subset of the
+             signature of the current sequent are considered. The signature of
+             a sequent is essentially the set of constats appearing in it.
+           </p></dd><dt><span class="term">Action:</span></dt><dd><p>It closes the current sequent by repeated application of
+             rewriting steps (unless <span class="command"><strong>paramodulation</strong></span> is
+             omitted), hypothesis and lemmas in the library.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_assumption.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_cases.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">assumption </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> cases</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_bydone.html b/helm/www/matita/docs/manual-0.5.9/tac_bydone.html
new file mode 100644 (file)
index 0000000..a960357
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>done</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_declarative_tactics.html" title="Chapter 8. Declarative Tactics" /><link rel="prev" href="tac_case.html" title="case" /><link rel="next" href="tac_exitselim.html" title="let such that" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">done</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_case.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Declarative Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_exitselim.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_bydone"></a>done</h2></div></div></div><p><strong class="userinput"><code>justification done</code></strong></p><p>
+     </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.justification">justification</a></em></span> <span class="bold"><strong>done</strong></span></p></dd><dt><span class="term">Pre-condition:</span></dt><dd><p></p></dd><dt><span class="term">Action:</span></dt><dd><p>It closes the current sequent given the justification.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+     </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_case.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_declarative_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_exitselim.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">case </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> let such that</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_byinduction.html b/helm/www/matita/docs/manual-0.5.9/tac_byinduction.html
new file mode 100644 (file)
index 0000000..ce5c1a0
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>by induction hypothesis we know</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_declarative_tactics.html" title="Chapter 8. Declarative Tactics" /><link rel="prev" href="tac_assume.html" title="assume" /><link rel="next" href="tac_case.html" title="case" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">by induction hypothesis we know</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_assume.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Declarative Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_case.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_byinduction"></a>by induction hypothesis we know</h2></div></div></div><p><strong class="userinput"><code>by induction hypothesis we know t (id)</code></strong></p><p>
+        </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>by induction hypothesis we know</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="bold"><strong> (</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> <span class="bold"><strong>)</strong></span></p></dd><dt><span class="term">Pre-condition:</span></dt><dd><p>To be used in a proof by induction to state the inductive
+          hypothesis.</p></dd><dt><span class="term">Action:</span></dt><dd><p> Introduces the inductive hypothesis. </p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+      </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_assume.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_declarative_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_case.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">assume </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> case</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_bytermweproved.html b/helm/www/matita/docs/manual-0.5.9/tac_bytermweproved.html
new file mode 100644 (file)
index 0000000..34de2e2
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>we proved</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_declarative_tactics.html" title="Chapter 8. Declarative Tactics" /><link rel="prev" href="tac_weproceedbyinduction.html" title="we proceed by induction on" /><link rel="next" href="sec_commands.html" title="Chapter 9. Other commands" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">we proved</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_weproceedbyinduction.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Declarative Tactics</th><td width="20%" align="right"> <a accesskey="n" href="sec_commands.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_bytermweproved"></a>we proved</h2></div></div></div><p><strong class="userinput"><code>justification we proved t (id)</code></strong></p><p>
+       </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.justification">justification</a></em></span> <span class="bold"><strong>we proved</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> 
+         <span class="bold"><strong>(</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> 
+         <span class="bold"><strong>)</strong></span></p></dd><dt><span class="term">Pre-condition:</span></dt><dd><p><span class="command"><strong>t</strong></span>must have type <span class="command"><strong>Prop</strong></span>.
+         </p></dd><dt><span class="term">Action:</span></dt><dd><p>It derives <span class="command"><strong>t</strong></span>
+           using the justification and labels the conclusion with
+           <span class="command"><strong>id</strong></span>.
+         </p></dd><dt><span class="term">New sequent to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+       </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_weproceedbyinduction.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_declarative_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="sec_commands.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">we proceed by induction on </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 9. Other commands</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_case.html b/helm/www/matita/docs/manual-0.5.9/tac_case.html
new file mode 100644 (file)
index 0000000..1571578
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>case</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_declarative_tactics.html" title="Chapter 8. Declarative Tactics" /><link rel="prev" href="tac_byinduction.html" title="by induction hypothesis we know" /><link rel="next" href="tac_bydone.html" title="done" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">case</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_byinduction.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Declarative Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_bydone.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_case"></a>case</h2></div></div></div><p><strong class="userinput"><code>case id (id1:t1) … (idn:tn)</code></strong></p><p>
+       </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>case</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> [<span class="bold"><strong>(</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> <span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>  <span class="bold"><strong>)</strong></span>] … </p></dd><dt><span class="term">Pre-condition:</span></dt><dd><p>To be used in a proof by induction or by cases to start
+          a new case</p></dd><dt><span class="term">Action:</span></dt><dd><p>Starts the new case <span class="command"><strong>id</strong></span> declaring
+                the local parameters <span class="command"><strong>(id1:t1) … (idn:tn)</strong></span></p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None</p></dd></dl></div><p>
+     </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_byinduction.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_declarative_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_bydone.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">by induction hypothesis we know </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> done</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_cases.html b/helm/www/matita/docs/manual-0.5.9/tac_cases.html
new file mode 100644 (file)
index 0000000..ff40497
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>cases</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_auto.html" title="auto" /><link rel="next" href="tac_clear.html" title="clear" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">cases</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_auto.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_clear.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_cases"></a>cases</h2></div></div></div><p><strong class="userinput"><code>
+     cases t pattern hyps
+    </code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p>
+            <span class="bold"><strong>cases</strong></span>
+            <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span> [<span class="bold"><strong>(</strong></span>[<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]…<span class="bold"><strong>)</strong></span>]
+           </p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>
+            <span class="command"><strong>t</strong></span> must inhabit an inductive type
+           </p></dd><dt><span class="term">Action:</span></dt><dd><p>
+            It proceed by cases on <span class="command"><strong>t</strong></span>. The new generated
+             hypothesis in each branch are named according to
+             <span class="command"><strong>hyps</strong></span>.
+             The elimintation predicate is restricted by
+             <span class="command"><strong>pattern</strong></span>. In particular, if some hypothesis
+             is listed in <span class="command"><strong>pattern</strong></span>, the hypothesis is
+             generalized and cleared before proceeding by cases on
+             <span class="command"><strong>t</strong></span>. Currently, we only support patterns of the
+             form <span class="command"><strong>H<sub>1</sub> … H<sub>n</sub> ⊢ %</strong></span>. This limitation will be lifted in the future.
+           </p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>One new sequent for each constructor of the type of
+             <span class="command"><strong>t</strong></span>. Each sequent has a new hypothesis for
+             each argument of the constructor.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_auto.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_clear.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">auto </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> clear</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_change.html b/helm/www/matita/docs/manual-0.5.9/tac_change.html
new file mode 100644 (file)
index 0000000..9a6ff07
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>change</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_compose.html" title="compose" /><link rel="next" href="tac_constructor.html" title="constructor" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">change</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_compose.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_constructor.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_change"></a>change</h2></div></div></div><p><strong class="userinput"><code>change patt with t</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>change</strong></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span> <span class="bold"><strong>with</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>Each subterm matched by the pattern must be convertible
+             with the term <span class="command"><strong>t</strong></span> disambiguated in the context
+             of the matched subterm.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It replaces the subterms of the current sequent matched by
+             <span class="command"><strong>patt</strong></span> with the new term <span class="command"><strong>t</strong></span>.
+             For each subterm matched by the pattern, <span class="command"><strong>t</strong></span> is
+             disambiguated in the context of the subterm.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_compose.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_constructor.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">compose </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> constructor</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_clear.html b/helm/www/matita/docs/manual-0.5.9/tac_clear.html
new file mode 100644 (file)
index 0000000..8be431a
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>clear</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_cases.html" title="cases" /><link rel="next" href="tac_clearbody.html" title="clearbody" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">clear</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_cases.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_clearbody.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_clear"></a>clear</h2></div></div></div><p><strong class="userinput"><code>
+     clear H<sub>1</sub> ... H<sub>m</sub>
+    </code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p>
+            <span class="bold"><strong>clear</strong></span>
+            <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>…]
+           </p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>
+            <span class="command"><strong>
+             H<sub>1</sub> ... H<sub>m</sub>
+            </strong></span> must be hypotheses of the
+             current sequent to prove.
+           </p></dd><dt><span class="term">Action:</span></dt><dd><p>
+            It hides the hypotheses 
+             <span class="command"><strong>
+             H<sub>1</sub> ... H<sub>m</sub>
+             </strong></span> from the current sequent.
+           </p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_cases.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_clearbody.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">cases </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> clearbody</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_clearbody.html b/helm/www/matita/docs/manual-0.5.9/tac_clearbody.html
new file mode 100644 (file)
index 0000000..d87c343
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>clearbody</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_clear.html" title="clear" /><link rel="next" href="tac_compose.html" title="compose" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">clearbody</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_clear.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_compose.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_clearbody"></a>clearbody</h2></div></div></div><p><strong class="userinput"><code>clearbody H</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>clearbody</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p><span class="command"><strong>H</strong></span> must be an hypothesis of the
+             current sequent to prove.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It hides the definiens of a definition in the current
+             sequent context. Thus the definition becomes an hypothesis.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_clear.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_compose.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">clear </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> compose</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_compose.html b/helm/www/matita/docs/manual-0.5.9/tac_compose.html
new file mode 100644 (file)
index 0000000..8e4badc
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>compose</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_clearbody.html" title="clearbody" /><link rel="next" href="tac_change.html" title="change" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">compose</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_clearbody.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_change.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_compose"></a>compose</h2></div></div></div><p><strong class="userinput"><code>compose n t1 with t2 hyps</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>compose</strong></span> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span>] <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span> [<span class="bold"><strong>with</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span>] [<span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.intros-spec">intros-spec</a></em></span>]</p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p></p></dd><dt><span class="term">Action:</span></dt><dd><p>Composes t1 with t2 in every possible way
+              <span class="command"><strong>n</strong></span> times introducing generated terms
+              as if <span class="command"><strong>intros hyps</strong></span> was issued.</p><p>If <span class="command"><strong>t1:∀x:A.B[x]</strong></span> and
+            <span class="command"><strong>t2:∀x,y:A.B[x]→B[y]→C[x,y]</strong></span> it generates:
+             </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><span class="command"><strong>λx,y:A.t2 x y (t1 x) : ∀x,y:A.B[y]→C[x,y]</strong></span></p></li><li class="listitem"><p><span class="command"><strong>λx,y:A.λH:B[x].t2 x y H (t1 y) : ∀x,y:A.B[x]→C[x,y]
+                  </strong></span></p></li></ul></div><p>
+          </p><p>If <span class="command"><strong>t2</strong></span> is omitted it composes 
+            <span class="command"><strong>t1</strong></span>
+              with every hypothesis that can be introduced.  
+              <span class="command"><strong>n</strong></span> iterates the process.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>The same, but with more hypothesis eventually introduced
+            by the <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.intros-spec">intros-spec</a></em></span>.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_clearbody.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_change.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">clearbody </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> change</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_constructor.html b/helm/www/matita/docs/manual-0.5.9/tac_constructor.html
new file mode 100644 (file)
index 0000000..67eabff
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>constructor</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_change.html" title="change" /><link rel="next" href="tac_contradiction.html" title="contradiction" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">constructor</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_change.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_contradiction.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_constructor"></a>constructor</h2></div></div></div><p><strong class="userinput"><code>constructor n</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>constructor</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>The conclusion of the current sequent must be
+             an inductive type or the application of an inductive type with
+             at least <span class="command"><strong>n</strong></span> constructors.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It applies the <span class="command"><strong>n</strong></span>-th constructor of the
+             inductive type of the conclusion of the current sequent.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>It opens a new sequent for each premise of the constructor
+             that can not be inferred by unification. For more details,
+             see the <span class="command"><strong>apply</strong></span> tactic.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_change.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_contradiction.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">change </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> contradiction</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_contradiction.html b/helm/www/matita/docs/manual-0.5.9/tac_contradiction.html
new file mode 100644 (file)
index 0000000..aace778
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>contradiction</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_constructor.html" title="constructor" /><link rel="next" href="tac_cut.html" title="cut" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">contradiction</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_constructor.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_cut.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_contradiction"></a>contradiction</h2></div></div></div><p><strong class="userinput"><code>contradiction </code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>contradiction</strong></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>There must be in the current context an hypothesis of type
+             <span class="command"><strong>False</strong></span>.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It closes the current sequent by applying an hypothesis of
+             type <span class="command"><strong>False</strong></span>.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_constructor.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_cut.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">constructor </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> cut</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_cut.html b/helm/www/matita/docs/manual-0.5.9/tac_cut.html
new file mode 100644 (file)
index 0000000..507334e
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>cut</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_contradiction.html" title="contradiction" /><link rel="next" href="tac_decompose.html" title="decompose" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">cut</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_contradiction.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_decompose.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_cut"></a>cut</h2></div></div></div><p><strong class="userinput"><code>cut P as H</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>cut</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span> [<span class="bold"><strong>as</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]</p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p><span class="command"><strong>P</strong></span> must have type <span class="command"><strong>Prop</strong></span>.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It closes the current sequent.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>It opens two new sequents. The first one has an extra
+             hypothesis <span class="command"><strong>H:P</strong></span>. If <span class="command"><strong>H</strong></span> is
+             omitted, the name of the hypothesis is automatically generated.
+             The second sequent has conclusion <span class="command"><strong>P</strong></span> and
+             hypotheses the hypotheses of the current sequent to prove.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_contradiction.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_decompose.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">contradiction </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> decompose</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_decompose.html b/helm/www/matita/docs/manual-0.5.9/tac_decompose.html
new file mode 100644 (file)
index 0000000..ab76c8b
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>decompose</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_cut.html" title="cut" /><link rel="next" href="tac_demodulate.html" title="demodulate" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">decompose</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_cut.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_demodulate.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_decompose"></a>decompose</h2></div></div></div><p><strong class="userinput"><code>
+     decompose as H<sub>1</sub> ... H<sub>m</sub>
+    </code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p>
+            <span class="bold"><strong>decompose</strong></span>
+            [<span class="bold"><strong>as</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>…]
+           </p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>None.</p></dd><dt><span class="term">Action:</span></dt><dd><p>
+            For each each premise <span class="command"><strong>H</strong></span> of type 
+            <span class="command"><strong>T</strong></span> in the current context where
+            <span class="command"><strong>T</strong></span> is a non-recursive inductive type without
+            right parameters and of sort Prop or CProp, the tactic runs
+            <span class="command"><strong> 
+             elim H as H<sub>1</sub> ... H<sub>m</sub>
+            </strong></span>, clears <span class="command"><strong>H</strong></span>  and runs itself
+            recursively on each new premise introduced by 
+            <span class="command"><strong>elim</strong></span> in the opened sequents. 
+           </p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>
+            The ones generated by all the <span class="command"><strong>elim</strong></span> tactics run.
+           </p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_cut.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_demodulate.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">cut </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> demodulate</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_demodulate.html b/helm/www/matita/docs/manual-0.5.9/tac_demodulate.html
new file mode 100644 (file)
index 0000000..c6f9f45
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>demodulate</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_decompose.html" title="decompose" /><link rel="next" href="tac_destruct.html" title="destruct" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">demodulate</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_decompose.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_destruct.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_demodulate"></a>demodulate</h2></div></div></div><p><strong class="userinput"><code>demodulate auto_params</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>demodulate</strong></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.autoparams">auto_params</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>None.</p></dd><dt><span class="term">Action:</span></dt><dd><p><span class="emphasis"><em>TODO</em></span></p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_decompose.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_destruct.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">decompose </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> destruct</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_destruct.html b/helm/www/matita/docs/manual-0.5.9/tac_destruct.html
new file mode 100644 (file)
index 0000000..6eb4706
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>destruct</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_demodulate.html" title="demodulate" /><link rel="next" href="tac_elim.html" title="elim" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">destruct</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_demodulate.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_elim.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_destruct"></a>destruct</h2></div></div></div><p><strong class="userinput"><code>destruct p</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>destruct</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p><span class="command"><strong>p</strong></span> must have type <span class="command"><strong>E<sub>1</sub> = E<sub>2</sub></strong></span> where the two sides of the equality are possibly applied constructors of an inductive type.</p></dd><dt><span class="term">Action:</span></dt><dd><p>The tactic recursively compare the two sides of the equality
+             looking for different constructors in corresponding position.
+             If two of them are found, the tactic closes the current sequent
+             by proving the absurdity of <span class="command"><strong>p</strong></span>. Otherwise
+             it adds a new hypothesis for each leaf of the formula that
+             states the equality of the subformulae in the corresponding
+             positions on the two sides of the equality.
+            </p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_demodulate.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_elim.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">demodulate </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> elim</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_elim.html b/helm/www/matita/docs/manual-0.5.9/tac_elim.html
new file mode 100644 (file)
index 0000000..46f642f
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>elim</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_destruct.html" title="destruct" /><link rel="next" href="tac_elimType.html" title="elimType" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">elim</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_destruct.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_elimType.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_elim"></a>elim</h2></div></div></div><p><strong class="userinput"><code>elim t pattern using th hyps</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>elim</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span> [<span class="bold"><strong>using</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span>] <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.intros-spec">intros-spec</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p><span class="command"><strong>t</strong></span> must inhabit an inductive type and
+             <span class="command"><strong>th</strong></span> must be an elimination principle for that
+             inductive type. If <span class="command"><strong>th</strong></span> is omitted the appropriate
+             standard elimination principle is chosen.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It proceeds by cases on the values of <span class="command"><strong>t</strong></span>,
+             according to the elimination principle <span class="command"><strong>th</strong></span>.
+             The induction predicate is restricted by
+             <span class="command"><strong>pattern</strong></span>. In particular, if some hypothesis
+             is listed in <span class="command"><strong>pattern</strong></span>, the hypothesis is
+             generalized and cleared before eliminating <span class="command"><strong>t</strong></span>
+            </p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>It opens one new sequent for each case. The names of
+             the new hypotheses are picked by <span class="command"><strong>hyps</strong></span>, if
+             provided. If hyps specifies also a number of hypotheses that
+             is less than the number of new hypotheses for a new sequent,
+             then the exceeding hypothesis will be kept as implications in
+             the conclusion of the sequent.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_destruct.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_elimType.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">destruct </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> elimType</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_elimType.html b/helm/www/matita/docs/manual-0.5.9/tac_elimType.html
new file mode 100644 (file)
index 0000000..f0f737f
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>elimType</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_elim.html" title="elim" /><link rel="next" href="tac_exact.html" title="exact" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">elimType</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_elim.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_exact.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_elimType"></a>elimType</h2></div></div></div><p><strong class="userinput"><code>elimType T using th hyps</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>elimType</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span> [<span class="bold"><strong>using</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span>] <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.intros-spec">intros-spec</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p><span class="command"><strong>T</strong></span> must be an inductive type.</p></dd><dt><span class="term">Action:</span></dt><dd><p>TODO (severely bugged now).</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>TODO</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_elim.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_exact.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">elim </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> exact</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_exact.html b/helm/www/matita/docs/manual-0.5.9/tac_exact.html
new file mode 100644 (file)
index 0000000..6f38cee
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>exact</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_elimType.html" title="elimType" /><link rel="next" href="tac_exists.html" title="exists" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">exact</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_elimType.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_exists.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_exact"></a>exact</h2></div></div></div><p><strong class="userinput"><code>exact p</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>exact</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>The type of <span class="command"><strong>p</strong></span> must be convertible
+             with the conclusion of the current sequent.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It closes the current sequent using <span class="command"><strong>p</strong></span>.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_elimType.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_exists.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">elimType </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> exists</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_exists.html b/helm/www/matita/docs/manual-0.5.9/tac_exists.html
new file mode 100644 (file)
index 0000000..77952c6
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>exists</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_exact.html" title="exact" /><link rel="next" href="tac_fail.html" title="fail" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">exists</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_exact.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_fail.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_exists"></a>exists</h2></div></div></div><p><strong class="userinput"><code>exists </code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>exists</strong></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>The conclusion of the current sequent must be
+             an inductive type or the application of an inductive type
+             with at least one constructor.</p></dd><dt><span class="term">Action:</span></dt><dd><p>Equivalent to <span class="command"><strong>constructor 1</strong></span>.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>It opens a new sequent for each premise of the first
+             constructor of the inductive type that is the conclusion of the
+             current sequent. For more details, see the <span class="command"><strong>constructor</strong></span> tactic.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_exact.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_fail.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">exact </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> fail</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_exitselim.html b/helm/www/matita/docs/manual-0.5.9/tac_exitselim.html
new file mode 100644 (file)
index 0000000..0ea438f
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>let such that</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_declarative_tactics.html" title="Chapter 8. Declarative Tactics" /><link rel="prev" href="tac_bydone.html" title="done" /><link rel="next" href="tac_obtain.html" title="obtain" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">let such that</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_bydone.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Declarative Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_obtain.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_exitselim"></a>let such that</h2></div></div></div><p><strong class="userinput"><code>justification let x:t such that p (id)</code></strong>
+    </p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.justification">justification</a></em></span> <span class="bold"><strong>let</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> 
+                   <span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="bold"><strong>such that</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> 
+                    <span class="bold"><strong>(</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> <span class="bold"><strong>)</strong></span></p></dd><dt><span class="term">Pre-condition:</span></dt><dd><p>
+           </p></dd><dt><span class="term">Action:</span></dt><dd><p>It derives <span class="command"><strong>∃x:t.p</strong></span> using the
+        <span class="command"><strong>justification</strong></span> and then it introduces in the context
+        <span class="command"><strong>x</strong></span> and the hypothesis  
+        <span class="command"><strong>p</strong></span> labelled with
+        <span class="command"><strong>id</strong></span>.
+      </p></dd><dt><span class="term">New sequent to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_bydone.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_declarative_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_obtain.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">done </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> obtain</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_fail.html b/helm/www/matita/docs/manual-0.5.9/tac_fail.html
new file mode 100644 (file)
index 0000000..b38ea3e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>fail</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_exists.html" title="exists" /><link rel="next" href="tac_fold.html" title="fold" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">fail</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_exists.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_fold.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_fail"></a>fail</h2></div></div></div><p><strong class="userinput"><code>fail</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>fail</strong></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>None.</p></dd><dt><span class="term">Action:</span></dt><dd><p>This tactic always fail.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>N.A.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_exists.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_fold.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">exists </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> fold</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_fold.html b/helm/www/matita/docs/manual-0.5.9/tac_fold.html
new file mode 100644 (file)
index 0000000..76939c7
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>fold</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_fail.html" title="fail" /><link rel="next" href="tac_fourier.html" title="fourier" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">fold</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_fail.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_fourier.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_fold"></a>fold</h2></div></div></div><p><strong class="userinput"><code>fold red t patt</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>fold</strong></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.reduction-kind">reduction-kind</a></em></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>The pattern must not specify the wanted term.</p></dd><dt><span class="term">Action:</span></dt><dd><p>First of all it locates all the subterms matched by
+             <span class="command"><strong>patt</strong></span>. In the context of each matched subterm
+             it disambiguates the term <span class="command"><strong>t</strong></span> and reduces it
+             to its <span class="command"><strong>red</strong></span> normal form; then it replaces with
+             <span class="command"><strong>t</strong></span> every occurrence of the normal form in the
+             matched subterm.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_fail.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_fourier.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">fail </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> fourier</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_fourier.html b/helm/www/matita/docs/manual-0.5.9/tac_fourier.html
new file mode 100644 (file)
index 0000000..fdc1c00
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>fourier</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_fold.html" title="fold" /><link rel="next" href="tac_fwd.html" title="fwd" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">fourier</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_fold.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_fwd.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_fourier"></a>fourier</h2></div></div></div><p><strong class="userinput"><code>fourier </code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>fourier</strong></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>The conclusion of the current sequent must be a linear
+             inequation over real numbers taken from standard library of
+             Coq. Moreover the inequations in the hypotheses must imply the
+             inequation in the conclusion of the current sequent.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It closes the current sequent by applying the Fourier method.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_fold.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_fwd.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">fold </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> fwd</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_fwd.html b/helm/www/matita/docs/manual-0.5.9/tac_fwd.html
new file mode 100644 (file)
index 0000000..38bfcc0
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>fwd</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_fourier.html" title="fourier" /><link rel="next" href="tac_generalize.html" title="generalize" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">fwd</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_fourier.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_generalize.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_fwd"></a>fwd</h2></div></div></div><p><strong class="userinput"><code>fwd H as H<sub>0</sub> ... H<sub>n</sub></code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>fwd</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> [<span class="bold"><strong>as</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]…]</p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>
+              The type of <span class="command"><strong>H</strong></span> must be the premise of a
+               forward simplification theorem.
+           </p></dd><dt><span class="term">Action:</span></dt><dd><p>
+            This tactic is under development.
+             It simplifies the current context by removing
+            <span class="command"><strong>H</strong></span> using the following methods:
+            forward application (by <span class="command"><strong>lapply</strong></span>) of a suitable
+            simplification theorem, chosen automatically, of which the type
+            of <span class="command"><strong>H</strong></span> is a premise, 
+            decomposition (by <span class="command"><strong>decompose</strong></span>),
+            rewriting (by <span class="command"><strong>rewrite</strong></span>).
+            <span class="command"><strong>H<sub>0</sub> ... H<sub>n</sub></strong></span>
+            are passed to the tactics <span class="command"><strong>fwd</strong></span> invokes, as
+             names for the premise they introduce.
+           </p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>
+            The ones opened by the tactics <span class="command"><strong>fwd</strong></span> invokes.
+           </p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_fourier.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_generalize.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">fourier </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> generalize</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_generalize.html b/helm/www/matita/docs/manual-0.5.9/tac_generalize.html
new file mode 100644 (file)
index 0000000..f51f1d9
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>generalize</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_fwd.html" title="fwd" /><link rel="next" href="tac_id.html" title="id" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">generalize</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_fwd.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_id.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_generalize"></a>generalize</h2></div></div></div><p><strong class="userinput"><code>generalize patt as H</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>generalize</strong></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span> [<span class="bold"><strong>as</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]</p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>All the terms matched by <span class="command"><strong>patt</strong></span> must be
+             convertible and close in the context of the current sequent.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It closes the current sequent by applying a stronger
+             lemma that is proved using the new generated sequent.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>It opens a new sequent where the current sequent conclusion
+             <span class="command"><strong>G</strong></span> is generalized to
+             <span class="command"><strong>∀x.G{x/t}</strong></span> where <span class="command"><strong>{x/t}</strong></span>
+             is a notation for the replacement with <span class="command"><strong>x</strong></span> of all
+             the occurrences of the term <span class="command"><strong>t</strong></span> matched by
+             <span class="command"><strong>patt</strong></span>. If <span class="command"><strong>patt</strong></span> matches no
+             subterm then <span class="command"><strong>t</strong></span> is defined as the
+             <span class="command"><strong>wanted</strong></span> part of the pattern.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_fwd.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_id.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">fwd </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> id</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_id.html b/helm/www/matita/docs/manual-0.5.9/tac_id.html
new file mode 100644 (file)
index 0000000..97f0ef7
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>id</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_generalize.html" title="generalize" /><link rel="next" href="tac_intro.html" title="intro" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">id</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_generalize.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_intro.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_id"></a>id</h2></div></div></div><p><strong class="userinput"><code>id </code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>id</strong></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>None.</p></dd><dt><span class="term">Action:</span></dt><dd><p>This identity tactic does nothing without failing.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_generalize.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_intro.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">generalize </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> intro</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_intro.html b/helm/www/matita/docs/manual-0.5.9/tac_intro.html
new file mode 100644 (file)
index 0000000..39e4dbc
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>intro</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_id.html" title="id" /><link rel="next" href="tac_intros.html" title="intros" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">intro</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_id.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_intros.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_intro"></a>intro</h2></div></div></div><p><strong class="userinput"><code>intro H</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>intro</strong></span> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]</p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>The conclusion of the sequent to prove must be an implication
+             or a universal quantification.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It applies the right introduction rule for implication,
+             closing the current sequent.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>It opens a new sequent to prove adding to the hypothesis
+             the antecedent of the implication and setting the conclusion
+             to the consequent of the implicaiton. The name of the new
+             hypothesis is <span class="command"><strong>H</strong></span> if provided; otherwise it
+             is automatically generated.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_id.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_intros.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">id </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> intros</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_intros.html b/helm/www/matita/docs/manual-0.5.9/tac_intros.html
new file mode 100644 (file)
index 0000000..29eea27
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>intros</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_intro.html" title="intro" /><link rel="next" href="tac_inversion.html" title="inversion" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">intros</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_intro.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_inversion.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_intros"></a>intros</h2></div></div></div><p><strong class="userinput"><code>intros hyps</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>intros</strong></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.intros-spec">intros-spec</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>If <span class="command"><strong>hyps</strong></span> specifies a number of hypotheses
+             to introduce, then the conclusion of the current sequent must
+             be formed by at least that number of imbricated implications
+             or universal quantifications.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It applies several times the right introduction rule for
+             implication, closing the current sequent.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>It opens a new sequent to prove adding a number of new
+             hypotheses equal to the number of new hypotheses requested.
+             If the user does not request a precise number of new hypotheses,
+             it adds as many hypotheses as possible.
+             The name of each new hypothesis is either popped from the
+             user provided list of names, or it is automatically generated when
+             the list is (or becomes) empty.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_intro.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_inversion.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">intro </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> inversion</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_inversion.html b/helm/www/matita/docs/manual-0.5.9/tac_inversion.html
new file mode 100644 (file)
index 0000000..56ff69c
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>inversion</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_intros.html" title="intros" /><link rel="next" href="tac_lapply.html" title="lapply" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">inversion</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_intros.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_lapply.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_inversion"></a>inversion</h2></div></div></div><p><strong class="userinput"><code>inversion t</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>inversion</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>The type of the term <span class="command"><strong>t</strong></span> must be an inductive
+             type or the application of an inductive type.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It proceeds by cases on <span class="command"><strong>t</strong></span> paying attention
+             to the constraints imposed by the actual "right arguments"
+             of the inductive type.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>It opens one new sequent to prove for each case in the
+             definition of the type of <span class="command"><strong>t</strong></span>. With respect to
+             a simple elimination, each new sequent has additional hypotheses
+             that states the equalities of the "right parameters"
+             of the inductive type with terms originally present in the
+             sequent to prove.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_intros.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_lapply.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">intros </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> lapply</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_lapply.html b/helm/www/matita/docs/manual-0.5.9/tac_lapply.html
new file mode 100644 (file)
index 0000000..17ba95c
--- /dev/null
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>lapply</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_inversion.html" title="inversion" /><link rel="next" href="tac_left.html" title="left" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">lapply</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_inversion.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_left.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_lapply"></a>lapply</h2></div></div></div><p><strong class="userinput"><code>
+     lapply linear depth=d t 
+     to t<sub>1</sub>, ..., t<sub>n</sub> as H
+    </code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p>
+            <span class="bold"><strong>lapply</strong></span> 
+            [<span class="bold"><strong>linear</strong></span>]
+            [<span class="bold"><strong>depth=</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span>] 
+            <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span> 
+            [<span class="bold"><strong>to</strong></span>
+             <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span>
+             [<span class="bold"><strong>,</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span>…]
+            ] 
+            [<span class="bold"><strong>as</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]
+           </p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>
+            <span class="command"><strong>t</strong></span> must have at least <span class="command"><strong>d</strong></span>
+            independent premises and <span class="command"><strong>n</strong></span> must not be
+            greater than <span class="command"><strong>d</strong></span>.
+           </p></dd><dt><span class="term">Action:</span></dt><dd><p>
+            Invokes <span class="command"><strong>letin H ≝ (t ? ... ?)</strong></span>
+            with enough <span class="command"><strong>?</strong></span>'s to reach the 
+            <span class="command"><strong>d</strong></span>-th independent premise of
+            <span class="command"><strong>t</strong></span>
+            (<span class="command"><strong>d</strong></span> is maximum if unspecified).            
+            Then istantiates (by <span class="command"><strong>apply</strong></span>) with
+            t<sub>1</sub>, ..., t<sub>n</sub>
+            the <span class="command"><strong>?</strong></span>'s corresponding to the first 
+            <span class="command"><strong>n</strong></span> independent premises of
+            <span class="command"><strong>t</strong></span>.
+            Usually the other <span class="command"><strong>?</strong></span>'s preceding the 
+            <span class="command"><strong>n</strong></span>-th independent premise of
+            <span class="command"><strong>t</strong></span> are istantiated as a consequence.
+            If the <span class="command"><strong>linear</strong></span> flag is specified and if 
+            <span class="command"><strong>t, t<sub>1</sub>, ..., t<sub>n</sub></strong></span>
+            are (applications of) premises in the current context, they are
+             <span class="command"><strong>clear</strong></span>ed. 
+           </p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>
+            The ones opened by the tactics <span class="command"><strong>lapply</strong></span> invokes.
+           </p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_inversion.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_left.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">inversion </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> left</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_left.html b/helm/www/matita/docs/manual-0.5.9/tac_left.html
new file mode 100644 (file)
index 0000000..95baed0
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>left</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_lapply.html" title="lapply" /><link rel="next" href="tac_letin.html" title="letin" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">left</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_lapply.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_letin.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_left"></a>left</h2></div></div></div><p><strong class="userinput"><code>left </code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>left</strong></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>The conclusion of the current sequent must be
+             an inductive type or the application of an inductive type
+             with at least one constructor.</p></dd><dt><span class="term">Action:</span></dt><dd><p>Equivalent to <span class="command"><strong>constructor 1</strong></span>.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>It opens a new sequent for each premise of the first
+             constructor of the inductive type that is the conclusion of the
+             current sequent. For more details, see the <span class="command"><strong>constructor</strong></span> tactic.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_lapply.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_letin.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">lapply </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> letin</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_letin.html b/helm/www/matita/docs/manual-0.5.9/tac_letin.html
new file mode 100644 (file)
index 0000000..ea3c4a5
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>letin</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_left.html" title="left" /><link rel="next" href="tac_normalize.html" title="normalize" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">letin</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_left.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_normalize.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_letin"></a>letin</h2></div></div></div><p><strong class="userinput"><code>letin x ≝ t</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>letin</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> <span class="bold"><strong>≝</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>None.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It adds to the context of the current sequent to prove a new
+             definition <span class="command"><strong>x ≝ t</strong></span>.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_left.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_normalize.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">left </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> normalize</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_normalize.html b/helm/www/matita/docs/manual-0.5.9/tac_normalize.html
new file mode 100644 (file)
index 0000000..b2ae4cb
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>normalize</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_letin.html" title="letin" /><link rel="next" href="tac_reflexivity.html" title="reflexivity" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">normalize</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_letin.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_reflexivity.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_normalize"></a>normalize</h2></div></div></div><p><strong class="userinput"><code>normalize patt</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>normalize</strong></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>None.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It replaces all the terms matched by <span class="command"><strong>patt</strong></span>
+             with their βδιζ-normal form.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_letin.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_reflexivity.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">letin </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> reflexivity</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_obtain.html b/helm/www/matita/docs/manual-0.5.9/tac_obtain.html
new file mode 100644 (file)
index 0000000..1e97ef0
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>obtain</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_declarative_tactics.html" title="Chapter 8. Declarative Tactics" /><link rel="prev" href="tac_exitselim.html" title="let such that" /><link rel="next" href="tac_suppose.html" title="suppose" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">obtain</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_exitselim.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Declarative Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_suppose.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_obtain"></a>obtain</h2></div></div></div><p><strong class="userinput"><code>obtain H t1 = t2 justification</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p>[<span class="bold"><strong>obtain</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> | <span class="bold"><strong>conclude</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>] <span class="bold"><strong>=</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> [<span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.autoparams">auto_params</a></em></span> | <span class="bold"><strong>using</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> | <span class="bold"><strong>using once</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> | <span class="bold"><strong>proof</strong></span>] [<span class="bold"><strong>done</strong></span>]</p></dd><dt><span class="term">Pre-condition:</span></dt><dd><p><span class="command"><strong>conclude</strong></span> can be used only if the current
+           sequent is stating an equality. The left hand side must be omitted
+           in an equality chain.</p></dd><dt><span class="term">Action:</span></dt><dd><p>Starts or continues an equality chain. If the chain starts 
+         with <span class="command"><strong>obtain H</strong></span> a new subproof named 
+         <span class="command"><strong>H</strong></span> is started.</p></dd><dt><span class="term">New sequent to prove:</span></dt><dd><p>If the chain starts 
+            with <span class="command"><strong>obtain H</strong></span> a nre sequent for
+            <span class="command"><strong>t2 = ?</strong></span> is opened.
+          </p></dd></dl></div><p>
+     </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_exitselim.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_declarative_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_suppose.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">let such that </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> suppose</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_reflexivity.html b/helm/www/matita/docs/manual-0.5.9/tac_reflexivity.html
new file mode 100644 (file)
index 0000000..291f088
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>reflexivity</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_normalize.html" title="normalize" /><link rel="next" href="tac_replace.html" title="replace" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">reflexivity</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_normalize.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_replace.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_reflexivity"></a>reflexivity</h2></div></div></div><p><strong class="userinput"><code>reflexivity </code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>reflexivity</strong></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>The conclusion of the current sequent must be
+             <span class="command"><strong>t=t</strong></span> for some term <span class="command"><strong>t</strong></span></p></dd><dt><span class="term">Action:</span></dt><dd><p>It closes the current sequent by reflexivity
+             of equality.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_normalize.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_replace.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">normalize </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> replace</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_replace.html b/helm/www/matita/docs/manual-0.5.9/tac_replace.html
new file mode 100644 (file)
index 0000000..1a81666
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>replace</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_reflexivity.html" title="reflexivity" /><link rel="next" href="tac_rewrite.html" title="rewrite" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">replace</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_reflexivity.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_rewrite.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_replace"></a>replace</h2></div></div></div><p><strong class="userinput"><code>change patt with t</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>replace</strong></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span> <span class="bold"><strong>with</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>None.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It replaces the subterms of the current sequent matched by
+             <span class="command"><strong>patt</strong></span> with the new term <span class="command"><strong>t</strong></span>.
+             For each subterm matched by the pattern, <span class="command"><strong>t</strong></span> is
+             disambiguated in the context of the subterm.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>For each matched term <span class="command"><strong>t'</strong></span> it opens
+             a new sequent to prove whose conclusion is
+             <span class="command"><strong>t'=t</strong></span>.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_reflexivity.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_rewrite.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">reflexivity </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> rewrite</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_rewrite.html b/helm/www/matita/docs/manual-0.5.9/tac_rewrite.html
new file mode 100644 (file)
index 0000000..76d0107
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>rewrite</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_replace.html" title="replace" /><link rel="next" href="tac_right.html" title="right" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">rewrite</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_replace.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_right.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_rewrite"></a>rewrite</h2></div></div></div><p><strong class="userinput"><code>rewrite dir p patt</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>rewrite</strong></span> [<span class="bold"><strong>&lt;</strong></span>|<span class="bold"><strong>&gt;</strong></span>] <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p><span class="command"><strong>p</strong></span> must be the proof of an equality,
+             possibly under some hypotheses.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It looks in every term matched by <span class="command"><strong>patt</strong></span>
+             for all the occurrences of the
+             left hand side of the equality that <span class="command"><strong>p</strong></span> proves
+             (resp. the right hand side if <span class="command"><strong>dir</strong></span> is
+             <span class="command"><strong>&lt;</strong></span>). Every occurence found is replaced with
+             the opposite side of the equality.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>It opens one new sequent for each hypothesis of the
+             equality proved by <span class="command"><strong>p</strong></span> that is not closed
+             by unification.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_replace.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_right.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">replace </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> right</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_right.html b/helm/www/matita/docs/manual-0.5.9/tac_right.html
new file mode 100644 (file)
index 0000000..01dd02c
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>right</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_rewrite.html" title="rewrite" /><link rel="next" href="tac_ring.html" title="ring" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">right</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_rewrite.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_ring.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_right"></a>right</h2></div></div></div><p><strong class="userinput"><code>right </code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>right</strong></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>The conclusion of the current sequent must be
+             an inductive type or the application of an inductive type with
+             at least two constructors.</p></dd><dt><span class="term">Action:</span></dt><dd><p>Equivalent to <span class="command"><strong>constructor 2</strong></span>.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>It opens a new sequent for each premise of the second
+             constructor of the inductive type that is the conclusion of the
+             current sequent. For more details, see the <span class="command"><strong>constructor</strong></span> tactic.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_rewrite.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_ring.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">rewrite </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ring</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_ring.html b/helm/www/matita/docs/manual-0.5.9/tac_ring.html
new file mode 100644 (file)
index 0000000..fdebac6
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ring</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_right.html" title="right" /><link rel="next" href="tac_simplify.html" title="simplify" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ring</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_right.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_simplify.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_ring"></a>ring</h2></div></div></div><p><strong class="userinput"><code>ring </code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>ring</strong></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>The conclusion of the current sequent must be an
+             equality over Coq's real numbers that can be proved using
+             the ring properties of the real numbers only.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It closes the current sequent veryfying the equality by
+             means of computation (i.e. this is a reflexive tactic, implemented
+             exploiting the "two level reasoning" technique).</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_right.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_simplify.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">right </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> simplify</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_simplify.html b/helm/www/matita/docs/manual-0.5.9/tac_simplify.html
new file mode 100644 (file)
index 0000000..031d0e6
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>simplify</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_ring.html" title="ring" /><link rel="next" href="tac_split.html" title="split" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">simplify</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_ring.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_split.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_simplify"></a>simplify</h2></div></div></div><p><strong class="userinput"><code>simplify patt</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>simplify</strong></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>None.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It replaces all the terms matched by <span class="command"><strong>patt</strong></span>
+             with other convertible terms that are supposed to be simpler.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_ring.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_split.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ring </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> split</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_split.html b/helm/www/matita/docs/manual-0.5.9/tac_split.html
new file mode 100644 (file)
index 0000000..8a3f60c
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>split</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_simplify.html" title="simplify" /><link rel="next" href="tac_subst.html" title="subst" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">split</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_simplify.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_subst.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_split"></a>split</h2></div></div></div><p><strong class="userinput"><code>split </code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>split</strong></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>The conclusion of the current sequent must be
+             an inductive type or the application of an inductive type with
+             at least one constructor.</p></dd><dt><span class="term">Action:</span></dt><dd><p>Equivalent to <span class="command"><strong>constructor 1</strong></span>.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>It opens a new sequent for each premise of the first
+             constructor of the inductive type that is the conclusion of the
+             current sequent. For more details, see the <span class="command"><strong>constructor</strong></span> tactic.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_simplify.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_subst.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">simplify </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> subst</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_subst.html b/helm/www/matita/docs/manual-0.5.9/tac_subst.html
new file mode 100644 (file)
index 0000000..1272d9d
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>subst</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_split.html" title="split" /><link rel="next" href="tac_symmetry.html" title="symmetry" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">subst</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_split.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_symmetry.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_subst"></a>subst</h2></div></div></div><p><strong class="userinput"><code>subst</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>subst</strong></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>
+           None.
+         </p></dd><dt><span class="term">Action:</span></dt><dd><p>
+           For each premise of the form 
+           <span class="command"><strong>H: x = t</strong></span> or <span class="command"><strong>H: t = x</strong></span>
+           where <span class="command"><strong>x</strong></span> is a local variable and 
+           <span class="command"><strong>t</strong></span> does not depend on <span class="command"><strong>x</strong></span>,
+           the tactic rewrites <span class="command"><strong>H</strong></span> wherever 
+           <span class="command"><strong>x</strong></span> appears clearing <span class="command"><strong>H</strong></span> and
+           <span class="command"><strong>x</strong></span> afterwards.
+         </p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>
+           The one opened by the applied tactics.
+          </p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_split.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_symmetry.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">split </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> symmetry</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_suppose.html b/helm/www/matita/docs/manual-0.5.9/tac_suppose.html
new file mode 100644 (file)
index 0000000..e320be0
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>suppose</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_declarative_tactics.html" title="Chapter 8. Declarative Tactics" /><link rel="prev" href="tac_obtain.html" title="obtain" /><link rel="next" href="tac_thesisbecomes.html" title="the thesis becomes" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">suppose</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_obtain.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Declarative Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_thesisbecomes.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_suppose"></a>suppose</h2></div></div></div><p><strong class="userinput"><code>suppose t1 (x) that is equivalent to t2</code></strong></p><p>
+     </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>suppose</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="bold"><strong> (</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span> 
+            <span class="bold"><strong>) </strong></span> [ <span class="bold"><strong>that is equivalent to</strong></span>  <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> ]</p></dd><dt><span class="term">Pre-condition:</span></dt><dd><p>The conclusion of the current proof must be
+          <span class="command"><strong>∀x:T.P</strong></span> or
+          <span class="command"><strong>T→P</strong></span> where <span class="command"><strong>T</strong></span> is
+          a proposition (i.e. <span class="command"><strong>T</strong></span> has type
+          <span class="command"><strong>Prop</strong></span> or <span class="command"><strong>CProp</strong></span>).</p></dd><dt><span class="term">Action:</span></dt><dd><p>It adds to the context of the current sequent to prove a new
+          declaration <span class="command"><strong>x : T </strong></span>. The new conclusion becomes
+          <span class="command"><strong>P</strong></span>.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+   </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_obtain.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_declarative_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_thesisbecomes.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">obtain </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> the thesis becomes</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_symmetry.html b/helm/www/matita/docs/manual-0.5.9/tac_symmetry.html
new file mode 100644 (file)
index 0000000..1bc3c7c
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>symmetry</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_subst.html" title="subst" /><link rel="next" href="tac_transitivity.html" title="transitivity" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">symmetry</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_subst.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_transitivity.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_symmetry"></a>symmetry</h2></div></div></div><p>The tactic <span class="command"><strong>symmetry</strong></span> </p><p><strong class="userinput"><code>symmetry </code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>symmetry</strong></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>The conclusion of the current proof must be an equality.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It swaps the two sides of the equalityusing the symmetric
+             property.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_subst.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_transitivity.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">subst </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> transitivity</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_thesisbecomes.html b/helm/www/matita/docs/manual-0.5.9/tac_thesisbecomes.html
new file mode 100644 (file)
index 0000000..3cd70c4
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>the thesis becomes</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_declarative_tactics.html" title="Chapter 8. Declarative Tactics" /><link rel="prev" href="tac_suppose.html" title="suppose" /><link rel="next" href="tac_weneedtoprove.html" title="we need to prove" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">the thesis becomes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_suppose.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Declarative Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_weneedtoprove.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_thesisbecomes"></a>the thesis becomes</h2></div></div></div><p><strong class="userinput"><code>the thesis becomes t</code></strong></p><p>
+        </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>the thesis becomes</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> </p></dd><dt><span class="term">Pre-condition:</span></dt><dd><p>The provided term <span class="command"><strong>t</strong></span> must be convertible with
+           current sequent.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It changes the current goal to the one provided.</p></dd><dt><span class="term">New sequent to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+       </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_suppose.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_declarative_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_weneedtoprove.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">suppose </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> we need to prove</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_transitivity.html b/helm/www/matita/docs/manual-0.5.9/tac_transitivity.html
new file mode 100644 (file)
index 0000000..6ec9611
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>transitivity</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_symmetry.html" title="symmetry" /><link rel="next" href="tac_unfold.html" title="unfold" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">transitivity</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_symmetry.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_unfold.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_transitivity"></a>transitivity</h2></div></div></div><p><strong class="userinput"><code>transitivity t</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>transitivity</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>The conclusion of the current proof must be an equality.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It closes the current sequent by transitivity of the equality.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>It opens two new sequents <span class="command"><strong>l=t</strong></span> and
+             <span class="command"><strong>t=r</strong></span> where <span class="command"><strong>l</strong></span> and <span class="command"><strong>r</strong></span> are the left and right hand side of the equality in the conclusion of
+the current sequent to prove.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_symmetry.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_unfold.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">symmetry </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> unfold</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_unfold.html b/helm/www/matita/docs/manual-0.5.9/tac_unfold.html
new file mode 100644 (file)
index 0000000..b245d6a
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>unfold</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_transitivity.html" title="transitivity" /><link rel="next" href="tac_whd.html" title="whd" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">unfold</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_transitivity.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_whd.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_unfold"></a>unfold</h2></div></div></div><p><strong class="userinput"><code>unfold t patt</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>unfold</strong></span> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span>] <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>None.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It finds all the occurrences of <span class="command"><strong>t</strong></span>
+             (possibly applied to arguments) in the subterms matched by
+             <span class="command"><strong>patt</strong></span>. Then it δ-expands each occurrence,
+             also performing β-reduction of the obtained term. If
+             <span class="command"><strong>t</strong></span> is omitted it defaults to each
+             subterm matched by <span class="command"><strong>patt</strong></span>.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_transitivity.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_whd.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">transitivity </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> whd</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_weneedtoprove.html b/helm/www/matita/docs/manual-0.5.9/tac_weneedtoprove.html
new file mode 100644 (file)
index 0000000..7a6113b
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>we need to prove</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_declarative_tactics.html" title="Chapter 8. Declarative Tactics" /><link rel="prev" href="tac_thesisbecomes.html" title="the thesis becomes" /><link rel="next" href="tac_andelim.html" title="we have" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">we need to prove</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_thesisbecomes.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Declarative Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_andelim.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_weneedtoprove"></a>we need to prove</h2></div></div></div><p><strong class="userinput"><code>we need to prove t1 (id) or equivalently t2</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>we need to prove</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>
+        [<span class="bold"><strong>(</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>
+        <span class="bold"><strong>)</strong></span>]
+        [ <span class="bold"><strong>or equivalently</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]</p></dd><dt><span class="term">Pre-condition:</span></dt><dd><p></p></dd><dt><span class="term">Action:</span></dt><dd><p>If <span class="command"><strong>id</strong></span> is provided, starts a subproof that once concluded 
+              will be named <span class="command"><strong>id</strong></span>. Otherwise states what needs to be proved.
+              If <span class="command"><strong>t2</strong></span> is provided, the new goal is 
+              immediately changed to <span class="command"><strong>t2</strong></span> wich must
+              be equivalent to <span class="command"><strong>t1</strong></span>.
+            </p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>The stated one if <span class="command"><strong>id</strong></span> is provided</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_thesisbecomes.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_declarative_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_andelim.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">the thesis becomes </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> we have</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_weproceedbycases.html b/helm/www/matita/docs/manual-0.5.9/tac_weproceedbycases.html
new file mode 100644 (file)
index 0000000..3047db5
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>we proceed by cases on</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_declarative_tactics.html" title="Chapter 8. Declarative Tactics" /><link rel="prev" href="tac_andelim.html" title="we have" /><link rel="next" href="tac_weproceedbyinduction.html" title="we proceed by induction on" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">we proceed by cases on</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_andelim.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Declarative Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_weproceedbyinduction.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_weproceedbycases"></a>we proceed by cases on</h2></div></div></div><p><strong class="userinput"><code>we proceed by cases on t to prove th</code></strong></p><p>
+        </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>we proceed by cases on</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="bold"><strong>to prove</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> </p></dd><dt><span class="term">Pre-condition:</span></dt><dd><p><span class="command"><strong>t</strong></span> must inhabitant of an inductive type and
+          <span class="command"><strong>th</strong></span> must be the conclusion to be proved by 
+          cases.</p></dd><dt><span class="term">Action:</span></dt><dd><p> It proceeds by cases on <span class="command"><strong>t</strong></span> </p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>It opens one new sequent for each constructor of the
+                type of <span class="command"><strong>t</strong></span>.</p></dd></dl></div><p>
+       </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_andelim.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_declarative_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_weproceedbyinduction.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">we have </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> we proceed by induction on</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_weproceedbyinduction.html b/helm/www/matita/docs/manual-0.5.9/tac_weproceedbyinduction.html
new file mode 100644 (file)
index 0000000..29d748b
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>we proceed by induction on</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_declarative_tactics.html" title="Chapter 8. Declarative Tactics" /><link rel="prev" href="tac_weproceedbycases.html" title="we proceed by cases on" /><link rel="next" href="tac_bytermweproved.html" title="we proved" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">we proceed by induction on</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_weproceedbycases.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Declarative Tactics</th><td width="20%" align="right"> <a accesskey="n" href="tac_bytermweproved.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_weproceedbyinduction"></a>we proceed by induction on</h2></div></div></div><p><strong class="userinput"><code>we proceed by induction on t to prove th</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>we proceed by induction on</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> <span class="bold"><strong> to prove </strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> </p></dd><dt><span class="term">Pre-condition:</span></dt><dd><p><span class="command"><strong>t</strong></span> must inhabitant of an inductive type and 
+        <span class="command"><strong>th</strong></span> must be the conclusion to be proved by induction.
+        </p></dd><dt><span class="term">Action:</span></dt><dd><p>It proceed by induction on <span class="command"><strong>t</strong></span>.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>It opens one new sequent for each constructor of the
+                type of <span class="command"><strong>t</strong></span>.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_weproceedbycases.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_declarative_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="tac_bytermweproved.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">we proceed by cases on </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> we proved</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tac_whd.html b/helm/www/matita/docs/manual-0.5.9/tac_whd.html
new file mode 100644 (file)
index 0000000..191eb6c
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>whd</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tactics.html" title="Chapter 7. Tactics" /><link rel="prev" href="tac_unfold.html" title="unfold" /><link rel="next" href="sec_declarative_tactics.html" title="Chapter 8. Declarative Tactics" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">whd</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tac_unfold.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Tactics</th><td width="20%" align="right"> <a accesskey="n" href="sec_declarative_tactics.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tac_whd"></a>whd</h2></div></div></div><p><strong class="userinput"><code>whd patt</code></strong></p><p>
+      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Synopsis:</span></dt><dd><p><span class="bold"><strong>whd</strong></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span></p></dd><dt><span class="term">Pre-conditions:</span></dt><dd><p>None.</p></dd><dt><span class="term">Action:</span></dt><dd><p>It replaces all the terms matched by <span class="command"><strong>patt</strong></span>
+             with their βδιζ-weak-head normal form.</p></dd><dt><span class="term">New sequents to prove:</span></dt><dd><p>None.</p></dd></dl></div><p>
+    </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tac_unfold.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tactics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="sec_declarative_tactics.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">unfold </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 8. Declarative Tactics</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tactic_quickref.xml b/helm/www/matita/docs/manual-0.5.9/tactic_quickref.xml
new file mode 100644 (file)
index 0000000..e1ff24b
--- /dev/null
@@ -0,0 +1,6 @@
+<table frame="topbot" rowsep="0" colsep="0" role="grammar">
+  <title>tacticssec__tactics</title>
+  <tgroup cols="3">
+    <tbody/>
+  </tgroup>
+</table>
diff --git a/helm/www/matita/docs/manual-0.5.9/tacticals.html b/helm/www/matita/docs/manual-0.5.9/tacticals.html
new file mode 100644 (file)
index 0000000..aa2efa6
--- /dev/null
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Tacticals</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_tacticals.html" title="Chapter 6. Tacticals" /><link rel="prev" href="proofstatus.html" title="The proof status" /><link rel="next" href="sec_tactics.html" title="Chapter 7. Tactics" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Tacticals</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="proofstatus.html">Prev</a> </td><th width="60%" align="center">Chapter 6. Tacticals</th><td width="20%" align="right"> <a accesskey="n" href="sec_tactics.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tacticals"></a>Tacticals</h2></div></div></div><div class="table"><a id="idp70790512"></a><p class="title"><strong>Table 6.1. proof script</strong></p><div class="table-contents"><table summary="proof script" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.proofscript"></a><span class="emphasis"><em><a class="link" href="tacticals.html#grammar.proofscript">proof-script</a></em></span></td><td style="">::=</td><td style=""><span class="emphasis"><em><a class="link" href="tacticals.html#grammar.proofstep">proof-step</a></em></span> [<span class="emphasis"><em><a class="link" href="tacticals.html#grammar.proofstep">proof-step</a></em></span>]…</td><td class="auto-generated" style=""> </td></tr></tbody></table></div></div><br class="table-break" /><p>Every proof step can be immediately executed.</p><div class="table"><a id="idp70799712"></a><p class="title"><strong>Table 6.2. proof steps</strong></p><div class="table-contents"><table summary="proof steps" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.proofstep"></a><span class="emphasis"><em><a class="link" href="tacticals.html#grammar.proofstep">proof-step</a></em></span></td><td style="">::=</td><td style=""><span class="emphasis"><em><a class="link" href="tacticals.html#grammar.LCFtactical">LCF-tactical</a></em></span></td><td style="">The tactical is applied to each
+        <a class="link" href="proofstatus.html#selectedsequents">selected sequent</a>.
+        Each new sequent becomes a selected sequent.</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>.</strong></span></td><td style="">The first
+        <a class="link" href="proofstatus.html#selectedsequents">selected sequent</a> becomes
+        the only one selected. All the remaining previously selected sequents
+        are proposed to the user one at a time when the next
+        "<span class="bold"><strong>.</strong></span>" is used.
+       </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>;</strong></span></td><td style="">Nothing changes. Use this proof step as a separator in
+        concrete syntax.</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>[</strong></span></td><td style="">Every <a class="link" href="proofstatus.html#selectedsequents">selected sequent</a>
+        becomes a <a class="link" href="proofstatus.html#siblingsequents">sibling sequent</a>
+        that constitute a branch in the proof.
+        Moreover, the first sequent is also selected.
+       </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>|</strong></span></td><td style="">Stop working on the current branch of the innermost branching
+        proof.
+        The sibling branches become the <a class="link" href="proofstatus.html#siblingsequents">sibling
+        sequents</a> and the first one is also selected.
+       </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span>[<span class="bold"><strong>,</strong></span><span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span>]…<span class="bold"><strong>:</strong></span></td><td style="">The <a class="link" href="proofstatus.html#siblingsequents">sibling sequents</a>
+        specified by the user become the next
+        <a class="link" href="proofstatus.html#selectedsequents">selected sequents</a>.
+       </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>*:</strong></span></td><td style="">Every sibling branch not considered yet in the innermost
+        branching proof becomes a
+        <a class="link" href="proofstatus.html#selectedsequents">selected sequent</a>.
+       </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>skip</strong></span></td><td style="">Accept the automatically provided instantiation (not shown
+        to the user) for the currently selected
+        <a class="link" href="proofstatus.html#solvedsequents">automatically closed sibling sequent</a>.
+       </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>]</strong></span></td><td style="">Stop analyzing branches for the innermost branching proof.
+        Every sequent opened during the branching proof and not closed yet
+        becomes a <a class="link" href="proofstatus.html#selectedsequents">selected sequent</a>.
+       </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>focus</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span>]…</td><td style="">
+        Selects the sequents specified by the user. The selected sequents
+        must be completely closed (no new sequents left open) before doing an
+        "<span class="bold"><strong>unfocus</strong></span> that restores
+        the current set of sibling branches.
+       </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>unfocus</strong></span></td><td style="">
+        Used to match the innermost
+        "<span class="bold"><strong>focus</strong></span>" tactical
+        when all the sequents selected by it have been closed.
+        Until "<span class="bold"><strong>unfocus</strong></span>" is
+        performed, it is not possible to progress in the rest of the
+        proof.
+       </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp70846288"></a><p class="title"><strong>Table 6.3. tactics and LCF tacticals</strong></p><div class="table-contents"><table summary="tactics and LCF tacticals" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.LCFtactical"></a><span class="emphasis"><em><a class="link" href="tacticals.html#grammar.LCFtactical">LCF-tactical</a></em></span></td><td style="">::=</td><td style=""><span class="emphasis"><em><a class="link" href="sec_tactics.html#grammar.tactic">tactic</a></em></span></td><td style="">Applies the specified tactic.</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="tacticals.html#grammar.LCFtactical">LCF-tactical</a></em></span> <span class="bold"><strong>;</strong></span> <span class="emphasis"><em><a class="link" href="tacticals.html#grammar.LCFtactical">LCF-tactical</a></em></span></td><td style="">Applies the first tactical first and the second tactical
+        to each sequent opened by the first one.</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="tacticals.html#grammar.LCFtactical">LCF-tactical</a></em></span>
+        <span class="bold"><strong>[</strong></span>
+        [<span class="emphasis"><em><a class="link" href="tacticals.html#grammar.LCFtactical">LCF-tactical</a></em></span>]
+        [<span class="bold"><strong>|</strong></span> <span class="emphasis"><em><a class="link" href="tacticals.html#grammar.LCFtactical">LCF-tactical</a></em></span>]…
+        <span class="bold"><strong>]</strong></span>
+       </td><td style="">Applies the first tactical first and each tactical in the
+        list of tacticals to the corresponding sequent opened by the
+        first one. The number of tacticals provided in the list must be
+        equal to the number of sequents opened by the first tactical.</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>do</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span>
+        <span class="emphasis"><em><a class="link" href="tacticals.html#grammar.LCFtactical">LCF-tactical</a></em></span>
+       </td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>repeat</strong></span>
+        <span class="emphasis"><em><a class="link" href="tacticals.html#grammar.LCFtactical">LCF-tactical</a></em></span>
+       </td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+        <span class="bold"><strong>first [</strong></span>
+        [<span class="emphasis"><em><a class="link" href="tacticals.html#grammar.LCFtactical">LCF-tactical</a></em></span>]
+        [<span class="bold"><strong>|</strong></span> <span class="emphasis"><em><a class="link" href="tacticals.html#grammar.LCFtactical">LCF-tactical</a></em></span>]…
+        <span class="bold"><strong>]</strong></span>
+       </td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>try</strong></span> <span class="emphasis"><em><a class="link" href="tacticals.html#grammar.LCFtactical">LCF-tactical</a></em></span></td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style="">
+        <span class="bold"><strong>solve [</strong></span>
+        [<span class="emphasis"><em><a class="link" href="tacticals.html#grammar.LCFtactical">LCF-tactical</a></em></span>]
+        [<span class="bold"><strong>|</strong></span> <span class="emphasis"><em><a class="link" href="tacticals.html#grammar.LCFtactical">LCF-tactical</a></em></span>]…
+        <span class="bold"><strong>]</strong></span>
+       </td><td style=""><span class="emphasis"><em>TODO</em></span></td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>(</strong></span><span class="emphasis"><em><a class="link" href="tacticals.html#grammar.LCFtactical">LCF-tactical</a></em></span><span class="bold"><strong>)</strong></span></td><td style="">Used for grouping during parsing.</td></tr></tbody></table></div></div><br class="table-break" /></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="proofstatus.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_tacticals.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="sec_tactics.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The proof status </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 7. Tactics</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tacticargs.html b/helm/www/matita/docs/manual-0.5.9/tacticargs.html
new file mode 100644 (file)
index 0000000..b60db9d
--- /dev/null
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Tactic arguments</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Matita V0.5.9 User Manual (rev. 0.5.9 )" /><link rel="up" href="sec_terms.html" title="Chapter 4. Syntax" /><link rel="prev" href="proofs.html" title="Proofs" /><link rel="next" href="sec_usernotation.html" title="Chapter 5. Extending the syntax" /></head><body><a xmlns="" href="../../../"><div class="matita_logo"><img src="figures/matita.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Tactic arguments</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="proofs.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Syntax</th><td width="20%" align="right"> <a accesskey="n" href="sec_usernotation.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tacticargs"></a>Tactic arguments</h2></div></div></div><p>This section documents the syntax of some recurring arguments for
+    tactics.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="introsspec"></a>intros-spec</h3></div></div></div><div class="table"><a id="idp69423248"></a><p class="title"><strong>Table 4.13. intros-spec</strong></p><div class="table-contents"><table summary="intros-spec" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.intros-spec"></a><span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.intros-spec">intros-spec</a></em></span></td><td style="">::=</td><td style="">[<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span>] [<span class="bold"><strong>(</strong></span>[<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>]…<span class="bold"><strong>)</strong></span>]</td><td class="auto-generated" style=""> </td></tr></tbody></table></div></div><br class="table-break" /><p>The natural number is the number of new hypotheses to be introduced. The list of identifiers gives the name for the first hypotheses.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="pattern"></a>pattern</h3></div></div></div><div class="table"><a id="idp69433952"></a><p class="title"><strong>Table 4.14. pattern</strong></p><div class="table-contents"><table summary="pattern" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.pattern"></a><span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.pattern">pattern</a></em></span></td><td style="">::=</td><td style=""><span class="bold"><strong>in</strong></span>
+          [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>[<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.path">path</a></em></span>]]…
+          [<span class="bold"><strong>⊢</strong></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.path">path</a></em></span>]]</td><td style="">simple pattern</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>in match</strong></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.path">path</a></em></span>
+          [<span class="bold"><strong>in</strong></span>
+          [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>[<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.path">path</a></em></span>]]…
+          [<span class="bold"><strong>⊢</strong></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.path">path</a></em></span>]]</td><td style="">full pattern</td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp69453472"></a><p class="title"><strong>Table 4.15. path</strong></p><div class="table-contents"><table summary="path" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.path"></a><span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.path">path</a></em></span></td><td style="">::=</td><td style=""><span class="emphasis"><em>〈〈any <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span> without occurrences of <span class="bold"><strong>Set</strong></span>, <span class="bold"><strong>Prop</strong></span>, <span class="bold"><strong>CProp</strong></span>, <span class="bold"><strong>Type</strong></span>, <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.id">id</a></em></span>, <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.uri">uri</a></em></span> and user provided notation; however, <span class="bold"><strong>%</strong></span> is now an additional production for <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span>〉〉</em></span></td><td class="auto-generated" style=""> </td></tr></tbody></table></div></div><br class="table-break" /><p>A <span class="emphasis"><em>path</em></span> locates zero or more subterms of a given term by mimicking the term structure up to:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Occurrences of the subterms to locate that are
+       represented by <span class="bold"><strong>%</strong></span>.</p></li><li class="listitem"><p>Subterms without any occurrence of subterms to locate
+       that can be represented by <span class="bold"><strong>?</strong></span>.
+       </p></li></ol></div><p>Warning: the format for a path for a <span class="bold"><strong>match</strong></span> … <span class="bold"><strong>with</strong></span>
+     expression is restricted to: <span class="bold"><strong>match</strong></span> <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.path">path</a></em></span>
+     <span class="bold"><strong>with</strong></span>
+     <span class="bold"><strong>[</strong></span>
+     <span class="bold"><strong>_</strong></span>
+     <span class="bold"><strong>⇒</strong></span>
+     <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.path">path</a></em></span>
+     <span class="bold"><strong>|</strong></span> …
+     <span class="bold"><strong>|</strong></span>
+     <span class="bold"><strong>_</strong></span>
+     <span class="bold"><strong>⇒</strong></span>
+     <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.path">path</a></em></span>
+     <span class="bold"><strong>]</strong></span>
+     Its semantics is the following: the n-th 
+     "<span class="bold"><strong>_</strong></span>
+     <span class="bold"><strong>⇒</strong></span>
+     <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.path">path</a></em></span>" branch is matched against the n-th constructor of the
+     inductive data type. The head λ-abstractions of <span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.path">path</a></em></span> are matched
+     against the corresponding constructor arguments. 
+    </p><p>For instance, the path
+      <strong class="userinput"><code>∀_,_:?.(? ? % ?)→(? ? ? %)</code></strong>
+       locates at once the subterms
+      <strong class="userinput"><code>x+y</code></strong> and <strong class="userinput"><code>x*y</code></strong> in the
+      term <strong class="userinput"><code>∀x,y:nat.x+y=1→0=x*y</code></strong>
+      (where the notation <strong class="userinput"><code>A=B</code></strong> hides the term
+      <strong class="userinput"><code>(eq T A B)</code></strong> for some type <strong class="userinput"><code>T</code></strong>).
+    </p><p>A <span class="emphasis"><em>simple pattern</em></span> extends paths to locate
+     subterms in a whole sequent. In particular, the pattern
+     <strong class="userinput"><code>in H: p  K: q ⊢ r</code></strong> locates at once all the subterms
+     located by the pattern <strong class="userinput"><code>r</code></strong> in the conclusion of the
+     sequent and by the patterns <strong class="userinput"><code>p</code></strong> and
+     <strong class="userinput"><code>q</code></strong> in the hypotheses <strong class="userinput"><code>H</code></strong>
+     and <strong class="userinput"><code>K</code></strong> of the sequent.
+    </p><p>If no list of hypotheses is provided in a simple pattern, no subterm
+     is selected in the hypothesis. If the <strong class="userinput"><code>⊢ p</code></strong>
+     part of the pattern is not provided, no subterm will be matched in the
+     conclusion if at least one hypothesis is provided; otherwise the whole
+     conclusion is selected.
+    </p><p>Finally, a <span class="emphasis"><em>full pattern</em></span> is interpreted in three
+     steps. In the first step the <strong class="userinput"><code>match T in</code></strong>
+     part is ignored and a set <span class="emphasis"><em>S</em></span> of subterms is
+     located as for the case of
+     simple patterns. In the second step the term <strong class="userinput"><code>T</code></strong>
+     is parsed and interpreted in the context of each subterm
+     <span class="emphasis"><em>s ∈ S</em></span>. In the last term for each
+     <span class="emphasis"><em>s ∈ S</em></span> the interpreted term <strong class="userinput"><code>T</code></strong>
+     computed in the previous step is looked for. The final set of subterms
+     located by the full pattern is the set of occurrences of
+     the interpreted <strong class="userinput"><code>T</code></strong> in the subterms <span class="emphasis"><em>s</em></span>.
+    </p><p>A full pattern can always be replaced by a simple pattern,
+      often at the cost of increased verbosity or decreased readability.</p><p>Example: the pattern
+      <strong class="userinput"><code>⊢ in match x+y in ∀_,_:?.(? ? % ?)</code></strong>
+      locates only the first occurrence of <strong class="userinput"><code>x+y</code></strong>
+      in the sequent <strong class="userinput"><code>x,y: nat ⊢ ∀z,w:nat. (x+y) * (z+w) =
+      z * (x+y) + w * (x+y)</code></strong>. The corresponding simple pattern
+      is <strong class="userinput"><code>⊢ ∀_,_:?.(? ? (? % ?) ?)</code></strong>.
+    </p><p>Every tactic that acts on subterms of the selected sequents have
+     a pattern argument for uniformity. To automatically generate a simple
+     pattern:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Select in the current goal the subterms to pass to the
+      tactic by using the mouse. In order to perform a multiple selection of
+      subterms, hold the Ctrl key while selecting every subterm after the
+      first one.</p></li><li class="listitem"><p>From the contextual menu select "Copy".</p></li><li class="listitem"><p>From the "Edit" or the contextual menu select
+      "Paste as pattern"</p></li></ol></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="reduction-kind"></a>reduction-kind</h3></div></div></div><p>Reduction kinds are normalization functions that transform a term
+     to a convertible but simpler one. Each reduction kind can be used both
+     as a tactic argument and as a stand-alone tactic.</p><div class="table"><a id="idp69506592"></a><p class="title"><strong>Table 4.16. reduction-kind</strong></p><div class="table-contents"><table summary="reduction-kind" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.reduction-kind"></a><span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.reduction-kind">reduction-kind</a></em></span></td><td style="">::=</td><td style=""><span class="bold"><strong>normalize</strong></span></td><td style="">Computes the βδιζ-normal form</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>simplify</strong></span></td><td style="">Computes a form supposed to be simpler</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>unfold</strong></span> [<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.sterm">sterm</a></em></span>]</td><td style="">δ-reduces the constant or variable if specified, or that
+         in head position</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>whd</strong></span></td><td style="">Computes the βδιζ-weak-head normal form</td></tr></tbody></table></div></div><br class="table-break" /></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="auto-params"></a>auto-params</h3></div></div></div><div class="table"><a id="idp69522400"></a><p class="title"><strong>Table 4.17. auto-params</strong></p><div class="table-contents"><table summary="auto-params" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.autoparams"></a><span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.autoparams">auto_params</a></em></span></td><td style="">::=</td><td style="">[<span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.simpleautoparam">simple_auto_param</a></em></span>]…
+               [<span class="bold"><strong>by</strong></span>
+                <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span> [,<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span>]…]
+        </td><td class="auto-generated" style=""> </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idp69531952"></a><p class="title"><strong>Table 4.18. simple-auto-param</strong></p><div class="table-contents"><table summary="simple-auto-param" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.simpleautoparam"></a><span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.simpleautoparam">simple_auto_param</a></em></span></td><td style="">::=</td><td style=""><span class="bold"><strong>depth=<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span></strong></span></td><td style="">Give a bound to the depth of the search tree</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>width=<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span></strong></span></td><td style="">The maximal width of the search tree</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>library</strong></span></td><td style="">Search everywhere (not only in included files)</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>type</strong></span></td><td style="">Try to close also goals of sort Type, otherwise only goals
+               living in sort Prop are attacked.
+        </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>paramodulation</strong></span></td><td style="">Try to close the goal performing unit-equality paramodulation
+        </td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>size=<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span></strong></span></td><td style="">The maximal number of nodes in the proof</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="bold"><strong>timeout=<span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.nat">nat</a></em></span></strong></span></td><td style="">Timeout in seconds
+        </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="justification"></a>justification</h3></div></div></div><div class="table"><a id="idp69555152"></a><p class="title"><strong>Table 4.19. justification</strong></p><div class="table-contents"><table summary="justification" style="border-collapse: collapse;border-top: 0.5pt solid ; border-bottom: 0.5pt solid ; "><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td style=""><a id="grammar.justification"></a><span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.justification">justification</a></em></span></td><td style="">::=</td><td style=""><span class="bold"><strong>using</strong></span> <span class="emphasis"><em><a class="link" href="sec_terms.html#grammar.term">term</a></em></span></td><td style="">Proof term manually provided</td></tr><tr><td style=""> </td><td style="">|</td><td style=""><span class="emphasis"><em><a class="link" href="tacticargs.html#grammar.autoparams">auto_params</a></em></span></td><td style="">Call automation</td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="proofs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sec_terms.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="sec_usernotation.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Proofs </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 5. Extending the syntax</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/helm/www/matita/docs/manual-0.5.9/tactics_quickref.xml b/helm/www/matita/docs/manual-0.5.9/tactics_quickref.xml
new file mode 100644 (file)
index 0000000..c7a789c
--- /dev/null
@@ -0,0 +1,303 @@
+<table frame="topbot" rowsep="0" colsep="0" role="grammar">
+  <title>tactics</title>
+  <tgroup cols="3">
+    <tbody>
+      <row>
+        <entry id="grammar.tactic">&tactic;</entry>
+        <entry>::=</entry>
+        <entry><link linkend="tac_absurd"><emphasis role="bold">absurd</emphasis></link> <emphasis><link linkend="grammar.sterm">sterm</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_apply"><emphasis role="bold">apply</emphasis></link> <emphasis><link linkend="grammar.sterm">sterm</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_applyS"><emphasis role="bold">applyS</emphasis></link> <emphasis><link linkend="grammar.sterm">sterm</link></emphasis> <emphasis><link linkend="grammar.autoparams">auto_params</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry>
+          <link linkend="tac_assumption">
+            <emphasis role="bold">assumption</emphasis>
+          </link>
+        </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_auto"><emphasis role="bold">auto</emphasis></link> <emphasis><link linkend="grammar.autoparams">auto_params</link></emphasis>. <emphasis role="bold">autobatch</emphasis> <emphasis><link linkend="grammar.autoparams">auto_params</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry>
+            <link linkend="tac_cases"><emphasis role="bold">cases</emphasis></link>
+            <emphasis><link linkend="grammar.term">term</link></emphasis> <emphasis><link linkend="grammar.pattern">pattern</link></emphasis> [<emphasis role="bold">(</emphasis>[<emphasis><link linkend="grammar.id">id</link></emphasis>]…<emphasis role="bold">)</emphasis>]
+           </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_change"><emphasis role="bold">change</emphasis></link> <emphasis><link linkend="grammar.pattern">pattern</link></emphasis> <emphasis role="bold">with</emphasis> <emphasis><link linkend="grammar.sterm">sterm</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry>
+            <link linkend="tac_clear"><emphasis role="bold">clear</emphasis></link>
+            <emphasis><link linkend="grammar.id">id</link></emphasis> [<emphasis><link linkend="grammar.id">id</link></emphasis>…]
+           </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_clearbody"><emphasis role="bold">clearbody</emphasis></link> <emphasis><link linkend="grammar.id">id</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_compose"><emphasis role="bold">compose</emphasis></link> [<emphasis><link linkend="grammar.nat">nat</link></emphasis>] <emphasis><link linkend="grammar.sterm">sterm</link></emphasis> [<emphasis role="bold">with</emphasis> <emphasis><link linkend="grammar.sterm">sterm</link></emphasis>] [<emphasis><link linkend="grammar.intros-spec">intros-spec</link></emphasis>]</entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_constructor"><emphasis role="bold">constructor</emphasis></link> <emphasis><link linkend="grammar.nat">nat</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry>
+          <link linkend="tac_contradiction">
+            <emphasis role="bold">contradiction</emphasis>
+          </link>
+        </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_cut"><emphasis role="bold">cut</emphasis></link> <emphasis><link linkend="grammar.sterm">sterm</link></emphasis> [<emphasis role="bold">as</emphasis> <emphasis><link linkend="grammar.id">id</link></emphasis>]</entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry>
+            <link linkend="tac_decompose"><emphasis role="bold">decompose</emphasis></link>
+            [<emphasis role="bold">as</emphasis> <emphasis><link linkend="grammar.id">id</link></emphasis>…]
+           </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_demodulate"><emphasis role="bold">demodulate</emphasis></link> <emphasis><link linkend="grammar.autoparams">auto_params</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_destruct"><emphasis role="bold">destruct</emphasis></link> <emphasis><link linkend="grammar.sterm">sterm</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_elim"><emphasis role="bold">elim</emphasis></link> <emphasis><link linkend="grammar.sterm">sterm</link></emphasis> <emphasis><link linkend="grammar.pattern">pattern</link></emphasis> [<emphasis role="bold">using</emphasis> <emphasis><link linkend="grammar.sterm">sterm</link></emphasis>] <emphasis><link linkend="grammar.intros-spec">intros-spec</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_elimType"><emphasis role="bold">elimType</emphasis></link> <emphasis><link linkend="grammar.sterm">sterm</link></emphasis> [<emphasis role="bold">using</emphasis> <emphasis><link linkend="grammar.sterm">sterm</link></emphasis>] <emphasis><link linkend="grammar.intros-spec">intros-spec</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_exact"><emphasis role="bold">exact</emphasis></link> <emphasis><link linkend="grammar.sterm">sterm</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry>
+          <link linkend="tac_exists">
+            <emphasis role="bold">exists</emphasis>
+          </link>
+        </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry>
+          <link linkend="tac_fail">
+            <emphasis role="bold">fail</emphasis>
+          </link>
+        </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_fold"><emphasis role="bold">fold</emphasis></link> <emphasis><link linkend="grammar.reduction-kind">reduction-kind</link></emphasis> <emphasis><link linkend="grammar.sterm">sterm</link></emphasis> <emphasis><link linkend="grammar.pattern">pattern</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry>
+          <link linkend="tac_fourier">
+            <emphasis role="bold">fourier</emphasis>
+          </link>
+        </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_fwd"><emphasis role="bold">fwd</emphasis></link> <emphasis><link linkend="grammar.id">id</link></emphasis> [<emphasis role="bold">as</emphasis> <emphasis><link linkend="grammar.id">id</link></emphasis> [<emphasis><link linkend="grammar.id">id</link></emphasis>]…]</entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_generalize"><emphasis role="bold">generalize</emphasis></link> <emphasis><link linkend="grammar.pattern">pattern</link></emphasis> [<emphasis role="bold">as</emphasis> <emphasis><link linkend="grammar.id">id</link></emphasis>]</entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry>
+          <link linkend="tac_id">
+            <emphasis role="bold">id</emphasis>
+          </link>
+        </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_intro"><emphasis role="bold">intro</emphasis></link> [<emphasis><link linkend="grammar.id">id</link></emphasis>]</entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_intros"><emphasis role="bold">intros</emphasis></link> <emphasis><link linkend="grammar.intros-spec">intros-spec</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_inversion"><emphasis role="bold">inversion</emphasis></link> <emphasis><link linkend="grammar.sterm">sterm</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry>
+            <link linkend="tac_lapply"><emphasis role="bold">lapply</emphasis></link> 
+            [<emphasis role="bold">linear</emphasis>]
+            [<emphasis role="bold">depth=</emphasis><emphasis><link linkend="grammar.nat">nat</link></emphasis>] 
+            <emphasis><link linkend="grammar.sterm">sterm</link></emphasis> 
+            [<emphasis role="bold">to</emphasis>
+             <emphasis><link linkend="grammar.sterm">sterm</link></emphasis>
+             [<emphasis role="bold">,</emphasis><emphasis><link linkend="grammar.sterm">sterm</link></emphasis>…]
+            ] 
+            [<emphasis role="bold">as</emphasis> <emphasis><link linkend="grammar.id">id</link></emphasis>]
+           </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry>
+          <link linkend="tac_left">
+            <emphasis role="bold">left</emphasis>
+          </link>
+        </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_letin"><emphasis role="bold">letin</emphasis></link> <emphasis><link linkend="grammar.id">id</link></emphasis> <emphasis role="bold">≝</emphasis> <emphasis><link linkend="grammar.sterm">sterm</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_normalize"><emphasis role="bold">normalize</emphasis></link> <emphasis><link linkend="grammar.pattern">pattern</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry>
+          <link linkend="tac_reflexivity">
+            <emphasis role="bold">reflexivity</emphasis>
+          </link>
+        </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_replace"><emphasis role="bold">replace</emphasis></link> <emphasis><link linkend="grammar.pattern">pattern</link></emphasis> <emphasis role="bold">with</emphasis> <emphasis><link linkend="grammar.sterm">sterm</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_rewrite"><emphasis role="bold">rewrite</emphasis></link> [<emphasis role="bold">&lt;</emphasis>|<emphasis role="bold">&gt;</emphasis>] <emphasis><link linkend="grammar.sterm">sterm</link></emphasis> <emphasis><link linkend="grammar.pattern">pattern</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry>
+          <link linkend="tac_right">
+            <emphasis role="bold">right</emphasis>
+          </link>
+        </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry>
+          <link linkend="tac_ring">
+            <emphasis role="bold">ring</emphasis>
+          </link>
+        </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_simplify"><emphasis role="bold">simplify</emphasis></link> <emphasis><link linkend="grammar.pattern">pattern</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry>
+          <link linkend="tac_split">
+            <emphasis role="bold">split</emphasis>
+          </link>
+        </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry>
+          <link linkend="tac_subst">
+            <emphasis role="bold">subst</emphasis>
+          </link>
+        </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry>
+          <link linkend="tac_symmetry">
+            <emphasis role="bold">symmetry</emphasis>
+          </link>
+        </entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_transitivity"><emphasis role="bold">transitivity</emphasis></link> <emphasis><link linkend="grammar.sterm">sterm</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_unfold"><emphasis role="bold">unfold</emphasis></link> [<emphasis><link linkend="grammar.sterm">sterm</link></emphasis>] <emphasis><link linkend="grammar.pattern">pattern</link></emphasis></entry>
+      </row>
+      <row>
+        <entry/>
+        <entry>|</entry>
+        <entry><link linkend="tac_whd"><emphasis role="bold">whd</emphasis></link> <emphasis><link linkend="grammar.pattern">pattern</link></emphasis></entry>
+      </row>
+    </tbody>
+  </tgroup>
+</table>
diff --git a/helm/www/matita/docs/manual-0.5.9/version.txt b/helm/www/matita/docs/manual-0.5.9/version.txt
new file mode 100644 (file)
index 0000000..416bfb0
--- /dev/null
@@ -0,0 +1 @@
+0.5.9
diff --git a/helm/www/matita/docs/manual-0.5.9/version.txt.in b/helm/www/matita/docs/manual-0.5.9/version.txt.in
new file mode 100644 (file)
index 0000000..c275a8c
--- /dev/null
@@ -0,0 +1 @@
+@MATITA_VERSION@
diff --git a/helm/www/matita/docs/manual-0.5.9/xhtml1-transitional.dtd b/helm/www/matita/docs/manual-0.5.9/xhtml1-transitional.dtd
new file mode 100644 (file)
index 0000000..388a594
--- /dev/null
@@ -0,0 +1,1717 @@
+<!--
+   Extensible HTML version 1.0 Transitional DTD
+
+   This is the same as HTML 4 Transitional except for
+   changes due to the differences between XML and SGML.
+
+   Namespace = http://www.w3.org/1999/xhtml
+
+   For further information, see: http://www.w3.org/TR/xhtml1
+
+   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
+   All Rights Reserved. 
+
+   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+   PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
+
+   $Revision: 1.2 $
+   $Date: 2002/08/01 18:37:55 $
+
+-->
+
+<!--================ Character mnemonic entities =========================-->
+
+<!-- <!ENTITY % HTMLlat1 PUBLIC
+   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+   "xhtml-lat1.ent">
+%HTMLlat1;
+
+<!ENTITY % HTMLsymbol PUBLIC
+   "-//W3C//ENTITIES Symbols for XHTML//EN"
+   "xhtml-symbol.ent">
+%HTMLsymbol;
+
+<!ENTITY % HTMLspecial PUBLIC
+   "-//W3C//ENTITIES Special for XHTML//EN"
+   "xhtml-special.ent">
+%HTMLspecial; -->
+
+
+<!-- Portions (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+    <!ENTITY % HTMLlat1 PUBLIC
+       "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+       "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
+    %HTMLlat1;
+-->
+
+<!ENTITY nbsp   "&#160;"> <!-- no-break space = non-breaking space,
+                                  U+00A0 ISOnum -->
+<!ENTITY iexcl  "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
+<!ENTITY cent   "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
+<!ENTITY pound  "&#163;"> <!-- pound sign, U+00A3 ISOnum -->
+<!ENTITY curren "&#164;"> <!-- currency sign, U+00A4 ISOnum -->
+<!ENTITY yen    "&#165;"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
+<!ENTITY brvbar "&#166;"> <!-- broken bar = broken vertical bar,
+                                  U+00A6 ISOnum -->
+<!ENTITY sect   "&#167;"> <!-- section sign, U+00A7 ISOnum -->
+<!ENTITY uml    "&#168;"> <!-- diaeresis = spacing diaeresis,
+                                  U+00A8 ISOdia -->
+<!ENTITY copy   "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->
+<!ENTITY ordf   "&#170;"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
+<!ENTITY laquo  "&#171;"> <!-- left-pointing double angle quotation mark
+                                  = left pointing guillemet, U+00AB ISOnum -->
+<!ENTITY not    "&#172;"> <!-- not sign = angled dash,
+                                  U+00AC ISOnum -->
+<!ENTITY shy    "&#173;"> <!-- soft hyphen = discretionary hyphen,
+                                  U+00AD ISOnum -->
+<!ENTITY reg    "&#174;"> <!-- registered sign = registered trade mark sign,
+                                  U+00AE ISOnum -->
+<!ENTITY macr   "&#175;"> <!-- macron = spacing macron = overline
+                                  = APL overbar, U+00AF ISOdia -->
+<!ENTITY deg    "&#176;"> <!-- degree sign, U+00B0 ISOnum -->
+<!ENTITY plusmn "&#177;"> <!-- plus-minus sign = plus-or-minus sign,
+                                  U+00B1 ISOnum -->
+<!ENTITY sup2   "&#178;"> <!-- superscript two = superscript digit two
+                                  = squared, U+00B2 ISOnum -->
+<!ENTITY sup3   "&#179;"> <!-- superscript three = superscript digit three
+                                  = cubed, U+00B3 ISOnum -->
+<!ENTITY acute  "&#180;"> <!-- acute accent = spacing acute,
+                                  U+00B4 ISOdia -->
+<!ENTITY micro  "&#181;"> <!-- micro sign, U+00B5 ISOnum -->
+<!ENTITY para   "&#182;"> <!-- pilcrow sign = paragraph sign,
+                                  U+00B6 ISOnum -->
+<!ENTITY middot "&#183;"> <!-- middle dot = Georgian comma
+                                  = Greek middle dot, U+00B7 ISOnum -->
+<!ENTITY cedil  "&#184;"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
+<!ENTITY sup1   "&#185;"> <!-- superscript one = superscript digit one,
+                                  U+00B9 ISOnum -->
+<!ENTITY ordm   "&#186;"> <!-- masculine ordinal indicator,
+                                  U+00BA ISOnum -->
+<!ENTITY raquo  "&#187;"> <!-- right-pointing double angle quotation mark
+                                  = right pointing guillemet, U+00BB ISOnum -->
+<!ENTITY frac14 "&#188;"> <!-- vulgar fraction one quarter
+                                  = fraction one quarter, U+00BC ISOnum -->
+<!ENTITY frac12 "&#189;"> <!-- vulgar fraction one half
+                                  = fraction one half, U+00BD ISOnum -->
+<!ENTITY frac34 "&#190;"> <!-- vulgar fraction three quarters
+                                  = fraction three quarters, U+00BE ISOnum -->
+<!ENTITY iquest "&#191;"> <!-- inverted question mark
+                                  = turned question mark, U+00BF ISOnum -->
+<!ENTITY Agrave "&#192;"> <!-- latin capital letter A with grave
+                                  = latin capital letter A grave,
+                                  U+00C0 ISOlat1 -->
+<!ENTITY Aacute "&#193;"> <!-- latin capital letter A with acute,
+                                  U+00C1 ISOlat1 -->
+<!ENTITY Acirc  "&#194;"> <!-- latin capital letter A with circumflex,
+                                  U+00C2 ISOlat1 -->
+<!ENTITY Atilde "&#195;"> <!-- latin capital letter A with tilde,
+                                  U+00C3 ISOlat1 -->
+<!ENTITY Auml   "&#196;"> <!-- latin capital letter A with diaeresis,
+                                  U+00C4 ISOlat1 -->
+<!ENTITY Aring  "&#197;"> <!-- latin capital letter A with ring above
+                                  = latin capital letter A ring,
+                                  U+00C5 ISOlat1 -->
+<!ENTITY AElig  "&#198;"> <!-- latin capital letter AE
+                                  = latin capital ligature AE,
+                                  U+00C6 ISOlat1 -->
+<!ENTITY Ccedil "&#199;"> <!-- latin capital letter C with cedilla,
+                                  U+00C7 ISOlat1 -->
+<!ENTITY Egrave "&#200;"> <!-- latin capital letter E with grave,
+                                  U+00C8 ISOlat1 -->
+<!ENTITY Eacute "&#201;"> <!-- latin capital letter E with acute,
+                                  U+00C9 ISOlat1 -->
+<!ENTITY Ecirc  "&#202;"> <!-- latin capital letter E with circumflex,
+                                  U+00CA ISOlat1 -->
+<!ENTITY Euml   "&#203;"> <!-- latin capital letter E with diaeresis,
+                                  U+00CB ISOlat1 -->
+<!ENTITY Igrave "&#204;"> <!-- latin capital letter I with grave,
+                                  U+00CC ISOlat1 -->
+<!ENTITY Iacute "&#205;"> <!-- latin capital letter I with acute,
+                                  U+00CD ISOlat1 -->
+<!ENTITY Icirc  "&#206;"> <!-- latin capital letter I with circumflex,
+                                  U+00CE ISOlat1 -->
+<!ENTITY Iuml   "&#207;"> <!-- latin capital letter I with diaeresis,
+                                  U+00CF ISOlat1 -->
+<!ENTITY ETH    "&#208;"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
+<!ENTITY Ntilde "&#209;"> <!-- latin capital letter N with tilde,
+                                  U+00D1 ISOlat1 -->
+<!ENTITY Ograve "&#210;"> <!-- latin capital letter O with grave,
+                                  U+00D2 ISOlat1 -->
+<!ENTITY Oacute "&#211;"> <!-- latin capital letter O with acute,
+                                  U+00D3 ISOlat1 -->
+<!ENTITY Ocirc  "&#212;"> <!-- latin capital letter O with circumflex,
+                                  U+00D4 ISOlat1 -->
+<!ENTITY Otilde "&#213;"> <!-- latin capital letter O with tilde,
+                                  U+00D5 ISOlat1 -->
+<!ENTITY Ouml   "&#214;"> <!-- latin capital letter O with diaeresis,
+                                  U+00D6 ISOlat1 -->
+<!ENTITY times  "&#215;"> <!-- multiplication sign, U+00D7 ISOnum -->
+<!ENTITY Oslash "&#216;"> <!-- latin capital letter O with stroke
+                                  = latin capital letter O slash,
+                                  U+00D8 ISOlat1 -->
+<!ENTITY Ugrave "&#217;"> <!-- latin capital letter U with grave,
+                                  U+00D9 ISOlat1 -->
+<!ENTITY Uacute "&#218;"> <!-- latin capital letter U with acute,
+                                  U+00DA ISOlat1 -->
+<!ENTITY Ucirc  "&#219;"> <!-- latin capital letter U with circumflex,
+                                  U+00DB ISOlat1 -->
+<!ENTITY Uuml   "&#220;"> <!-- latin capital letter U with diaeresis,
+                                  U+00DC ISOlat1 -->
+<!ENTITY Yacute "&#221;"> <!-- latin capital letter Y with acute,
+                                  U+00DD ISOlat1 -->
+<!ENTITY THORN  "&#222;"> <!-- latin capital letter THORN,
+                                  U+00DE ISOlat1 -->
+<!ENTITY szlig  "&#223;"> <!-- latin small letter sharp s = ess-zed,
+                                  U+00DF ISOlat1 -->
+<!ENTITY agrave "&#224;"> <!-- latin small letter a with grave
+                                  = latin small letter a grave,
+                                  U+00E0 ISOlat1 -->
+<!ENTITY aacute "&#225;"> <!-- latin small letter a with acute,
+                                  U+00E1 ISOlat1 -->
+<!ENTITY acirc  "&#226;"> <!-- latin small letter a with circumflex,
+                                  U+00E2 ISOlat1 -->
+<!ENTITY atilde "&#227;"> <!-- latin small letter a with tilde,
+                                  U+00E3 ISOlat1 -->
+<!ENTITY auml   "&#228;"> <!-- latin small letter a with diaeresis,
+                                  U+00E4 ISOlat1 -->
+<!ENTITY aring  "&#229;"> <!-- latin small letter a with ring above
+                                  = latin small letter a ring,
+                                  U+00E5 ISOlat1 -->
+<!ENTITY aelig  "&#230;"> <!-- latin small letter ae
+                                  = latin small ligature ae, U+00E6 ISOlat1 -->
+<!ENTITY ccedil "&#231;"> <!-- latin small letter c with cedilla,
+                                  U+00E7 ISOlat1 -->
+<!ENTITY egrave "&#232;"> <!-- latin small letter e with grave,
+                                  U+00E8 ISOlat1 -->
+<!ENTITY eacute "&#233;"> <!-- latin small letter e with acute,
+                                  U+00E9 ISOlat1 -->
+<!ENTITY ecirc  "&#234;"> <!-- latin small letter e with circumflex,
+                                  U+00EA ISOlat1 -->
+<!ENTITY euml   "&#235;"> <!-- latin small letter e with diaeresis,
+                                  U+00EB ISOlat1 -->
+<!ENTITY igrave "&#236;"> <!-- latin small letter i with grave,
+                                  U+00EC ISOlat1 -->
+<!ENTITY iacute "&#237;"> <!-- latin small letter i with acute,
+                                  U+00ED ISOlat1 -->
+<!ENTITY icirc  "&#238;"> <!-- latin small letter i with circumflex,
+                                  U+00EE ISOlat1 -->
+<!ENTITY iuml   "&#239;"> <!-- latin small letter i with diaeresis,
+                                  U+00EF ISOlat1 -->
+<!ENTITY eth    "&#240;"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
+<!ENTITY ntilde "&#241;"> <!-- latin small letter n with tilde,
+                                  U+00F1 ISOlat1 -->
+<!ENTITY ograve "&#242;"> <!-- latin small letter o with grave,
+                                  U+00F2 ISOlat1 -->
+<!ENTITY oacute "&#243;"> <!-- latin small letter o with acute,
+                                  U+00F3 ISOlat1 -->
+<!ENTITY ocirc  "&#244;"> <!-- latin small letter o with circumflex,
+                                  U+00F4 ISOlat1 -->
+<!ENTITY otilde "&#245;"> <!-- latin small letter o with tilde,
+                                  U+00F5 ISOlat1 -->
+<!ENTITY ouml   "&#246;"> <!-- latin small letter o with diaeresis,
+                                  U+00F6 ISOlat1 -->
+<!ENTITY divide "&#247;"> <!-- division sign, U+00F7 ISOnum -->
+<!ENTITY oslash "&#248;"> <!-- latin small letter o with stroke,
+                                  = latin small letter o slash,
+                                  U+00F8 ISOlat1 -->
+<!ENTITY ugrave "&#249;"> <!-- latin small letter u with grave,
+                                  U+00F9 ISOlat1 -->
+<!ENTITY uacute "&#250;"> <!-- latin small letter u with acute,
+                                  U+00FA ISOlat1 -->
+<!ENTITY ucirc  "&#251;"> <!-- latin small letter u with circumflex,
+                                  U+00FB ISOlat1 -->
+<!ENTITY uuml   "&#252;"> <!-- latin small letter u with diaeresis,
+                                  U+00FC ISOlat1 -->
+<!ENTITY yacute "&#253;"> <!-- latin small letter y with acute,
+                                  U+00FD ISOlat1 -->
+<!ENTITY thorn  "&#254;"> <!-- latin small letter thorn,
+                                  U+00FE ISOlat1 -->
+<!ENTITY yuml   "&#255;"> <!-- latin small letter y with diaeresis,
+                                  U+00FF ISOlat1 -->
+<!-- Mathematical, Greek and Symbolic characters for XHTML -->
+
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % HTMLsymbol PUBLIC
+        "-//W3C//ENTITIES Symbols for XHTML//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
+     %HTMLsymbol;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 list) do not clash with any
+     existing ISO 8879 entity names. ISO 10646 character numbers
+     are given for each character, in hex. values are decimal
+     conversions of the ISO 10646 values and refer to the document
+     character set. Names are Unicode names. 
+-->
+
+<!-- Latin Extended-B -->
+<!ENTITY fnof     "&#402;"> <!-- latin small letter f with hook = function
+                                    = florin, U+0192 ISOtech -->
+
+<!-- Greek -->
+<!ENTITY Alpha    "&#913;"> <!-- greek capital letter alpha, U+0391 -->
+<!ENTITY Beta     "&#914;"> <!-- greek capital letter beta, U+0392 -->
+<!ENTITY Gamma    "&#915;"> <!-- greek capital letter gamma,
+                                    U+0393 ISOgrk3 -->
+<!ENTITY Delta    "&#916;"> <!-- greek capital letter delta,
+                                    U+0394 ISOgrk3 -->
+<!ENTITY Epsilon  "&#917;"> <!-- greek capital letter epsilon, U+0395 -->
+<!ENTITY Zeta     "&#918;"> <!-- greek capital letter zeta, U+0396 -->
+<!ENTITY Eta      "&#919;"> <!-- greek capital letter eta, U+0397 -->
+<!ENTITY Theta    "&#920;"> <!-- greek capital letter theta,
+                                    U+0398 ISOgrk3 -->
+<!ENTITY Iota     "&#921;"> <!-- greek capital letter iota, U+0399 -->
+<!ENTITY Kappa    "&#922;"> <!-- greek capital letter kappa, U+039A -->
+<!ENTITY Lambda   "&#923;"> <!-- greek capital letter lamda,
+                                    U+039B ISOgrk3 -->
+<!ENTITY Mu       "&#924;"> <!-- greek capital letter mu, U+039C -->
+<!ENTITY Nu       "&#925;"> <!-- greek capital letter nu, U+039D -->
+<!ENTITY Xi       "&#926;"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
+<!ENTITY Omicron  "&#927;"> <!-- greek capital letter omicron, U+039F -->
+<!ENTITY Pi       "&#928;"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
+<!ENTITY Rho      "&#929;"> <!-- greek capital letter rho, U+03A1 -->
+<!-- there is no Sigmaf, and no U+03A2 character either -->
+<!ENTITY Sigma    "&#931;"> <!-- greek capital letter sigma,
+                                    U+03A3 ISOgrk3 -->
+<!ENTITY Tau      "&#932;"> <!-- greek capital letter tau, U+03A4 -->
+<!ENTITY Upsilon  "&#933;"> <!-- greek capital letter upsilon,
+                                    U+03A5 ISOgrk3 -->
+<!ENTITY Phi      "&#934;"> <!-- greek capital letter phi,
+                                    U+03A6 ISOgrk3 -->
+<!ENTITY Chi      "&#935;"> <!-- greek capital letter chi, U+03A7 -->
+<!ENTITY Psi      "&#936;"> <!-- greek capital letter psi,
+                                    U+03A8 ISOgrk3 -->
+<!ENTITY Omega    "&#937;"> <!-- greek capital letter omega,
+                                    U+03A9 ISOgrk3 -->
+
+<!ENTITY alpha    "&#945;"> <!-- greek small letter alpha,
+                                    U+03B1 ISOgrk3 -->
+<!ENTITY beta     "&#946;"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
+<!ENTITY gamma    "&#947;"> <!-- greek small letter gamma,
+                                    U+03B3 ISOgrk3 -->
+<!ENTITY delta    "&#948;"> <!-- greek small letter delta,
+                                    U+03B4 ISOgrk3 -->
+<!ENTITY epsilon  "&#949;"> <!-- greek small letter epsilon,
+                                    U+03B5 ISOgrk3 -->
+<!ENTITY zeta     "&#950;"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
+<!ENTITY eta      "&#951;"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
+<!ENTITY theta    "&#952;"> <!-- greek small letter theta,
+                                    U+03B8 ISOgrk3 -->
+<!ENTITY iota     "&#953;"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
+<!ENTITY kappa    "&#954;"> <!-- greek small letter kappa,
+                                    U+03BA ISOgrk3 -->
+<!ENTITY lambda   "&#955;"> <!-- greek small letter lamda,
+                                    U+03BB ISOgrk3 -->
+<!ENTITY mu       "&#956;"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
+<!ENTITY nu       "&#957;"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
+<!ENTITY xi       "&#958;"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
+<!ENTITY omicron  "&#959;"> <!-- greek small letter omicron, U+03BF NEW -->
+<!ENTITY pi       "&#960;"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
+<!ENTITY rho      "&#961;"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
+<!ENTITY sigmaf   "&#962;"> <!-- greek small letter final sigma,
+                                    U+03C2 ISOgrk3 -->
+<!ENTITY sigma    "&#963;"> <!-- greek small letter sigma,
+                                    U+03C3 ISOgrk3 -->
+<!ENTITY tau      "&#964;"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
+<!ENTITY upsilon  "&#965;"> <!-- greek small letter upsilon,
+                                    U+03C5 ISOgrk3 -->
+<!ENTITY phi      "&#966;"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
+<!ENTITY chi      "&#967;"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
+<!ENTITY psi      "&#968;"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
+<!ENTITY omega    "&#969;"> <!-- greek small letter omega,
+                                    U+03C9 ISOgrk3 -->
+<!ENTITY thetasym "&#977;"> <!-- greek theta symbol,
+                                    U+03D1 NEW -->
+<!ENTITY upsih    "&#978;"> <!-- greek upsilon with hook symbol,
+                                    U+03D2 NEW -->
+<!ENTITY piv      "&#982;"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
+
+<!-- General Punctuation -->
+<!ENTITY bull     "&#8226;"> <!-- bullet = black small circle,
+                                     U+2022 ISOpub  -->
+<!-- bullet is NOT the same as bullet operator, U+2219 -->
+<!ENTITY hellip   "&#8230;"> <!-- horizontal ellipsis = three dot leader,
+                                     U+2026 ISOpub  -->
+<!ENTITY prime    "&#8242;"> <!-- prime = minutes = feet, U+2032 ISOtech -->
+<!ENTITY Prime    "&#8243;"> <!-- double prime = seconds = inches,
+                                     U+2033 ISOtech -->
+<!ENTITY oline    "&#8254;"> <!-- overline = spacing overscore,
+                                     U+203E NEW -->
+<!ENTITY frasl    "&#8260;"> <!-- fraction slash, U+2044 NEW -->
+
+<!-- Letterlike Symbols -->
+<!ENTITY weierp   "&#8472;"> <!-- script capital P = power set
+                                     = Weierstrass p, U+2118 ISOamso -->
+<!ENTITY image    "&#8465;"> <!-- black-letter capital I = imaginary part,
+                                     U+2111 ISOamso -->
+<!ENTITY real     "&#8476;"> <!-- black-letter capital R = real part symbol,
+                                     U+211C ISOamso -->
+<!ENTITY trade    "&#8482;"> <!-- trade mark sign, U+2122 ISOnum -->
+<!ENTITY alefsym  "&#8501;"> <!-- alef symbol = first transfinite cardinal,
+                                     U+2135 NEW -->
+<!-- alef symbol is NOT the same as hebrew letter alef,
+     U+05D0 although the same glyph could be used to depict both characters -->
+
+<!-- Arrows -->
+<!ENTITY larr     "&#8592;"> <!-- leftwards arrow, U+2190 ISOnum -->
+<!ENTITY uarr     "&#8593;"> <!-- upwards arrow, U+2191 ISOnum-->
+<!ENTITY rarr     "&#8594;"> <!-- rightwards arrow, U+2192 ISOnum -->
+<!ENTITY darr     "&#8595;"> <!-- downwards arrow, U+2193 ISOnum -->
+<!ENTITY harr     "&#8596;"> <!-- left right arrow, U+2194 ISOamsa -->
+<!ENTITY crarr    "&#8629;"> <!-- downwards arrow with corner leftwards
+                                     = carriage return, U+21B5 NEW -->
+<!ENTITY lArr     "&#8656;"> <!-- leftwards double arrow, U+21D0 ISOtech -->
+<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
+    but also does not have any other character for that function. So lArr can
+    be used for 'is implied by' as ISOtech suggests -->
+<!ENTITY uArr     "&#8657;"> <!-- upwards double arrow, U+21D1 ISOamsa -->
+<!ENTITY rArr     "&#8658;"> <!-- rightwards double arrow,
+                                     U+21D2 ISOtech -->
+<!-- Unicode does not say this is the 'implies' character but does not have 
+     another character with this function so rArr can be used for 'implies'
+     as ISOtech suggests -->
+<!ENTITY dArr     "&#8659;"> <!-- downwards double arrow, U+21D3 ISOamsa -->
+<!ENTITY hArr     "&#8660;"> <!-- left right double arrow,
+                                     U+21D4 ISOamsa -->
+
+<!-- Mathematical Operators -->
+<!ENTITY forall   "&#8704;"> <!-- for all, U+2200 ISOtech -->
+<!ENTITY part     "&#8706;"> <!-- partial differential, U+2202 ISOtech  -->
+<!ENTITY exist    "&#8707;"> <!-- there exists, U+2203 ISOtech -->
+<!ENTITY empty    "&#8709;"> <!-- empty set = null set, U+2205 ISOamso -->
+<!ENTITY nabla    "&#8711;"> <!-- nabla = backward difference,
+                                     U+2207 ISOtech -->
+<!ENTITY isin     "&#8712;"> <!-- element of, U+2208 ISOtech -->
+<!ENTITY notin    "&#8713;"> <!-- not an element of, U+2209 ISOtech -->
+<!ENTITY ni       "&#8715;"> <!-- contains as member, U+220B ISOtech -->
+<!ENTITY prod     "&#8719;"> <!-- n-ary product = product sign,
+                                     U+220F ISOamsb -->
+<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
+     the same glyph might be used for both -->
+<!ENTITY sum      "&#8721;"> <!-- n-ary summation, U+2211 ISOamsb -->
+<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
+     though the same glyph might be used for both -->
+<!ENTITY minus    "&#8722;"> <!-- minus sign, U+2212 ISOtech -->
+<!ENTITY lowast   "&#8727;"> <!-- asterisk operator, U+2217 ISOtech -->
+<!ENTITY radic    "&#8730;"> <!-- square root = radical sign,
+                                     U+221A ISOtech -->
+<!ENTITY prop     "&#8733;"> <!-- proportional to, U+221D ISOtech -->
+<!ENTITY infin    "&#8734;"> <!-- infinity, U+221E ISOtech -->
+<!ENTITY ang      "&#8736;"> <!-- angle, U+2220 ISOamso -->
+<!ENTITY and      "&#8743;"> <!-- logical and = wedge, U+2227 ISOtech -->
+<!ENTITY or       "&#8744;"> <!-- logical or = vee, U+2228 ISOtech -->
+<!ENTITY cap      "&#8745;"> <!-- intersection = cap, U+2229 ISOtech -->
+<!ENTITY cup      "&#8746;"> <!-- union = cup, U+222A ISOtech -->
+<!ENTITY int      "&#8747;"> <!-- integral, U+222B ISOtech -->
+<!ENTITY there4   "&#8756;"> <!-- therefore, U+2234 ISOtech -->
+<!ENTITY sim      "&#8764;"> <!-- tilde operator = varies with = similar to,
+                                     U+223C ISOtech -->
+<!-- tilde operator is NOT the same character as the tilde, U+007E,
+     although the same glyph might be used to represent both  -->
+<!ENTITY cong     "&#8773;"> <!-- approximately equal to, U+2245 ISOtech -->
+<!ENTITY asymp    "&#8776;"> <!-- almost equal to = asymptotic to,
+                                     U+2248 ISOamsr -->
+<!ENTITY ne       "&#8800;"> <!-- not equal to, U+2260 ISOtech -->
+<!ENTITY equiv    "&#8801;"> <!-- identical to, U+2261 ISOtech -->
+<!ENTITY le       "&#8804;"> <!-- less-than or equal to, U+2264 ISOtech -->
+<!ENTITY ge       "&#8805;"> <!-- greater-than or equal to,
+                                     U+2265 ISOtech -->
+<!ENTITY sub      "&#8834;"> <!-- subset of, U+2282 ISOtech -->
+<!ENTITY sup      "&#8835;"> <!-- superset of, U+2283 ISOtech -->
+<!ENTITY nsub     "&#8836;"> <!-- not a subset of, U+2284 ISOamsn -->
+<!ENTITY sube     "&#8838;"> <!-- subset of or equal to, U+2286 ISOtech -->
+<!ENTITY supe     "&#8839;"> <!-- superset of or equal to,
+                                     U+2287 ISOtech -->
+<!ENTITY oplus    "&#8853;"> <!-- circled plus = direct sum,
+                                     U+2295 ISOamsb -->
+<!ENTITY otimes   "&#8855;"> <!-- circled times = vector product,
+                                     U+2297 ISOamsb -->
+<!ENTITY perp     "&#8869;"> <!-- up tack = orthogonal to = perpendicular,
+                                     U+22A5 ISOtech -->
+<!ENTITY sdot     "&#8901;"> <!-- dot operator, U+22C5 ISOamsb -->
+<!-- dot operator is NOT the same character as U+00B7 middle dot -->
+
+<!-- Miscellaneous Technical -->
+<!ENTITY lceil    "&#8968;"> <!-- left ceiling = APL upstile,
+                                     U+2308 ISOamsc  -->
+<!ENTITY rceil    "&#8969;"> <!-- right ceiling, U+2309 ISOamsc  -->
+<!ENTITY lfloor   "&#8970;"> <!-- left floor = APL downstile,
+                                     U+230A ISOamsc  -->
+<!ENTITY rfloor   "&#8971;"> <!-- right floor, U+230B ISOamsc  -->
+<!ENTITY lang     "&#9001;"> <!-- left-pointing angle bracket = bra,
+                                     U+2329 ISOtech -->
+<!-- lang is NOT the same character as U+003C 'less than sign' 
+     or U+2039 'single left-pointing angle quotation mark' -->
+<!ENTITY rang     "&#9002;"> <!-- right-pointing angle bracket = ket,
+                                     U+232A ISOtech -->
+<!-- rang is NOT the same character as U+003E 'greater than sign' 
+     or U+203A 'single right-pointing angle quotation mark' -->
+
+<!-- Geometric Shapes -->
+<!ENTITY loz      "&#9674;"> <!-- lozenge, U+25CA ISOpub -->
+
+<!-- Miscellaneous Symbols -->
+<!ENTITY spades   "&#9824;"> <!-- black spade suit, U+2660 ISOpub -->
+<!-- black here seems to mean filled as opposed to hollow -->
+<!ENTITY clubs    "&#9827;"> <!-- black club suit = shamrock,
+                                     U+2663 ISOpub -->
+<!ENTITY hearts   "&#9829;"> <!-- black heart suit = valentine,
+                                     U+2665 ISOpub -->
+<!ENTITY diams    "&#9830;"> <!-- black diamond suit, U+2666 ISOpub -->
+
+<!-- Special characters for XHTML -->
+
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % HTMLspecial PUBLIC
+        "-//W3C//ENTITIES Special for XHTML//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
+     %HTMLspecial;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 list) do not clash with any
+     existing ISO 8879 entity names. ISO 10646 character numbers
+     are given for each character, in hex. values are decimal
+     conversions of the ISO 10646 values and refer to the document
+     character set. Names are Unicode names. 
+-->
+
+<!-- C0 Controls and Basic Latin -->
+<!ENTITY quot    "&#34;"> <!--  quotation mark, U+0022 ISOnum -->
+<!ENTITY amp     "&#38;#38;"> <!--  ampersand, U+0026 ISOnum -->
+<!ENTITY lt      "&#38;#60;"> <!--  less-than sign, U+003C ISOnum -->
+<!ENTITY gt      "&#62;"> <!--  greater-than sign, U+003E ISOnum -->
+<!ENTITY apos   "&#39;"> <!--  apostrophe = APL quote, U+0027 ISOnum -->
+
+<!-- Latin Extended-A -->
+<!ENTITY OElig   "&#338;"> <!--  latin capital ligature OE,
+                                    U+0152 ISOlat2 -->
+<!ENTITY oelig   "&#339;"> <!--  latin small ligature oe, U+0153 ISOlat2 -->
+<!-- ligature is a misnomer, this is a separate character in some languages -->
+<!ENTITY Scaron  "&#352;"> <!--  latin capital letter S with caron,
+                                    U+0160 ISOlat2 -->
+<!ENTITY scaron  "&#353;"> <!--  latin small letter s with caron,
+                                    U+0161 ISOlat2 -->
+<!ENTITY Yuml    "&#376;"> <!--  latin capital letter Y with diaeresis,
+                                    U+0178 ISOlat2 -->
+
+<!-- Spacing Modifier Letters -->
+<!ENTITY circ    "&#710;"> <!--  modifier letter circumflex accent,
+                                    U+02C6 ISOpub -->
+<!ENTITY tilde   "&#732;"> <!--  small tilde, U+02DC ISOdia -->
+
+<!-- General Punctuation -->
+<!ENTITY ensp    "&#8194;"> <!-- en space, U+2002 ISOpub -->
+<!ENTITY emsp    "&#8195;"> <!-- em space, U+2003 ISOpub -->
+<!ENTITY thinsp  "&#8201;"> <!-- thin space, U+2009 ISOpub -->
+<!ENTITY zwnj    "&#8204;"> <!-- zero width non-joiner,
+                                    U+200C NEW RFC 2070 -->
+<!ENTITY zwj     "&#8205;"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
+<!ENTITY lrm     "&#8206;"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
+<!ENTITY rlm     "&#8207;"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
+<!ENTITY ndash   "&#8211;"> <!-- en dash, U+2013 ISOpub -->
+<!ENTITY mdash   "&#8212;"> <!-- em dash, U+2014 ISOpub -->
+<!ENTITY lsquo   "&#8216;"> <!-- left single quotation mark,
+                                    U+2018 ISOnum -->
+<!ENTITY rsquo   "&#8217;"> <!-- right single quotation mark,
+                                    U+2019 ISOnum -->
+<!ENTITY sbquo   "&#8218;"> <!-- single low-9 quotation mark, U+201A NEW -->
+<!ENTITY ldquo   "&#8220;"> <!-- left double quotation mark,
+                                    U+201C ISOnum -->
+<!ENTITY rdquo   "&#8221;"> <!-- right double quotation mark,
+                                    U+201D ISOnum -->
+<!ENTITY bdquo   "&#8222;"> <!-- double low-9 quotation mark, U+201E NEW -->
+<!ENTITY dagger  "&#8224;"> <!-- dagger, U+2020 ISOpub -->
+<!ENTITY Dagger  "&#8225;"> <!-- double dagger, U+2021 ISOpub -->
+<!ENTITY permil  "&#8240;"> <!-- per mille sign, U+2030 ISOtech -->
+<!ENTITY lsaquo  "&#8249;"> <!-- single left-pointing angle quotation mark,
+                                    U+2039 ISO proposed -->
+<!-- lsaquo is proposed but not yet ISO standardized -->
+<!ENTITY rsaquo  "&#8250;"> <!-- single right-pointing angle quotation mark,
+                                    U+203A ISO proposed -->
+<!-- rsaquo is proposed but not yet ISO standardized -->
+
+<!-- Currency Symbols -->
+<!ENTITY euro   "&#8364;"> <!--  euro sign, U+20AC NEW -->
+
+<!--================== Imported Names ====================================-->
+
+<!ENTITY % ContentType "CDATA">
+    <!-- media type, as per [RFC2045] -->
+
+<!ENTITY % ContentTypes "CDATA">
+    <!-- comma-separated list of media types, as per [RFC2045] -->
+
+<!ENTITY % Charset "CDATA">
+    <!-- a character encoding, as per [RFC2045] -->
+
+<!ENTITY % Charsets "CDATA">
+    <!-- a space separated list of character encodings, as per [RFC2045] -->
+
+<!ENTITY % LanguageCode "NMTOKEN">
+    <!-- a language code, as per [RFC3066] -->
+
+<!ENTITY % Character "CDATA">
+    <!-- a single character, as per section 2.2 of [XML] -->
+
+<!ENTITY % Number "CDATA">
+    <!-- one or more digits -->
+
+<!ENTITY % LinkTypes "CDATA">
+    <!-- space-separated list of link types -->
+
+<!ENTITY % MediaDesc "CDATA">
+    <!-- single or comma-separated list of media descriptors -->
+
+<!ENTITY % URI "CDATA">
+    <!-- a Uniform Resource Identifier, see [RFC2396] -->
+
+<!ENTITY % UriList "CDATA">
+    <!-- a space separated list of Uniform Resource Identifiers -->
+
+<!ENTITY % Datetime "CDATA">
+    <!-- date and time information. ISO date format -->
+
+<!ENTITY % Script "CDATA">
+    <!-- script expression -->
+
+<!ENTITY % StyleSheet "CDATA">
+    <!-- style sheet data -->
+
+<!ENTITY % Text "CDATA">
+    <!-- used for titles etc. -->
+
+<!ENTITY % FrameTarget "NMTOKEN">
+    <!-- render in this frame -->
+
+<!ENTITY % Length "CDATA">
+    <!-- nn for pixels or nn% for percentage length -->
+
+<!ENTITY % MultiLength "CDATA">
+    <!-- pixel, percentage, or relative -->
+
+<!ENTITY % Pixels "CDATA">
+    <!-- integer representing length in pixels -->
+
+<!-- these are used for image maps -->
+
+<!ENTITY % Shape "(rect|circle|poly|default)">
+
+<!ENTITY % Coords "CDATA">
+    <!-- comma separated list of lengths -->
+
+<!-- used for object, applet, img, input and iframe -->
+<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
+
+<!-- a color using sRGB: #RRGGBB as Hex values -->
+<!ENTITY % Color "CDATA">
+
+<!-- There are also 16 widely known color names with their sRGB values:
+
+    Black  = #000000    Green  = #008000
+    Silver = #C0C0C0    Lime   = #00FF00
+    Gray   = #808080    Olive  = #808000
+    White  = #FFFFFF    Yellow = #FFFF00
+    Maroon = #800000    Navy   = #000080
+    Red    = #FF0000    Blue   = #0000FF
+    Purple = #800080    Teal   = #008080
+    Fuchsia= #FF00FF    Aqua   = #00FFFF
+-->
+
+<!--=================== Generic Attributes ===============================-->
+
+<!-- core attributes common to most elements
+  id       document-wide unique id
+  class    space separated list of classes
+  style    associated style info
+  title    advisory title/amplification
+-->
+<!ENTITY % coreattrs
+ "id          ID             #IMPLIED
+  class       CDATA          #IMPLIED
+  style       %StyleSheet;   #IMPLIED
+  title       %Text;         #IMPLIED"
+  >
+
+<!-- internationalization attributes
+  lang        language code (backwards compatible)
+  xml:lang    language code (as per XML 1.0 spec)
+  dir         direction for weak/neutral text
+-->
+<!ENTITY % i18n
+ "lang        %LanguageCode; #IMPLIED
+  xml:lang    %LanguageCode; #IMPLIED
+  dir         (ltr|rtl)      #IMPLIED"
+  >
+
+<!-- attributes for common UI events
+  onclick     a pointer button was clicked
+  ondblclick  a pointer button was double clicked
+  onmousedown a pointer button was pressed down
+  onmouseup   a pointer button was released
+  onmousemove a pointer was moved onto the element
+  onmouseout  a pointer was moved away from the element
+  onkeypress  a key was pressed and released
+  onkeydown   a key was pressed down
+  onkeyup     a key was released
+-->
+<!ENTITY % events
+ "onclick     %Script;       #IMPLIED
+  ondblclick  %Script;       #IMPLIED
+  onmousedown %Script;       #IMPLIED
+  onmouseup   %Script;       #IMPLIED
+  onmouseover %Script;       #IMPLIED
+  onmousemove %Script;       #IMPLIED
+  onmouseout  %Script;       #IMPLIED
+  onkeypress  %Script;       #IMPLIED
+  onkeydown   %Script;       #IMPLIED
+  onkeyup     %Script;       #IMPLIED"
+  >
+
+<!-- attributes for elements that can get the focus
+  accesskey   accessibility key character
+  tabindex    position in tabbing order
+  onfocus     the element got the focus
+  onblur      the element lost the focus
+-->
+<!ENTITY % focus
+ "accesskey   %Character;    #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED"
+  >
+
+<!ENTITY % attrs "%coreattrs; %i18n; %events;">
+
+<!-- text alignment for p, div, h1-h6. The default is
+     align="left" for ltr headings, "right" for rtl -->
+
+<!ENTITY % TextAlign "align (left|center|right|justify) #IMPLIED">
+
+<!--=================== Text Elements ====================================-->
+
+<!ENTITY % special.extra
+   "object | applet | img | map | iframe">
+       
+<!ENTITY % special.basic
+       "br | span | bdo">
+
+<!ENTITY % special
+   "%special.basic; | %special.extra;">
+
+<!ENTITY % fontstyle.extra "big | small | font | basefont">
+
+<!ENTITY % fontstyle.basic "tt | i | b | u
+                      | s | strike ">
+
+<!ENTITY % fontstyle "%fontstyle.basic; | %fontstyle.extra;">
+
+<!ENTITY % phrase.extra "sub | sup">
+<!ENTITY % phrase.basic "em | strong | dfn | code | q |
+                   samp | kbd | var | cite | abbr | acronym">
+
+<!ENTITY % phrase "%phrase.basic; | %phrase.extra;">
+
+<!ENTITY % inline.forms "input | select | textarea | label | button">
+
+<!-- these can occur at block or inline level -->
+<!ENTITY % misc.inline "ins | del | script">
+
+<!-- these can only occur at block level -->
+<!ENTITY % misc "noscript | %misc.inline;">
+
+<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
+
+<!-- %Inline; covers inline or "text-level" elements -->
+<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
+
+<!--================== Block level elements ==============================-->
+
+<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
+<!ENTITY % lists "ul | ol | dl | menu | dir">
+<!ENTITY % blocktext "pre | hr | blockquote | address | center | noframes">
+
+<!ENTITY % block
+    "p | %heading; | div | %lists; | %blocktext; | isindex |fieldset | table">
+
+<!-- %Flow; mixes block and inline and is used for list items etc. -->
+<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
+
+<!--================== Content models for exclusions =====================-->
+
+<!-- a elements use %Inline; excluding a -->
+
+<!ENTITY % a.content
+   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
+
+<!-- pre uses %Inline excluding img, object, applet, big, small,
+     font, or basefont -->
+
+<!ENTITY % pre.content
+   "(#PCDATA | a | %special.basic; | %fontstyle.basic; | %phrase.basic; |
+          %inline.forms; | %misc.inline;)*">
+
+<!-- form uses %Flow; excluding form -->
+
+<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
+
+<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
+
+<!ENTITY % button.content
+   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
+      table | br | span | bdo | object | applet | img | map |
+      %fontstyle; | %phrase; | %misc;)*">
+
+<!--================ Document Structure ==================================-->
+
+<!-- the namespace URI designates the document profile -->
+
+<!ELEMENT html (head, body)>
+<!ATTLIST html
+  %i18n;
+  id          ID             #IMPLIED
+  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
+  >
+
+<!--================ Document Head =======================================-->
+
+<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
+
+<!-- content model is %head.misc; combined with a single
+     title and an optional base element in any order -->
+
+<!ELEMENT head (%head.misc;,
+     ((title, %head.misc;, (base, %head.misc;)?) |
+      (base, %head.misc;, (title, %head.misc;))))>
+
+<!ATTLIST head
+  %i18n;
+  id          ID             #IMPLIED
+  profile     %URI;          #IMPLIED
+  >
+
+<!-- The title element is not considered part of the flow of text.
+       It should be displayed, for example as the page header or
+       window title. Exactly one title is required per document.
+    -->
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title 
+  %i18n;
+  id          ID             #IMPLIED
+  >
+
+<!-- document base URI -->
+
+<!ELEMENT base EMPTY>
+<!ATTLIST base
+  id          ID             #IMPLIED
+  href        %URI;          #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!-- generic metainformation -->
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+  %i18n;
+  id          ID             #IMPLIED
+  http-equiv  CDATA          #IMPLIED
+  name        CDATA          #IMPLIED
+  content     CDATA          #REQUIRED
+  scheme      CDATA          #IMPLIED
+  >
+
+<!--
+  Relationship values can be used in principle:
+
+   a) for document specific toolbars/menus when used
+      with the link element in document head e.g.
+        start, contents, previous, next, index, end, help
+   b) to link to a separate style sheet (rel="stylesheet")
+   c) to make a link to a script (rel="script")
+   d) by stylesheets to control how collections of
+      html nodes are rendered into printed documents
+   e) to make a link to a printable version of this document
+      e.g. a PostScript or PDF version (rel="alternate" media="print")
+-->
+
+<!ELEMENT link EMPTY>
+<!ATTLIST link
+  %attrs;
+  charset     %Charset;      #IMPLIED
+  href        %URI;          #IMPLIED
+  hreflang    %LanguageCode; #IMPLIED
+  type        %ContentType;  #IMPLIED
+  rel         %LinkTypes;    #IMPLIED
+  rev         %LinkTypes;    #IMPLIED
+  media       %MediaDesc;    #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!-- style info, which may include CDATA sections -->
+<!ELEMENT style (#PCDATA)>
+<!ATTLIST style
+  %i18n;
+  id          ID             #IMPLIED
+  type        %ContentType;  #REQUIRED
+  media       %MediaDesc;    #IMPLIED
+  title       %Text;         #IMPLIED
+  xml:space   (preserve)     #FIXED 'preserve'
+  >
+
+<!-- script statements, which may include CDATA sections -->
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+  id          ID             #IMPLIED
+  charset     %Charset;      #IMPLIED
+  type        %ContentType;  #REQUIRED
+  language    CDATA          #IMPLIED
+  src         %URI;          #IMPLIED
+  defer       (defer)        #IMPLIED
+  xml:space   (preserve)     #FIXED 'preserve'
+  >
+
+<!-- alternate content container for non script-based rendering -->
+
+<!ELEMENT noscript %Flow;>
+<!ATTLIST noscript
+  %attrs;
+  >
+
+<!--======================= Frames =======================================-->
+
+<!-- inline subwindow -->
+
+<!ELEMENT iframe %Flow;>
+<!ATTLIST iframe
+  %coreattrs;
+  longdesc    %URI;          #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  src         %URI;          #IMPLIED
+  frameborder (1|0)          "1"
+  marginwidth %Pixels;       #IMPLIED
+  marginheight %Pixels;      #IMPLIED
+  scrolling   (yes|no|auto)  "auto"
+  align       %ImgAlign;     #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  >
+
+<!-- alternate content container for non frame-based rendering -->
+
+<!ELEMENT noframes %Flow;>
+<!ATTLIST noframes
+  %attrs;
+  >
+
+<!--=================== Document Body ====================================-->
+
+<!ELEMENT body %Flow;>
+<!ATTLIST body
+  %attrs;
+  onload      %Script;       #IMPLIED
+  onunload    %Script;       #IMPLIED
+  background  %URI;          #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  text        %Color;        #IMPLIED
+  link        %Color;        #IMPLIED
+  vlink       %Color;        #IMPLIED
+  alink       %Color;        #IMPLIED
+  >
+
+<!ELEMENT div %Flow;>  <!-- generic language/style container -->
+<!ATTLIST div
+  %attrs;
+  %TextAlign;
+  >
+
+<!--=================== Paragraphs =======================================-->
+
+<!ELEMENT p %Inline;>
+<!ATTLIST p
+  %attrs;
+  %TextAlign;
+  >
+
+<!--=================== Headings =========================================-->
+
+<!--
+  There are six levels of headings from h1 (the most important)
+  to h6 (the least important).
+-->
+
+<!ELEMENT h1  %Inline;>
+<!ATTLIST h1
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h2 %Inline;>
+<!ATTLIST h2
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h3 %Inline;>
+<!ATTLIST h3
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h4 %Inline;>
+<!ATTLIST h4
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h5 %Inline;>
+<!ATTLIST h5
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h6 %Inline;>
+<!ATTLIST h6
+  %attrs;
+  %TextAlign;
+  >
+
+<!--=================== Lists ============================================-->
+
+<!-- Unordered list bullet styles -->
+
+<!ENTITY % ULStyle "(disc|square|circle)">
+
+<!-- Unordered list -->
+
+<!ELEMENT ul (li)+>
+<!ATTLIST ul
+  %attrs;
+  type        %ULStyle;     #IMPLIED
+  compact     (compact)     #IMPLIED
+  >
+
+<!-- Ordered list numbering style
+
+    1   arabic numbers      1, 2, 3, ...
+    a   lower alpha         a, b, c, ...
+    A   upper alpha         A, B, C, ...
+    i   lower roman         i, ii, iii, ...
+    I   upper roman         I, II, III, ...
+
+    The style is applied to the sequence number which by default
+    is reset to 1 for the first list item in an ordered list.
+-->
+<!ENTITY % OLStyle "CDATA">
+
+<!-- Ordered (numbered) list -->
+
+<!ELEMENT ol (li)+>
+<!ATTLIST ol
+  %attrs;
+  type        %OLStyle;      #IMPLIED
+  compact     (compact)      #IMPLIED
+  start       %Number;       #IMPLIED
+  >
+
+<!-- single column list (DEPRECATED) --> 
+<!ELEMENT menu (li)+>
+<!ATTLIST menu
+  %attrs;
+  compact     (compact)     #IMPLIED
+  >
+
+<!-- multiple column list (DEPRECATED) --> 
+<!ELEMENT dir (li)+>
+<!ATTLIST dir
+  %attrs;
+  compact     (compact)     #IMPLIED
+  >
+
+<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
+<!ENTITY % LIStyle "CDATA">
+
+<!-- list item -->
+
+<!ELEMENT li %Flow;>
+<!ATTLIST li
+  %attrs;
+  type        %LIStyle;      #IMPLIED
+  value       %Number;       #IMPLIED
+  >
+
+<!-- definition lists - dt for term, dd for its definition -->
+
+<!ELEMENT dl (dt|dd)+>
+<!ATTLIST dl
+  %attrs;
+  compact     (compact)      #IMPLIED
+  >
+
+<!ELEMENT dt %Inline;>
+<!ATTLIST dt
+  %attrs;
+  >
+
+<!ELEMENT dd %Flow;>
+<!ATTLIST dd
+  %attrs;
+  >
+
+<!--=================== Address ==========================================-->
+
+<!-- information on author -->
+
+<!ELEMENT address (#PCDATA | %inline; | %misc.inline; | p)*>
+<!ATTLIST address
+  %attrs;
+  >
+
+<!--=================== Horizontal Rule ==================================-->
+
+<!ELEMENT hr EMPTY>
+<!ATTLIST hr
+  %attrs;
+  align       (left|center|right) #IMPLIED
+  noshade     (noshade)      #IMPLIED
+  size        %Pixels;       #IMPLIED
+  width       %Length;       #IMPLIED
+  >
+
+<!--=================== Preformatted Text ================================-->
+
+<!-- content is %Inline; excluding 
+        "img|object|applet|big|small|sub|sup|font|basefont" -->
+
+<!ELEMENT pre %pre.content;>
+<!ATTLIST pre
+  %attrs;
+  width       %Number;      #IMPLIED
+  xml:space   (preserve)    #FIXED 'preserve'
+  >
+
+<!--=================== Block-like Quotes ================================-->
+
+<!ELEMENT blockquote %Flow;>
+<!ATTLIST blockquote
+  %attrs;
+  cite        %URI;          #IMPLIED
+  >
+
+<!--=================== Text alignment ===================================-->
+
+<!-- center content -->
+<!ELEMENT center %Flow;>
+<!ATTLIST center
+  %attrs;
+  >
+
+<!--=================== Inserted/Deleted Text ============================-->
+
+<!--
+  ins/del are allowed in block and inline content, but its
+  inappropriate to include block content within an ins element
+  occurring in inline content.
+-->
+<!ELEMENT ins %Flow;>
+<!ATTLIST ins
+  %attrs;
+  cite        %URI;          #IMPLIED
+  datetime    %Datetime;     #IMPLIED
+  >
+
+<!ELEMENT del %Flow;>
+<!ATTLIST del
+  %attrs;
+  cite        %URI;          #IMPLIED
+  datetime    %Datetime;     #IMPLIED
+  >
+
+<!--================== The Anchor Element ================================-->
+
+<!-- content is %Inline; except that anchors shouldn't be nested -->
+
+<!ELEMENT a %a.content;>
+<!ATTLIST a
+  %attrs;
+  %focus;
+  charset     %Charset;      #IMPLIED
+  type        %ContentType;  #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  href        %URI;          #IMPLIED
+  hreflang    %LanguageCode; #IMPLIED
+  rel         %LinkTypes;    #IMPLIED
+  rev         %LinkTypes;    #IMPLIED
+  shape       %Shape;        "rect"
+  coords      %Coords;       #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!--===================== Inline Elements ================================-->
+
+<!ELEMENT span %Inline;> <!-- generic language/style container -->
+<!ATTLIST span
+  %attrs;
+  >
+
+<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
+<!ATTLIST bdo
+  %coreattrs;
+  %events;
+  lang        %LanguageCode; #IMPLIED
+  xml:lang    %LanguageCode; #IMPLIED
+  dir         (ltr|rtl)      #REQUIRED
+  >
+
+<!ELEMENT br EMPTY>   <!-- forced line break -->
+<!ATTLIST br
+  %coreattrs;
+  clear       (left|all|right|none) "none"
+  >
+
+<!ELEMENT em %Inline;>   <!-- emphasis -->
+<!ATTLIST em %attrs;>
+
+<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
+<!ATTLIST strong %attrs;>
+
+<!ELEMENT dfn %Inline;>   <!-- definitional -->
+<!ATTLIST dfn %attrs;>
+
+<!ELEMENT code %Inline;>   <!-- program code -->
+<!ATTLIST code %attrs;>
+
+<!ELEMENT samp %Inline;>   <!-- sample -->
+<!ATTLIST samp %attrs;>
+
+<!ELEMENT kbd %Inline;>  <!-- something user would type -->
+<!ATTLIST kbd %attrs;>
+
+<!ELEMENT var %Inline;>   <!-- variable -->
+<!ATTLIST var %attrs;>
+
+<!ELEMENT cite %Inline;>   <!-- citation -->
+<!ATTLIST cite %attrs;>
+
+<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
+<!ATTLIST abbr %attrs;>
+
+<!ELEMENT acronym %Inline;>   <!-- acronym -->
+<!ATTLIST acronym %attrs;>
+
+<!ELEMENT q %Inline;>   <!-- inlined quote -->
+<!ATTLIST q
+  %attrs;
+  cite        %URI;          #IMPLIED
+  >
+
+<!ELEMENT sub %Inline;> <!-- subscript -->
+<!ATTLIST sub %attrs;>
+
+<!ELEMENT sup %Inline;> <!-- superscript -->
+<!ATTLIST sup %attrs;>
+
+<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
+<!ATTLIST tt %attrs;>
+
+<!ELEMENT i %Inline;>   <!-- italic font -->
+<!ATTLIST i %attrs;>
+
+<!ELEMENT b %Inline;>   <!-- bold font -->
+<!ATTLIST b %attrs;>
+
+<!ELEMENT big %Inline;>   <!-- bigger font -->
+<!ATTLIST big %attrs;>
+
+<!ELEMENT small %Inline;>   <!-- smaller font -->
+<!ATTLIST small %attrs;>
+
+<!ELEMENT u %Inline;>   <!-- underline -->
+<!ATTLIST u %attrs;>
+
+<!ELEMENT s %Inline;>   <!-- strike-through -->
+<!ATTLIST s %attrs;>
+
+<!ELEMENT strike %Inline;>   <!-- strike-through -->
+<!ATTLIST strike %attrs;>
+
+<!ELEMENT basefont EMPTY>  <!-- base font size -->
+<!ATTLIST basefont
+  id          ID             #IMPLIED
+  size        CDATA          #REQUIRED
+  color       %Color;        #IMPLIED
+  face        CDATA          #IMPLIED
+  >
+
+<!ELEMENT font %Inline;> <!-- local change to font -->
+<!ATTLIST font
+  %coreattrs;
+  %i18n;
+  size        CDATA          #IMPLIED
+  color       %Color;        #IMPLIED
+  face        CDATA          #IMPLIED
+  >
+
+<!--==================== Object ======================================-->
+<!--
+  object is used to embed objects as part of HTML pages.
+  param elements should precede other content. Parameters
+  can also be expressed as attribute/value pairs on the
+  object element itself when brevity is desired.
+-->
+
+<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST object
+  %attrs;
+  declare     (declare)      #IMPLIED
+  classid     %URI;          #IMPLIED
+  codebase    %URI;          #IMPLIED
+  data        %URI;          #IMPLIED
+  type        %ContentType;  #IMPLIED
+  codetype    %ContentType;  #IMPLIED
+  archive     %UriList;      #IMPLIED
+  standby     %Text;         #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  usemap      %URI;          #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  align       %ImgAlign;     #IMPLIED
+  border      %Pixels;       #IMPLIED
+  hspace      %Pixels;       #IMPLIED
+  vspace      %Pixels;       #IMPLIED
+  >
+
+<!--
+  param is used to supply a named property value.
+  In XML it would seem natural to follow RDF and support an
+  abbreviated syntax where the param elements are replaced
+  by attribute value pairs on the object start tag.
+-->
+<!ELEMENT param EMPTY>
+<!ATTLIST param
+  id          ID             #IMPLIED
+  name        CDATA          #REQUIRED
+  value       CDATA          #IMPLIED
+  valuetype   (data|ref|object) "data"
+  type        %ContentType;  #IMPLIED
+  >
+
+<!--=================== Java applet ==================================-->
+<!--
+  One of code or object attributes must be present.
+  Place param elements before other content.
+-->
+<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST applet
+  %coreattrs;
+  codebase    %URI;          #IMPLIED
+  archive     CDATA          #IMPLIED
+  code        CDATA          #IMPLIED
+  object      CDATA          #IMPLIED
+  alt         %Text;         #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  width       %Length;       #REQUIRED
+  height      %Length;       #REQUIRED
+  align       %ImgAlign;     #IMPLIED
+  hspace      %Pixels;       #IMPLIED
+  vspace      %Pixels;       #IMPLIED
+  >
+
+<!--=================== Images ===========================================-->
+
+<!--
+   To avoid accessibility problems for people who aren't
+   able to see the image, you should provide a text
+   description using the alt and longdesc attributes.
+   In addition, avoid the use of server-side image maps.
+-->
+
+<!ELEMENT img EMPTY>
+<!ATTLIST img
+  %attrs;
+  src         %URI;          #REQUIRED
+  alt         %Text;         #REQUIRED
+  name        NMTOKEN        #IMPLIED
+  longdesc    %URI;          #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  usemap      %URI;          #IMPLIED
+  ismap       (ismap)        #IMPLIED
+  align       %ImgAlign;     #IMPLIED
+  border      %Length;       #IMPLIED
+  hspace      %Pixels;       #IMPLIED
+  vspace      %Pixels;       #IMPLIED
+  >
+
+<!-- usemap points to a map element which may be in this document
+  or an external document, although the latter is not widely supported -->
+
+<!--================== Client-side image maps ============================-->
+
+<!-- These can be placed in the same document or grouped in a
+     separate document although this isn't yet widely supported -->
+
+<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
+<!ATTLIST map
+  %i18n;
+  %events;
+  id          ID             #REQUIRED
+  class       CDATA          #IMPLIED
+  style       %StyleSheet;   #IMPLIED
+  title       %Text;         #IMPLIED
+  name        CDATA          #IMPLIED
+  >
+
+<!ELEMENT area EMPTY>
+<!ATTLIST area
+  %attrs;
+  %focus;
+  shape       %Shape;        "rect"
+  coords      %Coords;       #IMPLIED
+  href        %URI;          #IMPLIED
+  nohref      (nohref)       #IMPLIED
+  alt         %Text;         #REQUIRED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!--================ Forms ===============================================-->
+
+<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
+
+<!ATTLIST form
+  %attrs;
+  action      %URI;          #REQUIRED
+  method      (get|post)     "get"
+  name        NMTOKEN        #IMPLIED
+  enctype     %ContentType;  "application/x-www-form-urlencoded"
+  onsubmit    %Script;       #IMPLIED
+  onreset     %Script;       #IMPLIED
+  accept      %ContentTypes; #IMPLIED
+  accept-charset %Charsets;  #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!--
+  Each label must not contain more than ONE field
+  Label elements shouldn't be nested.
+-->
+<!ELEMENT label %Inline;>
+<!ATTLIST label
+  %attrs;
+  for         IDREF          #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  >
+
+<!ENTITY % InputType
+  "(text | password | checkbox |
+    radio | submit | reset |
+    file | hidden | image | button)"
+   >
+
+<!-- the name attribute is required for all but submit & reset -->
+
+<!ELEMENT input EMPTY>     <!-- form control -->
+<!ATTLIST input
+  %attrs;
+  %focus;
+  type        %InputType;    "text"
+  name        CDATA          #IMPLIED
+  value       CDATA          #IMPLIED
+  checked     (checked)      #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  readonly    (readonly)     #IMPLIED
+  size        CDATA          #IMPLIED
+  maxlength   %Number;       #IMPLIED
+  src         %URI;          #IMPLIED
+  alt         CDATA          #IMPLIED
+  usemap      %URI;          #IMPLIED
+  onselect    %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  accept      %ContentTypes; #IMPLIED
+  align       %ImgAlign;     #IMPLIED
+  >
+
+<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
+<!ATTLIST select
+  %attrs;
+  name        CDATA          #IMPLIED
+  size        %Number;       #IMPLIED
+  multiple    (multiple)     #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  >
+
+<!ELEMENT optgroup (option)+>   <!-- option group -->
+<!ATTLIST optgroup
+  %attrs;
+  disabled    (disabled)     #IMPLIED
+  label       %Text;         #REQUIRED
+  >
+
+<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
+<!ATTLIST option
+  %attrs;
+  selected    (selected)     #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  label       %Text;         #IMPLIED
+  value       CDATA          #IMPLIED
+  >
+
+<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
+<!ATTLIST textarea
+  %attrs;
+  %focus;
+  name        CDATA          #IMPLIED
+  rows        %Number;       #REQUIRED
+  cols        %Number;       #REQUIRED
+  disabled    (disabled)     #IMPLIED
+  readonly    (readonly)     #IMPLIED
+  onselect    %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  >
+
+<!--
+  The fieldset element is used to group form fields.
+  Only one legend element should occur in the content
+  and if present should only be preceded by whitespace.
+-->
+<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
+<!ATTLIST fieldset
+  %attrs;
+  >
+
+<!ENTITY % LAlign "(top|bottom|left|right)">
+
+<!ELEMENT legend %Inline;>     <!-- fieldset label -->
+<!ATTLIST legend
+  %attrs;
+  accesskey   %Character;    #IMPLIED
+  align       %LAlign;       #IMPLIED
+  >
+
+<!--
+ Content is %Flow; excluding a, form, form controls, iframe
+--> 
+<!ELEMENT button %button.content;>  <!-- push button -->
+<!ATTLIST button
+  %attrs;
+  %focus;
+  name        CDATA          #IMPLIED
+  value       CDATA          #IMPLIED
+  type        (button|submit|reset) "submit"
+  disabled    (disabled)     #IMPLIED
+  >
+
+<!-- single-line text input control (DEPRECATED) -->
+<!ELEMENT isindex EMPTY>
+<!ATTLIST isindex
+  %coreattrs;
+  %i18n;
+  prompt      %Text;         #IMPLIED
+  >
+
+<!--======================= Tables =======================================-->
+
+<!-- Derived from IETF HTML table standard, see [RFC1942] -->
+
+<!--
+ The border attribute sets the thickness of the frame around the
+ table. The default units are screen pixels.
+
+ The frame attribute specifies which parts of the frame around
+ the table should be rendered. The values are not the same as
+ CALS to avoid a name clash with the valign attribute.
+-->
+<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
+
+<!--
+ The rules attribute defines which rules to draw between cells:
+
+ If rules is absent then assume:
+     "none" if border is absent or border="0" otherwise "all"
+-->
+
+<!ENTITY % TRules "(none | groups | rows | cols | all)">
+  
+<!-- horizontal placement of table relative to document -->
+<!ENTITY % TAlign "(left|center|right)">
+
+<!-- horizontal alignment attributes for cell contents
+
+  char        alignment char, e.g. char=':'
+  charoff     offset for alignment char
+-->
+<!ENTITY % cellhalign
+  "align      (left|center|right|justify|char) #IMPLIED
+   char       %Character;    #IMPLIED
+   charoff    %Length;       #IMPLIED"
+  >
+
+<!-- vertical alignment attributes for cell contents -->
+<!ENTITY % cellvalign
+  "valign     (top|middle|bottom|baseline) #IMPLIED"
+  >
+
+<!ELEMENT table
+     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
+<!ELEMENT caption  %Inline;>
+<!ELEMENT thead    (tr)+>
+<!ELEMENT tfoot    (tr)+>
+<!ELEMENT tbody    (tr)+>
+<!ELEMENT colgroup (col)*>
+<!ELEMENT col      EMPTY>
+<!ELEMENT tr       (th|td)+>
+<!ELEMENT th       %Flow;>
+<!ELEMENT td       %Flow;>
+
+<!ATTLIST table
+  %attrs;
+  summary     %Text;         #IMPLIED
+  width       %Length;       #IMPLIED
+  border      %Pixels;       #IMPLIED
+  frame       %TFrame;       #IMPLIED
+  rules       %TRules;       #IMPLIED
+  cellspacing %Length;       #IMPLIED
+  cellpadding %Length;       #IMPLIED
+  align       %TAlign;       #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  >
+
+<!ENTITY % CAlign "(top|bottom|left|right)">
+
+<!ATTLIST caption
+  %attrs;
+  align       %CAlign;       #IMPLIED
+  >
+
+<!--
+colgroup groups a set of col elements. It allows you to group
+several semantically related columns together.
+-->
+<!ATTLIST colgroup
+  %attrs;
+  span        %Number;       "1"
+  width       %MultiLength;  #IMPLIED
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!--
+ col elements define the alignment properties for cells in
+ one or more columns.
+
+ The width attribute specifies the width of the columns, e.g.
+
+     width=64        width in screen pixels
+     width=0.5*      relative width of 0.5
+
+ The span attribute causes the attributes of one
+ col element to apply to more than one column.
+-->
+<!ATTLIST col
+  %attrs;
+  span        %Number;       "1"
+  width       %MultiLength;  #IMPLIED
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!--
+    Use thead to duplicate headers when breaking table
+    across page boundaries, or for static headers when
+    tbody sections are rendered in scrolling panel.
+
+    Use tfoot to duplicate footers when breaking table
+    across page boundaries, or for static footers when
+    tbody sections are rendered in scrolling panel.
+
+    Use multiple tbody sections when rules are needed
+    between groups of table rows.
+-->
+<!ATTLIST thead
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tfoot
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tbody
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tr
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  bgcolor     %Color;        #IMPLIED
+  >
+
+<!-- Scope is simpler than headers attribute for common tables -->
+<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
+
+<!-- th is for headers, td for data and for cells acting as both -->
+
+<!ATTLIST th
+  %attrs;
+  abbr        %Text;         #IMPLIED
+  axis        CDATA          #IMPLIED
+  headers     IDREFS         #IMPLIED
+  scope       %Scope;        #IMPLIED
+  rowspan     %Number;       "1"
+  colspan     %Number;       "1"
+  %cellhalign;
+  %cellvalign;
+  nowrap      (nowrap)       #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  width       %Length;       #IMPLIED
+  height      %Length;       #IMPLIED
+  >
+
+<!ATTLIST td
+  %attrs;
+  abbr        %Text;         #IMPLIED
+  axis        CDATA          #IMPLIED
+  headers     IDREFS         #IMPLIED
+  scope       %Scope;        #IMPLIED
+  rowspan     %Number;       "1"
+  colspan     %Number;       "1"
+  %cellhalign;
+  %cellvalign;
+  nowrap      (nowrap)       #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  width       %Length;       #IMPLIED
+  height      %Length;       #IMPLIED
+  >
+
diff --git a/helm/www/matita/docs/manual-0.5.9/xsl/matita-fo.xsl b/helm/www/matita/docs/manual-0.5.9/xsl/matita-fo.xsl
new file mode 100644 (file)
index 0000000..3e564b4
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+  <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/>
+  <xsl:output method="xml" encoding="utf-8" indent="yes"/>
+</xsl:stylesheet>
diff --git a/helm/www/matita/docs/manual-0.5.9/xsl/matita-xhtml.xsl b/helm/www/matita/docs/manual-0.5.9/xsl/matita-xhtml.xsl
new file mode 100644 (file)
index 0000000..008f669
--- /dev/null
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+  <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl"/>
+  <xsl:output method="xml" encoding="utf-8" indent="yes"/>
+
+  <xsl:param name="use.id.as.filename" select="1" />
+  <xsl:param name="html.stylesheet">docbook.css</xsl:param>
+  <xsl:param name="table.borders.with.css" select="1" />
+  <!--
+  <xsl:param name="header.rule" select="0" />
+  <xsl:param name="footer.rule" select="0" />
+  -->
+
+  <!-- more quiet output of author information -->
+
+  <xsl:template match="authorgroup" mode="titlepage.mode">
+    <ul class="authorgroup">
+      <xsl:apply-templates mode="matita.manual.mode" />
+    </ul>
+  </xsl:template>
+  <xsl:template match="author" mode="matita.manual.mode">
+    <li class="author">
+      <xsl:value-of select="firstname" />
+      <xsl:text> </xsl:text>
+      <xsl:value-of select="surname" />
+      <xsl:text> &lt;</xsl:text>
+      <xsl:element name="a">
+       <xsl:attribute name="href">
+         <xsl:text>mailto:</xsl:text>
+         <xsl:value-of select="affiliation/address/email" />
+       </xsl:attribute>
+       <xsl:value-of select="affiliation/address/email" />
+      </xsl:element>
+      <xsl:text>&gt;</xsl:text>
+    </li>
+  </xsl:template>
+
+  <!-- only print the latest revision instead of all of them -->
+  <!-- XXX ZACK: right now it just assumes that only one revision does exist -->
+
+  <xsl:template match="revhistory" mode="titlepage.mode">
+    <div class="revhistory">
+      <xsl:apply-templates mode="matita.manual.mode" />
+    </div>
+  </xsl:template>
+  <xsl:template match="revision" mode="matita.manual.mode">
+    <span class="revision">
+      <xsl:text>Revision: </xsl:text>
+      <span class="revnumber">
+       <xsl:value-of select="revnumber" />
+      </span>
+      <xsl:text>, </xsl:text>
+      <span class="date">
+       <xsl:value-of select="date" />
+      </span>
+    </span>
+  </xsl:template>
+
+  <!-- Matita logo on the top left corner -->
+
+  <xsl:template name="user.header.navigation">
+         <a href="../../../">
+      <div class="matita_logo">
+       <img src="figures/matita.png" alt="Tiny Matita logo" />
+       <span>Matita Home</span>
+      </div>
+    </a>
+  </xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/helm/www/matita/docs/manual-0.5.9/xsl/tactic_quickref.xsl b/helm/www/matita/docs/manual-0.5.9/xsl/tactic_quickref.xsl
new file mode 100644 (file)
index 0000000..3a46261
--- /dev/null
@@ -0,0 +1,75 @@
+<xsl:stylesheet version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <xsl:output
+    method="xml"
+    indent="yes"
+    omit-xml-declaration="yes"
+    />
+
+  <xsl:param name="declarative" value=""/>
+
+  <xsl:template match="/">
+    <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+      <title>tactics</title>
+      <tgroup cols="3">
+      <tbody>
+       <xsl:apply-templates select="//chapter[@id=concat('sec_',$declarative,'tactics')]//varlistentry[@role='tactic.synopsis']">
+        <xsl:sort select="ancestor::sect1/title" />
+       </xsl:apply-templates>
+      </tbody>
+     </tgroup>
+    </table>
+  </xsl:template>
+
+  <xsl:template match="varlistentry">
+
+    <xsl:variable name="tactic">
+      <xsl:value-of select="ancestor::sect1/title" />
+    </xsl:variable>
+
+    <row>
+      <entry>
+       <xsl:choose>
+        <xsl:when test="position()=1">
+         <xsl:attribute name="id">grammar.<xsl:value-of select="$declarative"/>tactic</xsl:attribute>
+         <xsl:text disable-output-escaping='yes'>&amp;tactic;</xsl:text>
+        </xsl:when>
+       </xsl:choose>
+      </entry>
+      <entry>
+       <xsl:choose>
+        <xsl:when test="position()=1">
+         <xsl:text>::=</xsl:text>
+        </xsl:when>
+        <xsl:otherwise>
+         <xsl:text>|</xsl:text>
+        </xsl:otherwise>
+       </xsl:choose>
+      </entry>
+      <entry>
+       <xsl:for-each select="listitem/para/* | listitem/para/child::text()">
+         <xsl:choose>
+
+           <xsl:when test="string(.) = $tactic">
+             <xsl:element name="link">
+               <xsl:attribute name="linkend">
+                 <xsl:text>tac_</xsl:text>
+                 <xsl:value-of select="$tactic" />
+               </xsl:attribute>
+               <xsl:copy-of select="." />
+             </xsl:element>
+           </xsl:when>
+
+           <xsl:otherwise>
+             <xsl:copy-of select="." />
+           </xsl:otherwise>
+
+         </xsl:choose>
+       </xsl:for-each>
+      </entry>
+    </row>
+
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/helm/www/matita/docs/tutorial/cover.png b/helm/www/matita/docs/tutorial/cover.png
new file mode 100644 (file)
index 0000000..efcf5f3
Binary files /dev/null and b/helm/www/matita/docs/tutorial/cover.png differ
diff --git a/helm/www/matita/docs/tutorial/def-fish-rec-1.png b/helm/www/matita/docs/tutorial/def-fish-rec-1.png
new file mode 100644 (file)
index 0000000..5574e28
Binary files /dev/null and b/helm/www/matita/docs/tutorial/def-fish-rec-1.png differ
diff --git a/helm/www/matita/docs/tutorial/def-fish-rec-2-1.png b/helm/www/matita/docs/tutorial/def-fish-rec-2-1.png
new file mode 100644 (file)
index 0000000..5838426
Binary files /dev/null and b/helm/www/matita/docs/tutorial/def-fish-rec-2-1.png differ
diff --git a/helm/www/matita/docs/tutorial/def-fish-rec-2.png b/helm/www/matita/docs/tutorial/def-fish-rec-2.png
new file mode 100644 (file)
index 0000000..be87320
Binary files /dev/null and b/helm/www/matita/docs/tutorial/def-fish-rec-2.png differ
diff --git a/helm/www/matita/docs/tutorial/def-fish-rec-3.png b/helm/www/matita/docs/tutorial/def-fish-rec-3.png
new file mode 100644 (file)
index 0000000..426fc3a
Binary files /dev/null and b/helm/www/matita/docs/tutorial/def-fish-rec-3.png differ
diff --git a/helm/www/matita/docs/tutorial/def-fish-rec-5-1.png b/helm/www/matita/docs/tutorial/def-fish-rec-5-1.png
new file mode 100644 (file)
index 0000000..489dc35
Binary files /dev/null and b/helm/www/matita/docs/tutorial/def-fish-rec-5-1.png differ
diff --git a/helm/www/matita/docs/tutorial/def-fish-rec-5.png b/helm/www/matita/docs/tutorial/def-fish-rec-5.png
new file mode 100644 (file)
index 0000000..56a6048
Binary files /dev/null and b/helm/www/matita/docs/tutorial/def-fish-rec-5.png differ
diff --git a/helm/www/matita/docs/tutorial/def-fish-rec-6.png b/helm/www/matita/docs/tutorial/def-fish-rec-6.png
new file mode 100644 (file)
index 0000000..e341a2f
Binary files /dev/null and b/helm/www/matita/docs/tutorial/def-fish-rec-6.png differ
diff --git a/helm/www/matita/docs/tutorial/def-fish-rec-7.png b/helm/www/matita/docs/tutorial/def-fish-rec-7.png
new file mode 100644 (file)
index 0000000..cacfa8b
Binary files /dev/null and b/helm/www/matita/docs/tutorial/def-fish-rec-7.png differ
diff --git a/helm/www/matita/docs/tutorial/def-fish-rec-9.png b/helm/www/matita/docs/tutorial/def-fish-rec-9.png
new file mode 100644 (file)
index 0000000..35eec83
Binary files /dev/null and b/helm/www/matita/docs/tutorial/def-fish-rec-9.png differ
diff --git a/helm/www/matita/docs/tutorial/igft-CIC-universes.svg b/helm/www/matita/docs/tutorial/igft-CIC-universes.svg
new file mode 100644 (file)
index 0000000..524a15d
--- /dev/null
@@ -0,0 +1,359 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="389.76376"
+   height="407.48032"
+   id="svg5594"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="igft-CIC-universes.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <defs
+     id="defs5596">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lend"
+       style="overflow:visible">
+      <path
+         id="path3231"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+    </marker>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective5602" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.26"
+     inkscape:cx="140.40282"
+     inkscape:cy="191.23857"
+     inkscape:document-units="px"
+     inkscape:current-layer="g3726"
+     showgrid="false"
+     inkscape:window-width="1280"
+     inkscape:window-height="747"
+     inkscape:window-x="0"
+     inkscape:window-y="26"
+     units="cm"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <metadata
+     id="metadata5599">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-188.07341,-626.63597)">
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="488.6709"
+       y="860.62408"
+       id="text5679"><tspan
+         sodipodi:role="line"
+         id="tspan5681"
+         x="488.6709"
+         y="860.62408">Type[0]</tspan></text>
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.29999995;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect5683"
+       width="80.574745"
+       height="33.572811"
+       x="470.01935"
+       y="839.73438" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="489.41693"
+       y="769.97754"
+       id="text5685"><tspan
+         sodipodi:role="line"
+         id="tspan5687"
+         x="489.41693"
+         y="769.97754">Type[1]</tspan></text>
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.29999995;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect5689"
+       width="80.574745"
+       height="33.572811"
+       x="470.76538"
+       y="749.08783" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="488.67093"
+       y="676.71973"
+       id="text5697"><tspan
+         sodipodi:role="line"
+         id="tspan5699"
+         x="488.67093"
+         y="676.71973">Type[2]</tspan></text>
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.29999995;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect5701"
+       width="80.574745"
+       height="33.572811"
+       x="470.01938"
+       y="655.83002" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="252.05559"
+       y="858.94543"
+       id="text5703"><tspan
+         sodipodi:role="line"
+         id="tspan5705"
+         x="252.05559"
+         y="858.94543">CProp[0]</tspan></text>
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.29999995;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect5707"
+       width="80.574745"
+       height="33.572811"
+       x="237.6209"
+       y="838.05573" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="251.5968"
+       y="768.29889"
+       id="text5709"><tspan
+         sodipodi:role="line"
+         id="tspan5711"
+         x="251.5968"
+         y="768.29889">CProp[1]</tspan></text>
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.29999995;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect5713"
+       width="80.574745"
+       height="33.572811"
+       x="238.36693"
+       y="747.40918" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="250.85083"
+       y="675.04108"
+       id="text5715"><tspan
+         sodipodi:role="line"
+         id="tspan5717"
+         x="250.85083"
+         y="675.04108">CProp[2]</tspan></text>
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.29999995;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect5719"
+       width="80.574745"
+       height="33.572811"
+       x="237.62096"
+       y="654.15137" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+       d="M 508.81459,838.98832 L 508.81459,783.7797"
+       id="path5721" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.01706386px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+       d="M 508.93607,748.8504 L 508.93607,691.61697"
+       id="path6749" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+       d="M 318.64978,855.99465 L 469.92296,768.14832"
+       id="path6751"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+       d="M 318.80446,763.26458 L 470.07764,675.41825"
+       id="path6753"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:2,2;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 531.54598,838.44703 L 531.54598,783.23841"
+       id="path6755" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:2,2;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 532.06404,748.82285 L 532.06404,693.61423"
+       id="path6757" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:2,2;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 276.66103,836.89285 L 276.66103,781.68423"
+       id="path6759" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.02127695;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:2.0425539,2.0425539;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 277.69711,747.25802 L 277.69711,689.51835"
+       id="path6761" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.02127695;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:2.0425539,2.0425539;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 319.87901,670.05275 L 469.31509,670.05275"
+       id="path6765"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.02127695;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:2.0425539,2.0425539;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 320.13803,763.30334 L 469.57411,763.30334"
+       id="path6767"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.02127695;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:2.0425539,2.0425539;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 318.58386,856.03587 L 468.01994,856.03587"
+       id="path6769"
+       sodipodi:nodetypes="cc" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#828282;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:6, 6;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect6771"
+       width="183.91089"
+       height="258.51135"
+       x="188.57341"
+       y="633.77063" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.70000005;stroke-linecap:butt;stroke-linejoin:miter;marker-end:none;stroke-miterlimit:4;stroke-dasharray:1.7, 5.1;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 277.24765,650.76688 L 277.24765,627.48597"
+       id="path2417"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.70000005;stroke-linecap:butt;stroke-linejoin:miter;marker-end:none;stroke-miterlimit:4;stroke-dasharray:1.7, 5.1;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 511.56739,651.25649 L 511.56739,627.97558"
+       id="path3710"
+       sodipodi:nodetypes="cc" />
+    <g
+       id="g3726"
+       transform="translate(-196.38554,-21.460843)">
+      <g
+         id="g3416">
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+           d="M 448.97379,1004.9376 L 504.18241,1004.9376"
+           id="path6777" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:2,2;stroke-dashoffset:0;stroke-opacity:1"
+           d="M 448.9738,1026.178 L 504.18242,1026.178"
+           id="path6779" />
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+           x="510.66592"
+           y="1007.5103"
+           id="text6781"><tspan
+             sodipodi:role="line"
+             id="tspan6783"
+             x="510.66592"
+             y="1007.5103">Has type</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+           x="510.66592"
+           y="1029.7869"
+           id="text6785"><tspan
+             sodipodi:role="line"
+             x="510.66592"
+             y="1029.7869"
+             id="tspan6789">Is included</tspan></text>
+        <rect
+           style="opacity:1;fill:none;fill-opacity:1;stroke:#828282;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:6, 6;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3712"
+           width="102.58569"
+           height="28.993309"
+           x="634.06982"
+           y="1000.0105" />
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+           x="650.32379"
+           y="1016.7295"
+           id="text3714"><tspan
+             sodipodi:role="line"
+             id="tspan3716"
+             x="650.32379"
+             y="1016.7295">Mirror</tspan></text>
+        <rect
+           style="opacity:0.26612902;fill:#a1a1a1;fill-opacity:1;stroke:none;stroke-width:1.70000005;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3718"
+           width="328.91565"
+           height="19.277109"
+           x="426.02521"
+           y="969.02521" />
+        <rect
+           style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3720"
+           width="333.73495"
+           height="71.084351"
+           x="236.14458"
+           y="339.97961"
+           transform="translate(188.07341,626.63597)" />
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+           x="430.2421"
+           y="982.2782"
+           id="text3722"><tspan
+             sodipodi:role="line"
+             id="tspan3724"
+             x="430.2421"
+             y="982.2782">Legenda</tspan></text>
+      </g>
+    </g>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+       d="M 42.344378,282.75069 L 380.72289,281.54587"
+       id="path3741"
+       transform="translate(188.07341,626.63597)"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+       d="M 219.98181,645.12981 L 218.77699,891.84167"
+       id="path5034"
+       sodipodi:nodetypes="cc" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="719.58075"
+       y="-205.23161"
+       id="text5036"
+       transform="matrix(0,1,-1,0,0,0)"><tspan
+         sodipodi:role="line"
+         id="tspan5038"
+         x="719.58075"
+         y="-205.23161">Impredicativity</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="343.28174"
+       y="920.44342"
+       id="text5040"><tspan
+         sodipodi:role="line"
+         id="tspan5042"
+         x="343.28174"
+         y="920.44342">Axiom of Choice</tspan></text>
+  </g>
+</svg>
diff --git a/helm/www/matita/docs/tutorial/igft-minimality-CIC.svg b/helm/www/matita/docs/tutorial/igft-minimality-CIC.svg
new file mode 100644 (file)
index 0000000..d70c35e
--- /dev/null
@@ -0,0 +1,719 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="600"
+   height="445"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="igft-minimality-CIC.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible">
+      <path
+         id="path3296"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="StopL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="StopL"
+       style="overflow:visible">
+      <path
+         id="path3425"
+         d="M 0,5.65 L 0,-5.65"
+         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="scale(0.8,0.8)" />
+    </marker>
+    <marker
+       inkscape:stockid="CurvyCross"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="CurvyCross"
+       style="overflow:visible">
+      <g
+         id="g3446"
+         transform="scale(0.6,0.6)">
+        <path
+           id="path3448"
+           d="M 4.625493,-5.0456926 C 1.865493,-5.0456926 -0.37450702,-2.8056926 -0.37450702,-0.04569258 C -0.37450702,2.7143074 1.865493,4.9543074 4.625493,4.9543074"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none" />
+        <path
+           id="path3450"
+           d="M -5.4129913,-5.0456926 C -2.6529913,-5.0456926 -0.41299131,-2.8056926 -0.41299131,-0.04569258 C -0.41299131,2.7143074 -2.6529913,4.9543074 -5.4129913,4.9543074"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible">
+      <path
+         id="path3255"
+         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(0.8,0,0,0.8,10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lend"
+       style="overflow:visible">
+      <path
+         id="path3231"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mend"
+       style="overflow:visible">
+      <path
+         id="path3219"
+         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+    </marker>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.9"
+     inkscape:cx="319.47326"
+     inkscape:cy="206.79135"
+     inkscape:document-units="px"
+     inkscape:current-layer="g4115"
+     showgrid="false"
+     inkscape:window-width="1280"
+     inkscape:window-height="747"
+     inkscape:window-x="0"
+     inkscape:window-y="26"
+     inkscape:showpageshadow="true"
+     units="cm" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-48.720708,-561.57164)">
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="366.57452"
+       y="796.92438"
+       id="text3171"><tspan
+         sodipodi:role="line"
+         x="366.57452"
+         y="796.92438"
+         id="tspan6187">CProp impredicative</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="115.37615"
+       y="794.98383"
+       id="text3181"><tspan
+         sodipodi:role="line"
+         x="115.37615"
+         y="794.98383"
+         id="tspan3185">CProp = Type</tspan><tspan
+         sodipodi:role="line"
+         x="115.37615"
+         y="809.98383"
+         id="tspan3250" /></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+       d="M 228.9477,818.64478 L 187.36847,761.88289"
+       id="path5558"
+       sodipodi:nodetypes="cc" />
+    <g
+       id="g3234"
+       transform="translate(1.1070111,-5.1660517)">
+      <text
+         id="text2383"
+         y="839.26465"
+         x="215.35783"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+         xml:space="preserve"><tspan
+           style="font-size:12px"
+           id="tspan5562"
+           y="839.26465"
+           x="215.35783"
+           sodipodi:role="line">     Matita's CIC</tspan><tspan
+           id="tspan2408"
+           style="font-size:12px"
+           y="854.26465"
+           x="215.35783"
+           sodipodi:role="line" /><tspan
+           style="font-size:10px"
+           id="tspan5564"
+           y="867.27118"
+           x="215.35783"
+           sodipodi:role="line">CProp,Type predicative</tspan><tspan
+           id="tspan5572"
+           style="font-size:10px"
+           y="879.77118"
+           x="215.35783"
+           sodipodi:role="line">No elim CProp toward Type</tspan><tspan
+           id="tspan5566"
+           y="892.27118"
+           x="215.35783"
+           sodipodi:role="line" /></text>
+      <rect
+         transform="translate(100.2483,683.58839)"
+         y="140.10075"
+         x="105.10638"
+         height="64.371376"
+         width="149.86459"
+         id="rect2406"
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         transform="translate(100.2483,683.58839)"
+         y="142.61526"
+         x="107.6209"
+         height="19.110252"
+         width="144.83559"
+         id="rect3190"
+         style="opacity:0.26612902;fill:#a1a1a1;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       id="g6154"
+       transform="translate(-125.83354,13.837023)">
+      <text
+         id="text3192"
+         y="696.07294"
+         x="497.18042"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+         xml:space="preserve"><tspan
+           style="font-size:12px"
+           id="tspan3194"
+           y="696.07294"
+           x="497.18042"
+           sodipodi:role="line">Coq's CIC<tspan
+   id="tspan6152"
+   style="font-size:10px"> (work in Prop)</tspan></tspan><tspan
+           id="tspan3196"
+           style="font-size:12px"
+           y="711.07294"
+           x="497.18042"
+           sodipodi:role="line" /><tspan
+           style="font-size:10px"
+           id="tspan3198"
+           y="724.07947"
+           x="497.18042"
+           sodipodi:role="line">Prop impredicative</tspan><tspan
+           id="tspan3200"
+           style="font-size:10px"
+           y="736.57947"
+           x="497.18042"
+           sodipodi:role="line">No elim Prop toward Type</tspan><tspan
+           id="tspan3202"
+           y="749.07947"
+           x="497.18042"
+           sodipodi:role="line" /></text>
+      <rect
+         y="680.49744"
+         x="489.75116"
+         height="64.371376"
+         width="149.86459"
+         id="rect3204"
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="683.77209"
+         x="492.26569"
+         height="19.110252"
+         width="144.83559"
+         id="rect3206"
+         style="opacity:0.26612902;fill:#a1a1a1;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       id="g3224"
+       transform="translate(-432.92324,-78.89799)">
+      <rect
+         y="774.75275"
+         x="485.95056"
+         height="64.371376"
+         width="149.86459"
+         id="rect3220"
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="777.26715"
+         x="487.70496"
+         height="19.110252"
+         width="144.83559"
+         id="rect3222"
+         style="opacity:0.26612902;fill:#a1a1a1;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text3208"
+         y="790.32825"
+         x="489.87271"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+         xml:space="preserve"><tspan
+           style="font-size:12px"
+           id="tspan3210"
+           y="790.32825"
+           x="489.87271"
+           sodipodi:role="line">Coq's CIC <tspan
+   style="font-size:10px"
+   id="tspan6150">(work in Type)</tspan></tspan><tspan
+           id="tspan3212"
+           style="font-size:12px"
+           y="805.32825"
+           x="489.87271"
+           sodipodi:role="line" /><tspan
+           style="font-size:10px"
+           id="tspan3214"
+           y="818.33478"
+           x="489.87271"
+           sodipodi:role="line">CProp=Type predicative</tspan><tspan
+           style="font-size:10px"
+           y="830.83478"
+           x="489.87271"
+           sodipodi:role="line"
+           id="tspan3244">Martin Löf Axiom of Choice</tspan><tspan
+           id="tspan3218"
+           y="843.33478"
+           x="489.87271"
+           sodipodi:role="line" /></text>
+    </g>
+    <g
+       id="g6165"
+       transform="translate(-166.99281,-57.42367)">
+      <g
+         id="g6191"
+         transform="translate(38.006151,-48.647873)">
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+           x="497.47394"
+           y="696.07294"
+           id="text6167"><tspan
+             sodipodi:role="line"
+             x="497.47394"
+             y="696.07294"
+             id="tspan6169"
+             style="font-size:12px">        CIC + EM</tspan><tspan
+             sodipodi:role="line"
+             x="497.47394"
+             y="711.07294"
+             style="font-size:12px"
+             id="tspan6173" /><tspan
+             sodipodi:role="line"
+             x="497.47394"
+             y="724.07947"
+             id="tspan6175"
+             style="font-size:10px">Prop impredicative with EM</tspan><tspan
+             sodipodi:role="line"
+             x="497.47394"
+             y="736.57947"
+             style="font-size:10px"
+             id="tspan6177">No elim Prop toward Type</tspan><tspan
+             sodipodi:role="line"
+             x="497.47394"
+             y="749.07947"
+             id="tspan6179" /></text>
+        <rect
+           style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect6181"
+           width="149.86459"
+           height="64.371376"
+           x="489.75116"
+           y="680.49744" />
+        <rect
+           style="opacity:0.26612902;fill:#a1a1a1;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect6183"
+           width="144.83559"
+           height="19.110252"
+           x="492.26569"
+           y="683.77209" />
+      </g>
+    </g>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+       d="M 335.0574,817.80062 L 376.63663,761.03873"
+       id="path6201"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+       d="M 432.71038,693.19009 L 432.75682,640.13071"
+       id="path6203"
+       sodipodi:nodetypes="cc" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="440.85757"
+       y="668.56934"
+       id="text6205"><tspan
+         sodipodi:role="line"
+         x="440.85757"
+         y="668.56934"
+         id="tspan6207">Excluded Middle</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="206.57732"
+       y="603.78223"
+       id="text8395"><tspan
+         sodipodi:role="line"
+         x="206.57732"
+         y="603.78223"
+         id="tspan8397">Where's the content?</tspan><tspan
+         sodipodi:role="line"
+         x="206.57732"
+         y="618.78223"
+         id="tspan8399" /></text>
+    <g
+       id="g4089">
+      <path
+         sodipodi:nodetypes="cc"
+         id="path6211"
+         d="M 203.66203,726.64316 L 361.81923,726.89995"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Lstart);marker-mid:none;marker-end:url(#Arrow2Lend);stroke-opacity:1" />
+      <g
+         transform="translate(134.31734,70.443009)"
+         id="g8379">
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="M 80.442804,87.328345 L 102.58303,67.033143"
+           id="path8375"
+           transform="translate(51.420312,579.09195)" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="M 80.073801,66.295135 L 103.32103,88.066353"
+           id="path8377"
+           transform="translate(51.420312,579.09195)" />
+      </g>
+      <text
+         id="text8401"
+         y="747.60999"
+         x="221.84404"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+         xml:space="preserve"><tspan
+           id="tspan8407"
+           y="747.60999"
+           x="221.84404"
+           sodipodi:role="line">CProp Impredicative</tspan><tspan
+           id="tspan8405"
+           y="762.60999"
+           x="221.84404"
+           sodipodi:role="line" /></text>
+      <text
+         id="text8411"
+         y="713.23657"
+         x="228.09178"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+         xml:space="preserve"><tspan
+           id="tspan8413"
+           y="713.23657"
+           x="228.09178"
+           sodipodi:role="line">Girard's paradox</tspan><tspan
+           id="tspan8415"
+           y="728.23657"
+           x="228.09178"
+           sodipodi:role="line" /></text>
+    </g>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+       d="M 359.90647,612.92159 C 359.90647,612.92159 212.45038,602.47727 189.20314,691.03816"
+       id="path8417"
+       sodipodi:nodetypes="cc" />
+    <g
+       id="g8429"
+       transform="translate(131.18394,-36.356245)">
+      <path
+         transform="translate(51.420312,579.09195)"
+         id="path8431"
+         d="M 80.442804,87.328345 L 102.58303,67.033143"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         transform="translate(51.420312,579.09195)"
+         id="path8433"
+         d="M 80.073801,66.295135 L 103.32103,88.066353"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="240.21919"
+       y="641.33929"
+       id="text8435"><tspan
+         sodipodi:role="line"
+         x="240.21919"
+         y="641.33929"
+         id="tspan8437">Axiom of Choice</tspan><tspan
+         sodipodi:role="line"
+         x="240.21919"
+         y="656.33929"
+         id="tspan8439" /></text>
+    <g
+       id="g4109"
+       transform="translate(2.9566177,-24.392087)">
+      <text
+         id="text4101"
+         y="670.33813"
+         x="58.440556"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+         xml:space="preserve"><tspan
+           y="670.33813"
+           x="58.440556"
+           id="tspan4103"
+           sodipodi:role="line">Bishop</tspan></text>
+      <rect
+         ry="10.717734"
+         transform="translate(52.527322,573.92589)"
+         y="81.629173"
+         x="2.2174623"
+         height="21.435469"
+         width="52.479942"
+         id="rect4105"
+         style="opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:1.70000005;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="10.717734"
+         y="652.59845"
+         x="46.61409"
+         height="26.609549"
+         width="66.523872"
+         id="rect4107"
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.70000005;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       id="g4115"
+       transform="translate(25.870392,-51.74079)">
+      <g
+         id="g4125"
+         transform="translate(504.84226,78.35034)">
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+           x="62.136326"
+           y="670.33813"
+           id="text4117"><tspan
+             sodipodi:role="line"
+             id="tspan4119"
+             x="62.136326"
+             y="670.33813">Topos</tspan></text>
+        <rect
+           style="opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:1.70000005;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect4121"
+           width="52.479942"
+           height="21.435469"
+           x="2.2174623"
+           y="81.629173"
+           transform="translate(52.527322,573.92589)"
+           ry="10.717734" />
+        <rect
+           style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.70000005;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect4123"
+           width="66.523872"
+           height="26.609549"
+           x="46.61409"
+           y="652.59845"
+           ry="10.717734" />
+      </g>
+      <g
+         id="g4022"
+         transform="translate(-94.60221,-17.73018)">
+        <g
+           transform="translate(589.84498,-16.261391)"
+           id="g4131">
+          <text
+             id="text4133"
+             y="670.33813"
+             x="65.8321"
+             style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+             xml:space="preserve"><tspan
+               y="670.33813"
+               x="65.8321"
+               id="tspan4135"
+               sodipodi:role="line">ZFC</tspan></text>
+          <rect
+             ry="10.717734"
+             transform="translate(52.527322,573.92589)"
+             y="81.629173"
+             x="2.2174623"
+             height="21.435469"
+             width="52.479942"
+             id="rect4137"
+             style="opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:1.70000005;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+          <rect
+             ry="10.717734"
+             y="652.59845"
+             x="46.61409"
+             height="26.609549"
+             width="66.523872"
+             id="rect4139"
+             style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.70000005;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+        </g>
+      </g>
+    </g>
+    <g
+       transform="translate(-285.87827,-56.11513)"
+       id="g3416">
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
+         d="M 381.23522,752.34128 L 372.13743,713.90527"
+         id="path4016"
+         sodipodi:nodetypes="cc" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
+         d="M 801.07477,775.99422 L 862.93578,756.03706"
+         id="path4018"
+         sodipodi:nodetypes="cc" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
+         d="M 798.11816,659.94701 L 852.58763,642.94646"
+         id="path4020"
+         sodipodi:nodetypes="cc" />
+    </g>
+    <g
+       id="g4046"
+       transform="translate(48.888889,-4.4444444)">
+      <path
+         id="path6777"
+         d="M 448.97379,1004.9376 L 504.18241,1004.9376"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+         transform="translate(-285.87827,-56.11513)" />
+      <text
+         id="text6781"
+         y="1008.9886"
+         x="595.66864"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+         xml:space="preserve"
+         transform="translate(-285.87827,-56.11513)"><tspan
+           y="1008.9886"
+           x="595.66864"
+           id="tspan6783"
+           sodipodi:role="line">becomes</tspan></text>
+      <rect
+         y="969.02521"
+         x="426.02521"
+         height="19.277109"
+         width="328.91565"
+         id="rect3718"
+         style="opacity:0.26612902;fill:#a1a1a1;fill-opacity:1;stroke:none;stroke-width:1.70000005;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         transform="translate(-285.87827,-56.11513)" />
+      <rect
+         transform="translate(-97.804862,570.52084)"
+         y="339.97961"
+         x="236.14458"
+         height="91.780663"
+         width="333.73492"
+         id="rect3720"
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text3722"
+         y="982.2782"
+         x="430.2421"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+         xml:space="preserve"
+         transform="translate(-285.87827,-56.11513)"><tspan
+           y="982.2782"
+           x="430.2421"
+           id="tspan3724"
+           sodipodi:role="line">Legenda</tspan></text>
+      <path
+         id="path3455"
+         d="M 447.01995,1036.9156 L 502.22857,1036.9156"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
+         transform="translate(-285.87827,-56.11513)" />
+      <text
+         id="text4008"
+         y="1039.1542"
+         x="594.7403"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+         xml:space="preserve"
+         transform="translate(-285.87827,-56.11513)"><tspan
+           y="1039.1542"
+           x="594.7403"
+           id="tspan4010"
+           sodipodi:role="line">good to formalise X</tspan></text>
+      <text
+         id="text4012"
+         y="1039.8546"
+         x="531.95312"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+         xml:space="preserve"
+         transform="translate(-285.87827,-56.11513)"><tspan
+           y="1039.8546"
+           x="531.95312"
+           id="tspan4014"
+           sodipodi:role="line">X</tspan></text>
+      <g
+         id="g4029">
+        <g
+           id="g3445"
+           transform="translate(171.37292,313.40134)">
+          <rect
+             ry="10.717734"
+             transform="translate(52.527322,573.92589)"
+             y="81.629173"
+             x="2.2174623"
+             height="21.435469"
+             width="52.479942"
+             id="rect3451"
+             style="opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:1.70000005;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+          <rect
+             ry="10.717734"
+             y="652.59845"
+             x="46.61409"
+             height="26.609549"
+             width="66.523872"
+             id="rect3453"
+             style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.70000005;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/helm/www/matita/docs/tutorial/igft.html b/helm/www/matita/docs/tutorial/igft.html
new file mode 100644 (file)
index 0000000..9c3ea4b
--- /dev/null
@@ -0,0 +1,1554 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html>
+ <head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+  <style type="text/css">
+pre, code { 
+       font-family: monospace; 
+}
+
+p code, li code {
+       font-size: 130%;
+       border-style: dashed;
+       border-width: 1px;
+       padding-top: 0.2em;
+       padding-bottom: 0.2em;
+       padding-left: 0.3em;
+       padding-right: 0.3em;
+       line-height: 1.8em;
+       border-color: grey;
+} 
+
+pre { 
+       font-size: 120%; 
+       margin-right: 5em; 
+       margin-left: 2em; 
+}
+
+img, .img { 
+       margin-left: auto; 
+       margin-right: auto; 
+       display: block;
+}
+
+date {
+       font-size:60%;
+       text-align:right;
+       width: 100%;
+       display:block;
+}
+
+body {
+       margin-right: 3cm;
+       margin-left: 3cm;
+}
+
+
+p { text-align: justify; } 
+  </style>
+  <script type="text/javascript" src="sh_main.js"></script>
+  <script type="text/javascript" src="sh_grafite.js"></script>
+  <link type="text/css" rel="stylesheet" href="sh_gedit.css">
+  <script type="text/javascript">
+  function syntaxon(){
+    var pres=document.getElementsByTagName("pre")
+    for (i=0; i < pres.length; i++) {
+      pres[i].className="sh_grafite";
+    }
+    sh_highlightDocument();
+  }
+  </script>
+ </head>
+ <body onload="syntaxon();">
+<h1>Inductively generated formal topologies in Matita</h1>
+
+<p>This is a not so short introduction to <a href="http://matita.cs.unibo.it">Matita</a>, based on
+the formalization of the paper</p>
+
+<blockquote>
+  <p>Between formal topology and game theory: an
+explicit solution for the conditions for an
+inductive generation of formal topologies</p>
+</blockquote>
+
+<p>by Stefano Berardi and Silvio Valentini. </p>
+
+<p>The tutorial and the formalization are by Enrico Tassi.</p>
+
+<p>The reader should be familiar with inductively generated
+formal topologies and have some basic knowledge of type theory and λ-calculus.  </p>
+
+<p>A considerable part of this tutorial is devoted to explain how to define 
+notations that resemble the ones used in the original paper. We believe
+this is an important part of every formalization, not only from the aesthetic 
+point of view, but also from the practical point of view. Being 
+consistent allows to follow the paper in a pedantic way, and hopefully
+to make the formalization (at least the definitions and proved
+statements) readable to the author of the paper. </p>
+
+<p>The formalization uses the "new generation" version of Matita
+(that will be named 1.x when finally released). 
+Last stable release of the "old" system is named 0.5.7; the ng system
+is coexisting with the old one in all development release 
+(named "nightly builds" in the download page of Matita) 
+with a version strictly greater than 0.5.7.</p>
+
+<p>To read this tutorial in HTML format, you need a decent browser
+equipped with a unicode capable font. Use the PDF format if some
+symbols are not displayed correctly.</p>
+
+<h2>Orienteering</h2>
+
+<p>The graphical interface of Matita is composed of three windows:
+the script window, on the left, is where you type; the sequent
+window on the top right is where the system shows you the ongoing proof;
+the error window, on the bottom right, is where the system complains.
+On the top of the script window five buttons drive the processing of
+the proof script. From left to right they request the system to:</p>
+
+<ul>
+<li>go back to the beginning of the script</li>
+<li>go back one step</li>
+<li>go to the current cursor position</li>
+<li>advance one step</li>
+<li>advance to the end of the script</li>
+</ul>
+
+<p>When the system processes a command, it locks the part of the script
+corresponding to the command, such that you cannot edit it anymore 
+(without going back). Locked parts are coloured in blue.</p>
+
+<p>The sequent window is hyper textual, i.e. you can click on symbols
+to jump to their definition, or switch between different notations
+for the same expression (for example, equality has two notations,
+one of them makes the type of the arguments explicit).  </p>
+
+<p>Everywhere in the script you can use the <code>ncheck (term).</code> command to
+ask for the type a given term. If you do that in the middle of a proof,
+the term is assumed to live in the current proof context (i.e. can use
+variables introduced so far).</p>
+
+<p>To ease the typing of mathematical symbols, the script window
+implements two unusual input facilities:</p>
+
+<ul>
+<li><p>some TeX symbols can be typed using their TeX names, and are 
+automatically converted to UTF-8 characters. For a list of 
+the supported TeX names, see the menu: View ▹ TeX/UTF-8 Table.
+Moreover some ASCII-art is understood as well, like <code>=&gt;</code> and <code>-&gt;</code>
+to mean double or single arrows.
+Here we recall some of these "shortcuts":</p>
+
+<ul>
+<li>∀ can be typed with <code>\forall</code></li>
+<li>λ can be typed with <code>\lambda</code></li>
+<li>≝ can be typed with <code>\def</code> or <code>:=</code></li>
+<li>→ can be typed with <code>\to</code> or <code>-&gt;</code></li>
+</ul></li>
+<li><p>some symbols have variants, like the ≤ relation and ≼, ≰, ⋠.
+The user can cycle between variants typing one of them and then
+pressing ALT-L. Note that also letters do have variants, for
+example W has Ω, 𝕎 and 𝐖, L has Λ, 𝕃, and 𝐋, F has Φ, … 
+Variants are listed in the aforementioned TeX/UTF-8 table. </p></li>
+</ul>
+
+<p>The syntax of terms (and types) is the one of the λ-calculus CIC
+on which Matita is based. The main syntactical difference w.r.t. 
+the usual mathematical notation is the function application, written
+<code>(f x y)</code> in place of <code>f(x,y)</code>. </p>
+
+<p>Pressing <code>F1</code> opens the Matita manual.</p>
+
+<h2>CIC (as <a href="http://www.cs.unibo.it/~tassi/smallcc.pdf">implemented in Matita</a>) in a nutshell</h2>
+
+<p>CIC is a full and functional Pure Type System (all products do exist,
+and their sort is is determined by the target) with an impredicative sort
+Prop and a predicative sort Type. It features both dependent types and 
+polymorphism like the <a href="http://www.inria.fr/rrrt/rr-0530.html">Calculus of Constructions</a>. Proofs and terms share
+the same syntax, and they can occur in types. </p>
+
+<p>The environment used for in the typing judgement can be populated with
+well typed definitions or theorems, (co)inductive types validating positivity
+conditions and recursive functions provably total by simple syntactical 
+analysis (recursive calls are allowed only on structurally smaller subterms). 
+Co-recursive 
+functions can be defined as well, and must satisfy the dual condition, i.e.
+performing the recursive call only after having generated a constructor (a piece
+of output).</p>
+
+<p>The CIC λ-calculus is equipped with a pattern matching construct (match) on inductive
+types defined in the environment. This construct, together with the possibility to
+definable total recursive functions, allows to define eliminators (or constructors)
+for (co)inductive types. </p>
+
+<p>Types are compare up to conversion. Since types may depend on terms, conversion
+involves β-reduction, δ-reduction (definition unfolding), ζ-reduction (local
+definition unfolding), ι-reduction (pattern matching simplification),
+μ-reduction (recursive function computation) and ν-reduction (co-fixpoint
+computation).</p>
+
+<p>Since we are going to formalize constructive and predicative mathematics
+in an intensional type theory like CIC, we try to establish some terminology. 
+Type is the sort of sets equipped with the <code>Id</code> equality (i.e. an intensional,
+not quotiented set). </p>
+
+<p>We write <code>Type[i]</code> to mention a Type in the predicative hierarchy 
+of types. To ease the comprehension we will use <code>Type[0]</code> for sets, 
+and <code>Type[1]</code> for classes. The index <code>i</code> is just a label: constraints among
+universes are declared by the user. The standard library defines</p>
+
+<blockquote>
+  <p>Type[0] &lt; Type[1] &lt; Type[2]</p>
+</blockquote>
+
+<p>Matita implements a variant of CIC in which constructive and predicative proposition
+are distinguished from predicative data types.</p>
+
+<p><object class="img" data="igft-CIC-universes.svg" type="image/svg+xml" width="400px"/></p>
+
+<p>For every <code>Type[i]</code> there is a corresponding level of predicative
+propositions <code>CProp[i]</code> (the C initial is due to historical reasons, and
+stands for constructive). 
+A predicative proposition cannot be eliminated toward
+<code>Type[j]</code> unless it holds no computational content (i.e. it is an inductive proposition
+with 0 or 1 constructors with propositional arguments, like <code>Id</code> and <code>And</code> 
+but not like <code>Or</code>). </p>
+
+<p>The distinction between predicative propositions and predicative data types
+is a peculiarity of Matita (for example in CIC as implemented by Coq they are the
+same). The additional restriction of not allowing the elimination of a CProp
+toward a Type makes the theory of Matita minimal in the following sense: </p>
+
+<p><object class="img" data="igft-minimality-CIC.svg" type="image/svg+xml" width="600px"/></p>
+
+<p>Theorems proved in CIC as implemented in Matita can be reused in a classical 
+and impredicative framework (i.e. forcing Matita to collapse the hierarchy of 
+constructive propositions and assuming the excluded middle on them). 
+Alternatively, one can decide to collapse predicative propositions and 
+predicative data types recovering the Axiom of Choice in the sense of Martin Löf 
+(i.e. ∃ really holds a witness and can be eliminated to inhabit a type).</p>
+
+<p>This implementation of CIC is the result of the collaboration with Maietti M.,
+Sambin G. and Valentini S. of the University of Padua.</p>
+
+<h2>Formalization choices</h2>
+
+<p>There are many different ways of formalizing the same piece of mathematics
+in CIC, depending on what our interests are. There is usually a trade-off 
+between the possibility of reuse the formalization we did and its complexity.</p>
+
+<p>In this work, our decisions mainly regarded the following two areas</p>
+
+<ul>
+<li>Axiom of Choice: controlled use or not</li>
+<li>Equality: Id or not</li>
+</ul>
+
+<h3>Axiom of Choice</h3>
+
+<p>In this paper it is clear that the author is interested in using the Axiom
+of Choice, thus choosing to identify ∃ and Σ (i.e. working in the 
+leftmost box of the graph "Coq's CIC (work in CProp)") would be a safe decision 
+(that is, the author of the paper would not complain we formalized something
+different from what he had in mind).</p>
+
+<p>Anyway, we may benefit from the minimality of CIC as implemented in Matita,
+"asking" the type system to ensure we do no use the Axiom of Choice elsewhere
+in the proof (by mistake or as a shortcut). If we identify ∃ and Σ from the
+very beginning, the system will not complain if we use the Axiom of Choice at all.
+Moreover, the elimination of an inductive type (like ∃) is a so common operation
+that the syntax chosen for the elimination command is very compact and non 
+informative, hard to spot for a human being 
+(in fact it is just two characters long!). </p>
+
+<p>We decided to formalize the whole paper without identifying
+CProp and Type and assuming the Axiom of Choice as a real axiom 
+(i.e. a black hole with no computational content, a function with no body). </p>
+
+<p>It is clear that this approach give us full control on when/where we really use
+the Axiom of Choice. But, what are we loosing? What happens to the computational
+content of the proofs if the Axiom of Choice gives no content back? </p>
+
+<p>It really
+depends on when we actually look at the computational content of the proof and 
+we "run" that program. We can extract the content and run it before or after 
+informing the system that our propositions are actually code (i.e. identifying
+∃ and Σ). If we run the program before, as soon as the computation reaches the 
+Axiom of Choice it stops, giving no output. If we tell the system that CProp and
+Type are the same, we can exhibit a body for the Axiom of Choice (i.e. a projection)
+and the extracted code would compute an output. </p>
+
+<p>Note that the computational
+content is there even if the Axiom of Choice is an axiom, the difference is
+just that we cannot use it (the typing rules inhibit the elimination of the 
+existential). This is possible only thanks to the minimality of CIC as implemented
+in Matita. </p>
+
+<h3>Equality</h3>
+
+<p>What we have to decide here is which models we admit. The paper does not
+mention quotiented sets, thus using an intensional equality is enough
+to capture the intended content of the paper. Nevertheless, the formalization
+cannot be reused in a concrete example where the (families of) sets
+that will build the axiom set are quotiented.</p>
+
+<p>Matita gives support for setoid rewriting under a context built with
+non dependent morphisms. As we will detail later, if we assume a generic
+equality over the carrier of our axiom set, a non trivial inductive
+construction over the ordinals has to be proved to respect extensionality
+(i.e. if the input is an extensional set, also the output is).
+The proof requires to rewrite under the context formed by the family of sets 
+<code>I</code> and <code>D</code>, that have a dependent type. Declaring them as dependently typed
+morphisms is possible, but Matita does not provide an adequate support for them,
+and would thus need more effort than formalizing the whole paper. </p>
+
+<p>Anyway, in a preliminary attempt of formalization, we tried the setoid approach,
+reaching the end of the formalization, but we had to assume the proof
+of the extensionality of the <code>U_x</code> construction (while there is no
+need to assume the same property for <code>F_x</code>!). </p>
+
+<p>The current version of the formalization uses <code>Id</code>. </p>
+
+<h2>The standard library and the <code>include</code> command</h2>
+
+<p>Some basic notions, like subset, membership, intersection and union
+are part of the standard library of Matita.</p>
+
+<p>These notions come with some standard notation attached to them:</p>
+
+<ul>
+<li>A ∪ B can be typed with <code>A \cup B</code></li>
+<li>A ∩ B can be typed with <code>A \cap B</code> </li>
+<li>A ≬ B can be typed with <code>A \between B</code></li>
+<li>x ∈ A can be typed with <code>x \in A</code> </li>
+<li>Ω^A, that is the type of the subsets of A, can be typed with <code>\Omega ^ A</code> </li>
+</ul>
+
+<p>The <code>include</code> command tells Matita to load a part of the library, 
+in particular the part that we will use can be loaded as follows: </p>
+
+<pre><code>include "sets/sets.ma".
+</code></pre>
+
+<p>Some basic results that we will use are also part of the sets library:</p>
+
+<ul>
+<li>subseteq_union_l: ∀A.∀U,V,W:Ω^A.U ⊆ W → V ⊆ W → U ∪ V ⊆ W</li>
+<li>subseteq_intersection_r: ∀A.∀U,V,W:Ω^A.W ⊆ U → W ⊆ V → W ⊆ U ∩ V</li>
+</ul>
+
+<h2>Defining Axiom set</h2>
+
+<p>A set of axioms is made of a set <code>S</code>, a family of sets <code>I</code> and a 
+family <code>C</code> of subsets of <code>S</code> indexed by elements <code>a</code> of <code>S</code> 
+and elements of <code>I(a)</code>.</p>
+
+<p>It is desirable to state theorems like "for every set of axioms, …"
+without explicitly mentioning S, I and C. To do that, the three 
+components have to be grouped into a record (essentially a dependently
+typed tuple). The system is able to generate the projections
+of the record automatically, and they are named as the fields of
+the record. So, given an axiom set <code>A</code> we can obtain the set
+with <code>S A</code>, the family of sets with <code>I A</code> and the family of subsets
+with <code>C A</code>.</p>
+
+<pre><code>nrecord Ax : Type[1] ≝ { 
+  S :&gt; Type[0];
+  I :  S → Type[0];
+  C :  ∀a:S. I a → Ω^S
+}.
+</code></pre>
+
+<p>Forget for a moment the <code>:&gt;</code> that will be detailed later, and focus on
+the record definition. It is made of a list of pairs: a name, followed
+by <code>:</code> and the its type. It is a dependently typed tuple, thus
+already defined names (fields) can be used in the types that follow. </p>
+
+<p>Note that the field <code>S</code> was declared with <code>:&gt;</code> instead of a simple <code>:</code>.
+This declares the <code>S</code> projection to be a coercion. A coercion is 
+a "cast" function the system automatically inserts when it is needed.
+In that case, the projection <code>S</code> has type <code>Ax → setoid</code>, and whenever
+the expected type of a term is <code>setoid</code> while its type is <code>Ax</code>, the 
+system inserts the coercion around it, to make the whole term well typed.</p>
+
+<p>When formalizing an algebraic structure, declaring the carrier as a 
+coercion is a common practice, since it allows to write statements like</p>
+
+<pre><code>∀G:Group.∀x:G.x * x^-1 = 1
+</code></pre>
+
+<p>The quantification over <code>x</code> of type <code>G</code> is ill-typed, since <code>G</code> is a term
+(of type <code>Group</code>) and thus not a type. Since the carrier projection 
+<code>carr</code> is a coercion, that maps a <code>Group</code> into the type of 
+its elements, the system automatically inserts <code>carr</code> around <code>G</code>, 
+obtaining <code>…∀x: carr G.…</code>. </p>
+
+<p>Coercions are hidden by the system when it displays a term.
+In this particular case, the coercion <code>S</code> allows to write (and read):</p>
+
+<pre><code>∀A:Ax.∀a:A.…
+</code></pre>
+
+<p>Since <code>A</code> is not a type, but it can be turned into a <code>setoid</code> by <code>S</code>
+and a <code>setoid</code> can be turned into a type by its <code>carr</code> projection, the 
+composed coercion <code>carr ∘ S</code> is silently inserted.</p>
+
+<h2>Implicit arguments</h2>
+
+<p>Something that is not still satisfactory, is that the dependent type
+of <code>I</code> and <code>C</code> are abstracted over the Axiom set. To obtain the
+precise type of a term, you can use the <code>ncheck</code> command as follows.</p>
+
+<pre><code>(** ncheck I. *) (* shows: ∀A:Ax.A → Type[0] *)
+(** ncheck C. *) (* shows: ∀A:Ax.∀a:A.A → I A a → Ω^A *)
+</code></pre>
+
+<p>One would like to write <code>I a</code> and not <code>I A a</code> under a context where
+<code>A</code> is an axiom set and <code>a</code> has type <code>S A</code> (or thanks to the coercion
+mechanism simply <code>A</code>). In Matita, a question mark represents an implicit
+argument, i.e. a missing piece of information the system is asked to
+infer. Matita performs Hindley-Milner-style type inference, thus writing
+<code>I ? a</code> is enough: since the second argument of <code>I</code> is typed by the 
+first one, the first (omitted) argument can be inferred just 
+computing the type of <code>a</code> (that is <code>A</code>).</p>
+
+<pre><code>(** ncheck (∀A:Ax.∀a:A.I ? a). *) (* shows: ∀A:Ax.∀a:A.I A a *)
+</code></pre>
+
+<p>This is still not completely satisfactory, since you have always to type 
+<code>?</code>; to fix this minor issue we have to introduce the notational
+support built in Matita.</p>
+
+<h2>Notation for I and C</h2>
+
+<p>Matita is quipped with a quite complex notational support,
+allowing the user to define and use mathematical notations 
+(<a href="http://upsilon.cc/~zack/research/publications/notation.pdf">From Notation to Semantics: There and Back Again</a>). </p>
+
+<p>Since notations are usually ambiguous (e.g. the frequent overloading of 
+symbols) Matita distinguishes between the term level, the 
+content level, and the presentation level, allowing multiple 
+mappings between the content and the term level. </p>
+
+<p>The mapping between the presentation level (i.e. what is typed on the 
+keyboard and what is displayed in the sequent window) and the content
+level is defined with the <code>notation</code> command. When followed by
+<code>&gt;</code>, it defines an input (only) notation.   </p>
+
+<pre><code>notation &gt; "𝐈 term 90 a" non associative with precedence 70 for @{ 'I $a }.
+notation &gt; "𝐂 term 90 a term 90 i" non associative with precedence 70 for @{ 'C $a $i }.
+</code></pre>
+
+<p>The first notation defines the writing <code>𝐈 a</code> where <code>a</code> is a generic
+term of precedence 90, the maximum one. This high precedence forces
+parentheses around any term of a lower precedence. For example <code>𝐈 x</code>
+would be accepted, since identifiers have precedence 90, but
+<code>𝐈 f x</code> would be interpreted as <code>(𝐈 f) x</code>. In the latter case, parentheses
+have to be put around <code>f x</code>, thus the accepted writing would be <code>𝐈 (f x)</code>.</p>
+
+<p>To obtain the <code>𝐈</code> is enough to type <code>I</code> and then cycle between its
+similar symbols with ALT-L. The same for <code>𝐂</code>. Notations cannot use
+regular letters or the round parentheses, thus their variants (like the 
+bold ones) have to be used.</p>
+
+<p>The first notation associates <code>𝐈 a</code> with <code>'I $a</code> where <code>'I</code> is a 
+new content element to which a term <code>$a</code> is passed.</p>
+
+<p>Content elements have to be interpreted, and possibly multiple, 
+incompatible, interpretations can be defined.</p>
+
+<pre><code>interpretation "I" 'I a = (I ? a).
+interpretation "C" 'C a i = (C ? a i).
+</code></pre>
+
+<p>The <code>interpretation</code> command allows to define the mapping between
+the content level and the terms level. Here we associate the <code>I</code> and
+<code>C</code> projections of the Axiom set record, where the Axiom set is an implicit 
+argument <code>?</code> to be inferred by the system.</p>
+
+<p>Interpretation are bi-directional, thus when displaying a term like 
+<code>C _ a i</code>, the system looks for a presentation for the content element
+<code>'C a i</code>. </p>
+
+<pre><code>notation &lt; "𝐈  \sub( ❨a❩ )" non associative with precedence 70 for @{ 'I $a }.
+notation &lt; "𝐂 \sub( ❨a,\emsp i❩ )" non associative with precedence 70 for @{ 'C $a $i }.
+</code></pre>
+
+<p>For output purposes we can define more complex notations, for example
+we can put bold parentheses around the arguments of <code>𝐈</code> and <code>𝐂</code>, decreasing
+the size of the arguments and lowering their baseline (i.e. putting them
+as subscript), separating them with a comma followed by a little space.</p>
+
+<h2>The first (technical) definition</h2>
+
+<p>Before defining the cover relation as an inductive predicate, one
+has to notice that the infinity rule uses, in its hypotheses, the 
+cover relation between two subsets, while the inductive predicate 
+we are going to define relates an element and a subset.</p>
+
+<pre><code>                a ∈ U                i ∈ I(a)    C(a,i) ◃ U
+(reflexivity) ⎼⎼⎼⎼⎼⎼⎼⎼⎼  (infinity) ⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼
+                a ◃ U                       a ◃ U
+</code></pre>
+
+<p>An option would be to unfold the definition of cover between subsets,
+but we prefer to define the abstract notion of cover between subsets
+(so that we can attach a (ambiguous) notation to it).</p>
+
+<p>Anyway, to ease the understanding of the definition of the cover relation 
+between subsets, we first define the inductive predicate unfolding the 
+definition, and we later refine it with.</p>
+
+<pre><code>ninductive xcover (A : Ax) (U : Ω^A) : A → CProp[0] ≝ 
+| xcreflexivity : ∀a:A. a ∈ U → xcover A U a
+| xcinfinity    : ∀a:A.∀i:𝐈 a. (∀y.y ∈ 𝐂 a i → xcover A U y) → xcover A U a.
+</code></pre>
+
+<p>We defined the xcover (x will be removed in the final version of the 
+definition) as an inductive predicate. The arity of the inductive
+predicate has to be carefully analyzed:</p>
+
+<blockquote>
+  <p>(A : Ax) (U : Ω^A) : A → CProp[0]</p>
+</blockquote>
+
+<p>The syntax separates with <code>:</code> abstractions that are fixed for every
+constructor (introduction rule) and abstractions that can change. In that 
+case the parameter <code>U</code> is abstracted once and for all in front of every 
+constructor, and every occurrence of the inductive predicate is applied to
+<code>U</code> in a consistent way. Arguments abstracted on the right of <code>:</code> are not
+constant, for example the xcinfinity constructor introduces <code>a ◃ U</code>,
+but under the assumption that (for every y) <code>y ◃ U</code>. In that rule, the left
+had side of the predicate changes, thus it has to be abstracted (in the arity
+of the inductive predicate) on the right of <code>:</code>.</p>
+
+<p>The intuition Valentini suggests is that we are defining the unary predicate
+"being covered by U" (i.e. <code>_ ◃ U</code>) and not "being covered" (i.e. <code>_ ◃ _</code>).
+Unluckily, the syntax of Matita forces us to abstract <code>U</code> first, and
+we will make it the second argument of the predicate using 
+the notational support Matita offers.</p>
+
+<pre><code>(** ncheck xcreflexivity. *) (* shows: ∀A:Ax.∀U:Ω^A.∀a:A.a∈U → xcover A U a *)
+</code></pre>
+
+<p>We want now to abstract out <code>(∀y.y ∈ 𝐂 a i → xcover A U y)</code> and define
+a notion <code>cover_set</code> to which a notation <code>𝐂 a i ◃ U</code> can be attached.</p>
+
+<p>This notion has to be abstracted over the cover relation (whose
+type is the arity of the inductive <code>xcover</code> predicate just defined).</p>
+
+<p>Then it has to be abstracted over the arguments of that cover relation,
+i.e. the axiom set and the set <code>U</code>, and the subset (in that case <code>𝐂 a i</code>)
+sitting on the left hand side of <code>◃</code>. </p>
+
+<pre><code>ndefinition cover_set : 
+  ∀cover: ∀A:Ax.Ω^A → A → CProp[0]. ∀A:Ax.∀C,U:Ω^A. CProp[0] 
+≝ 
+  λcover.                           λA,    C,U.     ∀y.y ∈ C → cover A U y.
+</code></pre>
+
+<p>The <code>ndefinition</code> command takes a name, a type and body (of that type).
+The type can be omitted, and in that case it is inferred by the system.
+If the type is given, the system uses it to infer implicit arguments
+of the body. In that case all types are left implicit in the body.</p>
+
+<p>We now define the notation <code>a ◃ b</code>. Here the keywork <code>hvbox</code>
+and <code>break</code> tell the system how to wrap text when it does not
+fit the screen (they can be safely ignored for the scope of
+this tutorial). We also add an interpretation for that notation, 
+where the (abstracted) cover relation is implicit. The system
+will not be able to infer it from the other arguments <code>C</code> and <code>U</code>
+and will thus prompt the user for it. This is also why we named this 
+interpretation <code>covers set temp</code>: we will later define another 
+interpretation in which the cover relation is the one we are going to 
+define.</p>
+
+<pre><code>notation "hvbox(a break ◃ b)" non associative with precedence 45
+for @{ 'covers $a $b }.
+
+interpretation "covers set temp" 'covers C U = (cover_set ?? C U).
+</code></pre>
+
+<h2>The cover relation</h2>
+
+<p>We can now define the cover relation using the <code>◃</code> notation for 
+the premise of infinity. </p>
+
+<pre><code>ninductive cover (A : Ax) (U : Ω^A) : A → CProp[0] ≝ 
+| creflexivity : ∀a. a ∈ U → cover A U a
+| cinfinity    : ∀a. ∀i. 𝐂 a i ◃ U → cover A U a.
+</code></pre>
+
+<p><img src="cover.png" alt="cover" /></p>
+
+<pre><code>napply cover;
+nqed.
+</code></pre>
+
+<p>Note that the system accepts the definition
+but prompts the user for the relation the <code>cover_set</code> notion is
+abstracted on.</p>
+
+<p>The horizontal line separates the hypotheses from the conclusion.
+The <code>napply cover</code> command tells the system that the relation
+it is looking for is exactly our first context entry (i.e. the inductive
+predicate we are defining, up to α-conversion); while the <code>nqed</code> command
+ends a definition or proof.</p>
+
+<p>We can now define the interpretation for the cover relation between an
+element and a subset first, then between two subsets (but this time
+we fix the relation <code>cover_set</code> is abstracted on).</p>
+
+<pre><code>interpretation "covers" 'covers a U = (cover ? U a).
+interpretation "covers set" 'covers a U = (cover_set cover ? a U).
+</code></pre>
+
+<p>We will proceed similarly for the fish relation, but before going
+on it is better to give a short introduction to the proof mode of Matita.
+We define again the <code>cover_set</code> term, but this time we build
+its body interactively. In the λ-calculus Matita is based on, CIC, proofs
+and terms share the same syntax, and it is thus possible to use the
+commands devoted to build proof term also to build regular definitions.
+A tentative semantics for the proof mode commands (called tactics)
+in terms of sequent calculus rules are given in the
+<a href="#appendix">appendix</a>.</p>
+
+<pre><code>ndefinition xcover_set : 
+  ∀c: ∀A:Ax.Ω^A → A → CProp[0]. ∀A:Ax.∀C,U:Ω^A. CProp[0].
+</code></pre>
+
+<p><img src="xcover-set-1.png" alt="xcover-set-1" /></p>
+
+<p>The system asks for a proof of the full statement, in an empty context.</p>
+
+<p>The <code>#</code> command is the ∀-introduction rule, it gives a name to an 
+assumption putting it in the context, and generates a λ-abstraction
+in the proof term.</p>
+
+<pre><code>#cover; #A; #C; #U;
+</code></pre>
+
+<p><img src="xcover-set-2.png" alt="xcover-set-2" /></p>
+
+<p>We have now to provide a proposition, and we exhibit it. We left
+a part of it implicit; since the system cannot infer it it will
+ask for it later. 
+Note that the type of <code>∀y:A.y ∈ C → ?</code> is a proposition
+whenever <code>?</code> is a proposition.</p>
+
+<pre><code>napply (∀y:A.y ∈ C → ?);
+</code></pre>
+
+<p><img src="xcover-set-3.png" alt="xcover-set-3" /></p>
+
+<p>The proposition we want to provide is an application of the
+cover relation we have abstracted in the context. The command
+<code>napply</code>, if the given term has not the expected type (in that
+case it is a product versus a proposition) it applies it to as many 
+implicit arguments as necessary (in that case <code>? ? ?</code>).</p>
+
+<pre><code>napply cover;
+</code></pre>
+
+<p><img src="xcover-set-4.png" alt="xcover-set-4" /></p>
+
+<p>The system will now ask in turn the three implicit arguments 
+passed to cover. The syntax <code>##[</code> allows to start a branching
+to tackle every sub proof individually, otherwise every command
+is applied to every subproof. The command <code>##|</code> switches to the next
+subproof and <code>##]</code> ends the branching.  </p>
+
+<pre><code>##[ napply A;
+##| napply U;
+##| napply y;
+##]
+nqed.
+</code></pre>
+
+<h2>The fish relation</h2>
+
+<p>The definition of fish works exactly the same way as for cover, except 
+that it is defined as a coinductive proposition.</p>
+
+<pre><code>ndefinition fish_set ≝ λf:∀A:Ax.Ω^A → A → CProp[0].
+ λA,U,V.
+  ∃a.a ∈ V ∧ f A U a.
+
+(* a \ltimes b *)
+notation "hvbox(a break ⋉ b)" non associative with precedence 45
+for @{ 'fish $a $b }. 
+
+interpretation "fish set temp" 'fish A U = (fish_set ?? U A).
+
+ncoinductive fish (A : Ax) (F : Ω^A) : A → CProp[0] ≝ 
+| cfish : ∀a. a ∈ F → (∀i:𝐈 a .𝐂  a i ⋉ F) → fish A F a.
+napply fish;
+nqed.
+
+interpretation "fish set" 'fish A U = (fish_set fish ? U A).
+interpretation "fish" 'fish a U = (fish ? U a).
+</code></pre>
+
+<h2>Introduction rule for fish</h2>
+
+<p>Matita is able to generate elimination rules for inductive types</p>
+
+<pre><code>(** ncheck cover_rect_CProp0. *)
+</code></pre>
+
+<p>but not introduction rules for the coinductive case. </p>
+
+<pre><code>               P ⊆ U   (∀x,j.x ∈ P → C(x,j) ≬ P)   a ∈ P
+(fish intro) ⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼
+                               a ⋉ U
+</code></pre>
+
+<p>We thus have to define the introduction rule for fish by co-recursion.
+Here we again use the proof mode of Matita to exhibit the body of the
+corecursive function.</p>
+
+<pre><code>nlet corec fish_rec (A:Ax) (U: Ω^A)
+ (P: Ω^A) (H1: P ⊆ U)
+  (H2: ∀a:A. a ∈ P → ∀j: 𝐈 a. 𝐂 a j ≬ P): ∀a:A. ∀p: a ∈ P. a ⋉ U ≝ ?.
+</code></pre>
+
+<p><img src="def-fish-rec-1.png" alt="def-fish-rec-1" /></p>
+
+<p>Note the first item of the context, it is the corecursive function we are 
+defining. This item allows to perform the recursive call, but we will be
+allowed to do such call only after having generated a constructor of
+the fish coinductive type.</p>
+
+<p>We introduce <code>a</code> and <code>p</code>, and then return the fish constructor <code>cfish</code>.
+Since the constructor accepts two arguments, the system asks for them.</p>
+
+<pre><code>#a; #a_in_P; napply cfish;
+</code></pre>
+
+<p><img src="def-fish-rec-2.png" alt="def-fish-rec-2" /></p>
+
+<p>The first one is a proof that <code>a ∈ U</code>. This can be proved using <code>H1</code> and <code>p</code>.
+With the <code>nchange</code> tactic we change <code>H1</code> into an equivalent form (this step
+can be skipped, since the system would be able to unfold the definition
+of inclusion by itself)</p>
+
+<pre><code>##[ nchange in H1 with (∀b.b∈P → b∈U);
+</code></pre>
+
+<p><img src="def-fish-rec-2-1.png" alt="def-fish-rec-2-1" /></p>
+
+<p>It is now clear that <code>H1</code> can be applied. Again <code>napply</code> adds two 
+implicit arguments to <code>H1 ? ?</code>, obtaining a proof of <code>? ∈ U</code> given a proof
+that <code>? ∈ P</code>. Thanks to unification, the system understands that <code>?</code> is actually
+<code>a</code>, and it asks a proof that <code>a ∈ P</code>.</p>
+
+<pre><code>    napply H1;
+</code></pre>
+
+<p><img src="def-fish-rec-3.png" alt="def-fish-rec-3" /></p>
+
+<p>The <code>nassumption</code> tactic looks for the required proof in the context, and in
+that cases finds it in the last context position. </p>
+
+<p>We move now to the second branch of the proof, corresponding to the second
+argument of the <code>cfish</code> constructor.</p>
+
+<p>We introduce <code>i</code> and then we destruct <code>H2 a p i</code>, that being a proof
+of an overlap predicate, give as an element and a proof that it is 
+both in <code>𝐂 a i</code> and <code>P</code>.</p>
+
+<pre><code>    nassumption;
+##| #i; ncases (H2 a a_in_P i);
+</code></pre>
+
+<p><img src="def-fish-rec-5.png" alt="def-fish-rec-5" /></p>
+
+<p>We then introduce <code>x</code>, break the conjunction (the <code>*;</code> command is the
+equivalent of <code>ncases</code> but operates on the first hypothesis that can
+be introduced). We then introduce the two sides of the conjunction.</p>
+
+<pre><code>    #x; *; #xC; #xP;
+</code></pre>
+
+<p><img src="def-fish-rec-5-1.png" alt="def-fish-rec-5-1" /></p>
+
+<p>The goal is now the existence of a point in <code>𝐂 a i</code> fished by <code>U</code>.
+We thus need to use the introduction rule for the existential quantifier.
+In CIC it is a defined notion, that is an inductive type with just
+one constructor (one introduction rule) holding the witness and the proof
+that the witness satisfies a proposition.</p>
+
+<blockquote>
+  <p>ncheck Ex. </p>
+</blockquote>
+
+<p>Instead of trying to remember the name of the constructor, that should
+be used as the argument of <code>napply</code>, we can ask the system to find by
+itself the constructor name and apply it with the <code>@</code> tactic. 
+Note that some inductive predicates, like the disjunction, have multiple
+introduction rules, and thus <code>@</code> can be followed by a number identifying
+the constructor.</p>
+
+<pre><code>    @;
+</code></pre>
+
+<p><img src="def-fish-rec-6.png" alt="def-fish-rec-6" /></p>
+
+<p>After choosing <code>x</code> as the witness, we have to prove a conjunction,
+and we again apply the introduction rule for the inductively defined
+predicate <code>∧</code>.</p>
+
+<pre><code>    ##[ napply x
+    ##| @;
+</code></pre>
+
+<p><img src="def-fish-rec-7.png" alt="def-fish-rec-7" /></p>
+
+<p>The left hand side of the conjunction is trivial to prove, since it 
+is already in the context. The right hand side needs to perform
+the co-recursive call.</p>
+
+<pre><code>        ##[ napply xC; 
+        ##| napply (fish_rec ? U P);
+</code></pre>
+
+<p><img src="def-fish-rec-9.png" alt="def-fish-rec-9" /></p>
+
+<p>The co-recursive call needs some arguments, but all of them are
+in the context. Instead of explicitly mention them, we use the
+<code>nassumption</code> tactic, that simply tries to apply every context item.</p>
+
+<pre><code>            nassumption;
+        ##]
+    ##]
+##]
+nqed.
+</code></pre>
+
+<h2>Subset of covered/fished points</h2>
+
+<p>We now have to define the subset of <code>S</code> of points covered by <code>U</code>.
+We also define a prefix notation for it. Remember that the precedence
+of the prefix form of a symbol has to be higher than the precedence 
+of its infix form.</p>
+
+<pre><code>ndefinition coverage : ∀A:Ax.∀U:Ω^A.Ω^A ≝ λA,U.{ a | a ◃ U }.
+
+notation "◃U" non associative with precedence 55 for @{ 'coverage $U }.
+
+interpretation "coverage cover" 'coverage U = (coverage ? U).
+</code></pre>
+
+<p>Here we define the equation characterizing the cover relation. 
+Even if it is not part of the paper, we proved that <code>◃(U)</code> is 
+the minimum solution for
+such equation, the interested reader should be able to reply the proof
+with Matita.</p>
+
+<pre><code>ndefinition cover_equation : ∀A:Ax.∀U,X:Ω^A.CProp[0] ≝  λA,U,X. 
+  ∀a.a ∈ X ↔ (a ∈ U ∨ ∃i:𝐈 a.∀y.y ∈ 𝐂 a i → y ∈ X).  
+
+ntheorem coverage_cover_equation : ∀A,U. cover_equation A U (◃U).
+#A; #U; #a; @; #H;
+##[ nelim H; #b; 
+    ##[ #bU; @1; nassumption;
+    ##| #i; #CaiU; #IH; @2; @ i; #c; #cCbi; ncases (IH ? cCbi);
+        ##[ #E; @; napply E;
+        ##| #_; napply CaiU; nassumption; ##] ##]
+##| ncases H; ##[ #E; @; nassumption]
+    *; #j; #Hj; @2 j; #w; #wC; napply Hj; nassumption;
+##]
+nqed. 
+
+ntheorem coverage_min_cover_equation : 
+  ∀A,U,W. cover_equation A U W → ◃U ⊆ W.
+#A; #U; #W; #H; #a; #aU; nelim aU; #b;
+##[ #bU; ncases (H b); #_; #H1; napply H1; @1; nassumption;
+##| #i; #CbiU; #IH; ncases (H b); #_; #H1; napply H1; @2; @i; napply IH;
+##]
+nqed.
+</code></pre>
+
+<p>We similarly define the subset of points "fished" by <code>F</code>, the 
+equation characterizing <code>⋉(F)</code> and prove that fish is
+the biggest solution for such equation.</p>
+
+<pre><code>notation "⋉F" non associative with precedence 55
+for @{ 'fished $F }.
+
+ndefinition fished : ∀A:Ax.∀F:Ω^A.Ω^A ≝ λA,F.{ a | a ⋉ F }.
+
+interpretation "fished fish" 'fished F = (fished ? F).
+
+ndefinition fish_equation : ∀A:Ax.∀F,X:Ω^A.CProp[0] ≝ λA,F,X.
+  ∀a. a ∈ X ↔ a ∈ F ∧ ∀i:𝐈 a.∃y.y ∈ 𝐂 a i ∧ y ∈ X. 
+
+ntheorem fished_fish_equation : ∀A,F. fish_equation A F (⋉F).
+#A; #F; #a; @; (* *; non genera outtype che lega a *) #H; ncases H;
+##[ #b; #bF; #H2; @ bF; #i; ncases (H2 i); #c; *; #cC; #cF; @c; @ cC;
+    napply cF;  
+##| #aF; #H1; @ aF; napply H1;
+##]
+nqed.
+
+ntheorem fished_max_fish_equation : ∀A,F,G. fish_equation A F G → G ⊆ ⋉F.
+#A; #F; #G; #H; #a; #aG; napply (fish_rec … aG);
+#b; ncases (H b); #H1; #_; #bG; ncases (H1 bG); #E1; #E2; nassumption; 
+nqed.
+</code></pre>
+
+<h2>Part 2, the new set of axioms</h2>
+
+<p>Since the name of defined objects (record included) has to be unique
+within the same file, we prefix every field name
+in the new definition of the axiom set with <code>n</code>.</p>
+
+<pre><code>nrecord nAx : Type[1] ≝ { 
+  nS:&gt; Type[0]; 
+  nI: nS → Type[0];
+  nD: ∀a:nS. nI a → Type[0];
+  nd: ∀a:nS. ∀i:nI a. nD a i → nS
+}.
+</code></pre>
+
+<p>We again define a notation for the projections, making the 
+projected record an implicit argument. Note that, since we already have
+a notation for <code>𝐈</code>, we just add another interpretation for it. The
+system, looking at the argument of <code>𝐈</code>, will be able to choose
+the correct interpretation. </p>
+
+<pre><code>notation "𝐃 \sub ( ❨a,\emsp i❩ )" non associative with precedence 70 for @{ 'D $a $i }.
+notation "𝐝 \sub ( ❨a,\emsp i,\emsp j❩ )" non associative with precedence 70 for @{ 'd $a $i $j}.
+
+notation &gt; "𝐃 term 90 a term 90 i" non associative with precedence 70 for @{ 'D $a $i }.
+notation &gt; "𝐝 term 90 a term 90 i term 90 j" non associative with precedence 70 for @{ 'd $a $i $j}.
+
+interpretation "D" 'D a i = (nD ? a i).
+interpretation "d" 'd a i j = (nd ? a i j).
+interpretation "new I" 'I a = (nI ? a).
+</code></pre>
+
+<p>The first result the paper presents to motivate the new formulation
+of the axiom set is the possibility to define and old axiom set
+starting from a new one and vice versa. The key definition for
+such construction is the image of d(a,i).
+The paper defines the image as</p>
+
+<blockquote>
+  <p>Im[d(a,i)] = { d(a,i,j) | j : D(a,i) }</p>
+</blockquote>
+
+<p>but this not so formal notation poses some problems. The image is
+often used as the left hand side of the ⊆ predicate</p>
+
+<blockquote>
+  <p>Im[d(a,i)] ⊆ V</p>
+</blockquote>
+
+<p>Of course this writing is interpreted by the authors as follows </p>
+
+<blockquote>
+  <p>∀j:D(a,i). d(a,i,j) ∈ V</p>
+</blockquote>
+
+<p>If we need to use the image to define <code>𝐂</code> (a subset of <code>S</code>) we are obliged to
+form a subset, i.e. to place a single variable <code>{ here | … }</code> of type <code>S</code>.</p>
+
+<blockquote>
+  <p>Im[d(a,i)] = { y | ∃j:D(a,i). y = d(a,i,j) }</p>
+</blockquote>
+
+<p>This poses no theoretical problems, since <code>S</code> is a Type and thus 
+equipped with the <code>Id</code> equality. If <code>S</code> was a setoid, here the equality
+would have been the one of the setoid.</p>
+
+<p>Unless we define two different images, one for stating that the image is ⊆ of
+something and another one to define <code>𝐂</code>, we end up using always the latter.
+Thus the statement <code>Im[d(a,i)] ⊆ V</code> unfolds to</p>
+
+<blockquote>
+  <p>∀x:S. ( ∃j.x = d(a,i,j) ) → x ∈ V</p>
+</blockquote>
+
+<p>That, up to rewriting with the equation defining <code>x</code>, is what we mean.
+Since we decided to use <code>Id</code> the rewriting always work (the elimination
+principle for <code>Id</code> is Leibnitz's equality, that is quantified over
+the context. </p>
+
+<p>The problem that arises if we decide to make <code>S</code> a setoid is that 
+<code>V</code> has to be extensional w.r.t. the equality of <code>S</code> (i.e. the characteristic
+functional proposition has to quotient its input with a relation bigger
+than the one of <code>S</code>.</p>
+
+<blockquote>
+  <p>∀x,y:S. x = y → x ∈ V → y ∈ V</p>
+</blockquote>
+
+<p>If <code>V</code> is a complex construction, the proof may not be trivial.</p>
+
+<pre><code>include "logic/equality.ma".
+
+ndefinition image ≝ λA:nAx.λa:A.λi. { x | ∃j:𝐃 a i. x = 𝐝 a i j }.
+
+notation &gt; "𝐈𝐦  [𝐝 term 90 a term 90 i]" non associative with precedence 70 for @{ 'Im $a $i }.
+notation &lt; "𝐈𝐦  [𝐝 \sub ( ❨a,\emsp i❩ )]" non associative with precedence 70 for @{ 'Im $a $i }.
+
+interpretation "image" 'Im a i = (image ? a i).
+</code></pre>
+
+<p>Thanks to our definition of image, we can define a function mapping a
+new axiom set to an old one and vice versa. Note that in the second
+definition, when we give the <code>𝐝</code> component, the projection of the 
+Σ-type is inlined (constructed on the fly by <code>*;</code>) 
+while in the paper it was named <code>fst</code>.</p>
+
+<pre><code>ndefinition Ax_of_nAx : nAx → Ax.
+#A; @ A (nI ?); #a; #i; napply (𝐈𝐦 [𝐝 a i]);
+nqed.
+
+ndefinition nAx_of_Ax : Ax → nAx.
+#A; @ A (I ?);
+##[ #a; #i; napply (Σx:A.x ∈ 𝐂 a i);
+##| #a; #i; *; #x; #_; napply x;
+##]
+nqed.
+</code></pre>
+
+<p>We now prove that the two function above form a retraction pair for
+the <code>C</code> component of the axiom set. To prove that we face a little
+problem since CIC is not equipped with η-conversion. This means that
+the followin does not hold (where <code>A</code> is an axiom set).</p>
+
+<blockquote>
+  <p>A = (S A, I A, C A)</p>
+</blockquote>
+
+<p>This can be proved only under a pattern mach over <code>A</code>, that means
+that the resulting computation content of the proof is a program
+that computes something only if <code>A</code> is a concrete axiom set.</p>
+
+<p>To state the lemma we have to drop notation, and explicitly
+give the axiom set in input to the <code>C</code> projection.</p>
+
+<pre><code>nlemma Ax_nAx_equiv : 
+  ∀A:Ax. ∀a,i. C (Ax_of_nAx (nAx_of_Ax A)) a i ⊆ C A a i ∧
+               C A a i ⊆ C (Ax_of_nAx (nAx_of_Ax A)) a i.               
+#A; #a; #i; @; #b; #H;
+</code></pre>
+
+<p><img src="retr-1.png" alt="retr-1" /></p>
+
+<p>Look for example the type of <code>a</code>. The command <code>nchange in a with A</code>
+would fail because of the missing η-conversion rule. We have thus
+to pattern match over <code>A</code> and introduce its pieces.</p>
+
+<pre><code>##[  ncases A in a i b H; #S; #I; #C; #a; #i; #b; #H;
+</code></pre>
+
+<p><img src="retr-2.png" alt="retr-2" /></p>
+
+<p>Now the system accepts that the type of <code>a</code> is the fist component
+of the axiom set, now called <code>S</code>. Unfolding definitions in <code>H</code> we discover
+there is still some work to do.</p>
+
+<pre><code>     nchange in a with S; nwhd in H;
+</code></pre>
+
+<p><img src="retr-3.png" alt="retr-3" /></p>
+
+<p>To use the equation defining <code>b</code> we have to eliminate <code>H</code>. Unfolding
+definitions in <code>x</code> tell us there is still something to do. The <code>nrewrite</code>
+tactic is a shortcut for the elimination principle of the equality.
+It accepts an additional argument <code>&lt;</code> or <code>&gt;</code> to rewrite left-to-right
+or right-to-left. </p>
+
+<pre><code>     ncases H; #x; #E; nrewrite &gt; E; nwhd in x;
+</code></pre>
+
+<p><img src="retr-4.png" alt="retr-4" /></p>
+
+<p>We defined <code>𝐝</code> to be the first projection of <code>x</code>, thus we have to
+eliminate <code>x</code> to actually compute <code>𝐝</code>. </p>
+
+<p>The remaining part of the proof it not interesting and poses no
+new problems.</p>
+
+<pre><code>     ncases x; #b; #Hb; nnormalize; nassumption;
+##|  ncases A in a i b H; #S; #I; #C; #a; #i; #b; #H; @;
+     ##[ @ b; nassumption;
+     ##| nnormalize; @; ##]
+##]
+nqed.
+</code></pre>
+
+<p>We then define the inductive type of ordinals, parametrized over an axiom
+set. We also attach some notations to the constructors.</p>
+
+<pre><code>ninductive Ord (A : nAx) : Type[0] ≝ 
+ | oO : Ord A
+ | oS : Ord A → Ord A
+ | oL : ∀a:A.∀i.∀f:𝐃 a i → Ord A. Ord A.
+
+notation "0" non associative with precedence 90 for @{ 'oO }.
+notation "x+1" non associative with precedence 50 for @{'oS $x }.
+notation "Λ term 90 f" non associative with precedence 50 for @{ 'oL $f }.
+
+interpretation "ordinals Zero" 'oO = (oO ?).
+interpretation "ordinals Succ" 'oS x = (oS ? x).
+interpretation "ordinals Lambda" 'oL f = (oL ? ? ? f).
+</code></pre>
+
+<p>The definition of <code>U⎽x</code> is by recursion over the ordinal <code>x</code>. 
+We thus define a recursive function using the <code>nlet rec</code> command. 
+The <code>on x</code> directive tells
+the system on which argument the function is (structurally) recursive.</p>
+
+<p>In the <code>oS</code> case we use a local definition to name the recursive call
+since it is used twice.</p>
+
+<p>Note that Matita does not support notation in the left hand side
+of a pattern match, and thus the names of the constructors have to 
+be spelled out verbatim.</p>
+
+<pre><code>nlet rec famU (A : nAx) (U : Ω^A) (x : Ord A) on x : Ω^A ≝ 
+  match x with
+  [ oO ⇒ U
+  | oS y ⇒ let U_n ≝ famU A U y in U_n ∪ { x | ∃i.𝐈𝐦[𝐝 x i] ⊆ U_n} 
+  | oL a i f ⇒ { x | ∃j.x ∈ famU A U (f j) } ].
+
+notation &lt; "term 90 U \sub (term 90 x)" non associative with precedence 50 for @{ 'famU $U $x }.
+notation &gt; "U ⎽ term 90 x" non associative with precedence 50 for @{ 'famU $U $x }.
+
+interpretation "famU" 'famU U x = (famU ? U x).
+</code></pre>
+
+<p>We attach as the input notation for U_x the similar <code>U⎽x</code> where underscore,
+that is a character valid for identifier names, has been replaced by <code>⎽</code> that is
+not. The symbol <code>⎽</code> can act as a separator, and can be typed as an alternative
+for <code>_</code> (i.e. pressing ALT-L after <code>_</code>). </p>
+
+<p>The notion ◃(U) has to be defined as the subset of elements <code>y</code> <br />
+belonging to <code>U⎽x</code> for some <code>x</code>. Moreover, we have to define the notion
+of cover between sets again, since the one defined at the beginning
+of the tutorial works only for the old axiom set.</p>
+
+<pre><code>ndefinition ord_coverage : ∀A:nAx.∀U:Ω^A.Ω^A ≝ 
+  λA,U.{ y | ∃x:Ord A. y ∈ famU ? U x }.
+
+ndefinition ord_cover_set ≝ λc:∀A:nAx.Ω^A → Ω^A.λA,C,U.
+  ∀y.y ∈ C → y ∈ c A U.
+
+interpretation "coverage new cover" 'coverage U = (ord_coverage ? U).
+interpretation "new covers set" 'covers a U = (ord_cover_set ord_coverage ? a U).
+interpretation "new covers" 'covers a U = (mem ? (ord_coverage ? U) a).
+</code></pre>
+
+<p>Before proving that this cover relation validates the reflexivity and infinity
+rules, we prove this little technical lemma that is used in the proof for the 
+infinity rule.</p>
+
+<pre><code>nlemma ord_subset: ∀A:nAx.∀a:A.∀i,f,U.∀j:𝐃 a i. U⎽(f j) ⊆ U⎽(Λ f).
+#A; #a; #i; #f; #U; #j; #b; #bUf; @ j; nassumption;
+nqed.
+</code></pre>
+
+<p>The proof of infinity uses the following form of the Axiom of Choice,
+that cannot be proved inside Matita, since the existential quantifier
+lives in the sort of predicative propositions while the sigma in the conclusion
+lives in the sort of data types, and thus the former cannot be eliminated
+to provide the witness for the second.</p>
+
+<pre><code>naxiom AC : ∀A,a,i,U.
+  (∀j:𝐃 a i.∃x:Ord A.𝐝 a i j ∈ U⎽x) → (Σf.∀j:𝐃 a i.𝐝 a i j ∈ U⎽(f j)).
+</code></pre>
+
+<p>Note that, if we will decide later to identify ∃ and Σ, <code>AC</code> is
+trivially provable</p>
+
+<pre><code>nlemma AC_exists_is_sigma : ∀A,a,i,U.
+  (∀j:𝐃 a i.Σx:Ord A.𝐝 a i j ∈ U⎽x) → (Σf.∀j:𝐃 a i.𝐝 a i j ∈ U⎽(f j)).
+#A; #a; #i; #U; #H; @;
+##[ #j; ncases (H j); #x; #_; napply x;
+##| #j; ncases (H j); #x; #Hx; napply Hx; ##]
+nqed.
+</code></pre>
+
+<p>In case we made <code>S</code> a setoid, the following property has to be proved</p>
+
+<blockquote>
+  <p>nlemma U<em>x</em>is_ext: ∀A:nAx.∀a,b:A.∀x.∀U. a = b → b ∈ U⎽x → a ∈ U⎽x.</p>
+</blockquote>
+
+<p>Anyway this proof is a non trivial induction over x, that requires <code>𝐈</code> and <code>𝐃</code> to be
+declared as morphisms. </p>
+
+<p>The reflexivity proof is trivial, it is enough to provide the ordinal <code>0</code>
+as a witness, then <code>◃(U)</code> reduces to <code>U</code> by definition, 
+hence the conclusion. Note that <code>0</code> is between <code>(</code> and <code>)</code> to
+make it clear that it is a term (an ordinal) and not the number
+of the constructor we want to apply (that is the first and only one
+of the existential inductive type).</p>
+
+<pre><code>ntheorem new_coverage_reflexive: ∀A:nAx.∀U:Ω^A.∀a. a ∈ U → a ◃ U.
+#A; #U; #a; #H; @ (0); napply H;
+nqed.
+</code></pre>
+
+<p>We now proceed with the proof of the infinity rule.</p>
+
+<pre><code>alias symbol "covers" (instance 3) = "new covers set".
+ntheorem new_coverage_infinity:
+  ∀A:nAx.∀U:Ω^A.∀a:A. (∃i:𝐈 a. 𝐈𝐦[𝐝 a i] ◃ U) → a ◃ U.
+#A; #U; #a;
+</code></pre>
+
+<p><img src="n-cov-inf-1.png" alt="n-cov-inf-1" /></p>
+
+<p>We eliminate the existential, obtaining an <code>i</code> and a proof that the 
+image of <code>𝐝 a i</code> is covered by U. The <code>nnormalize</code> tactic computes the normal
+form of <code>H</code>, thus expands the definition of cover between sets.</p>
+
+<pre><code>*; #i; #H; nnormalize in H;
+</code></pre>
+
+<p><img src="n-cov-inf-2.png" alt="n-cov-inf-2" /></p>
+
+<p>When the paper proof considers <code>H</code>, it implicitly substitutes assumed 
+equation defining <code>y</code> in its conclusion. 
+In Matita this step is not completely trivial.
+We thus assert (<code>ncut</code>) the nicer form of <code>H</code> and prove it.</p>
+
+<pre><code>ncut (∀y:𝐃 a i.∃x:Ord A.𝐝 a i y ∈ U⎽x); ##[
+</code></pre>
+
+<p><img src="n-cov-inf-3.png" alt="n-cov-inf-3" /></p>
+
+<p>After introducing <code>z</code>, <code>H</code> can be applied (choosing <code>𝐝 a i z</code> as <code>y</code>). 
+What is the left to prove is that <code>∃j: 𝐃 a j. 𝐝 a i z = 𝐝 a i j</code>, that 
+becomes trivial if <code>j</code> is chosen to be <code>z</code>. </p>
+
+<pre><code>  #z; napply H; @ z; @; ##] #H';
+</code></pre>
+
+<p><img src="n-cov-inf-4.png" alt="n-cov-inf-4" /></p>
+
+<p>Under <code>H'</code> the axiom of choice <code>AC</code> can be eliminated, obtaining the <code>f</code> and 
+its property. Note that the axiom <code>AC</code> was abstracted over <code>A,a,i,U</code> before
+assuming <code>(∀j:𝐃 a i.∃x:Ord A.𝐝 a i j ∈ U⎽x)</code>. Thus the term that can be eliminated
+is <code>AC ???? H'</code> where the system is able to infer every <code>?</code>. Matita provides
+a facility to specify a number of <code>?</code> in a compact way, i.e. <code>…</code>. The system
+expand <code>…</code> first to zero, then one, then two, three and finally four question 
+marks, "guessing" how may of them are needed. </p>
+
+<pre><code>ncases (AC … H'); #f; #Hf;
+</code></pre>
+
+<p><img src="n-cov-inf-5.png" alt="n-cov-inf-5" /></p>
+
+<p>The paper proof does now a forward reasoning step, deriving (by the ord_subset 
+lemma we proved above) <code>Hf'</code> i.e. 𝐝 a i j ∈ U⎽(Λf).</p>
+
+<pre><code>ncut (∀j.𝐝 a i j ∈ U⎽(Λ f));
+  ##[ #j; napply (ord_subset … f … (Hf j));##] #Hf';
+</code></pre>
+
+<p><img src="n-cov-inf-6.png" alt="n-cov-inf-6" /></p>
+
+<p>To prove that <code>a◃U</code> we have to exhibit the ordinal x such that <code>a ∈ U⎽x</code>.</p>
+
+<pre><code>@ (Λ f+1);
+</code></pre>
+
+<p><img src="n-cov-inf-7.png" alt="n-cov-inf-7" /></p>
+
+<p>The definition of <code>U⎽(…+1)</code> expands to the union of two sets, and proving
+that <code>a ∈ X ∪ Y</code> is, by definition, equivalent to prove that <code>a</code> is in <code>X</code> or <code>Y</code>. 
+Applying the second constructor <code>@2;</code> of the disjunction, 
+we are left to prove that <code>a</code> belongs to the right hand side of the union.</p>
+
+<pre><code>@2;
+</code></pre>
+
+<p><img src="n-cov-inf-8.png" alt="n-cov-inf-8" /></p>
+
+<p>We thus provide <code>i</code> as the witness of the existential, introduce the 
+element being in the image and we are
+left to prove that it belongs to <code>U⎽(Λf)</code>. In the meanwhile, since belonging 
+to the image means that there exists an object in the domain …, we eliminate the
+existential, obtaining <code>d</code> (of type <code>𝐃 a i</code>) and the equation defining <code>x</code>.  </p>
+
+<pre><code>@i; #x; *; #d; #Hd;
+</code></pre>
+
+<p><img src="n-cov-inf-9.png" alt="n-cov-inf-9" /></p>
+
+<p>We just need to use the equational definition of <code>x</code> to obtain a conclusion
+that can be proved with <code>Hf'</code>. We assumed that <code>U⎽x</code> is extensional for
+every <code>x</code>, thus we are allowed to use <code>Hd</code> and close the proof.</p>
+
+<pre><code>nrewrite &gt; Hd; napply Hf';
+nqed.
+</code></pre>
+
+<p>The next proof is that ◃(U) is minimal. The hardest part of the proof
+is to prepare the goal for the induction. The desiderata is to prove
+<code>U⎽o ⊆ V</code> by induction on <code>o</code>, but the conclusion of the lemma is,
+unfolding all definitions:</p>
+
+<blockquote>
+  <p>∀x. x ∈ { y | ∃o:Ord A.y ∈ U⎽o } → x ∈ V</p>
+</blockquote>
+
+<pre><code>nlemma new_coverage_min :  
+  ∀A:nAx.∀U:Ω^A.∀V.U ⊆ V → (∀a:A.∀i.𝐈𝐦[𝐝 a i] ⊆ V → a ∈ V) → ◃U ⊆ V.
+#A; #U; #V; #HUV; #Im;#b;
+</code></pre>
+
+<p><img src="n-cov-min-2.png" alt="n-cov-min-2" /></p>
+
+<p>After all the introductions, event the element hidden in the ⊆ definition,
+we have to eliminate the existential quantifier, obtaining the ordinal <code>o</code></p>
+
+<pre><code>*; #o;
+</code></pre>
+
+<p><img src="n-cov-min-3.png" alt="n-cov-min-3" /></p>
+
+<p>What is left is almost right, but the element <code>b</code> is already in the
+context. We thus generalize every occurrence of <code>b</code> in 
+the current goal, obtaining <code>∀c.c ∈ U⎽o → c ∈ V</code> that is <code>U⎽o ⊆ V</code>.</p>
+
+<pre><code>ngeneralize in match b; nchange with (U⎽o ⊆ V);
+</code></pre>
+
+<p><img src="n-cov-min-4.png" alt="n-cov-min-4" /></p>
+
+<p>We then proceed by induction on <code>o</code> obtaining the following goals</p>
+
+<pre><code>nelim o;
+</code></pre>
+
+<p><img src="n-cov-min-5.png" alt="n-cov-min-5" /></p>
+
+<p>All of them can be proved using simple set theoretic arguments,
+the induction hypothesis and the assumption <code>Im</code>.</p>
+
+<pre><code>##[ napply HUV; 
+##| #p; #IH; napply subseteq_union_l; ##[ nassumption; ##]
+    #x; *; #i; #H; napply (Im ? i); napply (subseteq_trans … IH); napply H;
+##| #a; #i; #f; #IH; #x; *; #d; napply IH; ##]
+nqed.
+</code></pre>
+
+<p>The notion <code>F⎽x</code> is again defined by recursion over the ordinal <code>x</code>.</p>
+
+<pre><code>nlet rec famF (A: nAx) (F : Ω^A) (x : Ord A) on x : Ω^A ≝ 
+  match x with
+  [ oO ⇒ F
+  | oS o ⇒ let F_o ≝ famF A F o in F_o ∩ { x | ∀i:𝐈 x.∃j:𝐃 x i.𝐝 x i j ∈ F_o } 
+  | oL a i f ⇒ { x | ∀j:𝐃 a i.x ∈ famF A F (f j) }
+  ].
+
+interpretation "famF" 'famU U x = (famF ? U x).
+
+ndefinition ord_fished : ∀A:nAx.∀F:Ω^A.Ω^A ≝ λA,F.{ y | ∀x:Ord A. y ∈ F⎽x }.
+
+interpretation "fished new fish" 'fished U = (ord_fished ? U).
+interpretation "new fish" 'fish a U = (mem ? (ord_fished ? U) a).
+</code></pre>
+
+<p>The proof of compatibility uses this little result, that we 
+proved outside the main proof. </p>
+
+<pre><code>nlemma co_ord_subset: ∀A:nAx.∀F:Ω^A.∀a,i.∀f:𝐃 a i → Ord A.∀j. F⎽(Λ f) ⊆ F⎽(f j).
+#A; #F; #a; #i; #f; #j; #x; #H; napply H;
+nqed.
+</code></pre>
+
+<p>We assume the dual of the axiom of choice, as in the paper proof.</p>
+
+<pre><code>naxiom AC_dual: ∀A:nAx.∀a:A.∀i,F. 
+ (∀f:𝐃 a i → Ord A.∃x:𝐃 a i.𝐝 a i x ∈ F⎽(f x))
+    → ∃j:𝐃 a i.∀x:Ord A.𝐝 a i j ∈ F⎽x.
+</code></pre>
+
+<p>Proving the anti-reflexivity property is simple, since the
+assumption <code>a ⋉ F</code> states that for every ordinal <code>x</code> (and thus also 0)
+<code>a ∈ F⎽x</code>. If <code>x</code> is choose to be <code>0</code>, we obtain the thesis.</p>
+
+<pre><code>ntheorem new_fish_antirefl: ∀A:nAx.∀F:Ω^A.∀a. a ⋉ F → a ∈ F.
+#A; #F; #a; #H; nlapply (H 0); #aFo; napply aFo;
+nqed.
+</code></pre>
+
+<p>We now prove the compatibility property for the new fish relation.</p>
+
+<pre><code>ntheorem new_fish_compatible: 
+ ∀A:nAx.∀F:Ω^A.∀a. a ⋉ F → ∀i:𝐈 a.∃j:𝐃 a i.𝐝 a i j ⋉ F.
+#A; #F; #a; #aF; #i; nnormalize;
+</code></pre>
+
+<p><img src="n-f-compat-1.png" alt="n-f-compat-1" /></p>
+
+<p>After reducing to normal form the goal, we observe it is exactly the conclusion of
+the dual axiom of choice we just assumed. We thus apply it ad introduce the 
+fcuntion <code>f</code>.</p>
+
+<pre><code>napply AC_dual; #f;
+</code></pre>
+
+<p><img src="n-f-compat-2.png" alt="n-f-compat-2" /></p>
+
+<p>The hypothesis <code>aF</code> states that <code>a⋉F⎽x</code> for every <code>x</code>, and we choose <code>Λf+1</code>.</p>
+
+<pre><code>nlapply (aF (Λf+1)); #aLf;
+</code></pre>
+
+<p><img src="n-f-compat-3.png" alt="n-f-compat-3" /></p>
+
+<p>Since F_(Λf+1) is defined by recursion and we actually have a concrete input
+<code>Λf+1</code> for that recursive function, it can be computed. 
+Anyway, using the <code>nnormalize</code>
+tactic would reduce too much (both the <code>+1</code> and the <code>Λf</code> steps would be performed);
+we thus explicitly give a convertible type for that hypothesis, corresponding 
+the computation of the <code>+1</code> step, plus the unfolding the definition of
+the intersection.</p>
+
+<pre><code>nchange in aLf with 
+  (a ∈ F⎽(Λ f) ∧ ∀i:𝐈 a.∃j:𝐃 a i.𝐝 a i j ∈ F⎽(Λ f));
+</code></pre>
+
+<p><img src="n-f-compat-4.png" alt="n-f-compat-4" /></p>
+
+<p>We are interested in the right hand side of <code>aLf</code>, an in particular to
+its intance where the generic index in <code>𝐈 a</code> is <code>i</code>.</p>
+
+<pre><code>ncases aLf; #_; #H; nlapply (H i);
+</code></pre>
+
+<p><img src="n-f-compat-5.png" alt="n-f-compat-5" /></p>
+
+<p>We then eliminate the existential, obtaining <code>j</code> and its property <code>Hj</code>. We provide
+the same witness </p>
+
+<pre><code>*; #j; #Hj; @j;
+</code></pre>
+
+<p><img src="n-f-compat-6.png" alt="n-f-compat-6" /></p>
+
+<p>What is left to prove is exactly the <code>co_ord_subset</code> lemma we factored out
+of the main proof.</p>
+
+<pre><code>napply (co_ord_subset … Hj);
+nqed.
+</code></pre>
+
+<p>The proof that <code>⋉(F)</code> is maximal is exactly the dual one of the
+minimality of <code>◃(U)</code>. Thus the main problem is to obtain <code>G ⊆ F⎽o</code>
+before doing the induction over <code>o</code>.</p>
+
+<pre><code>ntheorem max_new_fished: 
+  ∀A:nAx.∀G:Ω^A.∀F:Ω^A.G ⊆ F → (∀a.a ∈ G → ∀i.𝐈𝐦[𝐝 a i] ≬ G) → G ⊆ ⋉F.
+#A; #G; #F; #GF; #H; #b; #HbG; #o; 
+ngeneralize in match HbG; ngeneralize in match b;
+nchange with (G ⊆ F⎽o);
+nelim o;
+##[ napply GF;
+##| #p; #IH; napply (subseteq_intersection_r … IH);
+    #x; #Hx; #i; ncases (H … Hx i); #c; *; *; #d; #Ed; #cG;
+    @d; napply IH;
+</code></pre>
+
+<p><img src="n-f-max-1.png" alt="n-f-max-1" /></p>
+
+<p>Note that here the right hand side of <code>∈</code> is <code>G</code> and not <code>F⎽p</code> as
+in the dual proof. If <code>S</code> was declare to be a setoid, to finish this proof
+would be enough to assume <code>G</code> extensional, and no proof of the
+extensionality of <code>F⎽p</code> is required. </p>
+
+<div id="appendix" class="anchor"></div>
+
+<h2>Appendix: tactics explanation</h2>
+
+<p>In this appendix we try to give a description of tactics
+in terms of sequent calculus rules annotated with proofs.
+The <code>:</code> separator has to be read as <em>is a proof of</em>, in the spirit
+of the Curry-Howard isomorphism.</p>
+
+<pre><code>              Γ ⊢  f  :  A_1 → … → A_n → B     Γ ⊢ ?_i  :  A_i 
+napply f;    ⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼
+                       Γ ⊢ (f ?_1 … ?_n )  :  B
+
+               Γ ⊢  ?  :  F → B       Γ ⊢ f  :  F 
+nlapply f;    ⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼
+                         Γ ⊢ (? f)  :  B
+
+
+             Γ; x : T  ⊢ ?  :  P(x) 
+#x;      ⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼
+            Γ ⊢ λx:T.?  :  ∀x:T.P(x)
+
+
+                   Γ ⊢ ?_i  :  args_i → P(k_i args_i)          
+ncases x;   ⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼
+            Γ ⊢ match x with [ k1 args1 ⇒ ?_1 | … | kn argsn ⇒ ?_n ]  :  P(x)                    
+
+
+                  Γ ⊢ ?i  :  ∀t. P(t) → P(k_i … t …)          
+nelim x;   ⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼
+               Γ ⊢ (T_rect_CProp0 ?_1 … ?_n)  :  P(x)
+</code></pre>
+
+<p>Where <code>T_rect_CProp0</code> is the induction principle for the 
+inductive type <code>T</code>.</p>
+
+<pre><code>                      Γ ⊢ ?  :  Q     Q ≡ P          
+nchange with Q;   ⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼
+                      Γ ⊢ ?  :  P
+</code></pre>
+
+<p>Where the equivalence relation between types <code>≡</code> keeps into account
+β-reduction, δ-reduction (definition unfolding), ζ-reduction (local
+definition unfolding), ι-reduction (pattern matching simplification),
+μ-reduction (recursive function computation) and ν-reduction (co-fixpoint
+computation).</p>
+
+<pre><code>                           Γ; H : Q; Δ ⊢ ?  :  G     Q ≡ P          
+nchange in H with Q; ⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼
+                           Γ; H : P; Δ ⊢ ?  :  G                    
+
+
+                           Γ; H : Q; Δ ⊢ ?  :  G     P →* Q           
+nnormalize in H; ⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼
+                           Γ; H : P; Δ ⊢ ?  :  G
+</code></pre>
+
+<p>Where <code>Q</code> is the normal form of <code>P</code> considering βδζιμν-reduction steps.</p>
+
+<pre><code>                   Γ ⊢ ?  :  Q     P →* Q          
+nnormalize; ⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼
+                   Γ ⊢ ?  :  P                    
+
+
+                Γ ⊢ ?_2  :  T → G    Γ ⊢ ?_1  :  T
+ncut T;   ⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼
+                           Γ ⊢ (?_2 ?_1)  :  G                    
+
+
+                            Γ ⊢ ?  :  ∀x.P(x)
+ngeneralize in match t; ⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼⎼
+                            Γ ⊢ (? t)  :  P(t)
+
+
+    nrewrite &lt; Ed; napply cG;    
+##| #a; #i; #f; #Hf; nchange with (G ⊆ { y | ∀x. y ∈ F⎽(f x) }); 
+    #b; #Hb; #d; napply (Hf d); napply Hb;
+##]
+nqed.
+</code></pre>
+
+<p><date>
+Last updated: $Date: 2009-10-28 15:46:19 +0100 (Wed, 28 Oct 2009) $
+</date></p>
+ </body>
+</html>
diff --git a/helm/www/matita/docs/tutorial/igft.pdf b/helm/www/matita/docs/tutorial/igft.pdf
new file mode 100644 (file)
index 0000000..b8c11c0
Binary files /dev/null and b/helm/www/matita/docs/tutorial/igft.pdf differ
diff --git a/helm/www/matita/docs/tutorial/n-cov-inf-1.png b/helm/www/matita/docs/tutorial/n-cov-inf-1.png
new file mode 100644 (file)
index 0000000..301e7e0
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-cov-inf-1.png differ
diff --git a/helm/www/matita/docs/tutorial/n-cov-inf-2.png b/helm/www/matita/docs/tutorial/n-cov-inf-2.png
new file mode 100644 (file)
index 0000000..1535bb6
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-cov-inf-2.png differ
diff --git a/helm/www/matita/docs/tutorial/n-cov-inf-3.png b/helm/www/matita/docs/tutorial/n-cov-inf-3.png
new file mode 100644 (file)
index 0000000..37e995e
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-cov-inf-3.png differ
diff --git a/helm/www/matita/docs/tutorial/n-cov-inf-4.png b/helm/www/matita/docs/tutorial/n-cov-inf-4.png
new file mode 100644 (file)
index 0000000..be3a381
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-cov-inf-4.png differ
diff --git a/helm/www/matita/docs/tutorial/n-cov-inf-5.png b/helm/www/matita/docs/tutorial/n-cov-inf-5.png
new file mode 100644 (file)
index 0000000..8893d86
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-cov-inf-5.png differ
diff --git a/helm/www/matita/docs/tutorial/n-cov-inf-6.png b/helm/www/matita/docs/tutorial/n-cov-inf-6.png
new file mode 100644 (file)
index 0000000..ec12346
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-cov-inf-6.png differ
diff --git a/helm/www/matita/docs/tutorial/n-cov-inf-7.png b/helm/www/matita/docs/tutorial/n-cov-inf-7.png
new file mode 100644 (file)
index 0000000..d3086da
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-cov-inf-7.png differ
diff --git a/helm/www/matita/docs/tutorial/n-cov-inf-8.png b/helm/www/matita/docs/tutorial/n-cov-inf-8.png
new file mode 100644 (file)
index 0000000..806d12a
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-cov-inf-8.png differ
diff --git a/helm/www/matita/docs/tutorial/n-cov-inf-9.png b/helm/www/matita/docs/tutorial/n-cov-inf-9.png
new file mode 100644 (file)
index 0000000..f3071a0
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-cov-inf-9.png differ
diff --git a/helm/www/matita/docs/tutorial/n-cov-min-2.png b/helm/www/matita/docs/tutorial/n-cov-min-2.png
new file mode 100644 (file)
index 0000000..f4c78c4
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-cov-min-2.png differ
diff --git a/helm/www/matita/docs/tutorial/n-cov-min-3.png b/helm/www/matita/docs/tutorial/n-cov-min-3.png
new file mode 100644 (file)
index 0000000..e967998
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-cov-min-3.png differ
diff --git a/helm/www/matita/docs/tutorial/n-cov-min-4.png b/helm/www/matita/docs/tutorial/n-cov-min-4.png
new file mode 100644 (file)
index 0000000..1440940
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-cov-min-4.png differ
diff --git a/helm/www/matita/docs/tutorial/n-cov-min-5.png b/helm/www/matita/docs/tutorial/n-cov-min-5.png
new file mode 100644 (file)
index 0000000..df40986
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-cov-min-5.png differ
diff --git a/helm/www/matita/docs/tutorial/n-f-compat-1.png b/helm/www/matita/docs/tutorial/n-f-compat-1.png
new file mode 100644 (file)
index 0000000..e1b449e
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-f-compat-1.png differ
diff --git a/helm/www/matita/docs/tutorial/n-f-compat-2.png b/helm/www/matita/docs/tutorial/n-f-compat-2.png
new file mode 100644 (file)
index 0000000..3da01d4
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-f-compat-2.png differ
diff --git a/helm/www/matita/docs/tutorial/n-f-compat-3.png b/helm/www/matita/docs/tutorial/n-f-compat-3.png
new file mode 100644 (file)
index 0000000..6cd542f
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-f-compat-3.png differ
diff --git a/helm/www/matita/docs/tutorial/n-f-compat-4.png b/helm/www/matita/docs/tutorial/n-f-compat-4.png
new file mode 100644 (file)
index 0000000..9879633
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-f-compat-4.png differ
diff --git a/helm/www/matita/docs/tutorial/n-f-compat-5.png b/helm/www/matita/docs/tutorial/n-f-compat-5.png
new file mode 100644 (file)
index 0000000..7eeb2a2
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-f-compat-5.png differ
diff --git a/helm/www/matita/docs/tutorial/n-f-compat-6.png b/helm/www/matita/docs/tutorial/n-f-compat-6.png
new file mode 100644 (file)
index 0000000..4b40cd0
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-f-compat-6.png differ
diff --git a/helm/www/matita/docs/tutorial/n-f-max-1.png b/helm/www/matita/docs/tutorial/n-f-max-1.png
new file mode 100644 (file)
index 0000000..4040508
Binary files /dev/null and b/helm/www/matita/docs/tutorial/n-f-max-1.png differ
diff --git a/helm/www/matita/docs/tutorial/retr-1.png b/helm/www/matita/docs/tutorial/retr-1.png
new file mode 100644 (file)
index 0000000..e746749
Binary files /dev/null and b/helm/www/matita/docs/tutorial/retr-1.png differ
diff --git a/helm/www/matita/docs/tutorial/retr-2.png b/helm/www/matita/docs/tutorial/retr-2.png
new file mode 100644 (file)
index 0000000..69f3827
Binary files /dev/null and b/helm/www/matita/docs/tutorial/retr-2.png differ
diff --git a/helm/www/matita/docs/tutorial/retr-3.png b/helm/www/matita/docs/tutorial/retr-3.png
new file mode 100644 (file)
index 0000000..05e5582
Binary files /dev/null and b/helm/www/matita/docs/tutorial/retr-3.png differ
diff --git a/helm/www/matita/docs/tutorial/retr-4.png b/helm/www/matita/docs/tutorial/retr-4.png
new file mode 100644 (file)
index 0000000..b8d1f00
Binary files /dev/null and b/helm/www/matita/docs/tutorial/retr-4.png differ
diff --git a/helm/www/matita/docs/tutorial/retr2.png b/helm/www/matita/docs/tutorial/retr2.png
new file mode 100644 (file)
index 0000000..6924a4e
Binary files /dev/null and b/helm/www/matita/docs/tutorial/retr2.png differ
diff --git a/helm/www/matita/docs/tutorial/sh_gedit.css b/helm/www/matita/docs/tutorial/sh_gedit.css
new file mode 100644 (file)
index 0000000..a156d82
--- /dev/null
@@ -0,0 +1,66 @@
+pre.sh_sourceCode {\r
+  background-color: white;\r
+  color: black;\r
+  font-style: normal;\r
+  font-weight: normal;\r
+}\r
+\r
+pre.sh_sourceCode .sh_keyword { color: brown; font-weight: bold; }           /* language keywords */\r
+pre.sh_sourceCode .sh_type { color: darkgreen; font-weight: bold; }          /* basic types */\r
+pre.sh_sourceCode .sh_usertype { color: teal; }                             /* user defined types */\r
+pre.sh_sourceCode .sh_string { color: magenta; font-family: monospace; }        /* strings and chars */\r
+pre.sh_sourceCode .sh_regexp { color: orange; font-family: monospace; }     /* regular expressions */\r
+pre.sh_sourceCode .sh_specialchar { color: pink; font-family: monospace; }  /* e.g., \n, \t, \\ */\r
+pre.sh_sourceCode .sh_comment { color: blue; }         /* comments */\r
+pre.sh_sourceCode .sh_number { color: black; }                             /* literal numbers */\r
+pre.sh_sourceCode .sh_preproc { color: MediumSeaGreen; }       /* e.g., #include, import */\r
+pre.sh_sourceCode .sh_symbol { color:brown; font-weight: bold; }                            /* e.g., <, >, + */\r
+pre.sh_sourceCode .sh_function { color: black; font-weight: bold; }         /* function calls and declarations */\r
+pre.sh_sourceCode .sh_cbracket { color: red; }                              /* block brackets (e.g., {, }) */\r
+pre.sh_sourceCode .sh_todo { font-weight: bold; background-color: cyan; }   /* TODO and FIXME */\r
+\r
+/* Predefined variables and functions (for instance glsl) */\r
+pre.sh_sourceCode .sh_predef_var { color: darkblue; }\r
+pre.sh_sourceCode .sh_predef_func { color: darkblue; font-weight: bold; }\r
+\r
+/* for OOP */\r
+pre.sh_sourceCode .sh_classname { color: teal; }\r
+\r
+/* line numbers (not yet implemented) */\r
+pre.sh_sourceCode .sh_linenum { color: black; font-family: monospace; }\r
+\r
+/* Internet related */\r
+pre.sh_sourceCode .sh_url { color: blue; text-decoration: underline; font-family: monospace; }\r
+\r
+/* for ChangeLog and Log files */\r
+pre.sh_sourceCode .sh_date { color: blue; font-weight: bold; }\r
+pre.sh_sourceCode .sh_time, pre.sh_sourceCode .sh_file { color: darkblue; font-weight: bold; }\r
+pre.sh_sourceCode .sh_ip, pre.sh_sourceCode .sh_name { color: darkgreen; }\r
+\r
+/* for Prolog, Perl... */\r
+pre.sh_sourceCode .sh_variable { color: darkgreen; }\r
+\r
+/* for LaTeX */\r
+pre.sh_sourceCode .sh_italics { color: darkgreen; font-style: italic; }\r
+pre.sh_sourceCode .sh_bold { color: darkgreen; font-weight: bold; }\r
+pre.sh_sourceCode .sh_underline { color: darkgreen; text-decoration: underline; }\r
+pre.sh_sourceCode .sh_fixed { color: green; font-family: monospace; }\r
+pre.sh_sourceCode .sh_argument { color: darkgreen; }\r
+pre.sh_sourceCode .sh_optionalargument { color: purple; }\r
+pre.sh_sourceCode .sh_math { color: orange; }\r
+pre.sh_sourceCode .sh_bibtex { color: blue; }\r
+\r
+/* for diffs */\r
+pre.sh_sourceCode .sh_oldfile { color: orange; }\r
+pre.sh_sourceCode .sh_newfile { color: darkgreen; }\r
+pre.sh_sourceCode .sh_difflines { color: blue; }\r
+\r
+/* for css */\r
+pre.sh_sourceCode .sh_selector { color: purple; }\r
+pre.sh_sourceCode .sh_property { color: blue; }\r
+pre.sh_sourceCode .sh_value { color: darkgreen; font-style: italic; }\r
+\r
+/* other */\r
+pre.sh_sourceCode .sh_section { color: black; font-weight: bold; }\r
+pre.sh_sourceCode .sh_paren { color: red; }\r
+pre.sh_sourceCode .sh_attribute { color: darkgreen; }\r
diff --git a/helm/www/matita/docs/tutorial/sh_grafite.js b/helm/www/matita/docs/tutorial/sh_grafite.js
new file mode 100644 (file)
index 0000000..2e6bcdf
--- /dev/null
@@ -0,0 +1,71 @@
+if (! this.sh_languages) {
+  this.sh_languages = {};
+}
+sh_languages['grafite'] = [
+  [
+    [
+      /\b(?:napply|ncases|nelim|nletin|ncut|nauto|nwhd|nnormalize|nassumption|ngeneralize|nchange|nrewrite|nlapply)\b/g,
+      'sh_preproc',
+      -1
+    ],
+    [
+      /\b[+-]?(?:(?:0x[A-Fa-f0-9]+)|(?:(?:[\d]*\.)?[\d]+(?:[eE][+-]?[\d]+)?))u?(?:(?:int(?:8|16|32|64))|L)?\b/g,
+      'sh_number',
+      -1
+    ],
+    [
+      /"/g,
+      'sh_string',
+      1
+    ],
+    [
+      /\b(?:match|with|in|naxiom|nlemma|ntheorem|nrecord|for|ninductive|ncoinductive|ndefinition|nlet|rec|corec|notation|interpretation|nqed|include)\b/g,
+      'sh_keyword',
+      -1
+    ],
+    [
+      /\(\*/g,
+      'sh_comment',
+      2
+    ],
+    [
+      /\b(?:CProp|Type|Prop)\b/g,
+      'sh_type',
+      -1
+    ],
+    [
+      /\[|\]|\||\$|@|\{|\}/g,
+      'sh_symbol',
+      -1
+    ]
+  ],
+  [
+    [
+      /$/g,
+      null,
+      -2
+    ],
+    [
+      /\\(?:\\|")/g,
+      null,
+      -1
+    ],
+    [
+      /"/g,
+      'sh_string',
+      -2
+    ]
+  ],
+  [
+    [
+      /\*\)/g,
+      'sh_comment',
+      -2
+    ],
+    [
+      /\(\*/g,
+      'sh_comment',
+      2
+    ]
+  ]
+];
diff --git a/helm/www/matita/docs/tutorial/sh_main.js b/helm/www/matita/docs/tutorial/sh_main.js
new file mode 100644 (file)
index 0000000..1fe3ea0
--- /dev/null
@@ -0,0 +1,538 @@
+/*\r
+SHJS - Syntax Highlighting in JavaScript\r
+Copyright (C) 2007, 2008 gnombat@users.sourceforge.net\r
+License: http://shjs.sourceforge.net/doc/gplv3.html\r
+*/\r
+\r
+if (! this.sh_languages) {\r
+  this.sh_languages = {};\r
+}\r
+var sh_requests = {};\r
+\r
+function sh_isEmailAddress(url) {\r
+  if (/^mailto:/.test(url)) {\r
+    return false;\r
+  }\r
+  return url.indexOf('@') !== -1;\r
+}\r
+\r
+function sh_setHref(tags, numTags, inputString) {\r
+  var url = inputString.substring(tags[numTags - 2].pos, tags[numTags - 1].pos);\r
+  if (url.length >= 2 && url.charAt(0) === '<' && url.charAt(url.length - 1) === '>') {\r
+    url = url.substr(1, url.length - 2);\r
+  }\r
+  if (sh_isEmailAddress(url)) {\r
+    url = 'mailto:' + url;\r
+  }\r
+  tags[numTags - 2].node.href = url;\r
+}\r
+\r
+/*\r
+Konqueror has a bug where the regular expression /$/g will not match at the end\r
+of a line more than once:\r
+\r
+  var regex = /$/g;\r
+  var match;\r
+\r
+  var line = '1234567890';\r
+  regex.lastIndex = 10;\r
+  match = regex.exec(line);\r
+\r
+  var line2 = 'abcde';\r
+  regex.lastIndex = 5;\r
+  match = regex.exec(line2);  // fails\r
+*/\r
+function sh_konquerorExec(s) {\r
+  var result = [''];\r
+  result.index = s.length;\r
+  result.input = s;\r
+  return result;\r
+}\r
+\r
+/**\r
+Highlights all elements containing source code in a text string.  The return\r
+value is an array of objects, each representing an HTML start or end tag.  Each\r
+object has a property named pos, which is an integer representing the text\r
+offset of the tag. Every start tag also has a property named node, which is the\r
+DOM element started by the tag. End tags do not have this property.\r
+@param  inputString  a text string\r
+@param  language  a language definition object\r
+@return  an array of tag objects\r
+*/\r
+function sh_highlightString(inputString, language) {\r
+  if (/Konqueror/.test(navigator.userAgent)) {\r
+    if (! language.konquered) {\r
+      for (var s = 0; s < language.length; s++) {\r
+        for (var p = 0; p < language[s].length; p++) {\r
+          var r = language[s][p][0];\r
+          if (r.source === '$') {\r
+            r.exec = sh_konquerorExec;\r
+          }\r
+        }\r
+      }\r
+      language.konquered = true;\r
+    }\r
+  }\r
+\r
+  var a = document.createElement('a');\r
+  var span = document.createElement('span');\r
+\r
+  // the result\r
+  var tags = [];\r
+  var numTags = 0;\r
+\r
+  // each element is a pattern object from language\r
+  var patternStack = [];\r
+\r
+  // the current position within inputString\r
+  var pos = 0;\r
+\r
+  // the name of the current style, or null if there is no current style\r
+  var currentStyle = null;\r
+\r
+  var output = function(s, style) {\r
+    var length = s.length;\r
+    // this is more than just an optimization - we don't want to output empty <span></span> elements\r
+    if (length === 0) {\r
+      return;\r
+    }\r
+    if (! style) {\r
+      var stackLength = patternStack.length;\r
+      if (stackLength !== 0) {\r
+        var pattern = patternStack[stackLength - 1];\r
+        // check whether this is a state or an environment\r
+        if (! pattern[3]) {\r
+          // it's not a state - it's an environment; use the style for this environment\r
+          style = pattern[1];\r
+        }\r
+      }\r
+    }\r
+    if (currentStyle !== style) {\r
+      if (currentStyle) {\r
+        tags[numTags++] = {pos: pos};\r
+        if (currentStyle === 'sh_url') {\r
+          sh_setHref(tags, numTags, inputString);\r
+        }\r
+      }\r
+      if (style) {\r
+        var clone;\r
+        if (style === 'sh_url') {\r
+          clone = a.cloneNode(false);\r
+        }\r
+        else {\r
+          clone = span.cloneNode(false);\r
+        }\r
+        clone.className = style;\r
+        tags[numTags++] = {node: clone, pos: pos};\r
+      }\r
+    }\r
+    pos += length;\r
+    currentStyle = style;\r
+  };\r
+\r
+  var endOfLinePattern = /\r\n|\r|\n/g;\r
+  endOfLinePattern.lastIndex = 0;\r
+  var inputStringLength = inputString.length;\r
+  while (pos < inputStringLength) {\r
+    var start = pos;\r
+    var end;\r
+    var startOfNextLine;\r
+    var endOfLineMatch = endOfLinePattern.exec(inputString);\r
+    if (endOfLineMatch === null) {\r
+      end = inputStringLength;\r
+      startOfNextLine = inputStringLength;\r
+    }\r
+    else {\r
+      end = endOfLineMatch.index;\r
+      startOfNextLine = endOfLinePattern.lastIndex;\r
+    }\r
+\r
+    var line = inputString.substring(start, end);\r
+\r
+    var matchCache = [];\r
+    for (;;) {\r
+      var posWithinLine = pos - start;\r
+\r
+      var stateIndex;\r
+      var stackLength = patternStack.length;\r
+      if (stackLength === 0) {\r
+        stateIndex = 0;\r
+      }\r
+      else {\r
+        // get the next state\r
+        stateIndex = patternStack[stackLength - 1][2];\r
+      }\r
+\r
+      var state = language[stateIndex];\r
+      var numPatterns = state.length;\r
+      var mc = matchCache[stateIndex];\r
+      if (! mc) {\r
+        mc = matchCache[stateIndex] = [];\r
+      }\r
+      var bestMatch = null;\r
+      var bestPatternIndex = -1;\r
+      for (var i = 0; i < numPatterns; i++) {\r
+        var match;\r
+        if (i < mc.length && (mc[i] === null || posWithinLine <= mc[i].index)) {\r
+          match = mc[i];\r
+        }\r
+        else {\r
+          var regex = state[i][0];\r
+          regex.lastIndex = posWithinLine;\r
+          match = regex.exec(line);\r
+          mc[i] = match;\r
+        }\r
+        if (match !== null && (bestMatch === null || match.index < bestMatch.index)) {\r
+          bestMatch = match;\r
+          bestPatternIndex = i;\r
+          if (match.index === posWithinLine) {\r
+            break;\r
+          }\r
+        }\r
+      }\r
+\r
+      if (bestMatch === null) {\r
+        output(line.substring(posWithinLine), null);\r
+        break;\r
+      }\r
+      else {\r
+        // got a match\r
+        if (bestMatch.index > posWithinLine) {\r
+          output(line.substring(posWithinLine, bestMatch.index), null);\r
+        }\r
+\r
+        var pattern = state[bestPatternIndex];\r
+\r
+        var newStyle = pattern[1];\r
+        var matchedString;\r
+        if (newStyle instanceof Array) {\r
+          for (var subexpression = 0; subexpression < newStyle.length; subexpression++) {\r
+            matchedString = bestMatch[subexpression + 1];\r
+            output(matchedString, newStyle[subexpression]);\r
+          }\r
+        }\r
+        else {\r
+          matchedString = bestMatch[0];\r
+          output(matchedString, newStyle);\r
+        }\r
+\r
+        switch (pattern[2]) {\r
+        case -1:\r
+          // do nothing\r
+          break;\r
+        case -2:\r
+          // exit\r
+          patternStack.pop();\r
+          break;\r
+        case -3:\r
+          // exitall\r
+          patternStack.length = 0;\r
+          break;\r
+        default:\r
+          // this was the start of a delimited pattern or a state/environment\r
+          patternStack.push(pattern);\r
+          break;\r
+        }\r
+      }\r
+    }\r
+\r
+    // end of the line\r
+    if (currentStyle) {\r
+      tags[numTags++] = {pos: pos};\r
+      if (currentStyle === 'sh_url') {\r
+        sh_setHref(tags, numTags, inputString);\r
+      }\r
+      currentStyle = null;\r
+    }\r
+    pos = startOfNextLine;\r
+  }\r
+\r
+  return tags;\r
+}\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+// DOM-dependent functions\r
+\r
+function sh_getClasses(element) {\r
+  var result = [];\r
+  var htmlClass = element.className;\r
+  if (htmlClass && htmlClass.length > 0) {\r
+    var htmlClasses = htmlClass.split(' ');\r
+    for (var i = 0; i < htmlClasses.length; i++) {\r
+      if (htmlClasses[i].length > 0) {\r
+        result.push(htmlClasses[i]);\r
+      }\r
+    }\r
+  }\r
+  return result;\r
+}\r
+\r
+function sh_addClass(element, name) {\r
+  var htmlClasses = sh_getClasses(element);\r
+  for (var i = 0; i < htmlClasses.length; i++) {\r
+    if (name.toLowerCase() === htmlClasses[i].toLowerCase()) {\r
+      return;\r
+    }\r
+  }\r
+  htmlClasses.push(name);\r
+  element.className = htmlClasses.join(' ');\r
+}\r
+\r
+/**\r
+Extracts the tags from an HTML DOM NodeList.\r
+@param  nodeList  a DOM NodeList\r
+@param  result  an object with text, tags and pos properties\r
+*/\r
+function sh_extractTagsFromNodeList(nodeList, result) {\r
+  var length = nodeList.length;\r
+  for (var i = 0; i < length; i++) {\r
+    var node = nodeList.item(i);\r
+    switch (node.nodeType) {\r
+    case 1:\r
+      if (node.nodeName.toLowerCase() === 'br') {\r
+        var terminator;\r
+        if (/MSIE/.test(navigator.userAgent)) {\r
+          terminator = '\r';\r
+        }\r
+        else {\r
+          terminator = '\n';\r
+        }\r
+        result.text.push(terminator);\r
+        result.pos++;\r
+      }\r
+      else {\r
+        result.tags.push({node: node.cloneNode(false), pos: result.pos});\r
+        sh_extractTagsFromNodeList(node.childNodes, result);\r
+        result.tags.push({pos: result.pos});\r
+      }\r
+      break;\r
+    case 3:\r
+    case 4:\r
+      result.text.push(node.data);\r
+      result.pos += node.length;\r
+      break;\r
+    }\r
+  }\r
+}\r
+\r
+/**\r
+Extracts the tags from the text of an HTML element. The extracted tags will be\r
+returned as an array of tag objects. See sh_highlightString for the format of\r
+the tag objects.\r
+@param  element  a DOM element\r
+@param  tags  an empty array; the extracted tag objects will be returned in it\r
+@return  the text of the element\r
+@see  sh_highlightString\r
+*/\r
+function sh_extractTags(element, tags) {\r
+  var result = {};\r
+  result.text = [];\r
+  result.tags = tags;\r
+  result.pos = 0;\r
+  sh_extractTagsFromNodeList(element.childNodes, result);\r
+  return result.text.join('');\r
+}\r
+\r
+/**\r
+Merges the original tags from an element with the tags produced by highlighting.\r
+@param  originalTags  an array containing the original tags\r
+@param  highlightTags  an array containing the highlighting tags - these must not overlap\r
+@result  an array containing the merged tags\r
+*/\r
+function sh_mergeTags(originalTags, highlightTags) {\r
+  var numOriginalTags = originalTags.length;\r
+  if (numOriginalTags === 0) {\r
+    return highlightTags;\r
+  }\r
+\r
+  var numHighlightTags = highlightTags.length;\r
+  if (numHighlightTags === 0) {\r
+    return originalTags;\r
+  }\r
+\r
+  var result = [];\r
+  var originalIndex = 0;\r
+  var highlightIndex = 0;\r
+\r
+  while (originalIndex < numOriginalTags && highlightIndex < numHighlightTags) {\r
+    var originalTag = originalTags[originalIndex];\r
+    var highlightTag = highlightTags[highlightIndex];\r
+\r
+    if (originalTag.pos <= highlightTag.pos) {\r
+      result.push(originalTag);\r
+      originalIndex++;\r
+    }\r
+    else {\r
+      result.push(highlightTag);\r
+      if (highlightTags[highlightIndex + 1].pos <= originalTag.pos) {\r
+        highlightIndex++;\r
+        result.push(highlightTags[highlightIndex]);\r
+        highlightIndex++;\r
+      }\r
+      else {\r
+        // new end tag\r
+        result.push({pos: originalTag.pos});\r
+\r
+        // new start tag\r
+        highlightTags[highlightIndex] = {node: highlightTag.node.cloneNode(false), pos: originalTag.pos};\r
+      }\r
+    }\r
+  }\r
+\r
+  while (originalIndex < numOriginalTags) {\r
+    result.push(originalTags[originalIndex]);\r
+    originalIndex++;\r
+  }\r
+\r
+  while (highlightIndex < numHighlightTags) {\r
+    result.push(highlightTags[highlightIndex]);\r
+    highlightIndex++;\r
+  }\r
+\r
+  return result;\r
+}\r
+\r
+/**\r
+Inserts tags into text.\r
+@param  tags  an array of tag objects\r
+@param  text  a string representing the text\r
+@return  a DOM DocumentFragment representing the resulting HTML\r
+*/\r
+function sh_insertTags(tags, text) {\r
+  var doc = document;\r
+\r
+  var result = document.createDocumentFragment();\r
+  var tagIndex = 0;\r
+  var numTags = tags.length;\r
+  var textPos = 0;\r
+  var textLength = text.length;\r
+  var currentNode = result;\r
+\r
+  // output one tag or text node every iteration\r
+  while (textPos < textLength || tagIndex < numTags) {\r
+    var tag;\r
+    var tagPos;\r
+    if (tagIndex < numTags) {\r
+      tag = tags[tagIndex];\r
+      tagPos = tag.pos;\r
+    }\r
+    else {\r
+      tagPos = textLength;\r
+    }\r
+\r
+    if (tagPos <= textPos) {\r
+      // output the tag\r
+      if (tag.node) {\r
+        // start tag\r
+        var newNode = tag.node;\r
+        currentNode.appendChild(newNode);\r
+        currentNode = newNode;\r
+      }\r
+      else {\r
+        // end tag\r
+        currentNode = currentNode.parentNode;\r
+      }\r
+      tagIndex++;\r
+    }\r
+    else {\r
+      // output text\r
+      currentNode.appendChild(doc.createTextNode(text.substring(textPos, tagPos)));\r
+      textPos = tagPos;\r
+    }\r
+  }\r
+\r
+  return result;\r
+}\r
+\r
+/**\r
+Highlights an element containing source code.  Upon completion of this function,\r
+the element will have been placed in the "sh_sourceCode" class.\r
+@param  element  a DOM <pre> element containing the source code to be highlighted\r
+@param  language  a language definition object\r
+*/\r
+function sh_highlightElement(element, language) {\r
+  sh_addClass(element, 'sh_sourceCode');\r
+  var originalTags = [];\r
+  var inputString = sh_extractTags(element, originalTags);\r
+  var highlightTags = sh_highlightString(inputString, language);\r
+  var tags = sh_mergeTags(originalTags, highlightTags);\r
+  var documentFragment = sh_insertTags(tags, inputString);\r
+  while (element.hasChildNodes()) {\r
+    element.removeChild(element.firstChild);\r
+  }\r
+  element.appendChild(documentFragment);\r
+}\r
+\r
+function sh_getXMLHttpRequest() {\r
+  if (window.ActiveXObject) {\r
+    return new ActiveXObject('Msxml2.XMLHTTP');\r
+  }\r
+  else if (window.XMLHttpRequest) {\r
+    return new XMLHttpRequest();\r
+  }\r
+  throw 'No XMLHttpRequest implementation available';\r
+}\r
+\r
+function sh_load(language, element, prefix, suffix) {\r
+  if (language in sh_requests) {\r
+    sh_requests[language].push(element);\r
+    return;\r
+  }\r
+  sh_requests[language] = [element];\r
+  var request = sh_getXMLHttpRequest();\r
+  var url = prefix + 'sh_' + language + suffix;\r
+  request.open('GET', url, true);\r
+  request.onreadystatechange = function () {\r
+    if (request.readyState === 4) {\r
+      try {\r
+        if (! request.status || request.status === 200) {\r
+          eval(request.responseText);\r
+          var elements = sh_requests[language];\r
+          for (var i = 0; i < elements.length; i++) {\r
+            sh_highlightElement(elements[i], sh_languages[language]);\r
+          }\r
+        }\r
+        else {\r
+          throw 'HTTP error: status ' + request.status;\r
+        }\r
+      }\r
+      finally {\r
+        request = null;\r
+      }\r
+    }\r
+  };\r
+  request.send(null);\r
+}\r
+\r
+/**\r
+Highlights all elements containing source code on the current page. Elements\r
+containing source code must be "pre" elements with a "class" attribute of\r
+"sh_LANGUAGE", where LANGUAGE is a valid language identifier; e.g., "sh_java"\r
+identifies the element as containing "java" language source code.\r
+*/\r
+function sh_highlightDocument(prefix, suffix) {\r
+  var nodeList = document.getElementsByTagName('pre');\r
+  for (var i = 0; i < nodeList.length; i++) {\r
+    var element = nodeList.item(i);\r
+    var htmlClasses = sh_getClasses(element);\r
+    for (var j = 0; j < htmlClasses.length; j++) {\r
+      var htmlClass = htmlClasses[j].toLowerCase();\r
+      if (htmlClass === 'sh_sourcecode') {\r
+        continue;\r
+      }\r
+      if (htmlClass.substr(0, 3) === 'sh_') {\r
+        var language = htmlClass.substring(3);\r
+        if (language in sh_languages) {\r
+          sh_highlightElement(element, sh_languages[language]);\r
+        }\r
+        else if (typeof(prefix) === 'string' && typeof(suffix) === 'string') {\r
+          sh_load(language, element, prefix, suffix);\r
+        }\r
+        else {\r
+          throw 'Found <pre> element with class="' + htmlClass + '", but no such language exists';\r
+        }\r
+        break;\r
+      }\r
+    }\r
+  }\r
+}\r
diff --git a/helm/www/matita/docs/tutorial/xcover-set-1.png b/helm/www/matita/docs/tutorial/xcover-set-1.png
new file mode 100644 (file)
index 0000000..bf4b91b
Binary files /dev/null and b/helm/www/matita/docs/tutorial/xcover-set-1.png differ
diff --git a/helm/www/matita/docs/tutorial/xcover-set-2.png b/helm/www/matita/docs/tutorial/xcover-set-2.png
new file mode 100644 (file)
index 0000000..b3db569
Binary files /dev/null and b/helm/www/matita/docs/tutorial/xcover-set-2.png differ
diff --git a/helm/www/matita/docs/tutorial/xcover-set-3.png b/helm/www/matita/docs/tutorial/xcover-set-3.png
new file mode 100644 (file)
index 0000000..0ddce77
Binary files /dev/null and b/helm/www/matita/docs/tutorial/xcover-set-3.png differ
diff --git a/helm/www/matita/docs/tutorial/xcover-set-4.png b/helm/www/matita/docs/tutorial/xcover-set-4.png
new file mode 100644 (file)
index 0000000..fe67ec2
Binary files /dev/null and b/helm/www/matita/docs/tutorial/xcover-set-4.png differ
index f6b7984b6874d97982d0203dddb508fcfdf433f0..34565a11bbcb2016b8bea491be073c19f8b00ac5 100644 (file)
        trivial, we thus suggest that you try the live DVD instead.</dd> 
       </dl>
 
-      <h2>Old releases (unsupported)<a name="releases"></a></h2>
+      <h2>Old releases (unsupported, but still used for teaching at the University of Bologna)<a name="releases"></a></h2>
       <p>
-      Version is 0.5.8, released on January 8, 2010. Here the 
-      <a href="http://helm.cs.unibo.it/websvn/filedetails.php?repname=helm&path=%2Ftrunk%2Fhelm%2Fsoftware%2Fmatita%2Fdist%2FChangeLog&rev=0&sc=0">ChangeLog</a>.
+      Version is 0.5.9, released on December 23, 2014.
+      It is an update of version 0.5.8 to compile with the latter OCaml version
+      and libraries.
+      <!-- Here the 
+      <a href="http://helm.cs.unibo.it/websvn/filedetails.php?repname=helm&path=%2Ftrunk%2Fhelm%2Fsoftware%2Fmatita%2Fdist%2FChangeLog&rev=0&sc=0">ChangeLog</a>. -->
       </p>
       <dl>
         <dt>Live CD</dt>
         <dd>The <a href="FILES/matita-0.5.8.iso">live CD</a> (around 530
         MB, md5sum: 
 9a6912765eacaaa7f96d7d6d6b34add5
-        ) 
+        ) for Matita version 0.5.8
         is the easiest way to try Matita. You can burn the CD image
         and boot you computer from the CD, or install a free emulator like <a
           href="http://virtualbox.org">virtualbox</a> and boot a virtual
         machine from the CD image. Virtualbox is available for Mac OS X,
         Windows and Linux. A short guide to VirtualBox is part of the 
-        <a href="docs/manual/html">Matita manual</a><br/>
+        <a href="docs/manual-0.5.9">Matita manual</a><br/>
         </dd>
 
         <dt>.deb package</dt>
+
+        <dd>We provide the Debian packages for <a href="FILES/matita_0.5.9_amd64.deb">matita</a> (md5sum 1f7ff2c99fcf73380e6137ba4e6b537e) and its <a href="FILES/matita-doc_0.5.9_all.deb">doc</a> (md5sum 14b255f5dfd984acda2ffd7ab154ac8f) for Wheezy amd64.</dd>
         
-        <dd>Matita is part of the <a
+        <!-- <dd>Matita is part of the <a
           href="http://packages.debian.org/source/matita"> Debian archive</a>, you can
         install it with the following command:<pre>aptitude install matita</pre>
-        </dd>
+        </dd> -->
 
         <dt>Sources</dt>
         
         <dd>You can download the <a
-          href="FILES/matita-0.5.8.orig.tar.gz">sources</a> of Matita (around 6 MB, md5sum:
-125223d3dc522c4ac063a66f5d46df69 
+          href="FILES/matita-0.5.9.tar.gz">sources</a> of Matita (around 6 MB, md5sum:
+0f2f66a4a8acc5f48b2cd77cfd8d824e 
         )
         and
         build it by yourself, following the <a
-          href="docs/manual/html/sec_install.html">installation instructions</a>.
+          href="docs/manual-0.5.9/sec_install.html">installation instructions</a>.
         The build process, due to the high number of external dependency is not
         trivial, we thus suggest you to try the live CD or the .deb package
         first.</dd>
index e5aa7316e315c3866df00667cde42928cbcb5c4e..d065b7a9f643a104aac62d96577f14daf08ea5d7 100644 (file)
@@ -42,7 +42,7 @@
        <p>The CerCo project is a FET Open IST project funded by the EU
           community in the 7th Framework Programme. More informations on the
           project and the code of the Matita formalization can be found
-          on the <a href="cerco.cs.unibo.it">CerCo Web site</a>
+          on the <a href="http://cerco.cs.unibo.it">CerCo Web site</a>
        </p>
 
       <h2>The Basic Picture<a name="sambin"></a></h2>
index daa6cc5b821c97eb0517cbb8cb3df82d05d02a21..d8a363c91021a85965dec2b0e3db1cc810a993eb 100644 (file)
@@ -3,6 +3,9 @@
 <div class="news">
   <div class="newsheader">News</div>
   <ul class="news">
+    <li><span class="date">23 December 2014</span><br />
+    Legacy matita release 0.5.9 available for <a href="download.shtml">download</a>.
+    </li>
     <li><span class="date">13 March 2012</span><br />
     The <a href="matitaweb.shtml">Matita web app</a> is now publicly accessible
     online (<a href="http://pandemia.helm.cs.unibo.it/login.html">go</a>).