]> matita.cs.unibo.it Git - helm.git/commitdiff
Additional contribs. 0.5.9
authorClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Tue, 23 Dec 2014 11:08:18 +0000 (11:08 +0000)
committerClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Tue, 23 Dec 2014 11:08:18 +0000 (11:08 +0000)
157 files changed:
helm/software/lambda-delta/.depend.opt [new file with mode: 0644]
helm/software/lambda-delta/Make [new file with mode: 0644]
helm/software/lambda-delta/Makefile [new file with mode: 0644]
helm/software/lambda-delta/Makefile.common [new file with mode: 0644]
helm/software/lambda-delta/README [new file with mode: 0644]
helm/software/lambda-delta/automath/Make [new file with mode: 0644]
helm/software/lambda-delta/automath/Omega.aut [new file with mode: 0644]
helm/software/lambda-delta/automath/aut.ml [new file with mode: 0644]
helm/software/lambda-delta/automath/autLexer.mll [new file with mode: 0644]
helm/software/lambda-delta/automath/autOutput.ml [new file with mode: 0644]
helm/software/lambda-delta/automath/autOutput.mli [new file with mode: 0644]
helm/software/lambda-delta/automath/autParser.mly [new file with mode: 0644]
helm/software/lambda-delta/automath/autProcess.ml [new file with mode: 0644]
helm/software/lambda-delta/automath/autProcess.mli [new file with mode: 0644]
helm/software/lambda-delta/automath/grundlagen-orig.aut [new file with mode: 0644]
helm/software/lambda-delta/automath/grundlagen.aut [new file with mode: 0644]
helm/software/lambda-delta/basic_ag/Make [new file with mode: 0644]
helm/software/lambda-delta/basic_ag/bag.ml [new file with mode: 0644]
helm/software/lambda-delta/basic_ag/bagEnvironment.ml [new file with mode: 0644]
helm/software/lambda-delta/basic_ag/bagEnvironment.mli [new file with mode: 0644]
helm/software/lambda-delta/basic_ag/bagOutput.ml [new file with mode: 0644]
helm/software/lambda-delta/basic_ag/bagOutput.mli [new file with mode: 0644]
helm/software/lambda-delta/basic_ag/bagReduction.ml [new file with mode: 0644]
helm/software/lambda-delta/basic_ag/bagReduction.mli [new file with mode: 0644]
helm/software/lambda-delta/basic_ag/bagSubstitution.ml [new file with mode: 0644]
helm/software/lambda-delta/basic_ag/bagSubstitution.mli [new file with mode: 0644]
helm/software/lambda-delta/basic_ag/bagType.ml [new file with mode: 0644]
helm/software/lambda-delta/basic_ag/bagType.mli [new file with mode: 0644]
helm/software/lambda-delta/basic_ag/bagUntrusted.ml [new file with mode: 0644]
helm/software/lambda-delta/basic_ag/bagUntrusted.mli [new file with mode: 0644]
helm/software/lambda-delta/basic_rg/Make [new file with mode: 0644]
helm/software/lambda-delta/basic_rg/brg.ml [new file with mode: 0644]
helm/software/lambda-delta/basic_rg/brgEnvironment.ml [new file with mode: 0644]
helm/software/lambda-delta/basic_rg/brgEnvironment.mli [new file with mode: 0644]
helm/software/lambda-delta/basic_rg/brgOutput.ml [new file with mode: 0644]
helm/software/lambda-delta/basic_rg/brgOutput.mli [new file with mode: 0644]
helm/software/lambda-delta/basic_rg/brgReduction.ml [new file with mode: 0644]
helm/software/lambda-delta/basic_rg/brgReduction.mli [new file with mode: 0644]
helm/software/lambda-delta/basic_rg/brgSubstitution.ml [new file with mode: 0644]
helm/software/lambda-delta/basic_rg/brgSubstitution.mli [new file with mode: 0644]
helm/software/lambda-delta/basic_rg/brgType.ml [new file with mode: 0644]
helm/software/lambda-delta/basic_rg/brgType.mli [new file with mode: 0644]
helm/software/lambda-delta/basic_rg/brgUntrusted.ml [new file with mode: 0644]
helm/software/lambda-delta/basic_rg/brgUntrusted.mli [new file with mode: 0644]
helm/software/lambda-delta/common/Make [new file with mode: 0644]
helm/software/lambda-delta/common/entity.ml [new file with mode: 0644]
helm/software/lambda-delta/common/hierarchy.ml [new file with mode: 0644]
helm/software/lambda-delta/common/hierarchy.mli [new file with mode: 0644]
helm/software/lambda-delta/common/library.ml [new file with mode: 0644]
helm/software/lambda-delta/common/library.mli [new file with mode: 0644]
helm/software/lambda-delta/common/output.ml [new file with mode: 0644]
helm/software/lambda-delta/common/output.mli [new file with mode: 0644]
helm/software/lambda-delta/complete_rg/Make [new file with mode: 0644]
helm/software/lambda-delta/complete_rg/crg.ml [new file with mode: 0644]
helm/software/lambda-delta/complete_rg/crgAut.ml [new file with mode: 0644]
helm/software/lambda-delta/complete_rg/crgAut.mli [new file with mode: 0644]
helm/software/lambda-delta/complete_rg/crgBrg.ml [new file with mode: 0644]
helm/software/lambda-delta/complete_rg/crgBrg.mli [new file with mode: 0644]
helm/software/lambda-delta/complete_rg/crgOutput.ml [new file with mode: 0644]
helm/software/lambda-delta/complete_rg/crgOutput.mli [new file with mode: 0644]
helm/software/lambda-delta/icons/basic-32.png [new file with mode: 0644]
helm/software/lambda-delta/icons/crux-16.ico [new file with mode: 0644]
helm/software/lambda-delta/icons/crux-32.png [new file with mode: 0644]
helm/software/lambda-delta/icons/helena-32.png [new file with mode: 0644]
helm/software/lambda-delta/lib/Make [new file with mode: 0644]
helm/software/lambda-delta/lib/cps.ml [new file with mode: 0644]
helm/software/lambda-delta/lib/log.ml [new file with mode: 0644]
helm/software/lambda-delta/lib/log.mli [new file with mode: 0644]
helm/software/lambda-delta/lib/nUri.ml [new symlink]
helm/software/lambda-delta/lib/nUri.mli [new symlink]
helm/software/lambda-delta/lib/share.ml [new file with mode: 0644]
helm/software/lambda-delta/lib/time.ml [new file with mode: 0644]
helm/software/lambda-delta/toplevel/Make [new file with mode: 0644]
helm/software/lambda-delta/toplevel/meta.ml [new file with mode: 0644]
helm/software/lambda-delta/toplevel/metaAut.ml [new file with mode: 0644]
helm/software/lambda-delta/toplevel/metaAut.mli [new file with mode: 0644]
helm/software/lambda-delta/toplevel/metaBag.ml [new file with mode: 0644]
helm/software/lambda-delta/toplevel/metaBag.mli [new file with mode: 0644]
helm/software/lambda-delta/toplevel/metaBrg.ml [new file with mode: 0644]
helm/software/lambda-delta/toplevel/metaBrg.mli [new file with mode: 0644]
helm/software/lambda-delta/toplevel/metaLibrary.ml [new file with mode: 0644]
helm/software/lambda-delta/toplevel/metaLibrary.mli [new file with mode: 0644]
helm/software/lambda-delta/toplevel/metaOutput.ml [new file with mode: 0644]
helm/software/lambda-delta/toplevel/metaOutput.mli [new file with mode: 0644]
helm/software/lambda-delta/toplevel/top.ml [new file with mode: 0644]
helm/software/lambda-delta/xml/ld-html-entity.xsl [new file with mode: 0644]
helm/software/lambda-delta/xml/ld-html-library.xsl [new file with mode: 0644]
helm/software/lambda-delta/xml/ld-html-root.xsl [new file with mode: 0644]
helm/software/lambda-delta/xml/ld-html-term.xsl [new file with mode: 0644]
helm/software/lambda-delta/xml/ld-html.xsl [new file with mode: 0644]
helm/software/lambda-delta/xml/ld.dtd [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/apply_functor.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/basic_pairs.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/basic_pairs_to_basic_topologies.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/basic_pairs_to_o-basic_pairs.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/basic_topologies.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/basic_topologies_to_o-basic_topologies.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/categories.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/concrete_spaces.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/concrete_spaces_to_o-concrete_spaces.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/cprop_connectives.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/formal_topologies.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/notation.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/o-algebra.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/o-basic_pairs.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/o-basic_pairs_to_o-basic_topologies.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/o-basic_topologies.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/o-concrete_spaces.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/o-formal_topologies.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/o-saturations.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/r-o-basic_pairs.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/relations.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/relations_to_o-algebra.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/saturations.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/saturations_to_o-saturations.ma [new file with mode: 0644]
helm/software/matita/contribs/formal_topology/overlap/subsets.ma [new file with mode: 0644]
helm/software/matita/contribs/ng_assembly/freescale/load_write.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/memory_abs.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/memory_bits.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/memory_func.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/memory_struct.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/memory_trees.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/model.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/multivm.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/multivm_lemmas.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/opcode.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/opcode_base.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas1.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_instrmode.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_opcode.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/status.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/status_lemmas.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/table_HC05.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/table_HC05_tests.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/table_HC08.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/table_HC08_tests.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/table_HCS08.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/table_HCS08_tests.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/table_RS08.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/table_RS08_tests.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/translation.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/translation_lemmas.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale_tests/medium_tests.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale_tests/medium_tests_tools.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests1.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests10.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests2.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests3.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests4.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests4bis.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests5.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests6.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests7.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests8.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests9.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests_tools.ma [new file with mode: 0755]

diff --git a/helm/software/lambda-delta/.depend.opt b/helm/software/lambda-delta/.depend.opt
new file mode 100644 (file)
index 0000000..f0d13c9
--- /dev/null
@@ -0,0 +1,181 @@
+lib/nUri.cmo: lib/nUri.cmi 
+lib/nUri.cmx: lib/nUri.cmi 
+lib/log.cmo: lib/cps.cmx lib/log.cmi 
+lib/log.cmx: lib/cps.cmx lib/log.cmi 
+lib/time.cmo: lib/log.cmi 
+lib/time.cmx: lib/log.cmx 
+automath/autProcess.cmi: automath/aut.cmx 
+automath/autProcess.cmo: automath/aut.cmx automath/autProcess.cmi 
+automath/autProcess.cmx: automath/aut.cmx automath/autProcess.cmi 
+automath/autOutput.cmi: automath/autProcess.cmi automath/aut.cmx 
+automath/autOutput.cmo: lib/log.cmi lib/cps.cmx automath/autProcess.cmi \
+    automath/aut.cmx automath/autOutput.cmi 
+automath/autOutput.cmx: lib/log.cmx lib/cps.cmx automath/autProcess.cmx \
+    automath/aut.cmx automath/autOutput.cmi 
+automath/autParser.cmi: automath/aut.cmx 
+automath/autParser.cmo: automath/aut.cmx automath/autParser.cmi 
+automath/autParser.cmx: automath/aut.cmx automath/autParser.cmi 
+automath/autLexer.cmo: lib/log.cmi automath/autParser.cmi 
+automath/autLexer.cmx: lib/log.cmx automath/autParser.cmx 
+common/hierarchy.cmo: lib/cps.cmx common/hierarchy.cmi 
+common/hierarchy.cmx: lib/cps.cmx common/hierarchy.cmi 
+common/output.cmo: lib/log.cmi common/output.cmi 
+common/output.cmx: lib/log.cmx common/output.cmi 
+common/entity.cmo: lib/nUri.cmi automath/aut.cmx 
+common/entity.cmx: lib/nUri.cmx automath/aut.cmx 
+common/library.cmi: common/hierarchy.cmi common/entity.cmx 
+common/library.cmo: lib/nUri.cmi common/hierarchy.cmi common/entity.cmx \
+    lib/cps.cmx common/library.cmi 
+common/library.cmx: lib/nUri.cmx common/hierarchy.cmx common/entity.cmx \
+    lib/cps.cmx common/library.cmi 
+basic_ag/bag.cmo: lib/log.cmi common/entity.cmx lib/cps.cmx 
+basic_ag/bag.cmx: lib/log.cmx common/entity.cmx lib/cps.cmx 
+basic_ag/bagOutput.cmi: lib/log.cmi basic_ag/bag.cmx 
+basic_ag/bagOutput.cmo: common/output.cmi lib/nUri.cmi lib/log.cmi \
+    common/hierarchy.cmi common/entity.cmx basic_ag/bag.cmx \
+    basic_ag/bagOutput.cmi 
+basic_ag/bagOutput.cmx: common/output.cmx lib/nUri.cmx lib/log.cmx \
+    common/hierarchy.cmx common/entity.cmx basic_ag/bag.cmx \
+    basic_ag/bagOutput.cmi 
+basic_ag/bagEnvironment.cmi: basic_ag/bag.cmx 
+basic_ag/bagEnvironment.cmo: lib/nUri.cmi lib/log.cmi common/entity.cmx \
+    basic_ag/bag.cmx basic_ag/bagEnvironment.cmi 
+basic_ag/bagEnvironment.cmx: lib/nUri.cmx lib/log.cmx common/entity.cmx \
+    basic_ag/bag.cmx basic_ag/bagEnvironment.cmi 
+basic_ag/bagSubstitution.cmi: basic_ag/bag.cmx 
+basic_ag/bagSubstitution.cmo: lib/share.cmx basic_ag/bag.cmx \
+    basic_ag/bagSubstitution.cmi 
+basic_ag/bagSubstitution.cmx: lib/share.cmx basic_ag/bag.cmx \
+    basic_ag/bagSubstitution.cmi 
+basic_ag/bagReduction.cmi: basic_ag/bag.cmx 
+basic_ag/bagReduction.cmo: lib/nUri.cmi lib/log.cmi common/entity.cmx \
+    lib/cps.cmx basic_ag/bagSubstitution.cmi basic_ag/bagOutput.cmi \
+    basic_ag/bagEnvironment.cmi basic_ag/bag.cmx basic_ag/bagReduction.cmi 
+basic_ag/bagReduction.cmx: lib/nUri.cmx lib/log.cmx common/entity.cmx \
+    lib/cps.cmx basic_ag/bagSubstitution.cmx basic_ag/bagOutput.cmx \
+    basic_ag/bagEnvironment.cmx basic_ag/bag.cmx basic_ag/bagReduction.cmi 
+basic_ag/bagType.cmi: common/hierarchy.cmi basic_ag/bag.cmx 
+basic_ag/bagType.cmo: lib/share.cmx lib/nUri.cmi lib/log.cmi \
+    common/hierarchy.cmi common/entity.cmx lib/cps.cmx \
+    basic_ag/bagReduction.cmi basic_ag/bagOutput.cmi \
+    basic_ag/bagEnvironment.cmi basic_ag/bag.cmx basic_ag/bagType.cmi 
+basic_ag/bagType.cmx: lib/share.cmx lib/nUri.cmx lib/log.cmx \
+    common/hierarchy.cmx common/entity.cmx lib/cps.cmx \
+    basic_ag/bagReduction.cmx basic_ag/bagOutput.cmx \
+    basic_ag/bagEnvironment.cmx basic_ag/bag.cmx basic_ag/bagType.cmi 
+basic_ag/bagUntrusted.cmi: common/hierarchy.cmi basic_ag/bag.cmx 
+basic_ag/bagUntrusted.cmo: lib/nUri.cmi lib/log.cmi common/entity.cmx \
+    basic_ag/bagType.cmi basic_ag/bagEnvironment.cmi basic_ag/bag.cmx \
+    basic_ag/bagUntrusted.cmi 
+basic_ag/bagUntrusted.cmx: lib/nUri.cmx lib/log.cmx common/entity.cmx \
+    basic_ag/bagType.cmx basic_ag/bagEnvironment.cmx basic_ag/bag.cmx \
+    basic_ag/bagUntrusted.cmi 
+basic_rg/brg.cmo: common/entity.cmx 
+basic_rg/brg.cmx: common/entity.cmx 
+basic_rg/brgOutput.cmi: lib/log.cmi common/library.cmi basic_rg/brg.cmx 
+basic_rg/brgOutput.cmo: common/output.cmi lib/nUri.cmi lib/log.cmi \
+    common/library.cmi common/hierarchy.cmi common/entity.cmx lib/cps.cmx \
+    basic_rg/brg.cmx basic_rg/brgOutput.cmi 
+basic_rg/brgOutput.cmx: common/output.cmx lib/nUri.cmx lib/log.cmx \
+    common/library.cmx common/hierarchy.cmx common/entity.cmx lib/cps.cmx \
+    basic_rg/brg.cmx basic_rg/brgOutput.cmi 
+basic_rg/brgEnvironment.cmi: basic_rg/brg.cmx 
+basic_rg/brgEnvironment.cmo: lib/nUri.cmi common/entity.cmx basic_rg/brg.cmx \
+    basic_rg/brgEnvironment.cmi 
+basic_rg/brgEnvironment.cmx: lib/nUri.cmx common/entity.cmx basic_rg/brg.cmx \
+    basic_rg/brgEnvironment.cmi 
+basic_rg/brgSubstitution.cmi: basic_rg/brg.cmx 
+basic_rg/brgSubstitution.cmo: basic_rg/brg.cmx basic_rg/brgSubstitution.cmi 
+basic_rg/brgSubstitution.cmx: basic_rg/brg.cmx basic_rg/brgSubstitution.cmi 
+basic_rg/brgReduction.cmi: lib/log.cmi common/entity.cmx basic_rg/brg.cmx 
+basic_rg/brgReduction.cmo: lib/share.cmx common/output.cmi lib/nUri.cmi \
+    lib/log.cmi common/entity.cmx lib/cps.cmx basic_rg/brgOutput.cmi \
+    basic_rg/brgEnvironment.cmi basic_rg/brg.cmx basic_rg/brgReduction.cmi 
+basic_rg/brgReduction.cmx: lib/share.cmx common/output.cmx lib/nUri.cmx \
+    lib/log.cmx common/entity.cmx lib/cps.cmx basic_rg/brgOutput.cmx \
+    basic_rg/brgEnvironment.cmx basic_rg/brg.cmx basic_rg/brgReduction.cmi 
+basic_rg/brgType.cmi: lib/log.cmi common/hierarchy.cmi common/entity.cmx \
+    basic_rg/brgReduction.cmi basic_rg/brg.cmx 
+basic_rg/brgType.cmo: lib/share.cmx lib/nUri.cmi lib/log.cmi \
+    common/hierarchy.cmi common/entity.cmx lib/cps.cmx \
+    basic_rg/brgSubstitution.cmi basic_rg/brgReduction.cmi \
+    basic_rg/brgOutput.cmi basic_rg/brgEnvironment.cmi basic_rg/brg.cmx \
+    basic_rg/brgType.cmi 
+basic_rg/brgType.cmx: lib/share.cmx lib/nUri.cmx lib/log.cmx \
+    common/hierarchy.cmx common/entity.cmx lib/cps.cmx \
+    basic_rg/brgSubstitution.cmx basic_rg/brgReduction.cmx \
+    basic_rg/brgOutput.cmx basic_rg/brgEnvironment.cmx basic_rg/brg.cmx \
+    basic_rg/brgType.cmi 
+basic_rg/brgUntrusted.cmi: common/hierarchy.cmi basic_rg/brgType.cmi \
+    basic_rg/brg.cmx 
+basic_rg/brgUntrusted.cmo: lib/nUri.cmi lib/log.cmi common/entity.cmx \
+    basic_rg/brgType.cmi basic_rg/brgReduction.cmi \
+    basic_rg/brgEnvironment.cmi basic_rg/brg.cmx basic_rg/brgUntrusted.cmi 
+basic_rg/brgUntrusted.cmx: lib/nUri.cmx lib/log.cmx common/entity.cmx \
+    basic_rg/brgType.cmx basic_rg/brgReduction.cmx \
+    basic_rg/brgEnvironment.cmx basic_rg/brg.cmx basic_rg/brgUntrusted.cmi 
+complete_rg/crg.cmo: common/entity.cmx 
+complete_rg/crg.cmx: common/entity.cmx 
+complete_rg/crgOutput.cmi: common/library.cmi complete_rg/crg.cmx 
+complete_rg/crgOutput.cmo: lib/nUri.cmi common/library.cmi \
+    common/hierarchy.cmi common/entity.cmx complete_rg/crg.cmx lib/cps.cmx \
+    complete_rg/crgOutput.cmi 
+complete_rg/crgOutput.cmx: lib/nUri.cmx common/library.cmx \
+    common/hierarchy.cmx common/entity.cmx complete_rg/crg.cmx lib/cps.cmx \
+    complete_rg/crgOutput.cmi 
+complete_rg/crgAut.cmi: common/entity.cmx complete_rg/crg.cmx \
+    automath/aut.cmx 
+complete_rg/crgAut.cmo: lib/nUri.cmi common/entity.cmx complete_rg/crg.cmx \
+    lib/cps.cmx automath/aut.cmx complete_rg/crgAut.cmi 
+complete_rg/crgAut.cmx: lib/nUri.cmx common/entity.cmx complete_rg/crg.cmx \
+    lib/cps.cmx automath/aut.cmx complete_rg/crgAut.cmi 
+complete_rg/crgBrg.cmi: complete_rg/crg.cmx basic_rg/brg.cmx 
+complete_rg/crgBrg.cmo: common/entity.cmx complete_rg/crg.cmx lib/cps.cmx \
+    basic_rg/brg.cmx complete_rg/crgBrg.cmi 
+complete_rg/crgBrg.cmx: common/entity.cmx complete_rg/crg.cmx lib/cps.cmx \
+    basic_rg/brg.cmx complete_rg/crgBrg.cmi 
+toplevel/meta.cmo: common/entity.cmx 
+toplevel/meta.cmx: common/entity.cmx 
+toplevel/metaOutput.cmi: toplevel/meta.cmx 
+toplevel/metaOutput.cmo: lib/nUri.cmi toplevel/meta.cmx lib/log.cmi \
+    common/entity.cmx lib/cps.cmx toplevel/metaOutput.cmi 
+toplevel/metaOutput.cmx: lib/nUri.cmx toplevel/meta.cmx lib/log.cmx \
+    common/entity.cmx lib/cps.cmx toplevel/metaOutput.cmi 
+toplevel/metaLibrary.cmi: toplevel/meta.cmx 
+toplevel/metaLibrary.cmo: toplevel/metaOutput.cmi toplevel/metaLibrary.cmi 
+toplevel/metaLibrary.cmx: toplevel/metaOutput.cmx toplevel/metaLibrary.cmi 
+toplevel/metaAut.cmi: toplevel/meta.cmx automath/aut.cmx 
+toplevel/metaAut.cmo: lib/nUri.cmi toplevel/meta.cmx common/entity.cmx \
+    lib/cps.cmx automath/aut.cmx toplevel/metaAut.cmi 
+toplevel/metaAut.cmx: lib/nUri.cmx toplevel/meta.cmx common/entity.cmx \
+    lib/cps.cmx automath/aut.cmx toplevel/metaAut.cmi 
+toplevel/metaBag.cmi: toplevel/meta.cmx basic_ag/bag.cmx 
+toplevel/metaBag.cmo: toplevel/meta.cmx lib/cps.cmx basic_ag/bag.cmx \
+    toplevel/metaBag.cmi 
+toplevel/metaBag.cmx: toplevel/meta.cmx lib/cps.cmx basic_ag/bag.cmx \
+    toplevel/metaBag.cmi 
+toplevel/metaBrg.cmi: toplevel/meta.cmx basic_rg/brg.cmx 
+toplevel/metaBrg.cmo: toplevel/meta.cmx common/entity.cmx lib/cps.cmx \
+    basic_rg/brg.cmx toplevel/metaBrg.cmi 
+toplevel/metaBrg.cmx: toplevel/meta.cmx common/entity.cmx lib/cps.cmx \
+    basic_rg/brg.cmx toplevel/metaBrg.cmi 
+toplevel/top.cmo: lib/time.cmx common/output.cmi lib/nUri.cmi \
+    toplevel/metaOutput.cmi toplevel/metaLibrary.cmi toplevel/metaBrg.cmi \
+    toplevel/metaBag.cmi toplevel/metaAut.cmi toplevel/meta.cmx lib/log.cmi \
+    common/library.cmi common/hierarchy.cmi common/entity.cmx \
+    complete_rg/crgOutput.cmi complete_rg/crgBrg.cmi complete_rg/crgAut.cmi \
+    complete_rg/crg.cmx lib/cps.cmx basic_rg/brgUntrusted.cmi \
+    basic_rg/brgReduction.cmi basic_rg/brgOutput.cmi basic_rg/brg.cmx \
+    basic_ag/bagUntrusted.cmi basic_ag/bagType.cmi basic_ag/bagOutput.cmi \
+    basic_ag/bag.cmx automath/autProcess.cmi automath/autParser.cmi \
+    automath/autOutput.cmi automath/autLexer.cmx 
+toplevel/top.cmx: lib/time.cmx common/output.cmx lib/nUri.cmx \
+    toplevel/metaOutput.cmx toplevel/metaLibrary.cmx toplevel/metaBrg.cmx \
+    toplevel/metaBag.cmx toplevel/metaAut.cmx toplevel/meta.cmx lib/log.cmx \
+    common/library.cmx common/hierarchy.cmx common/entity.cmx \
+    complete_rg/crgOutput.cmx complete_rg/crgBrg.cmx complete_rg/crgAut.cmx \
+    complete_rg/crg.cmx lib/cps.cmx basic_rg/brgUntrusted.cmx \
+    basic_rg/brgReduction.cmx basic_rg/brgOutput.cmx basic_rg/brg.cmx \
+    basic_ag/bagUntrusted.cmx basic_ag/bagType.cmx basic_ag/bagOutput.cmx \
+    basic_ag/bag.cmx automath/autProcess.cmx automath/autParser.cmx \
+    automath/autOutput.cmx automath/autLexer.cmx 
diff --git a/helm/software/lambda-delta/Make b/helm/software/lambda-delta/Make
new file mode 100644 (file)
index 0000000..5730e32
--- /dev/null
@@ -0,0 +1 @@
+lib automath common basic_ag basic_rg complete_rg toplevel
diff --git a/helm/software/lambda-delta/Makefile b/helm/software/lambda-delta/Makefile
new file mode 100644 (file)
index 0000000..9903f4f
--- /dev/null
@@ -0,0 +1,71 @@
+MAIN = helena
+
+REQUIRES = unix str
+
+KEEP = README automath/*.aut
+
+CLEAN = etc/log.txt
+
+TAGS = test test-si test-si-fast hal xml-si-drg xml-si-old profile
+
+XMLS = xml/brg/grundlagen/l/not.ld.xml xml/brg/grundlagen/l/et.ld.xml \
+       xml/brg/grundlagen/l/e/st/eq/landau/n/rt/rp/r/c/8283/t234.ld.xml \
+       xml/brg/grundlagen/l/e/pairis1.ld.xml
+
+include Makefile.common
+
+INPUT = automath/grundlagen.aut
+
+INPUT-ORIG = automath/grundlagen-orig.aut
+
+test: $(MAIN).opt
+       @echo "  HELENA -o -p -r $(INPUT)"
+       $(H)./$(MAIN).opt -o -p -r -S 3 $(O) $(INPUT) > etc/log.txt
+
+test-si: $(MAIN).opt
+       @echo "  HELENA -o -p -r -u $(INPUT)"
+       $(H)./$(MAIN).opt -o -p -r -u -S 3 $(O) $(INPUT) > etc/log.txt
+
+test-si-fast: $(MAIN).opt
+       @echo "  HELENA -o -r -u $(INPUT)"
+       $(H)./$(MAIN).opt -o -r -u -S 1 $(O) $(INPUT) > etc/log.txt
+
+profile: $(MAIN).opt
+       @echo "  HELENA -r -u $(INPUT) (30 TIMES)"
+       $(H)for T in `seq 30`; do ./$(MAIN).opt -r -u -S 1 $(O) automath/grundlagen.aut >> etc/log.txt; done
+       $(H)grep "at exit" etc/log.txt | sort | uniq | less
+
+hal: $(MAIN).opt
+       @echo "  HELENA -o -x -m $(INPUT)"
+       $(H)./$(MAIN).opt -o -x -m -s 1 -S 1 $(INPUT) > etc/log.txt
+
+xml-si-old: $(MAIN).opt
+       @echo "  HELENA -o -u -x -s 2 $(INPUT)"
+       $(H)./$(MAIN).opt -o -u -x -s 2 -S 1 $(INPUT) > etc/log.txt
+
+xml-si-drg: $(MAIN).opt
+       @echo "  HELENA -u -x -s 1 $(INPUT)"
+       $(H)./$(MAIN).opt -u -x -s 1 -S 1 $(INPUT) > etc/log.txt
+
+%.ld: BASEURL = --stringparam baseurl $(LDDLURL)
+
+%.ld:
+       @echo "  XSLT $@"
+       $(H)mkdir -p $(LDDLDIR)/$(@D)
+       $(H)$(XSLT) -o $(LDDLDIR)/$@.html $(BASEURL) xml/ld-html.xsl xml/$@.xml
+
+etc/make-html.sh xml/index.txt index:
+       @echo "  GENERATE INDEXES"
+       $(H)find xml -name "*.ld.xml" | sed s/.xml//g | sed s/xml/ld:/g > xml/index.txt
+       $(H)sed "s/^/make --no-print-directory /" xml/index.txt | sed s.ld:/.. > etc/make-html.sh
+
+html: etc/make-html.sh
+       @echo "  MAKE */*.ld"
+       $(H). $<
+
+test-html:
+       @$(MAKE) --no-print-directory $(XMLS:xml/%.xml=%)
+
+lddl: index
+       @echo "  GENERATE lddl.tar.bz2"
+       $(H)tar -cjf $(DOWNDIR)/lddl.tar.bz2 -X etc/exclude.txt xml
diff --git a/helm/software/lambda-delta/Makefile.common b/helm/software/lambda-delta/Makefile.common
new file mode 100644 (file)
index 0000000..ca219ca
--- /dev/null
@@ -0,0 +1,86 @@
+H=@
+
+LDDLURL = http://helm.cs.unibo.it/lambda-delta/static/lddl
+LDDLDIR = /projects/helm/public_html/lambda-delta/static/lddl
+DOWNDIR = /projects/helm/public_html/lambda-delta/download
+
+DIRECTORIES = $(shell cat Make)
+
+INCLUDES = $(DIRECTORIES:%=-I %) 
+
+OCAMLDEP  = ocamlfind ocamldep -native $(INCLUDES)
+OCAMLOPT  = ocamlfind opt -linkpkg -package "$(REQUIRES)" $(INCLUDES)
+OCAMLLEX  = ocamllex.opt
+OCAMLYACC = ocamlyacc -v
+XMLLINT   = xmllint --noout
+XSLT      = xsltproc
+TAR       = tar -czf etc/$(MAIN:%=%.tgz)
+
+define DIR_TEMPLATE
+   MODULES += $$(addprefix $(1)/,$$(shell cat $(1)/Make))
+endef
+
+define MOD_TEMPLATE
+   SOURCES += $$(if $$(wildcard $(1).ml[yi]),$(1).mli $(1).ml,$(1).ml)  
+   CMXS    += $(1).cmx
+   CLEAN   += $(1).cmi $(1).cmx $(1).o 
+   CLEAN   += $$(if $$(wildcard $(1).ml[ly]),$(1).ml,)
+   CLEAN   += $$(if $$(wildcard $(1).mly),$(1).mli $(1).output,)
+   KEEP    += $$(if $$(wildcard $(1).mly),$(1).mly,\
+               $$(if $$(wildcard $(1).mll),$(1).mll,\
+               $$(if $$(wildcard $(1).mli),$(1).mli $(1).ml,$(1).ml)\
+               )\
+             )
+endef
+
+define INCLUDE_TEMPLATE
+   ifeq ($(MAKECMDGOALS), $(1))
+      include .depend.opt
+   endif
+endef
+
+$(foreach DIR, $(DIRECTORIES), $(eval $(call DIR_TEMPLATE, $(DIR))))
+$(foreach MOD, $(MODULES), $(eval $(call MOD_TEMPLATE, $(MOD))))
+
+OBJECTS = $(patsubst %.ml,%.cmx,$(SOURCES:%.mli=%.cmi))
+CLEAN += $(MAIN).opt
+
+all opt: .depend.opt
+       @$(MAKE) --no-print-directory $(MAIN).opt
+
+$(MAIN).opt: $(OBJECTS)
+       @echo "  OCAMLOPT -o $(MAIN).opt"
+       $(H)$(OCAMLOPT) -o $(MAIN).opt $(CMXS)
+
+.depend.opt: $(SOURCES) 
+       @echo "  OCAMLDEP -native"
+       $(H)$(OCAMLDEP) $^ > .depend.opt
+
+clean:
+       @echo "  CLEAN . $(DIRECTORIES)"
+       $(H)find -name "*~" | xargs $(RM) $(CLEAN)
+
+lint: $(XMLS)
+       @echo XMLLINT --valid
+       $(H)$(XMLLINT) --valid $^ 
+
+tgz: clean
+       @echo "  TAR -czf $(MAIN:%=%.tgz) . $(DIRECTORIES)" 
+       $(H)find -name "Make*" | xargs $(TAR) $(KEEP)
+
+%.ml %.mli: %.mly
+       @echo "  OCAMLYACC $<"
+       $(H)$(OCAMLYACC) $<
+%.ml: %.mll
+       @echo "  OCAMLLEX $<"
+       $(H)$(OCAMLLEX) $<
+%.cmi: %.mli
+       @echo "  OCAMLOPT $<"
+       $(H)$(OCAMLOPT) -c $<
+%.cmx: %.ml
+       @echo "  OCAMLOPT $<"
+       $(H)$(OCAMLOPT) -c $<
+
+TAGS += $(MAIN).opt
+
+$(foreach TAG, $(TAGS), $(eval $(call INCLUDE_TEMPLATE, $(TAG))))
diff --git a/helm/software/lambda-delta/README b/helm/software/lambda-delta/README
new file mode 100644 (file)
index 0000000..8a0f0d6
--- /dev/null
@@ -0,0 +1,10 @@
+Helena 0.8.1 M
+
+* type "make" or "make opt" to compile the native executable
+
+* type "make test-si" to parse the grundlagen
+  it generates a log.txt with the grundlagen contents statistics
+  
+* type "make clean" to remove the products of compilation
+
+* type "make tgz" to make a tar.gz of the source files
diff --git a/helm/software/lambda-delta/automath/Make b/helm/software/lambda-delta/automath/Make
new file mode 100644 (file)
index 0000000..29d2378
--- /dev/null
@@ -0,0 +1 @@
+aut autProcess autOutput autParser autLexer
diff --git a/helm/software/lambda-delta/automath/Omega.aut b/helm/software/lambda-delta/automath/Omega.aut
new file mode 100644 (file)
index 0000000..2466a60
--- /dev/null
@@ -0,0 +1,10 @@
+# The lambda-term \Omega
+# This book is not accepted in AUT-QE because [y:'type'] is not allowed
+# This book is accepted in lambda-delta with sort inclusion but Omega is not
+#    valid if sort inclusion is allowed on the term backbone only
+# This book is valid in lambda-delta with unrestricted sort inclusion 
+
++l 
+@ Delta := [x:[y:'type']'type']<x>x : [x:[y:'type']'type']'type'
+  Omega := <Delta>Delta             : 'type'
+-l
diff --git a/helm/software/lambda-delta/automath/aut.ml b/helm/software/lambda-delta/automath/aut.ml
new file mode 100644 (file)
index 0000000..513bd4a
--- /dev/null
@@ -0,0 +1,25 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+type id = string (* identifier *)
+
+type qid = id * bool * id list (* qualified identifier: name, local?, path *)
+
+type term = Sort of bool              (* sorts: true = TYPE, false = PROP *)
+         | GRef of qid * term list   (* reference: name, arguments *)
+         | Appl of term * term       (* application: argument, function *)
+         | Abst of id * term * term  (* abstraction: name, domain, scope *)
+         
+type entity = Section of (bool * id) option  (* section: Some true = open, Some false = reopen, None = close last *)
+           | Context of qid option          (* context: Some = last node, None = root *)
+           | Block of id * term             (* block opener: name, domain *)
+           | Decl of id * term              (* declaration: name, domain *)
+           | Def of id * term * bool * term (* definition: name, domain, transparent?, body *)
diff --git a/helm/software/lambda-delta/automath/autLexer.mll b/helm/software/lambda-delta/automath/autLexer.mll
new file mode 100644 (file)
index 0000000..006c056
--- /dev/null
@@ -0,0 +1,75 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+{ 
+   module L = Log
+   module P = AutParser
+   
+   let debug = false
+   let out s = if debug then L.warn s else ()
+}
+
+let LC  = ['#' '%']
+let OC  = "{"
+let CC  = "}"
+let SPC = [' ' '\t' '\n']+
+let NL  = "\n"
+let ID  = ['0'-'9' 'A'-'Z' 'a'-'z' '_' '\'' '`']+
+
+rule line_comment = parse
+   | NL  { () }
+   | OC  { block_comment lexbuf; line_comment lexbuf }
+   | _   { line_comment lexbuf }
+   | eof { () } 
+and block_comment = parse
+   | CC  { () }
+   | OC  { block_comment lexbuf; block_comment lexbuf }
+   | LC  { line_comment lexbuf; block_comment lexbuf  }
+   | _   { block_comment lexbuf }
+and token = parse
+   | SPC      { token lexbuf } 
+   | LC       { line_comment lexbuf; token lexbuf  }
+   | OC       { block_comment lexbuf; token lexbuf }
+   | "_E"     { out "E"; P.E         }
+   | "'_E'"   { out "E"; P.E         }
+   | "---"    { out "EB"; P.EB       }
+   | "'eb'"   { out "EB"; P.EB       }
+   | "EB"     { out "EB"; P.EB       }
+   | "--"     { out "EXIT"; P.EXIT   }
+   | "PN"     { out "PN"; P.PN       }
+   | "'pn'"   { out "PN"; P.PN       }
+   | "PRIM"   { out "PN"; P.PN       }
+   | "'prim'" { out "PN"; P.PN       }
+   | "???"    { out "PN"; P.PN       }
+   | "PROP"   { out "PROP"; P.PROP   }
+   | "'prop'" { out "PROP"; P.PROP   }
+   | "TYPE"   { out "TYPE"; P.TYPE   }
+   | "'type'" { out "TYPE"; P.TYPE   }
+   | ID       { out "ID"; P.IDENT (Lexing.lexeme lexbuf) }   
+   | ":="     { out "DEF"; P.DEF     }
+   | "("      { out "OP"; P.OP       }
+   | ")"      { out "CP"; P.CP       }
+   | "["      { out "OB"; P.OB       }
+   | "]"      { out "CB"; P.CB       }
+   | "<"      { out "OA"; P.OA       }
+   | ">"      { out "CA"; P.CA       }
+   | "@"      { out "AT"; P.AT       }
+   | "~"      { out "TD"; P.TD       }
+   | "\""     { out "QT"; P.QT       }
+   | ":"      { out "CN"; P.CN       }   
+   | ","      { out "CM"; P.CM       }
+   | ";"      { out "SC"; P.SC       }
+   | "."      { out "FS"; P.FS       }   
+   | "+"      { out "PLUS"; P.PLUS   }
+   | "-"      { out "MINUS"; P.MINUS }
+   | "*"      { out "TIMES"; P.TIMES }
+   | "="      { out "DEF"; P.DEF     }
+   | eof      { out "EOF"; P.EOF     }
diff --git a/helm/software/lambda-delta/automath/autOutput.ml b/helm/software/lambda-delta/automath/autOutput.ml
new file mode 100644 (file)
index 0000000..668de74
--- /dev/null
@@ -0,0 +1,100 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module P = Printf
+module C = Cps
+module L = Log
+module A = Aut
+module R = AutProcess
+
+type counters = {
+   sections: int;
+   contexts: int;
+   blocks:   int;
+   decls:    int;
+   defs:     int;
+   sorts:    int;
+   grefs:    int;
+   appls:    int;
+   absts:    int;
+   pars:     int;
+   xnodes:   int
+}
+
+let initial_counters = {
+   sections = 0; contexts = 0; blocks = 0; decls = 0; defs = 0;
+   sorts = 0; grefs = 0; appls = 0; absts = 0; pars = 0; xnodes = 0
+}
+
+let rec count_term f c = function
+   | A.Sort _         -> 
+      f {c with sorts = succ c.sorts; xnodes = succ c.xnodes}
+   | A.GRef (_, ts)   -> 
+      let c = {c with grefs = succ c.grefs} in
+      let c = {c with pars = c.pars + List.length ts} in
+      let c = {c with xnodes = succ c.xnodes + List.length ts} in
+      C.list_fold_left f count_term c ts
+   | A.Appl (v, t)    -> 
+      let c = {c with appls = succ c.appls; xnodes = succ c.xnodes} in
+      let f c = count_term f c t in
+      count_term f c v
+   | A.Abst (_, w, t) -> 
+      let c = {c with absts = succ c.absts; xnodes = succ c.xnodes} in
+      let f c = count_term f c t in
+      count_term f c w
+
+let count_entity f c = function
+   | A.Section _        ->
+      f {c with sections = succ c.sections}
+   | A.Context _        ->
+      f {c with contexts = succ c.contexts}
+   | A.Block (_, w)     -> 
+      let c = {c with blocks = succ c.blocks; xnodes = succ c.xnodes} in
+      count_term f c w
+   | A.Decl (_, w)      -> 
+      let c = {c with decls = succ c.decls; xnodes = succ c.xnodes} in
+      count_term f c w
+   | A.Def (_, w, _, t) -> 
+      let c = {c with defs = succ c.defs; xnodes = succ c.xnodes} in
+      let f c = count_term f c t in
+      count_term f c w
+
+let print_counters f c =
+   let terms = c.sorts + c.grefs + c.appls + c.absts in
+   let entities = c.sections + c.contexts + c.blocks + c.decls + c.defs in
+   L.warn (P.sprintf "  Automath representation summary");
+   L.warn (P.sprintf "    Total book entities:      %7u" entities);
+   L.warn (P.sprintf "      Section entities:       %7u" c.sections);
+   L.warn (P.sprintf "      Context entities:       %7u" c.contexts);
+   L.warn (P.sprintf "      Block entities:         %7u" c.blocks);
+   L.warn (P.sprintf "      Declaration entities:   %7u" c.decls);
+   L.warn (P.sprintf "      Definition entities:    %7u" c.defs);
+   L.warn (P.sprintf "    Total Parameter items:    %7u" c.pars);
+   L.warn (P.sprintf "      Application items:      %7u" c.pars);
+   L.warn (P.sprintf "    Total term items:         %7u" terms);
+   L.warn (P.sprintf "      Sort items:             %7u" c.sorts);
+   L.warn (P.sprintf "      Reference items:        %7u" c.grefs);
+   L.warn (P.sprintf "      Application items:      %7u" c.appls);
+   L.warn (P.sprintf "      Abstraction items:      %7u" c.absts);
+   L.warn (P.sprintf "    Global Int. Complexity:   unknown");
+   L.warn (P.sprintf "      + Abbreviation nodes:   %7u" c.xnodes);
+   f ()
+
+let print_process_counters f c =
+   let f iao iar iac iag =
+      L.warn (P.sprintf "  Automath process summary");
+      L.warn (P.sprintf "    Implicit after opening:   %7u" iao);
+      L.warn (P.sprintf "    Implicit after reopening: %7u" iar);
+      L.warn (P.sprintf "    Implicit after closing:   %7u" iac);
+      L.warn (P.sprintf "    Implicit after global:    %7u" iag);
+      f ()
+   in
+   R.get_counters f c
diff --git a/helm/software/lambda-delta/automath/autOutput.mli b/helm/software/lambda-delta/automath/autOutput.mli
new file mode 100644 (file)
index 0000000..611c1bf
--- /dev/null
@@ -0,0 +1,20 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+type counters
+
+val initial_counters: counters
+
+val count_entity: (counters -> 'a) -> counters -> Aut.entity -> 'a
+
+val print_counters: (unit -> 'a) -> counters -> 'a
+
+val print_process_counters: (unit -> 'a) -> AutProcess.status -> 'a
diff --git a/helm/software/lambda-delta/automath/autParser.mly b/helm/software/lambda-delta/automath/autParser.mly
new file mode 100644 (file)
index 0000000..c772837
--- /dev/null
@@ -0,0 +1,95 @@
+/* Copyright (C) 2000, HELM Team.
+ * 
+ * This file is 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., 59 Temple Place - Suite 330, Boston,
+ * MA  02111-1307, USA.
+ * 
+ * For details, see the HELM World-Wide-Web page,
+ * http://cs.unibo.it/helm/.
+ */
+
+%{
+   module A = Aut
+%}
+   %token <int> NUM
+   %token <string> IDENT
+   %token EOF MINUS PLUS TIMES AT FS CN CM SC QT TD OP CP OB CB OA CA
+   %token TYPE PROP DEF EB E PN EXIT
+    
+   %start book
+   %type <Aut.entity list> book   
+%%
+   path: MINUS {} | FS {} ;
+   oftype: CN {} | CM {} ;
+   star: TIMES {} | AT {} ;
+   sc: E {} | SC {} | CN {} ;
+   eof: SC {} | EOF {} ;
+
+   expand:
+      |    { true  }
+      | TD { false }
+   ;
+   local:
+      |      { false }
+      | path { true  }
+   ;
+
+   idents:
+      | IDENT             { [$1]     }
+      | IDENT path idents { $1 :: $3 }
+   ;
+   qid:
+      | IDENT                    { ($1, true, [])  }
+      | IDENT QT QT              { ($1, true, [])  }
+      | IDENT QT local idents QT { ($1, $3, $4)    }
+   ;
+   term:
+      | TYPE                         { A.Sort true         }
+      | PROP                         { A.Sort false        }
+      | qid                          { A.GRef ($1, [])     }
+      | qid OP CP                    { A.GRef ($1, [])     }
+      | qid OP terms CP              { A.GRef ($1, $3)     } 
+      | OA term CA term              { A.Appl ($2, $4)     }
+      | OB IDENT oftype term CB term { A.Abst ($2, $4, $6) } 
+   ;
+   terms:
+      | term          { [$1]     }
+      | term CM terms { $1 :: $3 }
+   ;
+   entity:
+      | PLUS IDENT                    { A.Section (Some (true, $2))  }
+      | PLUS TIMES IDENT              { A.Section (Some (false, $3)) }
+      | MINUS IDENT                   { A.Section None               }
+      | EXIT                          { A.Section None               }
+      | star                          { A.Context None               }
+      | qid star                      { A.Context (Some $1)          }
+      | IDENT DEF EB sc term          { A.Block ($1, $5)             }
+      | IDENT sc term DEF EB          { A.Block ($1, $3)             }
+      | OB IDENT oftype term CB       { A.Block ($2, $4)             }
+      | IDENT DEF PN sc term          { A.Decl ($1, $5)              }
+      | IDENT sc term DEF PN          { A.Decl ($1, $3)              }
+      | IDENT DEF expand term sc term { A.Def ($1, $6, $3, $4)       }
+      | IDENT sc term DEF expand term { A.Def ($1, $3, $5, $6)       }
+   ;
+   entities:
+      |                 { []       }
+      | entity entities { $1 :: $2 }
+   ;
+   book:
+      | entities eof { $1 }
+   ;
diff --git a/helm/software/lambda-delta/automath/autProcess.ml b/helm/software/lambda-delta/automath/autProcess.ml
new file mode 100644 (file)
index 0000000..0009e02
--- /dev/null
@@ -0,0 +1,77 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module A = Aut
+
+type status = {
+   opening  : bool; (* just opened section *)
+   reopening: bool; (* just reopened section *)
+   closing  : bool; (* just closed section *)
+   explicit : bool; (* just found explicit context *)
+   block    : bool; (* just found block opener *)
+   iao      : int;  (* implicit context after opening section *)
+   iar      : int;  (* implicit context after reopening section *)
+   iac      : int;  (* implicit context after closing section *)
+   iag      : int   (* implicit context after global statement *)
+}
+
+(* internal functions *******************************************************)
+
+let orc_reset f st =
+   f {st with opening = false; reopening = false; closing = false}
+
+let orc_count f st =
+   let st = if st.opening then {st with iao = succ st.iao} else st in
+   let st = if st.reopening then {st with iar = succ st.iar} else st in
+   let st = if st.closing then {st with iac = succ st.iac} else st in
+   f st
+
+let exp_count f st =
+   let st = 
+      if st.explicit || st.block then st else {st with iag = succ st.iag} 
+   in
+   f st
+
+let proc_section f st = function
+   | Some (true, _)  -> f {st with opening = true} 
+   | Some (false, _) -> f {st with reopening = true} 
+   | None            -> f {st with closing = true}
+
+let proc_context f st =
+   orc_reset f {st with explicit = true}
+
+let proc_block f st =
+   orc_count (orc_reset f) {st with explicit = false; block = true}
+
+let proc_global f st =
+   let f st = 
+      orc_count (orc_reset f) {st with explicit = false; block = false}
+   in
+   exp_count f st
+
+let proc_entity f st entity = match entity with
+   | A.Section section -> proc_section f st section entity
+   | A.Context _       -> proc_context f st entity  
+   | A.Block _         -> proc_block f st entity
+   | A.Decl _          -> proc_global f st entity
+   | A.Def _           -> proc_global f st entity
+   
+(* interface functions ******************************************************)
+
+let initial_status = {
+   opening = false; reopening = false; closing = false; 
+   explicit = false; block = false;
+   iao = 0; iar = 0; iac = 0; iag = 0
+}
+
+let process_entity = proc_entity
+
+let get_counters f st = f st.iao st.iar st.iac st.iag
diff --git a/helm/software/lambda-delta/automath/autProcess.mli b/helm/software/lambda-delta/automath/autProcess.mli
new file mode 100644 (file)
index 0000000..8f10b65
--- /dev/null
@@ -0,0 +1,18 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+type status
+
+val initial_status: status
+
+val process_entity: (status -> Aut.entity -> 'a) -> status -> Aut.entity -> 'a
+
+val get_counters: (int -> int -> int -> int -> 'a) -> status -> 'a
diff --git a/helm/software/lambda-delta/automath/grundlagen-orig.aut b/helm/software/lambda-delta/automath/grundlagen-orig.aut
new file mode 100644 (file)
index 0000000..4a856c2
--- /dev/null
@@ -0,0 +1,10713 @@
+# Landau's "Grundlagen der Analysis", formal specification in AUTOMATH
+# Copyright (C) 1977, L.S. van Benthem Jutting
+#               1992, revised by F. Wiedijk (http://www.cs.ru.nl/~freek/aut/)
+#               2008, revised by F. Guidi to remove the eta-reductions
+
++l
+@[a:'prop'][b:'prop']
+imp:=[x:a]b:'prop'
+[a1:a][i:imp(a,b)]
+mp:=<a1>i:b
+a@refimp:=[x:a]x:imp(a,a)
+b@[c:'prop'][i:imp(a,b)][j:imp(b,c)]
+trimp:=[x:a]<<x>i>j:imp(a,c)
+@con:='prim':'prop'
+a@not:=imp(con):'prop'
+wel:=not(not(a)):'prop'
+[a1:a]
+weli:=[x:not(a)]<a1>x:wel(a)
+a@[w:wel(a)]
+et:='prim':a
+a@[c1:con]
+cone:=et([x:not(a)]c1):a
++imp
+b@[i:imp(a,b)][j:imp(not(a),b)]
+th1:=et(b,[x:not(b)]<<trimp(con,i,x)>j>x):b
+b@[n:not(a)]
+th2:=trimp(con,b,n,[x:con]cone(b,x)):imp(a,b)
+b@[n:not(b)][i:imp(a,b)]
+th3:=trimp(con,i,n):not(a)
+b@[a1:a][n:not(b)]
+th4:=[x:imp(a,b)]<a1>th3(n,x):not(imp(a,b))
+b@[n:not(imp(a,b))]
+th5:=et([x:not(a)]<th2(x)>n):a
+th6:=[x:b]<[y:a]x>n:not(b)
+b@[n:not(b)][i:imp(not(a),b)]
+th7:=et(a,th3(not(a),b,n,i)):a
+-imp
+b@[i:imp(not(b),not(a))]
+cp:=[x:a]th7".imp"(b,not(a),weli(x),i):imp(a,b)
+@obvious:=imp(con,con):'prop'
+obviousi:=refimp(con):obvious
+b@ec:=imp(a,not(b)):'prop'
+[n:not(a)]
+eci1:=th2".imp"(not(b),n):ec(a,b)
+b@[n:not(b)]
+eci2:=[x:a]n:ec(a,b)
++ec
+b@[i:imp(a,not(b))]
+th1:=i:ec(a,b)
+b@[i:imp(b,not(a))]
+th2:=[x:a][y:b]<x><y>i:ec(a,b)
+-ec
+b@[e:ec(a,b)]
+comec:=th2".ec"(b,a,e):ec(b,a)
+[a1:a]
+ece1:=<a1>e:not(b)
+e@[b1:b]
+ece2:=th3".imp"(not(b),weli(b,b1),e):not(a)
++*ec
+c@[e:ec(a,b)][i:imp(c,a)]
+th3:=trimp(c,a,not(b),i,e):ec(c,b)
+e@[i:imp(c,b)]
+th4:=comec(c,a,th3(b,a,c,comec(e),i)):ec(a,c)
+-ec
+b@and:=not(ec(a,b)):'prop'
+[a1:a][b1:b]
+andi:=th4".imp"(not(b),a1,weli(b,b1)):and(a,b)
+b@[a1:and(a,b)]
+ande1:=th5".imp"(not(b),a1):a
+ande2:=et(b,th6".imp"(not(b),a1)):b
+comand:=andi(b,a,ande2,ande1):and(b,a)
++and
+b@[n:not(a)]
+th1:=weli(ec,eci1(n)):not(and)
+b@[n:not(b)]
+th2:=weli(ec,eci2(n)):not(and)
+b@[n:not(and)][a1:a]
+th3:=ece1(et(ec,n),a1):not(b)
+n@[b1:b]
+th4:=ece2(et(ec,n),b1):not(a)
+n@th5:=th3"l.imp"(and(b,a),and(a,b),n,[x:and(b,a)]comand(b,a,x)):not(and(b,a))
+c@[a1:and(a,b)][i:imp(a,c)]
+th6:=andi(c,b,<ande1(a1)>i,ande2(a1)):and(c,b)
+a1@[i:imp(b,c)]
+th7:=andi(a,c,ande1(a1),<ande2(a1)>i):and(a,c)
+-and
+b@or:=imp(not(a),b):'prop'
+[a1:a]
+ori1:=th2".imp"(not(a),b,weli(a1)):or(a,b)
+b@[b1:b]
+ori2:=[x:not(a)]b1:or(a,b)
++or
+b@[i:imp(not(a),b)]
+th1:=i:or(a,b)
+b@[i:imp(not(b),a)]
+th2:=[x:not]et(b,th3"l.imp"(not(b),a,x,i)):or(a,b)
+-or
+b@[o:or(a,b)][n:not(a)]
+ore2:=<n>o:b
+o@[n:not(b)]
+ore1:=et(th3".imp"(not(a),b,n,o)):a
+o@comor:=[x:not(b)]ore1(x):or(b,a)
++*or
+b@[n:not(a)][m:not(b)]
+th3:=th4"l.imp"(not(a),b,n,m):not(or(a,b))
+b@[n:not(or(a,b))]
+th4:=th5"l.imp"(not(a),b,n):not(a)
+th5:=th6"l.imp"(not(a),b,n):not(b)
+a@th6:=refimp(not(a)):or(a,not(a))
+-or
+c@[o:or(a,b)][i:imp(a,c)][j:imp(b,c)]
+orapp:=th1".imp"(c,i,trimp(not,b,c,o,j)):c
+c@[d:'prop']
++*or
+o@[i:imp(a,c)]
+th7:=trimp(not(c),not,b,[x:not(c)]th3"l.imp"(a,c,x,i),o):or(c,b)
+o@[i:imp(b,c)]
+th8:=trimp(not(a),b,c,o,i):or(a,c)
+d@[o:or(a,b)][i:imp(a,c)][j:imp(b,d)]
+th9:=th7(a,d,c,th8(a,b,d,o,j),i):or(c,d)
+b@[o:or(a,b)]
+th10:=o:imp(not(a),b)
+th11:=comor(o):imp(not(b),a)
+b@[o:or(not(a),b)]
+th12:=trimp(a,wel(a),b,[x:a]weli(x),o):imp(a,b)
+b@[i:imp(a,b)]
+th13:=trimp(wel(a),a,b,[x:wel(a)]et(x),i):or(not(a),b)
+b@[o:or(not(a),not(b))]
+th14:=weli(ec,th12(not(b),o)):not(and)
+b@[n:not(and)]
+th15:=th13(not(b),et(ec,n)):or(not(a),not(b))
+b@[a1:and(not(a),not(b))]
+th16:=th3(ande1(not(a),not(b),a1),ande2(not(a),not(b),a1)):not(or(a,b))
+b@[n:not(or(a,b))]
+th17:=andi(not(a),not(b),th4(n),th5(n)):and(not(a),not(b))
+-or
+b@orec:=and(or(a,b),ec(a,b)):'prop'
+[o:or(a,b)][e:ec(a,b)]
+oreci:=andi(or(a,b),ec(a,b),o,e):orec(a,b)
++orec
+b@[a1:a][n:not(b)]
+th1:=oreci(ori1(a1),eci2(n)):orec(a,b)
+b@[n:not(a)][b1:b]
+th2:=oreci(ori2(b1),eci1(n)):orec(a,b)
+-orec
+b@[o:orec(a,b)]
+orece1:=ande1(or(a,b),ec,o):or(a,b)
+orece2:=ande2(or(a,b),ec,o):ec(a,b)
+comorec:=oreci(b,a,comor(orece1),comec(orece2)):orec(b,a)
++*orec
+o@[a1:a]
+th3:=ece1(orece2,a1):not(b)
+o@[b1:b]
+th4:=ece2(orece2,b1):not(a)
+o@[n:not(a)]
+th5:=ore2(orece1,n):b
+o@[n:not(b)]
+th6:=ore1(orece1,n):a
+-orec
+b@iff:=and(imp(a,b),imp(b,a)):'prop'
+[i:imp(a,b)][j:imp(b,a)]
+iffi:=andi(imp(a,b),imp(b,a),i,j):iff(a,b)
++iff
+b@[a1:a][b1:b]
+th1:=iffi([x:a]b1,[x:b]a1):iff(a,b)
+b@[n:not(a)][m:not(b)]
+th2:=iffi(th2"l.imp"(n),th2"l.imp"(b,a,m)):iff(a,b)
+-iff
+b@[i:iff(a,b)]
+iffe1:=ande1(imp(a,b),imp(b,a),i):imp(a,b)
+iffe2:=ande2(imp(a,b),imp(b,a),i):imp(b,a)
+comiff:=iffi(b,a,iffe2,iffe1):iff(b,a)
++*iff
+i@[a1:a]
+th3:=<a1>iffe1:b
+i@[b1:b]
+th4:=<b1>iffe2:a
+i@[n:not(a)]
+th5:=th3"l.imp"(b,a,n,iffe2):not(b)
+i@[n:not(b)]
+th6:=th3"l.imp"(n,iffe1):not(a)
+b@[a1:a][n:not(b)]
+th7:=th1"l.and"(imp(a,b),imp(b,a),th4"l.imp"(a1,n)):not(iff(a,b))
+b@[n:not(a)][b1:b]
+th8:=th2"l.and"(imp(a,b),imp(b,a),th4"l.imp"(b,a,b1,n)):not(iff(a,b))
+-iff
+a@refiff:=iffi(a,refimp,refimp):iff(a,a)
+b@[i:iff(a,b)]
+symiff:=comiff(i):iff(b,a)
+c@[i:iff(a,b)][j:iff(b,c)]
+triff:=iffi(a,c,trimp(iffe1(i),iffe1(b,c,j)),trimp(c,b,a,iffe2(b,c,j),iffe2(i))):iff(a,c)
++*iff
+b@[i:iff(a,b)]
+th9:=[x:not(a)]th5(i,x):imp(not(a),not(b))
+th10:=[x:not(b)]th6(i,x):imp(not(b),not(a))
+th11:=iffi(not(a),not(b),th9,th10):iff(not(a),not(b))
+b@[i:imp(not(a),not(b))][j:imp(not(b),not(a))]
+th12:=iffi(cp(j),cp(b,a,i)):iff(a,b)
+b@[o:orec(a,b)]
+th13:=iffi(not(b),orece2(o),comor(orece1(o))):iff(a,not(b))
+th14:=th13(b,a,comorec(o)):iff(b,not(a))
+b@[i:iff(a,not(b))]
+th15:=oreci(comor(b,a,iffe2(not(b),i)),iffe1(not(b),i)):orec(a,b)
+b@[i:iff(b,not(a))]
+th16:=comorec(b,a,th15(b,a,i)):orec(a,b)
+c@[i:iff(a,b)][j:imp(a,c)]
+thimp1:=trimp(b,a,c,iffe2(i),j):imp(b,c)
+i@[j:imp(c,a)]
+thimp2:=trimp(c,a,b,j,iffe1(i)):imp(c,b)
+i@[e:ec(a,c)]
+thec1:=th3"l.ec"(c,b,e,iffe2(i)):ec(b,c)
+i@[e:ec(c,a)]
+thec2:=th4"l.ec"(c,a,b,e,iffe2(i)):ec(c,b)
+i@[a1:and(a,c)]
+thand1:=th6"l.and"(c,b,a1,iffe1(i)):and(b,c)
+i@[a1:and(c,a)]
+thand2:=th7"l.and"(c,a,b,a1,iffe1(i)):and(c,b)
+i@[o:or(a,c)]
+thor1:=th7"l.or"(c,b,o,iffe1(i)):or(b,c)
+i@[o:or(c,a)]
+thor2:=th8"l.or"(c,a,b,o,iffe1(i)):or(c,b)
+i@[o:orec(a,c)]
+thorec1:=oreci(b,c,thor1(orece1(a,c,o)),thec1(orece2(a,c,o))):orec(b,c)
+i@[o:orec(c,a)]
+thorec2:=oreci(c,b,thor2(orece1(c,a,o)),thec2(orece2(c,a,o))):orec(c,b)
+-iff
+@[sigma:'type'][p:[x:sigma]'prop']
+%suggestion by van Daalen to remove the first eta-reduction
+%all:=p:'prop' %original line
+all:=[x:sigma]<x>p:'prop'
+%end of suggestion
+[a1:all(sigma,p)][s:sigma]
+alle:=<s>a1:<s>p
++all
+p@[s:sigma][n:not(<s>p)]
+th1:=[x:all(sigma,p)]<<s>x>n:not(all(sigma,p))
+-all
+p@non:=[x:sigma]not(<x>p):[x:sigma]'prop'
+some:=not(non(p)):'prop'
+[s:sigma][sp:<s>p]
+somei:=th1".all"(non(p),s,weli(<s>p,sp)):some(sigma,p)
++some
+p@[n:not(all(sigma,p))][m:non(non(p))][s:sigma]
+t1:=et(<s>p,<s>m):<s>p
+%set etared
+m@t2:=<[x:sigma]t1(x)>n:con
+%reset etared
+n@th1:=[x:non(non(p))]t2(x):some(non(p))
+p@[s:some(non(p))][a1:all(sigma,p)][t:sigma]
+t3:=weli(<t>p,<t>a1):not(not(<t>p))
+a1@t4:=<[x:sigma]t3(x)>s:con
+s@th2:=[x:all(sigma,p)]t4(x):not(all(sigma,p))
+p@[n:not(some(sigma,p))]
+th3:=et(non(p),n):non(p)
+[s:sigma]
+th4:=<s>th3:not(<s>p)
+p@[n:non(p)]
+th5:=weli(non(p),n):not(some(sigma,p))
+-some
+p@[s:some(sigma,p)][x:'prop'][i:[y:sigma]imp(<y>p,x)]
++*some
+i@[n:not(x)][t:sigma]
+t5:=th3"l.imp"(<t>p,x,n,<t>i):not(<t>p)
+n@t6:=mp(some(sigma,p),con,s,th5([y:sigma]t5(y))):con
+-some
+i@someapp:=et(x,[y:not(x)]t6".some"(y)):x
++*some
+p@[q:[x:sigma]'prop'][s:some(sigma,p)][i:[x:sigma]imp(<x>p,<x>q)]
+th6:=someapp(s,some(q),[x:sigma][y:<x>p]somei(q,x,mp(<x>p,<x>q,y,<x>i))):some(q)
+-some
+c@or3:=or(a,or(b,c)):'prop'
+[o:or3(a,b,c)][n:not(a)]
++or3
+th1:=ore2(or(b,c),o,n):or(b,c)
+-or3
+[m:not(b)]
+or3e3:=ore2(b,c,th1".or3",m):c
+o@[n:not(b)]
++*or3
+n@th2:=th2"l.or"(c,a,[x:not(a)]or3e3(x,n)):or(c,a)
+-or3
+n@[m:not(c)]
+or3e1:=ore2(c,a,th2".or3",m):a
+o@[n:not(c)]
++*or3
+n@th3:=th2"l.or"([x:not(b)]or3e1(x,n)):or(a,b)
+-or3
+n@[m:not(a)]
+or3e2:=ore2(th3".or3",m):b
++*or3
+o@th4:=th1"l.or"(b,or(c,a),[x:not(b)]th2(x)):or3(b,c,a)
+th5:=th4(b,c,a,th4):or3(c,a,b)
+-or3
+c@[a1:a]
+or3i1:=ori1(a,or(b,c),a1):or3(a,b,c)
+c@[b1:b]
+or3i2:=ori2(a,or(b,c),ori1(b,c,b1)):or3(a,b,c)
+c@[c1:c]
+or3i3:=ori2(a,or(b,c),ori2(b,c,c1)):or3(a,b,c)
++*or3
+c@[o:or(a,b)]
+th6:=th4"or3"(c,a,b,ori2(c,or(a,b),o)):or3(a,b,c)
+c@[o:or(b,c)]
+th7:=ori2(or(b,c),o):or3(a,b,c)
+c@[o:or(c,a)]
+th8:=th4"or3"(c,a,b,th6(c,a,b,o)):or3(a,b,c)
+-or3
+d@[o:or3(a,b,c)][i:imp(a,d)][j:imp(b,d)][k:imp(c,d)]
+or3app:=orapp(or(b,c),d,o,i,[x:or(b,c)]orapp(b,c,d,x,j,k)):d
+c@and3:=and(a,and(b,c)):'prop'
+[a1:and3(a,b,c)]
+and3e1:=ande1(and(b,c),a1):a
+and3e2:=ande1(b,c,ande2(and(b,c),a1)):b
+and3e3:=ande2(b,c,ande2(and(b,c),a1)):c
+c@[a1:a][b1:b][c1:c]
+and3i:=andi(a,and(b,c),a1,andi(b,c,b1,c1)):and3(a,b,c)
++and3
+c@[a1:and3(a,b,c)]
+th1:=and3i(b,c,a,and3e2(a1),and3e3(a1),and3e1(a1)):and3(b,c,a)
+th2:=th1(b,c,a,th1):and3(c,a,b)
+th3:=andi(and3e1(a1),and3e2(a1)):and(a,b)
+th4:=ande2(and(b,c),a1):and(b,c)
+th5:=th3(c,a,b,th2):and(c,a)
+th6:=and3i(c,b,a,and3e3(a1),and3e2(a1),and3e1(a1)):and3(c,b,a)
+-and3
+c@ec3:=and3(ec,ec(b,c),ec(c,a)):'prop'
+[e:ec3(a,b,c)]
++ec3
+th1:=and3e1(ec,ec(b,c),ec(c,a),e):ec(a,b)
+th2:=and3e2(ec,ec(b,c),ec(c,a),e):ec(b,c)
+th3:=and3e3(ec,ec(b,c),ec(c,a),e):ec(c,a)
+th4:=th1"l.and3"(ec,ec(b,c),ec(c,a),e):ec3(b,c,a)
+th5:=th4(b,c,a,th4):ec3(c,a,b)
+th5a:=and3i(ec(c,b),ec(b,a),ec(a,c),comec(b,c,th2(e)),comec(a,b,th1(e)),comec(c,a,th3(e))):ec3(c,b,a)
+-ec3
+[a1:a]
+ec3e12:=ece1(th1".ec3",a1):not(b)
+ec3e13:=ece2(c,a,th3".ec3",a1):not(c)
+e@[b1:b]
+ec3e23:=ec3e12(b,c,a,th4".ec3",b1):not(c)
+ec3e21:=ec3e13(b,c,a,th4".ec3",b1):not(a)
+e@[c1:c]
+ec3e31:=ec3e12(c,a,b,th5".ec3",c1):not(a)
+ec3e32:=ec3e13(c,a,b,th5".ec3",c1):not(b)
++*ec3
+c@[e:ec(a,b)][f:ec(b,c)][g:ec(c,a)]
+th6:=and3i(ec,ec(b,c),ec(c,a),e,f,g):ec3(a,b,c)
+c@[e:ec3(a,b,c)][o:or(a,b)]
+th7:=orapp(not(c),o,[x:a]ece2(c,a,th3"ec3"(e),x),[x:b]ece1(b,c,th2"ec3"(e),x)):not(c)
+e@[o:or(b,c)]
+th8:=th7(b,c,a,th4"ec3"(e),o):not(a)
+e@[o:or(c,a)]
+th9:=th7(c,a,b,th5"ec3"(e),o):not(b)
+-ec3
+c@[n:not(a)][m:not(b)]
+ec3i1:=th6".ec3"(eci1(n),eci1(b,c,m),eci2(c,a,n)):ec3(a,b,c)
+c@[n:not(b)][m:not(c)]
+ec3i2:=th6".ec3"(eci2(n),eci1(b,c,n),eci1(c,a,m)):ec3(a,b,c)
+c@[n:not(c)][m:not(a)]
+ec3i3:=th6".ec3"(eci1(m),eci2(b,c,n),eci1(c,a,n)):ec3(a,b,c)
++*ec3
+d@[e:'prop'][f:'prop'][o1:or3(a,b,c)][p1:ec3(d,e,f)][i:imp(a,d)][j:imp(b,e)][k:imp(c,f)][d1:d]
+t1:=[x:b]mp(e,con,<x>j,ec3e12(d,e,f,p1,d1)):not(b)
+t2:=[x:c]mp(f,con,<x>k,ec3e13(d,e,f,p1,d1)):not(c)
+th10:=or3e1(o1,t1,t2):a
+k@[e1:e]
+th11:=th10(b,c,a,e,f,d,th4"l.or3"(o1),th4"ec3"(d,e,f,p1),j,k,i,e1):b
+k@[f1:f]
+th12:=th10(c,a,b,f,d,e,th5"l.or3"(o1),th5"ec3"(d,e,f,p1),k,i,j,f1):c
+-ec3
+c@orec3:=and(or3(a,b,c),ec3(a,b,c)):'prop'
+[o:orec3(a,b,c)]
+orec3e1:=ande1(or3(a,b,c),ec3(a,b,c),o):or3(a,b,c)
+orec3e2:=ande2(or3(a,b,c),ec3(a,b,c),o):ec3(a,b,c)
+c@[o:or3(a,b,c)][e:ec3(a,b,c)]
+orec3i:=andi(or3(a,b,c),ec3(a,b,c),o,e):orec3(a,b,c)
++orec3
+c@[o:orec3(a,b,c)]
+th1:=orec3i(b,c,a,th4"l.or3"(orec3e1(o)),th4"l.ec3"(orec3e2(o))):orec3(b,c,a)
+th2:=orec3i(c,a,b,th5"l.or3"(orec3e1(o)),th5"l.ec3"(orec3e2(o))):orec3(c,a,b)
+-orec3
++e
+sigma@[s:sigma][t:sigma]
+is:='prim':'prop'
+s@refis:='prim':is(s,s)
+p@[s:sigma][t:sigma][sp:<s>p][i:is(s,t)]
+isp:='prim':<t>p
+sigma@[s:sigma][t:sigma][i:is(s,t)]
+symis:=isp([x:sigma]is(x,s),s,t,refis(s),i):is(t,s)
+t@[u:sigma][i:is(s,t)][j:is(t,u)]
+tris:=isp([x:sigma]is(x,u),t,s,j,symis(i)):is(s,u)
+u@[i:is(u,s)][j:is(u,t)]
+tris1:=tris(s,u,t,symis(u,s,i),j):is(s,t)
+u@[i:is(s,u)][j:is(t,u)]
+tris2:=tris(s,u,t,i,symis(t,u,j)):is(s,t)
+sp@[i:is(t,s)]
+isp1:=isp(symis(t,s,i)):<t>p
+t@[n:not(is(s,t))]
+symnotis:=th3"l.imp"(is(t,s),is(s,t),n,[x:is(t,s)]symis(t,s,x)):not(is(t,s))
++notis
+u@[n:not(is(s,t))][i:is(s,u)]
+th1:=isp([x:sigma]not(is(x,t)),s,u,n,i):not(is(u,t))
+n@[i:is(u,s)]
+th2:=th1(symis(u,s,i)):not(is(u,t))
+n@[i:is(t,u)]
+th3:=isp([x:sigma]not(is(s,x)),t,u,n,i):not(is(s,u))
+n@[i:is(u,t)]
+th4:=th3(symis(u,t,i)):not(is(s,u))
+u@[v:sigma][n:not(is(s,t))][i:is(s,u)][j:is(t,v)]
+th5:=th3(u,t,v,th1(n,i),j):not(is(u,v))
+-notis
+u@[v:sigma][i:is(s,t)][j:is(t,u)][k:is(u,v)]
+tr3is:=tris(s,u,v,tris(i,j),k):is(s,v)
+v@[w:sigma][i:is(s,t)][j:is(t,u)][k:is(u,v)][l:is(v,w)]
+tr4is:=tris(s,v,w,tr3is(i,j,k),l):is(s,w)
+p@amone:=[x:sigma][y:sigma][u:<x>p][v:<y>p]is(x,y):'prop'
+[a1:amone(sigma,p)][s:sigma][t:sigma][sp:<s>p][tp:<t>p]
+amonee:=<tp><sp><t><s>a1:is(s,t)
+p@one:=and(amone(sigma,p),some(sigma,p)):'prop'
+[a1:amone(sigma,p)][s:some(sigma,p)]
+onei:=andi(amone(sigma,p),some(sigma,p),a1,s):one(sigma,p)
+p@[o1:one(sigma,p)]
+onee1:=ande1(amone(sigma,p),some(sigma,p),o1):amone(sigma,p)
+onee2:=ande2(amone(sigma,p),some(sigma,p),o1):some(sigma,p)
+ind:='prim':sigma
+oneax:='prim':<ind>p
++one
+[s:sigma][sp:<s>p]
+th1:=amonee(onee1,ind,s,oneax,sp):is(ind,s)
+-one
+sigma@[tau:'type'][f:[x:sigma]tau][s:sigma][t:sigma][i:is(s,t)]
+isf:=isp(sigma,[x:sigma]is(tau,<s>f,<x>f),s,t,refis(tau,<s>f),i):is(tau,<s>f,<t>f)
+f@injective:=all([x:sigma]all([y:sigma]imp(is(tau,<x>f,<y>f),is(x,y)))):'prop'
+[i:injective(f)][s:sigma][t:sigma][j:is(tau,<s>f,<t>f)]
+isfe:=<j><t><s>i:is(s,t)
+f@[t0:tau]
+image:=some([x:sigma]is(tau,t0,<x>f)):'prop'
+f@[s:sigma]
+tofs:=<s>f:tau
+imagei:=somei([x:sigma]is(tau,tofs,<x>f),s,refis(tau,tofs)):image(tofs)
++inj
+i@[ta:tau][tb:tau][j:is(tau,ta,tb)][sa:sigma][sb:sigma][ja:is(tau,ta,tofs(sa))][jb:is(tau,tb,tofs(sb))]
+t1:=tr3is(tau,tofs(sa),ta,tb,tofs(sb),symis(tau,ta,tofs(sa),ja),j,jb):is(tau,tofs(sa),tofs(sb))
+th1:=isfe(sa,sb,t1):is(sa,sb)
+i@[t0:tau]
+th2:=[x:sigma][y:sigma][u:is(tau,t0,<x>f)][v:is(tau,t0,<y>f)]th1(t0,t0,refis(tau,t0),x,y,u,v):amone([x:sigma]is(tau,t0,<x>f))
+[j:image(f,t0)]
+th3:=onei([x:sigma]is(tau,t0,<x>f),th2,j):one([x:sigma]is(tau,t0,<x>f))
+-inj
+i@[t0:tau][j:image(f,t0)]
+soft:=ind([x:sigma]is(tau,t0,<x>f),th3".inj"(t0,j)):sigma
+i@inverse:=[x:tau][u:image(f,x)]soft(x,u):[x:tau][u:image(f,x)]sigma
+j@ists1:=oneax([x:sigma]is(tau,t0,<x>f),th3".inj"(t0,j)):is(tau,t0,tofs(soft(t0,j)))
+ists2:=symis(tau,t0,tofs(soft(t0,j)),ists1):is(tau,tofs(soft(t0,j)),t0)
+i@[ta:tau][ja:image(ta)][tb:tau][jb:image(tb)][j:is(tau,ta,tb)]
+isinv:=th1".inj"(ta,tb,j,soft(ta,ja),soft(tb,jb),ists1(ta,ja),ists1(tb,jb)):is(soft(ta,ja),soft(tb,jb))
+jb@[j:is(soft(ta,ja),soft(tb,jb))]
+isinve:=tr3is(tau,ta,tofs(soft(ta,ja)),tofs(soft(tb,jb)),tb,ists1(ta,ja),isf(soft(ta,ja),soft(tb,jb),j),ists2(tb,jb)):is(tau,ta,tb)
+i@[s:sigma]
+isst1:=isfe(s,soft(tofs(s),imagei(s)),ists1(tofs(s),imagei(s))):is(s,soft(tofs(s),imagei(s)))
+isst2:=symis(s,soft(tofs(s),imagei(s)),isst1):is(soft(tofs(s),imagei(s)),s)
+f@surjective:=all(tau,[x:tau]image(x)):'prop'
+bijective:=and(injective,surjective):'prop'
+[b:bijective(f)]
++*inj
+b@t2:=ande1(injective,surjective,b):injective(f)
+t3:=ande2(injective,surjective,b):surjective(f)
+[t:tau]
+so:=soft(t2,t,<t>t3):sigma
+-inj
+b@invf:=[x:tau]so".inj"(x):[x:tau]sigma
+[s:sigma]
+thinvf1:=tris(s,soft(t2".inj",tofs(s),imagei(s)),<<s>f>invf,isst1(t2".inj",s),isinv(t2".inj",tofs(s),imagei(s),tofs(s),<tofs(s)>t3".inj",refis(tau,tofs(s)))):is(s,<<s>f>invf)
+b@[t:tau]
+thinvf2:=ists1(t2".inj",t,<t>t3".inj"):is(tau,t,<<t>invf>f)
+tau@[upsilon:'type'][f:[x:sigma]tau][g:[x:tau]upsilon]
++*inj
+g@[if:injective(sigma,tau,f)][ig:injective(tau,upsilon,g)]
+h:=[x:sigma]<<x>f>g:[x:sigma]upsilon
+[s:sigma][t:sigma][i:is(upsilon,<s>h,<t>h)]
+t4:=isfe(tau,upsilon,g,ig,<s>f,<t>f,i):is(tau,<s>f,<t>f)
+t5:=isfe(f,if,s,t,t4):is(s,t)
+ig@th4:=[x:sigma][y:sigma][v:is(upsilon,<x>h,<y>h)]t5(x,y,v):injective(sigma,upsilon,[x:sigma]<<x>f>g)
+-inj
++surj
+g@[sf:surjective(sigma,tau,f)][sg:surjective(tau,upsilon,g)]
+h:=[x:sigma]<<x>f>g:[x:sigma]upsilon
+[u:upsilon]
+t1:=<u>sg:image(tau,upsilon,g,u)
+[t:tau][i:is(upsilon,u,<t>g)]
+t2:=<t>sf:image(sigma,tau,f,t)
+[s:sigma][j:is(tau,t,<s>f)]
+t3:=tris(upsilon,u,<t>g,<s>h,i,isf(tau,upsilon,g,t,<s>f,j)):is(upsilon,u,<s>h)
+t4:=somei([x:sigma]is(upsilon,u,<x>h),s,t3):image(sigma,upsilon,h,u)
+i@t5:=someapp([x:sigma]is(tau,t,<x>f),t2,image(sigma,upsilon,h,u),[x:sigma][v:is(tau,t,<x>f)]t4(x,v)):image(sigma,upsilon,h,u)
+u@t6:=someapp(tau,[x:tau]is(upsilon,u,<x>g),t1,image(sigma,upsilon,h,u),[x:tau][v:is(upsilon,u,<x>g)]t5(x,v)):image(sigma,upsilon,h,u)
+sg@th1:=[x:upsilon]t6(x):surjective(sigma,upsilon,[x:sigma]<<x>f>g)
+-surj
++bij
+g@[bf:bijective(sigma,tau,f)][bg:bijective(tau,upsilon,g)]
+h:=[x:sigma]<<x>f>g:[x:sigma]upsilon
+t1:=th4"e.inj"(f,g,ande1(injective(f),surjective(f),bf),ande1(injective(tau,upsilon,g),surjective(tau,upsilon,g),bg)):injective(sigma,upsilon,h)
+t2:=th1"e.surj"(f,g,ande2(injective(f),surjective(f),bf),ande2(injective(tau,upsilon,g),surjective(tau,upsilon,g),bg)):surjective(sigma,upsilon,h)
+th1:=andi(injective(sigma,upsilon,h),surjective(sigma,upsilon,h),t1,t2):bijective(sigma,upsilon,[x:sigma]<<x>f>g)
+-bij
+tau@[f:[x:sigma]tau][g:[x:sigma]tau][i:is([x:sigma]tau,f,g)][s:sigma]
+fise:=isp([x:sigma]tau,[y:[x:sigma]tau]is(tau,<s>f,<s>y),f,g,refis(tau,<s>f),i):is(tau,<s>f,<s>g)
+g@[i:[x:sigma]is(tau,<x>f,<x>g)]
+fisi:='prim':is([x:sigma]tau,f,g)
++fis
+g@[i:is([x:sigma]tau,f,g)][s:sigma][t:sigma][j:is(s,t)]
+th1:=tris(tau,<s>f,<t>f,<t>g,isf(f,s,t,j),fise(i,t)):is(tau,<s>f,<t>g)
+-fis
+p@ot:='prim':'type'
+[o1:ot]
+in:='prim':sigma
+inp:='prim':<in>p
+p@otax1:='prim':injective(ot,sigma,[x:ot]in(x))
+[s:sigma][sp:<s>p]
+otax2:='prim':image(ot,sigma,[x:ot]in(x),s)
+o1@[o2:ot][i:is(ot,o1,o2)]
+isini:=isf(ot,sigma,[x:ot]in(x),o1,o2,i):is(in(o1),in(o2))
+o2@[i:is(in(o1),in(o2))]
+isine:=isfe(ot,sigma,[x:ot]in(x),otax1,o1,o2,i):is(ot,o1,o2)
+sp@out:=soft(ot,sigma,[x:ot]in(x),otax1,s,otax2):ot
+[t:sigma][tp:<t>p][i:is(s,t)]
+isouti:=isinv(ot,sigma,[x:ot]in(x),otax1,s,otax2,t,otax2(t,tp),i):is(ot,out(s,sp),out(t,tp))
+tp@[i:is(ot,out(s,sp),out(t,tp))]
+isoute:=isinve(ot,sigma,[x:ot]in(x),otax1,s,otax2,t,otax2(t,tp),i):is(s,t)
+o1@isoutin:=tris(ot,o1,soft(ot,sigma,[x:ot]in(x),otax1,in(o1),imagei(ot,sigma,[x:ot]in(x),o1)),out(in(o1),inp(o1)),isst1(ot,sigma,[x:ot]in(x),otax1,o1),isinv(ot,sigma,[x:ot]in(x),otax1,in(o1),imagei(ot,sigma,[x:ot]in(x),o1),in(o1),otax2(in(o1),inp(o1)),refis(sigma,in(o1)))):is(ot,o1,out(in(o1),inp(o1)))
+sp@isinout:=ists1(ot,sigma,[x:ot]in(x),otax1,s,otax2):is(s,in(out(s,sp)))
+tau@pairtype:='prim':'type'
+[s:sigma][t:tau]
+pair:='prim':pairtype
+tau@[p1:pairtype]
+first:='prim':sigma
+second:='prim':tau
+pairis1:='prim':is(pairtype,pair(first,second),p1)
+pairis2:=symis(pairtype,pair(first,second),p1,pairis1):is(pairtype,p1,pair(first,second))
+t@firstis1:='prim':is(sigma,first(pair),s)
+firstis2:=symis(sigma,first(pair),s,firstis1):is(sigma,s,first(pair))
+secondis1:='prim':is(tau,second(pair),t)
+secondis2:=symis(tau,second(pair),t,secondis1):is(tau,t,second(pair))
+a@[ksi:'type'][x:ksi][y:ksi]
++ite
+[z:ksi]
+prop1:=and(imp(a,is(ksi,z,x)),imp(not(a),is(ksi,z,y))):'prop'
+y@[a1:a][x1:ksi][y1:ksi][px1:prop1(x1)][py1:prop1(y1)]
+t1:=ande1(imp(a,is(ksi,x1,x)),imp(not(a),is(ksi,x1,y)),px1):imp(a,is(ksi,x1,x))
+t2:=mp(a,is(ksi,x1,x),a1,t1):is(ksi,x1,x)
+t3:=t2(y1,x1,py1,px1):is(ksi,y1,x)
+t4:=tris2(ksi,x1,y1,x,t2,t3):is(ksi,x1,y1)
+a1@t5:=[s:ksi][t:ksi][ps:prop1(s)][pt:prop1(t)]t4(s,t,ps,pt):amone(ksi,[t:ksi]prop1(t))
+t6:=[x1:a]refis(ksi,x):imp(a,is(ksi,x,x))
+t7:=th2"l.imp"(not(a),is(ksi,x,y),weli(a,a1)):imp(not(a),is(ksi,x,y))
+t8:=andi(imp(a,is(ksi,x,x)),imp(not(a),is(ksi,x,y)),t6,t7):prop1(x)
+t9:=somei(ksi,[t:ksi]prop1(t),x,t8):some(ksi,[t:ksi]prop1(t))
+t10:=onei(ksi,[t:ksi]prop1(t),t5,t9):one(ksi,[t:ksi]prop1(t))
+y@[n:not(a)][x1:ksi][y1:ksi][px1:prop1(x1)][py1:prop1(y1)]
+t11:=ande2(imp(a,is(ksi,x1,x)),imp(not(a),is(ksi,x1,y)),px1):imp(not(a),is(ksi,x1,y))
+t12:=mp(not(a),is(ksi,x1,y),n,t11):is(ksi,x1,y)
+t13:=t12(y1,x1,py1,px1):is(ksi,y1,y)
+t14:=tris2(ksi,x1,y1,y,t12,t13):is(ksi,x1,y1)
+n@t15:=[s:ksi][t:ksi][ps:prop1(s)][pt:prop1(t)]t14(s,t,ps,pt):amone(ksi,[t:ksi]prop1(t))
+t16:=[x1:not(a)]refis(ksi,y):imp(not(a),is(ksi,y,y))
+t17:=th2"l.imp"(a,is(ksi,y,x),n):imp(a,is(ksi,y,x))
+t18:=andi(imp(a,is(ksi,y,x)),imp(not(a),is(ksi,y,y)),t17,t16):prop1(y)
+t19:=somei(ksi,[t:ksi]prop1(t),y,t18):some(ksi,[t:ksi]prop1(t))
+t20:=onei(ksi,[t:ksi]prop1(t),t15,t19):one(ksi,[t:ksi]prop1(t))
+y@t21:=th1"l.imp"(a,one(ksi,[t:ksi]prop1(t)),[t:a]t10(t),[t:not(a)]t20(t)):one(ksi,[t:ksi]prop1(t))
+-ite
+ite:=ind(ksi,[t:ksi]prop1".ite"(t),t21".ite"):ksi
++*ite
+y@t22:=oneax(ksi,[t:ksi]prop1(t),t21):prop1(ite)
+t23:=ande1(imp(a,is(ksi,ite,x)),imp(not(a),is(ksi,ite,y)),t22):imp(a,is(ksi,ite,x))
+t24:=ande2(imp(a,is(ksi,ite,x)),imp(not(a),is(ksi,ite,y)),t22):imp(not(a),is(ksi,ite,y))
+-ite
+y@[a1:a]
+itet:=mp(a,is(ksi,ite,x),a1,t23".ite"):is(ksi,ite,x)
+y@[n:not(a)]
+itef:=mp(not(a),is(ksi,ite,y),n,t24".ite"):is(ksi,ite,y)
+sigma@[s0:sigma][t0:sigma]
++wissel
+[s:sigma]
+wa:=ite(is(s,s0),sigma,t0,s):sigma
+[i:is(s,s0)]
+t1:=itet(is(s,s0),sigma,t0,s,i):is(wa,t0)
+s@[n:not(is(s,s0))]
+t2:=itef(is(s,s0),sigma,t0,s,n):is(wa,s)
+s@wb:=ite(is(s,t0),sigma,s0,wa):sigma
+[i:is(s,t0)]
+t3:=itet(is(s,t0),sigma,s0,wa,i):is(wb,s0)
+s@[n:not(is(s,t0))]
+t4:=itef(is(s,t0),sigma,s0,wa,n):is(wb,wa)
+s@[i:is(s,s0)][j:is(s0,t0)]
+t5:=tris(wb,s0,t0,t3(tris(s,s0,t0,i,j)),j):is(wb,t0)
+i@[n:not(is(s0,t0))]
+t6:=tris(wb,wa,t0,t4(th2"e.notis"(s0,t0,s,n,i)),t1(i)):is(wb,t0)
+i@t7:=th1"l.imp"(is(s0,t0),is(wb,t0),[t:is(s0,t0)]t5(t),[t:not(is(s0,t0))]t6(t)):is(wb,t0)
+s@[n:not(is(s,s0))][o:not(is(s,t0))]
+t8:=tris(wb,wa,s,t4(o),t2(n)):is(wb,s)
+-wissel
+wissel:=[x:sigma]wb".wissel"(x):[x:sigma]sigma
+[s:sigma][i:is(s,s0)]
+iswissel1:=t7".wissel"(s,i):is(<s>wissel,t0)
+s@[i:is(s,t0)]
+iswissel2:=t3".wissel"(s,i):is(<s>wissel,s0)
+s@[n:not(is(s,s0))][o:not(is(s,t0))]
+iswissel3:=t8".wissel"(s,n,o):is(<s>wissel,s)
++*wissel
+s@[t:sigma][i:is(wb(s),wb(t))][n:not(is(s,t))][j:is(s,s0)]
+t9:=symnotis(s0,t,th1"e.notis"(s,t,s0,n,j)):not(is(t,s0))
+[k:is(s0,t0)]
+t10:=th3"e.notis"(t,s0,t0,t9,k):not(is(t,t0))
+t11:=tris(wb(s),wb(t),t,i,t8(t,t9,t10)):is(wb(s),t)
+t12:=<tris1(t,t0,wb(s),t11,t7(j))>t10:con
+j@t13:=[v:is(s0,t0)]t12(v):not(is(s0,t0))
+[k:is(t,t0)]
+t14:=tris(wb(s),wb(t),s0,i,t3(t,k)):is(wb(s),s0)
+t15:=t12(tris1(s0,t0,wb(s),t14,t7(j))):con
+j@t16:=[v:is(t,t0)]t15(v):not(is(t,t0))
+t17:=tris(wb(s),wb(t),t,i,t8(t,t9,t16)):is(wb(s),t)
+t18:=t15(tris1(t,t0,wb(s),t17,t7(j))):con
+n@t19:=[v:is(s,s0)]t18(v):not(is(s,s0))
+t20:=t19(t,s,symis(wb(s),wb(t),i),symnotis(s,t,n)):not(is(t,s0))
+[j:is(s,t0)]
+t21:=symnotis(t0,t,th1"e.notis"(s,t,t0,n,j)):not(is(t,t0))
+t22:=tris(wb(s),wb(t),t,i,t8(t,t20,t21)):is(wb(s),t)
+t23:=<tris1(t,s0,wb(s),t22,t3(j))>t20:con
+n@t24:=[v:is(s,t0)]t23(v):not(is(s,t0))
+t25:=t24(t,s,symis(wb(s),wb(t),i),symnotis(s,t,n)):not(is(t,t0))
+t26:=tris(wb(s),wb(t),t,i,t8(t,t20,t25)):is(wb(s),t)
+t27:=<tris1(s,t,wb(s),t8(t19,t24),t26)>n:con
+i@t28:=et(is(s,t),[v:not(is(s,t))]t27(v)):is(s,t)
+t0@th1:=[x:sigma][y:sigma][v:is(wb(x),wb(y))]t28(x,y,v):injective(sigma,sigma,wissel)
+s@[i:is(s,s0)]
+t29:=tris2(s,wb(t0),s0,i,t3(t0,refis(t0))):is(s,wb(t0))
+t30:=somei(sigma,[x:sigma]is(s,wb(x)),t0,t29):image(sigma,sigma,wissel,s)
+s@[i:is(s,t0)]
+t31:=tris2(s,wb(s0),t0,i,t7(s0,refis(s0))):is(s,wb(s0))
+t32:=somei(sigma,[x:sigma]is(s,wb(x)),s0,t31):image(sigma,sigma,wissel,s)
+s@[n:not(is(s,s0))][o:not(is(s,t0))]
+t33:=symis(wb(s),s,t8(n,o)):is(s,wb(s))
+t34:=somei(sigma,[x:sigma]is(s,wb(x)),s,t33):image(sigma,sigma,wissel,s)
+n@t35:=th1"l.imp"(is(s,t0),image(sigma,sigma,wissel,s),[v:is(s,t0)]t32(v),[v:not(is(s,t0))]t34(v)):image(sigma,sigma,wissel,s)
+s@t36:=th1"l.imp"(is(s,s0),image(sigma,sigma,wissel,s),[v:is(s,s0)]t30(v),[v:not(is(s,s0))]t35(v)):image(sigma,sigma,wissel,s)
+t0@th2:=[x:sigma]t36(x):surjective(sigma,sigma,wissel)
+th3:=andi(injective(sigma,sigma,wissel),surjective(sigma,sigma,wissel),th1,th2):bijective(sigma,sigma,wissel)
+-wissel
+tau@[f:[x:sigma]tau][s0:sigma][t0:sigma]
+changef:=[x:sigma]<<x>wissel(s0,t0)>f:[x:sigma]tau
+[s:sigma][i:is(s,s0)]
+changef1:=isf(sigma,tau,f,<s>wissel(s0,t0),t0,iswissel1(s0,t0,s,i)):is(tau,<s>changef,<t0>f)
+s@[i:is(s,t0)]
+changef2:=isf(sigma,tau,f,<s>wissel(s0,t0),s0,iswissel2(s0,t0,s,i)):is(tau,<s>changef,<s0>f)
+s@[n:not(is(s,s0))][o:not(is(s,t0))]
+changef3:=isf(sigma,tau,f,<s>wissel(s0,t0),s,iswissel3(s0,t0,s,n,o)):is(tau,<s>changef,<s>f)
++*wissel
+t0@[i:injective(f)]
+th4:=th4"e.inj"(sigma,sigma,tau,wissel(s0,t0),f,th1(s0,t0),i):injective(changef)
+t0@[s:surjective(f)]
+th5:=th1"e.surj"(sigma,sigma,tau,wissel(s0,t0),f,th2(s0,t0),s):surjective(changef)
+t0@[b:bijective(f)]
+th6:=th1"e.bij"(sigma,sigma,tau,wissel(s0,t0),f,th3(s0,t0),b):bijective(changef)
+-wissel
+-e
++r
+a@[b:[x:a]'prop']
+%suggestion by van Daalen to remove the second eta-reduction
+%imp:=b:'prop' %original line
+imp:=[x:a]<x>b:'prop'
+%end of suggestion
+[a1:a][i:imp(a,b)]
+mp:=<a1>i:<a1>b
++imp
+b@[n:not(a)]
+%set etared
+th2:=[x:a]cone(<x>b,mp"l"(a,con,x,n)):imp(a,b)
+%reset etared
+-imp
+b@ec:=[x:a]not(<x>b):'prop'
+[n:not(a)]
+eci1:=[x:a]cone(not(<x>b),mp"l"(a,con,x,n)):ec(a,b)
+b@[a1:and(a,b)]
+ande2:=<ande1(a,b,a1)>ande2"l"(a,b,a1):<ande1(a,b,a1)>b
+a@[ksi:'type']
++ite
+[x1:ksi][y1:ksi]
+is:=is"l.e"(ksi,x1,y1):'prop'
+-ite
+[x:[t:a]ksi][y:[t:not(a)]ksi][i:[t:a][u:a]is".ite"(<t>x,<u>x)][j:[t:not(a)][u:not(a)]is".ite"(<t>y,<u>y)]
++*ite
+j@[z:ksi]
+prop1:=and(imp(a,[t:a]is(z,<t>x)),imp(not(a),[t:not(a)]is(z,<t>y))):'prop'
+j@[a1:a][x1:ksi][y1:ksi][px1:prop1(x1)][py1:prop1(y1)]
+t1:=ande1"l"(imp(a,[t:a]is(x1,<t>x)),imp(not(a),[t:not(a)]is(x1,<t>y)),px1):imp(a,[t:a]is(x1,<t>x))
+t2:=mp(a,[t:a]is(x1,<t>x),a1,t1):is(x1,<a1>x)
+t3:=t2(y1,x1,py1,px1):is(y1,<a1>x)
+t4:=tris2"l.e"(ksi,x1,y1,<a1>x,t2,t3):is(x1,y1)
+a1@t5:=[s:ksi][t:ksi][ps:prop1(s)][pt:prop1(t)]t4(s,t,ps,pt):amone"l.e"(ksi,[t:ksi]prop1(t))
+t6:=<a1>i:imp(a,[t:a]is(<a1>x,<t>x))
+t7:=th2"r.imp"(not(a),[t:not(a)]is(<a1>x,<t>y),weli(a,a1)):imp(not(a),[t:not(a)]is(<a1>x,<t>y))
+t8:=andi(imp(a,[t:a]is(<a1>x,<t>x)),imp(not(a),[t:not(a)]is(<a1>x,<t>y)),t6,t7):prop1(<a1>x)
+t9:=somei(ksi,[t:ksi]prop1(t),<a1>x,t8):some(ksi,[t:ksi]prop1(t))
+t10:=onei"l.e"(ksi,[t:ksi]prop1(t),t5,t9):one"l.e"(ksi,[t:ksi]prop1(t))
+j@[n:not(a)][x1:ksi][y1:ksi][px1:prop1(x1)][py1:prop1(y1)]
+t11:=ande2"l"(imp(a,[t:a]is(x1,<t>x)),imp(not(a),[t:not(a)]is(x1,<t>y)),px1):imp(not(a),[t:not(a)]is(x1,<t>y))
+t12:=mp(not(a),[t:not(a)]is(x1,<t>y),n,t11):is(x1,<n>y)
+t13:=t12(y1,x1,py1,px1):is(y1,<n>y)
+t14:=tris2"l.e"(ksi,x1,y1,<n>y,t12,t13):is(x1,y1)
+n@t15:=[s:ksi][t:ksi][ps:prop1(s)][pt:prop1(t)]t14(s,t,ps,pt):amone"l.e"(ksi,[t:ksi]prop1(t))
+t16:=<n>j:imp(not(a),[t:not(a)]is(<n>y,<t>y))
+t17:=th2"r.imp"(a,[t:a]is(<n>y,<t>x),n):imp(a,[t:a]is(<n>y,<t>x))
+t18:=andi"l"(imp(a,[t:a]is(<n>y,<t>x)),imp(not(a),[t:not(a)]is(<n>y,<t>y)),t17,t16):prop1(<n>y)
+t19:=somei(ksi,[t:ksi]prop1(t),<n>y,t18):some(ksi,[t:ksi]prop1(t))
+t20:=onei"l.e"(ksi,[t:ksi]prop1(t),t15,t19):one"l.e"(ksi,[t:ksi]prop1(t))
+j@t21:=th1"l.imp"(a,one"l.e"(ksi,[t:ksi]prop1(t)),[t:a]t10(t),[t:not(a)]t20(t)):one"l.e"(ksi,[t:ksi]prop1(t))
+-ite
+j@ite:=ind"l.e"(ksi,[t:ksi]prop1".ite"(t),t21".ite"):ksi
++*ite
+j@t22:=oneax"l.e"(ksi,[t:ksi]prop1(t),t21):prop1(ite)
+t23:=ande1"l"(imp(a,[t:a]is(ite,<t>x)),imp(not(a),[t:not(a)]is(ite,<t>y)),t22):imp(a,[t:a]is(ite,<t>x))
+t24:=ande2"l"(imp(a,[t:a]is(ite,<t>x)),imp(not(a),[t:not(a)]is(ite,<t>y)),t22):imp(not(a),[t:not(a)]is(ite,<t>y))
+-ite
+j@[a1:a]
+itet:=mp(a,[t:a]is".ite"(ite,<t>x),a1,t23".ite"):is".ite"(ksi,ite,<a1>x)
+j@[n:not(a)]
+itef:=mp(not(a),[t:not(a)]is".ite"(ite,<t>y),n,t24".ite"):is".ite"(ksi,ite,<n>y)
+-r
++*e
++st
+sigma@set:='prim':'type'
+[s:sigma][s0:set]
+esti:='prim':'prop'
+p@setof:='prim':set
+[s:sigma][sp:<s>p]
+estii:='prim':esti(s,setof(p))
+s@[e:esti(s,setof(p))]
+estie:='prim':<s>p
+sigma@[s0:set]
+empty:=non([x:sigma]esti(x,s0)):'prop'
+nonempty:=some([x:sigma]esti(x,s0)):'prop'
+[n:[x:sigma]not(esti(x,s0))]
+emptyi:=n:empty(s0)
+s0@[e:empty(s0)][s:sigma]
+emptye:=<s>e:not(esti(s,s0))
+s0@[s:sigma][ses0:esti(s,s0)]
+nonemptyi:=somei([x:sigma]esti(x,s0),s,ses0):nonempty(s0)
+s0@[n:nonempty(s0)][x:'prop'][x1:[y:sigma][z:esti(y,s0)]x]
+nonemptyapp:=someapp([y:sigma]esti(y,s0),n,x,x1):x
+s0@[t0:set]
+incl:=all([x:sigma]imp(esti(x,s0),esti(x,t0))):'prop'
+[e:[x:sigma][y:esti(x,s0)]esti(x,t0)]
+incli:=e:incl(s0,t0)
+t0@[i:incl(s0,t0)][s:sigma][ses0:esti(s,s0)]
+incle:=<ses0><s>i:esti(s,t0)
+s0@refincl:=[x:sigma][y:esti(x,s0)]y:incl(s0,s0)
+t0@disj:=all([x:sigma]ec(esti(x,s0),esti(x,t0))):'prop'
+[n:[x:sigma][y:esti(x,s0)]not(esti(x,t0))]
+disji1:=n:disj(s0,t0)
+t0@[n:[x:sigma][y:esti(x,t0)]not(esti(x,s0))]
+disji2:=[x:sigma]th2"l.ec"(esti(x,s0),esti(x,t0),<x>n):disj(s0,t0)
+t0@[d:disj(s0,t0)][s:sigma][ses0:esti(s,s0)]
+disje1:=ece1(esti(s,s0),esti(s,t0),<s>d,ses0):not(esti(s,t0))
+s@[set0:esti(s,t0)]
+disje2:=ece2(esti(s,s0),esti(s,t0),<s>d,set0):not(esti(s,s0))
+t0@[d:disj(s0,t0)]
+symdisj:=[x:sigma][y:esti(x,t0)]disje2(d,x,y):disj(t0,s0)
++disj
+t0@[s:sigma][ses0:esti(s,s0)][set0:esti(s,t0)]
+th1:=th1"l.all"([x:sigma]ec(esti(x,s0),esti(x,t0)),s,th4"l.imp"(esti(s,s0),not(esti(s,t0)),ses0,weli(esti(s,t0),set0))):not(disj(s0,t0))
+th2:=th1(t0,s0,s,set0,ses0):not(disj(t0,s0))
+-disj
+t0@[i:is(set,s0,t0)][s:sigma][ses0:esti(s,s0)]
+issete1:=isp(set,[x:set]esti(s,x),s0,t0,ses0,i):esti(s,t0)
+s@[set0:esti(s,t0)]
+issete2:=isp1(set,[x:set]esti(s,x),t0,s0,set0,i):esti(s,s0)
++isset
+i@th1:=[x:sigma][y:esti(x,s0)]issete1(x,y):incl(s0,t0)
+th2:=[x:sigma][y:esti(x,t0)]issete2(x,y):incl(t0,s0)
+-isset
+t0@[i:incl(s0,t0)][j:incl(t0,s0)]
+isseti:='prim':is(set,s0,t0)
++*isset
+t0@[s:sigma][ses0:esti(s,s0)][n:not(esti(s,t0))]
+th3:=th3"l.imp"(is(set,s0,t0),esti(s,t0),n,[t:is(set,s0,t0)]issete1(t,s,ses0)):not(is(set,s0,t0))
+th4:=symnotis(set,s0,t0,th3):not(is(set,t0,s0))
+s@nissetprop:=and(esti(s,s0),not(esti(s,t0))):'prop'
+[n:not(nissetprop(s0,t0,s))][e:esti(s,s0)]
+t1:=et(esti(s,t0),th3"l.and"(esti(s,s0),not(esti(s,t0)),n,e)):esti(s,t0)
+t0@[n:not(is(set,s0,t0))][m:not(some([x:sigma]nissetprop(s0,t0,x)))][l:non([x:sigma]nissetprop(t0,s0,x))][s:sigma]
+t2:=th4"l.some"([x:sigma]nissetprop(s0,t0,x),m,s):not(nissetprop(s0,t0,s))
+t3:=<s>l:not(nissetprop(t0,s0,s))
+l@t4:=isseti(s0,t0,[x:sigma][y:esti(x,s0)]t1(s0,t0,x,t2(x),y),[x:sigma][y:esti(x,t0)]t1(t0,s0,x,t3(x),y)):is(set,s0,t0)
+m@t5:=th3"l.imp"(non([x:sigma]nissetprop(t0,s0,x)),is(set,s0,t0),n,[y:non([x:sigma]nissetprop(t0,s0,x))]t4(y)):some([x:sigma]nissetprop(t0,s0,x))
+n@th5:=th1"l.or"(some([x:sigma]nissetprop(s0,t0,x)),some([x:sigma]nissetprop(t0,s0,x)),[y:not(some([x:sigma]nissetprop(s0,t0,x)))]t5(y)):or(some([x:sigma]nissetprop(s0,t0,x)),some([x:sigma]nissetprop(t0,s0,x)))
+-isset
+sigma@[alpha:'type'][sa:[x:alpha]set]
+unmore:=setof([x:sigma]some(alpha,[y:alpha]esti(x,<y>sa))):set
+[s:sigma][a:alpha][seasa:esti(s,<a>sa)]
+eunmore1:=estii([x:sigma]some(alpha,[y:alpha]esti(x,<y>sa)),s,somei(alpha,[y:alpha]esti(s,<y>sa),a,seasa)):esti(s,unmore(sa))
+s@[seun:esti(s,unmore(sa))][x:'prop'][x1:[y:alpha][z:esti(s,<y>sa)]x]
+unmoreapp:=someapp(alpha,[y:alpha]esti(s,<y>sa),estie([z:sigma]some(alpha,[y:alpha]esti(z,<y>sa)),s,seun),x,x1):x
++eq
+sigma@[r:[x:sigma][y:sigma]'prop'][refr1:[x:sigma]<x><x>r][symr1:[x:sigma][y:sigma][t:<y><x>r]<x><y>r][trr1:[x:sigma][y:sigma][z:sigma][t:<y><x>r][u:<z><y>r]<z><x>r][s:sigma]
+refr:=<s>refr1:<s><s>r
+[t:sigma][tsr:<t><s>r]
+symr:=<tsr><t><s>symr1:<s><t>r
+t@[u:sigma][tsr:<t><s>r][utr:<u><t>r]
+trr:=<utr><tsr><u><t><s>trr1:<u><s>r
+u@[sur:<s><u>r][tur:<t><u>r]
+tr1r:=trr(s,u,t,symr(u,s,sur),tur):<t><s>r
+u@[usr:<u><s>r][utr:<u><t>r]
+tr2r:=trr(s,u,t,usr,symr(t,u,utr)):<t><s>r
+s@ecelt:=setof(<s>r):set
++1
+th1:=estii(<s>r,s,refr):esti(s,ecelt(s))
+t@[tsr:<t><s>r]
+th2:=estii(<s>r,t,tsr):esti(t,ecelt(s))
+t@[e:esti(t,ecelt(s))]
+th3:=estie(<s>r,t,e):<t><s>r
+tsr@[u:sigma][e:esti(u,ecelt(s))]
+t1:=th2(t,u,tr1r(t,u,s,tsr,th3(u,e))):esti(u,ecelt(t))
+tsr@th4:=isseti(ecelt(s),ecelt(t),[x:sigma][y:esti(x,ecelt(s))]t1(x,y),[x:sigma][y:esti(x,ecelt(t))]t1(t,s,symr(tsr),x,y)):is(set,ecelt(s),ecelt(t))
+t@[n:not(<t><s>r)][u:sigma][e:esti(u,ecelt(s))]
+t2:=th3"l.imp"(esti(u,ecelt(t)),<t><s>r,n,[x:esti(u,ecelt(t))]tr2r(s,t,u,th3(u,e),th3(t,u,x))):not(esti(u,ecelt(t)))
+n@th5:=[x:sigma][y:esti(x,ecelt(s))]t2(x,y):disj(ecelt(s),ecelt(t))
+s@th6:=nonemptyi(ecelt(s),s,th1):nonempty(ecelt(s))
+-1
+trr1@[s0:set][s:sigma]
+ecp:=is(set,s0,ecelt(s)):'prop'
+s0@anec:=some([x:sigma]ecp(x)):'prop'
++2
+trr1@[s:sigma]
+th1:=somei([x:sigma]ecp(ecelt(s),x),s,refis(set,ecelt(s))):anec(ecelt(s))
+-2
+[ecs0:anec(s0)]
++*2
+ecs0@[s:sigma][ses0:esti(s,s0)][t:sigma][e:ecp(s0,t)]
+t1:=issete1(s0,ecelt(t),e,s,ses0):esti(s,ecelt(t))
+t2:=th4"eq.1"(t,s,th3"eq.1"(t,s,t1)):is(set,ecelt(t),ecelt(s))
+t3:=tris(set,s0,ecelt(t),ecelt(s),e,t2):is(set,s0,ecelt(s))
+ses0@th2:=someapp([x:sigma]ecp(x),ecs0,is(set,s0,ecelt(s)),[x:sigma][y:ecp(x)]t3(x,y)):is(set,s0,ecelt(s))
+[t:sigma][tes0:esti(t,s0)]
+th3:=th3"eq.1"(s,t,issete1(s0,ecelt(s),th2,t,tes0)):<t><s>r
+t@[tsr:<t><s>r]
+th4:=issete2(s0,ecelt(s),th2,t,th2"eq.1"(s,t,tsr)):esti(t,s0)
+ecs0@[s:sigma][e:ecp(s0,s)]
+t4:=isp(set,[x:set]nonempty(x),ecelt(s),s0,th6"eq.1"(s),symis(set,s0,ecelt(s),e)):nonempty(s0)
+ecs0@th5:=someapp([x:sigma]ecp(x),ecs0,nonempty(s0),[x:sigma][y:ecp(x)]t4(x,y)):nonempty(s0)
+-2
++3
+ecs0@[t0:set][ect0:anec(t0)][s:sigma][ses0:esti(s,s0)][t:sigma][tet0:esti(t,t0)][tsr:<t><s>r]
+th1:=tr3is(set,s0,ecelt(s),ecelt(t),t0,th2"eq.2"(s0,ecs0,s,ses0),th4"eq.1"(s,t,tsr),symis(set,t0,ecelt(t),th2"eq.2"(t0,ect0,t,tet0))):is(set,s0,t0)
+tet0@[n:not(<t><s>r)]
+t1:=isp1(set,[x:set]disj(x,ecelt(t)),ecelt(s),s0,th5"eq.1"(s,t,n),th2"eq.2"(s0,ecs0,s,ses0)):disj(s0,ecelt(t))
+th2:=isp1(set,[x:set]disj(s0,x),ecelt(t),t0,t1,th2"eq.2"(t0,ect0,t,tet0)):disj(s0,t0)
+t0@[i:is(set,s0,t0)][s:sigma][ses0:esti(s,s0)]
+t2:=issete1(s0,t0,i,s,ses0):esti(s,t0)
+t3:=th1"st.disj"(s0,t0,s,ses0,t2):not(disj(s0,t0))
+i@th3:=nonemptyapp(s0,th5"eq.2"(s0,ecs0),not(disj(s0,t0)),[x:sigma][y:esti(x,s0)]t3(x,y)):not(disj(s0,t0))
+-3
+trr1@ect:=ot(set,[x:set]anec(x)):'type'
+ecs0@ectset:=out(set,[x:set]anec(x),s0,ecs0):ect
+trr1@[s:sigma]
+ectelt:=ectset(ecelt(s),th1".2"(s)):ect
+trr1@[e:ect]
+ecect:=in(set,[x:set]anec(x),e):set
++4
+th1:=inp(set,[x:set]anec(x),e):anec(ecect(e))
+th2:=th5"eq.2"(ecect(e),th1):nonempty(ecect(e))
+[x:'prop'][x1:[y:sigma][z:esti(y,ecect(e))]x]
+th3:=nonemptyapp(ecect(e),th2,x,x1):x
+s@th4:=isinout(set,[x:set]anec(x),ecelt(s),th1"eq.2"(s)):is(set,ecelt(s),ecect(ectelt(s)))
+th5:=issete1(ecelt(s),ecect(ectelt(s)),th4,s,th1"eq.1"(s)):esti(s,ecect(ectelt(s)))
+th6:=eunmore1(ect,[x:ect]ecect(x),s,ectelt(s),th5):esti(s,unmore(ect,[x:ect]ecect(x)))
+e@[s:sigma][see:esti(s,ecect(e))][t:sigma][tee:esti(t,ecect(e))]
+th7:=th3"eq.2"(ecect(e),th1,s,see,t,tee):<t><s>r
+t@[tsr:<t><s>r]
+th8:=th4"eq.2"(ecect(e),th1,s,see,t,tsr):esti(t,ecect(e))
+-4
++5
+[f:ect][i:is(ect,e,f)]
+th1:=isini(set,[x:set]anec(x),e,f,i):is(set,ecect(e),ecect(f))
+f@[i:is(set,ecect(e),ecect(f))]
+th2:=isine(set,[x:set]anec(x),e,f,i):is(ect,e,f)
+f@[s:sigma][see:esti(s,ecect(e))][t:sigma][tef:esti(t,ecect(f))][tsr:<t><s>r]
+th3:=th2(th1"eq.3"(ecect(e),th1"eq.4"(e),ecect(f),th1"eq.4"(f),s,see,t,tef,tsr)):is(ect,e,f)
+see@[i:is(ect,e,f)]
+th4:=issete1(ecect(e),ecect(f),th1(i),s,see):esti(s,ecect(f))
+tef@[i:is(ect,e,f)]
+th5:=th3"eq.2"(ecect(f),th1"eq.4"(f),s,th4(i),t,tef):<t><s>r
+trr1@[s:sigma][t:sigma][tsr:<t><s>r]
+th6:=isouti(set,[x:set]anec(x),ecelt(s),th1"eq.2"(s),ecelt(t),th1"eq.2"(t),th4"eq.1"(s,t,tsr)):is(ect,ectelt(s),ectelt(t))
+-5
+trr1@[alpha:'type'][fu:[x:sigma]alpha]
+fixfu:=[x:sigma][y:sigma][z:<y><x>r]is(alpha,<x>fu,<y>fu):'prop'
++10
+[ff:fixfu][e:ect][a1:alpha][s:sigma]
+prop1:=and(esti(s,ecect(e)),is(alpha,<s>fu,a1)):'prop'
+a1@prop2:=some([x:sigma]prop1(x)):'prop'
+e@[s:sigma][see:esti(s,ecect(e))]
+t1:=andi(esti(s,ecect(e)),is(alpha,<s>fu,<s>fu),see,refis(alpha,<s>fu)):prop1(<s>fu,s)
+t2:=somei([x:sigma]prop1(<s>fu,x),s,t1):prop2(<s>fu)
+t3:=somei(alpha,[x:alpha]prop2(x),<s>fu,t2):some(alpha,[x:alpha]prop2(x))
+e@t4:=th3"eq.4"(e,some(alpha,[x:alpha]prop2(x)),[x:sigma][y:esti(x,ecect(e))]t3(x,y)):some(alpha,[x:alpha]prop2(x))
+a1@[b1:alpha][pa1:prop2(a1)][pb1:prop2(b1)][s:sigma][pa1s:prop1(a1,s)][t:sigma][pb1t:prop1(b1,t)]
+t5:=ande1(esti(s,ecect(e)),is(alpha,<s>fu,a1),pa1s):esti(s,ecect(e))
+t6:=ande1(esti(t,ecect(e)),is(alpha,<t>fu,b1),pb1t):esti(t,ecect(e))
+t7:=th7"eq.4"(e,s,t5,t,t6):<t><s>r
+t8:=ande2(esti(s,ecect(e)),is(alpha,<s>fu,a1),pa1s):is(alpha,<s>fu,a1)
+t9:=ande2(esti(t,ecect(e)),is(alpha,<t>fu,b1),pb1t):is(alpha,<t>fu,b1)
+t10:=tr3is(alpha,a1,<s>fu,<t>fu,b1,symis(alpha,<s>fu,a1,t8),<t7><t><s>ff,t9):is(alpha,a1,b1)
+pa1s@t11:=someapp([x:sigma]prop1(b1,x),pb1,is(alpha,a1,b1),[x:sigma][y:prop1(b1,x)]t10(x,y)):is(alpha,a1,b1)
+pb1@t12:=someapp([x:sigma]prop1(a1,x),pa1,is(alpha,a1,b1),[x:sigma][y:prop1(a1,x)]t11(x,y)):is(alpha,a1,b1)
+e@t13:=[x:alpha][y:alpha][u:prop2(x)][v:prop2(y)]t12(x,y,u,v):amone(alpha,[x:alpha]prop2(x))
+t14:=onei(alpha,[x:alpha]prop2(x),t13,t4):one(alpha,[x:alpha]prop2(x))
+-10
+e".10"@indeq:=ind(alpha,[x:alpha]prop2".10"(x),t14".10"):alpha
++*10
+e@th1:=oneax(alpha,[x:alpha]prop2(x),t14):some([x:sigma]and(esti(x,ecect(e)),is(alpha,<x>fu,indeq)))
+[s:sigma][see:esti(s,ecect(e))]
+th2:=t12(<s>fu,indeq,t2(s,see),th1):is(alpha,<s>fu,indeq)
+ff@[s:sigma]
+th3:=th2(ectelt(s),s,th5"eq.4"(s)):is(alpha,<s>fu,indeq(ectelt(s)))
+-10
+alpha@[fu2:[x:sigma][y:sigma]alpha]
+fixfu2:=[x:sigma][y:sigma][z:sigma][u:sigma][v:<y><x>r][w:<u><z>r]is(alpha,<z><x>fu2,<u><y>fu2):'prop'
++11
+[ff2:fixfu2][s:sigma][t:sigma][tsr:<t><s>r][u:sigma]
+t1:=<refr(u)><tsr><u><u><t><s>ff2:is(alpha,<u><s>fu2,<u><t>fu2)
+tsr@t2:=fisi(sigma,alpha,<s>fu2,<t>fu2,[x:sigma]t1(x)):is([x:sigma]alpha,<s>fu2,<t>fu2)
+ff2@[e:ect]
+i:=indeq([x:sigma]alpha,fu2,[x:sigma][y:sigma][z:<y><x>r]t2(x,y,z),e):[x:sigma]alpha
+[s:sigma][t:sigma][tsr:<t><s>r][u:sigma][uee:esti(u,ecect(e))]
+t3:=th2"eq.10"([x:sigma]alpha,fu2,[x:sigma][y:sigma][z:<y><x>r]t2(x,y,z),e,u,uee):is([x:sigma]alpha,<u>fu2,i)
+t4:=fise(alpha,<u>fu2,i,t3,s):is(alpha,<s><u>fu2,<s>i)
+t5:=fise(alpha,<u>fu2,i,t3,t):is(alpha,<t><u>fu2,<t>i)
+t6:=<tsr><refr(u)><t><s><u><u>ff2:is(alpha,<s><u>fu2,<t><u>fu2)
+t7:=tr3is(alpha,<s>i,<s><u>fu2,<t><u>fu2,<t>i,symis(alpha,<s><u>fu2,<s>i,t4),t6,t5):is(alpha,<s>i,<t>i)
+tsr@t8:=th3"eq.4"(e,is(alpha,<s>i,<t>i),[x:sigma][y:esti(x,ecect(e))]t7(x,y)):is(alpha,<s>i,<t>i)
+-11
+e".11"@[f:ect]
+indeq2:=indeq(i".11",[x:sigma][y:sigma][z:<y><x>r]t8".11"(x,y,z),f):alpha
++*11
+f@[s:sigma][see:esti(s,ecect(e))][t:sigma][tef:esti(t,ecect(f))]
+t9:=th2"eq.10"(i,[x:sigma][y:sigma][z:<y><x>r]t8(x,y,z),f,t,tef):is(alpha,<t>i,indeq2(e,f))
+t10:=th2"eq.10"([x:sigma]alpha,fu2,[x:sigma][y:sigma][z:<y><x>r]t2(x,y,z),e,s,see):is([x:sigma]alpha,<s>fu2,i)
+t11:=fise(alpha,<s>fu2,i,t10,t):is(alpha,<t><s>fu2,<t>i)
+th1:=tris(alpha,<t><s>fu2,<t>i,indeq2,t11,t9):is(alpha,<t><s>fu2,indeq2(e,f))
+ff2@[s:sigma][t:sigma]
+th2:=th1(ectelt(s),ectelt(t),s,th5"eq.4"(s),t,th5"eq.4"(t)):is(alpha,<t><s>fu2,indeq2(ectelt(s),ectelt(t)))
+-11
++landau
++n
+@nat:='prim':'type'
+[x:nat][y:nat]
+is:=is"e"(nat,x,y):'prop'
+nis:=not(is(x,y)):'prop'
+x@[s:set(nat)]
+in:=esti(nat,x,s):'prop'
+@[p:[x:nat]'prop']
+some:=some"l"(nat,p):'prop'
+all:=all"l"(nat,p):'prop'
+one:=one"e"(nat,p):'prop'
+@1:='prim':nat
+suc:='prim':[x:nat]nat
+[x:nat][y:nat][i:is(x,y)]
+ax2:=isf(nat,nat,suc,x,y,i):is(<x>suc,<y>suc)
+@ax3:='prim':[x:nat]nis(<x>suc,1)
+ax4:='prim':[x:nat][y:nat][u:is(<x>suc,<y>suc)]is(x,y)
+[s:set(nat)]
+cond1:=in(1,s):'prop'
+cond2:=all([x:nat]imp(in(x,s),in(<x>suc,s))):'prop'
+@ax5:='prim':[s:set(nat)][u:cond1(s)][v:cond2(s)][x:nat]in(x,s)
+[p:[x:nat]'prop'][1p:<1>p][xsp:[x:nat][y:<x>p]<<x>suc>p][x:nat]
++i1
+s:=setof(nat,p):set(nat)
+t1:=estii(nat,p,1,1p):cond1(s)
+[y:nat][yes:in(y,s)]
+t2:=estie(nat,p,y,yes):<y>p
+t3:=estii(nat,p,<y>suc,<t2><y>xsp):in(<y>suc,s)
+x@t4:=<x><[y:nat][u:in(y,s)]t3(y,u)><t1><s>ax5:in(x,s)
+-i1
+induction:=estie(nat,p,x,t4".i1"):<x>p
+@[x:nat][y:nat][n:nis(x,y)]
++21
+[i:is(<x>suc,<y>suc)]
+t1:=<i><y><x>ax4:is(x,y)
+-21
+satz1:=th3"l.imp"(is(<x>suc,<y>suc),is(x,y),n,[u:is(<x>suc,<y>suc)]t1".21"(u)):nis(<x>suc,<y>suc)
++22
+x@prop1:=nis(<x>suc,x):'prop'
+@t1:=<1>ax3:prop1(1)
+x@[p:prop1(x)]
+t2:=satz1(<x>suc,x,p):prop1(<x>suc)
+-22
+x@satz2:=induction([y:nat]prop1".22"(y),t1".22",[y:nat][u:prop1".22"(y)]t2".22"(y,u),x):nis(<x>suc,x)
++23
+prop1:=or(is(x,1),some([u:nat]is(x,<u>suc))):'prop'
+@t1:=ori1(is(1,1),some([u:nat]is(1,<u>suc)),refis(nat,1)):prop1(1)
+x@t2:=somei(nat,[u:nat]is(<x>suc,<u>suc),x,refis(nat,<x>suc)):some([u:nat]is(<x>suc,<u>suc))
+t3:=ori2(is(<x>suc,1),some([u:nat]is(<x>suc,<u>suc)),t2):prop1(<x>suc)
+t4:=induction([y:nat]prop1(y),t1,[y:nat][u:prop1(y)]t3(y),x):prop1(x)
+-23
+[n:nis(x,1)]
+satz3:=ore2(is(x,1),some([u:nat]is(x,<u>suc)),t4".23",n):some([u:nat]is(x,<u>suc))
+y@[z:nat][i:is(x,<y>suc)][j:is(x,<z>suc)]
++*23
+j@t5:=<tris1(nat,<y>suc,<z>suc,x,i,j)><z><y>ax4:is(y,z)
+x@t6:=[y:nat][z:nat][u:is(x,<y>suc)][v:is(x,<z>suc)]t5(y,z,u,v):amone(nat,[u:nat]is(x,<u>suc))
+-23
+n@satz3a:=onei(nat,[u:nat]is(x,<u>suc),t6".23",satz3):one([u:nat]is(x,<u>suc))
++24
+x@[f:[y:nat]nat]
+prop1:=all([y:nat]is(<<y>suc>f,<<y>f>suc)):'prop'
+prop2:=and(is(<1>f,<x>suc),prop1):'prop'
+x@[a:[y:nat]nat][b:[y:nat]nat][pa:prop2(a)][pb:prop2(b)][y:nat]
+prop3:=is(<y>a,<y>b):'prop'
+pb@t1:=ande1(is(<1>a,<x>suc),prop1(a),pa):is(<1>a,<x>suc)
+t2:=ande1(is(<1>b,<x>suc),prop1(b),pb):is(<1>b,<x>suc)
+t3:=tris2(nat,<1>a,<1>b,<x>suc,t1,t2):prop3(1)
+y@[p:prop3(y)]
+t4:=ax2(<y>a,<y>b,p):is(<<y>a>suc,<<y>b>suc)
+t5:=ande2(is(<1>a,<x>suc),prop1(a),pa):prop1(a)
+t6:=ande2(is(<1>b,<x>suc),prop1(b),pb):prop1(b)
+t7:=<y>t5:is(<<y>suc>a,<<y>a>suc)
+t8:=<y>t6:is(<<y>suc>b,<<y>b>suc)
+t9:=tr3is(nat,<<y>suc>a,<<y>a>suc,<<y>b>suc,<<y>suc>b,t7,t4,symis"e"(nat,<<y>suc>b,<<y>b>suc,t8)):prop3(<y>suc)
+y@t10:=induction([z:nat]prop3(z),t3,[z:nat][u:prop3(z)]t9(z,u),y):prop3(y)
+pb@t11:=fisi(nat,nat,a,b,[y:nat]t10(y)):is"e"([y:nat]nat,a,b)
+x@aa:=[z:[y:nat]nat][u:[y:nat]nat][v:prop2(z)][w:prop2(u)]t11(z,u,v,w):amone([y:nat]nat,[z:[y:nat]nat]prop2(z))
+prop4:=some"l"([y:nat]nat,[z:[y:nat]nat]prop2(z)):'prop'
+@t12:=[x:nat]refis(nat,<<x>suc>suc):prop1(1,suc)
+t13:=andi(is(<1>suc,<1>suc),prop1(1,suc),refis(nat,<1>suc),t12):prop2(1,suc)
+t14:=somei([y:nat]nat,[z:[y:nat]nat]prop2(1,z),suc,t13):prop4(1)
+x@[p:prop4(x)][f:[y:nat]nat][pf:prop2(f)]
+g:=[y:nat]<<y>f>suc:[y:nat]nat
+[y:nat]
+t15:=refis(nat,<y>g):is(<y>g,<<y>f>suc)
+pf@t16:=ande1(is(<1>f,<x>suc),prop1(f),pf):is(<1>f,<x>suc)
+t17:=tris(nat,<1>g,<<1>f>suc,<<x>suc>suc,t15(1),ax2(<1>f,<x>suc,t16)):is(<1>g,<<x>suc>suc)
+y@t18:=ande2(is(<1>f,<x>suc),prop1(f),pf):prop1(f)
+t19:=<y>t18:is(<<y>suc>f,<<y>f>suc)
+t20:=tris2(nat,<<y>suc>f,<y>g,<<y>f>suc,t19,t15):is(<<y>suc>f,<y>g)
+t21:=tris(nat,<<y>suc>g,<<<y>suc>f>suc,<<y>g>suc,t15(<y>suc),ax2(<<y>suc>f,<y>g,t20)):is(<<y>suc>g,<<y>g>suc)
+pf@t22:=[y:nat]t21(y):prop1(<x>suc,g)
+t23:=andi(is(<1>g,<<x>suc>suc),prop1(<x>suc,g),t17,t22):prop2(<x>suc,g)
+t24:=somei([y:nat]nat,[z:[y:nat]nat]prop2(<x>suc,z),g,t23):prop4(<x>suc)
+p@t25:=someapp([y:nat]nat,[z:[y:nat]nat]prop2(z),p,prop4(<x>suc),[z:[y:nat]nat][u:prop2(z)]t24(z,u)):prop4(<x>suc)
+x@bb:=induction([y:nat]prop4(y),t14,[y:nat][u:prop4(y)]t25(y,u),x):prop4(x)
+-24
+x@satz4:=onei([y:nat]nat,[z:[y:nat]nat]prop2".24"(z),aa".24",bb".24"):one"e"([y:nat]nat,[z:[y:nat]nat]and(is(<1>z,<x>suc),all([y:nat]is(<<y>suc>z,<<y>z>suc))))
+plus:=ind([y:nat]nat,[z:[y:nat]nat]prop2".24"(z),satz4):[y:nat]nat
+y@pl:=<y>plus:nat
++*24
+x@t26:=oneax([y:nat]nat,[z:[y:nat]nat]prop2(z),satz4):prop2(plus)
+-24
+x@satz4a:=ande1(is(<1>plus,<x>suc),prop1".24"(plus),t26".24"):is(pl(x,1),<x>suc)
++*24
+x@t27:=ande2(is(<1>plus,<x>suc),prop1(plus),t26):prop1(plus)
+-24
+y@satz4b:=<y>t27".24":is(pl(x,<y>suc),<pl(x,y)>suc)
++*24
+@t28:=t11(1,plus(1),suc,t26(1),t13):is"e"([y:nat]nat,plus(1),suc)
+-24
+x@satz4c:=fise(nat,nat,plus(1),suc,t28".24",x):is(pl(1,x),<x>suc)
++*24
+x@t29:=t11(<x>suc,plus(<x>suc),[y:nat]<<y>plus>suc,t26(<x>suc),t23(bb,plus,t26)):is"e"([y:nat]nat,plus(<x>suc),[y:nat]<<y>plus>suc)
+-24
+y@satz4d:=fise(nat,nat,plus(<x>suc),[z:nat]<<z>plus>suc,t29".24",y):is(pl(<x>suc,y),<pl(x,y)>suc)
+x@satz4e:=symis(nat,pl(x,1),<x>suc,satz4a):is(<x>suc,pl(x,1))
+y@satz4f:=symis(nat,pl(x,<y>suc),<pl(x,y)>suc,satz4b):is(<pl(x,y)>suc,pl(x,<y>suc))
+x@satz4g:=symis(nat,pl(1,x),<x>suc,satz4c):is(<x>suc,pl(1,x))
+y@satz4h:=symis(nat,pl(<x>suc,y),<pl(x,y)>suc,satz4d):is(<pl(x,y)>suc,pl(<x>suc,y))
+z@[i:is(x,y)]
+ispl1:=isf(nat,nat,[u:nat]pl(u,z),x,y,i):is(pl(x,z),pl(y,z))
+ispl2:=isf(nat,nat,[u:nat]pl(z,u),x,y,i):is(pl(z,x),pl(z,y))
+z@[u:nat][i:is(x,y)][j:is(z,u)]
+ispl12:=tris(nat,pl(x,z),pl(y,z),pl(y,u),ispl1(i),ispl2(z,u,y,j)):is(pl(x,z),pl(y,u))
++25
+z@prop1:=is(pl(pl(x,y),z),pl(x,pl(y,z))):'prop'
+y@t1:=tr3is(nat,pl(pl(x,y),1),<pl(x,y)>suc,pl(x,<y>suc),pl(x,pl(y,1)),satz4a(pl(x,y)),satz4f,ispl2(<y>suc,pl(y,1),x,satz4e(y))):prop1(1)
+z@[p:prop1(z)]
+t2:=ax2(pl(pl(x,y),z),pl(x,pl(y,z)),p):is(<pl(pl(x,y),z)>suc,<pl(x,pl(y,z))>suc)
+t3:=tr4is(nat,pl(pl(x,y),<z>suc),<pl(pl(x,y),z)>suc,<pl(x,pl(y,z))>suc,pl(x,<pl(y,z)>suc),pl(x,pl(y,<z>suc)),satz4b(pl(x,y),z),t2,satz4f(x,pl(y,z)),ispl2(<pl(y,z)>suc,pl(y,<z>suc),x,satz4f(y,z))):prop1(<z>suc)
+-25
+z@satz5:=induction([u:nat]prop1".25"(u),t1".25",[u:nat][v:prop1".25"(u)]t3".25"(u,v),z):is(pl(pl(x,y),z),pl(x,pl(y,z)))
+asspl1:=satz5:is(pl(pl(x,y),z),pl(x,pl(y,z)))
+asspl2:=symis(nat,pl(pl(x,y),z),pl(x,pl(y,z)),satz5):is(pl(x,pl(y,z)),pl(pl(x,y),z))
++26
+y@prop1:=is(pl(x,y),pl(y,x)):'prop'
+t1:=satz4a(y):is(pl(y,1),<y>suc)
+t2:=satz4c(y):is(pl(1,y),<y>suc)
+t3:=tris2(nat,pl(1,y),pl(y,1),<y>suc,t2,t1):prop1(1,y)
+[p:prop1(x,y)]
+t4:=tris(nat,<pl(x,y)>suc,<pl(y,x)>suc,pl(y,<x>suc),ax2(pl(x,y),pl(y,x),p),satz4f(y,x)):is(<pl(x,y)>suc,pl(y,<x>suc))
+t5:=satz4d:is(pl(<x>suc,y),<pl(x,y)>suc)
+t6:=tris(nat,pl(<x>suc,y),<pl(x,y)>suc,pl(y,<x>suc),t5,t4):prop1(<x>suc,y)
+-26
+y@satz6:=induction([z:nat]prop1".26"(z,y),t3".26",[z:nat][u:prop1".26"(z,y)]t6".26"(z,y,u),x):is(pl(x,y),pl(y,x))
+compl:=satz6:is(pl(x,y),pl(y,x))
++*26
+x@t7:=tris(nat,pl(x,1),<x>suc,pl(1,x),satz4a,satz4g):prop1(1)
+y@[p:prop1(y)]
+t8:=tr3is(nat,pl(x,<y>suc),<pl(x,y)>suc,<pl(y,x)>suc,pl(<y>suc,x),satz4b,ax2(pl(x,y),pl(y,x),p),satz4h(y,x)):prop1(<y>suc)
+y@anders:=induction([z:nat]prop1(z),t7,[z:nat][u:prop1(z)]t8(z,u),y):is(pl(x,y),pl(y,x))
+-26
++27
+y@prop1:=nis(y,pl(x,y)):'prop'
+x@t1:=symnotis(nat,<x>suc,1,<x>ax3):nis(1,<x>suc)
+t2:=th4"e.notis"(nat,1,<x>suc,pl(x,1),t1,satz4a):prop1(1)
+y@[p:prop1(y)]
+t3:=satz1(y,pl(x,y),p):nis(<y>suc,<pl(x,y)>suc)
+t4:=th4"e.notis"(nat,<y>suc,<pl(x,y)>suc,pl(x,<y>suc),t3,satz4b):prop1(<y>suc)
+-27
+y@satz7:=induction([z:nat]prop1".27"(z),t2".27",[z:nat][u:prop1".27"(z)]t4".27"(z,u),y):nis(y,pl(x,y))
+z@[n:nis(y,z)]
++28
+prop1:=nis(pl(x,y),pl(x,z)):'prop'
+t1:=satz1(y,z,n):nis(<y>suc,<z>suc)
+t2:=th5"e.notis"(nat,<y>suc,<z>suc,pl(1,y),pl(1,z),t1,satz4g(y),satz4g(z)):prop1(1,y,z,n)
+[p:prop1(x,y,z,n)]
+t3:=satz1(pl(x,y),pl(x,z),p):nis(<pl(x,y)>suc,<pl(x,z)>suc)
+t4:=th5"e.notis"(nat,<pl(x,y)>suc,<pl(x,z)>suc,pl(<x>suc,y),pl(<x>suc,z),t3,satz4h,satz4h(z)):prop1(<x>suc,y,z,n)
+-28
+satz8:=induction([u:nat]prop1".28"(u,y,z,n),t2".28",[u:nat][v:prop1".28"(u,y,z,n)]t4".28"(u,y,z,n,v),x):nis(pl(x,y),pl(x,z))
+z@[i:is(pl(x,y),pl(x,z))]
+satz8a:=th7"l.imp"(is(y,z),nis(pl(x,y),pl(x,z)),weli(is(pl(x,y),pl(x,z)),i),[u:nis(y,z)]satz8(u)):is(y,z)
+z@diffprop:=is(x,pl(y,z)):'prop'
++*28
+y@[u:nat][v:nat][du:diffprop(u)][dv:diffprop(v)]
+t5:=satz8a(y,u,v,tris1(nat,pl(y,u),pl(y,v),x,du,dv)):is(u,v)
+-28
+y@satz8b:=[u:nat][v:nat][du:diffprop(u)][dv:diffprop(v)]t5".28"(u,v,du,dv):amone(nat,[z:nat]is(x,pl(y,z)))
++29
+i:=is(x,y):'prop'
+ii:=some([u:nat]diffprop(x,y,u)):'prop'
+iii:=some([v:nat]diffprop(y,x,v)):'prop'
+[one1:i][u:nat]
+t1:=tris(nat,pl(u,x),pl(x,u),pl(y,u),compl(u,x),ispl1(u,one1)):is(pl(u,x),pl(y,u))
+t2:=th3"e.notis"(nat,x,pl(u,x),pl(y,u),satz7(u,x),t1):nis(x,pl(y,u))
+one1@t3:=th5"l.some"(nat,[u:nat]diffprop(u),[u:nat]t2(u)):not(ii)
+y@t4:=th1"l.ec"(i,ii,[z:i]t3(z)):ec(i,ii)
+one1@t5:=t3(y,x,symis(nat,x,y,one1)):not(iii)
+y@t6:=th2"l.ec"(iii,i,[z:i]t5(z)):ec(iii,i)
+[two1:ii][three1:iii][u:nat][du:diffprop(x,y,u)][v:nat][dv:diffprop(y,x,v)]
+t6a:=tr4is(nat,x,pl(y,u),pl(pl(x,v),u),pl(x,pl(v,u)),pl(pl(v,u),x),du,ispl1(y,pl(x,v),u,dv),asspl1(x,v,u),compl(x,pl(v,u))):is(x,pl(pl(v,u),x))
+t7:=mp(is(x,pl(pl(v,u),x)),con,t6a,satz7(pl(v,u),x)):con
+du@t8:=someapp(nat,[v:nat]diffprop(y,x,v),three1,con,[v:nat][dv:diffprop(y,x,v)]t7(v,dv)):con
+three1@t9:=someapp(nat,[u:nat]diffprop(u),two1,con,[u:nat][du:diffprop(u)]t8(u,du)):con
+two1@t10:=[z:iii]t9(z):not(iii)
+y@t11:=th1"l.ec"(ii,iii,[z:ii]t10(z)):ec(ii,iii)
+a:=th6"l.ec3"(i,ii,iii,t4,t11,t6):ec3(i,ii,iii)
+prop1:=or3(i,ii,iii):'prop'
+x@[j:is(x,1)]
+t12:=or3i1(i(1),ii(1),iii(1),j):prop1(1)
+x@[n:nis(x,1)][u:nat][j:is(x,<u>suc)]
+t13:=tris(nat,x,<u>suc,pl(1,u),j,satz4g(u)):is(x,pl(1,u))
+t14:=somei(nat,[z:nat]diffprop(x,1,z),u,t13):ii(1)
+t15:=someapp(nat,[u1:nat]is(x,<u1>suc),satz3(x,n),ii(1),[u1:nat][z:is(x,<u1>suc)]t14(u1,z)):ii(1)
+t16:=or3i2(i(1),ii(1),iii(1),t15):prop1(1)
+n@t16a:=someapp(nat,[u:nat]is(x,<u>suc),satz3(x,n),prop1(1),[u:nat][v:is(x,<u>suc)]t16(u,v)):prop1(1)
+x@t17:=th1"l.imp"(is(x,1),prop1(1),[z:is(x,1)]t12(z),[z:nis(x,1)]t16a(z)):prop1(1)
+y@[p:prop1(y)][one1:i(y)]
+t18:=tris(nat,<y>suc,pl(y,1),pl(x,1),satz4e(y),ispl1(y,x,1,symis(nat,x,y,one1))):is(<y>suc,pl(x,1))
+t19:=somei(nat,[z:nat]diffprop(<y>suc,x,z),1,t18):iii(<y>suc)
+t20:=or3i3(i(<y>suc),ii(<y>suc),iii(<y>suc),t19):prop1(<y>suc)
+p@[two1:ii(y)][u:nat][du:diffprop(x,y,u)][j:is(u,1)]
+t21:=tr3is(nat,x,pl(y,u),pl(y,1),<y>suc,du,ispl2(u,1,y,j),satz4a(y)):is(x,<y>suc)
+t22:=or3i1(i(<y>suc),ii(<y>suc),iii(<y>suc),t21):prop1(<y>suc)
+du@[n:nis(u,1)][w:nat][j:is(u,<w>suc)]
+t23:=tris(nat,u,<w>suc,pl(1,w),j,satz4g(w)):is(u,pl(1,w))
+t24:=tr4is(nat,x,pl(y,u),pl(y,pl(1,w)),pl(pl(y,1),w),pl(<y>suc,w),du,ispl2(u,pl(1,w),y,t23),asspl2(y,1,w),ispl1(pl(y,1),<y>suc,w,satz4a(y))):is(x,pl(<y>suc,w))
+t25:=somei(nat,[z:nat]diffprop(x,<y>suc,z),w,t24):ii(<y>suc)
+n@t26:=someapp(nat,[z:nat]is(u,<z>suc),satz3(u,n),ii(<y>suc),[z:nat][v:is(u,<z>suc)]t25(z,v)):ii(<y>suc)
+t27:=or3i2(i(<y>suc),ii(<y>suc),iii(<y>suc),t26):prop1(<y>suc)
+du@t28:=th1"l.imp"(is(u,1),prop1(<y>suc),[z:is(u,1)]t22(z),[z:nis(u,1)]t27(z)):prop1(<y>suc)
+two1@t28a:=someapp(nat,[u:nat]diffprop(u),two1,prop1(<y>suc),[u:nat][du:diffprop(u)]t28(u,du)):prop1(<y>suc)
+p@[three1:iii(y)][v:nat][dv:diffprop(y,x,v)]
+t29:=tris(nat,<y>suc,<pl(x,v)>suc,pl(x,<v>suc),ax2(y,pl(x,v),dv),satz4f(x,v)):is(<y>suc,pl(x,<v>suc))
+t30:=somei(nat,[z:nat]diffprop(<y>suc,x,z),<v>suc,t29):iii(<y>suc)
+three1@t31:=someapp(nat,[v:nat]diffprop(y,x,v),three1,iii(<y>suc),[v:nat][dv:diffprop(y,x,v)]t30(v,dv)):iii(<y>suc)
+t32:=or3i3(i(<y>suc),ii(<y>suc),iii(<y>suc),t31):prop1(<y>suc)
+p@t33:=or3app(i(y),ii(y),iii(y),prop1(<y>suc),p,[z:i(y)]t20(z),[z:ii(y)]t28a(z),[z:iii(y)]t32(z)):prop1(<y>suc)
+y@b:=induction([z:nat]prop1(z),t17,[z:nat][u:prop1(z)]t33(z,u),y):or3(i,ii,iii)
+-29
+satz9:=orec3i(i".29",ii".29",iii".29",b".29",a".29"):orec3(is(x,y),some([u:nat]is(x,pl(y,u))),some([v:nat]is(y,pl(x,v))))
+satz9a:=b".29":or3(is(x,y),some([u:nat]diffprop(x,y,u)),some([v:nat]diffprop(y,x,v)))
+satz9b:=a".29":ec3(is(x,y),some([u:nat]diffprop(x,y,u)),some([v:nat]diffprop(y,x,v)))
+more:=some([u:nat]diffprop(x,y,u)):'prop'
+less:=some([v:nat]diffprop(y,x,v)):'prop'
+satz10:=satz9:orec3(is(x,y),more(x,y),less(x,y))
+satz10a:=satz9a:or3(is(x,y),more(x,y),less(x,y))
+satz10b:=satz9b:ec3(is(x,y),more(x,y),less(x,y))
+[m:more(x,y)]
+satz11:=m:less(y,x)
+y@[l:less(x,y)]
+satz12:=l:more(y,x)
+y@moreis:=or(more,is(x,y)):'prop'
+lessis:=or(less,is(x,y)):'prop'
+[m:moreis(x,y)]
+satz13:=th9"l.or"(more,is(x,y),less(y,x),is(y,x),m,[z:more]satz11(z),[z:is(x,y)]symis(nat,x,y,z)):lessis(y,x)
+y@[l:lessis(x,y)]
+satz14:=th9"l.or"(less,is(x,y),more(y,x),is(y,x),l,[z:less]satz12(z),[z:is(x,y)]symis(nat,x,y,z)):moreis(y,x)
+z@[i:is(x,y)][m:more(x,z)]
+ismore1:=isp(nat,[u:nat]more(u,z),x,y,m,i):more(y,z)
+i@[m:more(z,x)]
+ismore2:=isp(nat,[u:nat]more(z,u),x,y,m,i):more(z,y)
+i@[l:less(x,z)]
+isless1:=isp(nat,[u:nat]less(u,z),x,y,l,i):less(y,z)
+i@[l:less(z,x)]
+isless2:=isp(nat,[u:nat]less(z,u),x,y,l,i):less(z,y)
+i@[m:moreis(x,z)]
+ismoreis1:=isp(nat,[u:nat]moreis(u,z),x,y,m,i):moreis(y,z)
+i@[m:moreis(z,x)]
+ismoreis2:=isp(nat,[u:nat]moreis(z,u),x,y,m,i):moreis(z,y)
+i@[l:lessis(x,z)]
+islessis1:=isp(nat,[u:nat]lessis(u,z),x,y,l,i):lessis(y,z)
+i@[l:lessis(z,x)]
+islessis2:=isp(nat,[u:nat]lessis(z,u),x,y,l,i):lessis(z,y)
+y@[i:is(x,y)]
+moreisi2:=ori2(more(x,y),is(x,y),i):moreis(x,y)
+lessisi2:=ori2(less(x,y),is(x,y),i):lessis(x,y)
+y@[m:more(x,y)]
+moreisi1:=ori1(more(x,y),is(x,y),m):moreis(x,y)
+y@[l:less(x,y)]
+lessisi1:=ori1(less(x,y),is(x,y),l):lessis(x,y)
+z@[u:nat][i:is(x,y)][j:is(z,u)][m:more(x,z)]
+ismore12:=ismore2(z,u,y,j,ismore1(x,y,z,i,m)):more(y,u)
+j@[l:less(x,z)]
+isless12:=isless2(z,u,y,j,isless1(x,y,z,i,l)):less(y,u)
+j@[m:moreis(x,z)]
+ismoreis12:=ismoreis2(z,u,y,j,ismoreis1(x,y,z,i,m)):moreis(y,u)
+j@[l:lessis(x,z)]
+islessis12:=islessis2(z,u,y,j,islessis1(x,y,z,i,l)):lessis(y,u)
+y@[m:moreis(x,y)]
+satz10c:=th7"l.ec3"(is(x,y),more(x,y),less(x,y),satz10b,comor(more(x,y),is(x,y),m)):not(less(x,y))
+y@[l:lessis(x,y)]
+satz10d:=th9"l.ec3"(is(x,y),more(x,y),less(x,y),satz10b,l):not(more(x,y))
+y@[n:not(more(x,y))]
+satz10e:=th2"l.or3"(is(x,y),more(x,y),less(x,y),satz10a,n):lessis(x,y)
+y@[n:not(less(x,y))]
+satz10f:=comor(is(x,y),more(x,y),th3"l.or3"(is(x,y),more(x,y),less(x,y),satz10a,n)):moreis(x,y)
+y@[m:more(x,y)]
+satz10g:=th3"l.or"(less(x,y),is(x,y),ec3e23(is(x,y),more(x,y),less(x,y),satz10b,m),ec3e21(is(x,y),more(x,y),less(x,y),satz10b,m)):not(lessis(x,y))
+y@[l:less(x,y)]
+satz10h:=th3"l.or"(more(x,y),is(x,y),ec3e32(is(x,y),more(x,y),less(x,y),satz10b,l),ec3e31(is(x,y),more(x,y),less(x,y),satz10b,l)):not(moreis(x,y))
+y@[n:not(moreis(x,y))]
+satz10j:=or3e3(is(x,y),more(x,y),less(x,y),satz10a,th5"l.or"(more(x,y),is(x,y),n),th4"l.or"(more(x,y),is(x,y),n)):less(x,y)
+y@[n:not(lessis(x,y))]
+satz10k:=or3e2(is(x,y),more(x,y),less(x,y),satz10a,th4"l.or"(less(x,y),is(x,y),n),th5"l.or"(less(x,y),is(x,y),n)):more(x,y)
+z@[l:less(x,y)][k:less(y,z)]
++315
+[v:nat][dv:diffprop(y,x,v)][w:nat][dw:diffprop(z,y,w)]
+t1:=tr3is(nat,z,pl(y,w),pl(pl(x,v),w),pl(x,pl(v,w)),dw,ispl1(y,pl(x,v),w,dv),asspl1(x,v,w)):is(z,pl(x,pl(v,w)))
+t2:=somei(nat,[u:nat]diffprop(z,x,u),pl(v,w),t1):less(x,z)
+dv@t3:=someapp(nat,[w:nat]diffprop(z,y,w),k,less(x,z),[w:nat][dw:diffprop(z,y,w)]t2(w,dw)):less(x,z)
+-315
+satz15:=someapp(nat,[v:nat]diffprop(y,x,v),l,less(x,z),[v:nat][dv:diffprop(y,x,v)]t3".315"(v,dv)):less(x,z)
+trless:=satz15:less(x,z)
+z@[m:more(x,y)][n:more(y,z)]
+trmore:=satz15(z,y,x,n,m):more(x,z)
++*315
+n@anders:=satz12(z,x,satz15(z,y,x,satz11(y,z,n),satz11(m))):more(x,z)
+-315
+z@[l:lessis(x,y)][k:less(y,z)]
+satz16a:=orapp(less(x,y),is(x,y),less(x,z),l,[u:less(x,y)]trless(u,k),[u:is(x,y)]isless1(y,x,z,symis(nat,x,y,u),k)):less(x,z)
+z@[l:less(x,y)][k:lessis(y,z)]
+satz16b:=orapp(less(y,z),is(y,z),less(x,z),k,[u:less(y,z)]trless(l,u),[u:is(y,z)]isless2(y,z,x,u,l)):less(x,z)
+z@[m:moreis(x,y)][n:more(y,z)]
+satz16c:=satz16b(z,y,x,n,satz13(m)):more(x,z)
+z@[m:more(x,y)][n:moreis(y,z)]
+satz16d:=satz16a(z,y,x,satz13(y,z,n),m):more(x,z)
+z@[l:lessis(x,y)][k:lessis(y,z)]
++317
+[i:is(x,y)][j:is(y,z)]
+t1:=lessisi2(x,z,tris(nat,x,y,z,i,j)):lessis(x,z)
+i@[j:less(y,z)]
+t2:=lessisi1(x,z,satz16a(l,j)):lessis(x,z)
+i@t3:=orapp(less(y,z),is(y,z),lessis(x,z),k,[u:less(y,z)]t2(u),[u:is(y,z)]t1(u)):lessis(x,z)
+k@[j:less(x,y)]
+t4:=lessisi1(x,z,satz16b(j,k)):lessis(x,z)
+-317
+satz17:=orapp(less(x,y),is(x,y),lessis(x,z),l,[u:less(x,y)]t4".317"(u),[u:is(x,y)]t3".317"(u)):lessis(x,z)
++*317
+k@[j:less(x,y)]
+t5:=lessisi1(x,z,satz16b(j,k)):lessis(x,z)
+k@[i:is(x,y)]
+t6:=islessis1(y,x,z,symis(nat,x,y,i),k):lessis(x,z)
+k@anders:=orapp(less(x,y),is(x,y),lessis(x,z),l,[u:less(x,y)]t5(u),[u:is(x,y)]t6(u)):lessis(x,z)
+-317
+k@trlessis:=satz17:lessis(x,z)
+z@[m:moreis(x,y)][n:moreis(y,z)]
+trmoreis:=satz14(z,x,satz17(z,y,x,satz13(y,z,n),satz13(m))):moreis(x,z)
+y@satz18:=somei(nat,[u:nat]diffprop(pl(x,y),x,u),y,refis(nat,pl(x,y))):more(pl(x,y),x)
+satz18a:=satz18:less(x,pl(x,y))
+x@satz18b:=ismore1(pl(x,1),<x>suc,x,satz4a,satz18(1)):more(<x>suc,x)
+satz18c:=satz18b:less(x,<x>suc)
+z@[m:more(x,y)]
++319
+[u:nat][du:diffprop(u)]
+t1:=tris(nat,x,pl(y,u),pl(u,y),du,compl(y,u)):is(x,pl(u,y))
+t2:=tr3is(nat,pl(x,z),pl(pl(u,y),z),pl(u,pl(y,z)),pl(pl(y,z),u),ispl1(x,pl(u,y),z,t1),asspl1(u,y,z),compl(u,pl(y,z))):is(pl(x,z),pl(pl(y,z),u))
+t3:=somei(nat,[v:nat]diffprop(pl(x,z),pl(y,z),v),u,t2):more(pl(x,z),pl(y,z))
+-319
+satz19a:=someapp(nat,[u:nat]diffprop(u),m,more(pl(x,z),pl(y,z)),[u:nat][v:diffprop(u)]t3".319"(u,v)):more(pl(x,z),pl(y,z))
+z@[i:is(x,y)]
+satz19b:=ispl1(x,y,z,i):is(pl(x,z),pl(y,z))
+z@[l:less(x,y)]
+satz19c:=satz11(pl(y,z),pl(x,z),satz19a(y,x,z,satz12(x,y,l))):less(pl(x,z),pl(y,z))
++*319
+l@anders1:=satz19a(y,x,z,l):less(pl(x,z),pl(y,z))
+-319
+m@satz19d:=ismore12(pl(x,z),pl(z,x),pl(y,z),pl(z,y),compl(x,z),compl(y,z),satz19a):more(pl(z,x),pl(z,y))
+i@satz19e:=ispl2(x,y,z,i):is(pl(z,x),pl(z,y))
+l@satz19f:=isless12(pl(x,z),pl(z,x),pl(y,z),pl(z,y),compl(x,z),compl(y,z),satz19c):less(pl(z,x),pl(z,y))
++*319
+l@anders2:=satz19d(y,x,z,l):less(pl(z,x),pl(z,y))
+-319
+z@[u:nat][i:is(x,y)][m:more(z,u)]
+satz19g:=ismore2(pl(x,u),pl(y,u),pl(x,z),ispl1(x,y,u,i),satz19d(z,u,x,m)):more(pl(x,z),pl(y,u))
+satz19h:=ismore12(pl(x,z),pl(z,x),pl(y,u),pl(u,y),compl(x,z),compl(y,u),satz19g):more(pl(z,x),pl(u,y))
+i@[l:less(z,u)]
+satz19j:=isless2(pl(x,u),pl(y,u),pl(x,z),ispl1(x,y,u,i),satz19f(z,u,x,l)):less(pl(x,z),pl(y,u))
+satz19k:=isless12(pl(x,z),pl(z,x),pl(y,u),pl(u,y),compl(x,z),compl(y,u),satz19j):less(pl(z,x),pl(u,y))
+z@[m:moreis(x,y)]
++*319
+m@[n:more(x,y)]
+t4:=moreisi1(pl(x,z),pl(y,z),satz19a(n)):moreis(pl(x,z),pl(y,z))
+m@[i:is(x,y)]
+t5:=moreisi2(pl(x,z),pl(y,z),ispl1(x,y,z,i)):moreis(pl(x,z),pl(y,z))
+-319
+m@satz19l:=orapp(more(x,y),is(x,y),moreis(pl(x,z),pl(y,z)),m,[u:more(x,y)]t4".319"(u),[u:is(x,y)]t5".319"(u)):moreis(pl(x,z),pl(y,z))
+satz19m:=ismoreis12(pl(x,z),pl(z,x),pl(y,z),pl(z,y),compl(x,z),compl(y,z),satz19l):moreis(pl(z,x),pl(z,y))
+z@[l:lessis(x,y)]
+satz19n:=satz13(pl(y,z),pl(x,z),satz19l(y,x,z,satz14(l))):lessis(pl(x,z),pl(y,z))
+satz19o:=satz13(pl(z,y),pl(z,x),satz19m(y,x,z,satz14(l))):lessis(pl(z,x),pl(z,y))
++320
+z@t1:=satz10a(x,y):or3(is(x,y),more(x,y),less(x,y))
+t2:=satz10b(pl(x,z),pl(y,z)):ec3(is(pl(x,z),pl(y,z)),more(pl(x,z),pl(y,z)),less(pl(x,z),pl(y,z)))
+-320
+z@[m:more(pl(x,z),pl(y,z))]
+satz20a:=th11"l.ec3"(is(x,y),more(x,y),less(x,y),is(pl(x,z),pl(y,z)),more(pl(x,z),pl(y,z)),less(pl(x,z),pl(y,z)),t1".320",t2".320",[u:is(x,y)]satz19b(x,y,z,u),[u:more(x,y)]satz19a(x,y,z,u),[u:less(x,y)]satz19c(x,y,z,u),m):more(x,y)
+z@[i:is(pl(x,z),pl(y,z))]
+satz20b:=th10"l.ec3"(is(x,y),more(x,y),less(x,y),is(pl(x,z),pl(y,z)),more(pl(x,z),pl(y,z)),less(pl(x,z),pl(y,z)),t1".320",t2".320",[u:is(x,y)]satz19b(x,y,z,u),[u:more(x,y)]satz19a(x,y,z,u),[u:less(x,y)]satz19c(x,y,z,u),i):is(x,y)
+z@[l:less(pl(x,z),pl(y,z))]
+satz20c:=th12"l.ec3"(is(x,y),more(x,y),less(x,y),is(pl(x,z),pl(y,z)),more(pl(x,z),pl(y,z)),less(pl(x,z),pl(y,z)),t1".320",t2".320",[u:is(x,y)]satz19b(x,y,z,u),[u:more(x,y)]satz19a(x,y,z,u),[u:less(x,y)]satz19c(x,y,z,u),l):less(x,y)
++*320
+i@t3:=tr3is(nat,pl(z,x),pl(x,z),pl(y,z),pl(z,y),compl(z,x),i,compl(y,z)):is(pl(z,x),pl(z,y))
+andersb:=satz8a(z,x,y,t3):is(x,y)
+l@andersc:=satz20a(y,x,z,l):less(x,y)
+-320
+z@[m:more(pl(z,x),pl(z,y))]
+satz20d:=satz20a(ismore12(pl(z,x),pl(x,z),pl(z,y),pl(y,z),compl(z,x),compl(z,y),m)):more(x,y)
+z@[i:is(pl(z,x),pl(z,y))]
+satz20e:=satz20b(tr3is(nat,pl(x,z),pl(z,x),pl(z,y),pl(y,z),compl(x,z),i,compl(z,y))):is(x,y)
+z@[l:less(pl(z,x),pl(z,y))]
+satz20f:=satz20c(isless12(pl(z,x),pl(x,z),pl(z,y),pl(y,z),compl(z,x),compl(z,y),l)):less(x,y)
+u@[m:more(x,y)][n:more(z,u)]
++321
+t1:=satz19a(x,y,z,m):more(pl(x,z),pl(y,z))
+t2:=ismore12(pl(z,y),pl(y,z),pl(u,y),pl(y,u),compl(z,y),compl(u,y),satz19a(z,u,y,n)):more(pl(y,z),pl(y,u))
+-321
+satz21:=trmore(pl(x,z),pl(y,z),pl(y,u),t1".321",t2".321"):more(pl(x,z),pl(y,u))
++*321
+n@anders:=trmore(pl(x,z),pl(y,z),pl(y,u),satz19a(x,y,z,m),satz19d(z,u,y,n)):more(pl(x,z),pl(y,u))
+-321
+u@[l:less(x,y)][k:less(z,u)]
+satz21a:=satz21(y,x,u,z,l,k):less(pl(x,z),pl(y,u))
++*321
+k@andersa:=satz11(pl(y,u),pl(x,z),satz21(y,x,u,z,satz12(x,y,l),satz12(z,u,k))):less(pl(x,z),pl(y,u))
+-321
+u@[m:moreis(x,y)][n:more(z,u)]
+satz22a:=orapp(more(x,y),is(x,y),more(pl(x,z),pl(y,u)),m,[v:more(x,y)]satz21(v,n),[v:is(x,y)]satz19g(u,v,n)):more(pl(x,z),pl(y,u))
+u@[m:more(x,y)][n:moreis(z,u)]
+satz22b:=orapp(more(z,u),is(z,u),more(pl(x,z),pl(y,u)),n,[v:more(z,u)]satz21(m,v),[v:is(z,u)]satz19h(z,u,x,y,v,m)):more(pl(x,z),pl(y,u))
+u@[l:lessis(x,y)][k:less(z,u)]
+satz22c:=satz22a(y,x,u,z,satz14(x,y,l),k):less(pl(x,z),pl(y,u))
+u@[l:less(x,y)][k:lessis(z,u)]
+satz22d:=satz22b(y,x,u,z,l,satz14(z,u,k)):less(pl(x,z),pl(y,u))
+u@[m:moreis(x,y)][n:moreis(z,u)]
++323
+[i:is(x,y)][j:is(z,u)]
+t1:=moreisi2(pl(x,z),pl(y,u),tris(nat,pl(x,z),pl(y,z),pl(y,u),ispl1(x,y,z,i),ispl2(z,u,y,j))):moreis(pl(x,z),pl(y,u))
+i@[o:more(z,u)]
+t2:=moreisi1(pl(x,z),pl(y,u),satz22a(m,o)):moreis(pl(x,z),pl(y,u))
+i@t3:=orapp(more(z,u),is(z,u),moreis(pl(x,z),pl(y,u)),n,[v:more(z,u)]t2(v),[v:is(z,u)]t1(v)):moreis(pl(x,z),pl(y,u))
+n@[o:more(x,y)]
+t4:=moreisi1(pl(x,z),pl(y,u),satz22b(o,n)):moreis(pl(x,z),pl(y,u))
+-323
+satz23:=orapp(more(x,y),is(x,y),moreis(pl(x,z),pl(y,u)),m,[v:more(x,y)]t4".323"(v),[v:is(x,y)]t3".323"(v)):moreis(pl(x,z),pl(y,u))
++*323
+n@[o:more(x,y)]
+t5:=moreisi1(pl(x,z),pl(y,u),satz22b(o,n)):moreis(pl(x,z),pl(y,u))
+n@[i:is(x,y)]
+t6:=ismoreis2(pl(x,u),pl(y,u),pl(x,z),ispl1(u,i),satz19m(z,u,x,n)):moreis(pl(x,z),pl(y,u))
+n@anders:=orapp(more(x,y),is(x,y),moreis(pl(x,z),pl(y,u)),m,[v:more(x,y)]t5(v),[v:is(x,y)]t6(v)):moreis(pl(x,z),pl(y,u))
+-323
+u@[l:lessis(x,y)][k:lessis(z,u)]
+satz23a:=satz13(pl(y,u),pl(x,z),satz23(y,x,u,z,satz14(l),satz14(z,u,k))):lessis(pl(x,z),pl(y,u))
++324
+x@[n:nis(x,1)][u:nat][i:is(x,<u>suc)]
+t1:=tris(nat,x,<u>suc,pl(1,u),i,satz4g(u)):is(x,pl(1,u))
+t2:=ismore1(pl(1,u),x,1,symis(nat,x,pl(1,u),t1),satz18(1,u)):more(x,1)
+n@t3:=someapp(nat,[u:nat]is(x,<u>suc),satz3(x,n),more(x,1),[u:nat][v:is(x,<u>suc)]t2(u,v)):more(x,1)
+-324
+x@satz24:=th2"l.or"(more(x,1),is(x,1),[u:nis(x,1)]t3".324"(u)):moreis(x,1)
+satz24a:=satz13(x,1,satz24):lessis(1,x)
+satz24b:=t3".324"(<x>suc,<x>ax3):more(<x>suc,1)
+satz24c:=satz24b:less(1,<x>suc)
+y@[m:more(y,x)]
++325
+[u:nat][du:diffprop(y,x,u)]
+t1:=satz19m(u,1,x,satz24(u)):moreis(pl(x,u),pl(x,1))
+t2:=ismoreis1(pl(x,u),y,pl(x,1),symis(nat,y,pl(x,u),du),t1):moreis(y,pl(x,1))
+-325
+satz25:=someapp(nat,[u:nat]diffprop(y,x,u),m,moreis(y,pl(x,1)),[u:nat][v:diffprop(y,x,u)]t2".325"(u,v)):moreis(y,pl(x,1))
+satz25a:=ismoreis2(pl(x,1),<x>suc,y,satz4a,satz25):moreis(y,<x>suc)
+y@[l:less(y,x)]
+satz25b:=satz13(x,pl(y,1),satz25(y,x,l)):lessis(pl(y,1),x)
+satz25c:=islessis1(pl(y,1),<y>suc,x,satz4a(y),satz25b):lessis(<y>suc,x)
+y@[l:less(y,pl(x,1))]
++326
+[m:more(y,x)]
+t1:=satz25(m):moreis(y,pl(x,1))
+l@t2:=th3"l.imp"(more(y,x),moreis(y,pl(x,1)),satz10h(y,pl(x,1),l),[v:more(y,x)]t1(v)):not(more(y,x))
+-326
+satz26:=satz10e(y,x,t2".326"):lessis(y,x)
+y@[l:less(y,<x>suc)]
+satz26a:=satz26(isless2(<x>suc,pl(x,1),y,satz4e,l)):lessis(y,x)
+y@[m:more(pl(y,1),x)]
+satz26b:=satz14(x,y,satz26(y,x,m)):moreis(y,x)
+y@[m:more(<y>suc,x)]
+satz26c:=satz26b(ismore1(<y>suc,pl(y,1),x,satz4e(y),m)):moreis(y,x)
+@[p:[x:nat]'prop'][n:nat]
++327
+[m:nat]
+lbprop:=imp(<m>p,lessis(n,m)):'prop'
+-327
+lb:=all([x:nat]lbprop".327"(x)):'prop'
+min:=and(lb,<n>p):'prop'
+p@[s:some(p)]
++*327
+s@[n:nat]
+t1:=[x:<n>p]satz24a(n):lbprop(1,n)
+s@t2:=[x:nat]t1(x):lb(1)
+[l:[x:nat]lb(x)][y:nat][yp:<y>p]
+t3:=satz18(y,1):more(pl(y,1),y)
+t4:=satz10g(pl(y,1),y,t3):not(lessis(pl(y,1),y))
+t5:=th4"l.imp"(<y>p,lessis(pl(y,1),y),yp,t4):not(lbprop(pl(y,1),y))
+t6:=th1"l.all"(nat,[x:nat]lbprop(pl(y,1),x),y,t5):not(lb(pl(y,1)))
+t7:=mp(lb(pl(y,1)),con,<pl(y,1)>l,t6):con
+l@t8:=someapp(nat,p,s,con,[x:nat][y:<x>p]t7(x,y)):con
+s@[n:non(nat,[x:nat]and(lb(x),not(lb(pl(x,1)))))][m:nat][l:lb(m)]
+t9:=<m>n:not(and(lb(m),not(lb(pl(m,1)))))
+t10:=et(lb(pl(m,1)),th3"l.and"(lb(m),not(lb(pl(m,1))),t9,l)):lb(pl(m,1))
+t11:=isp(nat,[x:nat]lb(x),pl(m,1),<m>suc,t10,satz4a(m)):lb(<m>suc)
+n@t12:=[x:nat]induction([y:nat]lb(y),t2,[y:nat][z:lb(y)]t11(y,z),x):[x:nat]lb(x)
+s@t13:=[x:non(nat,[x:nat]and(lb(x),not(lb(pl(x,1)))))]t8(t12(x)):some([x:nat]and(lb(x),not(lb(pl(x,1)))))
+[m:nat][a:and(lb(m),not(lb(pl(m,1))))]
+t14:=ande1(lb(m),not(lb(pl(m,1))),a):lb(m)
+t15:=ande2(lb(m),not(lb(pl(m,1))),a):not(lb(pl(m,1)))
+[nmp:not(<m>p)][n:nat][np:<n>p]
+t16:=mp(<n>p,lessis(m,n),np,<n>t14):lessis(m,n)
+t17:=th3"l.imp"(is(m,n),<m>p,nmp,[x:is(m,n)]isp(nat,p,n,m,np,symis(nat,m,n,x))):not(is(m,n))
+t18:=ore1(less(m,n),is(m,n),t16,t17):less(m,n)
+t19:=satz25b(n,m,t18):lessis(pl(m,1),n)
+nmp@t20:=[x:nat][y:<x>p]t19(x,y):lb(pl(m,1))
+t21:=mp(lb(pl(m,1)),con,t20,t15):con
+a@t22:=et(<m>p,[x:not(<m>p)]t21(x)):<m>p
+t23:=andi(lb(m),<m>p,t14,t22):min(m)
+-327
+s@satz27:=th6"l.some"(nat,[x:nat]and(lb(x),not(lb(pl(x,1)))),[x:nat]min(x),t13".327",[x:nat][y:and(lb(x),not(lb(pl(x,1))))]t23".327"(x,y)):some([x:nat]min(p,x))
++*327
+p@[n:non(nat,[x:nat]min(x))][u:nat]
+t24:=[x:<u>p]satz24a(u):lbprop(1,u)
+n@t25:=[x:nat]t24(x):lb(1)
+u@[l:lb(u)]
+t26:=<u>n:not(min(u))
+t27:=th3"l.and"(lb(u),<u>p,t26,l):not(<u>p)
+[v:nat][vp:<v>p]
+t28:=th3"l.imp"(is(u,v),<u>p,t27,[x:is(u,v)]isp1(nat,p,v,u,vp,x)):nis(u,v)
+t29:=mp(<v>p,lessis(u,v),vp,<v>l):lessis(u,v)
+t30:=ore1(less(u,v),is(u,v),t29,t28):less(u,v)
+t31:=satz25c(v,u,t30):lessis(<u>suc,v)
+v@t32:=[x:<v>p]t31(x):lbprop(<u>suc,v)
+l@t33:=[x:nat]t32(x):lb(<u>suc)
+u@t34:=induction([x:nat]lb(x),t25,[x:nat][y:lb(x)]t33(x,y),u):lb(u)
+p@[s:some(p)][u:nat][up:<u>p]
+t35:=satz10g(<u>suc,u,satz18b(u)):not(lessis(<u>suc,u))
+t36:=th4"l.imp"(<u>p,lessis(<u>suc,u),up,t35):not(lbprop(<u>suc,u))
+t37:=th1"l.all"(nat,[x:nat]lbprop(<u>suc,x),u,t36):not(lb(<u>suc))
+t38:=[y:non(nat,[x:nat]min(x))]mp(lb(<u>suc),con,t34(y,<u>suc),t37):some([x:nat]min(x))
+s@anders:=someapp(nat,p,s,some([x:nat]min(x)),[x:nat][y:<x>p]t38(x,y)):some([x:nat]min(x))
+-327
++*327
+p@[n:nat][m:nat][mn:min(p,n)][mm:min(p,m)]
+t39:=ande1(lb(n),<n>p,mn):lb(n)
+t40:=ande1(lb(m),<m>p,mm):lb(m)
+t41:=ande2(lb(n),<n>p,mn):<n>p
+t42:=ande2(lb(m),<m>p,mm):<m>p
+t43:=<m>t39:lbprop(n,m)
+t44:=<n>t40:lbprop(m,n)
+t45:=mp(<m>p,lessis(n,m),t42,t43):lessis(n,m)
+t46:=mp(<n>p,lessis(m,n),t41,t44):lessis(m,n)
+t47:=ore2(more(n,m),is(n,m),satz14(m,n,t46),satz10d(n,m,t45)):is(n,m)
+p@t48:=[x:nat][y:nat][u:min(x)][v:min(y)]t47(x,y,u,v):amone(nat,[x:nat]min(p,x))
+-327
+s@satz27a:=onei(nat,[x:nat]min(p,x),t48".327",satz27):one([x:nat]min(p,x))
++428
+x@[f:[y:nat]nat]
+prop1:=all([y:nat]is(<<y>suc>f,pl(<y>f,x))):'prop'
+prop2:=and(is(<1>f,x),prop1):'prop'
+x@[a:[y:nat]nat][b:[y:nat]nat][pa:prop2(a)][pb:prop2(b)][y:nat]
+prop3:=is(<y>a,<y>b):'prop'
+pb@t1:=ande1(is(<1>a,x),prop1(a),pa):is(<1>a,x)
+t2:=ande1(is(<1>b,x),prop1(b),pb):is(<1>b,x)
+t3:=tris2(nat,<1>a,<1>b,x,t1,t2):prop3(1)
+y@[p:prop3(y)]
+t4:=ispl1(<y>a,<y>b,x,p):is(pl(<y>a,x),pl(<y>b,x))
+t5:=ande2(is(<1>a,x),prop1(a),pa):prop1(a)
+t6:=ande2(is(<1>b,x),prop1(b),pb):prop1(b)
+t7:=<y>t5:is(<<y>suc>a,pl(<y>a,x))
+t8:=<y>t6:is(<<y>suc>b,pl(<y>b,x))
+t9:=tr3is(nat,<<y>suc>a,pl(<y>a,x),pl(<y>b,x),<<y>suc>b,t7,t4,symis(nat,<<y>suc>b,pl(<y>b,x),t8)):prop3(<y>suc)
+y@t10:=induction([z:nat]prop3(z),t3,[z:nat][u:prop3(z)]t9(z,u),y):prop3(y)
+pb@t11:=fisi(nat,nat,a,b,[y:nat]t10(y)):is"e"([y:nat]nat,a,b)
+x@a1:=[z:[y:nat]nat][u:[y:nat]nat][v:prop2(z)][w:prop2(u)]t11(z,u,v,w):amone([y:nat]nat,[z:[y:nat]nat]prop2(z))
+prop4:=some"l"([y:nat]nat,[z:[y:nat]nat]prop2(z)):'prop'
+@id:=[y:nat]y:[y:nat]nat
+t12:=[x:nat]satz4e(x):prop1(1,id)
+t13:=andi(is(<1>id,1),prop1(1,id),refis(nat,1),t12):prop2(1,id)
+t14:=somei([y:nat]nat,[z:[y:nat]nat]prop2(1,z),id,t13):prop4(1)
+x@[p:prop4(x)][f:[y:nat]nat][pf:prop2(f)]
+g:=[y:nat]pl(<y>f,y):[y:nat]nat
+t15:=ande1(is(<1>f,x),prop1(f),pf):is(<1>f,x)
+t16:=tris(nat,<1>g,pl(x,1),<x>suc,ispl1(<1>f,x,1,t15),satz4a(x)):is(<1>g,<x>suc)
+[y:nat]
+t17:=ande2(is(<1>f,x),prop1(f),pf):prop1(f)
+t18:=<y>t17:is(<<y>suc>f,pl(<y>f,x))
+t19:=tris(nat,<<y>suc>g,pl(pl(<y>f,x),<y>suc),pl(<y>f,pl(x,<y>suc)),ispl1(<<y>suc>f,pl(<y>f,x),<y>suc,t18),asspl1(<y>f,x,<y>suc)):is(<<y>suc>g,pl(<y>f,pl(x,<y>suc)))
+t20:=tr3is(nat,pl(x,<y>suc),<pl(x,y)>suc,pl(<x>suc,y),pl(y,<x>suc),satz4b(x,y),satz4h(x,y),compl(<x>suc,y)):is(pl(x,<y>suc),pl(y,<x>suc))
+t21:=tr3is(nat,<<y>suc>g,pl(<y>f,pl(x,<y>suc)),pl(<y>f,pl(y,<x>suc)),pl(<y>g,<x>suc),t19,ispl2(pl(x,<y>suc),pl(y,<x>suc),<y>f,t20),asspl2(<y>f,y,<x>suc)):is(<<y>suc>g,pl(<y>g,<x>suc))
+pf@t22:=[y:nat]t21(y):prop1(<x>suc,g)
+t23:=andi(is(<1>g,<x>suc),prop1(<x>suc,g),t16,t22):prop2(<x>suc,g)
+t24:=somei([y:nat]nat,[z:[y:nat]nat]prop2(<x>suc,z),g,t23):prop4(<x>suc)
+p@t25:=someapp([y:nat]nat,[z:[y:nat]nat]prop2(z),p,prop4(<x>suc),[z:[y:nat]nat][u:prop2(z)]t24(z,u)):prop4(<x>suc)
+x@b1:=induction([y:nat]prop4(y),t14,[y:nat][u:prop4(y)]t25(y,u),x):prop4(x)
+-428
+x@satz28:=onei([y:nat]nat,[z:[y:nat]nat]prop2".428"(z),a1".428",b1".428"):one"e"([y:nat]nat,[z:[y:nat]nat]and(is(<1>z,x),all([y:nat]is(<<y>suc>z,pl(<y>z,x)))))
+times:=ind([y:nat]nat,[z:[y:nat]nat]prop2".428"(z),satz28):[y:nat]nat
+y@ts:=<y>times:nat
++*428
+x@t26:=oneax([y:nat]nat,[z:[y:nat]nat]prop2(z),satz28):prop2(times)
+-428
+x@satz28a:=ande1(is(<1>times,x),prop1".428"(times),t26".428"):is(ts(x,1),x)
++*428
+x@t27:=ande2(is(<1>times,x),prop1(times),t26):prop1(times)
+-428
+y@satz28b:=<y>t27".428":is(ts(x,<y>suc),pl(ts(x,y),x))
++*428
+@t28:=t11(1,times(1),id,t26(1),t13):is"e"([y:nat]nat,times(1),id)
+-428
+x@satz28c:=fise(nat,nat,times(1),id".428",t28".428",x):is(ts(1,x),x)
++*428
+x@t29:=t11(<x>suc,times(<x>suc),[y:nat]pl(<y>times,y),t26(<x>suc),t23(b1,times,t26)):is"e"([y:nat]nat,times(<x>suc),[y:nat]pl(<y>times,y))
+-428
+y@satz28d:=fise(nat,nat,times(<x>suc),[z:nat]pl(<z>times,z),t29".428",y):is(ts(<x>suc,y),pl(ts(x,y),y))
+x@satz28e:=symis(nat,ts(x,1),x,satz28a):is(x,ts(x,1))
+y@satz28f:=symis(nat,ts(x,<y>suc),pl(ts(x,y),x),satz28b):is(pl(ts(x,y),x),ts(x,<y>suc))
+x@satz28g:=symis(nat,ts(1,x),x,satz28c):is(x,ts(1,x))
+y@satz28h:=symis(nat,ts(<x>suc,y),pl(ts(x,y),y),satz28d):is(pl(ts(x,y),y),ts(<x>suc,y))
+z@[i:is(x,y)]
+ists1:=isf(nat,nat,[u:nat]ts(u,z),x,y,i):is(ts(x,z),ts(y,z))
+ists2:=isf(nat,nat,[u:nat]ts(z,u),x,y,i):is(ts(z,x),ts(z,y))
+z@[u:nat][i:is(x,y)][j:is(z,u)]
+ists12:=tris(nat,ts(x,z),ts(y,z),ts(y,u),ists1(i),ists2(z,u,y,j)):is(ts(x,z),ts(y,u))
++429
+y@prop1:=is(ts(x,y),ts(y,x)):'prop'
+t1:=satz28a(y):is(ts(y,1),y)
+t2:=satz28c(y):is(ts(1,y),y)
+t3:=tris2(nat,ts(1,y),ts(y,1),y,t2,t1):prop1(1,y)
+[p:prop1(x,y)]
+t4:=tris(nat,pl(ts(x,y),y),pl(ts(y,x),y),ts(y,<x>suc),ispl1(ts(x,y),ts(y,x),y,p),satz28f(y,x)):is(pl(ts(x,y),y),ts(y,<x>suc))
+t5:=satz28d:is(ts(<x>suc,y),pl(ts(x,y),y))
+t6:=tris(nat,ts(<x>suc,y),pl(ts(x,y),y),ts(y,<x>suc),t5,t4):prop1(<x>suc,y)
+-429
+y@satz29:=induction([z:nat]prop1".429"(z,y),t3".429",[z:nat][u:prop1".429"(z,y)]t6".429"(z,y,u),x):is(ts(x,y),ts(y,x))
+comts:=satz29:is(ts(x,y),ts(y,x))
++*429
+x@t7:=tris(nat,ts(x,1),x,ts(1,x),satz28a,satz28g):prop1(1)
+y@[p:prop1(y)]
+t8:=tr3is(nat,ts(x,<y>suc),pl(ts(x,y),x),pl(ts(y,x),x),ts(<y>suc,x),satz28b(x,y),ispl1(ts(x,y),ts(y,x),x,p),satz28h(y,x)):prop1(<y>suc)
+y@anders:=induction([z:nat]prop1(z),t7,[z:nat][u:prop1(z)]t8(z,u),y):is(ts(x,y),ts(y,x))
+-429
++430
+z@prop1:=is(ts(x,pl(y,z)),pl(ts(x,y),ts(x,z))):'prop'
+y@t1:=tr3is(nat,ts(x,pl(y,1)),ts(x,<y>suc),pl(ts(x,y),x),pl(ts(x,y),ts(x,1)),ists2(pl(y,1),<y>suc,x,satz4a(y)),satz28b,ispl2(x,ts(x,1),ts(x,y),satz28e(x))):prop1(1)
+z@[p:prop1(z)]
+t2:=tr3is(nat,ts(x,pl(y,<z>suc)),ts(x,<pl(y,z)>suc),pl(ts(x,pl(y,z)),x),pl(pl(ts(x,y),ts(x,z)),x),ists2(pl(y,<z>suc),<pl(y,z)>suc,x,satz4b(y,z)),satz28b(x,pl(y,z)),ispl1(ts(x,pl(y,z)),pl(ts(x,y),ts(x,z)),x,p)):is(ts(x,pl(y,<z>suc)),pl(pl(ts(x,y),ts(x,z)),x))
+t3:=tr3is(nat,ts(x,pl(y,<z>suc)),pl(pl(ts(x,y),ts(x,z)),x),pl(ts(x,y),pl(ts(x,z),x)),pl(ts(x,y),ts(x,<z>suc)),t2,asspl1(ts(x,y),ts(x,z),x),ispl2(pl(ts(x,z),x),ts(x,<z>suc),ts(x,y),satz28f(x,z))):prop1(<z>suc)
+-430
+z@satz30:=induction([u:nat]prop1".430"(u),t1".430",[u:nat][v:prop1".430"(u)]t3".430"(u,v),z):is(ts(x,pl(y,z)),pl(ts(x,y),ts(x,z)))
+disttp1:=tr3is(nat,ts(pl(x,y),z),ts(z,pl(x,y)),pl(ts(z,x),ts(z,y)),pl(ts(x,z),ts(y,z)),comts(pl(x,y),z),satz30(z,x,y),ispl12(ts(z,x),ts(x,z),ts(z,y),ts(y,z),comts(z,x),comts(z,y))):is(ts(pl(x,y),z),pl(ts(x,z),ts(y,z)))
+disttp2:=satz30:is(ts(x,pl(y,z)),pl(ts(x,y),ts(x,z)))
+distpt1:=symis(nat,ts(pl(x,y),z),pl(ts(x,z),ts(y,z)),disttp1):is(pl(ts(x,z),ts(y,z)),ts(pl(x,y),z))
+distpt2:=symis(nat,ts(x,pl(y,z)),pl(ts(x,y),ts(x,z)),disttp2):is(pl(ts(x,y),ts(x,z)),ts(x,pl(y,z)))
++431
+prop1:=is(ts(ts(x,y),z),ts(x,ts(y,z))):'prop'
+y@t1:=tris(nat,ts(ts(x,y),1),ts(x,y),ts(x,ts(y,1)),satz28a(ts(x,y)),ists2(y,ts(y,1),x,satz28e(y))):prop1(1)
+z@[p:prop1(z)]
+t2:=tr4is(nat,ts(ts(x,y),<z>suc),pl(ts(ts(x,y),z),ts(x,y)),pl(ts(x,ts(y,z)),ts(x,y)),ts(x,pl(ts(y,z),y)),ts(x,ts(y,<z>suc)),satz28b(ts(x,y),z),ispl1(ts(ts(x,y),z),ts(x,ts(y,z)),ts(x,y),p),distpt2(x,ts(y,z),y),ists2(pl(ts(y,z),y),ts(y,<z>suc),x,satz28f(y,z))):prop1(<z>suc)
+-431
+satz31:=induction([u:nat]prop1".431"(u),t1".431",[u:nat][v:prop1".431"(u)]t2".431"(u,v),z):is(ts(ts(x,y),z),ts(x,ts(y,z)))
+assts1:=satz31:is(ts(ts(x,y),z),ts(x,ts(y,z)))
+assts2:=symis(nat,ts(ts(x,y),z),ts(x,ts(y,z)),assts1):is(ts(x,ts(y,z)),ts(ts(x,y),z))
+[m:more(x,y)]
++432
+[u:nat][du:diffprop(u)]
+t1:=tris(nat,ts(x,z),ts(pl(y,u),z),pl(ts(y,z),ts(u,z)),ists1(x,pl(y,u),z,du),disttp1(y,u,z)):is(ts(x,z),pl(ts(y,z),ts(u,z)))
+t2:=somei(nat,[v:nat]diffprop(ts(x,z),ts(y,z),v),ts(u,z),t1):more(ts(x,z),ts(y,z))
+-432
+satz32a:=someapp(nat,[u:nat]diffprop(u),m,more(ts(x,z),ts(y,z)),[u:nat][v:diffprop(u)]t2".432"(u,v)):more(ts(x,z),ts(y,z))
+z@[i:is(x,y)]
+satz32b:=ists1(x,y,z,i):is(ts(x,z),ts(y,z))
+z@[l:less(x,y)]
+satz32c:=satz11(ts(y,z),ts(x,z),satz32a(y,x,z,satz12(x,y,l))):less(ts(x,z),ts(y,z))
++*432
+l@anders1:=satz32a(y,x,z,l):less(ts(x,z),ts(y,z))
+-432
+m@satz32d:=ismore12(ts(x,z),ts(z,x),ts(y,z),ts(z,y),comts(x,z),comts(y,z),satz32a):more(ts(z,x),ts(z,y))
+i@satz32e:=ists2(x,y,z,i):is(ts(z,x),ts(z,y))
+l@satz32f:=isless12(ts(x,z),ts(z,x),ts(y,z),ts(z,y),comts(x,z),comts(y,z),satz32c):less(ts(z,x),ts(z,y))
++*432
+l@anders2:=satz32d(y,x,z,l):less(ts(z,x),ts(z,y))
+-432
+z@[u:nat][i:is(x,y)][m:more(z,u)]
+satz32g:=ismore2(ts(x,u),ts(y,u),ts(x,z),ists1(x,y,u,i),satz32d(z,u,x,m)):more(ts(x,z),ts(y,u))
+satz32h:=ismore12(ts(x,z),ts(z,x),ts(y,u),ts(u,y),comts(x,z),comts(y,u),satz32g):more(ts(z,x),ts(u,y))
+i@[l:less(z,u)]
+satz32j:=isless2(ts(x,u),ts(y,u),ts(x,z),ists1(x,y,u,i),satz32f(z,u,x,l)):less(ts(x,z),ts(y,u))
+satz32k:=isless12(ts(x,z),ts(z,x),ts(y,u),ts(u,y),comts(x,z),comts(y,u),satz32j):less(ts(z,x),ts(u,y))
+z@[m:moreis(x,y)]
++*432
+m@[n:more(x,y)]
+t3:=moreisi1(ts(x,z),ts(y,z),satz32a(n)):moreis(ts(x,z),ts(y,z))
+m@[i:is(x,y)]
+t4:=moreisi2(ts(x,z),ts(y,z),ists1(x,y,z,i)):moreis(ts(x,z),ts(y,z))
+-432
+m@satz32l:=orapp(more(x,y),is(x,y),moreis(ts(x,z),ts(y,z)),m,[u:more(x,y)]t3".432"(u),[u:is(x,y)]t4".432"(u)):moreis(ts(x,z),ts(y,z))
+satz32m:=ismoreis12(ts(x,z),ts(z,x),ts(y,z),ts(z,y),comts(x,z),comts(y,z),satz32l):moreis(ts(z,x),ts(z,y))
+z@[l:lessis(x,y)]
+satz32n:=satz13(ts(y,z),ts(x,z),satz32l(y,x,z,satz14(l))):lessis(ts(x,z),ts(y,z))
+satz32o:=satz13(ts(z,y),ts(z,x),satz32m(y,x,z,satz14(l))):lessis(ts(z,x),ts(z,y))
++433
+z@t1:=satz10a(x,y):or3(is(x,y),more(x,y),less(x,y))
+t2:=satz10b(ts(x,z),ts(y,z)):ec3(is(ts(x,z),ts(y,z)),more(ts(x,z),ts(y,z)),less(ts(x,z),ts(y,z)))
+-433
+z@[m:more(ts(x,z),ts(y,z))]
+satz33a:=th11"l.ec3"(is(x,y),more(x,y),less(x,y),is(ts(x,z),ts(y,z)),more(ts(x,z),ts(y,z)),less(ts(x,z),ts(y,z)),t1".433",t2".433",[u:is(x,y)]satz32b(x,y,z,u),[u:more(x,y)]satz32a(x,y,z,u),[u:less(x,y)]satz32c(x,y,z,u),m):more(x,y)
+z@[i:is(ts(x,z),ts(y,z))]
+satz33b:=th10"l.ec3"(is(x,y),more(x,y),less(x,y),is(ts(x,z),ts(y,z)),more(ts(x,z),ts(y,z)),less(ts(x,z),ts(y,z)),t1".433",t2".433",[u:is(x,y)]satz32b(x,y,z,u),[u:more(x,y)]satz32a(x,y,z,u),[u:less(x,y)]satz32c(x,y,z,u),i):is(x,y)
+z@[l:less(ts(x,z),ts(y,z))]
+satz33c:=th12"l.ec3"(is(x,y),more(x,y),less(x,y),is(ts(x,z),ts(y,z)),more(ts(x,z),ts(y,z)),less(ts(x,z),ts(y,z)),t1".433",t2".433",[u:is(x,y)]satz32b(x,y,z,u),[u:more(x,y)]satz32a(x,y,z,u),[u:less(x,y)]satz32c(x,y,z,u),l):less(x,y)
++*433
+l@anders:=satz33a(y,x,z,l):less(x,y)
+-433
+u@[m:more(x,y)][n:more(z,u)]
++434
+t1:=satz32a(x,y,z,m):more(ts(x,z),ts(y,z))
+t2:=ismore12(ts(z,y),ts(y,z),ts(u,y),ts(y,u),comts(z,y),comts(u,y),satz32a(z,u,y,n)):more(ts(y,z),ts(y,u))
+-434
+satz34:=trmore(ts(x,z),ts(y,z),ts(y,u),t1".434",t2".434"):more(ts(x,z),ts(y,u))
++*434
+n@anders:=trmore(ts(x,z),ts(y,z),ts(y,u),satz32a(x,y,z,m),satz32d(z,u,y,n)):more(ts(x,z),ts(y,u))
+-434
+u@[l:less(x,y)][k:less(z,u)]
+satz34a:=satz34(y,x,u,z,l,k):less(ts(x,z),ts(y,u))
++*434
+k@andersa:=satz11(ts(y,u),ts(x,z),satz34(y,x,u,z,satz12(x,y,l),satz12(z,u,k))):less(ts(x,z),ts(y,u))
+-434
+u@[m:moreis(x,y)][n:more(z,u)]
+satz35a:=orapp(more(x,y),is(x,y),more(ts(x,z),ts(y,u)),m,[v:more(x,y)]satz34(v,n),[v:is(x,y)]satz32g(u,v,n)):more(ts(x,z),ts(y,u))
+u@[m:more(x,y)][n:moreis(z,u)]
+satz35b:=orapp(more(z,u),is(z,u),more(ts(x,z),ts(y,u)),n,[v:more(z,u)]satz34(m,v),[v:is(z,u)]satz32h(z,u,x,y,v,m)):more(ts(x,z),ts(y,u))
+u@[l:lessis(x,y)][k:less(z,u)]
+satz35c:=satz35a(y,x,u,z,satz14(x,y,l),k):less(ts(x,z),ts(y,u))
+u@[l:less(x,y)][k:lessis(z,u)]
+satz35d:=satz35b(y,x,u,z,l,satz14(z,u,k)):less(ts(x,z),ts(y,u))
+u@[m:moreis(x,y)][n:moreis(z,u)]
++436
+[i:is(x,y)][j:is(z,u)]
+t1:=moreisi2(ts(x,z),ts(y,u),tris(nat,ts(x,z),ts(y,z),ts(y,u),ists1(x,y,z,i),ists2(z,u,y,j))):moreis(ts(x,z),ts(y,u))
+i@[o:more(z,u)]
+t2:=moreisi1(ts(x,z),ts(y,u),satz35a(m,o)):moreis(ts(x,z),ts(y,u))
+i@t3:=orapp(more(z,u),is(z,u),moreis(ts(x,z),ts(y,u)),n,[v:more(z,u)]t2(v),[v:is(z,u)]t1(v)):moreis(ts(x,z),ts(y,u))
+n@[o:more(x,y)]
+t4:=moreisi1(ts(x,z),ts(y,u),satz35b(o,n)):moreis(ts(x,z),ts(y,u))
+-436
+satz36:=orapp(more(x,y),is(x,y),moreis(ts(x,z),ts(y,u)),m,[v:more(x,y)]t4".436"(v),[v:is(x,y)]t3".436"(v)):moreis(ts(x,z),ts(y,u))
++*436
+n@[o:more(x,y)]
+t5:=moreisi1(ts(x,z),ts(y,u),satz35b(o,n)):moreis(ts(x,z),ts(y,u))
+n@[i:is(x,y)]
+t6:=ismoreis2(ts(x,u),ts(y,u),ts(x,z),ists1(u,i),satz32m(z,u,x,n)):moreis(ts(x,z),ts(y,u))
+n@anders:=orapp(more(x,y),is(x,y),moreis(ts(x,z),ts(y,u)),m,[v:more(x,y)]t5(v),[v:is(x,y)]t6(v)):moreis(ts(x,z),ts(y,u))
+-436
+u@[l:lessis(x,y)][k:lessis(z,u)]
+satz36a:=satz13(ts(y,u),ts(x,z),satz36(y,x,u,z,satz14(l),satz14(z,u,k))):lessis(ts(x,z),ts(y,u))
+y@[m:more(x,y)]
++mn
+t1:=onei(nat,[z:nat]diffprop(x,y,z),satz8b(x,y),m):one([z:nat]diffprop(x,y,z))
+-mn
+mn:=ind(nat,[z:nat]diffprop(x,y,z),t1".mn"):nat
++*mn
+m@th1a:=oneax(nat,[z:nat]diffprop(x,y,z),t1):is(x,pl(y,mn(x,y,m)))
+th1b:=symis(nat,x,pl(y,mn(x,y,m)),th1a):is(pl(y,mn(x,y,m)),x)
+th1c:=tris(nat,x,pl(y,mn(x,y,m)),pl(mn(x,y,m),y),th1a,compl(y,mn(x,y,m))):is(x,pl(mn(x,y,m),y))
+th1d:=symis(nat,x,pl(mn(x,y,m),y),th1c):is(pl(mn(x,y,m),y),x)
+y@[z:nat][m:more(x,y)][i:is(pl(y,z),x)]
+th1e:=<th1a(m)><symis(nat,pl(y,z),x,i)><mn(x,y,m)><z>satz8b(x,y):is(z,mn(x,y,m))
+-mn
+z@[u:nat][m:more(x,z)][n:more(y,u)][i:is(x,y)][j:is(z,u)]
++*mn
+j@t2:=tr3is(nat,pl(u,mn(x,z,m)),pl(z,mn(x,z,m)),x,y,ispl1(u,z,mn(x,z,m),symis(nat,z,u,j)),th1b(x,z,m),i):is(pl(u,mn(x,z,m)),y)
+-mn
+j@ismn12:=th1e".mn"(y,u,mn(x,z,m),n,t2".mn"):is(mn(x,z,m),mn(y,u,n))
+@[n:nat]
+1to:=ot(nat,[x:nat]lessis(x,n)):'type'
+[x:nat][l:lessis(x,n)]
+outn:=out(nat,[y:nat]lessis(y,n),x,l):1to(n)
+n@[xn:1to(n)]
+inn:=in"e"(nat,[y:nat]lessis(y,n),xn):nat
+1top:=inp(nat,[y:nat]lessis(y,n),xn):lessis(inn,n)
+l@[y:nat][k:lessis(y,n)][i:is(x,y)]
+isoutni:=isouti(nat,[z:nat]lessis(z,n),x,l,y,k,i):is"e"(1to(n),outn(x,l),outn(y,k))
+k@[i:is"e"(1to(n),outn(x,l),outn(y,k))]
+isoutne:=isoute(nat,[z:nat]lessis(z,n),x,l,y,k,i):is(x,y)
+xn@[yn:1to(n)][i:is"e"(1to(n),xn,yn)]
+isinni:=isini(nat,[z:nat]lessis(z,n),xn,yn,i):is(inn(xn),inn(yn))
+yn@[i:is(inn(xn),inn(yn))]
+isinne:=isine(nat,[z:nat]lessis(z,n),xn,yn,i):is"e"(1to(n),xn,yn)
+xn@isoutinn:=isoutin(nat,[y:nat]lessis(y,n),xn):is"e"(1to(n),xn,outn(inn(xn),1top(xn)))
+l@isinoutn:=isinout(nat,[y:nat]lessis(y,n),x,l):is(x,inn(outn(x,l)))
+@1o:=outn(1,1,lessisi2(1,1,refis(nat,1))):1to(1)
+[u:1to(1)]
++singlet
+u0:=inn(1,u):nat
+t1:=1top(1,u):lessis(u0,1)
+t2:=ore2(more(u0,1),is(u0,1),satz24(u0),satz10d(u0,1,t1)):is(u0,1)
+th1:=tris(1to(1),u,outn(1,u0,t1),1o,isoutinn(1,u),isoutni(1,u0,t1,1,lessisi2(1,1,refis(nat,1)),t2)):is"e"(1to(1),u,1o)
+-singlet
+@2:=pl(1,1):nat
+[x:nat]
++pair
+[l:lessis(x,2)][n:nis(x,2)]
+t1:=satz26(1,x,ore1(less(x,2),is(x,2),l,n)):lessis(x,1)
+t2:=ore2(more(x,1),is(x,1),satz24(x),satz10d(x,1,t1)):is(x,1)
+l@th1:=th2"l.or"(is(x,1),is(x,2),[t:nis(x,2)]t2(t)):or(is(x,1),is(x,2))
+@th2:=th1"e.notis"(nat,<1>suc,1,2,<1>ax3,satz4e(1)):nis(2,1)
+-pair
+@1t:=outn(2,1,satz24a(2)):1to(2)
+2t:=outn(2,2,lessisi2(2,2,refis(nat,2))):1to(2)
++*pair
+@[u:1to(2)]
+u0:=inn(2,u):nat
+t3:=1top(2,u):lessis(u0,2)
+[i:is(u0,1)]
+t4:=isoutni(2,u0,t3,1,satz24a(2),i):is"e"(1to(2),outn(2,u0,t3),1t)
+t5:=tris(1to(2),u,outn(2,u0,t3),1t,isoutinn(2,u),t4):is"e"(1to(2),u,1t)
+u@[i:is(u0,2)]
+t6:=isoutni(2,u0,t3,2,lessisi2(2,2,refis(nat,2)),i):is"e"(1to(2),outn(2,u0,t3),2t)
+t7:=tris(1to(2),u,outn(2,u0,t3),2t,isoutinn(2,u),t6):is"e"(1to(2),u,2t)
+u@th3:=th9"l.or"(is(u0,1),is(u0,2),is"e"(1to(2),u,1t),is"e"(1to(2),u,2t),th1(u0,t3),[t:is(u0,1)]t5(t),[t:is(u0,2)]t7(t)):or(is"e"(1to(2),u,1t),is"e"(1to(2),u,2t))
+@[i:is"e"(1to(2),2t,1t)]
+t9:=isini(nat,[x:nat]lessis(x,2),2t,1t,i):is(u0(2t),u0(1t))
+t10:=tr3is(nat,2,u0(2t),u0(1t),1,isinoutn(2,2,lessisi2(2,2,refis(nat,2))),t9,symis(nat,1,u0(1t),isinoutn(2,1,satz24a(2)))):is(2,1)
+@th4:=th3"l.imp"(is"e"(1to(2),2t,1t),is(2,1),th2,[t:is"e"(1to(2),2t,1t)]t10(t)):not(is"e"(1to(2),2t,1t))
+-pair
+@[alpha:'type']
+pair1type:=[x:1to(2)]alpha:'type'
+[a:alpha][b:alpha]
+pair1:=[x:1to(2)]ite(is"e"(1to(2),x,1t),alpha,a,b):pair1type
+alpha@[p:pair1type]
+first1:=<1t>p:alpha
+second1:=<2t>p:alpha
+b@first1is1:=itet(is"e"(1to(2),1t,1t),alpha,a,b,refis(1to(2),1t)):is"e"(alpha,first1(pair1),a)
+first1is2:=symis(alpha,first1(pair1),a,first1is1):is"e"(alpha,a,first1(pair1))
+second1is1:=itef(is"e"(1to(2),2t,1t),alpha,a,b,th4".pair"):is"e"(alpha,second1(pair1),b)
+second1is2:=symis(alpha,second1(pair1),b,second1is1):is"e"(alpha,b,second1(pair1))
++*pair
+p@[q:pair1type][i:is"e"(alpha,first1(p),first1(q))][j:is"e"(alpha,second1(p),second1(q))][u:1to(2)][u1:is"e"(1to(2),u,1t)]
+t11:=isf(1to(2),alpha,p,u,1t,u1):is"e"(alpha,<u>p,first1(p))
+t12:=symis(alpha,<u>q,first1(q),isf(1to(2),alpha,q,u,1t,u1)):is"e"(alpha,first1(q),<u>q)
+t13:=tr3is(alpha,<u>p,first1(p),first1(q),<u>q,t11,i,t12):is"e"(alpha,<u>p,<u>q)
+u@[u2:is"e"(1to(2),u,2t)]
+t14:=isf(1to(2),alpha,p,u,2t,u2):is"e"(alpha,<u>p,second1(p))
+t15:=symis(alpha,<u>q,second1(q),isf(1to(2),alpha,q,u,2t,u2)):is"e"(alpha,second1(q),<u>q)
+t16:=tr3is(alpha,<u>p,second1(p),second1(q),<u>q,t14,j,t15):is"e"(alpha,<u>p,<u>q)
+u@t17:=orapp(is"e"(1to(2),u,1t),is"e"(1to(2),u,2t),is"e"(alpha,<u>p,<u>q),th3(u),[t:is"e"(1to(2),u,1t)]t13(t),[t:is"e"(1to(2),u,2t)]t16(t)):is"e"(alpha,<u>p,<u>q)
+j@th5:=fisi(1to(2),alpha,p,q,[t:1to(2)]t17(t)):is"e"(pair1type,p,q)
+p@q0:=pair1(first1,second1):pair1type
+t18:=first1is1(first1(p),second1):is"e"(alpha,first1(q0),first1(p))
+t19:=second1is1(first1,second1):is"e"(alpha,second1(q0),second1(p))
+-pair
+p@pair1is1:=th5".pair"(q0".pair",p,t18".pair",t19".pair"):is"e"(pair1type,pair1(first1,second1),p)
+pair1is2:=symis(pair1type,pair1(first1,second1),p,pair1is1):is"e"(pair1type,p,pair1(first1,second1))
+@[x:nat]
+lessisi3:=lessisi2(x,x,refis(nat,x)):lessis(x,x)
+1out:=outn(x,1,satz24a(x)):1to(x)
+xout:=outn(x,x,lessisi3(x)):1to(x)
+[y:nat][l:lessis(y,x)][u:1to(y)]
++left
+ui:=inn(y,u):nat
+t1:=1top(y,u):lessis(ui,y)
+t2:=trlessis(ui,y,x,t1,l):lessis(ui,x)
+-left
+left1to:=outn(x,ui".left",t2".left"):1to(x)
+[v:1to(y)][i:is"e"(1to(x),left1to(u),left1to(v))]
++*left
+i@t3:=isoutne(x,ui,t2,ui(v),t2(v),i):is(ui,ui(v))
+-left
+i@thleft1:=isinne(y,u,v,t3".left"):is"e"(1to(y),u,v)
+l@thleft2:=[u:1to(y)][v:1to(y)][t:is"e"(1to(x),left1to(u),left1to(v))]thleft1(u,v,t):injective(1to(y),1to(x),[t:1to(y)]left1to(t))
+y@[u:1to(y)]
++right
+ui:=inn(y,u):nat
+t4:=1top(y,u):lessis(ui,y)
+t5:=satz19o(ui,y,x,t4):lessis(pl(x,ui),pl(x,y))
+-right
+right1to:=outn(pl(x,y),pl(x,ui".right"),t5".right"):1to(pl(x,y))
+[v:1to(y)][i:is"e"(1to(pl(x,y)),right1to(u),right1to(v))]
++*right
+i@t6:=isoutne(pl(x,y),pl(x,ui(u)),t5(u),pl(x,ui(v)),t5(v),i):is(pl(x,ui(u)),pl(x,ui(v)))
+t7:=satz20e(ui(u),ui(v),x,t6):is(ui(u),ui(v))
+-right
+i@thright1:=isinne(y,u,v,t7".right"):is"e"(1to(y),u,v)
+@[alpha:'type'][x:nat][y:nat][l:lessis(y,x)][f:[t:1to(x)]alpha]
+left:=[t:1to(y)]<left1to(x,y,l,t)>f:[t:1to(y)]alpha
+y@[f:[t:1to(pl(x,y))]alpha]
+right:=[t:1to(y)]<right1to(x,y,t)>f:[t:1to(y)]alpha
+y@[i:is(y,x)][f:[t:1to(y)]alpha]
++*left
+f@t4:=lessisi2(y,x,i):lessis(y,x)
+t5:=lessisi2(x,y,symis(nat,y,x,i)):lessis(x,y)
+f1:=left(y,x,t5,f):[t:1to(x)]alpha
+f2:=left(t4,f1):[t:1to(y)]alpha
+[u:1to(y)]
+t6:=isinoutn(x,inn(y,u),trlessis(inn(y,u),y,x,1top(y,u),t4)):is(inn(y,u),inn(x,left1to(x,y,t4,u)))
+t7:=tris(1to(y),u,outn(y,inn(y,u),1top(y,u)),left1to(y,x,t5,left1to(x,y,t4,u)),isoutinn(y,u),isoutni(y,inn(y,u),1top(y,u),inn(x,left1to(x,y,t4,u)),trlessis(inn(x,left1to(x,y,t4,u)),x,y,1top(x,left1to(x,y,t4,u)),t5),t6)):is"e"(1to(y),u,left1to(y,x,t5,left1to(x,y,t4,u)))
+t8:=isf(1to(y),alpha,f,u,left1to(y,x,t5,left1to(x,y,t4,u)),t7):is"e"(alpha,<u>f,<u>f2)
+-left
+f@thleft:=fisi(1to(y),alpha,f,f2".left",[t:1to(y)]t8".left"(t)):is"e"([t:1to(y)]alpha,f,left(x,y,lessisi2(y,x,i),left(y,x,lessisi2(x,y,symis(nat,y,x,i)),f)))
+@frac:=pair1type(nat):'type'
+[x1:nat][x2:nat]
+fr:=pair1(nat,x1,x2):frac
+@[x:frac]
+num:=first1(nat,x):nat
+den:=second1(nat,x):nat
+x2@numis:=first1is1(nat,x1,x2):is(num(fr(x1,x2)),x1)
+isnum:=first1is2(nat,x1,x2):is(x1,num(fr(x1,x2)))
+denis:=second1is1(nat,x1,x2):is(den(fr(x1,x2)),x2)
+isden:=second1is2(nat,x1,x2):is(x2,den(fr(x1,x2)))
+x@1x:=num(x):nat
+2x:=den(x):nat
+fris:=pair1is1(nat,x):is"e"(frac,fr(1x,2x),x)
+isfr:=pair1is2(nat,x):is"e"(frac,x,fr(1x,2x))
+x2@[y1:nat][y2:nat]
+12isnd:=ists12(x1,num(fr(x1,x2)),y2,den(fr(y1,y2)),isnum(x1,x2),isden(y1,y2)):is(ts(x1,y2),ts(num(fr(x1,x2)),den(fr(y1,y2))))
+ndis12:=symis(nat,ts(x1,y2),ts(num(fr(x1,x2)),den(fr(y1,y2))),12isnd):is(ts(num(fr(x1,x2)),den(fr(y1,y2))),ts(x1,y2))
+x@[n1:nat][n2:nat]
+1disnd:=ists1(n1,num(fr(n1,n2)),2x,isnum(n1,n2)):is(ts(n1,2x),ts(num(fr(n1,n2)),2x))
+ndis1d:=symis(nat,ts(n1,2x),ts(num(fr(n1,n2)),2x),1disnd):is(ts(num(fr(n1,n2)),2x),ts(n1,2x))
+n2isnd:=ists2(n2,den(fr(n1,n2)),1x,isden(n1,n2)):is(ts(1x,n2),ts(1x,den(fr(n1,n2))))
+ndisn2:=symis(nat,ts(1x,n2),ts(1x,den(fr(n1,n2))),n2isnd):is(ts(1x,den(fr(n1,n2))),ts(1x,n2))
+x2@[n:nat][i:is(x1,n)]
+isn:=isf(nat,frac,[t:nat]fr(t,x2),x1,n,i):is"e"(frac,fr(x1,x2),fr(n,x2))
+n@[i:is(x2,n)]
+isd:=isf(nat,frac,[t:nat]fr(x1,t),x2,n,i):is"e"(frac,fr(x1,x2),fr(x1,n))
+y2@[i:is(x1,y1)][j:is(x2,y2)]
+isnd:=tris(frac,fr(x1,x2),fr(y1,x2),fr(y1,y2),isn(x1,x2,y1,i),isd(y1,x2,y2,j)):is"e"(frac,fr(x1,x2),fr(y1,y2))
+x@[y:frac]
+1y:=num(y):nat
+2y:=den(y):nat
+eq:=is(ts(1x,2y),ts(1y,2x)):'prop'
+y2@[i:is(ts(x1,y2),ts(y1,x2))]
+eqi12:=tr3is(nat,ts(num(fr(x1,x2)),den(fr(y1,y2))),ts(x1,y2),ts(y1,x2),ts(num(fr(y1,y2)),den(fr(x1,x2))),ndis12(x1,x2,y1,y2),i,12isnd(y1,y2,x1,x2)):eq(fr(x1,x2),fr(y1,y2))
+n2@[i:is(ts(1x,n2),ts(n1,2x))]
+eqi1:=isp(frac,[t:frac]eq(t,fr(n1,n2)),fr(1x,2x),x,eqi12(1x,2x,n1,n2,i),fris):eq(x,fr(n1,n2))
+n2@[i:is(ts(n1,2x),ts(1x,n2))]
+eqi2:=isp(frac,[t:frac]eq(fr(n1,n2),t),fr(1x,2x),x,eqi12(n1,n2,1x,2x,i),fris):eq(fr(n1,n2),x)
+x@satz37:=refis(nat,ts(1x,2x)):eq(x,x)
+refeq:=satz37:eq(x,x)
+y@[i:is"e"(frac,x,y)]
+refeq1:=isp(frac,[t:frac]eq(x,t),x,y,refeq,i):eq(x,y)
+refeq2:=isp(frac,[t:frac]eq(t,x),x,y,refeq,i):eq(y,x)
+y2@[i:is(x1,y1)][j:is(x2,y2)]
+eqnd:=refeq1(fr(x1,x2),fr(y1,y2),isnd(i,j)):eq(fr(x1,x2),fr(y1,y2))
+x2@[n:nat][i:is(x1,n)]
+eqn:=refeq1(fr(x1,x2),fr(n,x2),isn(n,i)):eq(fr(x1,x2),fr(n,x2))
+n@[i:is(x2,n)]
+eqd:=refeq1(fr(x1,x2),fr(x1,n),isd(n,i)):eq(fr(x1,x2),fr(x1,n))
+y@[e:eq(x,y)]
+satz38:=symis(nat,ts(1x,2y),ts(1y,2x),e):eq(y,x)
+symeq:=satz38:eq(y,x)
+@[a:nat][b:nat][c:nat][d:nat]
++ii1
+t1:=tris(nat,ts(b,ts(c,d)),ts(ts(b,c),d),ts(d,ts(b,c)),assts2(b,c,d),comts(ts(b,c),d)):is(ts(b,ts(c,d)),ts(d,ts(b,c)))
+-ii1
+stets:=tr4is(nat,ts(ts(a,b),ts(c,d)),ts(a,ts(b,ts(c,d))),ts(a,ts(d,ts(b,c))),ts(ts(a,d),ts(b,c)),ts(ts(a,d),ts(c,b)),assts1(a,b,ts(c,d)),ists2(ts(b,ts(c,d)),ts(d,ts(b,c)),a,t1".ii1"),assts2(a,d,ts(b,c)),ists2(ts(b,c),ts(c,b),ts(a,d),comts(b,c))):is(ts(ts(a,b),ts(c,d)),ts(ts(a,d),ts(c,b)))
++*ii1
+d@t2:=tr3is(nat,ts(b,ts(c,d)),ts(ts(c,d),b),ts(ts(d,c),b),ts(d,ts(c,b)),comts(b,ts(c,d)),ists1(ts(c,d),ts(d,c),b,comts(c,d)),assts1(d,c,b)):is(ts(b,ts(c,d)),ts(d,ts(c,b)))
+anders:=tr3is(nat,ts(ts(a,b),ts(c,d)),ts(a,ts(b,ts(c,d))),ts(a,ts(d,ts(c,b))),ts(ts(a,d),ts(c,b)),assts1(a,b,ts(c,d)),ists2(ts(b,ts(c,d)),ts(d,ts(c,b)),a,t2),assts2(a,d,ts(c,b))):is(ts(ts(a,b),ts(c,d)),ts(ts(a,d),ts(c,b)))
+-ii1
+y@[z:frac]
+1z:=num(z):nat
+2z:=den(z):nat
+[e:eq(x,y)][f:eq(y,z)]
++139
+t1:=ists12(ts(1x,2y),ts(1y,2x),ts(1y,2z),ts(1z,2y),e,f):is(ts(ts(1x,2y),ts(1y,2z)),ts(ts(1y,2x),ts(1z,2y)))
+t2:=stets(1x,2y,1y,2z):is(ts(ts(1x,2y),ts(1y,2z)),ts(ts(1x,2z),ts(1y,2y)))
+t3:=tris(nat,ts(ts(1y,2x),ts(1z,2y)),ts(ts(1y,2y),ts(1z,2x)),ts(ts(1z,2x),ts(1y,2y)),stets(1y,2x,1z,2y),comts(ts(1y,2y),ts(1z,2x))):is(ts(ts(1y,2x),ts(1z,2y)),ts(ts(1z,2x),ts(1y,2y)))
+t4:=tr3is(nat,ts(ts(1x,2z),ts(1y,2y)),ts(ts(1x,2y),ts(1y,2z)),ts(ts(1y,2x),ts(1z,2y)),ts(ts(1z,2x),ts(1y,2y)),symis(nat,ts(ts(1x,2y),ts(1y,2z)),ts(ts(1x,2z),ts(1y,2y)),t2),t1,t3):is(ts(ts(1x,2z),ts(1y,2y)),ts(ts(1z,2x),ts(1y,2y)))
+-139
+satz39:=satz33b(ts(1x,2z),ts(1z,2x),ts(1y,2y),t4".139"):eq(x,z)
++*139
+f@anders:=tr4is(nat,ts(ts(1x,2z),ts(1y,2y)),ts(ts(1x,2y),ts(1y,2z)),ts(ts(1y,2x),ts(1z,2y)),ts(ts(1y,2y),ts(1z,2x)),ts(ts(1z,2x),ts(1y,2y)),stets(1x,2z,1y,2y),ists12(ts(1x,2y),ts(1y,2x),ts(1y,2z),ts(1z,2y),e,f),stets(1y,2x,1z,2y),comts(ts(1y,2y),ts(1z,2x))):is(ts(ts(1x,2z),ts(1y,2y)),ts(ts(1z,2x),ts(1y,2y)))
+-139
+f@treq:=satz39:eq(x,z)
+z@[e:eq(z,x)][f:eq(z,y)]
+treq1:=treq(x,z,y,symeq(z,x,e),f):eq(x,y)
+z@[e:eq(x,z)][f:eq(y,z)]
+treq2:=treq(x,z,y,e,symeq(y,z,f)):eq(x,y)
+z@[u:frac][e:eq(x,y)][f:eq(y,z)][g:eq(z,u)]
+tr3eq:=treq(x,y,u,e,treq(y,z,u,f,g)):eq(x,u)
+u@[v:frac][e:eq(x,y)][f:eq(y,z)][g:eq(z,u)][h:eq(u,v)]
+tr4eq:=tr3eq(x,y,z,v,e,f,treq(z,u,v,g,h)):eq(x,v)
+x@[n:nat]
+satz40:=eqi1(ts(1x,n),ts(2x,n),tris(nat,ts(1x,ts(2x,n)),ts(1x,ts(n,2x)),ts(ts(1x,n),2x),ists2(ts(2x,n),ts(n,2x),1x,comts(2x,n)),assts2(1x,n,2x))):eq(x,fr(ts(1x,n),ts(2x,n)))
+satz40a:=symeq(x,fr(ts(1x,n),ts(2x,n)),satz40):eq(fr(ts(1x,n),ts(2x,n)),x)
+x2@[n:nat]
+satz40b:=eqi12(ts(x1,n),ts(x2,n),tris(nat,ts(x1,ts(x2,n)),ts(x1,ts(n,x2)),ts(ts(x1,n),x2),ists2(ts(x2,n),ts(n,x2),x1,comts(x2,n)),assts2(x1,n,x2))):eq(fr(x1,x2),fr(ts(x1,n),ts(x2,n)))
+satz40c:=symeq(fr(x1,x2),fr(ts(x1,n),ts(x2,n)),satz40b):eq(fr(ts(x1,n),ts(x2,n)),fr(x1,x2))
+y@moref:=more(ts(1x,2y),ts(1y,2x)):'prop'
+lessf:=less(ts(1x,2y),ts(1y,2x)):'prop'
+y2@[m:more(ts(x1,y2),ts(y1,x2))]
+morefi12:=ismore12(ts(x1,y2),ts(num(fr(x1,x2)),den(fr(y1,y2))),ts(y1,x2),ts(num(fr(y1,y2)),den(fr(x1,x2))),12isnd(x1,x2,y1,y2),12isnd(y1,y2,x1,x2),m):moref(fr(x1,x2),fr(y1,y2))
+y2@[l:less(ts(x1,y2),ts(y1,x2))]
+lessfi12:=isless12(ts(x1,y2),ts(num(fr(x1,x2)),den(fr(y1,y2))),ts(y1,x2),ts(num(fr(y1,y2)),den(fr(x1,x2))),12isnd(x1,x2,y1,y2),12isnd(y1,y2,x1,x2),l):lessf(fr(x1,x2),fr(y1,y2))
+n2@[m:more(ts(1x,n2),ts(n1,2x))]
+morefi1:=ismore12(ts(1x,n2),ts(1x,den(fr(n1,n2))),ts(n1,2x),ts(num(fr(n1,n2)),2x),n2isnd(x,n1,n2),1disnd(x,n1,n2),m):moref(x,fr(n1,n2))
+n2@[m:more(ts(n1,2x),ts(1x,n2))]
+morefi2:=ismore12(ts(n1,2x),ts(num(fr(n1,n2)),2x),ts(1x,n2),ts(1x,den(fr(n1,n2))),1disnd(x,n1,n2),n2isnd(x,n1,n2),m):moref(fr(n1,n2),x)
+n2@[l:less(ts(1x,n2),ts(n1,2x))]
+lessfi1:=isless12(ts(1x,n2),ts(1x,den(fr(n1,n2))),ts(n1,2x),ts(num(fr(n1,n2)),2x),n2isnd(x,n1,n2),1disnd(x,n1,n2),l):lessf(x,fr(n1,n2))
+n2@[l:less(ts(n1,2x),ts(1x,n2))]
+lessfi2:=isless12(ts(n1,2x),ts(num(fr(n1,n2)),2x),ts(1x,n2),ts(1x,den(fr(n1,n2))),1disnd(x,n1,n2),n2isnd(x,n1,n2),l):lessf(fr(n1,n2),x)
+y@satz41:=satz10(ts(1x,2y),ts(1y,2x)):orec3(eq(x,y),moref(x,y),lessf(x,y))
+satz41a:=satz10a(ts(1x,2y),ts(1y,2x)):or3(eq(x,y),moref(x,y),lessf(x,y))
+satz41b:=satz10b(ts(1x,2y),ts(1y,2x)):ec3(eq(x,y),moref(x,y),lessf(x,y))
+[m:moref(x,y)]
+satz42:=satz11(ts(1x,2y),ts(1y,2x),m):lessf(y,x)
+y@[l:lessf(x,y)]
+satz43:=satz12(ts(1x,2y),ts(1y,2x),l):moref(y,x)
+u@1u:=num(u):nat
+2u:=den(u):nat
+[m:moref(x,y)][e:eq(x,z)][f:eq(y,u)]
++244
+t1:=ists12(ts(1y,2u),ts(1u,2y),ts(1z,2x),ts(1x,2z),f,symeq(x,z,e)):is(ts(ts(1y,2u),ts(1z,2x)),ts(ts(1u,2y),ts(1x,2z)))
+t2:=tr3is(nat,ts(ts(1y,2x),ts(1z,2u)),ts(ts(1y,2u),ts(1z,2x)),ts(ts(1u,2y),ts(1x,2z)),ts(ts(1u,2z),ts(1x,2y)),stets(1y,2x,1z,2u),t1,stets(1u,2y,1x,2z)):is(ts(ts(1y,2x),ts(1z,2u)),ts(ts(1u,2z),ts(1x,2y)))
+t3:=ismore1(ts(ts(1u,2z),ts(1x,2y)),ts(ts(1y,2x),ts(1z,2u)),ts(ts(1u,2z),ts(1y,2x)),symis(nat,ts(ts(1y,2x),ts(1z,2u)),ts(ts(1u,2z),ts(1x,2y)),t2),satz32d(ts(1x,2y),ts(1y,2x),ts(1u,2z),m)):more(ts(ts(1y,2x),ts(1z,2u)),ts(ts(1u,2z),ts(1y,2x)))
+-244
+satz44:=satz33a(ts(1z,2u),ts(1u,2z),ts(1y,2x),ismore1(ts(ts(1y,2x),ts(1z,2u)),ts(ts(1z,2u),ts(1y,2x)),ts(ts(1u,2z),ts(1y,2x)),comts(ts(1y,2x),ts(1z,2u)),t3".244")):moref(z,u)
+u@[e:eq(x,y)][f:eq(z,u)][m:moref(x,z)]
+eqmoref12:=satz44(x,z,y,u,m,e,f):moref(y,u)
+z@[e:eq(x,y)][m:moref(x,z)]
+eqmoref1:=satz44(x,z,y,z,m,e,refeq(z)):moref(y,z)
+e@[m:moref(z,x)]
+eqmoref2:=satz44(z,x,z,y,m,refeq(z),e):moref(z,y)
+u@[l:lessf(x,y)][e:eq(x,z)][f:eq(y,u)]
+satz45:=satz42(u,z,satz44(y,x,u,z,satz43(x,y,l),f,e)):lessf(z,u)
+u@[e:eq(x,y)][f:eq(z,u)][l:lessf(x,z)]
+eqlessf12:=satz45(x,z,y,u,l,e,f):lessf(y,u)
+z@[e:eq(x,y)][l:lessf(x,z)]
+eqlessf1:=satz45(x,z,y,z,l,e,refeq(z)):lessf(y,z)
+e@[l:lessf(z,x)]
+eqlessf2:=satz45(z,x,z,y,l,refeq(z),e):lessf(z,y)
+y@moreq:=or(moref(x,y),eq(x,y)):'prop'
+lesseq:=or(lessf(x,y),eq(x,y)):'prop'
+[e:eq(x,y)]
+moreqi2:=ori2(moref(x,y),eq(x,y),e):moreq(x,y)
+lesseqi2:=ori2(lessf(x,y),eq(x,y),e):lesseq(x,y)
+y@[m:moref(x,y)]
+moreqi1:=ori1(moref(x,y),eq(x,y),m):moreq(x,y)
+y@[l:lessf(x,y)]
+lesseqi1:=ori1(lessf(x,y),eq(x,y),l):lesseq(x,y)
+y@[m:moreq(x,y)]
+satz41c:=th7"l.ec3"(eq(x,y),moref(x,y),lessf(x,y),satz41b,comor(moref(x,y),eq(x,y),m)):not(lessf(x,y))
+y@[l:lesseq(x,y)]
+satz41d:=th9"l.ec3"(eq(x,y),moref(x,y),lessf(x,y),satz41b,l):not(moref(x,y))
+y@[n:not(moref(x,y))]
+satz41e:=th2"l.or3"(eq(x,y),moref(x,y),lessf(x,y),satz41a,n):lesseq(x,y)
+y@[n:not(lessf(x,y))]
+satz41f:=comor(eq(x,y),moref(x,y),th3"l.or3"(eq(x,y),moref(x,y),lessf(x,y),satz41a,n)):moreq(x,y)
+y@[m:moref(x,y)]
+satz41g:=th3"l.or"(lessf(x,y),eq(x,y),ec3e23(eq(x,y),moref(x,y),lessf(x,y),satz41b,m),ec3e21(eq(x,y),moref(x,y),lessf(x,y),satz41b,m)):not(lesseq(x,y))
+y@[l:lessf(x,y)]
+satz41h:=th3"l.or"(moref(x,y),eq(x,y),ec3e32(eq(x,y),moref(x,y),lessf(x,y),satz41b,l),ec3e31(eq(x,y),moref(x,y),lessf(x,y),satz41b,l)):not(moreq(x,y))
+y@[n:not(moreq(x,y))]
+satz41j:=or3e3(eq(x,y),moref(x,y),lessf(x,y),satz41a,th5"l.or"(moref(x,y),eq(x,y),n),th4"l.or"(moref(x,y),eq(x,y),n)):lessf(x,y)
+y@[n:not(lesseq(x,y))]
+satz41k:=or3e2(eq(x,y),moref(x,y),lessf(x,y),satz41a,th4"l.or"(lessf(x,y),eq(x,y),n),th5"l.or"(lessf(x,y),eq(x,y),n)):moref(x,y)
+u@[m:moreq(x,y)][e:eq(x,z)][f:eq(y,u)]
++246
+[n:moref(x,y)]
+t1:=ori1(moref(z,u),eq(z,u),satz44(n,e,f)):moreq(z,u)
+f@[g:eq(x,y)]
+t2:=ori2(moref(z,u),eq(z,u),tr3eq(z,x,y,u,symeq(x,z,e),g,f)):moreq(z,u)
+-246
+satz46:=orapp(moref(x,y),eq(x,y),moreq(z,u),m,[t:moref(x,y)]t1".246"(t),[t:eq(x,y)]t2".246"(t)):moreq(z,u)
+u@[e:eq(x,y)][f:eq(z,u)][m:moreq(x,z)]
+eqmoreq12:=satz46(x,z,y,u,m,e,f):moreq(y,u)
+z@[e:eq(x,y)][m:moreq(x,z)]
+eqmoreq1:=satz46(x,z,y,z,m,e,refeq(z)):moreq(y,z)
+e@[m:moreq(z,x)]
+eqmoreq2:=satz46(z,x,z,y,m,refeq(z),e):moreq(z,y)
+u@[l:lesseq(x,y)][e:eq(x,z)][f:eq(y,u)]
++247
+[k:lessf(x,y)]
+t1:=ori1(lessf(z,u),eq(z,u),satz45(k,e,f)):lesseq(z,u)
+f@[g:eq(x,y)]
+t2:=ori2(lessf(z,u),eq(z,u),tr3eq(z,x,y,u,symeq(x,z,e),g,f)):lesseq(z,u)
+-247
+satz47:=orapp(lessf(x,y),eq(x,y),lesseq(z,u),l,[t:lessf(x,y)]t1".247"(t),[t:eq(x,y)]t2".247"(t)):lesseq(z,u)
+u@[e:eq(x,y)][f:eq(z,u)][l:lesseq(x,z)]
+eqlesseq12:=satz47(x,z,y,u,l,e,f):lesseq(y,u)
+z@[e:eq(x,y)][l:lesseq(x,z)]
+eqlesseq1:=satz47(x,z,y,z,l,e,refeq(z)):lesseq(y,z)
+e@[l:lesseq(z,x)]
+eqlesseq2:=satz47(z,x,z,y,l,refeq(z),e):lesseq(z,y)
+y@[m:moreq(x,y)]
+satz48:=th9"l.or"(moref(x,y),eq(x,y),lessf(y,x),eq(y,x),m,[t:moref(x,y)]satz42(x,y,t),[t:eq(x,y)]satz38(x,y,t)):lesseq(y,x)
+y@[l:lesseq(x,y)]
+satz49:=th9"l.or"(lessf(x,y),eq(x,y),moref(y,x),eq(y,x),l,[t:lessf(x,y)]satz43(x,y,t),[t:eq(x,y)]satz38(x,y,t)):moreq(y,x)
+z@[l:lessf(x,y)][k:lessf(y,z)]
++250
+t1:=satz34a(ts(1x,2y),ts(1y,2x),ts(1y,2z),ts(1z,2y),l,k):less(ts(ts(1x,2y),ts(1y,2z)),ts(ts(1y,2x),ts(1z,2y)))
+t2:=isless12(ts(ts(1x,2y),ts(1y,2z)),ts(ts(1x,2z),ts(1y,2y)),ts(ts(1y,2x),ts(1z,2y)),ts(ts(1z,2x),ts(1y,2y)),stets(1x,2y,1y,2z),tris(nat,ts(ts(1y,2x),ts(1z,2y)),ts(ts(1y,2y),ts(1z,2x)),ts(ts(1z,2x),ts(1y,2y)),stets(1y,2x,1z,2y),comts(ts(1y,2y),ts(1z,2x))),t1):less(ts(ts(1x,2z),ts(1y,2y)),ts(ts(1z,2x),ts(1y,2y)))
+-250
+satz50:=satz33c(ts(1x,2z),ts(1z,2x),ts(1y,2y),t2".250"):lessf(x,z)
+trlessf:=satz50:lessf(x,z)
+z@[m:moref(x,y)][n:moref(y,z)]
+trmoref:=satz43(z,x,satz50(z,y,x,satz42(y,z,n),satz42(x,y,m))):moref(x,z)
+z@[l:lesseq(x,y)][k:lessf(y,z)]
+satz51a:=orapp(lessf(x,y),eq(x,y),lessf(x,z),l,[t:lessf(x,y)]satz50(t,k),[t:eq(x,y)]eqlessf1(y,x,z,symeq(x,y,t),k)):lessf(x,z)
+z@[l:lessf(x,y)][k:lesseq(y,z)]
+satz51b:=orapp(lessf(y,z),eq(y,z),lessf(x,z),k,[t:lessf(y,z)]satz50(l,t),[t:eq(y,z)]eqlessf2(y,z,x,t,l)):lessf(x,z)
+z@[m:moreq(x,y)][n:moref(y,z)]
+satz51c:=satz43(z,x,satz51b(z,y,x,satz42(y,z,n),satz48(x,y,m))):moref(x,z)
+z@[m:moref(x,y)][n:moreq(y,z)]
+satz51d:=satz43(z,x,satz51a(z,y,x,satz48(y,z,n),satz42(x,y,m))):moref(x,z)
+z@[l:lesseq(x,y)][k:lesseq(y,z)]
++252
+[e:eq(x,y)][f:eq(y,z)]
+t1:=ori2(lessf(x,z),eq(x,z),treq(x,y,z,e,f)):lesseq(x,z)
+e@[j:lessf(y,z)]
+t2:=ori1(lessf(x,z),eq(x,z),satz51a(l,j)):lesseq(x,z)
+e@t3:=orapp(lessf(y,z),eq(y,z),lesseq(x,z),k,[t:lessf(y,z)]t2(t),[t:eq(y,z)]t1(t)):lesseq(x,z)
+k@[j:lessf(x,y)]
+t4:=ori1(lessf(x,z),eq(x,z),satz51b(j,k)):lesseq(x,z)
+-252
+satz52:=orapp(lessf(x,y),eq(x,y),lesseq(x,z),l,[t:lessf(x,y)]t4".252"(t),[t:eq(x,y)]t3".252"(t)):lesseq(x,z)
+trlesseq:=satz52:lesseq(x,z)
++*252
+k@[j:lessf(x,y)]
+t5:=ori1(lessf(x,z),eq(x,z),satz51b(j,k)):lesseq(x,z)
+k@[e:eq(x,y)]
+t6:=eqlesseq1(y,x,z,symeq(x,y,e),k):lesseq(x,z)
+k@anders:=orapp(lessf(x,y),eq(x,y),lesseq(x,z),l,[t:lessf(x,y)]t5(t),[t:eq(x,y)]t6(t)):lesseq(x,z)
+-252
+z@[m:moreq(x,y)][n:moreq(y,z)]
+trmoreq:=satz49(z,x,satz52(z,y,x,satz48(y,z,n),satz48(x,y,m))):moreq(x,z)
++253
+x@t1:=ismore1(pl(ts(1x,2x),ts(1x,2x)),ts(pl(1x,1x),2x),ts(1x,2x),distpt1(1x,1x,2x),satz18(ts(1x,2x),ts(1x,2x))):more(ts(pl(1x,1x),2x),ts(1x,2x))
+t2:=morefi2(pl(1x,1x),2x,t1):moref(fr(pl(1x,1x),2x),x)
+-253
+x@satz53:=somei(frac,[t:frac]moref(t,x),fr(pl(1x,1x),2x),t2".253"):some"l"(frac,[t:frac]moref(t,x))
++254
+t1:=isless2(pl(ts(1x,2x),ts(1x,2x)),ts(1x,pl(2x,2x)),ts(1x,2x),distpt2(1x,2x,2x),satz18a(ts(1x,2x),ts(1x,2x))):less(ts(1x,2x),ts(1x,pl(2x,2x)))
+t2:=lessfi2(1x,pl(2x,2x),t1):lessf(fr(1x,pl(2x,2x)),x)
+-254
+satz54:=somei(frac,[t:frac]lessf(t,x),fr(1x,pl(2x,2x)),t2".254"):some"l"(frac,[t:frac]lessf(t,x))
+y@[l:lessf(x,y)]
++255
+t1:=satz19f(ts(1x,2y),ts(1y,2x),ts(1x,2x),l):less(pl(ts(1x,2x),ts(1x,2y)),pl(ts(1x,2x),ts(1y,2x)))
+t2:=satz19c(ts(1x,2y),ts(1y,2x),ts(1y,2y),l):less(pl(ts(1x,2y),ts(1y,2y)),pl(ts(1y,2x),ts(1y,2y)))
+t3:=isless12(pl(ts(1x,2x),ts(1x,2y)),ts(1x,pl(2x,2y)),pl(ts(1x,2x),ts(1y,2x)),ts(pl(1x,1y),2x),distpt2(1x,2x,2y),distpt1(1x,1y,2x),t1):less(ts(1x,pl(2x,2y)),ts(pl(1x,1y),2x))
+t4:=lessfi1(pl(1x,1y),pl(2x,2y),t3):lessf(x,fr(pl(1x,1y),pl(2x,2y)))
+t5:=isless12(pl(ts(1x,2y),ts(1y,2y)),ts(pl(1x,1y),2y),pl(ts(1y,2x),ts(1y,2y)),ts(1y,pl(2x,2y)),distpt1(1x,1y,2y),distpt2(1y,2x,2y),t2):less(ts(pl(1x,1y),2y),ts(1y,pl(2x,2y)))
+t6:=lessfi2(y,pl(1x,1y),pl(2x,2y),t5):lessf(fr(pl(1x,1y),pl(2x,2y)),y)
+t7:=andi(lessf(x,fr(pl(1x,1y),pl(2x,2y))),lessf(fr(pl(1x,1y),pl(2x,2y)),y),t4,t6):and(lessf(x,fr(pl(1x,1y),pl(2x,2y))),lessf(fr(pl(1x,1y),pl(2x,2y)),y))
+-255
+satz55:=somei(frac,[t:frac]and(lessf(x,t),lessf(t,y)),fr(pl(1x,1y),pl(2x,2y)),t7".255"):some"l"(frac,[t:frac]and(lessf(x,t),lessf(t,y)))
+y@pf:=fr(pl(ts(1x,2y),ts(1y,2x)),ts(2x,2y)):frac
++ii3
+y2@t1:=ispl12(ts(num(fr(x1,x2)),den(fr(y1,y2))),ts(x1,y2),ts(num(fr(y1,y2)),den(fr(x1,x2))),ts(y1,x2),ndis12(x1,x2,y1,y2),ndis12(y1,y2,x1,x2)):is(pl(ts(num(fr(x1,x2)),den(fr(y1,y2))),ts(num(fr(y1,y2)),den(fr(x1,x2)))),pl(ts(x1,y2),ts(y1,x2)))
+t2:=ists12(den(fr(x1,x2)),x2,den(fr(y1,y2)),y2,denis(x1,x2),denis(y1,y2)):is(ts(den(fr(x1,x2)),den(fr(y1,y2))),ts(x2,y2))
+-ii3
+y2@pf12:=isnd(pl(ts(num(fr(x1,x2)),den(fr(y1,y2))),ts(num(fr(y1,y2)),den(fr(x1,x2)))),ts(den(fr(x1,x2)),den(fr(y1,y2))),pl(ts(x1,y2),ts(y1,x2)),ts(x2,y2),t1".ii3",t2".ii3"):is"e"(frac,pf(fr(x1,x2),fr(y1,y2)),fr(pl(ts(x1,y2),ts(y1,x2)),ts(x2,y2)))
++*ii3
+n2@t3:=ispl12(ts(1x,den(fr(n1,n2))),ts(1x,n2),ts(num(fr(n1,n2)),2x),ts(n1,2x),ndisn2(x,n1,n2),ndis1d(x,n1,n2)):is(pl(ts(1x,den(fr(n1,n2))),ts(num(fr(n1,n2)),2x)),pl(ts(1x,n2),ts(n1,2x)))
+t4:=ists2(den(fr(n1,n2)),n2,2x,denis(n1,n2)):is(ts(2x,den(fr(n1,n2))),ts(2x,n2))
+-ii3
+n2@pf1:=isnd(pl(ts(1x,den(fr(n1,n2))),ts(num(fr(n1,n2)),2x)),ts(2x,den(fr(n1,n2))),pl(ts(1x,n2),ts(n1,2x)),ts(2x,n2),t3".ii3",t4".ii3"):is"e"(frac,pf(x,fr(n1,n2)),fr(pl(ts(1x,n2),ts(n1,2x)),ts(2x,n2)))
++*ii3
+n2@t5:=ispl12(ts(num(fr(n1,n2)),2x),ts(n1,2x),ts(1x,den(fr(n1,n2))),ts(1x,n2),ndis1d(x,n1,n2),ndisn2(x,n1,n2)):is(pl(ts(num(fr(n1,n2)),2x),ts(1x,den(fr(n1,n2)))),pl(ts(n1,2x),ts(1x,n2)))
+t6:=ists1(den(fr(n1,n2)),n2,2x,denis(n1,n2)):is(ts(den(fr(n1,n2)),2x),ts(n2,2x))
+-ii3
+n2@pf2:=isnd(pl(ts(num(fr(n1,n2)),2x),ts(1x,den(fr(n1,n2)))),ts(den(fr(n1,n2)),2x),pl(ts(n1,2x),ts(1x,n2)),ts(n2,2x),t5".ii3",t6".ii3"):is"e"(frac,pf(fr(n1,n2),x),fr(pl(ts(n1,2x),ts(1x,n2)),ts(n2,2x)))
+y2@pfeq12a:=refeq1(pf(fr(x1,x2),fr(y1,y2)),fr(pl(ts(x1,y2),ts(y1,x2)),ts(x2,y2)),pf12):eq(pf(fr(x1,x2),fr(y1,y2)),fr(pl(ts(x1,y2),ts(y1,x2)),ts(x2,y2)))
+pfeq12b:=refeq2(pf(fr(x1,x2),fr(y1,y2)),fr(pl(ts(x1,y2),ts(y1,x2)),ts(x2,y2)),pf12):eq(fr(pl(ts(x1,y2),ts(y1,x2)),ts(x2,y2)),pf(fr(x1,x2),fr(y1,y2)))
+n2@pfeq1a:=refeq1(pf(x,fr(n1,n2)),fr(pl(ts(1x,n2),ts(n1,2x)),ts(2x,n2)),pf1):eq(pf(x,fr(n1,n2)),fr(pl(ts(1x,n2),ts(n1,2x)),ts(2x,n2)))
+pfeq1b:=refeq2(pf(x,fr(n1,n2)),fr(pl(ts(1x,n2),ts(n1,2x)),ts(2x,n2)),pf1):eq(fr(pl(ts(1x,n2),ts(n1,2x)),ts(2x,n2)),pf(x,fr(n1,n2)))
+pfeq2a:=refeq1(pf(fr(n1,n2),x),fr(pl(ts(n1,2x),ts(1x,n2)),ts(n2,2x)),pf2):eq(pf(fr(n1,n2),x),fr(pl(ts(n1,2x),ts(1x,n2)),ts(n2,2x)))
+pfeq2b:=refeq2(pf(fr(n1,n2),x),fr(pl(ts(n1,2x),ts(1x,n2)),ts(n2,2x)),pf2):eq(fr(pl(ts(n1,2x),ts(1x,n2)),ts(n2,2x)),pf(fr(n1,n2),x))
+u@[e:eq(x,y)][f:eq(z,u)]
++356
+t1:=ists1(ts(1x,2y),ts(1y,2x),ts(2z,2u),e):is(ts(ts(1x,2y),ts(2z,2u)),ts(ts(1y,2x),ts(2z,2u)))
+t2:=t1(z,u,x,y,f,e):is(ts(ts(1z,2u),ts(2x,2y)),ts(ts(1u,2z),ts(2x,2y)))
+t3:=tr3is(nat,ts(ts(1x,2z),ts(2y,2u)),ts(ts(1x,2z),ts(2u,2y)),ts(ts(1x,2y),ts(2u,2z)),ts(ts(1x,2y),ts(2z,2u)),ists2(ts(2y,2u),ts(2u,2y),ts(1x,2z),comts(2y,2u)),stets(1x,2z,2u,2y),ists2(ts(2u,2z),ts(2z,2u),ts(1x,2y),comts(2u,2z))):is(ts(ts(1x,2z),ts(2y,2u)),ts(ts(1x,2y),ts(2z,2u)))
+t4:=tr4is(nat,ts(ts(1x,2z),ts(2y,2u)),ts(ts(1x,2y),ts(2z,2u)),ts(ts(1y,2x),ts(2z,2u)),ts(ts(1y,2u),ts(2z,2x)),ts(ts(1y,2u),ts(2x,2z)),t3,t1,stets(1y,2x,2z,2u),ists2(ts(2z,2x),ts(2x,2z),ts(1y,2u),comts(2z,2x))):is(ts(ts(1x,2z),ts(2y,2u)),ts(ts(1y,2u),ts(2x,2z)))
+t5:=tr4is(nat,ts(ts(1z,2x),ts(2y,2u)),ts(ts(1z,2u),ts(2y,2x)),ts(ts(1z,2u),ts(2x,2y)),ts(ts(1u,2z),ts(2x,2y)),ts(ts(1u,2y),ts(2x,2z)),stets(1z,2x,2y,2u),ists2(ts(2y,2x),ts(2x,2y),ts(1z,2u),comts(2y,2x)),t2,stets(1u,2z,2x,2y)):is(ts(ts(1z,2x),ts(2y,2u)),ts(ts(1u,2y),ts(2x,2z)))
+t6:=ispl12(ts(ts(1x,2z),ts(2y,2u)),ts(ts(1y,2u),ts(2x,2z)),ts(ts(1z,2x),ts(2y,2u)),ts(ts(1u,2y),ts(2x,2z)),t4,t5):is(pl(ts(ts(1x,2z),ts(2y,2u)),ts(ts(1z,2x),ts(2y,2u))),pl(ts(ts(1y,2u),ts(2x,2z)),ts(ts(1u,2y),ts(2x,2z))))
+t7:=tr3is(nat,ts(pl(ts(1x,2z),ts(1z,2x)),ts(2y,2u)),pl(ts(ts(1x,2z),ts(2y,2u)),ts(ts(1z,2x),ts(2y,2u))),pl(ts(ts(1y,2u),ts(2x,2z)),ts(ts(1u,2y),ts(2x,2z))),ts(pl(ts(1y,2u),ts(1u,2y)),ts(2x,2z)),disttp1(ts(1x,2z),ts(1z,2x),ts(2y,2u)),t6,distpt1(ts(1y,2u),ts(1u,2y),ts(2x,2z))):is(ts(pl(ts(1x,2z),ts(1z,2x)),ts(2y,2u)),ts(pl(ts(1y,2u),ts(1u,2y)),ts(2x,2z)))
+-356
+satz56:=eqi12(pl(ts(1x,2z),ts(1z,2x)),ts(2x,2z),pl(ts(1y,2u),ts(1u,2y)),ts(2y,2u),t7".356"):eq(pf(x,z),pf(y,u))
+eqpf12:=satz56:eq(pf(x,z),pf(y,u))
+z@[e:eq(x,y)]
+eqpf1:=eqpf12(x,y,z,z,e,refeq(z)):eq(pf(x,z),pf(y,z))
+eqpf2:=eqpf12(z,z,x,y,refeq(z),e):eq(pf(z,x),pf(z,y))
+x2@[n:nat]
+satz57:=tr3eq(pf(fr(x1,n),fr(x2,n)),fr(pl(ts(x1,n),ts(x2,n)),ts(n,n)),fr(ts(pl(x1,x2),n),ts(n,n)),fr(pl(x1,x2),n),pfeq12a(x1,n,x2,n),eqn(pl(ts(x1,n),ts(x2,n)),ts(n,n),ts(pl(x1,x2),n),distpt1(x1,x2,n)),satz40c(pl(x1,x2),n,n)):eq(pf(fr(x1,n),fr(x2,n)),fr(pl(x1,x2),n))
+satz57a:=symeq(pf(fr(x1,n),fr(x2,n)),fr(pl(x1,x2),n),satz57):eq(fr(pl(x1,x2),n),pf(fr(x1,n),fr(x2,n)))
+y@satz58:=eqnd(pl(ts(1x,2y),ts(1y,2x)),ts(2x,2y),pl(ts(1y,2x),ts(1x,2y)),ts(2y,2x),compl(ts(1x,2y),ts(1y,2x)),comts(2x,2y)):eq(pf(x,y),pf(y,x))
+compf:=satz58:eq(pf(x,y),pf(y,x))
++359
+z@t1:=tr3is(nat,ts(ts(1y,2x),2z),ts(ts(2x,1y),2z),ts(2x,ts(1y,2z)),ts(ts(1y,2z),2x),ists1(ts(1y,2x),ts(2x,1y),2z,comts(1y,2x)),assts1(2x,1y,2z),comts(2x,ts(1y,2z))):is(ts(ts(1y,2x),2z),ts(ts(1y,2z),2x))
+t2:=ispl12(ts(ts(1x,2y),2z),ts(1x,ts(2y,2z)),ts(ts(1y,2x),2z),ts(ts(1y,2z),2x),assts1(1x,2y,2z),t1):is(pl(ts(ts(1x,2y),2z),ts(ts(1y,2x),2z)),pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)))
+t3:=tris(nat,ts(pl(ts(1x,2y),ts(1y,2x)),2z),pl(ts(ts(1x,2y),2z),ts(ts(1y,2x),2z)),pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)),disttp1(ts(1x,2y),ts(1y,2x),2z),t2):is(ts(pl(ts(1x,2y),ts(1y,2x)),2z),pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)))
+t4:=tris(nat,ts(1z,ts(2x,2y)),ts(1z,ts(2y,2x)),ts(ts(1z,2y),2x),ists2(ts(2x,2y),ts(2y,2x),1z,comts(2x,2y)),assts2(1z,2y,2x)):is(ts(1z,ts(2x,2y)),ts(ts(1z,2y),2x))
+t5:=ispl12(ts(pl(ts(1x,2y),ts(1y,2x)),2z),pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)),ts(1z,ts(2x,2y)),ts(ts(1z,2y),2x),t3,t4):is(pl(ts(pl(ts(1x,2y),ts(1y,2x)),2z),ts(1z,ts(2x,2y))),pl(pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)),ts(ts(1z,2y),2x)))
+t6:=ispl2(pl(ts(ts(1y,2z),2x),ts(ts(1z,2y),2x)),ts(pl(ts(1y,2z),ts(1z,2y)),2x),ts(1x,ts(2y,2z)),distpt1(ts(1y,2z),ts(1z,2y),2x)):is(pl(ts(1x,ts(2y,2z)),pl(ts(ts(1y,2z),2x),ts(ts(1z,2y),2x))),pl(ts(1x,ts(2y,2z)),ts(pl(ts(1y,2z),ts(1z,2y)),2x)))
+t7:=tr3is(nat,pl(ts(pl(ts(1x,2y),ts(1y,2x)),2z),ts(1z,ts(2x,2y))),pl(pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)),ts(ts(1z,2y),2x)),pl(ts(1x,ts(2y,2z)),pl(ts(ts(1y,2z),2x),ts(ts(1z,2y),2x))),pl(ts(1x,ts(2y,2z)),ts(pl(ts(1y,2z),ts(1z,2y)),2x)),t5,asspl1(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x),ts(ts(1z,2y),2x)),t6):is(pl(ts(pl(ts(1x,2y),ts(1y,2x)),2z),ts(1z,ts(2x,2y))),pl(ts(1x,ts(2y,2z)),ts(pl(ts(1y,2z),ts(1z,2y)),2x)))
+-359
+z@satz59:=tr3eq(pf(pf(x,y),z),fr(pl(ts(pl(ts(1x,2y),ts(1y,2x)),2z),ts(1z,ts(2x,2y))),ts(ts(2x,2y),2z)),fr(pl(ts(1x,ts(2y,2z)),ts(pl(ts(1y,2z),ts(1z,2y)),2x)),ts(2x,ts(2y,2z))),pf(x,pf(y,z)),pfeq2a(z,pl(ts(1x,2y),ts(1y,2x)),ts(2x,2y)),eqnd(pl(ts(pl(ts(1x,2y),ts(1y,2x)),2z),ts(1z,ts(2x,2y))),ts(ts(2x,2y),2z),pl(ts(1x,ts(2y,2z)),ts(pl(ts(1y,2z),ts(1z,2y)),2x)),ts(2x,ts(2y,2z)),t7".359",assts1(2x,2y,2z)),pfeq1b(x,pl(ts(1y,2z),ts(1z,2y)),ts(2y,2z))):eq(pf(pf(x,y),z),pf(x,pf(y,z)))
+asspf1:=satz59:eq(pf(pf(x,y),z),pf(x,pf(y,z)))
+asspf2:=symeq(pf(pf(x,y),z),pf(x,pf(y,z)),asspf1):eq(pf(x,pf(y,z)),pf(pf(x,y),z))
+c@stets1:=tr3is(nat,ts(ts(a,b),c),ts(a,ts(b,c)),ts(a,ts(c,b)),ts(ts(a,c),b),assts1(a,b,c),ists2(ts(b,c),ts(c,b),a,comts(b,c)),assts2(a,c,b)):is(ts(ts(a,b),c),ts(ts(a,c),b))
++*359
+z@t8:=tris(nat,ts(pl(ts(1x,2y),ts(1y,2x)),2z),pl(ts(ts(1x,2y),2z),ts(ts(1y,2x),2z)),pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)),disttp1(ts(1x,2y),ts(1y,2x),2z),ispl12(ts(ts(1x,2y),2z),ts(1x,ts(2y,2z)),ts(ts(1y,2x),2z),ts(ts(1y,2z),2x),assts1(1x,2y,2z),stets1(1y,2x,2z))):is(ts(pl(ts(1x,2y),ts(1y,2x)),2z),pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)))
+t9:=tris(nat,ts(1z,ts(2x,2y)),ts(ts(1z,2x),2y),ts(ts(1z,2y),2x),assts2(1z,2x,2y),stets1(1z,2x,2y)):is(ts(1z,ts(2x,2y)),ts(ts(1z,2y),2x))
+anderst7:=tr3is(nat,pl(ts(pl(ts(1x,2y),ts(1y,2x)),2z),ts(1z,ts(2x,2y))),pl(pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)),ts(ts(1z,2y),2x)),pl(ts(1x,ts(2y,2z)),pl(ts(ts(1y,2z),2x),ts(ts(1z,2y),2x))),pl(ts(1x,ts(2y,2z)),ts(pl(ts(1y,2z),ts(1z,2y)),2x)),ispl12(ts(pl(ts(1x,2y),ts(1y,2x)),2z),pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)),ts(1z,ts(2x,2y)),ts(ts(1z,2y),2x),t8,t9),asspl1(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x),ts(ts(1z,2y),2x)),ispl2(pl(ts(ts(1y,2z),2x),ts(ts(1z,2y),2x)),ts(pl(ts(1y,2z),ts(1z,2y)),2x),ts(1x,ts(2y,2z)),distpt1(ts(1y,2z),ts(1z,2y),2x))):is(pl(ts(pl(ts(1x,2y),ts(1y,2x)),2z),ts(1z,ts(2x,2y))),pl(ts(1x,ts(2y,2z)),ts(pl(ts(1y,2z),ts(1z,2y)),2x)))
+-359
++360
+y@t1:=satz18(ts(1x,2y),ts(1y,2x)):more(pl(ts(1x,2y),ts(1y,2x)),ts(1x,2y))
+t2:=satz32a(pl(ts(1x,2y),ts(1y,2x)),ts(1x,2y),2x,t1):more(ts(pl(ts(1x,2y),ts(1y,2x)),2x),ts(ts(1x,2y),2x))
+t3:=tris(nat,ts(ts(1x,2y),2x),ts(1x,ts(2y,2x)),ts(1x,ts(2x,2y)),assts1(1x,2y,2x),ists2(ts(2y,2x),ts(2x,2y),1x,comts(2y,2x))):is(ts(ts(1x,2y),2x),ts(1x,ts(2x,2y)))
+t4:=ismore2(ts(ts(1x,2y),2x),ts(1x,ts(2x,2y)),ts(pl(ts(1x,2y),ts(1y,2x)),2x),t3,t2):more(ts(pl(ts(1x,2y),ts(1y,2x)),2x),ts(1x,ts(2x,2y)))
+-360
+y@satz60:=morefi2(pl(ts(1x,2y),ts(1y,2x)),ts(2x,2y),t4".360"):moref(pf(x,y),x)
+satz60a:=satz42(pf(x,y),x,satz60):lessf(x,pf(x,y))
+z@[m:moref(x,y)]
++361
+t1:=satz32a(ts(1x,2y),ts(1y,2x),2z,m):more(ts(ts(1x,2y),2z),ts(ts(1y,2x),2z))
+t2:=ismore12(ts(ts(1x,2y),2z),ts(ts(1x,2z),2y),ts(ts(1y,2x),2z),ts(ts(1y,2z),2x),stets1(1x,2y,2z),stets1(1y,2x,2z),t1):more(ts(ts(1x,2z),2y),ts(ts(1y,2z),2x))
+t3:=stets1(1z,2x,2y):is(ts(ts(1z,2x),2y),ts(ts(1z,2y),2x))
+t4:=satz19h(ts(ts(1z,2x),2y),ts(ts(1z,2y),2x),ts(ts(1x,2z),2y),ts(ts(1y,2z),2x),t3,t2):more(pl(ts(ts(1x,2z),2y),ts(ts(1z,2x),2y)),pl(ts(ts(1y,2z),2x),ts(ts(1z,2y),2x)))
+t5:=ismore12(pl(ts(ts(1x,2z),2y),ts(ts(1z,2x),2y)),ts(pl(ts(1x,2z),ts(1z,2x)),2y),pl(ts(ts(1y,2z),2x),ts(ts(1z,2y),2x)),ts(pl(ts(1y,2z),ts(1z,2y)),2x),distpt1(ts(1x,2z),ts(1z,2x),2y),distpt1(ts(1y,2z),ts(1z,2y),2x),t4):more(ts(pl(ts(1x,2z),ts(1z,2x)),2y),ts(pl(ts(1y,2z),ts(1z,2y)),2x))
+t6:=satz32a(ts(pl(ts(1x,2z),ts(1z,2x)),2y),ts(pl(ts(1y,2z),ts(1z,2y)),2x),2z,t5):more(ts(ts(pl(ts(1x,2z),ts(1z,2x)),2y),2z),ts(ts(pl(ts(1y,2z),ts(1z,2y)),2x),2z))
+t7:=ismore12(ts(ts(pl(ts(1x,2z),ts(1z,2x)),2y),2z),ts(pl(ts(1x,2z),ts(1z,2x)),ts(2y,2z)),ts(ts(pl(ts(1y,2z),ts(1z,2y)),2x),2z),ts(pl(ts(1y,2z),ts(1z,2y)),ts(2x,2z)),assts1(pl(ts(1x,2z),ts(1z,2x)),2y,2z),assts1(pl(ts(1y,2z),ts(1z,2y)),2x,2z),t6):more(ts(pl(ts(1x,2z),ts(1z,2x)),ts(2y,2z)),ts(pl(ts(1y,2z),ts(1z,2y)),ts(2x,2z)))
+-361
+satz61:=morefi12(pl(ts(1x,2z),ts(1z,2x)),ts(2x,2z),pl(ts(1y,2z),ts(1z,2y)),ts(2y,2z),t7".361"):moref(pf(x,z),pf(y,z))
+z@[m:moref(x,y)]
+satz62a:=satz61(m):moref(pf(x,z),pf(y,z))
+z@[e:eq(x,y)]
+satz62b:=eqpf1(x,y,z,e):eq(pf(x,z),pf(y,z))
+z@[l:lessf(x,y)]
+satz62c:=satz42(pf(y,z),pf(x,z),satz61(y,x,z,satz43(l))):lessf(pf(x,z),pf(y,z))
+m@satz62d:=eqmoref12(pf(x,z),pf(z,x),pf(y,z),pf(z,y),compf(x,z),compf(y,z),satz62a):moref(pf(z,x),pf(z,y))
+e@satz62e:=eqpf2(x,y,z,e):eq(pf(z,x),pf(z,y))
+l@satz62f:=eqlessf12(pf(x,z),pf(z,x),pf(y,z),pf(z,y),compf(x,z),compf(y,z),satz62c):lessf(pf(z,x),pf(z,y))
+u@[e:eq(x,y)][m:moref(z,u)]
+satz62g:=eqmoref2(pf(x,u),pf(y,u),pf(x,z),eqpf1(x,y,u,e),satz62d(z,u,x,m)):moref(pf(x,z),pf(y,u))
+satz62h:=eqmoref12(pf(x,z),pf(z,x),pf(y,u),pf(u,y),compf(x,z),compf(y,u),satz62g):moref(pf(z,x),pf(u,y))
+e@[l:lessf(z,u)]
+satz62j:=eqlessf2(pf(x,u),pf(y,u),pf(x,z),eqpf1(x,y,u,e),satz62f(z,u,x,l)):lessf(pf(x,z),pf(y,u))
+satz62k:=eqlessf12(pf(x,z),pf(z,x),pf(y,u),pf(u,y),compf(x,z),compf(y,u),satz62j):lessf(pf(z,x),pf(u,y))
++363
+z@t1:=satz41a(x,y):or3(eq(x,y),moref(x,y),lessf(x,y))
+t2:=satz41b(pf(x,z),pf(y,z)):ec3(eq(pf(x,z),pf(y,z)),moref(pf(x,z),pf(y,z)),lessf(pf(x,z),pf(y,z)))
+-363
+z@[m:moref(pf(x,z),pf(y,z))]
+satz63a:=th11"l.ec3"(eq(x,y),moref(x,y),lessf(x,y),eq(pf(x,z),pf(y,z)),moref(pf(x,z),pf(y,z)),lessf(pf(x,z),pf(y,z)),t1".363",t2".363",[u:eq(x,y)]satz62b(x,y,z,u),[u:moref(x,y)]satz62a(x,y,z,u),[u:lessf(x,y)]satz62c(x,y,z,u),m):moref(x,y)
+z@[e:eq(pf(x,z),pf(y,z))]
+satz63b:=th10"l.ec3"(eq(x,y),moref(x,y),lessf(x,y),eq(pf(x,z),pf(y,z)),moref(pf(x,z),pf(y,z)),lessf(pf(x,z),pf(y,z)),t1".363",t2".363",[u:eq(x,y)]satz62b(x,y,z,u),[u:moref(x,y)]satz62a(x,y,z,u),[u:lessf(x,y)]satz62c(x,y,z,u),e):eq(x,y)
+z@[l:lessf(pf(x,z),pf(y,z))]
+satz63c:=th12"l.ec3"(eq(x,y),moref(x,y),lessf(x,y),eq(pf(x,z),pf(y,z)),moref(pf(x,z),pf(y,z)),lessf(pf(x,z),pf(y,z)),t1".363",t2".363",[u:eq(x,y)]satz62b(x,y,z,u),[u:moref(x,y)]satz62a(x,y,z,u),[u:lessf(x,y)]satz62c(x,y,z,u),l):lessf(x,y)
+z@[m:moref(pf(z,x),pf(z,y))]
+satz63d:=satz63a(eqmoref12(pf(z,x),pf(x,z),pf(z,y),pf(y,z),compf(z,x),compf(z,y),m)):moref(x,y)
+z@[e:eq(pf(z,x),pf(z,y))]
+satz63e:=satz63b(tr3eq(pf(x,z),pf(z,x),pf(z,y),pf(y,z),compf(x,z),e,compf(z,y))):eq(x,y)
+z@[f:lessf(pf(z,x),pf(z,y))]
+satz63f:=satz63c(eqlessf12(pf(z,x),pf(x,z),pf(z,y),pf(y,z),compf(z,x),compf(z,y),f)):lessf(x,y)
+u@[m:moref(x,y)][n:moref(z,u)]
++364
+t1:=satz61(x,y,z,m):moref(pf(x,z),pf(y,z))
+t2:=eqmoref12(pf(z,y),pf(y,z),pf(u,y),pf(y,u),compf(z,y),compf(u,y),satz61(z,u,y,n)):moref(pf(y,z),pf(y,u))
+-364
+satz64:=trmoref(pf(x,z),pf(y,z),pf(y,u),t1".364",t2".364"):moref(pf(x,z),pf(y,u))
+u@[l:lessf(x,y)][k:lessf(z,u)]
+satz64a:=satz42(pf(y,u),pf(x,z),satz64(y,x,u,z,satz43(x,y,l),satz43(z,u,k))):lessf(pf(x,z),pf(y,u))
+u@[m:moreq(x,y)][n:moref(z,u)]
+satz65a:=orapp(moref(x,y),eq(x,y),moref(pf(x,z),pf(y,u)),m,[v:moref(x,y)]satz64(v,n),[v:eq(x,y)]satz62g(v,n)):moref(pf(x,z),pf(y,u))
+u@[m:moref(x,y)][n:moreq(z,u)]
+satz65b:=orapp(moref(z,u),eq(z,u),moref(pf(x,z),pf(y,u)),n,[v:moref(z,u)]satz64(m,v),[v:eq(z,u)]eqmoref2(pf(y,z),pf(y,u),pf(x,z),eqpf2(z,u,y,v),satz61(x,y,z,m))):moref(pf(x,z),pf(y,u))
+u@[l:lesseq(x,y)][k:lessf(z,u)]
+satz65c:=satz42(pf(y,u),pf(x,z),satz65a(y,x,u,z,satz49(x,y,l),satz43(z,u,k))):lessf(pf(x,z),pf(y,u))
+u@[l:lessf(x,y)][k:lesseq(z,u)]
+satz65d:=satz42(pf(y,u),pf(x,z),satz65b(y,x,u,z,satz43(x,y,l),satz49(z,u,k))):lessf(pf(x,z),pf(y,u))
+u@[m:moreq(x,y)][n:moreq(z,u)]
++366
+[e:eq(x,y)][f:eq(z,u)]
+t1:=moreqi2(pf(x,z),pf(y,u),satz56(e,f)):moreq(pf(x,z),pf(y,u))
+e@[o:moref(z,u)]
+t2:=moreqi1(pf(x,z),pf(y,u),satz65a(m,o)):moreq(pf(x,z),pf(y,u))
+e@t3:=orapp(moref(z,u),eq(z,u),moreq(pf(x,z),pf(y,u)),n,[v:moref(z,u)]t2(v),[v:eq(z,u)]t1(v)):moreq(pf(x,z),pf(y,u))
+n@[o:moref(x,y)]
+t4:=moreqi1(pf(x,z),pf(y,u),satz65b(o,n)):moreq(pf(x,z),pf(y,u))
+-366
+satz66:=orapp(moref(x,y),eq(x,y),moreq(pf(x,z),pf(y,u)),m,[v:moref(x,y)]t4".366"(v),[v:eq(x,y)]t3".366"(v)):moreq(pf(x,z),pf(y,u))
+u@[l:lesseq(x,y)][k:lesseq(z,u)]
+satz66a:=satz48(pf(y,u),pf(x,z),satz66(y,x,u,z,satz49(x,y,l),satz49(z,u,k))):lesseq(pf(x,z),pf(y,u))
+y@[l:lesseq(x,y)]
++367
+[v:frac][e:eq(pf(y,v),x)]
+t1:=eqmoref1(pf(y,v),x,y,e,satz60(y,v)):moref(x,y)
+v@t2:=th3"l.imp"(eq(pf(y,v),x),moref(x,y),satz41d(x,y,l),[t:eq(pf(y,v),x)]t1(t)):not(eq(pf(y,v),x))
+-367
+vorbemerkung67:=th5"l.some"(frac,[v:frac]eq(pf(y,v),x),[v:frac]t2".367"(v)):not(some"l"(frac,[t:frac]eq(pf(y,t),x)))
+y@[v:frac][w:frac][e:eq(pf(y,v),x)][f:eq(pf(y,w),x)]
+satz67b:=satz63e(v,w,y,treq2(pf(y,v),pf(y,w),x,e,f)):eq(v,w)
+y@[m:moref(x,y)]
++*367
+m@t3:=onei(nat,[t:nat]diffprop(ts(1x,2y),ts(1y,2x),t),satz8b(ts(1x,2y),ts(1y,2x)),m):one([t:nat]diffprop(ts(1x,2y),ts(1y,2x),t))
+vo:=ind(nat,[t:nat]diffprop(ts(1x,2y),ts(1y,2x),t),t3):nat
+t4:=oneax(nat,[t:nat]diffprop(ts(1x,2y),ts(1y,2x),t),t3):is(ts(1x,2y),pl(ts(1y,2x),vo))
+w:=fr(vo,ts(2x,2y)):frac
+t5:=treq(y,fr(ts(1y,2x),ts(2y,2x)),fr(ts(1y,2x),ts(2x,2y)),satz40(y,2x),eqd(ts(1y,2x),ts(2y,2x),ts(2x,2y),comts(2y,2x))):eq(y,fr(ts(1y,2x),ts(2x,2y)))
+t6:=tr4eq(pf(y,w),pf(fr(ts(1y,2x),ts(2x,2y)),fr(vo,ts(2x,2y))),fr(pl(ts(1y,2x),vo),ts(2x,2y)),fr(ts(1x,2y),ts(2x,2y)),x,eqpf1(y,fr(ts(1y,2x),ts(2x,2y)),w,t5),satz57(ts(1y,2x),vo,ts(2x,2y)),eqn(pl(ts(1y,2x),vo),ts(2x,2y),ts(1x,2y),symis(nat,ts(1x,2y),pl(ts(1y,2x),vo),t4)),satz40a(x,2y)):eq(pf(y,w),x)
+-367
+m@satz67a:=somei(frac,[t:frac]eq(pf(y,t),x),w".367",t6".367"):some"l"(frac,[t:frac]eq(pf(y,t),x))
+mf:=w".367":frac
+satz67c:=t6".367":eq(pf(y,mf(x,y,m)),x)
+satz67d:=symeq(pf(y,mf(x,y,m)),x,satz67c):eq(x,pf(y,mf(x,y,m)))
+y@[v:frac][m:moref(x,y)][e:eq(pf(y,v),x)]
+satz67e:=satz67b(v,mf(x,y,m),e,satz67c(m)):eq(v,mf(x,y,m))
+y@tf:=fr(ts(1x,1y),ts(2x,2y)):frac
++ii4
+y2@t1:=ists12(num(fr(x1,x2)),x1,num(fr(y1,y2)),y1,numis(x1,x2),numis(y1,y2)):is(ts(num(fr(x1,x2)),num(fr(y1,y2))),ts(x1,y1))
+t2:=ists12(den(fr(x1,x2)),x2,den(fr(y1,y2)),y2,denis(x1,x2),denis(y1,y2)):is(ts(den(fr(x1,x2)),den(fr(y1,y2))),ts(x2,y2))
+-ii4
+y2@tf12:=isnd(ts(num(fr(x1,x2)),num(fr(y1,y2))),ts(den(fr(x1,x2)),den(fr(y1,y2))),ts(x1,y1),ts(x2,y2),t1".ii4",t2".ii4"):is"e"(frac,tf(fr(x1,x2),fr(y1,y2)),fr(ts(x1,y1),ts(x2,y2)))
++*ii4
+n2@t3:=ists2(num(fr(n1,n2)),n1,1x,numis(n1,n2)):is(ts(1x,num(fr(n1,n2))),ts(1x,n1))
+t4:=ists2(den(fr(n1,n2)),n2,2x,denis(n1,n2)):is(ts(2x,den(fr(n1,n2))),ts(2x,n2))
+-ii4
+n2@tf1:=isnd(ts(1x,num(fr(n1,n2))),ts(2x,den(fr(n1,n2))),ts(1x,n1),ts(2x,n2),t3".ii4",t4".ii4"):is"e"(frac,tf(x,fr(n1,n2)),fr(ts(1x,n1),ts(2x,n2)))
++*ii4
+n2@t5:=ists1(num(fr(n1,n2)),n1,1x,numis(n1,n2)):is(ts(num(fr(n1,n2)),1x),ts(n1,1x))
+t6:=ists1(den(fr(n1,n2)),n2,2x,denis(n1,n2)):is(ts(den(fr(n1,n2)),2x),ts(n2,2x))
+-ii4
+n2@tf2:=isnd(ts(num(fr(n1,n2)),1x),ts(den(fr(n1,n2)),2x),ts(n1,1x),ts(n2,2x),t5".ii4",t6".ii4"):is"e"(frac,tf(fr(n1,n2),x),fr(ts(n1,1x),ts(n2,2x)))
+y2@tfeq12a:=refeq1(tf(fr(x1,x2),fr(y1,y2)),fr(ts(x1,y1),ts(x2,y2)),tf12):eq(tf(fr(x1,x2),fr(y1,y2)),fr(ts(x1,y1),ts(x2,y2)))
+tfeq12b:=refeq2(tf(fr(x1,x2),fr(y1,y2)),fr(ts(x1,y1),ts(x2,y2)),tf12):eq(fr(ts(x1,y1),ts(x2,y2)),tf(fr(x1,x2),fr(y1,y2)))
+n2@tfeq1a:=refeq1(tf(x,fr(n1,n2)),fr(ts(1x,n1),ts(2x,n2)),tf1):eq(tf(x,fr(n1,n2)),fr(ts(1x,n1),ts(2x,n2)))
+tfeq1b:=refeq2(tf(x,fr(n1,n2)),fr(ts(1x,n1),ts(2x,n2)),tf1):eq(fr(ts(1x,n1),ts(2x,n2)),tf(x,fr(n1,n2)))
+tfeq2a:=refeq1(tf(fr(n1,n2),x),fr(ts(n1,1x),ts(n2,2x)),tf2):eq(tf(fr(n1,n2),x),fr(ts(n1,1x),ts(n2,2x)))
+tfeq2b:=refeq2(tf(fr(n1,n2),x),fr(ts(n1,1x),ts(n2,2x)),tf2):eq(fr(ts(n1,1x),ts(n2,2x)),tf(fr(n1,n2),x))
+u@[e:eq(x,y)][f:eq(z,u)]
++468
+t1:=ists12(ts(1x,2y),ts(1y,2x),ts(1z,2u),ts(1u,2z),e,f):is(ts(ts(1x,2y),ts(1z,2u)),ts(ts(1y,2x),ts(1u,2z)))
+-468
+d@stets2:=tr3is(nat,ts(ts(a,b),ts(c,d)),ts(ts(a,b),ts(d,c)),ts(ts(a,c),ts(d,b)),ts(ts(a,c),ts(b,d)),ists2(ts(c,d),ts(d,c),ts(a,b),comts(c,d)),stets(a,b,d,c),ists2(ts(d,b),ts(b,d),ts(a,c),comts(d,b))):is(ts(ts(a,b),ts(c,d)),ts(ts(a,c),ts(b,d)))
++*468
+f@t2:=tr3is(nat,ts(ts(1x,1z),ts(2y,2u)),ts(ts(1x,2y),ts(1z,2u)),ts(ts(1y,2x),ts(1u,2z)),ts(ts(1y,1u),ts(2x,2z)),stets2(1x,1z,2y,2u),t1,stets2(1y,2x,1u,2z)):is(ts(ts(1x,1z),ts(2y,2u)),ts(ts(1y,1u),ts(2x,2z)))
+-468
+f@satz68:=eqi12(ts(1x,1z),ts(2x,2z),ts(1y,1u),ts(2y,2u),t2".468"):eq(tf(x,z),tf(y,u))
+eqtf12:=satz68:eq(tf(x,z),tf(y,u))
+z@[e:eq(x,y)]
+eqtf1:=eqtf12(x,y,z,z,e,refeq(z)):eq(tf(x,z),tf(y,z))
+eqtf2:=eqtf12(z,z,x,y,refeq(z),e):eq(tf(z,x),tf(z,y))
+y@satz69:=eqnd(ts(1x,1y),ts(2x,2y),ts(1y,1x),ts(2y,2x),comts(1x,1y),comts(2x,2y)):eq(tf(x,y),tf(y,x))
+comtf:=satz69:eq(tf(x,y),tf(y,x))
+z@satz70:=tr3eq(tf(tf(x,y),z),fr(ts(ts(1x,1y),1z),ts(ts(2x,2y),2z)),fr(ts(1x,ts(1y,1z)),ts(2x,ts(2y,2z))),tf(x,tf(y,z)),tfeq2a(z,ts(1x,1y),ts(2x,2y)),eqnd(ts(ts(1x,1y),1z),ts(ts(2x,2y),2z),ts(1x,ts(1y,1z)),ts(2x,ts(2y,2z)),assts1(1x,1y,1z),assts1(2x,2y,2z)),tfeq1b(x,ts(1y,1z),ts(2y,2z))):eq(tf(tf(x,y),z),tf(x,tf(y,z)))
+asstf1:=satz70:eq(tf(tf(x,y),z),tf(x,tf(y,z)))
+asstf2:=symeq(tf(tf(x,y),z),tf(x,tf(y,z)),asstf1):eq(tf(x,tf(y,z)),tf(tf(x,y),z))
++471
+t1:=tr3eq(tf(x,pf(y,z)),fr(ts(1x,pl(ts(1y,2z),ts(1z,2y))),ts(2x,ts(2y,2z))),fr(pl(ts(1x,ts(1y,2z)),ts(1x,ts(1z,2y))),ts(2x,ts(2y,2z))),pf(fr(ts(1x,ts(1y,2z)),ts(2x,ts(2y,2z))),fr(ts(1x,ts(1z,2y)),ts(2x,ts(2y,2z)))),tfeq1a(x,pl(ts(1y,2z),ts(1z,2y)),ts(2y,2z)),eqn(ts(1x,pl(ts(1y,2z),ts(1z,2y))),ts(2x,ts(2y,2z)),pl(ts(1x,ts(1y,2z)),ts(1x,ts(1z,2y))),disttp2(1x,ts(1y,2z),ts(1z,2y))),satz57a(ts(1x,ts(1y,2z)),ts(1x,ts(1z,2y)),ts(2x,ts(2y,2z)))):eq(tf(x,pf(y,z)),pf(fr(ts(1x,ts(1y,2z)),ts(2x,ts(2y,2z))),fr(ts(1x,ts(1z,2y)),ts(2x,ts(2y,2z)))))
+t2:=treq(fr(ts(1x,ts(1y,2z)),ts(2x,ts(2y,2z))),fr(ts(ts(1x,1y),2z),ts(ts(2x,2y),2z)),tf(x,y),eqnd(ts(1x,ts(1y,2z)),ts(2x,ts(2y,2z)),ts(ts(1x,1y),2z),ts(ts(2x,2y),2z),assts2(1x,1y,2z),assts2(2x,2y,2z)),satz40c(ts(1x,1y),ts(2x,2y),2z)):eq(fr(ts(1x,ts(1y,2z)),ts(2x,ts(2y,2z))),tf(x,y))
+t3:=treq(fr(ts(1x,ts(1z,2y)),ts(2x,ts(2y,2z))),fr(ts(1x,ts(1z,2y)),ts(2x,ts(2z,2y))),tf(x,z),eqd(ts(1x,ts(1z,2y)),ts(2x,ts(2y,2z)),ts(2x,ts(2z,2y)),ists2(ts(2y,2z),ts(2z,2y),2x,comts(2y,2z))),t2(x,z,y)):eq(fr(ts(1x,ts(1z,2y)),ts(2x,ts(2y,2z))),tf(x,z))
+-471
+satz71:=treq(tf(x,pf(y,z)),pf(fr(ts(1x,ts(1y,2z)),ts(2x,ts(2y,2z))),fr(ts(1x,ts(1z,2y)),ts(2x,ts(2y,2z)))),pf(tf(x,y),tf(x,z)),t1".471",eqpf12(fr(ts(1x,ts(1y,2z)),ts(2x,ts(2y,2z))),tf(x,y),fr(ts(1x,ts(1z,2y)),ts(2x,ts(2y,2z))),tf(x,z),t2".471",t3".471")):eq(tf(x,pf(y,z)),pf(tf(x,y),tf(x,z)))
+disttpf1:=tr3eq(tf(pf(x,y),z),tf(z,pf(x,y)),pf(tf(z,x),tf(z,y)),pf(tf(x,z),tf(y,z)),comtf(pf(x,y),z),satz71(z,x,y),eqpf12(tf(z,x),tf(x,z),tf(z,y),tf(y,z),comtf(z,x),comtf(z,y))):eq(tf(pf(x,y),z),pf(tf(x,z),tf(y,z)))
+disttpf2:=satz71:eq(tf(x,pf(y,z)),pf(tf(x,y),tf(x,z)))
+distptf1:=symeq(tf(pf(x,y),z),pf(tf(x,z),tf(y,z)),disttpf1):eq(pf(tf(x,z),tf(y,z)),tf(pf(x,y),z))
+distptf2:=symeq(tf(x,pf(y,z)),pf(tf(x,y),tf(x,z)),disttpf2):eq(pf(tf(x,y),tf(x,z)),tf(x,pf(y,z)))
+[m:moref(x,y)]
++472
+t1:=satz32a(ts(1x,2y),ts(1y,2x),ts(1z,2z),m):more(ts(ts(1x,2y),ts(1z,2z)),ts(ts(1y,2x),ts(1z,2z)))
+t2:=ismore12(ts(ts(1x,2y),ts(1z,2z)),ts(ts(1x,1z),ts(2y,2z)),ts(ts(1y,2x),ts(1z,2z)),ts(ts(1y,1z),ts(2x,2z)),stets2(1x,2y,1z,2z),stets2(1y,2x,1z,2z),t1):more(ts(ts(1x,1z),ts(2y,2z)),ts(ts(1y,1z),ts(2x,2z)))
+-472
+satz72a:=morefi12(ts(1x,1z),ts(2x,2z),ts(1y,1z),ts(2y,2z),t2".472"):moref(tf(x,z),tf(y,z))
+z@[e:eq(x,y)]
+satz72b:=satz68(x,y,z,z,e,refeq(z)):eq(tf(x,z),tf(y,z))
+z@[l:lessf(x,y)]
+satz72c:=satz42(tf(y,z),tf(x,z),satz72a(y,x,z,satz43(x,y,l))):lessf(tf(x,z),tf(y,z))
+m@satz72d:=eqmoref12(tf(x,z),tf(z,x),tf(y,z),tf(z,y),comtf(x,z),comtf(y,z),satz72a):moref(tf(z,x),tf(z,y))
+e@satz72e:=eqtf2(x,y,z,e):eq(tf(z,x),tf(z,y))
+l@satz72f:=eqlessf12(tf(x,z),tf(z,x),tf(y,z),tf(z,y),comtf(x,z),comtf(y,z),satz72c):lessf(tf(z,x),tf(z,y))
+u@[e:eq(x,y)][m:moref(z,u)]
+satz72g:=eqmoref2(tf(x,u),tf(y,u),tf(x,z),eqtf1(x,y,u,e),satz72d(z,u,x,m)):moref(tf(x,z),tf(y,u))
+satz72h:=eqmoref12(tf(x,z),tf(z,x),tf(y,u),tf(u,y),comtf(x,z),comtf(y,u),satz72g):moref(tf(z,x),tf(u,y))
+e@[l:lessf(z,u)]
+satz72j:=eqlessf2(tf(x,u),tf(y,u),tf(x,z),eqtf1(x,y,u,e),satz72f(z,u,x,l)):lessf(tf(x,z),tf(y,u))
+satz72k:=eqlessf12(tf(x,z),tf(z,x),tf(y,u),tf(u,y),comtf(x,z),comtf(y,u),satz72j):lessf(tf(z,x),tf(u,y))
++473
+z@t1:=satz41a(x,y):or3(eq(x,y),moref(x,y),lessf(x,y))
+t2:=satz41b(tf(x,z),tf(y,z)):ec3(eq(tf(x,z),tf(y,z)),moref(tf(x,z),tf(y,z)),lessf(tf(x,z),tf(y,z)))
+-473
+z@[m:moref(tf(x,z),tf(y,z))]
+satz73a:=th11"l.ec3"(eq(x,y),moref(x,y),lessf(x,y),eq(tf(x,z),tf(y,z)),moref(tf(x,z),tf(y,z)),lessf(tf(x,z),tf(y,z)),t1".473",t2".473",[u:eq(x,y)]satz72b(x,y,z,u),[u:moref(x,y)]satz72a(x,y,z,u),[u:lessf(x,y)]satz72c(x,y,z,u),m):moref(x,y)
+z@[e:eq(tf(x,z),tf(y,z))]
+satz73b:=th10"l.ec3"(eq(x,y),moref(x,y),lessf(x,y),eq(tf(x,z),tf(y,z)),moref(tf(x,z),tf(y,z)),lessf(tf(x,z),tf(y,z)),t1".473",t2".473",[u:eq(x,y)]satz72b(x,y,z,u),[u:moref(x,y)]satz72a(x,y,z,u),[u:lessf(x,y)]satz72c(x,y,z,u),e):eq(x,y)
+z@[l:lessf(tf(x,z),tf(y,z))]
+satz73c:=th12"l.ec3"(eq(x,y),moref(x,y),lessf(x,y),eq(tf(x,z),tf(y,z)),moref(tf(x,z),tf(y,z)),lessf(tf(x,z),tf(y,z)),t1".473",t2".473",[u:eq(x,y)]satz72b(x,y,z,u),[u:moref(x,y)]satz72a(x,y,z,u),[u:lessf(x,y)]satz72c(x,y,z,u),l):lessf(x,y)
+z@[m:moref(tf(z,x),tf(z,y))]
+satz73d:=satz73a(eqmoref12(tf(z,x),tf(x,z),tf(z,y),tf(y,z),comtf(z,x),comtf(z,y),m)):moref(x,y)
+z@[e:eq(tf(z,x),tf(z,y))]
+satz73e:=satz73b(tr3eq(tf(x,z),tf(z,x),tf(z,y),tf(y,z),comtf(x,z),e,comtf(z,y))):eq(x,y)
+z@[l:lessf(tf(z,x),tf(z,y))]
+satz73f:=satz73c(eqlessf12(tf(z,x),tf(x,z),tf(z,y),tf(y,z),comtf(z,x),comtf(z,y),l)):lessf(x,y)
+u@[m:moref(x,y)][n:moref(z,u)]
++474
+t1:=satz72a(x,y,z,m):moref(tf(x,z),tf(y,z))
+t2:=eqmoref12(tf(z,y),tf(y,z),tf(u,y),tf(y,u),comtf(z,y),comtf(u,y),satz72a(z,u,y,n)):moref(tf(y,z),tf(y,u))
+-474
+satz74:=trmoref(tf(x,z),tf(y,z),tf(y,u),t1".474",t2".474"):moref(tf(x,z),tf(y,u))
+u@[l:lessf(x,y)][k:lessf(z,u)]
+satz74a:=satz42(tf(y,u),tf(x,z),satz74(y,x,u,z,satz43(x,y,l),satz43(z,u,k))):lessf(tf(x,z),tf(y,u))
+u@[m:moreq(x,y)][n:moref(z,u)]
+satz75a:=orapp(moref(x,y),eq(x,y),moref(tf(x,z),tf(y,u)),m,[v:moref(x,y)]satz74(v,n),[v:eq(x,y)]satz72g(v,n)):moref(tf(x,z),tf(y,u))
+u@[m:moref(x,y)][n:moreq(z,u)]
+satz75b:=orapp(moref(z,u),eq(z,u),moref(tf(x,z),tf(y,u)),n,[v:moref(z,u)]satz74(m,v),[v:eq(z,u)]eqmoref2(tf(y,z),tf(y,u),tf(x,z),eqtf2(z,u,y,v),satz72a(m))):moref(tf(x,z),tf(y,u))
+u@[l:lesseq(x,y)][k:lessf(z,u)]
+satz75c:=satz42(tf(y,u),tf(x,z),satz75a(y,x,u,z,satz49(x,y,l),satz43(z,u,k))):lessf(tf(x,z),tf(y,u))
+u@[l:lessf(x,y)][k:lesseq(z,u)]
+satz75d:=satz42(tf(y,u),tf(x,z),satz75b(y,x,u,z,satz43(x,y,l),satz49(z,u,k))):lessf(tf(x,z),tf(y,u))
+u@[m:moreq(x,y)][n:moreq(z,u)]
++476
+[e:eq(x,y)][f:eq(z,u)]
+t1:=moreqi2(tf(x,z),tf(y,u),satz68(e,f)):moreq(tf(x,z),tf(y,u))
+e@[o:moref(z,u)]
+t2:=moreqi1(tf(x,z),tf(y,u),satz75a(m,o)):moreq(tf(x,z),tf(y,u))
+e@t3:=orapp(moref(z,u),eq(z,u),moreq(tf(x,z),tf(y,u)),n,[v:moref(z,u)]t2(v),[v:eq(z,u)]t1(v)):moreq(tf(x,z),tf(y,u))
+n@[o:moref(x,y)]
+t4:=moreqi1(tf(x,z),tf(y,u),satz75b(o,n)):moreq(tf(x,z),tf(y,u))
+-476
+satz76:=orapp(moref(x,y),eq(x,y),moreq(tf(x,z),tf(y,u)),m,[v:moref(x,y)]t4".476"(v),[v:eq(x,y)]t3".476"(v)):moreq(tf(x,z),tf(y,u))
+u@[l:lesseq(x,y)][k:lesseq(z,u)]
+satz76a:=satz48(tf(y,u),tf(x,z),satz76(y,x,u,z,satz49(x,y,l),satz49(z,u,k))):lesseq(tf(x,z),tf(y,u))
+y@[v:frac][w:frac][e:eq(tf(y,v),x)][f:eq(tf(y,w),x)]
+satz77b:=satz73e(v,w,y,treq2(tf(y,v),tf(y,w),x,e,f)):eq(v,w)
++477
+y@v:=fr(ts(1x,2y),ts(2x,1y)):frac
+t1:=tr4eq(tf(y,v),tf(v,y),fr(ts(ts(1x,2y),1y),ts(ts(2x,1y),2y)),fr(ts(1x,ts(1y,2y)),ts(2x,ts(1y,2y))),x,comtf(y,v),tfeq2a(y,ts(1x,2y),ts(2x,1y)),eqnd(ts(ts(1x,2y),1y),ts(ts(2x,1y),2y),ts(1x,ts(1y,2y)),ts(2x,ts(1y,2y)),tris(nat,ts(ts(1x,2y),1y),ts(1x,ts(2y,1y)),ts(1x,ts(1y,2y)),assts1(1x,2y,1y),ists2(ts(2y,1y),ts(1y,2y),1x,comts(2y,1y))),assts1(2x,1y,2y)),satz40a(x,ts(1y,2y))):eq(tf(y,v),x)
+-477
+y@satz77a:=somei(frac,[t:frac]eq(tf(y,t),x),v".477",t1".477"):some"l"(frac,[t:frac]eq(tf(y,t),x))
++rt
+@eq:=[x:frac][y:frac]eq"n"(x,y):[x:frac][y:frac]'prop'
+refeq:=[x:frac]refeq"n"(x):[x:frac]<x><x>eq
+symeq:=[x:frac][y:frac][t:<y><x>eq]symeq"n"(x,y,t):[x:frac][y:frac][t:<y><x>eq]<x><y>eq
+treq:=[x:frac][y:frac][z:frac][t:<y><x>eq][u:<z><y>eq]treq"n"(x,y,z,t,u):[x:frac][y:frac][z:frac][t:<y><x>eq][u:<z><y>eq]<z><x>eq
+[x:frac][s:set(frac)]
+inf:=esti(frac,x,s):'prop'
+@rat:=ect"eq"(frac,eq,refeq,symeq,treq):'type'
+[x0:rat][y0:rat]
+is:=is"e"(rat,x0,y0):'prop'
+nis:=not(is(x0,y0)):'prop'
+@[p:[x:rat]'prop']
+some:=some"l"(rat,p):'prop'
+all:=all"l"(rat,p):'prop'
+one:=one"e"(rat,p):'prop'
+x0@[s:set(rat)]
+in:=esti(rat,x0,s):'prop'
+x@ratof:=ectelt"eq"(frac,eq,refeq,symeq,treq,x):rat
+x0@class:=ecect"eq"(frac,eq,refeq,symeq,treq,x0):set(frac)
+x@inclass:=th5"eq.4"(frac,eq,refeq,symeq,treq,x):inf(x,class(ratof(x)))
+x0@[x:frac][y:frac][xix0:inf(x,class(x0))][e:eq"n"(x,y)]
+lemmaeq1:=th8"eq.4"(frac,eq,refeq,symeq,treq,x0,x,xix0,y,e):inf(y,class(x0))
+x0@[a:'prop'][a1:[x:frac][xi:inf(x,class(x0))]a]
+ratapp1:=th3"eq.4"(frac,eq,refeq,symeq,treq,x0,a,a1):a
+y0@[a:'prop'][a1:[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]a][x:frac][xix0:inf(x,class(x0))]
++ii5
+t1:=ratapp1(y0,a,[y:frac][yi:inf(y,class(y0))]<yi><xix0><y><x>a1):a
+-ii5
+a1@ratapp2:=ratapp1(x0,a,[x:frac][xi:inf(x,class(x0))]t1".ii5"(x,xi)):a
+y0@[z0:rat][a:'prop'][a1:[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]a][x:frac][xix0:inf(x,class(x0))]
++*ii5
+xix0@t2:=ratapp2(y0,z0,a,[y:frac][z:frac][yi:inf(y,class(y0))][zi:inf(z,class(z0))]<zi><yi><xix0><z><y><x>a1):a
+-ii5
+a1@ratapp3:=ratapp1(x0,a,[x:frac][xi:inf(x,class(x0))]t2".ii5"(x,xi)):a
+z0@[u0:rat][a:'prop'][a1:[x:frac][y:frac][z:frac][u:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]a][x:frac][xix0:inf(x,class(x0))]
++*ii5
+xix0@t3:=ratapp3(y0,z0,u0,a,[y:frac][z:frac][u:frac][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]<ui><zi><yi><xix0><u><z><y><x>a1):a
+-ii5
+a1@ratapp4:=ratapp1(x0,a,[x:frac][xi:inf(x,class(x0))]t3".ii5"(x,xi)):a
+y0@[x1:frac][y1:frac][x1ix0:inf(x1,class(x0))][y1iy0:inf(y1,class(y0))][e:eq"n"(x1,y1)]
+isi:=th3"eq.5"(frac,eq,refeq,symeq,treq,x0,y0,x1,x1ix0,y1,y1iy0,e):is(x0,y0)
+y1iy0@[i:is(x0,y0)]
+ise:=th5"eq.5"(frac,eq,refeq,symeq,treq,x0,y0,x1,x1ix0,y1,y1iy0,i):eq"n"(x1,y1)
+y1iy0@[n:not(eq"n"(x1,y1))]
+nisi:=th3"l.imp"(is(x0,y0),eq"n"(x1,y1),n,[t:is(x0,y0)]ise(t)):nis(x0,y0)
+y1iy0@[n:nis(x0,y0)]
+nise:=th3"l.imp"(eq"n"(x1,y1),is(x0,y0),n,[t:eq"n"(x1,y1)]isi(t)):not(eq"n"(x1,y1))
+@[alpha:'type'][f:[x:frac][y:frac]alpha]
+fixf:=fixfu2"eq"(frac,eq,refeq,symeq,treq,alpha,f):'prop'
+y0@[alpha:'type'][f:[x:frac][y:frac]alpha][ff:fixf(alpha,f)]
+indrat:=indeq2"eq"(frac,eq,refeq,symeq,treq,alpha,f,ff,x0,y0):alpha
+[x:frac][y:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))]
+isindrat:=th1"eq.11"(frac,eq,refeq,symeq,treq,alpha,f,ff,x0,y0,x,xix0,y,yiy0):is"e"(alpha,<y><x>f,indrat)
+x0@satz78:=refis(rat,x0):is(x0,x0)
+y0@[i:is(x0,y0)]
+satz79:=symis(rat,x0,y0,i):is(y0,x0)
+z0@[i:is(x0,y0)][j:is(y0,z0)]
+satz80:=tris(rat,x0,y0,z0,i,j):is(x0,z0)
+y0@more:=some"l"(frac,[x:frac]some"l"(frac,[y:frac]and3(inf(x,class(x0)),inf(y,class(y0)),moref(x,y)))):'prop'
++*ii5
+y1@propm:=and3(inf(x1,class(x0)),inf(y1,class(y0)),moref(x1,y1)):'prop'
+-ii5
+y0@[m:more(x0,y0)][x:frac][y:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][t:frac][s:some"l"(frac,[u:frac]propm".ii5"(t,u))][u:frac][p:propm".ii5"(t,u)]
++*ii5
+p@t4:=and3e1(inf(t,class(x0)),inf(u,class(y0)),moref(t,u),p):inf(t,class(x0))
+t5:=and3e2(inf(t,class(x0)),inf(u,class(y0)),moref(t,u),p):inf(u,class(y0))
+t6:=and3e3(inf(t,class(x0)),inf(u,class(y0)),moref(t,u),p):moref(t,u)
+t7:=satz44(t,u,x,y,t6,ise(x0,x0,t,x,t4,xix0,refis(rat,x0)),ise(y0,y0,u,y,t5,yiy0,refis(rat,y0))):moref(x,y)
+s@t8:=someapp(frac,[u:frac]propm(t,u),s,moref(x,y),[u:frac][v:propm(t,u)]t7(u,v)):moref(x,y)
+-ii5
+yiy0@also18:=someapp(frac,[t:frac]some"l"(frac,[u:frac]propm".ii5"(t,u)),m,moref(x,y),[t:frac][v:some"l"(frac,[u:frac]propm".ii5"(t,u))]t8".ii5"(t,v)):moref(x,y)
+y1iy0@[m:moref(x1,y1)]
++*ii5
+m@t9:=and3i(inf(x1,class(x0)),inf(y1,class(y0)),moref(x1,y1),x1ix0,y1iy0,m):propm(x1,y1)
+t10:=somei(frac,[t:frac]propm(x1,t),y1,t9):some"l"(frac,[t:frac]propm(x1,t))
+-ii5
+m@morei:=somei(frac,[u:frac]some"l"(frac,[t:frac]propm".ii5"(u,t)),x1,t10".ii5"):more(x0,y0)
+y1iy0@[m:more(x0,y0)]
+moree:=also18(m,x1,y1,x1ix0,y1iy0):moref(x1,y1)
+z0@[i:is(x0,y0)][m:more(x0,z0)]
+ismore1:=isp(rat,[t:rat]more(t,z0),x0,y0,m,i):more(y0,z0)
+i@[m:more(z0,x0)]
+ismore2:=isp(rat,[t:rat]more(z0,t),x0,y0,m,i):more(z0,y0)
+u0@[i:is(x0,y0)][j:is(z0,u0)][m:more(x0,z0)]
+ismore12:=ismore2(z0,u0,y0,j,ismore1(x0,y0,z0,i,m)):more(y0,u0)
+y0@less:=some"l"(frac,[x:frac]some"l"(frac,[y:frac]and3(inf(x,class(x0)),inf(y,class(y0)),lessf(x,y)))):'prop'
++*ii5
+y1@propl:=and3(inf(x1,class(x0)),inf(y1,class(y0)),lessf(x1,y1)):'prop'
+-ii5
+y0@[l:less(x0,y0)][x:frac][y:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][t:frac][s:some"l"(frac,[u:frac]propl".ii5"(t,u))][u:frac][p:propl".ii5"(t,u)]
++*ii5
+p@t11:=and3e1(inf(t,class(x0)),inf(u,class(y0)),lessf(t,u),p):inf(t,class(x0))
+t12:=and3e2(inf(t,class(x0)),inf(u,class(y0)),lessf(t,u),p):inf(u,class(y0))
+t13:=and3e3(inf(t,class(x0)),inf(u,class(y0)),lessf(t,u),p):lessf(t,u)
+t14:=satz45(t,u,x,y,t13,ise(x0,x0,t,x,t11,xix0,refis(rat,x0)),ise(y0,y0,u,y,t12,yiy0,refis(rat,y0))):lessf(x,y)
+s@t15:=someapp(frac,[u:frac]propl(t,u),s,lessf(x,y),[u:frac][v:propl(t,u)]t14(u,v)):lessf(x,y)
+-ii5
+yiy0@also19:=someapp(frac,[t:frac]some"l"(frac,[u:frac]propl".ii5"(t,u)),l,lessf(x,y),[t:frac][v:some"l"(frac,[u:frac]propl".ii5"(t,u))]t15".ii5"(t,v)):lessf(x,y)
+y1iy0@[l:lessf(x1,y1)]
++*ii5
+l@t16:=and3i(inf(x1,class(x0)),inf(y1,class(y0)),lessf(x1,y1),x1ix0,y1iy0,l):propl(x1,y1)
+t17:=somei(frac,[t:frac]propl(x1,t),y1,t16):some"l"(frac,[t:frac]propl(x1,t))
+-ii5
+l@lessi:=somei(frac,[u:frac]some"l"(frac,[t:frac]propl".ii5"(u,t)),x1,t17".ii5"):less(x0,y0)
+y1iy0@[l:less(x0,y0)]
+lesse:=also19(l,x1,y1,x1ix0,y1iy0):lessf(x1,y1)
+z0@[i:is(x0,y0)][l:less(x0,z0)]
+isless1:=isp(rat,[t:rat]less(t,z0),x0,y0,l,i):less(y0,z0)
+i@[l:less(z0,x0)]
+isless2:=isp(rat,[t:rat]less(z0,t),x0,y0,l,i):less(z0,y0)
+u0@[i:is(x0,y0)][j:is(z0,u0)][l:less(x0,z0)]
+isless12:=isless2(z0,u0,y0,j,isless1(x0,y0,z0,i,l)):less(y0,u0)
++581
+y1iy0@t1:=satz41a(x1,y1):or3(eq"n"(x1,y1),moref(x1,y1),lessf(x1,y1))
+[e:eq"n"(x1,y1)]
+t2:=or3i1(is(x0,y0),more(x0,y0),less(x0,y0),isi(e)):or3(is(x0,y0),more(x0,y0),less(x0,y0))
+y1iy0@[m:moref(x1,y1)]
+t3:=or3i2(is(x0,y0),more(x0,y0),less(x0,y0),morei(m)):or3(is(x0,y0),more(x0,y0),less(x0,y0))
+y1iy0@[l:lessf(x1,y1)]
+t4:=or3i3(is(x0,y0),more(x0,y0),less(x0,y0),lessi(l)):or3(is(x0,y0),more(x0,y0),less(x0,y0))
+y1iy0@t5:=or3app(eq"n"(x1,y1),moref(x1,y1),lessf(x1,y1),or3(is(x0,y0),more(x0,y0),less(x0,y0)),t1,[t:eq"n"(x1,y1)]t2(t),[t:moref(x1,y1)]t3(t),[t:lessf(x1,y1)]t4(t)):or3(is(x0,y0),more(x0,y0),less(x0,y0))
+t6:=satz41b(x1,y1):ec3(eq"n"(x1,y1),moref(x1,y1),lessf(x1,y1))
+[i:is(x0,y0)]
+t7:=th3"l.imp"(more(x0,y0),moref(x1,y1),ec3e12(eq"n"(x1,y1),moref(x1,y1),lessf(x1,y1),t6,ise(i)),[t:more(x0,y0)]moree(t)):not(more(x0,y0))
+y1iy0@[m:more(x0,y0)]
+t8:=th3"l.imp"(less(x0,y0),lessf(x1,y1),ec3e23(eq"n"(x1,y1),moref(x1,y1),lessf(x1,y1),t6,moree(m)),[t:less(x0,y0)]lesse(t)):not(less(x0,y0))
+y1iy0@[l:less(x0,y0)]
+t9:=th3"l.imp"(is(x0,y0),eq"n"(x1,y1),ec3e31(eq"n"(x1,y1),moref(x1,y1),lessf(x1,y1),t6,lesse(l)),[t:is(x0,y0)]ise(t)):nis(x0,y0)
+y1iy0@t10:=th6"l.ec3"(is(x0,y0),more(x0,y0),less(x0,y0),th1"l.ec"(is(x0,y0),more(x0,y0),[t:is(x0,y0)]t7(t)),th1"l.ec"(more(x0,y0),less(x0,y0),[t:more(x0,y0)]t8(t)),th1"l.ec"(less(x0,y0),is(x0,y0),[t:less(x0,y0)]t9(t))):ec3(is(x0,y0),more(x0,y0),less(x0,y0))
+t11:=orec3i(is(x0,y0),more(x0,y0),less(x0,y0),t5,t10):orec3(is(x0,y0),more(x0,y0),less(x0,y0))
+-581
+y0@satz81:=ratapp2(orec3(is(x0,y0),more(x0,y0),less(x0,y0)),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t11".581"(x,y,xi,yi)):orec3(is(x0,y0),more(x0,y0),less(x0,y0))
+satz81a:=orec3e1(is(x0,y0),more(x0,y0),less(x0,y0),satz81):or3(is(x0,y0),more(x0,y0),less(x0,y0))
+satz81b:=orec3e2(is(x0,y0),more(x0,y0),less(x0,y0),satz81):ec3(is(x0,y0),more(x0,y0),less(x0,y0))
+[m:more(x0,y0)]
++582
+[x:frac][y:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))]
+t1:=lessi(y0,x0,y,x,yiy0,xix0,satz42(x,y,moree(x0,y0,x,y,xix0,yiy0,m))):less(y0,x0)
+-582
+satz82:=ratapp2(less(y0,x0),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t1".582"(x,y,xi,yi)):less(y0,x0)
+y0@[l:less(x0,y0)]
++583
+[x:frac][y:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))]
+t1:=morei(y0,x0,y,x,yiy0,xix0,satz43(x,y,lesse(x0,y0,x,y,xix0,yiy0,l))):more(y0,x0)
+-583
+satz83:=ratapp2(more(y0,x0),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t1".583"(x,y,xi,yi)):more(y0,x0)
+y0@moreis:=or(more(x0,y0),is(x0,y0)):'prop'
+[m:more(x0,y0)]
+moreisi1:=ori1(more,is,m):moreis(x0,y0)
+y0@[i:is(x0,y0)]
+moreisi2:=ori2(more,is,i):moreis(x0,y0)
+y1iy0@[m:moreq(x1,y1)]
+moreisi:=orapp(moref(x1,y1),eq"n"(x1,y1),moreis,m,[t:moref(x1,y1)]moreisi1(morei(t)),[t:eq"n"(x1,y1)]moreisi2(isi(t))):moreis(x0,y0)
+y1iy0@[m:moreis(x0,y0)]
+moreise:=orapp(more,is,moreq(x1,y1),m,[t:more]moreqi1(x1,y1,moree(t)),[t:is]moreqi2(x1,y1,ise(t))):moreq(x1,y1)
+z0@[i:is(x0,y0)][m:moreis(x0,z0)]
+ismoreis1:=isp(rat,[t:rat]moreis(t,z0),x0,y0,m,i):moreis(y0,z0)
+i@[m:moreis(z0,x0)]
+ismoreis2:=isp(rat,[t:rat]moreis(z0,t),x0,y0,m,i):moreis(z0,y0)
+u0@[i:is(x0,y0)][j:is(z0,u0)][m:moreis(x0,z0)]
+ismoreis12:=ismoreis2(z0,u0,y0,j,ismoreis1(x0,y0,z0,i,m)):moreis(y0,u0)
+y0@lessis:=or(less(x0,y0),is(x0,y0)):'prop'
+[l:less(x0,y0)]
+lessisi1:=ori1(less,is,l):lessis(x0,y0)
+y0@[i:is(x0,y0)]
+lessisi2:=ori2(less,is,i):lessis(x0,y0)
+y1iy0@[l:lesseq(x1,y1)]
+lessisi:=orapp(lessf(x1,y1),eq"n"(x1,y1),lessis,l,[t:lessf(x1,y1)]lessisi1(lessi(t)),[t:eq"n"(x1,y1)]lessisi2(isi(t))):lessis(x0,y0)
+y1iy0@[l:lessis(x0,y0)]
+lessise:=orapp(less,is,lesseq(x1,y1),l,[t:less]lesseqi1(x1,y1,lesse(t)),[t:is]lesseqi2(x1,y1,ise(t))):lesseq(x1,y1)
+z0@[i:is(x0,y0)][l:lessis(x0,z0)]
+islessis1:=isp(rat,[t:rat]lessis(t,z0),x0,y0,l,i):lessis(y0,z0)
+i@[l:lessis(z0,x0)]
+islessis2:=isp(rat,[t:rat]lessis(z0,t),x0,y0,l,i):lessis(z0,y0)
+u0@[i:is(x0,y0)][j:is(z0,u0)][l:lessis(x0,z0)]
+islessis12:=islessis2(z0,u0,y0,j,islessis1(x0,y0,z0,i,l)):lessis(y0,u0)
+y0@[m:moreis(x0,y0)]
+satz81c:=th7"l.ec3"(is(x0,y0),more(x0,y0),less(x0,y0),satz81b,comor(more(x0,y0),is(x0,y0),m)):not(less(x0,y0))
+y0@[l:lessis(x0,y0)]
+satz81d:=th9"l.ec3"(is(x0,y0),more(x0,y0),less(x0,y0),satz81b,l):not(more(x0,y0))
+y0@[n:not(more(x0,y0))]
+satz81e:=th2"l.or3"(is(x0,y0),more(x0,y0),less(x0,y0),satz81a,n):lessis(x0,y0)
+y0@[n:not(less(x0,y0))]
+satz81f:=comor(is(x0,y0),more(x0,y0),th3"l.or3"(is(x0,y0),more(x0,y0),less(x0,y0),satz81a,n)):moreis(x0,y0)
+y0@[m:more(x0,y0)]
+satz81g:=th3"l.or"(less(x0,y0),is(x0,y0),ec3e23(is(x0,y0),more(x0,y0),less(x0,y0),satz81b,m),ec3e21(is(x0,y0),more(x0,y0),less(x0,y0),satz81b,m)):not(lessis(x0,y0))
+y0@[l:less(x0,y0)]
+satz81h:=th3"l.or"(more(x0,y0),is(x0,y0),ec3e32(is(x0,y0),more(x0,y0),less(x0,y0),satz81b,l),ec3e31(is(x0,y0),more(x0,y0),less(x0,y0),satz81b,l)):not(moreis(x0,y0))
+y0@[n:not(moreis(x0,y0))]
+satz81j:=or3e3(is(x0,y0),more(x0,y0),less(x0,y0),satz81a,th5"l.or"(more(x0,y0),is(x0,y0),n),th4"l.or"(more(x0,y0),is(x0,y0),n)):less(x0,y0)
+y0@[n:not(lessis(x0,y0))]
+satz81k:=or3e2(is(x0,y0),more(x0,y0),less(x0,y0),satz81a,th4"l.or"(less(x0,y0),is(x0,y0),n),th5"l.or"(less(x0,y0),is(x0,y0),n)):more(x0,y0)
+y0@[m:moreis(x0,y0)]
++584
+[x:frac][y:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))]
+t1:=lessisi(y0,x0,y,x,yiy0,xix0,satz48(x,y,moreise(x0,y0,x,y,xix0,yiy0,m))):lessis(y0,x0)
+-584
+satz84:=ratapp2(lessis(y0,x0),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t1".584"(x,y,xi,yi)):lessis(y0,x0)
+y0@[l:lessis(x0,y0)]
++585
+[x:frac][y:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))]
+t1:=moreisi(y0,x0,y,x,yiy0,xix0,satz49(x,y,lessise(x0,y0,x,y,xix0,yiy0,l))):moreis(y0,x0)
+-585
+satz85:=ratapp2(moreis(y0,x0),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t1".585"(x,y,xi,yi)):moreis(y0,x0)
+z0@[l:less(x0,y0)][k:less(y0,z0)]
++586
+[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t1:=lessi(x0,z0,x,z,xix0,ziz0,satz50(x,y,z,lesse(x0,y0,x,y,xix0,yiy0,l),lesse(y0,z0,y,z,yiy0,ziz0,k))):less(x0,z0)
+-586
+satz86:=ratapp3(less(x0,z0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t1".586"(x,y,z,xi,yi,zi)):less(x0,z0)
+trless:=satz86:less(x0,z0)
+z0@[m:more(x0,y0)][n:more(y0,z0)]
+trmore:=satz83(z0,x0,satz86(z0,y0,x0,satz82(y0,z0,n),satz82(m))):more(x0,z0)
+z0@[l:lessis(x0,y0)][k:less(y0,z0)]
++587
+[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t1:=lessi(x0,z0,x,z,xix0,ziz0,satz51a(x,y,z,lessise(x0,y0,x,y,xix0,yiy0,l),lesse(y0,z0,y,z,yiy0,ziz0,k))):less(x0,z0)
+-587
+satz87a:=ratapp3(less(x0,z0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t1".587"(x,y,z,xi,yi,zi)):less(x0,z0)
+z0@[l:less(x0,y0)][k:lessis(y0,z0)]
++*587
+k@[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t2:=lessi(x0,z0,x,z,xix0,ziz0,satz51b(x,y,z,lesse(x0,y0,x,y,xix0,yiy0,l),lessise(y0,z0,y,z,yiy0,ziz0,k))):less(x0,z0)
+-587
+k@satz87b:=ratapp3(less(x0,z0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t2".587"(x,y,z,xi,yi,zi)):less(x0,z0)
+z0@[m:moreis(x0,y0)][n:more(y0,z0)]
+satz87c:=satz83(z0,x0,satz87b(z0,y0,x0,satz82(y0,z0,n),satz84(m))):more(x0,z0)
+z0@[m:more(x0,y0)][n:moreis(y0,z0)]
+satz87d:=satz83(z0,x0,satz87a(z0,y0,x0,satz84(y0,z0,n),satz82(m))):more(x0,z0)
+z0@[l:lessis(x0,y0)][k:lessis(y0,z0)]
++588
+[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t1:=lessisi(x0,z0,x,z,xix0,ziz0,satz52(x,y,z,lessise(x0,y0,x,y,xix0,yiy0,l),lessise(y0,z0,y,z,yiy0,ziz0,k))):lessis(x0,z0)
+-588
+satz88:=ratapp3(lessis(x0,z0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t1".588"(x,y,z,xi,yi,zi)):lessis(x0,z0)
+trlessis:=satz88:lessis(x0,z0)
+z0@[m:moreis(x0,y0)][n:moreis(y0,z0)]
+trmoreis:=satz85(z0,x0,satz88(z0,y0,x0,satz84(y0,z0,n),satz84(m))):moreis(x0,z0)
++589
+x0@[x:frac][xix0:inf(x,class(x0))][z:frac][m:moref(z,x)]
+t1:=somei(rat,[t:rat]more(t,x0),ratof(z),morei(ratof(z),x0,z,x,inclass(z),xix0,m)):some([t:rat]more(t,x0))
+xix0@t2:=someapp(frac,[t:frac]moref(t,x),satz53(x),some([t:rat]more(t,x0)),[t:frac][u:moref(t,x)]t1(t,u)):some([t:rat]more(t,x0))
+-589
+x0@satz89:=ratapp1(some([t:rat]more(t,x0)),[x:frac][xi:inf(x,class(x0))]t2".589"(x,xi)):some([t:rat]more(t,x0))
++590
+z"rt.589"@[l:lessf(z,x)]
+t1:=somei(rat,[t:rat]less(t,x0),ratof(z),lessi(ratof(z),x0,z,x,inclass(z),xix0,l)):some([t:rat]less(t,x0))
+xix0"rt.589"@t2:=someapp(frac,[t:frac]lessf(t,x),satz54(x),some([t:rat]less(t,x0)),[t:frac][u:lessf(t,x)]t1(t,u)):some([t:rat]less(t,x0))
+-590
+satz90:=ratapp1(some([t:rat]less(t,x0)),[x:frac][xi:inf(x,class(x0))]t2".590"(x,xi)):some([t:rat]less(t,x0))
+y0@[l:less(x0,y0)]
++591
+[x:frac][y:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][z:frac][a:and(lessf(x,z),lessf(z,y))]
+t1:=lessi(x0,ratof(z),x,z,xix0,inclass(z),ande1(lessf(x,z),lessf(z,y),a)):less(x0,ratof(z))
+t2:=lessi(ratof(z),y0,z,y,inclass(z),yiy0,ande2(lessf(x,z),lessf(z,y),a)):less(ratof(z),y0)
+t3:=andi(less(x0,ratof(z)),less(ratof(z),y0),t1,t2):and(less(x0,ratof(z)),less(ratof(z),y0))
+t4:=somei(rat,[t:rat]and(less(x0,t),less(t,y0)),ratof(z),t3):some([t:rat]and(less(x0,t),less(t,y0)))
+yiy0@t5:=someapp(frac,[t:frac]and(lessf(x,t),lessf(t,y)),satz55(x,y,lesse(x,y,xix0,yiy0,l)),some([t:rat]and(less(x0,t),less(t,y0))),[t:frac][u:and(lessf(x,t),lessf(t,y))]t4(t,u)):some([t:rat]and(less(x0,t),less(t,y0)))
+-591
+satz91:=ratapp2(some([t:rat]and(less(x0,t),less(t,y0))),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t5".591"(x,y,xi,yi)):some([t:rat]and(less(x0,t),less(t,y0)))
+@plusfrt:=[x:frac][y:frac]ratof(pf(x,y)):[x:frac][y:frac]rat
+[x:frac][y:frac][z:frac][u:frac][e:eq"n"(x,y)][f:eq"n"(z,u)]
++*ii5
+f@t18:=isi(ratof(pf(x,z)),ratof(pf(y,u)),pf(x,z),pf(y,u),inclass(pf(x,z)),inclass(pf(y,u)),satz56(x,y,z,u,e,f)):is(<z><x>plusfrt,<u><y>plusfrt)
+-ii5
+@fplusfrt:=[x:frac][y:frac][z:frac][u:frac][v:<y><x>eq][w:<u><z>eq]t18".ii5"(x,y,z,u,v,w):fixf(rat,plusfrt)
+y0@pl:=indrat(rat,plusfrt,fplusfrt):rat
++*ii5
+y1iy0@t19:=isindrat(rat,plusfrt,fplusfrt,x1,y1,x1ix0,y1iy0):is(ratof(pf(x1,y1)),pl(x0,y0))
+-ii5
+y1iy0@picp:=isp(rat,[t:rat]inf(pf(x1,y1),class(t)),ratof(pf(x1,y1)),pl(x0,y0),inclass(pf(x1,y1)),t19".ii5"):inf(pf(x1,y1),class(pl(x0,y0)))
+z0@[i:is(x0,y0)]
+ispl1:=isf(rat,rat,[t:rat]pl(t,z0),x0,y0,i):is(pl(x0,z0),pl(y0,z0))
+ispl2:=isf(rat,rat,[t:rat]pl(z0,t),x0,y0,i):is(pl(z0,x0),pl(z0,y0))
+u0@[i:is(x0,y0)][j:is(z0,u0)]
+ispl12:=tris(rat,pl(x0,z0),pl(y0,z0),pl(y0,u0),ispl1(i),ispl2(z0,u0,y0,j)):is(pl(x0,z0),pl(y0,u0))
++592
+y1iy0@t1:=isi(pl(x0,y0),pl(y0,x0),pf(x1,y1),pf(y1,x1),picp,picp(y0,x0,y1,x1,y1iy0,x1ix0),satz58(x1,y1)):is(pl(x0,y0),pl(y0,x0))
+-592
+y0@satz92:=ratapp2(is(pl(x0,y0),pl(y0,x0)),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t1".592"(x,y,xi,yi)):is(pl(x0,y0),pl(y0,x0))
+compl:=satz92:is(pl(x0,y0),pl(y0,x0))
++593
+z0@[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t1:=picp(pl(x0,y0),z0,pf(x,y),z,picp(x0,y0,x,y,xix0,yiy0),ziz0):inf(pf(pf(x,y),z),class(pl(pl(x0,y0),z0)))
+t2:=picp(x0,pl(y0,z0),x,pf(y,z),xix0,picp(y0,z0,y,z,yiy0,ziz0)):inf(pf(x,pf(y,z)),class(pl(x0,pl(y0,z0))))
+t3:=isi(pl(pl(x0,y0),z0),pl(x0,pl(y0,z0)),pf(pf(x,y),z),pf(x,pf(y,z)),t1,t2,satz59(x,y,z)):is(pl(pl(x0,y0),z0),pl(x0,pl(y0,z0)))
+-593
+z0@satz93:=ratapp3(is(pl(pl(x0,y0),z0),pl(x0,pl(y0,z0))),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t3".593"(x,y,z,xi,yi,zi)):is(pl(pl(x0,y0),z0),pl(x0,pl(y0,z0)))
+asspl1:=satz93:is(pl(pl(x0,y0),z0),pl(x0,pl(y0,z0)))
+asspl2:=symis(rat,pl(pl(x0,y0),z0),pl(x0,pl(y0,z0)),satz93):is(pl(x0,pl(y0,z0)),pl(pl(x0,y0),z0))
++594
+y1iy0@t1:=morei(pl(x0,y0),x0,pf(x1,y1),x1,picp,x1ix0,satz60(x1,y1)):more(pl(x0,y0),x0)
+-594
+y0@satz94:=ratapp2(more(pl(x0,y0),x0),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t1".594"(x,y,xi,yi)):more(pl(x0,y0),x0)
+satz94a:=satz82(pl(x0,y0),x0,satz94):less(x0,pl(x0,y0))
+z0@[m:more(x0,y0)]
++595
+[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t1:=morei(pl(x0,z0),pl(y0,z0),pf(x,z),pf(y,z),picp(x0,z0,x,z,xix0,ziz0),picp(y0,z0,y,z,yiy0,ziz0),satz61(x,y,z,moree(x0,y0,x,y,xix0,yiy0,m))):more(pl(x0,z0),pl(y0,z0))
+-595
+satz95:=ratapp3(more(pl(x0,z0),pl(y0,z0)),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t1".595"(x,y,z,xi,yi,zi)):more(pl(x0,z0),pl(y0,z0))
+z0@[m:more(x0,y0)]
++596
+[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t1:=morei(pl(x0,z0),pl(y0,z0),pf(x,z),pf(y,z),picp(x0,z0,x,z,xix0,ziz0),picp(y0,z0,y,z,yiy0,ziz0),satz62a(x,y,z,moree(x0,y0,x,y,xix0,yiy0,m))):more(pl(x0,z0),pl(y0,z0))
+-596
+satz96a:=ratapp3(more(pl(x0,z0),pl(y0,z0)),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t1".596"(x,y,z,xi,yi,zi)):more(pl(x0,z0),pl(y0,z0))
+z0@[i:is(x0,y0)]
++*596
+i@[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t2:=isi(pl(x0,z0),pl(y0,z0),pf(x,z),pf(y,z),picp(x0,z0,x,z,xix0,ziz0),picp(y0,z0,y,z,yiy0,ziz0),satz62b(x,y,z,ise(x0,y0,x,y,xix0,yiy0,i))):is(pl(x0,z0),pl(y0,z0))
+-596
+i@satz96b:=ratapp3(is(pl(x0,z0),pl(y0,z0)),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t2".596"(x,y,z,xi,yi,zi)):is(pl(x0,z0),pl(y0,z0))
+z0@[l:less(x0,y0)]
++*596
+l@[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t3:=lessi(pl(x0,z0),pl(y0,z0),pf(x,z),pf(y,z),picp(x0,z0,x,z,xix0,ziz0),picp(y0,z0,y,z,yiy0,ziz0),satz62c(x,y,z,lesse(x0,y0,x,y,xix0,yiy0,l))):less(pl(x0,z0),pl(y0,z0))
+-596
+l@satz96c:=ratapp3(less(pl(x0,z0),pl(y0,z0)),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t3".596"(x,y,z,xi,yi,zi)):less(pl(x0,z0),pl(y0,z0))
++*596
+m@andersa:=satz95(m):more(pl(x0,z0),pl(y0,z0))
+i@andersb:=ispl1(x0,y0,z0,i):is(pl(x0,z0),pl(y0,z0))
+l@andersc:=satz82(pl(y0,z0),pl(x0,z0),satz95(y0,x0,z0,satz83(l))):less(pl(x0,z0),pl(y0,z0))
+-596
+m@satz96d:=ismore12(pl(x0,z0),pl(z0,x0),pl(y0,z0),pl(z0,y0),compl(x0,z0),compl(y0,z0),satz96a):more(pl(z0,x0),pl(z0,y0))
+i@satz96e:=ispl2(x0,y0,z0,i):is(pl(z0,x0),pl(z0,y0))
+l@satz96f:=isless12(pl(x0,z0),pl(z0,x0),pl(y0,z0),pl(z0,y0),compl(x0,z0),compl(y0,z0),satz96c):less(pl(z0,x0),pl(z0,y0))
+z0@[m:more(pl(x0,z0),pl(y0,z0))]
++597
+[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t1:=morei(x0,y0,x,y,xix0,yiy0,satz63a(x,y,z,moree(pl(x0,z0),pl(y0,z0),pf(x,z),pf(y,z),picp(x0,z0,x,z,xix0,ziz0),picp(y0,z0,y,z,yiy0,ziz0),m))):more(x0,y0)
+-597
+satz97a:=ratapp3(more(x0,y0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t1".597"(x,y,z,xi,yi,zi)):more(x0,y0)
+z0@[i:is(pl(x0,z0),pl(y0,z0))]
++*597
+i@[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t2:=isi(x0,y0,x,y,xix0,yiy0,satz63b(x,y,z,ise(pl(x0,z0),pl(y0,z0),pf(x,z),pf(y,z),picp(x0,z0,x,z,xix0,ziz0),picp(y0,z0,y,z,yiy0,ziz0),i))):is(x0,y0)
+-597
+i@satz97b:=ratapp3(is(x0,y0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t2".597"(x,y,z,xi,yi,zi)):is(x0,y0)
+z0@[l:less(pl(x0,z0),pl(y0,z0))]
++*597
+l@[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t3:=lessi(x0,y0,x,y,xix0,yiy0,satz63c(x,y,z,lesse(pl(x0,z0),pl(y0,z0),pf(x,z),pf(y,z),picp(x0,z0,x,z,xix0,ziz0),picp(y0,z0,y,z,yiy0,ziz0),l))):less(x0,y0)
+-597
+l@satz97c:=ratapp3(less(x0,y0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t3".597"(x,y,z,xi,yi,zi)):less(x0,y0)
++*597
+l@anders:=satz82(y0,x0,satz97a(y0,x0,z0,satz83(pl(x0,z0),pl(y0,z0),l))):less(x0,y0)
+-597
+u0@[m:more(x0,y0)][n:more(z0,u0)]
++598
+[x:frac][y:frac][z:frac][u:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))][uiu0:inf(u,class(u0))]
+t1:=morei(pl(x0,z0),pl(y0,u0),pf(x,z),pf(y,u),picp(x0,z0,x,z,xix0,ziz0),picp(y0,u0,y,u,yiy0,uiu0),satz64(x,y,z,u,moree(x0,y0,x,y,xix0,yiy0,m),moree(z0,u0,z,u,ziz0,uiu0,n))):more(pl(x0,z0),pl(y0,u0))
+-598
+satz98:=ratapp4(more(pl(x0,z0),pl(y0,u0)),[x:frac][y:frac][z:frac][u:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]t1".598"(x,y,z,u,xi,yi,zi,ui)):more(pl(x0,z0),pl(y0,u0))
+u0@[l:less(x0,y0)][k:less(z0,u0)]
+satz98a:=satz82(pl(y0,u0),pl(x0,z0),satz98(y0,x0,u0,z0,satz83(l),satz83(z0,u0,k))):less(pl(x0,z0),pl(y0,u0))
+u0@[m:moreis(x0,y0)][n:more(z0,u0)]
++599
+[x:frac][y:frac][z:frac][u:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))][uiu0:inf(u,class(u0))]
+t1:=morei(pl(x0,z0),pl(y0,u0),pf(x,z),pf(y,u),picp(x0,z0,x,z,xix0,ziz0),picp(y0,u0,y,u,yiy0,uiu0),satz65a(x,y,z,u,moreise(x0,y0,x,y,xix0,yiy0,m),moree(z0,u0,z,u,ziz0,uiu0,n))):more(pl(x0,z0),pl(y0,u0))
+-599
+satz99a:=ratapp4(more(pl(x0,z0),pl(y0,u0)),[x:frac][y:frac][z:frac][u:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]t1".599"(x,y,z,u,xi,yi,zi,ui)):more(pl(x0,z0),pl(y0,u0))
+u0@[m:more(x0,y0)][n:moreis(z0,u0)]
++*599
+n@[x:frac][y:frac][z:frac][u:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))][uiu0:inf(u,class(u0))]
+t2:=morei(pl(x0,z0),pl(y0,u0),pf(x,z),pf(y,u),picp(x0,z0,x,z,xix0,ziz0),picp(y0,u0,y,u,yiy0,uiu0),satz65b(x,y,z,u,moree(x0,y0,x,y,xix0,yiy0,m),moreise(z0,u0,z,u,ziz0,uiu0,n))):more(pl(x0,z0),pl(y0,u0))
+-599
+n@satz99b:=ratapp4(more(pl(x0,z0),pl(y0,u0)),[x:frac][y:frac][z:frac][u:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]t2".599"(x,y,z,u,xi,yi,zi,ui)):more(pl(x0,z0),pl(y0,u0))
+u0@[l:lessis(x0,y0)][k:less(z0,u0)]
+satz99c:=satz82(pl(y0,u0),pl(x0,z0),satz99a(y0,x0,u0,z0,satz85(l),satz83(z0,u0,k))):less(pl(x0,z0),pl(y0,u0))
+u0@[l:less(x0,y0)][k:lessis(z0,u0)]
+satz99d:=satz82(pl(y0,u0),pl(x0,z0),satz99b(y0,x0,u0,z0,satz83(l),satz85(z0,u0,k))):less(pl(x0,z0),pl(y0,u0))
+u0@[m:moreis(x0,y0)][n:moreis(z0,u0)]
++5100
+[x:frac][y:frac][z:frac][u:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))][uiu0:inf(u,class(u0))]
+t1:=moreisi(pl(x0,z0),pl(y0,u0),pf(x,z),pf(y,u),picp(x0,z0,x,z,xix0,ziz0),picp(y0,u0,y,u,yiy0,uiu0),satz66(x,y,z,u,moreise(x0,y0,x,y,xix0,yiy0,m),moreise(z0,u0,z,u,ziz0,uiu0,n))):moreis(pl(x0,z0),pl(y0,u0))
+-5100
+satz100:=ratapp4(moreis(pl(x0,z0),pl(y0,u0)),[x:frac][y:frac][z:frac][u:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]t1".5100"(x,y,z,u,xi,yi,zi,ui)):moreis(pl(x0,z0),pl(y0,u0))
+u0@[l:lessis(x0,y0)][k:lessis(z0,u0)]
+satz100a:=satz84(pl(y0,u0),pl(x0,z0),satz100(y0,x0,u0,z0,satz85(l),satz85(z0,u0,k))):lessis(pl(x0,z0),pl(y0,u0))
+y0@[l:lessis(x0,y0)]
++5101
+[v0:rat][i:is(pl(y0,v0),x0)]
+t1:=ismore1(pl(y0,v0),x0,y0,i,satz94(y0,v0)):more(x0,y0)
+v0@t2:=th3"l.imp"(is(pl(y0,v0),x0),more(x0,y0),satz81d(x0,y0,l),[t:is(pl(y0,v0),x0)]t1(t)):nis(pl(y0,v0),x0)
+-5101
+vorbemerkung101:=th5"l.some"(rat,[v:rat]is(pl(y0,v),x0),[v:rat]t2".5101"(v)):not(some([t:rat]is(pl(y0,t),x0)))
+y0@[m:more(x0,y0)]
++*5101
+m@[x:frac][y:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][v:frac][e:eq"n"(pf(y,v),x)]
+t3:=isi(pl(y0,ratof(v)),x0,pf(y,v),x,picp(y0,ratof(v),y,v,yiy0,inclass(v)),xix0,e):is(pl(y0,ratof(v)),x0)
+t4:=somei(rat,[t:rat]is(pl(y0,t),x0),ratof(v),t3):some([t:rat]is(pl(y0,t),x0))
+yiy0@t5:=someapp(frac,[t:frac]eq"n"(pf(y,t),x),satz67a(x,y,moree(x0,y0,x,y,xix0,yiy0,m)),some([t:rat]is(pl(y0,t),x0)),[t:frac][u:eq"n"(pf(y,t),x)]t4(t,u)):some([t:rat]is(pl(y0,t),x0))
+-5101
+m@satz101a:=ratapp2(some([t:rat]is(pl(y0,t),x0)),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t5".5101"(x,y,xi,yi)):some([t:rat]is(pl(y0,t),x0))
+y0@[v0:rat][w0:rat][i:is(pl(y0,v0),x0)][j:is(pl(y0,w0),x0)]
++*5101
+j@[x:frac][y:frac][v:frac][w:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][viv0:inf(v,class(v0))][wiw0:inf(w,class(w0))]
+t6:=isi(v0,w0,v,w,viv0,wiw0,satz67b(x,y,v,w,ise(pl(y0,v0),x0,pf(y,v),x,picp(y0,v0,y,v,yiy0,viv0),xix0,i),ise(pl(y0,w0),x0,pf(y,w),x,picp(y0,w0,y,w,yiy0,wiw0),xix0,j))):is(v0,w0)
+-5101
+j@satz101b:=ratapp4(v0,w0,is(v0,w0),[x:frac][y:frac][v:frac][w:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][vi:inf(v,class(v0))][wi:inf(w,class(w0))]t6".5101"(x,y,v,w,xi,yi,vi,wi)):is(v0,w0)
++*5101
+y0@t7:=[t:rat][u:rat][v:is(pl(y0,t),x0)][w:is(pl(y0,u),x0)]satz101b(t,u,v,w):amone(rat,[t:rat]is(pl(y0,t),x0))
+-5101
+m@satz101:=onei(rat,[t:rat]is(pl(y0,t),x0),t7".5101",satz101a):one([t:rat]is(pl(y0,t),x0))
+mn:=ind(rat,[t:rat]is(pl(y0,t),x0),satz101):rat
+satz101c:=oneax(rat,[t:rat]is(pl(y0,t),x0),satz101):is(pl(y0,mn(x0,y0,m)),x0)
+satz101d:=symis(rat,pl(y0,mn(x0,y0,m)),x0,satz101c):is(x0,pl(y0,mn(x0,y0,m)))
+satz101e:=tris(rat,pl(mn(x0,y0,m),y0),pl(y0,mn(x0,y0,m)),x0,compl(mn(x0,y0,m),y0),satz101c):is(pl(mn(x0,y0,m),y0),x0)
+satz101f:=symis(rat,pl(mn(x0,y0,m),y0),x0,satz101e):is(x0,pl(mn(x0,y0,m),y0))
+y0@[v0:rat][m:more(x0,y0)][i:is(pl(y0,v0),x0)]
+satz101g:=satz101b(v0,mn(x0,y0,m),i,satz101c(m)):is(v0,mn(x0,y0,m))
+@timesfrt:=[x:frac][y:frac]ratof(tf(x,y)):[x:frac][y:frac]rat
++*ii5
+f@t20:=isi(ratof(tf(x,z)),ratof(tf(y,u)),tf(x,z),tf(y,u),inclass(tf(x,z)),inclass(tf(y,u)),satz68(x,y,z,u,e,f)):is(<z><x>timesfrt,<u><y>timesfrt)
+-ii5
+@ftimesfrt:=[x:frac][y:frac][z:frac][u:frac][v:<y><x>eq][w:<u><z>eq]t20".ii5"(x,y,z,u,v,w):fixf(rat,timesfrt)
+y0@ts:=indrat(rat,timesfrt,ftimesfrt):rat
++*ii5
+y1iy0@t21:=isindrat(rat,timesfrt,ftimesfrt,x1,y1,x1ix0,y1iy0):is(ratof(tf(x1,y1)),ts(x0,y0))
+-ii5
+y1iy0@tict:=isp(rat,[t:rat]inf(tf(x1,y1),class(t)),ratof(tf(x1,y1)),ts(x0,y0),inclass(tf(x1,y1)),t21".ii5"):inf(tf(x1,y1),class(ts(x0,y0)))
+z0@[i:is(x0,y0)]
+ists1:=isf(rat,rat,[t:rat]ts(t,z0),x0,y0,i):is(ts(x0,z0),ts(y0,z0))
+ists2:=isf(rat,rat,[t:rat]ts(z0,t),x0,y0,i):is(ts(z0,x0),ts(z0,y0))
+u0@[i:is(x0,y0)][j:is(z0,u0)]
+ists12:=tris(rat,ts(x0,z0),ts(y0,z0),ts(y0,u0),ists1(i),ists2(z0,u0,y0,j)):is(ts(x0,z0),ts(y0,u0))
++5102
+y1iy0@t1:=isi(ts(x0,y0),ts(y0,x0),tf(x1,y1),tf(y1,x1),tict,tict(y0,x0,y1,x1,y1iy0,x1ix0),satz69(x1,y1)):is(ts(x0,y0),ts(y0,x0))
+-5102
+y0@satz102:=ratapp2(is(ts(x0,y0),ts(y0,x0)),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t1".5102"(x,y,xi,yi)):is(ts(x0,y0),ts(y0,x0))
+comts:=satz102:is(ts(x0,y0),ts(y0,x0))
++5103
+ziz0"rt.593"@t1:=tict(ts(x0,y0),z0,tf(x,y),z,tict(x0,y0,x,y,xix0,yiy0),ziz0):inf(tf(tf(x,y),z),class(ts(ts(x0,y0),z0)))
+t2:=tict(x0,ts(y0,z0),x,tf(y,z),xix0,tict(y0,z0,y,z,yiy0,ziz0)):inf(tf(x,tf(y,z)),class(ts(x0,ts(y0,z0))))
+t3:=isi(ts(ts(x0,y0),z0),ts(x0,ts(y0,z0)),tf(tf(x,y),z),tf(x,tf(y,z)),t1,t2,satz70(x,y,z)):is(ts(ts(x0,y0),z0),ts(x0,ts(y0,z0)))
+-5103
+z0@satz103:=ratapp3(is(ts(ts(x0,y0),z0),ts(x0,ts(y0,z0))),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t3".5103"(x,y,z,xi,yi,zi)):is(ts(ts(x0,y0),z0),ts(x0,ts(y0,z0)))
+assts1:=satz103:is(ts(ts(x0,y0),z0),ts(x0,ts(y0,z0)))
+assts2:=symis(rat,ts(ts(x0,y0),z0),ts(x0,ts(y0,z0)),satz103):is(ts(x0,ts(y0,z0)),ts(ts(x0,y0),z0))
++5104
+ziz0"rt.593"@t1:=tict(x0,pl(y0,z0),x,pf(y,z),xix0,picp(y0,z0,y,z,yiy0,ziz0)):inf(tf(x,pf(y,z)),class(ts(x0,pl(y0,z0))))
+t2:=picp(ts(x0,y0),ts(x0,z0),tf(x,y),tf(x,z),tict(x0,y0,x,y,xix0,yiy0),tict(x0,z0,x,z,xix0,ziz0)):inf(pf(tf(x,y),tf(x,z)),class(pl(ts(x0,y0),ts(x0,z0))))
+t3:=isi(ts(x0,pl(y0,z0)),pl(ts(x0,y0),ts(x0,z0)),tf(x,pf(y,z)),pf(tf(x,y),tf(x,z)),t1,t2,satz71(x,y,z)):is(ts(x0,pl(y0,z0)),pl(ts(x0,y0),ts(x0,z0)))
+-5104
+satz104:=ratapp3(is(ts(x0,pl(y0,z0)),pl(ts(x0,y0),ts(x0,z0))),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t3".5104"(x,y,z,xi,yi,zi)):is(ts(x0,pl(y0,z0)),pl(ts(x0,y0),ts(x0,z0)))
+disttp1:=tr3is(rat,ts(pl(x0,y0),z0),ts(z0,pl(x0,y0)),pl(ts(z0,x0),ts(z0,y0)),pl(ts(x0,z0),ts(y0,z0)),comts(pl(x0,y0),z0),satz104(z0,x0,y0),ispl12(ts(z0,x0),ts(x0,z0),ts(z0,y0),ts(y0,z0),comts(z0,x0),comts(z0,y0))):is(ts(pl(x0,y0),z0),pl(ts(x0,z0),ts(y0,z0)))
+disttp2:=satz104:is(ts(x0,pl(y0,z0)),pl(ts(x0,y0),ts(x0,z0)))
+distpt1:=symis(rat,ts(pl(x0,y0),z0),pl(ts(x0,z0),ts(y0,z0)),disttp1):is(pl(ts(x0,z0),ts(y0,z0)),ts(pl(x0,y0),z0))
+distpt2:=symis(rat,ts(x0,pl(y0,z0)),pl(ts(x0,y0),ts(x0,z0)),disttp2):is(pl(ts(x0,y0),ts(x0,z0)),ts(x0,pl(y0,z0)))
+[m:more(x0,y0)]
++5105
+[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t1:=morei(ts(x0,z0),ts(y0,z0),tf(x,z),tf(y,z),tict(x0,z0,x,z,xix0,ziz0),tict(y0,z0,y,z,yiy0,ziz0),satz72a(x,y,z,moree(x0,y0,x,y,xix0,yiy0,m))):more(ts(x0,z0),ts(y0,z0))
+-5105
+satz105a:=ratapp3(more(ts(x0,z0),ts(y0,z0)),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t1".5105"(x,y,z,xi,yi,zi)):more(ts(x0,z0),ts(y0,z0))
+z0@[i:is(x0,y0)]
++*5105
+i@[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t2:=isi(ts(x0,z0),ts(y0,z0),tf(x,z),tf(y,z),tict(x0,z0,x,z,xix0,ziz0),tict(y0,z0,y,z,yiy0,ziz0),satz72b(x,y,z,ise(x0,y0,x,y,xix0,yiy0,i))):is(ts(x0,z0),ts(y0,z0))
+-5105
+i@satz105b:=ratapp3(is(ts(x0,z0),ts(y0,z0)),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t2".5105"(x,y,z,xi,yi,zi)):is(ts(x0,z0),ts(y0,z0))
+z0@[l:less(x0,y0)]
++*5105
+l@[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]
+t3:=lessi(ts(x0,z0),ts(y0,z0),tf(x,z),tf(y,z),tict(x0,z0,x,z,xi,zi),tict(y0,z0,y,z,yi,zi),satz72c(x,y,z,lesse(x0,y0,x,y,xi,yi,l))):less(ts(x0,z0),ts(y0,z0))
+-5105
+l@satz105c:=ratapp3(less(ts(x0,z0),ts(y0,z0)),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t3".5105"(x,y,z,xi,yi,zi)):less(ts(x0,z0),ts(y0,z0))
++*5105
+i@andersb:=ists1(x0,y0,z0,i):is(ts(x0,z0),ts(y0,z0))
+l@andersc:=satz82(ts(y0,z0),ts(x0,z0),satz105a(y0,x0,z0,satz83(l))):less(ts(x0,z0),ts(y0,z0))
+-5105
+m@satz105d:=ismore12(ts(x0,z0),ts(z0,x0),ts(y0,z0),ts(z0,y0),comts(x0,z0),comts(y0,z0),satz105a):more(ts(z0,x0),ts(z0,y0))
+i@satz105e:=ists2(x0,y0,z0,i):is(ts(z0,x0),ts(z0,y0))
+l@satz105f:=isless12(ts(x0,z0),ts(z0,x0),ts(y0,z0),ts(z0,y0),comts(x0,z0),comts(y0,z0),satz105c):less(ts(z0,x0),ts(z0,y0))
+z0@[m:more(ts(x0,z0),ts(y0,z0))]
++5106
+[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t1:=morei(x0,y0,x,y,xix0,yiy0,satz73a(x,y,z,moree(ts(x0,z0),ts(y0,z0),tf(x,z),tf(y,z),tict(x0,z0,x,z,xix0,ziz0),tict(y0,z0,y,z,yiy0,ziz0),m))):more(x0,y0)
+-5106
+satz106a:=ratapp3(more(x0,y0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t1".5106"(x,y,z,xi,yi,zi)):more(x0,y0)
+z0@[i:is(ts(x0,z0),ts(y0,z0))]
++*5106
+i@[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t2:=isi(x0,y0,x,y,xix0,yiy0,satz73b(x,y,z,ise(ts(x0,z0),ts(y0,z0),tf(x,z),tf(y,z),tict(x0,z0,x,z,xix0,ziz0),tict(y0,z0,y,z,yiy0,ziz0),i))):is(x0,y0)
+-5106
+i@satz106b:=ratapp3(is(x0,y0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t2".5106"(x,y,z,xi,yi,zi)):is(x0,y0)
+z0@[l:less(ts(x0,z0),ts(y0,z0))]
++*5106
+l@[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t3:=lessi(x0,y0,x,y,xix0,yiy0,satz73c(x,y,z,lesse(ts(x0,z0),ts(y0,z0),tf(x,z),tf(y,z),tict(x0,z0,x,z,xix0,ziz0),tict(y0,z0,y,z,yiy0,ziz0),l))):less(x0,y0)
+-5106
+l@satz106c:=ratapp3(less(x0,y0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t3".5106"(x,y,z,xi,yi,zi)):less(x0,y0)
++*5106
+l@anders:=satz82(y0,x0,satz106a(y0,x0,z0,satz83(ts(x0,z0),ts(y0,z0),l))):less(x0,y0)
+-5106
+u0@[m:more(x0,y0)][n:more(z0,u0)]
++5107
+[x:frac][y:frac][z:frac][u:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))][uiu0:inf(u,class(u0))]
+t1:=morei(ts(x0,z0),ts(y0,u0),tf(x,z),tf(y,u),tict(x0,z0,x,z,xix0,ziz0),tict(y0,u0,y,u,yiy0,uiu0),satz74(x,y,z,u,moree(x0,y0,x,y,xix0,yiy0,m),moree(z0,u0,z,u,ziz0,uiu0,n))):more(ts(x0,z0),ts(y0,u0))
+-5107
+satz107:=ratapp4(more(ts(x0,z0),ts(y0,u0)),[x:frac][y:frac][z:frac][u:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]t1".5107"(x,y,z,u,xi,yi,zi,ui)):more(ts(x0,z0),ts(y0,u0))
+u0@[l:less(x0,y0)][k:less(z0,u0)]
+satz107a:=satz82(ts(y0,u0),ts(x0,z0),satz107(y0,x0,u0,z0,satz83(l),satz83(z0,u0,k))):less(ts(x0,z0),ts(y0,u0))
+u0@[m:moreis(x0,y0)][n:more(z0,u0)]
++5108
+[x:frac][y:frac][z:frac][u:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))][uiu0:inf(u,class(u0))]
+t1:=morei(ts(x0,z0),ts(y0,u0),tf(x,z),tf(y,u),tict(x0,z0,x,z,xix0,ziz0),tict(y0,u0,y,u,yiy0,uiu0),satz75a(x,y,z,u,moreise(x0,y0,x,y,xix0,yiy0,m),moree(z0,u0,z,u,ziz0,uiu0,n))):more(ts(x0,z0),ts(y0,u0))
+-5108
+satz108a:=ratapp4(more(ts(x0,z0),ts(y0,u0)),[x:frac][y:frac][z:frac][u:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]t1".5108"(x,y,z,u,xi,yi,zi,ui)):more(ts(x0,z0),ts(y0,u0))
+u0@[m:more(x0,y0)][n:moreis(z0,u0)]
++*5108
+n@[x:frac][y:frac][z:frac][u:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))][uiu0:inf(u,class(u0))]
+t2:=morei(ts(x0,z0),ts(y0,u0),tf(x,z),tf(y,u),tict(x0,z0,x,z,xix0,ziz0),tict(y0,u0,y,u,yiy0,uiu0),satz75b(x,y,z,u,moree(x0,y0,x,y,xix0,yiy0,m),moreise(z0,u0,z,u,ziz0,uiu0,n))):more(ts(x0,z0),ts(y0,u0))
+-5108
+n@satz108b:=ratapp4(more(ts(x0,z0),ts(y0,u0)),[x:frac][y:frac][z:frac][u:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]t2".5108"(x,y,z,u,xi,yi,zi,ui)):more(ts(x0,z0),ts(y0,u0))
+u0@[l:lessis(x0,y0)][k:less(z0,u0)]
+satz108c:=satz82(ts(y0,u0),ts(x0,z0),satz108a(y0,x0,u0,z0,satz85(l),satz83(z0,u0,k))):less(ts(x0,z0),ts(y0,u0))
+u0@[l:less(x0,y0)][k:lessis(z0,u0)]
+satz108d:=satz82(ts(y0,u0),ts(x0,z0),satz108b(y0,x0,u0,z0,satz83(l),satz85(z0,u0,k))):less(ts(x0,z0),ts(y0,u0))
+u0@[m:moreis(x0,y0)][n:moreis(z0,u0)]
++5109
+[x:frac][y:frac][z:frac][u:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))][uiu0:inf(u,class(u0))]
+t1:=moreisi(ts(x0,z0),ts(y0,u0),tf(x,z),tf(y,u),tict(x0,z0,x,z,xix0,ziz0),tict(y0,u0,y,u,yiy0,uiu0),satz76(x,y,z,u,moreise(x0,y0,x,y,xix0,yiy0,m),moreise(z0,u0,z,u,ziz0,uiu0,n))):moreis(ts(x0,z0),ts(y0,u0))
+-5109
+satz109:=ratapp4(moreis(ts(x0,z0),ts(y0,u0)),[x:frac][y:frac][z:frac][u:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]t1".5109"(x,y,z,u,xi,yi,zi,ui)):moreis(ts(x0,z0),ts(y0,u0))
+u0@[l:lessis(x0,y0)][k:lessis(z0,u0)]
+satz109a:=satz84(ts(y0,u0),ts(x0,z0),satz109(y0,x0,u0,z0,satz85(l),satz85(z0,u0,k))):lessis(ts(x0,z0),ts(y0,u0))
++5110
+y1iy0@[v:frac][e:eq"n"(tf(y1,v),x1)]
+t1:=isi(ts(y0,ratof(v)),x0,tf(y1,v),x1,tict(y0,ratof(v),y1,v,y1iy0,inclass(v)),x1ix0,e):is(ts(y0,ratof(v)),x0)
+t2:=somei(rat,[t:rat]is(ts(y0,t),x0),ratof(v),t1):some([t:rat]is(ts(y0,t),x0))
+y1iy0@t3:=someapp(frac,[t:frac]eq"n"(tf(y1,t),x1),satz77a(x1,y1),some([t:rat]is(ts(y0,t),x0)),[t:frac][u:eq"n"(tf(y1,t),x1)]t2(t,u)):some([t:rat]is(ts(y0,t),x0))
+-5110
+y0@satz110a:=ratapp2(some([t:rat]is(ts(y0,t),x0)),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t3".5110"(x,y,xi,yi)):some([t:rat]is(ts(y0,t),x0))
+[v0:rat][w0:rat][i:is(ts(y0,v0),x0)][j:is(ts(y0,w0),x0)]
++*5110
+j@[x:frac][y:frac][v:frac][w:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][viv0:inf(v,class(v0))][wiw0:inf(w,class(w0))]
+t4:=isi(v0,w0,v,w,viv0,wiw0,satz77b(x,y,v,w,ise(ts(y0,v0),x0,tf(y,v),x,tict(y0,v0,y,v,yiy0,viv0),xix0,i),ise(ts(y0,w0),x0,tf(y,w),x,tict(y0,w0,y,w,yiy0,wiw0),xix0,j))):is(v0,w0)
+-5110
+j@satz110b:=ratapp4(v0,w0,is(v0,w0),[x:frac][y:frac][v:frac][w:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][vi:inf(v,class(v0))][wi:inf(w,class(w0))]t4".5110"(x,y,v,w,xi,yi,vi,wi)):is(v0,w0)
++*5110
+y0@t5:=[t:rat][u:rat][v:is(ts(y0,t),x0)][w:is(ts(y0,u),x0)]satz110b(t,u,v,w):amone(rat,[t:rat]is(ts(y0,t),x0))
+-5110
+y0@satz110:=onei(rat,[t:rat]is(ts(y0,t),x0),t5".5110",satz110a):one([t:rat]is(ts(y0,t),x0))
+-rt
+@[x:nat][y:nat]
++5111
+t1:=tris(nat,ts(num(fr(x,1)),den(fr(y,1))),ts(x,1),x,ndis12(x,1,y,1),satz28a(x)):is(ts(num(fr(x,1)),den(fr(y,1))),x)
+t2:=symis(nat,ts(num(fr(x,1)),den(fr(y,1))),x,t1):is(x,ts(num(fr(x,1)),den(fr(y,1))))
+-5111
+[m:moref(fr(x,1),fr(y,1))]
+satz111a:=ismore12(ts(num(fr(x,1)),den(fr(y,1))),x,ts(num(fr(y,1)),den(fr(x,1))),y,t1".5111",t1".5111"(y,x),m):more(x,y)
+y@[e:eq(fr(x,1),fr(y,1))]
+satz111b:=tr3is(nat,x,ts(num(fr(x,1)),den(fr(y,1))),ts(num(fr(y,1)),den(fr(x,1))),y,t2".5111",e,t1".5111"(y,x)):is(x,y)
+y@[l:lessf(fr(x,1),fr(y,1))]
+satz111c:=isless12(ts(num(fr(x,1)),den(fr(y,1))),x,ts(num(fr(y,1)),den(fr(x,1))),y,t1".5111",t1".5111"(y,x),l):less(x,y)
+y@[m:more(x,y)]
+satz111d:=ismore12(x,ts(num(fr(x,1)),den(fr(y,1))),y,ts(num(fr(y,1)),den(fr(x,1))),t2".5111",t2".5111"(y,x),m):moref(fr(x,1),fr(y,1))
+y@[i:is(x,y)]
+satz111e:=tr3is(nat,ts(num(fr(x,1)),den(fr(y,1))),x,y,ts(num(fr(y,1)),den(fr(x,1))),t1".5111",i,t2".5111"(y,x)):eq(fr(x,1),fr(y,1))
+y@[l:less(x,y)]
+satz111f:=isless12(x,ts(num(fr(x,1)),den(fr(y,1))),y,ts(num(fr(y,1)),den(fr(x,1))),t2".5111",t2".5111"(y,x),l):lessf(fr(x,1),fr(y,1))
++*rt
+@[x0:rat][x:nat]
+natprop:=inf(fr(x,1),class(x0)):'prop'
+x0@natrt:=some"n"([t:nat]natprop(t)):'prop'
++*ii5
+y0@[x:nat][y:nat][npx:natprop(x0,x)][npy:natprop(y0,y)][i:is(x0,y0)]
+t22:=satz111b(x,y,ise(x0,y0,fr(x,1),fr(y,1),npx,npy,i)):is"n"(x,y)
+x0@t23:=[t:nat][u:nat][v:natprop(x0,t)][w:natprop(x0,u)]t22(x0,x0,t,u,v,w,refis(rat,x0)):amone(nat,[t:nat]natprop(x0,t))
+-ii5
+x0@[nx0:natrt(x0)]
+satz111g:=onei(nat,[t:nat]natprop(t),t23".ii5",nx0):one"n"([t:nat]natprop(x0,t))
+nofrt:=ind(nat,[t:nat]natprop(t),satz111g):nat
+inclassn:=oneax(nat,[t:nat]natprop(t),satz111g):inf(fr(nofrt,1),class(x0))
+[y0:rat][ny0:natrt(y0)][i:is(x0,y0)]
+isrten:=t22".ii5"(x0,y0,nofrt(x0,nx0),nofrt(y0,ny0),inclassn(x0,nx0),inclassn(y0,ny0),i):is"n"(nofrt(x0,nx0),nofrt(y0,ny0))
+ny0@[i:is"n"(nofrt(x0,nx0),nofrt(y0,ny0))]
+isrtin:=isi(x0,y0,fr(nofrt(x0,nx0),1),fr(nofrt(y0,ny0),1),inclassn(x0,nx0),inclassn(y0,ny0),eqn"n"(nofrt(x0,nx0),1,nofrt(y0,ny0),i)):is(x0,y0)
+@[x:nat]
+rtofn:=ratof(fr(x,1)):rat
+natrti:=somei(nat,[t:nat]natprop(rtofn,t),x,inclass(fr(x,1))):natrt(rtofn(x))
+[y:nat][i:is"n"(x,y)]
+isnert:=isf(nat,rat,[t:nat]rtofn(t),x,y,i):is(rtofn(x),rtofn(y))
+y@[i:is(rtofn(x),rtofn(y))]
+isnirt:=t22".ii5"(rtofn(x),rtofn(y),x,y,inclass(fr(x,1)),inclass(fr(y,1)),i):is"n"(x,y)
+nx0@isrtn1:=isi(x0,rtofn(nofrt(x0,nx0)),fr(nofrt(x0,nx0),1),fr(nofrt(x0,nx0),1),inclassn(x0,nx0),inclass(fr(nofrt(x0,nx0),1)),refeq"n"(fr(nofrt(x0,nx0),1))):is(x0,rtofn(nofrt(x0,nx0)))
+x@isnrt1:=t22".ii5"(rtofn(x),rtofn(x),x,nofrt(rtofn(x),natrti(x)),inclass(fr(x,1)),inclassn(rtofn(x),natrti(x)),refis(rat,rtofn(x))):is"n"(x,nofrt(rtofn(x),natrti(x)))
+-rt
+@[x:nat][y:nat]
+satz112a:=satz57(x,y,1):eq(pf(fr(x,1),fr(y,1)),fr(pl(x,y),1))
+satz112b:=treq(tf(fr(x,1),fr(y,1)),fr(ts(x,y),ts(1,1)),fr(ts(x,y),1),tfeq12a(x,1,y,1),eqd(ts(x,y),ts(1,1),1,satz28a(1))):eq(tf(fr(x,1),fr(y,1)),fr(ts(x,y),1))
++*rt
+ny0@satz112c:=lemmaeq1(pl(x0,y0),pf(fr(nofrt(x0,nx0),1),fr(nofrt(y0,ny0),1)),fr(pl"n"(nofrt(x0,nx0),nofrt(y0,ny0)),1),picp(x0,y0,fr(nofrt(x0,nx0),1),fr(nofrt(y0,ny0),1),inclassn(x0,nx0),inclassn(y0,ny0)),satz112a(nofrt(x0,nx0),nofrt(y0,ny0))):inf(fr(pl"n"(nofrt(x0,nx0),nofrt(y0,ny0)),1),class(pl(x0,y0)))
+satz112d:=somei(nat,[t:nat]natprop(pl(x0,y0),t),pl"n"(nofrt(x0,nx0),nofrt(y0,ny0)),satz112c):natrt(pl(x0,y0))
+satz112e:=lemmaeq1(ts(x0,y0),tf(fr(nofrt(x0,nx0),1),fr(nofrt(y0,ny0),1)),fr(ts"n"(nofrt(x0,nx0),nofrt(y0,ny0)),1),tict(x0,y0,fr(nofrt(x0,nx0),1),fr(nofrt(y0,ny0),1),inclassn(x0,nx0),inclassn(y0,ny0)),satz112b(nofrt(x0,nx0),nofrt(y0,ny0))):inf(fr(ts"n"(nofrt(x0,nx0),nofrt(y0,ny0)),1),class(ts(x0,y0)))
+satz112f:=somei(nat,[t:nat]natprop(ts(x0,y0),t),ts"n"(nofrt(x0,nx0),nofrt(y0,ny0)),satz112e):natrt(ts(x0,y0))
+[m:more(x0,y0)]
++5112
+t1:=satz111a(nofrt(x0,nx0),nofrt(y0,ny0),moree(x0,y0,fr(nofrt(x0,nx0),1),fr(nofrt(y0,ny0),1),inclassn(x0,nx0),inclassn(y0,ny0),m)):more"n"(nofrt(x0,nx0),nofrt(y0,ny0))
+[z:nat][d:diffprop(nofrt(x0,nx0),nofrt(y0,ny0),z)]
+t2:=tris(nat,nofrt(x0,nx0),pl"n"(nofrt(y0,ny0),z),pl"n"(nofrt(y0,ny0),nofrt(rtofn(z),natrti(z))),d,ispl2"n"(z,nofrt(rtofn(z),natrti(z)),nofrt(y0,ny0),isnrt1(z))):is"n"(nofrt(x0,nx0),pl"n"(nofrt(y0,ny0),nofrt(rtofn(z),natrti(z))))
+t3:=isi(x0,pl(y0,rtofn(z)),fr(nofrt(x0,nx0),1),fr(pl"n"(nofrt(y0,ny0),nofrt(rtofn(z),natrti(z))),1),inclassn(x0,nx0),satz112c(y0,ny0,rtofn(z),natrti(z)),eqn(nofrt(x0,nx0),1,pl"n"(nofrt(y0,ny0),nofrt(rtofn(z),natrti(z))),t2)):is(x0,pl(y0,rtofn(z)))
+t4:=satz101g(x0,y0,rtofn(z),m,symis(rat,x0,pl(y0,rtofn(z)),t3)):is(rtofn(z),mn(x0,y0,m))
+t5:=isp(rat,[t:rat]natrt(t),rtofn(z),mn(x0,y0,m),natrti(z),t4):natrt(mn(x0,y0,m))
+-5112
+satz112g:=someapp(nat,[t:nat]diffprop(nofrt(x0,nx0),nofrt(y0,ny0),t),t1".5112",natrt(mn(x0,y0,m)),[t:nat][u:diffprop(nofrt(x0,nx0),nofrt(y0,ny0),t)]t5".5112"(t,u)):natrt(mn(x0,y0,m))
+@[x:nat][y:nat]
+satz112h:=isi(pl(rtofn(x),rtofn(y)),rtofn(pl"n"(x,y)),pf(fr(x,1),fr(y,1)),fr(pl"n"(x,y),1),picp(rtofn(x),rtofn(y),fr(x,1),fr(y,1),inclass(fr(x,1)),inclass(fr(y,1))),inclass(fr(pl"n"(x,y),1)),satz112a(x,y)):is(pl(rtofn(x),rtofn(y)),rtofn(pl"n"(x,y)))
+satz112j:=isi(ts(rtofn(x),rtofn(y)),rtofn(ts"n"(x,y)),tf(fr(x,1),fr(y,1)),fr(ts"n"(x,y),1),tict(rtofn(x),rtofn(y),fr(x,1),fr(y,1),inclass(fr(x,1)),inclass(fr(y,1))),inclass(fr(ts"n"(x,y),1)),satz112b(x,y)):is(ts(rtofn(x),rtofn(y)),rtofn(ts"n"(x,y)))
++nt
+@natt:=ot(rat,[t:rat]natrt(t)):'type'
+nx0@ntofrt:=out(rat,[t:rat]natrt(t),x0,nx0):natt
+@[xt:natt][yt:natt]
+is:=is"e"(natt,xt,yt):'prop'
+nis:=not(is(xt,yt)):'prop'
+@[p:[x:natt]'prop']
+all:=all"l"(natt,p):'prop'
+some:=some"l"(natt,p):'prop'
+one:=one"e"(natt,p):'prop'
+xt@[st:set(natt)]
+in:=esti(natt,xt,st):'prop'
+xt@rtofnt:=in"e"(rat,[t:rat]natrt(t),xt):rat
+natrti:=inp(rat,[t:rat]natrt(t),xt):natrt(rtofnt(xt))
+ny0@[i:is"rt"(x0,y0)]
+isrtent:=isouti(rat,[t:rat]natrt(t),x0,nx0,y0,ny0,i):is(ntofrt(x0,nx0),ntofrt(y0,ny0))
+ny0@[i:is(ntofrt(x0,nx0),ntofrt(y0,ny0))]
+isrtint:=isoute(rat,[t:rat]natrt(t),x0,nx0,y0,ny0,i):is"rt"(x0,y0)
+yt@[i:is(xt,yt)]
+isntert:=isini(rat,[t:rat]natrt(t),xt,yt,i):is"rt"(rtofnt(xt),rtofnt(yt))
+yt@[i:is"rt"(rtofnt(xt),rtofnt(yt))]
+isntirt:=isine(rat,[t:rat]natrt(t),xt,yt,i):is(xt,yt)
+nx0@isrtnt1:=isinout(rat,[t:rat]natrt(t),x0,nx0):is"rt"(x0,rtofnt(ntofrt(x0,nx0)))
+xt@isntrt1:=isoutin(rat,[t:rat]natrt(t),xt):is(xt,ntofrt(rtofnt(xt),natrti(xt)))
+x@ntofn:=ntofrt(rtofn(x),natrti"rt"(x)):natt
+y@[i:is"n"(x,y)]
+isnent:=isrtent(rtofn(x),natrti"rt"(x),rtofn(y),natrti"rt"(y),isnert(x,y,i)):is(ntofn(x),ntofn(y))
+y@[i:is(ntofn(x),ntofn(y))]
+isnint:=isnirt(x,y,isrtint(rtofn"rt"(x),natrti"rt"(x),rtofn(y),natrti"rt"(y),i)):is"n"(x,y)
+xt@nofnt:=nofrt(rtofnt(xt),natrti(xt)):nat
+yt@[i:is(xt,yt)]
+isnten:=isrten(rtofnt(xt),natrti(xt),rtofnt(yt),natrti(yt),isntert(xt,yt,i)):is"n"(nofnt(xt),nofnt(yt))
+yt@[i:is"n"(nofnt(xt),nofnt(yt))]
+isntin:=isntirt(xt,yt,isrtin(rtofnt(xt),natrti(xt),rtofnt(yt),natrti(yt),i)):is(xt,yt)
++ii5
+x@t24:=isrtnt1(rtofn(x),natrti"rt"(x)):is"rt"(rtofn(x),rtofnt(ntofn(x)))
+t25:=isrten(rtofn(x),natrti"rt"(x),rtofnt(ntofn(x)),natrti(ntofn(x)),t24):is"n"(nofrt(rtofn(x),natrti"rt"(x)),nofnt(ntofn(x)))
+-ii5
+x@isnnt1:=tris(nat,x,nofrt(rtofn(x),natrti"rt"(x)),nofnt(ntofn(x)),isnrt1(x),t25".ii5"):is"n"(x,nofnt(ntofn(x)))
++*ii5
+xt@t26:=isrtn1(rtofnt(xt),natrti(xt)):is"rt"(rtofnt(xt),rtofn(nofnt(xt)))
+t27:=isrtent(rtofnt(xt),natrti(xt),rtofn(nofnt(xt)),natrti"rt"(nofnt(xt)),t26):is(ntofrt(rtofnt(xt),natrti(xt)),ntofn(nofnt(xt)))
+-ii5
+xt@isntn1:=tris(natt,xt,ntofrt(rtofnt(xt),natrti(xt)),ntofn(nofnt(xt)),isntrt1(xt),t27".ii5"):is(xt,ntofn(nofnt(xt)))
+x@isnnt2:=symis(nat,x,nofnt(ntofn(x)),isnnt1):is"n"(nofnt(ntofn(x)),x)
+xt@isntn2:=symis(natt,xt,ntofn(nofnt(xt)),isntn1):is(ntofn(nofnt(xt)),xt)
+@1t:=ntofn(1):natt
+suct:=[x:natt]ntofn(<nofnt(x)>suc):[x:natt]natt
++5113
+xt@[i:is(<xt>suct,1t)]
+t1:=isnint(<nofnt(xt)>suc,1,i):is"n"(<nofnt(xt)>suc,1)
+-5113
+xt@satz113a:=th3"l.imp"(is(<xt>suct,1t),is"n"(<nofnt(xt)>suc,1),<nofnt(xt)>ax3,[t:is(<xt>suct,1t)]t1".5113"(t)):nis(<xt>suct,1t)
+yt@[i:is(<xt>suct,<yt>suct)]
++*5113
+i"nt"@t2:=isnint(<nofnt(xt)>suc,<nofnt(yt)>suc,i):is"n"(<nofnt(xt)>suc,<nofnt(yt)>suc)
+-5113
+i@satz113b:=isntin(xt,yt,<t2".5113"><nofnt(yt)><nofnt(xt)>ax4):is(xt,yt)
+@[st:set(natt)]
+cond1:=in(1t,st):'prop'
+cond2:=all([x:natt]imp(in(x,st),in(<x>suct,st))):'prop'
+[c1:cond1][c2:cond2]
++*5113
+c2@[x:nat]
+prop1:=in(ntofn(x),st):'prop'
+[p:prop1(x)]
+t3:=<ntofn(x)>c2:imp(in(ntofn(x),st),in(<ntofn(x)>suct,st))
+t4:=mp(in(ntofn(x),st),in(<ntofn(x)>suct,st),p,t3):in(<ntofn(x)>suct,st)
+t5:=isp(nat,[t:nat]in(ntofn(<t>suc),st),nofnt(ntofn(x)),x,t4,isnnt2(x)):prop1(<x>suc)
+-5113
+c2@[xt:natt]
++*5113
+xt@t6:=induction([t:nat]prop1(t),c1,[t:nat][u:prop1(t)]t5(t,u),nofnt(xt)):in(ntofn(nofnt(xt)),st)
+-5113
+xt@satz113c:=isp(natt,[t:natt]in(t,st),ntofn(nofnt(xt)),xt,t6".5113",isntn2(xt)):in(xt,st)
+@ax3t:=[x:natt]satz113a(x):[x:natt]nis(<x>suct,1t)
+ax4t:=[x:natt][y:natt][u:is(<x>suct,<y>suct)]satz113b(x,y,u):[x:natt][y:natt][u:is(<x>suct,<y>suct)]is(x,y)
+ax5t:=[s:set(natt)][u:cond1(s)][v:cond2(s)][x:natt]satz113c(s,u,v,x):[s:set(natt)][u:cond1(s)][v:cond2(s)][x:natt]in(x,s)
+yt@[n:nis(xt,yt)]
++51
+t1:=th3"l.imp"(is"n"(nofnt(xt),nofnt(yt)),is(xt,yt),n,[t:is"n"(nofnt(xt),nofnt(yt))]isntin(xt,yt,t)):nis"n"(nofnt(xt),nofnt(yt))
+t2:=satz1(nofnt(xt),nofnt(yt),t1):nis"n"(<nofnt(xt)>suc,<nofnt(yt)>suc)
+-51
+satz1:=th3"l.imp"(is(<xt>suct,<yt>suct),is"n"(<nofnt(xt)>suc,<nofnt(yt)>suc),t2".51",[t:is(<xt>suct,<yt>suct)]isnint(<nofnt(xt)>suc,<nofnt(yt)>suc,t)):nis(<xt>suct,<yt>suct)
++54
+xt@x:=nofnt(xt):nat
+[ft:[x:natt]natt]
+prop1t:=all([t:natt]is(<<t>suct>ft,<<t>ft>suct)):'prop'
+prop2t:=and(is(<1t>ft,<xt>suct),prop1t):'prop'
+xt@[f:[x:nat]nat]
+prop1:=all"n"([t:nat]is"n"(<<t>suc>f,<<t>f>suc)):'prop'
+prop2:=and(is"n"(<1>f,<x>suc),prop1):'prop'
+ft@g:=[t:nat]nofnt(<ntofn(t)>ft):[x:nat]nat
+[p:prop2t]
+t1:=ande1(is(<1t>ft,<xt>suct),prop1t,p):is(<1t>ft,<xt>suct)
+t2:=tris(nat,<1>g,nofnt(<xt>suct),<x>suc,isnten(<1t>ft,<xt>suct,t1),isnnt2(<x>suc)):is"n"(<1>g,<x>suc)
+t3:=ande2(is(<1t>ft,<xt>suct),prop1t,p):prop1t
+[u:nat]
+ut:=ntofn(u):natt
+t4:=isf(nat,nat,suc,u,nofnt(ut),isnnt1(u)):is"n"(<u>suc,<nofnt(ut)>suc)
+t5:=isf(nat,nat,g,<u>suc,<nofnt(ut)>suc,t4):is"n"(<<u>suc>g,nofnt(<<ut>suct>ft))
+t6:=<ut>t3:is(<<ut>suct>ft,<<ut>ft>suct)
+t7:=isnten(<<ut>suct>ft,<<ut>ft>suct,t6):is"n"(nofnt(<<ut>suct>ft),nofnt(<<ut>ft>suct))
+t8:=isnnt2(<<u>g>suc):is"n"(nofnt(<<ut>ft>suct),<<u>g>suc)
+t9:=tr3is(nat,<<u>suc>g,nofnt(<<ut>suct>ft),nofnt(<<ut>ft>suct),<<u>g>suc,t5,t7,t8):is"n"(<<u>suc>g,<<u>g>suc)
+p@t10:=[u:nat]t9(u):prop1(g)
+t11:=andi(is"n"(<1>g,<x>suc),prop1(g),t2,t10):prop2(g)
+xt@[a:[t:natt]natt][b:[t:natt]natt][pa:prop2t(a)][pb:prop2t(b)]
+t12:=onee1([t:nat]nat,[u:[t:nat]nat]prop2(u),satz4(x)):amone([t:nat]nat,[u:[t:nat]nat]prop2(u))
+t13:=<t11(b,pb)><t11(a,pa)><g(b)><g(a)>t12:is"e"([t:nat]nat,g(a),g(b))
+[yt:natt]
+y:=nofnt(yt):nat
+t14:=fise(nat,nat,g(a),g(b),t13,y):is"n"(nofnt(<ntofn(y)>a),nofnt(<ntofn(y)>b))
+t15:=isntin(<ntofn(y)>a,<ntofn(y)>b,t14):is(<ntofn(y)>a,<ntofn(y)>b)
+t16:=tr3is(natt,<yt>a,<ntofn(y)>a,<ntofn(y)>b,<yt>b,isf(natt,natt,a,yt,ntofn(y),isntn1(yt)),t15,isf(natt,natt,b,ntofn(y),yt,isntn2(yt))):is(<yt>a,<yt>b)
+pb@t17:=fisi(natt,natt,a,b,[t:natt]t16(t)):is"e"([t:natt]natt,a,b)
+xt@t18:=[u:[t:natt]natt][v:[t:natt]natt][w:prop2t(u)][z:prop2t(v)]t17(u,v,w,z):amone([t:natt]natt,[u:[t:natt]natt]prop2t(u))
+t19:=onee2([t:nat]nat,[u:[t:nat]nat]prop2(u),satz4(x)):some"l"([t:nat]nat,[u:[t:nat]nat]prop2(u))
+f@gt:=[t:natt]ntofn(<nofnt(t)>f):[x:natt]natt
+[p:prop2]
+t20:=ande1(is"n"(<1>f,<x>suc),prop1,p):is"n"(<1>f,<x>suc)
+t21:=isf(nat,nat,f,nofnt(1t),1,isnnt2(1)):is"n"(<nofnt(1t)>f,<1>f)
+t22:=isnent(<nofnt(1t)>f,<x>suc,tris(nat,<nofnt(1t)>f,<1>f,<x>suc,t21,t20)):is(<1t>gt,<xt>suct)
+t23:=ande2(is"n"(<1>f,<x>suc),prop1,p):prop1
+[zt:natt]
+z:=nofnt(zt):nat
+t24:=isf(nat,nat,f,nofnt(<zt>suct),<z>suc,isnnt2(<z>suc)):is"n"(<nofnt(<zt>suct)>f,<<z>suc>f)
+t25:=<z>t23:is"n"(<<z>suc>f,<<z>f>suc)
+t26:=isf(nat,nat,suc,<z>f,nofnt(<zt>gt),isnnt1(<z>f)):is"n"(<<z>f>suc,<nofnt(<zt>gt)>suc)
+t27:=isnent(<nofnt(<zt>suct)>f,<nofnt(<zt>gt)>suc,tr3is(nat,<nofnt(<zt>suct)>f,<<z>suc>f,<<z>f>suc,<nofnt(<zt>gt)>suc,t24,t25,t26)):is(<<zt>suct>gt,<<zt>gt>suct)
+p@t28:=[u:natt]t27(u):prop1t(gt)
+t29:=andi(is(<1t>gt,<xt>suct),prop1t(gt),t22,t28):prop2t(gt)
+t30:=somei([t:natt]natt,[u:[t:natt]natt]prop2t(u),gt,t29):some"l"([t:natt]natt,[u:[t:natt]natt]prop2t(u))
+xt@t31:=someapp([t:nat]nat,[u:[t:nat]nat]prop2(u),t19,some"l"([t:natt]natt,[u:[t:natt]natt]prop2t(u)),[u:[t:nat]nat][v:prop2(u)]t30(u,v)):some"l"([t:natt]natt,[u:[t:natt]natt]prop2t(u))
+-54
+xt@satz4:=onei([t:natt]natt,[u:[t:natt]natt]prop2t".54"(u),t18".54",t31".54"):one"e"([t:natt]natt,[u:[t:natt]natt]and(is(<1t>u,<xt>suct),all([v:natt]is(<<v>suct>u,<<v>u>suct))))
+yt@pl:=ntofrt(pl"rt"(rtofnt(xt),rtofnt(yt)),satz112d(rtofnt(xt),natrti(xt),rtofnt(yt),natrti(yt))):natt
++*ii5
+yt@t28:=satz112c(rtofnt(xt),natrti(xt),rtofnt(yt),natrti(yt)):inf(fr(pl"n"(nofnt(xt),nofnt(yt)),1),class(pl"rt"(rtofnt(xt),rtofnt(yt))))
+t29:=isi(pl"rt"(rtofnt(xt),rtofnt(yt)),rtofn(pl"n"(nofnt(xt),nofnt(yt))),fr(pl"n"(nofnt(xt),nofnt(yt)),1),fr(pl"n"(nofnt(xt),nofnt(yt)),1),t28,inclass(fr(pl"n"(nofnt(xt),nofnt(yt)),1)),refeq"n"(fr(pl"n"(nofnt(xt),nofnt(yt)),1))):is"rt"(pl"rt"(rtofnt(xt),rtofnt(yt)),rtofn(pl"n"(nofnt(xt),nofnt(yt))))
+-ii5
+yt@isplnt:=isrtent(pl"rt"(rtofnt(xt),rtofnt(yt)),satz112d(rtofnt(xt),natrti(xt),rtofnt(yt),natrti(yt)),rtofn(pl"n"(nofnt(xt),nofnt(yt))),natrti"rt"(pl"n"(nofnt(xt),nofnt(yt))),t29".ii5"):is(pl(xt,yt),ntofn(pl"n"(nofnt(xt),nofnt(yt))))
+isntpl:=symis(natt,pl(xt,yt),ntofn(pl"n"(nofnt(xt),nofnt(yt))),isplnt):is(ntofn(pl"n"(nofnt(xt),nofnt(yt))),pl(xt,yt))
+ispln:=tris(nat,pl"n"(nofnt(xt),nofnt(yt)),nofnt(ntofn(pl"n"(nofnt(xt),nofnt(yt)))),nofnt(pl(xt,yt)),isnnt1(pl"n"(nofnt(xt),nofnt(yt))),isnten(ntofn(pl"n"(nofnt(xt),nofnt(yt))),pl(xt,yt),isntpl)):is"n"(pl"n"(nofnt(xt),nofnt(yt)),nofnt(pl(xt,yt)))
+isnpl:=symis(nat,pl"n"(nofnt(xt),nofnt(yt)),nofnt(pl(xt,yt)),ispln):is"n"(nofnt(pl(xt,yt)),pl"n"(nofnt(xt),nofnt(yt)))
+[zt:natt]
++55
+t1:=ispl1"n"(nofnt(pl(xt,yt)),pl"n"(nofnt(xt),nofnt(yt)),nofnt(zt),isnpl(xt,yt)):is"n"(pl"n"(nofnt(pl(xt,yt)),nofnt(zt)),pl"n"(pl"n"(nofnt(xt),nofnt(yt)),nofnt(zt)))
+t2:=ispl2"n"(pl"n"(nofnt(yt),nofnt(zt)),nofnt(pl(yt,zt)),nofnt(xt),ispln(yt,zt)):is"n"(pl"n"(nofnt(xt),pl"n"(nofnt(yt),nofnt(zt))),pl"n"(nofnt(xt),nofnt(pl(yt,zt))))
+t3:=tr3is(nat,pl"n"(nofnt(pl(xt,yt)),nofnt(zt)),pl"n"(pl"n"(nofnt(xt),nofnt(yt)),nofnt(zt)),pl"n"(nofnt(xt),pl"n"(nofnt(yt),nofnt(zt))),pl"n"(nofnt(xt),nofnt(pl(yt,zt))),t1,satz5(nofnt(xt),nofnt(yt),nofnt(zt)),t2):is"n"(pl"n"(nofnt(pl(xt,yt)),nofnt(zt)),pl"n"(nofnt(xt),nofnt(pl(yt,zt))))
+-55
+satz5:=tr3is(natt,pl(pl(xt,yt),zt),ntofn(pl"n"(nofnt(pl(xt,yt)),nofnt(zt))),ntofn(pl"n"(nofnt(xt),nofnt(pl(yt,zt)))),pl(xt,pl(yt,zt)),isplnt(pl(xt,yt),zt),isnent(pl"n"(nofnt(pl(xt,yt)),nofnt(zt)),pl"n"(nofnt(xt),nofnt(pl(yt,zt))),t3".55"),isntpl(xt,pl(yt,zt))):is(pl(pl(xt,yt),zt),pl(xt,pl(yt,zt)))
+diffprop:=is(xt,pl(yt,zt)):'prop'
+[d:diffprop]
+diffprope:=tris(nat,nofnt(xt),nofnt(pl(yt,zt)),pl"n"(nofnt(yt),nofnt(zt)),isnten(xt,pl(yt,zt),d),isnpl(yt,zt)):diffprop"n"(nofnt(xt),nofnt(yt),nofnt(zt))
+zt@[d:diffprop"n"(nofnt(xt),nofnt(yt),nofnt(zt))]
++*ii5
+d@t30:=tris(nat,nofnt(xt),pl"n"(nofnt(yt),nofnt(zt)),nofnt(pl(yt,zt)),d,ispln(yt,zt)):is"n"(nofnt(xt),nofnt(pl(yt,zt)))
+-ii5
+d@diffpropi:=isntin(xt,pl(yt,zt),t30".ii5"):diffprop
++59
+yt@it:=is(xt,yt):'prop'
+iit:=some([u:natt]diffprop(xt,yt,u)):'prop'
+iiit:=some([u:natt]diffprop(yt,xt,u)):'prop'
+i:=is"n"(nofnt(xt),nofnt(yt)):'prop'
+ii:=some"n"([u:nat]diffprop"n"(nofnt(xt),nofnt(yt),u)):'prop'
+iii:=some"n"([u:nat]diffprop"n"(nofnt(yt),nofnt(xt),u)):'prop'
+[one:i]
+t1:=or3i1(it,iit,iiit,isntin(xt,yt,one)):or3(it,iit,iiit)
+yt@[two:ii][v:nat][d:diffprop"n"(nofnt(xt),nofnt(yt),v)]
+t2:=isp(nat,[u:nat]diffprop"n"(nofnt(xt),nofnt(yt),u),v,nofnt(ntofn(v)),d,isnnt1(v)):diffprop"n"(nofnt(xt),nofnt(yt),nofnt(ntofn(v)))
+t3:=somei(natt,[u:natt]diffprop(xt,yt,u),ntofn(v),diffpropi(xt,yt,ntofn(v),t2)):iit
+two@t4:=someapp(nat,[u:nat]diffprop"n"(nofnt(xt),nofnt(yt),u),two,iit,[u:nat][v:diffprop"n"(nofnt(xt),nofnt(yt),u)]t3(u,v)):iit
+t5:=or3i2(it,iit,iiit,t4):or3(it,iit,iiit)
+yt@[three:iii]
+t6:=or3i3(it,iit,iiit,t4(yt,xt,three)):or3(it,iit,iiit)
+yt@t7:=or3app(i,ii,iii,or3(it,iit,iiit),satz9a(nofnt(xt),nofnt(yt)),[u:i]t1(u),[u:ii]t5(u),[u:iii]t6(u)):or3(it,iit,iiit)
+[onet:it]
+t8:=isnten(xt,yt,onet):i
+yt@[twot:iit][vt:natt][d:diffprop(xt,yt,vt)]
+t9:=somei(nat,[u:nat]diffprop"n"(nofnt(xt),nofnt(yt),u),nofnt(vt),diffprope(xt,yt,vt,d)):ii
+twot@t10:=someapp(natt,[u:natt]diffprop(xt,yt,u),twot,ii,[u:natt][v:diffprop(xt,yt,u)]t9(u,v)):ii
+yt@[threet:iiit]
+t11:=t10(yt,xt,threet):iii
+yt@t12:=satz9b(nofnt(xt),nofnt(yt)):ec3(i,ii,iii)
+onet@t13:=ec3e12(i,ii,iii,t12,t8):not(ii)
+t14:=th3"l.imp"(iit,ii,t13,[x:iit]t10(x)):not(iit)
+yt@t15:=th1"l.ec"(it,iit,[x:it]t14(x)):ec(it,iit)
+twot@t16:=ec3e23(i,ii,iii,t12,t10):not(iii)
+t17:=th3"l.imp"(iiit,iii,t16,[x:iiit]t11(x)):not(iiit)
+yt@t18:=th1"l.ec"(iit,iiit,[x:iit]t17(x)):ec(iit,iiit)
+threet@t19:=ec3e31(i,ii,iii,t12,t11):not(i)
+t20:=th3"l.imp"(it,i,t19,[x:it]t8(x)):not(it)
+yt@t21:=th1"l.ec"(iiit,it,[x:iiit]t20(x)):ec(iiit,it)
+t22:=th6"l.ec3"(it,iit,iiit,t15,t18,t21):ec3(it,iit,iiit)
+-59
+yt@satz9:=orec3i(it".59",iit".59",iiit".59",t7".59",t22".59"):orec3(is(xt,yt),some([u:natt]is(xt,pl(yt,u))),some([u:natt]is(yt,pl(xt,u))))
+more:=more"rt"(rtofnt(xt),rtofnt(yt)):'prop'
+[m:more(xt,yt)]
++*ii5
+m@t31:=moree(rtofnt(xt),rtofnt(yt),fr(nofnt(xt),1),fr(nofnt(yt),1),inclassn(rtofnt(xt),natrti(xt)),inclassn(rtofnt(yt),natrti(yt)),m):moref(fr(nofnt(xt),1),fr(nofnt(yt),1))
+-ii5
+m@moree:=satz111a(nofnt(xt),nofnt(yt),t31".ii5"):more"n"(nofnt(xt),nofnt(yt))
+yt@[m:more"n"(nofnt(xt),nofnt(yt))]
++*ii5
+m@t32:=satz111d(nofnt(xt),nofnt(yt),m):moref(fr(nofnt(xt),1),fr(nofnt(yt),1))
+-ii5
+m@morei:=morei"rt"(rtofnt(xt),rtofnt(yt),fr(nofnt(xt),1),fr(nofnt(yt),1),inclassn(rtofnt(xt),natrti(xt)),inclassn(rtofnt(yt),natrti(yt)),t32".ii5"):more(xt,yt)
+yt@less:=less"rt"(rtofnt(xt),rtofnt(yt)):'prop'
+[l:less(xt,yt)]
++*ii5
+l@t33:=lesse(rtofnt(xt),rtofnt(yt),fr(nofnt(xt),1),fr(nofnt(yt),1),inclassn(rtofnt(xt),natrti(xt)),inclassn(rtofnt(yt),natrti(yt)),l):lessf(fr(nofnt(xt),1),fr(nofnt(yt),1))
+-ii5
+l@lesse:=satz111c(nofnt(xt),nofnt(yt),t33".ii5"):less"n"(nofnt(xt),nofnt(yt))
+yt@[l:less"n"(nofnt(xt),nofnt(yt))]
++*ii5
+l@t34:=satz111f(nofnt(xt),nofnt(yt),l):lessf(fr(nofnt(xt),1),fr(nofnt(yt),1))
+-ii5
+l@lessi:=lessi"rt"(rtofnt(xt),rtofnt(yt),fr(nofnt(xt),1),fr(nofnt(yt),1),inclassn(rtofnt(xt),natrti(xt)),inclassn(rtofnt(yt),natrti(yt)),t34".ii5"):less(xt,yt)
+yt@moreis:=moreis"rt"(rtofnt(xt),rtofnt(yt)):'prop'
+[m:moreis(xt,yt)]
+moreise:=th9"l.or"(more"rt"(rtofnt(xt),rtofnt(yt)),is"rt"(rtofnt(xt),rtofnt(yt)),more"n"(nofnt(xt),nofnt(yt)),is"n"(nofnt(xt),nofnt(yt)),m,[u:more"rt"(rtofnt(xt),rtofnt(yt))]moree(xt,yt,u),[u:is"rt"(rtofnt(xt),rtofnt(yt))]isrten(rtofnt(xt),natrti(xt),rtofnt(yt),natrti(yt),u)):moreis"n"(nofnt(xt),nofnt(yt))
+yt@[m:moreis"n"(nofnt(xt),nofnt(yt))]
+moreisi:=th9"l.or"(more"n"(nofnt(xt),nofnt(yt)),is"n"(nofnt(xt),nofnt(yt)),more"rt"(rtofnt(xt),rtofnt(yt)),is"rt"(rtofnt(xt),rtofnt(yt)),m,[u:more"n"(nofnt(xt),nofnt(yt))]morei(xt,yt,u),[u:is"n"(nofnt(xt),nofnt(yt))]isrtin(rtofnt(xt),natrti(xt),rtofnt(yt),natrti(yt),u)):moreis(xt,yt)
+yt@lessis:=lessis"rt"(rtofnt(xt),rtofnt(yt)):'prop'
+[l:lessis(xt,yt)]
+lessise:=th9"l.or"(less"rt"(rtofnt(xt),rtofnt(yt)),is"rt"(rtofnt(xt),rtofnt(yt)),less"n"(nofnt(xt),nofnt(yt)),is"n"(nofnt(xt),nofnt(yt)),l,[u:less"rt"(rtofnt(xt),rtofnt(yt))]lesse(xt,yt,u),[u:is"rt"(rtofnt(xt),rtofnt(yt))]isrten(rtofnt(xt),natrti(xt),rtofnt(yt),natrti(yt),u)):lessis"n"(nofnt(xt),nofnt(yt))
+yt@[l:lessis"n"(nofnt(xt),nofnt(yt))]
+lessisi:=th9"l.or"(less"n"(nofnt(xt),nofnt(yt)),is"n"(nofnt(xt),nofnt(yt)),less"rt"(rtofnt(xt),rtofnt(yt)),is"rt"(rtofnt(xt),rtofnt(yt)),l,[u:less"n"(nofnt(xt),nofnt(yt))]lessi(xt,yt,u),[u:is"n"(nofnt(xt),nofnt(yt))]isrtin(rtofnt(xt),natrti(xt),rtofnt(yt),natrti(yt),u)):lessis(xt,yt)
+zt@[l:less(xt,yt)][k:less(yt,zt)]
++515
+t1:=satz15(nofnt(xt),nofnt(yt),nofnt(zt),lesse(xt,yt,l),lesse(yt,zt,k)):less"n"(nofnt(xt),nofnt(zt))
+-515
+satz15:=lessi(xt,zt,t1".515"):less(xt,zt)
+zt@[ut:natt][m:more(xt,yt)][n:more(zt,ut)]
++521
+t1:=satz21(nofnt(xt),nofnt(yt),nofnt(zt),nofnt(ut),moree(xt,yt,m),moree(zt,ut,n)):more"n"(pl"n"(nofnt(xt),nofnt(zt)),pl"n"(nofnt(yt),nofnt(ut)))
+t2:=ismore12"n"(pl"n"(nofnt(xt),nofnt(zt)),nofnt(pl(xt,zt)),pl"n"(nofnt(yt),nofnt(ut)),nofnt(pl(yt,ut)),ispln(xt,zt),ispln(yt,ut),t1):more"n"(nofnt(pl(xt,zt)),nofnt(pl(yt,ut)))
+-521
+satz21:=morei(pl(xt,zt),pl(yt,ut),t2".521"):more(pl(xt,zt),pl(yt,ut))
+@[p:[x:natt]'prop'][n:natt]
+lb:=all([x:natt]imp(<x>p,lessis(n,x))):'prop'
+min:=and(lb,<n>p):'prop'
+p@[s:some(p)]
++527
+q:=[x:nat]<ntofn(x)>p:[x:nat]'prop'
+[n:natt][np:<n>p]
+t1:=isp(natt,p,n,ntofn(nofnt(n)),np,isntn1(n)):<nofnt(n)>q
+t2:=somei(nat,q,nofnt(n),t1):some"n"(q)
+s@t3:=someapp(natt,p,s,some"n"(q),[u:natt][v:<u>p]t2(u,v)):some"n"(q)
+t4:=satz27(q,t3):some"n"([x:nat]min"n"(q,x))
+[m:nat][mqm:min"n"(q,m)]
+t5:=ande1(lb"n"(q,m),<m>q,mqm):lb"n"(q,m)
+[n:nat][nq:<n>q]
+t6:=mp(<n>q,lessis"n"(m,n),nq,<n>t5):lessis"n"(m,n)
+mqm@[n:natt][np:<n>p]
+t7:=t6(nofnt(n),t1(n,np)):lessis"n"(m,nofnt(n))
+t8:=islessis1"n"(m,nofnt(ntofn(m)),nofnt(n),isnnt1(m),t7):lessis"n"(nofnt(ntofn(m)),nofnt(n))
+t9:=lessisi(ntofn(m),n,t8):lessis(ntofn(m),n)
+n@t10:=[u:<n>p]t9(u):imp(<n>p,lessis(ntofn(m),n))
+mqm@t11:=[x:natt]t10(x):lb(ntofn(m))
+t12:=ande2(lb"n"(q,m),<m>q,mqm):<ntofn(m)>p
+t13:=andi(lb(ntofn(m)),<ntofn(m)>p,t11,t12):min(ntofn(m))
+t14:=somei(natt,[x:natt]min(x),ntofn(m),t13):some([x:natt]min(x))
+-527
+satz27:=someapp(nat,[x:nat]min"n"(q".527",x),t4".527",some([x:natt]min(x)),[x:nat][y:min"n"(q".527",x)]t14".527"(x,y)):some([x:natt]min(p,x))
+-nt
+@1rt:=rtofn(1):rat
+x0@[x:frac][xix0:inf(x,class(x0))]
++*ii5
+xix0@t35:=tr3eq(tf(x,fr(1,1)),fr(ts"n"(num(x),1),ts"n"(den(x),1)),fr(num(x),den(x)),x,tfeq1a(x,1,1),eqnd(ts"n"(num(x),1),ts"n"(den(x),1),num(x),den(x),satz28a(num(x)),satz28a(den(x))),refeq1(fr(num(x),den(x)),x,fris(x))):eq"n"(tf(x,fr(1,1)),x)
+t36:=isi(ts(x0,1rt),x0,tf(x,fr(1,1)),x,tict(x0,1rt,x,fr(1,1),xix0,inclass(fr(1,1))),xix0,t35):is(ts(x0,1rt),x0)
+-ii5
+x0@example1a:=ratapp1(x0,is(ts(x0,1rt),x0),[x:frac][xi:inf(x,class(x0))]t36".ii5"(x,xi)):is(ts(x0,1rt),x0)
+example1b:=symis(rat,ts(x0,1rt),x0,example1a):is(x0,ts(x0,1rt))
+example1c:=tris(rat,ts(1rt,x0),ts(x0,1rt),x0,comts(1rt,x0),example1a):is(ts(1rt,x0),x0)
+example1d:=symis(rat,ts(1rt,x0),x0,example1c):is(x0,ts(1rt,x0))
+@[x:frac]
++5114
+t1:=tr3eq(tf(fr(den(x),1),x),fr(ts"n"(den(x),num(x)),ts"n"(1,den(x))),fr(ts"n"(num(x),den(x)),ts"n"(1,den(x))),fr(num(x),1),tfeq2a(x,den(x),1),eqn(ts"n"(den(x),num(x)),ts"n"(1,den(x)),ts"n"(num(x),den(x)),comts"n"(den(x),num(x))),satz40c(num(x),1,den(x))):eq"n"(tf(fr(den(x),1),x),fr(num(x),1))
+-5114
+satz114:=isi(ts(rtofn(den(x)),ratof(x)),rtofn(num(x)),tf(fr(den(x),1),x),fr(num(x),1),tict(rtofn(den(x)),ratof(x),fr(den(x),1),x,inclass(fr(den(x),1)),inclass(x)),inclass(fr(num(x),1)),t1".5114"):is(ts(rtofn(den(x)),ratof(x)),rtofn(num(x)))
+@[x1:nat][x2:nat]
+satz114a:=tr3is(rat,ts(rtofn(x2),ratof(fr(x1,x2))),ts(rtofn(den(fr(x1,x2))),ratof(fr(x1,x2))),rtofn(num(fr(x1,x2))),rtofn(x1),ists1(rtofn(x2),rtofn(den(fr(x1,x2))),ratof(fr(x1,x2)),isnert(x2,den(fr(x1,x2)),isden(x1,x2))),satz114(fr(x1,x2)),isnert(num(fr(x1,x2)),x1,numis(x1,x2))):is(ts(rtofn(x2),ratof(fr(x1,x2))),rtofn(x1))
+x0@[y0:rat]
+ov:=ind(rat,[t:rat]is(ts(y0,t),x0),satz110(x0,y0)):rat
+satz110c:=oneax(rat,[t:rat]is(ts(y0,t),x0),satz110(x0,y0)):is(ts(y0,ov(x0,y0)),x0)
+satz110d:=symis(rat,ts(y0,ov(x0,y0)),x0,satz110c):is(x0,ts(y0,ov(x0,y0)))
+satz110e:=tris(rat,ts(ov(x0,y0),y0),ts(y0,ov(x0,y0)),x0,comts(ov(x0,y0),y0),satz110c):is(ts(ov(x0,y0),y0),x0)
+satz110f:=symis(rat,ts(ov(x0,y0),y0),x0,satz110e):is(x0,ts(ov(x0,y0),y0))
+[v0:rat][i:is(ts(y0,v0),x0)]
+satz110g:=satz110b(x0,y0,v0,ov(x0,y0),i,satz110c):is(v0,ov(x0,y0))
+x2@satz114b:=satz110b(rtofn(x1),rtofn(x2),ratof(fr(x1,x2)),ov(rtofn(x1),rtofn(x2)),satz114a,satz110c(rtofn(x1),rtofn(x2))):is(ratof(fr(x1,x2)),ov(rtofn(x1),rtofn(x2)))
+satz114c:=symis(rat,ratof(fr(x1,x2)),ov(rtofn(x1),rtofn(x2)),satz114b):is(ov(rtofn(x1),rtofn(x2)),ratof(fr(x1,x2)))
++5115
+y0@t1:=satz89(ov(y0,x0)):some([t:rat]more(t,ov(y0,x0)))
+[u0:rat][m:more(u0,ov(y0,x0))][u:frac][uiu0:inf(u,class(u0))]
+z:=num(u):nat
+v:=den(u):nat
+t2:=ismore1(u0,ov(rtofn(z),rtofn(v)),ov(y0,x0),tris(rat,u0,ratof(fr(z,v)),ov(rtofn(z),rtofn(v)),isi(u0,ratof(fr(z,v)),u,fr(z,v),uiu0,inclass(fr(z,v)),refeq1(u,fr(z,v),isfr(u))),satz114b(z,v)),m):more(ov(rtofn(z),rtofn(v)),ov(y0,x0))
+t3:=moreisi(rtofn(v),1rt,fr(v,1),fr(1,1),inclass(fr(v,1)),inclass(fr(1,1)),th9"l.or"(more"n"(v,1),is"n"(v,1),moref(fr(v,1),fr(1,1)),eq"n"(fr(v,1),fr(1,1)),satz24(v),[t:more"n"(v,1)]satz111d(v,1,t),[t:is"n"(v,1)]satz111e(v,1,t))):moreis(rtofn(v),1rt)
+t4:=tr3is(rat,ts(rtofn(z),x0),ts(x0,rtofn(z)),ts(x0,ts(ov(rtofn(z),rtofn(v)),rtofn(v))),ts(ts(x0,ov(rtofn(z),rtofn(v))),rtofn(v)),comts(rtofn(z),x0),ists2(rtofn(z),ts(ov(rtofn(z),rtofn(v)),rtofn(v)),x0,satz110f(rtofn(z),rtofn(v))),assts2(x0,ov(rtofn(z),rtofn(v)),rtofn(v))):is(ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),rtofn(v)))
+[n:more(rtofn(v),1rt)]
+t5:=ismore1(ts(ts(x0,ov(rtofn(z),rtofn(v))),rtofn(v)),ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt),symis(rat,ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),rtofn(v)),t4),satz105d(rtofn(v),1rt,ts(x0,ov(rtofn(z),rtofn(v))),n)):more(ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt))
+t6:=moreisi1(ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt),t5):moreis(ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt))
+uiu0@[i:is(rtofn(v),1rt)]
+t7:=moreisi2(ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt),tris(rat,ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),rtofn(v)),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt),t4,ists2(rtofn(v),1rt,ts(x0,ov(rtofn(z),rtofn(v))),i))):moreis(ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt))
+uiu0@t8:=orapp(more(rtofn(v),1rt),is(rtofn(v),1rt),moreis(ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt)),t3,[t:more(rtofn(v),1rt)]t6(t),[t:is(rtofn(v),1rt)]t7(t)):moreis(ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt))
+t9:=ismore12(ts(x0,ov(rtofn(z),rtofn(v))),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt),ts(x0,ov(y0,x0)),y0,example1b(ts(x0,ov(rtofn(z),rtofn(v)))),satz110c(y0,x0),satz105d(ov(rtofn(z),rtofn(v)),ov(y0,x0),x0,t2)):more(ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt),y0)
+t10:=satz87c(ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt),y0,t8,t9):more(ts(rtofn(z),x0),y0)
+t11:=somei(nat,[t:nat]more(ts(rtofn(t),x0),y0),z,t10):some"n"([t:nat]more(ts(rtofn(t),x0),y0))
+m@t12:=ratapp1(u0,some"n"([t:nat]more(ts(rtofn(t),x0),y0)),[u:frac][ui:inf(u,class(u0))]t11(u,ui)):some"n"([t:nat]more(ts(rtofn(t),x0),y0))
+-5115
+y0@satz115:=someapp(rat,[t:rat]more(t,ov(y0,x0)),t1".5115",some"n"([t:nat]more(ts(rtofn(t),x0),y0)),[t:rat][u:more(t,ov(y0,x0))]t12".5115"(t,u)):some"n"([t:nat]more(ts(rtofn(t),x0),y0))
++*5115
+uiu0@t13:=andi(natrt(rtofn(z)),more(ts(rtofn(z),x0),y0),natrti(z),t10):and(natrt(rtofn(z)),more(ts(rtofn(z),x0),y0))
+t14:=somei(rat,[t:rat]and(natrt(t),more(ts(t,x0),y0)),rtofn(z),t13):some([t:rat]and(natrt(t),more(ts(t,x0),y0)))
+m@t15:=ratapp1(u0,some([t:rat]and(natrt(t),more(ts(t,x0),y0))),[u:frac][ui:inf(u,class(u0))]t14(u,ui)):some([t:rat]and(natrt(t),more(ts(t,x0),y0)))
+-5115
+y0@satz115a:=someapp(rat,[t:rat]more(t,ov(y0,x0)),t1".5115",some([t:rat]and(natrt(t),more(ts(t,x0),y0))),[t:rat][u:more(t,ov(y0,x0))]t15".5115"(t,u)):some([t:rat]and(natrt(t),more(ts(t,x0),y0)))
+@[s:set(rat)]
+cutprop1a:=nonempty(rat,s):'prop'
+cutprop1b:=not(all([x:rat]in(x,s))):'prop'
+cutprop1:=and(cutprop1a,cutprop1b):'prop'
+[x0:rat]
+cutprop2a:=all([x:rat]imp(not(in(x,s)),less(x0,x))):'prop'
+s@cutprop2:=all([x:rat]imp(in(x,s),cutprop2a(x))):'prop'
+x0@[y0:rat]
++iii1
+ubprop:=imp(in(y0,s),moreis(x0,y0)):'prop'
+-iii1
+x0@ub:=all([x:rat]ubprop".iii1"(x0,x)):'prop'
+max:=and(ub(x0),in(x0,s)):'prop'
+s@cutprop3:=not(some([x:rat]max(s,x))):'prop'
+cutprop:=and3(cutprop1,cutprop2,cutprop3):'prop'
++*iii1
+y0@lbprop:=imp(in(y0,s),lessis(x0,y0)):'prop'
+-iii1
+x0@lb:=all([x:rat]lbprop".iii1"(x0,x)):'prop'
+min:=and(lb(x0),in(x0,s)):'prop'
+@cut:=ot(set(rat),[x:set(rat)]cutprop(x)):'type'
+[ksi:cut]
+lcl:=in"e"(set(rat),[x:set(rat)]cutprop(x),ksi):set(rat)
+[x0:rat]
+lrt:=in(x0,lcl(ksi)):'prop'
+urt:=not(in(x0,lcl(ksi))):'prop'
+ksi@clcl:=inp(set(rat),[x:set(rat)]cutprop(x),ksi):cutprop(lcl(ksi))
+clcl1:=and3e1(cutprop1(lcl),cutprop2(lcl),cutprop3(lcl),clcl):cutprop1(lcl(ksi))
+clcl2:=and3e2(cutprop1(lcl),cutprop2(lcl),cutprop3(lcl),clcl):cutprop2(lcl(ksi))
+clcl3:=and3e3(cutprop1(lcl),cutprop2(lcl),cutprop3(lcl),clcl):cutprop3(lcl(ksi))
+clcl1a:=ande1(cutprop1a(lcl),cutprop1b(lcl),clcl1):cutprop1a(lcl(ksi))
+clcl1b:=ande2(cutprop1a(lcl),cutprop1b(lcl),clcl1):cutprop1b(lcl(ksi))
+[p:'prop'][p1:[x:rat][t:lrt(ksi,x)]p]
+cutapp1a:=nonemptyapp(rat,lcl,clcl1a,p,p1):p
++*iii1
+ksi@t1:=th1"l.some"(rat,[x:rat]lrt(ksi,x),clcl1b):some([x:rat]urt(ksi,x))
+-iii1
+p@[p1:[x:rat][t:urt(ksi,x)]p]
+cutapp1b:=someapp(rat,[x:rat]urt(ksi,x),t1".iii1",p,p1):p
+ksi@[x0:rat][lx:lrt(ksi,x0)]
++*iii1
+lx@t2:=mp(lrt(ksi,x0),cutprop2a(lcl,x0),lx,<x0>clcl2):cutprop2a(lcl,x0)
+-iii1
+lx@[y0:rat][uy:urt(ksi,y0)]
+cutapp2a:=mp(urt(ksi,y0),less(x0,y0),uy,<y0>t2".iii1"):less(x0,y0)
+cutapp2b:=satz83(x0,y0,cutapp2a):more(y0,x0)
++*iii1
+lx@t3:=th4"l.some"(rat,[x:rat]max(lcl,x),clcl3,x0):not(max(lcl,x0))
+t4:=th4"l.and"(ub(lcl,x0),lrt(ksi,x0),t3,lx):not(ub(lcl,x0))
+t5:=th1"l.some"(rat,[x:rat]ubprop(lcl,x0,x),t4):some([x:rat]not(ubprop(lcl,x0,x)))
+-iii1
+lx@[p:'prop'][p1:[y:rat][t:lrt(ksi,y)][u:less(x0,y)]p][y0:rat][n:not(ubprop".iii1"(lcl,x0,y0))]
++*iii1
+n@t6:=th5"l.imp"(lrt(ksi,y0),moreis(x0,y0),n):lrt(ksi,y0)
+t7:=th6"l.imp"(lrt(ksi,y0),moreis(x0,y0),n):not(moreis(x0,y0))
+t8:=satz81j(x0,y0,t7):less(x0,y0)
+t9:=<t8><t6><y0>p1:p
+-iii1
+p1@cutapp3:=someapp(rat,[y:rat]not(ubprop".iii1"(lcl,x0,y)),t5".iii1",p,[y:rat][t:not(ubprop".iii1"(lcl,x0,y))]t9".iii1"(y,t)):p
+s@[x0:rat][i:in(x0,s)][y0:rat][n:not(in(y0,s))]
++*iii1
+n@t10:=andi(cutprop1a,cutprop1b,nonemptyi(rat,s,x0,i),th1"l.all"(rat,[x:rat]in(x,s),y0,n)):cutprop1
+-iii1
+s@[n:[x:rat]not(max(s,x))]
++*iii1
+n@t11:=th5"l.some"(rat,[x:rat]max(s,x),n):cutprop3
+-iii1
+s@[x0:rat][i:in(x0,s)][y0:rat][n:not(in(y0,s))][l:[x:rat][t:in(x,s)][y:rat][u:not(in(y,s))]less(x,y)][m:[x:rat]not(max(s,x))]
+cut1:=and3i(cutprop1,cutprop2,cutprop3,t10".iii1"(x0,i,y0,n),l,t11".iii1"(m)):cutprop(s)
++rp
+ksi@[eta:cut]
+is:=is"e"(cut,ksi,eta):'prop'
+nis:=not(is(ksi,eta)):'prop'
+[i:is(ksi,eta)]
+ise:=isini(set(rat),[x:set(rat)]cutprop(x),ksi,eta,i):is"e"(set(rat),lcl(ksi),lcl(eta))
+[x0:rat][lx:lrt(ksi,x0)]
+ise1:=issete1(rat,lcl(ksi),lcl(eta),ise,x0,lx):lrt(eta,x0)
+eta@[i:is"e"(set(rat),lcl(ksi),lcl(eta))]
+isi:=isine(set(rat),[x:set(rat)]cutprop(x),ksi,eta,i):is(ksi,eta)
+eta@[l:[x:rat][t:lrt(ksi,x)]lrt(eta,x)][k:[x:rat][t:lrt(eta,x)]lrt(ksi,x)]
+isi1:=isi(isseti(rat,lcl(ksi),lcl(eta),l,k)):is(ksi,eta)
+@[s:set(rat)][cs:cutprop(s)]
+cutof:=out(set(rat),[x:set(rat)]cutprop(x),s,cs):cut
+[x0:rat][i:in(x0,s)]
+ine:=issete1(rat,s,lcl(cutof(s,cs)),isinout(set(rat),[x:set(rat)]cutprop(x),s,cs),x0,i):lrt(cutof(s,cs),x0)
+x0@[lx:lrt(cutof(s,cs),x0)]
+ini:=issete2(rat,s,lcl(cutof(s,cs)),isinout(set(rat),[x:set(rat)]cutprop(x),s,cs),x0,lx):in(x0,s)
+s@[t:set(rat)][cs:cutprop(s)][ct:cutprop(t)][i:[x:rat][u:in(x,s)]in(x,t)][j:[x:rat][u:in(x,t)]in(x,s)]
+isi2:=isouti(set(rat),[x:set(rat)]cutprop(x),s,cs,t,ct,isseti(rat,s,t,i,j)):is(cutof(s,cs),cutof(t,ct))
+@[p:[x:cut]'prop']
+all:=all"l"(cut,p):'prop'
+some:=some"l"(cut,p):'prop'
+one:=one"e"(cut,p):'prop'
+ksi@satz116:=refis(cut,ksi):is(ksi,ksi)
+eta@[i:is(ksi,eta)]
+satz117:=symis(cut,ksi,eta,i):is(eta,ksi)
+eta@[zeta:cut][i:is(ksi,eta)][j:is(eta,zeta)]
+satz118:=tris(cut,ksi,eta,zeta,i,j):is(ksi,zeta)
++1119
+@[x0:rat][y0:rat][m:more(x0,y0)]
+t1:=ec3e23(is"rt"(x0,y0),more(x0,y0),less(x0,y0),satz81b(x0,y0),m):not(less(x0,y0))
+-1119
+ksi@[x0:rat][ux:urt(ksi,x0)][y0:rat][m:more(y0,x0)]
+satz119:=th3"l.imp"(lrt(ksi,y0),less(y0,x0),t1".1119"(y0,x0,m),[t:lrt(ksi,y0)]cutapp2a(y0,t,x0,ux)):urt(ksi,y0)
+y0@[l:less(x0,y0)]
+satz119a:=satz119(satz83(x0,y0,l)):urt(ksi,y0)
++1120
+@[x0:rat][y0:rat][l:less(x0,y0)]
+t1:=ec3e32(is"rt"(x0,y0),more(x0,y0),less(x0,y0),satz81b(x0,y0),l):not(more(x0,y0))
+-1120
+ksi@[x0:rat][lx:lrt(ksi,x0)][y0:rat][l:less(y0,x0)]
+satz120:=th7"l.imp"(lrt(ksi,y0),more(y0,x0),t1".1120"(y0,x0,l),[t:urt(ksi,y0)]cutapp2b(x0,lx,y0,t)):lrt(ksi,y0)
+y0@[m:more(x0,y0)]
+satz120a:=satz120(satz82(x0,y0,m)):lrt(ksi,y0)
+-rp
+s@[i:[x:rat][t:in(x,s)][y:rat][u:less(y,x)]in(y,s)][x0:rat][j:in(x0,s)][y0:rat][n:not(in(y0,s))]
++*iii1
+n@t12:=<y0><j><x0>i:[u:less(y0,x0)]in(y0,s)
+t13:=th3"l.imp"(less(y0,x0),in(y0,s),n,t12):not(less(y0,x0))
+t14:=satz81f(y0,x0,t13):moreis(y0,x0)
+-iii1
+n@[k:is(y0,x0)]
++*iii1
+k@t15:=isp1(rat,[x:rat]in(x,s),x0,y0,j,k):in(y0,s)
+n@t16:=th3"l.imp"(is(y0,x0),in(y0,s),n,[t:is(y0,x0)]t15(t)):nis(y0,x0)
+t17:=ore1(more(y0,x0),is(y0,x0),t14,t16):more(y0,x0)
+t18:=satz82(y0,x0,t17):less(x0,y0)
+i@t19:=[x:rat][t:in(x,s)][y:rat][u:not(in(y,s))]t18(x,t,y,u):cutprop2
+-iii1
+s@[s1:[x:rat][t:in(x,s)]some([y:rat]and(in(y,s),more(y,x)))][x0:rat][i:in(x0,s)]
++*iii1
+i@t20:=<i><x0>s1:some([y:rat]and(in(y,s),more(y,x0)))
+-iii1
+i@[y0:rat][a:and(in(y0,s),more(y0,x0))]
++*iii1
+a@t21:=ande1(in(y0,s),more(y0,x0),a):in(y0,s)
+t22:=ande2(in(y0,s),more(y0,x0),a):more(y0,x0)
+t23:=satz81g(y0,x0,t22):not(lessis(y0,x0))
+t24:=th3"l.imp"(moreis(x0,y0),lessis(y0,x0),t23,[t:moreis(x0,y0)]satz84(x0,y0,t)):not(moreis(x0,y0))
+t25:=th4"l.imp"(in(y0,s),moreis(x0,y0),t21,t24):not(ubprop(x0,y0))
+t26:=th1"l.all"(rat,[y:rat]ubprop(x0,y),y0,t25):not(ub(s,x0))
+t27:=th1"l.and"(ub(s,x0),in(x0,s),t26):not(max(s,x0))
+i@t28:=someapp(rat,[y:rat]and(in(y,s),more(y,x0)),t20,not(max(s,x0)),[y:rat][t:and(in(y,s),more(y,x0))]t27(y,t)):not(max(s,x0))
+-iii1
+x0@[n:not(in(x0,s))]
++*iii1
+n@t29:=th2"l.and"(ub(x0),in(x0,s),n):not(max(s,x0))
+x0@t30:=th1"l.imp"(in(x0,s),not(max(s,x0)),[u:in(x0,s)]t28(u),[u:not(in(x0,s))]t29(u)):not(max(s,x0))
+s1@t31:=t11([x:rat]t30(x)):cutprop3
+-iii1
+s@[x0:rat][i:in(x0,s)][y0:rat][n:not(in(y0,s))][j:[x:rat][t:in(x,s)][y:rat][u:less(y,x)]in(y,s)][s1:[x:rat][t:in(x,s)]some([y:rat]and(in(y,s),more(y,x)))]
+cut2:=and3i(cutprop1,cutprop2,cutprop3,t10".iii1"(x0,i,y0,n),t19".iii1"(j),t31".iii1"(s1)):cutprop(s)
++*rp
+eta@more:=some"rt"([x:rat]and(lrt(ksi,x),urt(eta,x))):'prop'
+[m:more(ksi,eta)][p:'prop'][p1:[x:rat][t:lrt(ksi,x)][u:urt(eta,x)]p][x0:rat][a:and(lrt(ksi,x0),urt(eta,x0))]
++iii2
+t1:=ande1(lrt(ksi,x0),urt(eta,x0),a):lrt(ksi,x0)
+t2:=ande2(lrt(ksi,x0),urt(eta,x0),a):urt(eta,x0)
+t3:=<t2><t1><x0>p1:p
+-iii2
+p1@moreapp:=someapp(rat,[x:rat]and(lrt(ksi,x),urt(eta,x)),m,p,[x:rat][t:and(lrt(ksi,x),urt(eta,x))]t3".iii2"(x,t)):p
+eta@less:=some"rt"([x:rat]and(urt(ksi,x),lrt(eta,x))):'prop'
+[l:less(ksi,eta)][p:'prop'][p1:[x:rat][t:urt(ksi,x)][u:lrt(eta,x)]p][x0:rat][a:and(urt(ksi,x0),lrt(eta,x0))]
++*iii2
+a@t4:=ande1(urt(ksi,x0),lrt(eta,x0),a):urt(ksi,x0)
+t5:=ande2(urt(ksi,x0),lrt(eta,x0),a):lrt(eta,x0)
+t6:=<t5><t4><x0>p1:p
+-iii2
+p1@lessapp:=someapp(rat,[x:rat]and(urt(ksi,x),lrt(eta,x)),l,p,[x:rat][t:and(urt(ksi,x),lrt(eta,x))]t6".iii2"(x,t)):p
+eta@[m:more(ksi,eta)]
++2121
+[x0:rat][lx:lrt(ksi,x0)][ux:urt(eta,x0)]
+t1:=andi(urt(eta,x0),lrt(ksi,x0),ux,lx):and(urt(eta,x0),lrt(ksi,x0))
+t2:=somei(rat,[x:rat]and(urt(eta,x),lrt(ksi,x)),x0,t1):less(eta,ksi)
+-2121
+satz121:=moreapp(m,less(eta,ksi),[x:rat][t:lrt(ksi,x)][u:urt(eta,x)]t2".2121"(x,t,u)):less(eta,ksi)
+eta@[l:less(ksi,eta)]
++2122
+[x0:rat][ux:urt(ksi,x0)][lx:lrt(eta,x0)]
+t1:=andi(lrt(eta,x0),urt(ksi,x0),lx,ux):and(lrt(eta,x0),urt(ksi,x0))
+t2:=somei(rat,[x:rat]and(lrt(eta,x),urt(ksi,x)),x0,t1):more(eta,ksi)
+-2122
+satz122:=lessapp(l,more(eta,ksi),[x:rat][t:urt(ksi,x)][u:lrt(eta,x)]t2".2122"(x,t,u)):more(eta,ksi)
++2123
+eta@[m:more(ksi,eta)][x0:rat][lx:lrt(ksi,x0)][ux:urt(eta,x0)]
+t1:=th3"st.isset"(rat,lcl(ksi),lcl(eta),x0,lx,ux):not(is"e"(set(rat),lcl(ksi),lcl(eta)))
+t2:=th3"l.imp"(is(ksi,eta),is"e"(set(rat),lcl(ksi),lcl(eta)),t1,[t:is(ksi,eta)]ise(ksi,eta,t)):not(is(ksi,eta))
+m@t3:=moreapp(ksi,eta,m,not(is(ksi,eta)),[x:rat][t:lrt(ksi,x)][u:urt(eta,x)]t2(x,t,u)):not(is(ksi,eta))
+eta@t4:=th2"l.ec"(is(ksi,eta),more(ksi,eta),[t:more(ksi,eta)]t3(t)):ec(is(ksi,eta),more(ksi,eta))
+[l:less(ksi,eta)][x0:rat][ux:urt(ksi,x0)][lx:lrt(eta,x0)]
+t5:=th4"st.isset"(rat,lcl(eta),lcl(ksi),x0,lx,ux):not(is"e"(set(rat),lcl(ksi),lcl(eta)))
+t6:=th3"l.imp"(is(ksi,eta),is"e"(set(rat),lcl(ksi),lcl(eta)),t5,[t:is(ksi,eta)]ise(ksi,eta,t)):not(is(ksi,eta))
+l@t7:=lessapp(ksi,eta,l,not(is(ksi,eta)),[x:rat][t:urt(ksi,x)][u:lrt(eta,x)]t6(x,t,u)):not(is(ksi,eta))
+eta@t8:=th1"l.ec"(less(ksi,eta),is(ksi,eta),[t:less(ksi,eta)]t7(t)):ec(less(ksi,eta),is(ksi,eta))
+m@[l:less(ksi,eta)][x0:rat][lx:lrt(ksi,x0)][ux:urt(eta,x0)][y0:rat][uy:urt(ksi,y0)][ly:lrt(eta,y0)]
+t9:=cutapp2a(ksi,x0,lx,y0,uy):less"rt"(x0,y0)
+t10:=cutapp2b(eta,y0,ly,x0,ux):more"rt"(x0,y0)
+t11:=mp(less"rt"(x0,y0),con,t9,ec3e23(is"rt"(x0,y0),more"rt"(x0,y0),less"rt"(x0,y0),satz81b(x0,y0),t10)):con
+ux@t12:=lessapp(ksi,eta,l,con,[x:rat][t:urt(ksi,x)][u:lrt(eta,x)]t11(x,t,u)):con
+l@t13:=moreapp(ksi,eta,m,con,[x:rat][t:lrt(ksi,x)][u:urt(eta,x)]t12(x,t,u)):con
+m@t14:=[t:less(ksi,eta)]t13(t):not(less(ksi,eta))
+eta@t15:=th1"l.ec"(more(ksi,eta),less(ksi,eta),[t:more(ksi,eta)]t14(t)):ec(more(ksi,eta),less(ksi,eta))
+a:=th6"l.ec3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),t4,t15,t8):ec3(is(ksi,eta),more(ksi,eta),less(ksi,eta))
+[i:is(ksi,eta)]
+t16:=or3i1(is(ksi,eta),more(ksi,eta),less(ksi,eta),i):or3(is(ksi,eta),more(ksi,eta),less(ksi,eta))
+eta@[n:nis(ksi,eta)]
+t17:=th3"l.imp"(is"e"(set(rat),lcl(ksi),lcl(eta)),is(ksi,eta),n,[t:is"e"(set(rat),lcl(ksi),lcl(eta))]isi(ksi,eta,t)):not(is"e"(set(rat),lcl(ksi),lcl(eta)))
+t18:=th5"st.isset"(rat,lcl(ksi),lcl(eta),t17):or(more(ksi,eta),more(eta,ksi))
+t19:=th8"l.or"(more(ksi,eta),more(eta,ksi),less(ksi,eta),t18,[t:more(eta,ksi)]satz121(eta,ksi,t)):or(more(ksi,eta),less(ksi,eta))
+t20:=th7"l.or3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),t19):or3(is(ksi,eta),more(ksi,eta),less(ksi,eta))
+eta@b:=th1"l.imp"(is(ksi,eta),or3(is(ksi,eta),more(ksi,eta),less(ksi,eta)),[t:is(ksi,eta)]t16(t),[t:nis(ksi,eta)]t20(t)):or3(is(ksi,eta),more(ksi,eta),less(ksi,eta))
+-2123
+eta@satz123:=orec3i(is(ksi,eta),more(ksi,eta),less(ksi,eta),b".2123",a".2123"):orec3(is(ksi,eta),more(ksi,eta),less(ksi,eta))
+satz123a:=orec3e1(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123):or3(is(ksi,eta),more(ksi,eta),less(ksi,eta))
+satz123b:=orec3e2(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123):ec3(is(ksi,eta),more(ksi,eta),less(ksi,eta))
+moreis:=or(more(ksi,eta),is(ksi,eta)):'prop'
+lessis:=or(less(ksi,eta),is(ksi,eta)):'prop'
+[m:moreis(ksi,eta)]
+satz124:=th9"l.or"(more(ksi,eta),is(ksi,eta),less(eta,ksi),is(eta,ksi),m,[t:more(ksi,eta)]satz121(t),[t:is(ksi,eta)]symis(cut,ksi,eta,t)):lessis(eta,ksi)
+eta@[l:lessis(ksi,eta)]
+satz125:=th9"l.or"(less(ksi,eta),is(ksi,eta),more(eta,ksi),is(eta,ksi),l,[t:less(ksi,eta)]satz122(t),[t:is(ksi,eta)]symis(cut,ksi,eta,t)):moreis(eta,ksi)
+zeta@[i:is(ksi,eta)][m:more(ksi,zeta)]
+ismore1:=isp(cut,[u:cut]more(u,zeta),ksi,eta,m,i):more(eta,zeta)
+i@[m:more(zeta,ksi)]
+ismore2:=isp(cut,[u:cut]more(zeta,u),ksi,eta,m,i):more(zeta,eta)
+i@[l:less(ksi,zeta)]
+isless1:=isp(cut,[u:cut]less(u,zeta),ksi,eta,l,i):less(eta,zeta)
+i@[l:less(zeta,ksi)]
+isless2:=isp(cut,[u:cut]less(zeta,u),ksi,eta,l,i):less(zeta,eta)
+i@[m:moreis(ksi,zeta)]
+ismoreis1:=isp(cut,[u:cut]moreis(u,zeta),ksi,eta,m,i):moreis(eta,zeta)
+i@[m:moreis(zeta,ksi)]
+ismoreis2:=isp(cut,[u:cut]moreis(zeta,u),ksi,eta,m,i):moreis(zeta,eta)
+i@[l:lessis(ksi,zeta)]
+islessis1:=isp(cut,[u:cut]lessis(u,zeta),ksi,eta,l,i):lessis(eta,zeta)
+i@[l:lessis(zeta,ksi)]
+islessis2:=isp(cut,[u:cut]lessis(zeta,u),ksi,eta,l,i):lessis(zeta,eta)
+eta@[i:is(ksi,eta)]
+moreisi2:=ori2(more(ksi,eta),is(ksi,eta),i):moreis(ksi,eta)
+lessisi2:=ori2(less(ksi,eta),is(ksi,eta),i):lessis(ksi,eta)
+eta@[m:more(ksi,eta)]
+moreisi1:=ori1(more(ksi,eta),is(ksi,eta),m):moreis(ksi,eta)
+eta@[l:less(ksi,eta)]
+lessisi1:=ori1(less(ksi,eta),is(ksi,eta),l):lessis(ksi,eta)
+zeta@[upsilon:cut][i:is(ksi,eta)][j:is(zeta,upsilon)][m:more(ksi,zeta)]
+ismore12:=ismore2(zeta,upsilon,eta,j,ismore1(ksi,eta,zeta,i,m)):more(eta,upsilon)
+j@[l:less(ksi,zeta)]
+isless12:=isless2(zeta,upsilon,eta,j,isless1(ksi,eta,zeta,i,l)):less(eta,upsilon)
+j@[m:moreis(ksi,zeta)]
+ismoreis12:=ismoreis2(zeta,upsilon,eta,j,ismoreis1(ksi,eta,zeta,i,m)):moreis(eta,upsilon)
+j@[l:lessis(ksi,zeta)]
+islessis12:=islessis2(zeta,upsilon,eta,j,islessis1(ksi,eta,zeta,i,l)):lessis(eta,upsilon)
+eta@[m:moreis(ksi,eta)]
+satz123c:=th7"l.ec3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123b,comor(more(ksi,eta),is(ksi,eta),m)):not(less(ksi,eta))
+eta@[l:lessis(ksi,eta)]
+satz123d:=th9"l.ec3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123b,l):not(more(ksi,eta))
+eta@[n:not(more(ksi,eta))]
+satz123e:=th2"l.or3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123a,n):lessis(ksi,eta)
+eta@[n:not(less(ksi,eta))]
+satz123f:=comor(is(ksi,eta),more(ksi,eta),th3"l.or3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123a,n)):moreis(ksi,eta)
+eta@[m:more(ksi,eta)]
+satz123g:=th3"l.or"(less(ksi,eta),is(ksi,eta),ec3e23(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123b,m),ec3e21(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123b,m)):not(lessis(ksi,eta))
+eta@[l:less(ksi,eta)]
+satz123h:=th3"l.or"(more(ksi,eta),is(ksi,eta),ec3e32(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123b,l),ec3e31(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123b,l)):not(moreis(ksi,eta))
+eta@[n:not(moreis(ksi,eta))]
+satz123j:=or3e3(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123a,th5"l.or"(more(ksi,eta),is(ksi,eta),n),th4"l.or"(more(ksi,eta),is(ksi,eta),n)):less(ksi,eta)
+eta@[n:not(lessis(ksi,eta))]
+satz123k:=or3e2(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123a,th4"l.or"(less(ksi,eta),is(ksi,eta),n),th5"l.or"(less(ksi,eta),is(ksi,eta),n)):more(ksi,eta)
+zeta@[l:less(ksi,eta)][k:less(eta,zeta)]
++2126
+[x0:rat][ux:urt(ksi,x0)][lx:lrt(eta,x0)][y0:rat][uy:urt(eta,y0)][ly:lrt(zeta,y0)]
+t1:=cutapp2a(eta,x0,lx,y0,uy):less"rt"(x0,y0)
+t2:=satz119a(ksi,x0,ux,y0,t1):urt(ksi,y0)
+t3:=andi(urt(ksi,y0),lrt(zeta,y0),t2,ly):and(urt(ksi,y0),lrt(zeta,y0))
+t4:=somei(rat,[x:rat]and(urt(ksi,x),lrt(zeta,x)),y0,t3):less(ksi,zeta)
+lx@t5:=lessapp(eta,zeta,k,less(ksi,zeta),[x:rat][t:urt(eta,x)][u:lrt(zeta,x)]t4(x,t,u)):less(ksi,zeta)
+-2126
+satz126:=lessapp(ksi,eta,l,less(ksi,zeta),[x:rat][t:urt(ksi,x)][u:lrt(eta,x)]t5".2126"(x,t,u)):less(ksi,zeta)
+trless:=satz126:less(ksi,zeta)
+zeta@[m:more(ksi,eta)][n:more(eta,zeta)]
+trmore:=satz122(zeta,ksi,satz126(zeta,eta,ksi,satz121(eta,zeta,n),satz121(ksi,eta,m))):more(ksi,zeta)
+zeta@[l:lessis(ksi,eta)][k:less(eta,zeta)]
+satz127a:=orapp(less(ksi,eta),is(ksi,eta),less(ksi,zeta),l,[u:less(ksi,eta)]trless(u,k),[u:is(ksi,eta)]isless1(eta,ksi,zeta,symis(cut,ksi,eta,u),k)):less(ksi,zeta)
+zeta@[l:less(ksi,eta)][k:lessis(eta,zeta)]
+satz127b:=orapp(less(eta,zeta),is(eta,zeta),less(ksi,zeta),k,[u:less(eta,zeta)]trless(l,u),[u:is(eta,zeta)]isless2(eta,zeta,ksi,u,l)):less(ksi,zeta)
+zeta@[m:moreis(ksi,eta)][n:more(eta,zeta)]
+satz127c:=satz122(zeta,ksi,satz127b(zeta,eta,ksi,satz121(eta,zeta,n),satz124(ksi,eta,m))):more(ksi,zeta)
+zeta@[m:more(ksi,eta)][n:moreis(eta,zeta)]
+satz127d:=satz122(zeta,ksi,satz127a(zeta,eta,ksi,satz124(eta,zeta,n),satz121(ksi,eta,m))):more(ksi,zeta)
+zeta@[l:lessis(ksi,eta)][k:lessis(eta,zeta)]
++2128
+[i:is(ksi,eta)][j:is(eta,zeta)]
+t1:=lessisi2(ksi,zeta,tris(cut,ksi,eta,zeta,i,j)):lessis(ksi,zeta)
+i@[j:less(eta,zeta)]
+t2:=lessisi1(ksi,zeta,satz127a(l,j)):lessis(ksi,zeta)
+i@t3:=orapp(less(eta,zeta),is(eta,zeta),lessis(ksi,zeta),k,[t:less(eta,zeta)]t2(t),[t:is(eta,zeta)]t1(t)):lessis(ksi,zeta)
+k@[j:less(ksi,eta)]
+t4:=lessisi1(ksi,zeta,satz127b(j,k)):lessis(ksi,zeta)
+-2128
+satz128:=orapp(less(ksi,eta),is(ksi,eta),lessis(ksi,zeta),l,[t:less(ksi,eta)]t4".2128"(t),[t:is(ksi,eta)]t3".2128"(t)):lessis(ksi,zeta)
+trlessis:=satz128:lessis(ksi,zeta)
+zeta@[m:moreis(ksi,eta)][n:moreis(eta,zeta)]
+trmoreis:=satz125(zeta,ksi,satz128(zeta,eta,ksi,satz124(eta,zeta,n),satz124(ksi,eta,m))):moreis(ksi,zeta)
+eta@[z0:rat][x0:rat][y0:rat]
+sumprop1:=and3(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,pl(x0,y0))):'prop'
+z0@sumprop:=some"rt"([x:rat]some"rt"([y:rat]sumprop1(z0,x,y))):'prop'
+eta@sum:=setof(rat,[z:rat]sumprop(z)):set(rat)
+x0@[lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][i:is"rt"(z0,pl(x0,y0))]
++iii3
+t1:=and3i(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,pl(x0,y0)),lx,ly,i):sumprop1(z0,x0,y0)
+t2:=somei(rat,[y:rat]sumprop1(z0,x0,y),y0,t1):some"rt"([y:rat]sumprop1(z0,x0,y))
+t3:=somei(rat,[x:rat]some"rt"([y:rat]sumprop1(z0,x,y)),x0,t2):sumprop(z0)
+-iii3
+sum1:=estii(rat,[z:rat]sumprop(z),z0,t3".iii3"):in(z0,sum)
+z0@[i:in(z0,sum)][p:'prop'][p1:[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,pl(x,y))]p]
++*iii3
+p1@t4:=estie(rat,[z:rat]sumprop(z),z0,i):sumprop(z0)
+-iii3
+p1@[x0:rat][px:some"rt"([y:rat]sumprop1(z0,x0,y))][y0:rat][py:sumprop1(z0,x0,y0)]
++*iii3
+py@t5:=and3e1(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,pl(x0,y0)),py):lrt(ksi,x0)
+t6:=and3e2(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,pl(x0,y0)),py):lrt(eta,y0)
+t7:=and3e3(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,pl(x0,y0)),py):is"rt"(z0,pl(x0,y0))
+t8:=<t7><t6><y0><t5><x0>p1:p
+px@t9:=someapp(rat,[y:rat]sumprop1(z0,x0,y),px,p,[y:rat][t:sumprop1(z0,x0,y)]t8(y,t)):p
+-iii3
+p1@sumapp:=someapp(rat,[x:rat]some"rt"([y:rat]sumprop1(z0,x,y)),t4".iii3",p,[x:rat][t:some"rt"([y:rat]sumprop1(z0,x,y))]t9".iii3"(x,t)):p
+eta@[x1:rat][ux:urt(ksi,x1)][y1:rat][uy:urt(eta,y1)]
++3129
+[z0:rat][i:in(z0,sum)][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][j:is"rt"(z0,pl(x0,y0))]
+t1:=cutapp2a(ksi,x0,lx,x1,ux):less"rt"(x0,x1)
+t2:=cutapp2a(eta,y0,ly,y1,uy):less"rt"(y0,y1)
+t3:=isless1"rt"(pl(x0,y0),z0,pl(x1,y1),symis(rat,z0,pl(x0,y0),j),satz98a(x0,x1,y0,y1,t1,t2)):less"rt"(z0,pl(x1,y1))
+t4:=ec3e31(is"rt"(z0,pl(x1,y1)),more"rt"(z0,pl(x1,y1)),less"rt"(z0,pl(x1,y1)),satz81b(z0,pl(x1,y1)),t3):nis"rt"(z0,pl(x1,y1))
+i@t5:=sumapp(ksi,eta,z0,i,nis"rt"(z0,pl(x1,y1)),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,pl(x,y))]t4(x,t,y,u,v)):nis"rt"(z0,pl(x1,y1))
+-3129
+satz129a:=th3"l.imp"(in(pl(x1,y1),sum),nis"rt"(pl(x1,y1),pl(x1,y1)),weli(is"rt"(pl(x1,y1),pl(x1,y1)),refis(rat,pl(x1,y1))),[t:in(pl(x1,y1),sum)]t5".3129"(pl(x1,y1),t)):not(in(pl(x1,y1),sum))
++*3129
+eta@[u0:rat][i:in(u0,sum)][z0:rat][l:less"rt"(z0,u0)][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][j:is"rt"(u0,pl(x0,y0))]
+t6:=isless2"rt"(u0,pl(x0,y0),z0,j,l):less"rt"(z0,pl(x0,y0))
+z1:=ov(z0,pl(x0,y0)):rat
+t7:=isless12"rt"(z0,ts(z1,pl(x0,y0)),pl(x0,y0),ts(1rt,pl(x0,y0)),satz110f(z0,pl(x0,y0)),example1d(pl(x0,y0)),t6):less"rt"(ts(z1,pl(x0,y0)),ts(1rt,pl(x0,y0)))
+t8:=satz106c(z1,1rt,pl(x0,y0),t7):less"rt"(z1,1rt)
+t9:=isless2"rt"(ts(x0,1rt),x0,ts(x0,z1),example1a(x0),satz105f(z1,1rt,x0,t8)):less"rt"(ts(x0,z1),x0)
+t10:=isless2"rt"(ts(y0,1rt),y0,ts(y0,z1),example1a(y0),satz105f(z1,1rt,y0,t8)):less"rt"(ts(y0,z1),y0)
+t11:=satz120(ksi,x0,lx,ts(x0,z1),t9):lrt(ksi,ts(x0,z1))
+t12:=satz120(eta,y0,ly,ts(y0,z1),t10):lrt(eta,ts(y0,z1))
+t13:=tris(rat,pl(ts(x0,z1),ts(y0,z1)),ts(pl(x0,y0),z1),z0,distpt1(x0,y0,z1),satz110c(z0,pl(x0,y0))):is"rt"(pl(ts(x0,z1),ts(y0,z1)),z0)
+t14:=symis(rat,pl(ts(x0,z1),ts(y0,z1)),z0,t13):is"rt"(z0,pl(ts(x0,z1),ts(y0,z1)))
+t15:=sum1(ksi,eta,z0,ts(x0,z1),t11,ts(y0,z1),t12,t14):in(z0,sum)
+l@t16:=sumapp(ksi,eta,u0,i,in(z0,sum),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(u0,pl(x,y))]t15(x,t,y,u,v)):in(z0,sum)
+eta@[z0:rat][i:in(z0,sum)][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][j:is"rt"(z0,pl(x0,y0))][x1:rat][lx1:lrt(ksi,x1)][l:less"rt"(x0,x1)]
+t17:=sum1(ksi,eta,pl(x1,y0),x1,lx1,y0,ly,refis(rat,pl(x1,y0))):in(pl(x1,y0),sum)
+t18:=satz96a(x1,x0,y0,satz83(x0,x1,l)):more"rt"(pl(x1,y0),pl(x0,y0))
+t19:=ismore2"rt"(pl(x0,y0),z0,pl(x1,y0),symis(rat,z0,pl(x0,y0),j),t18):more"rt"(pl(x1,y0),z0)
+t20:=andi(in(pl(x1,y0),sum),more"rt"(pl(x1,y0),z0),t17,t19):and(in(pl(x1,y0),sum),more"rt"(pl(x1,y0),z0))
+t21:=somei(rat,[y:rat]and(in(y,sum),more"rt"(y,z0)),pl(x1,y0),t20):some"rt"([y:rat]and(in(y,sum),more"rt"(y,z0)))
+j@t22:=cutapp3(ksi,x0,lx,some"rt"([y:rat]and(in(y,sum),more"rt"(y,z0))),[x:rat][t:lrt(ksi,x)][u:less"rt"(x0,x)]t21(x,t,u)):some"rt"([y:rat]and(in(y,sum),more"rt"(y,z0)))
+i@t23:=sumapp(ksi,eta,z0,i,some"rt"([y:rat]and(in(y,sum),more"rt"(y,z0))),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,pl(x,y))]t22(x,t,y,u,v)):some"rt"([y:rat]and(in(y,sum),more"rt"(y,z0)))
+eta@[x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][x1:rat][ux:urt(ksi,x1)][y1:rat][uy:urt(eta,y1)]
+t24:=cut2(sum,pl(x0,y0),sum1(ksi,eta,pl(x0,y0),x0,lx,y0,ly,refis(rat,pl(x0,y0))),pl(x1,y1),satz129a(x1,ux,y1,uy),[x:rat][t:in(x,sum)][y:rat][u:less"rt"(y,x)]t16(x,t,y,u),[x:rat][t:in(x,sum)]t23(x,t)):cutprop(sum)
+ux@t25:=cutapp1b(eta,cutprop(sum),[y:rat][t:urt(eta,y)]t24(y,t)):cutprop(sum)
+ly@t26:=cutapp1b(ksi,cutprop(sum),[x:rat][t:urt(ksi,x)]t25(x,t)):cutprop(sum)
+lx@t27:=cutapp1a(eta,cutprop(sum),[y:rat][t:lrt(eta,y)]t26(y,t)):cutprop(sum)
+-3129
+eta@satz129:=cutapp1a(ksi,cutprop(sum),[x:rat][t:lrt(ksi,x)]t27".3129"(x,t)):cutprop(sum)
+pl:=cutof(sum,satz129):cut
+[z0:rat][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][i:is"rt"(z0,pl"rt"(x0,y0))]
+lrtpl:=ine(sum,satz129,z0,sum1(z0,x0,lx,y0,ly,i)):lrt(pl(ksi,eta),z0)
+eta@[z0:rat][x0:rat][ux:urt(ksi,x0)][y0:rat][uy:urt(eta,y0)][i:is"rt"(z0,pl"rt"(x0,y0))]
++*iii3
+i@t10:=isp1(rat,[x:rat]not(in(x,sum)),pl"rt"(x0,y0),z0,satz129a(x0,ux,y0,uy),i):not(in(z0,sum))
+-iii3
+i@urtpl:=th3"l.imp"(lrt(pl(ksi,eta),z0),in(z0,sum),t10".iii3",[t:lrt(pl(ksi,eta),z0)]ini(sum,satz129,z0,t)):urt(pl(ksi,eta),z0)
+eta@[z0:rat][lz:lrt(pl(ksi,eta),z0)][p:'prop'][p1:[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,pl"rt"(x,y))]p]
++*iii3
+p1@t11:=ini(sum,satz129,z0,lz):in(z0,sum)
+-iii3
+p1@plapp:=sumapp(z0,t11".iii3",p,p1):p
+zeta@[i:is(ksi,eta)]
+ispl1:=isf(cut,cut,[u:cut]pl(u,zeta),ksi,eta,i):is(pl(ksi,zeta),pl(eta,zeta))
+ispl2:=isf(cut,cut,[u:cut]pl(zeta,u),ksi,eta,i):is(pl(zeta,ksi),pl(zeta,eta))
+upsilon@[i:is(ksi,eta)][j:is(zeta,upsilon)]
+ispl12:=tris(cut,pl(ksi,zeta),pl(eta,zeta),pl(eta,upsilon),ispl1(i),ispl2(zeta,upsilon,eta,j)):is(pl(ksi,zeta),pl(eta,upsilon))
++3130
+eta@[z0:rat][lz:lrt(pl(ksi,eta),z0)][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][i:is"rt"(z0,pl"rt"(x0,y0))]
+t1:=tris(rat,z0,pl"rt"(x0,y0),pl"rt"(y0,x0),i,compl(x0,y0)):is"rt"(z0,pl"rt"(y0,x0))
+t2:=lrtpl(eta,ksi,z0,y0,ly,x0,lx,t1):lrt(pl(eta,ksi),z0)
+lz@t3:=plapp(ksi,eta,z0,lz,lrt(pl(eta,ksi),z0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,pl"rt"(x,y))]t2(x,t,y,u,v)):lrt(pl(eta,ksi),z0)
+-3130
+eta@satz130:=isi1(pl(ksi,eta),pl(eta,ksi),[x:rat][t:lrt(pl(ksi,eta),x)]t3".3130"(x,t),[x:rat][t:lrt(pl(eta,ksi),x)]t3".3130"(eta,ksi,x,t)):is(pl(ksi,eta),pl(eta,ksi))
+compl:=satz130:is(pl(ksi,eta),pl(eta,ksi))
++3131
+zeta@[u0:rat][lu:lrt(pl(pl(ksi,eta),zeta),u0)][v0:rat][lv:lrt(pl(ksi,eta),v0)][z0:rat][lz:lrt(zeta,z0)][i:is"rt"(u0,pl"rt"(v0,z0))][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][j:is"rt"(v0,pl"rt"(x0,y0))]
+t1:=tr3is(rat,u0,pl"rt"(v0,z0),pl"rt"(pl"rt"(x0,y0),z0),pl"rt"(x0,pl"rt"(y0,z0)),i,ispl1"rt"(v0,pl"rt"(x0,y0),z0,j),asspl1(x0,y0,z0)):is"rt"(u0,pl"rt"(x0,pl"rt"(y0,z0)))
+t2:=lrtpl(eta,zeta,pl"rt"(y0,z0),y0,ly,z0,lz,refis(rat,pl"rt"(y0,z0))):lrt(pl(eta,zeta),pl"rt"(y0,z0))
+t3:=lrtpl(ksi,pl(eta,zeta),u0,x0,lx,pl"rt"(y0,z0),t2,t1):lrt(pl(ksi,pl(eta,zeta)),u0)
+i@t4:=plapp(ksi,eta,v0,lv,lrt(pl(ksi,pl(eta,zeta)),u0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(v0,pl"rt"(x,y))]t3(x,t,y,u,v)):lrt(pl(ksi,pl(eta,zeta)),u0)
+lu@t5:=plapp(pl(ksi,eta),zeta,u0,lu,lrt(pl(ksi,pl(eta,zeta)),u0),[x:rat][t:lrt(pl(ksi,eta),x)][y:rat][u:lrt(zeta,y)][v:is"rt"(u0,pl"rt"(x,y))]t4(x,t,y,u,v)):lrt(pl(ksi,pl(eta,zeta)),u0)
+u0@[lu:lrt(pl(ksi,pl(eta,zeta)),u0)][x0:rat][lx:lrt(ksi,x0)][v0:rat][lv:lrt(pl(eta,zeta),v0)][i:is"rt"(u0,pl"rt"(x0,v0))][y0:rat][ly:lrt(eta,y0)][z0:rat][lz:lrt(zeta,z0)][j:is"rt"(v0,pl"rt"(y0,z0))]
+t6:=tr3is(rat,u0,pl"rt"(x0,v0),pl"rt"(x0,pl"rt"(y0,z0)),pl"rt"(pl"rt"(x0,y0),z0),i,ispl2"rt"(v0,pl"rt"(y0,z0),x0,j),asspl2(x0,y0,z0)):is"rt"(u0,pl"rt"(pl"rt"(x0,y0),z0))
+t7:=lrtpl(ksi,eta,pl"rt"(x0,y0),x0,lx,y0,ly,refis(rat,pl"rt"(x0,y0))):lrt(pl(ksi,eta),pl"rt"(x0,y0))
+t8:=lrtpl(pl(ksi,eta),zeta,u0,pl"rt"(x0,y0),t7,z0,lz,t6):lrt(pl(pl(ksi,eta),zeta),u0)
+i@t9:=plapp(eta,zeta,v0,lv,lrt(pl(pl(ksi,eta),zeta),u0),[x:rat][t:lrt(eta,x)][y:rat][u:lrt(zeta,y)][v:is"rt"(v0,pl"rt"(x,y))]t8(x,t,y,u,v)):lrt(pl(pl(ksi,eta),zeta),u0)
+lu@t10:=plapp(ksi,pl(eta,zeta),u0,lu,lrt(pl(pl(ksi,eta),zeta),u0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(pl(eta,zeta),y)][v:is"rt"(u0,pl"rt"(x,y))]t9(x,t,y,u,v)):lrt(pl(pl(ksi,eta),zeta),u0)
+-3131
+zeta@satz131:=isi1(pl(pl(ksi,eta),zeta),pl(ksi,pl(eta,zeta)),[x:rat][t:lrt(pl(pl(ksi,eta),zeta),x)]t5".3131"(x,t),[x:rat][t:lrt(pl(ksi,pl(eta,zeta)),x)]t10".3131"(x,t)):is(pl(pl(ksi,eta),zeta),pl(ksi,pl(eta,zeta)))
+asspl1:=satz131:is(pl(pl(ksi,eta),zeta),pl(ksi,pl(eta,zeta)))
+asspl2:=symis(cut,pl(pl(ksi,eta),zeta),pl(ksi,pl(eta,zeta)),satz131):is(pl(ksi,pl(eta,zeta)),pl(pl(ksi,eta),zeta))
+ksi@[a0:rat]
++3132
+[x0:rat][y0:rat]
+prop1:=and(lrt(ksi,x0),urt(ksi,y0)):'prop'
+[p:prop1]
+t1:=cutapp2b(x0,ande1(lrt(ksi,x0),urt(ksi,y0),p),y0,ande2(lrt(ksi,x0),urt(ksi,y0),p)):more"rt"(y0,x0)
+prop2:=is"rt"(mn(y0,x0,t1),a0):'prop'
+y0@prop3:=and(prop1,[t:prop1]prop2(t)):'prop'
+a0@prop4:=some"rt"([x:rat]some"rt"([y:rat]prop3(x,y))):'prop'
+x0@[lx:lrt(ksi,x0)][y0:rat][uy:urt(ksi,y0)]
+t2:=cutapp2b(x0,lx,y0,uy):more"rt"(y0,x0)
+[n:nat][m:more"rt"(ts(rtofn(n),a0),mn(y0,x0,t2))]
+t3:=satz96d(ts(rtofn(n),a0),mn(y0,x0,t2),x0,m):more"rt"(pl"rt"(x0,ts(rtofn(n),a0)),pl"rt"(x0,mn(y0,x0,t2)))
+t4:=ismore2"rt"(pl"rt"(x0,mn(y0,x0,t2)),y0,pl"rt"(x0,ts(rtofn(n),a0)),satz101c(y0,x0,t2),t3):more"rt"(pl"rt"(x0,ts(rtofn(n),a0)),y0)
+t5:=satz119(y0,uy,pl"rt"(x0,ts(rtofn(n),a0)),t4):urt(pl"rt"(x0,ts(rtofn(n),a0)))
+t6:=somei(nat,[x:nat]urt(pl"rt"(x0,ts(rtofn(x),a0))),n,t5):some"n"([x:nat]urt(pl"rt"(x0,ts(rtofn(x),a0))))
+uy@t7:=someapp(nat,[x:nat]more"rt"(ts(rtofn(x),a0),mn(y0,x0,t2)),satz115(a0,mn(y0,x0,t2)),some"n"([x:nat]urt(pl"rt"(x0,ts(rtofn(x),a0)))),[x:nat][t:more"rt"(ts(rtofn(x),a0),mn(y0,x0,t2))]t6(x,t)):some"n"([x:nat]urt(pl"rt"(x0,ts(rtofn(x),a0))))
+[u:nat][m:min"n"([x:nat]urt(pl"rt"(x0,ts(rtofn(x),a0))),u)]
+t8:=ande1(lb"n"([x:nat]urt(pl"rt"(x0,ts(rtofn(x),a0))),u),urt(pl"rt"(x0,ts(rtofn(u),a0))),m):lb"n"([x:nat]urt(pl"rt"(x0,ts(rtofn(x),a0))),u)
+t9:=ande2(lb"n"([x:nat]urt(pl"rt"(x0,ts(rtofn(x),a0))),u),urt(pl"rt"(x0,ts(rtofn(u),a0))),m):urt(pl"rt"(x0,ts(rtofn(u),a0)))
+[i:is"n"(u,1)]
+u0:=pl"rt"(x0,a0):rat
+t10:=tr3is(rat,ts(rtofn(u),a0),ts(1rt,a0),ts(a0,1rt),a0,ists1(rtofn(u),1rt,a0,isnert(u,1,i)),comts(1rt,a0),example1a(a0)):is"rt"(ts(rtofn(u),a0),a0)
+t11:=isp(rat,[x:rat]urt(pl"rt"(x0,x)),ts(rtofn(u),a0),a0,t9,t10):urt(ksi,u0)
+t12:=andi(lrt(ksi,x0),urt(ksi,u0),lx,t11):prop1(x0,u0)
+[p:prop1(x0,u0)]
+t13:=symis(rat,a0,mn(u0,x0,t1(x0,u0,p)),satz101g(u0,x0,a0,t1(x0,u0,p),refis(rat,u0))):prop2(x0,u0,p)
+i@t14:=andi(prop1(x0,u0),[t:prop1(x0,u0)]prop2(x0,u0,t),t12,[t:prop1(x0,u0)]t13(t)):prop3(x0,u0)
+t15:=somei(rat,[y:rat]prop3(x0,y),u0,t14):some"rt"([y:rat]prop3(x0,y))
+t16:=somei(rat,[x:rat]some"rt"([y:rat]prop3(x,y)),x0,t15):prop4
+m@[o:more"n"(u,1)]
+t17:=morei(rtofn(u),1rt,fr(u,1),fr(1,1),inclass(fr(u,1)),inclass(fr(1,1)),satz111d(u,1,o)):more"rt"(rtofn(u),1rt)
+um10:=mn(rtofn(u),1rt,t17):rat
+t18:=satz112g(rtofn(u),natrti(u),1rt,natrti(1),t17):natrt(um10)
+um1:=nofrt(um10,t18):nat
+v0:=pl"rt"(x0,ts(um10,a0)):rat
+w0:=pl"rt"(x0,ts(rtofn(u),a0)):rat
+t19:=isless2"rt"(pl"rt"(um10,1rt),rtofn(u),um10,satz101e(rtofn(u),1rt,t17),satz94a(um10,1rt)):less"rt"(um10,rtofn(u))
+t20:=lesse(um10,rtofn(u),fr(um1,1),fr(u,1),inclassn(um10,t18),inclass(fr(u,1)),t19):lessf(fr(um1,1),fr(u,1))
+t21:=satz111c(um1,u,t20):less"n"(um1,u)
+t22:=th3"l.imp"(lessis"n"(u,um1),moreis"n"(um1,u),satz10h(um1,u,t21),[t:lessis"n"(u,um1)]satz14(u,um1,t)):not(lessis"n"(u,um1))
+t23:=et(lrt(pl"rt"(x0,ts(rtofn(um1),a0))),th3"l.imp"(urt(pl"rt"(x0,ts(rtofn(um1),a0))),lessis"n"(u,um1),t22,<um1>t8)):lrt(pl"rt"(x0,ts(rtofn(um1),a0)))
+t24:=isp1(rat,[x:rat]lrt(pl"rt"(x0,ts(x,a0))),rtofn(um1),um10,t23,isrtn1(um10,t18)):lrt(ksi,v0)
+t25:=andi(lrt(ksi,v0),urt(ksi,w0),t24,t9):prop1(v0,w0)
+t26:=tr3is(rat,pl"rt"(ts(um10,a0),a0),pl"rt"(ts(um10,a0),ts(1rt,a0)),ts(pl"rt"(um10,1rt),a0),ts(rtofn(u),a0),ispl2"rt"(a0,ts(1rt,a0),ts(um10,a0),example1d(a0)),distpt1(um10,1rt,a0),ists1(pl"rt"(um10,1rt),rtofn(u),a0,satz101e(rtofn(u),1rt,t17))):is"rt"(pl"rt"(ts(um10,a0),a0),ts(rtofn(u),a0))
+t27:=tris(rat,pl"rt"(v0,a0),pl"rt"(x0,pl"rt"(ts(um10,a0),a0)),w0,asspl1"rt"(x0,ts(um10,a0),a0),ispl2"rt"(pl"rt"(ts(um10,a0),a0),ts(rtofn(u),a0),x0,t26)):is"rt"(pl"rt"(v0,a0),w0)
+[p:prop1(v0,w0)]
+t28:=symis(rat,a0,mn(w0,v0,t1(v0,w0,p)),satz101g(w0,v0,a0,t1(v0,w0,p),t27)):prop2(v0,w0,p)
+o@t29:=andi(prop1(v0,w0),[t:prop1(v0,w0)]prop2(v0,w0,t),t25,[t:prop1(v0,w0)]t28(t)):prop3(v0,w0)
+t30:=somei(rat,[y:rat]prop3(v0,y),w0,t29):some"rt"([y:rat]prop3(v0,y))
+t31:=somei(rat,[x:rat]some"rt"([y:rat]prop3(x,y)),v0,t30):prop4
+m@t32:=orapp(more"n"(u,1),is"n"(u,1),prop4,satz24(u),[t:more"n"(u,1)]t31(t),[t:is"n"(u,1)]t16(t)):prop4
+uy@t34:=someapp(nat,[x:nat]min"n"([y:nat]urt(pl"rt"(x0,ts(rtofn(y),a0))),x),satz27([y:nat]urt(pl"rt"(x0,ts(rtofn(y),a0))),t7),prop4,[x:nat][t:min"n"([y:nat]urt(pl"rt"(x0,ts(rtofn(y),a0))),x)]t32(x,t)):prop4
+lx@t35:=cutapp1b(prop4,[y:rat][t:urt(ksi,y)]t34(y,t)):prop4
+-3132
+satz132:=cutapp1a(prop4".3132",[x:rat][t:lrt(ksi,x)]t35".3132"(x,t)):some"rt"([x:rat]some"rt"([y:rat]and(and(lrt(ksi,x),urt(ksi,y)),[t:and(lrt(ksi,x),urt(ksi,y))]is"rt"(mn(y,x,cutapp2b(x,ande1(lrt(ksi,x),urt(ksi,y),t),y,ande2(lrt(ksi,x),urt(ksi,y),t))),a0))))
+ksi@[p:'prop'][a0:rat][p1:[x:rat][t:lrt(ksi,x)][y:rat][u:urt(ksi,y)][v:is"rt"(mn(y,x,cutapp2b(x,t,y,u)),a0)]p]
++*3132
+p1@[x0:rat][s:some"rt"([y:rat]prop3(a0,x0,y))][y0:rat][p3:prop3(a0,x0,y0)]
+t36:=ande1(prop1(a0,x0,y0),[t:prop1(a0,x0,y0)]prop2(a0,x0,y0,t),p3):prop1(a0,x0,y0)
+t37:=ande2"l.r"(prop1(a0,x0,y0),[t:prop1(a0,x0,y0)]prop2(a0,x0,y0,t),p3):prop2(a0,x0,y0,t36)
+t38:=ande1(lrt(ksi,x0),urt(ksi,y0),t36):lrt(ksi,x0)
+t39:=ande2(lrt(ksi,x0),urt(ksi,y0),t36):urt(ksi,y0)
+t40:=satz101g(y0,x0,mn(y0,x0,cutapp2b(x0,t38,y0,t39)),t1(a0,x0,y0,t36),satz101c(y0,x0,cutapp2b(x0,t38,y0,t39))):is"rt"(mn(y0,x0,cutapp2b(x0,t38,y0,t39)),mn(y0,x0,t1(a0,x0,y0,t36)))
+t41:=tris(rat,mn(y0,x0,cutapp2b(x0,t38,y0,t39)),mn(y0,x0,t1(a0,x0,y0,t36)),a0,t40,t37):is"rt"(mn(y0,x0,cutapp2b(x0,t38,y0,t39)),a0)
+t42:=<t41><t39><y0><t38><x0>p1:p
+s@t43:=someapp(rat,[y:rat]prop3(a0,x0,y),s,p,[y:rat][t:prop3(a0,x0,y)]t42(y,t)):p
+-3132
+p1@satz132app:=someapp(rat,[x:rat]some"rt"([y:rat]prop3".3132"(a0,x,y)),satz132(a0),p,[x:rat][t:some"rt"([y:rat]prop3".3132"(a0,x,y))]t43".3132"(x,t)):p
++3133
+eta@[y0:rat][ly:lrt(eta,y0)][x0:rat][lx:lrt(ksi,x0)][u0:rat][uu:urt(ksi,u0)][i:is"rt"(mn(u0,x0,cutapp2b(x0,lx,u0,uu)),y0)]
+t1:=tris(rat,u0,pl"rt"(x0,mn(u0,x0,cutapp2b(x0,lx,u0,uu))),pl"rt"(x0,y0),satz101d(u0,x0,cutapp2b(x0,lx,u0,uu)),ispl2"rt"(mn(u0,x0,cutapp2b(x0,lx,u0,uu)),y0,x0,i)):is"rt"(u0,pl"rt"(x0,y0))
+t2:=lrtpl(ksi,eta,u0,x0,lx,y0,ly,t1):lrt(pl(ksi,eta),u0)
+t3:=andi(lrt(pl(ksi,eta),u0),urt(ksi,u0),t2,uu):and(lrt(pl(ksi,eta),u0),urt(ksi,u0))
+t4:=somei(rat,[x:rat]and(lrt(pl(ksi,eta),x),urt(ksi,x)),u0,t3):more(pl(ksi,eta),ksi)
+ly@t5:=satz132app(ksi,more(pl(ksi,eta),ksi),y0,[x:rat][t:lrt(ksi,x)][y:rat][u:urt(ksi,y)][v:is"rt"(mn(y,x,cutapp2b(x,t,y,u)),y0)]t4(x,t,y,u,v)):more(pl(ksi,eta),ksi)
+-3133
+eta@satz133:=cutapp1a(eta,more(pl(ksi,eta),ksi),[x:rat][t:lrt(eta,x)]t5".3133"(x,t)):more(pl(ksi,eta),ksi)
+satz133a:=satz121(pl(ksi,eta),ksi,satz133):less(ksi,pl(ksi,eta))
+zeta@[m:more(ksi,eta)]
++3134
+[y0:rat][ly:lrt(ksi,y0)][uy:urt(eta,y0)][x0:rat][lx:lrt(ksi,x0)][l:less"rt"(y0,x0)]
+t1:=satz119a(eta,y0,uy,x0,l):urt(eta,x0)
+t2:=satz83(y0,x0,l):more"rt"(x0,y0)
+[u0:rat][lu:lrt(zeta,u0)][z0:rat][uz:urt(zeta,z0)][i:is"rt"(mn(z0,u0,cutapp2b(zeta,u0,lu,z0,uz)),mn(x0,y0,t2))]
+t3:=tris(rat,z0,pl"rt"(mn(z0,u0,cutapp2b(zeta,u0,lu,z0,uz)),u0),pl"rt"(mn(x0,y0,t2),u0),satz101f(z0,u0,cutapp2b(zeta,u0,lu,z0,uz)),ispl1"rt"(mn(z0,u0,cutapp2b(zeta,u0,lu,z0,uz)),mn(x0,y0,t2),u0,i)):is"rt"(z0,pl"rt"(mn(x0,y0,t2),u0))
+t4:=tr3is(rat,pl"rt"(y0,z0),pl"rt"(y0,pl"rt"(mn(x0,y0,t2),u0)),pl"rt"(pl"rt"(y0,mn(x0,y0,t2)),u0),pl"rt"(x0,u0),ispl2"rt"(z0,pl"rt"(mn(x0,y0,t2),u0),y0,t3),asspl2"rt"(y0,mn(x0,y0,t2),u0),ispl1"rt"(pl"rt"(y0,mn(x0,y0,t2)),x0,u0,satz101c(x0,y0,t2))):is"rt"(pl"rt"(y0,z0),pl"rt"(x0,u0))
+t5:=lrtpl(ksi,zeta,pl"rt"(y0,z0),x0,lx,u0,lu,t4):lrt(pl(ksi,zeta),pl"rt"(y0,z0))
+t6:=urtpl(eta,zeta,pl"rt"(y0,z0),y0,uy,z0,uz,refis(rat,pl"rt"(y0,z0))):urt(pl(eta,zeta),pl"rt"(y0,z0))
+t7:=andi(lrt(pl(ksi,zeta),pl"rt"(y0,z0)),urt(pl(eta,zeta),pl"rt"(y0,z0)),t5,t6):and(lrt(pl(ksi,zeta),pl"rt"(y0,z0)),urt(pl(eta,zeta),pl"rt"(y0,z0)))
+t8:=somei(rat,[x:rat]and(lrt(pl(ksi,zeta),x),urt(pl(eta,zeta),x)),pl"rt"(y0,z0),t7):more(pl(ksi,zeta),pl(eta,zeta))
+l@t9:=satz132app(zeta,more(pl(ksi,zeta),pl(eta,zeta)),mn(x0,y0,t2),[x:rat][t:lrt(zeta,x)][y:rat][u:urt(zeta,y)][v:is"rt"(mn(y,x,cutapp2b(zeta,x,t,y,u)),mn(x0,y0,t2))]t8(x,t,y,u,v)):more(pl(ksi,zeta),pl(eta,zeta))
+uy@t10:=cutapp3(ksi,y0,ly,more(pl(ksi,zeta),pl(eta,zeta)),[x:rat][t:lrt(ksi,x)][u:less"rt"(y0,x)]t9(x,t,u)):more(pl(ksi,zeta),pl(eta,zeta))
+-3134
+satz134:=moreapp(ksi,eta,m,more(pl(ksi,zeta),pl(eta,zeta)),[x:rat][t:lrt(ksi,x)][u:urt(eta,x)]t10".3134"(x,t,u)):more(pl(ksi,zeta),pl(eta,zeta))
+zeta@[m:more(ksi,eta)]
+satz135a:=satz134(m):more(pl(ksi,zeta),pl(eta,zeta))
+zeta@[i:is(ksi,eta)]
+satz135b:=ispl1(ksi,eta,zeta,i):is(pl(ksi,zeta),pl(eta,zeta))
+zeta@[l:less(ksi,eta)]
+satz135c:=satz121(pl(eta,zeta),pl(ksi,zeta),satz134(eta,ksi,zeta,satz122(ksi,eta,l))):less(pl(ksi,zeta),pl(eta,zeta))
+m@satz135d:=ismore12(pl(ksi,zeta),pl(zeta,ksi),pl(eta,zeta),pl(zeta,eta),compl(ksi,zeta),compl(eta,zeta),satz135a):more(pl(zeta,ksi),pl(zeta,eta))
+i@satz135e:=ispl2(ksi,eta,zeta,i):is(pl(zeta,ksi),pl(zeta,eta))
+l@satz135f:=isless12(pl(ksi,zeta),pl(zeta,ksi),pl(eta,zeta),pl(zeta,eta),compl(ksi,zeta),compl(eta,zeta),satz135c):less(pl(zeta,ksi),pl(zeta,eta))
+upsilon@[i:is(ksi,eta)][m:more(zeta,upsilon)]
+satz135g:=ismore2(pl(ksi,upsilon),pl(eta,upsilon),pl(ksi,zeta),ispl1(ksi,eta,upsilon,i),satz135d(zeta,upsilon,ksi,m)):more(pl(ksi,zeta),pl(eta,upsilon))
+satz135h:=ismore12(pl(ksi,zeta),pl(zeta,ksi),pl(eta,upsilon),pl(upsilon,eta),compl(ksi,zeta),compl(eta,upsilon),satz135g):more(pl(zeta,ksi),pl(upsilon,eta))
+i@[l:less(zeta,upsilon)]
+satz135j:=isless2(pl(ksi,upsilon),pl(eta,upsilon),pl(ksi,zeta),ispl1(ksi,eta,upsilon,i),satz135f(zeta,upsilon,ksi,l)):less(pl(ksi,zeta),pl(eta,upsilon))
+satz135k:=isless12(pl(ksi,zeta),pl(zeta,ksi),pl(eta,upsilon),pl(upsilon,eta),compl(ksi,zeta),compl(eta,upsilon),satz135j):less(pl(zeta,ksi),pl(upsilon,eta))
++3136
+zeta@t1:=satz123a(ksi,eta):or3(is(ksi,eta),more(ksi,eta),less(ksi,eta))
+t2:=satz123b(pl(ksi,zeta),pl(eta,zeta)):ec3(is(pl(ksi,zeta),pl(eta,zeta)),more(pl(ksi,zeta),pl(eta,zeta)),less(pl(ksi,zeta),pl(eta,zeta)))
+-3136
+zeta@[m:more(pl(ksi,zeta),pl(eta,zeta))]
+satz136a:=th11"l.ec3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),is(pl(ksi,zeta),pl(eta,zeta)),more(pl(ksi,zeta),pl(eta,zeta)),less(pl(ksi,zeta),pl(eta,zeta)),t1".3136",t2".3136",[u:is(ksi,eta)]satz135b(ksi,eta,zeta,u),[u:more(ksi,eta)]satz135a(ksi,eta,zeta,u),[u:less(ksi,eta)]satz135c(ksi,eta,zeta,u),m):more(ksi,eta)
+zeta@[i:is(pl(ksi,zeta),pl(eta,zeta))]
+satz136b:=th10"l.ec3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),is(pl(ksi,zeta),pl(eta,zeta)),more(pl(ksi,zeta),pl(eta,zeta)),less(pl(ksi,zeta),pl(eta,zeta)),t1".3136",t2".3136",[u:is(ksi,eta)]satz135b(ksi,eta,zeta,u),[u:more(ksi,eta)]satz135a(ksi,eta,zeta,u),[u:less(ksi,eta)]satz135c(ksi,eta,zeta,u),i):is(ksi,eta)
+zeta@[l:less(pl(ksi,zeta),pl(eta,zeta))]
+satz136c:=th12"l.ec3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),is(pl(ksi,zeta),pl(eta,zeta)),more(pl(ksi,zeta),pl(eta,zeta)),less(pl(ksi,zeta),pl(eta,zeta)),t1".3136",t2".3136",[u:is(ksi,eta)]satz135b(ksi,eta,zeta,u),[u:more(ksi,eta)]satz135a(ksi,eta,zeta,u),[u:less(ksi,eta)]satz135c(ksi,eta,zeta,u),l):less(ksi,eta)
+zeta@[m:more(pl(zeta,ksi),pl(zeta,eta))]
+satz136d:=satz136a(ismore12(pl(zeta,ksi),pl(ksi,zeta),pl(zeta,eta),pl(eta,zeta),compl(zeta,ksi),compl(zeta,eta),m)):more(ksi,eta)
+zeta@[i:is(pl(zeta,ksi),pl(zeta,eta))]
+satz136e:=satz136b(tr3is(cut,pl(ksi,zeta),pl(zeta,ksi),pl(zeta,eta),pl(eta,zeta),compl(ksi,zeta),i,compl(zeta,eta))):is(ksi,eta)
+zeta@[l:less(pl(zeta,ksi),pl(zeta,eta))]
+satz136f:=satz136c(isless12(pl(zeta,ksi),pl(ksi,zeta),pl(zeta,eta),pl(eta,zeta),compl(zeta,ksi),compl(zeta,eta),l)):less(ksi,eta)
+upsilon@[m:more(ksi,eta)][n:more(zeta,upsilon)]
++3137
+t1:=satz134(ksi,eta,zeta,m):more(pl(ksi,zeta),pl(eta,zeta))
+t2:=ismore12(pl(zeta,eta),pl(eta,zeta),pl(upsilon,eta),pl(eta,upsilon),compl(zeta,eta),compl(upsilon,eta),satz134(zeta,upsilon,eta,n)):more(pl(eta,zeta),pl(eta,upsilon))
+-3137
+satz137:=trmore(pl(ksi,zeta),pl(eta,zeta),pl(eta,upsilon),t1".3137",t2".3137"):more(pl(ksi,zeta),pl(eta,upsilon))
+upsilon@[l:less(ksi,eta)][k:less(zeta,upsilon)]
+satz137a:=satz121(pl(eta,upsilon),pl(ksi,zeta),satz137(eta,ksi,upsilon,zeta,satz122(ksi,eta,l),satz122(zeta,upsilon,k))):less(pl(ksi,zeta),pl(eta,upsilon))
+upsilon@[m:moreis(ksi,eta)][n:more(zeta,upsilon)]
+satz138a:=orapp(more(ksi,eta),is(ksi,eta),more(pl(ksi,zeta),pl(eta,upsilon)),m,[t:more(ksi,eta)]satz137(t,n),[t:is(ksi,eta)]satz135g(t,n)):more(pl(ksi,zeta),pl(eta,upsilon))
+upsilon@[m:more(ksi,eta)][n:moreis(zeta,upsilon)]
+satz138b:=orapp(more(zeta,upsilon),is(zeta,upsilon),more(pl(ksi,zeta),pl(eta,upsilon)),n,[t:more(zeta,upsilon)]satz137(m,t),[t:is(zeta,upsilon)]satz135h(zeta,upsilon,ksi,eta,t,m)):more(pl(ksi,zeta),pl(eta,upsilon))
+upsilon@[l:lessis(ksi,eta)][k:less(zeta,upsilon)]
+satz138c:=satz121(pl(eta,upsilon),pl(ksi,zeta),satz138a(eta,ksi,upsilon,zeta,satz125(ksi,eta,l),satz122(zeta,upsilon,k))):less(pl(ksi,zeta),pl(eta,upsilon))
+upsilon@[l:less(ksi,eta)][k:lessis(zeta,upsilon)]
+satz138d:=satz121(pl(eta,upsilon),pl(ksi,zeta),satz138b(eta,ksi,upsilon,zeta,satz122(ksi,eta,l),satz125(zeta,upsilon,k))):less(pl(ksi,zeta),pl(eta,upsilon))
+upsilon@[m:moreis(ksi,eta)][n:moreis(zeta,upsilon)]
++3139
+[i:is(ksi,eta)][j:is(zeta,upsilon)]
+t1:=moreisi2(pl(ksi,zeta),pl(eta,upsilon),ispl12(ksi,eta,zeta,upsilon,i,j)):moreis(pl(ksi,zeta),pl(eta,upsilon))
+i@[o:more(zeta,upsilon)]
+t2:=moreisi1(pl(ksi,zeta),pl(eta,upsilon),satz138a(m,o)):moreis(pl(ksi,zeta),pl(eta,upsilon))
+i@t3:=orapp(more(zeta,upsilon),is(zeta,upsilon),moreis(pl(ksi,zeta),pl(eta,upsilon)),n,[t:more(zeta,upsilon)]t2(t),[t:is(zeta,upsilon)]t1(t)):moreis(pl(ksi,zeta),pl(eta,upsilon))
+n@[o:more(ksi,eta)]
+t4:=moreisi1(pl(ksi,zeta),pl(eta,upsilon),satz138b(o,n)):moreis(pl(ksi,zeta),pl(eta,upsilon))
+-3139
+satz139:=orapp(more(ksi,eta),is(ksi,eta),moreis(pl(ksi,zeta),pl(eta,upsilon)),m,[t:more(ksi,eta)]t4".3139"(t),[t:is(ksi,eta)]t3".3139"(t)):moreis(pl(ksi,zeta),pl(eta,upsilon))
+upsilon@[l:lessis(ksi,eta)][k:lessis(zeta,upsilon)]
+satz139a:=satz124(pl(eta,upsilon),pl(ksi,zeta),satz139(eta,ksi,upsilon,zeta,satz125(ksi,eta,l),satz125(zeta,upsilon,k))):lessis(pl(ksi,zeta),pl(eta,upsilon))
+eta@[l:lessis(ksi,eta)]
++3140
+[phi:cut][i:is(pl(eta,phi),ksi)]
+t1:=ismore1(pl(eta,phi),ksi,eta,i,satz133(eta,phi)):more(ksi,eta)
+phi@t2:=th3"l.imp"(is(pl(eta,phi),ksi),more(ksi,eta),satz123d(ksi,eta,l),[t:is(pl(eta,phi),ksi)]t1(t)):nis(pl(eta,phi),ksi)
+-3140
+vorbemerkung140:=th5"l.some"(cut,[a:cut]is(pl(eta,a),ksi),[a:cut]t2".3140"(a)):not(some([a:cut]is(pl(eta,a),ksi)))
+eta@[phi:cut][psi:cut]
++*3140
+psi@[m:more(phi,psi)]
+t3:=satz135d(phi,psi,eta,m):more(pl(eta,phi),pl(eta,psi))
+t4:=ec3e21(is(pl(eta,phi),pl(eta,psi)),more(pl(eta,phi),pl(eta,psi)),less(pl(eta,phi),pl(eta,psi)),satz123b(pl(eta,phi),pl(eta,psi)),t3):nis(pl(eta,phi),pl(eta,psi))
+psi@[l:less(phi,psi)]
+t5:=satz135f(phi,psi,eta,l):less(pl(eta,phi),pl(eta,psi))
+t6:=ec3e31(is(pl(eta,phi),pl(eta,psi)),more(pl(eta,phi),pl(eta,psi)),less(pl(eta,phi),pl(eta,psi)),satz123b(pl(eta,phi),pl(eta,psi)),t5):nis(pl(eta,phi),pl(eta,psi))
+psi@[n:nis(phi,psi)]
+t7:=th1"l.or3"(is(phi,psi),more(phi,psi),less(phi,psi),satz123a(phi,psi),n):or(more(phi,psi),less(phi,psi))
+t8:=orapp(more(phi,psi),less(phi,psi),nis(pl(eta,phi),pl(eta,psi)),t7,[t:more(phi,psi)]t4(t),[t:less(phi,psi)]t6(t)):nis(pl(eta,phi),pl(eta,psi))
+-3140
+psi@[i:is(pl(eta,phi),ksi)][j:is(pl(eta,psi),ksi)]
+satz140b:=th7"l.imp"(is(phi,psi),nis(pl(eta,phi),pl(eta,psi)),weli(is(pl(eta,phi),pl(eta,psi)),tris2(cut,pl(eta,phi),pl(eta,psi),ksi,i,j)),[t:nis(phi,psi)]t8".3140"(t)):is(phi,psi)
+eta@[z0:rat][x0:rat][y0:rat]
+diffprop1:=and(more"rt"(x0,y0),[t:more"rt"(x0,y0)]is"rt"(z0,mn(x0,y0,t))):'prop'
+diffprop2:=and3(lrt(ksi,x0),urt(eta,y0),diffprop1(z0,x0,y0)):'prop'
+z0@diffprop:=some"rt"([x:rat]some"rt"([y:rat]diffprop2(z0,x,y))):'prop'
+eta@diff:=setof(rat,[z:rat]diffprop(z)):set(rat)
+x0@[lx:lrt(ksi,x0)][y0:rat][uy:urt(eta,y0)][m:more"rt"(x0,y0)][i:is"rt"(z0,mn(x0,y0,m))]
++*iii3
+i@[m1:more"rt"(x0,y0)]
+t11a:=tris(rat,z0,mn(x0,y0,m),mn(x0,y0,m1),i,satz101g(x0,y0,mn(x0,y0,m),m1,satz101c(x0,y0,m))):is"rt"(z0,mn(x0,y0,m1))
+i@t12:=andi(more"rt"(x0,y0),[t:more"rt"(x0,y0)]is"rt"(z0,mn(x0,y0,t)),m,[t:more"rt"(x0,y0)]t11a(t)):diffprop1(z0,x0,y0)
+t13:=and3i(lrt(ksi,x0),urt(eta,y0),diffprop1(z0,x0,y0),lx,uy,t12):diffprop2(z0,x0,y0)
+t14:=somei(rat,[y:rat]diffprop2(z0,x0,y),y0,t13):some"rt"([y:rat]diffprop2(z0,x0,y))
+t15:=somei(rat,[x:rat]some"rt"([y:rat]diffprop2(z0,x,y)),x0,t14):diffprop(z0)
+-iii3
+i@diff1:=estii(rat,[z:rat]diffprop(z),z0,t15".iii3"):in(z0,diff)
+z0@[i:in(z0,diff)][p:'prop'][p1:[x:rat][t:lrt(ksi,x)][y:rat][u:urt(eta,y)][v:more"rt"(x,y)][w:is"rt"(z0,mn(x,y,v))]p]
++*iii3
+p1@t16:=estie(rat,[z:rat]diffprop(z),z0,i):diffprop(z0)
+-iii3
+p1@[x0:rat][px:some"rt"([y:rat]diffprop2(z0,x0,y))][y0:rat][py:diffprop2(z0,x0,y0)]
++*iii3
+py@t17:=and3e1(lrt(ksi,x0),urt(eta,y0),diffprop1(z0,x0,y0),py):lrt(ksi,x0)
+t18:=and3e2(lrt(ksi,x0),urt(eta,y0),diffprop1(z0,x0,y0),py):urt(eta,y0)
+t19:=and3e3(lrt(ksi,x0),urt(eta,y0),diffprop1(z0,x0,y0),py):diffprop1(z0,x0,y0)
+t20:=ande1(more"rt"(x0,y0),[t:more"rt"(x0,y0)]is"rt"(z0,mn(x0,y0,t)),t19):more"rt"(x0,y0)
+t21:=ande2"l.r"(more"rt"(x0,y0),[t:more"rt"(x0,y0)]is"rt"(z0,mn(x0,y0,t)),t19):is"rt"(z0,mn(x0,y0,t20))
+t22:=<t21><t20><t18><y0><t17><x0>p1:p
+px@t23:=someapp(rat,[y:rat]diffprop2(z0,x0,y),px,p,[y:rat][t:diffprop2(z0,x0,y)]t22(y,t)):p
+-iii3
+p1@diffapp:=someapp(rat,[x:rat]some"rt"([y:rat]diffprop2(z0,x,y)),t16".iii3",p,[x:rat][t:some"rt"([y:rat]diffprop2(z0,x,y))]t23".iii3"(x,t)):p
+eta@[m:more(ksi,eta)]
++*3140
+m"rp"@[y0:rat][ly:lrt(ksi,y0)][uy:urt(eta,y0)][x0:rat][lx:lrt(ksi,x0)][l:less"rt"(y0,x0)]
+t9:=t2"rp.3134"(eta,m,y0,ly,uy,x0,lx,l):more"rt"(x0,y0)
+t10:=diff1(mn(x0,y0,t9),x0,lx,y0,uy,t9,refis(rat,mn(x0,y0,t9))):in(mn(x0,y0,t9),diff)
+m"rp"@[x1:rat][ux:urt(ksi,x1)][z0:rat][i:in(z0,diff)][x0:rat][lx:lrt(ksi,x0)][y0:rat][uy:urt(eta,y0)][n:more"rt"(x0,y0)][j:is"rt"(z0,mn(x0,y0,n))]
+t11:=isless12"rt"(mn(x0,y0,n),z0,pl"rt"(mn(x0,y0,n),y0),x0,symis(rat,z0,mn(x0,y0,n),j),satz101e(x0,y0,n),satz94a(mn(x0,y0,n),y0)):less"rt"(z0,x0)
+t12:=trless"rt"(z0,x0,x1,t11,cutapp2a(ksi,x0,lx,x1,ux)):less"rt"(z0,x1)
+t13:=ec3e31(is"rt"(z0,x1),more"rt"(z0,x1),less"rt"(z0,x1),satz81b(z0,x1),t12):nis"rt"(z0,x1)
+i@t14:=diffapp(z0,i,nis"rt"(z0,x1),[x:rat][t:lrt(ksi,x)][y:rat][u:urt(eta,y)][v:more"rt"(x,y)][w:is"rt"(z0,mn(x,y,v))]t13(x,t,y,u,v,w)):nis"rt"(z0,x1)
+ux@t15:=th3"l.imp"(in(x1,diff),nis"rt"(x1,x1),weli(is"rt"(x1,x1),refis(rat,x1)),[t:in(x1,diff)]t14(x1,t)):not(in(x1,diff))
+m"rp"@[z0:rat][i:in(z0,diff)][u0:rat][l:less"rt"(u0,z0)][x0:rat][lx:lrt(ksi,x0)][y0:rat][uy:urt(eta,y0)][n:more"rt"(x0,y0)][j:is"rt"(z0,mn(x0,y0,n))]
+t16:=tris(rat,pl"rt"(z0,y0),pl"rt"(mn(x0,y0,n),y0),x0,ispl1"rt"(z0,mn(x0,y0,n),y0,j),satz101e(x0,y0,n)):is"rt"(pl"rt"(z0,y0),x0)
+x2:=pl"rt"(u0,y0):rat
+t17:=isless2"rt"(pl"rt"(z0,y0),x0,x2,t16,satz96c(u0,z0,y0,l)):less"rt"(x2,x0)
+t18:=satz120(ksi,x0,lx,x2,t17):lrt(ksi,x2)
+t19:=ismore1"rt"(pl"rt"(y0,u0),pl"rt"(u0,y0),y0,compl"rt"(y0,u0),satz94(y0,u0)):more"rt"(x2,y0)
+t20:=satz101g(x2,y0,u0,t19,compl"rt"(y0,u0)):is"rt"(u0,mn(x2,y0,t19))
+t21:=diff1(u0,x2,t18,y0,uy,t19,t20):in(u0,diff)
+l@t22:=diffapp(z0,i,in(u0,diff),[x:rat][t:lrt(ksi,x)][y:rat][u:urt(eta,y)][v:more"rt"(x,y)][w:is"rt"(z0,mn(x,y,v))]t21(x,t,y,u,v,w)):in(u0,diff)
+m"rp"@[z0:rat][i:in(z0,diff)][x0:rat][lx:lrt(ksi,x0)][y0:rat][uy:urt(eta,y0)][n:more"rt"(x0,y0)][j:is"rt"(z0,mn(x0,y0,n))][x3:rat][lx3:lrt(ksi,x3)][l:less"rt"(x0,x3)]
+t23:=satz83(x0,x3,l):more"rt"(x3,x0)
+t24:=trmore"rt"(x3,x0,y0,t23,n):more"rt"(x3,y0)
+t25:=ismore12"rt"(x3,pl"rt"(mn(x3,y0,t24),y0),x0,pl"rt"(mn(x0,y0,n),y0),satz101f(x3,y0,t24),satz101f(x0,y0,n),t23):more"rt"(pl"rt"(mn(x3,y0,t24),y0),pl"rt"(mn(x0,y0,n),y0))
+t26:=satz97a(mn(x3,y0,t24),mn(x0,y0,n),y0,t25):more"rt"(mn(x3,y0,t24),mn(x0,y0,n))
+t27:=ismore2"rt"(mn(x0,y0,n),z0,mn(x3,y0,t24),symis(rat,z0,mn(x0,y0,n),j),t26):more"rt"(mn(x3,y0,t24),z0)
+t28:=diff1(mn(x3,y0,t24),x3,lx3,y0,uy,t24,refis(rat,mn(x3,y0,t24))):in(mn(x3,y0,t24),diff)
+t29:=andi(in(mn(x3,y0,t24),diff),more"rt"(mn(x3,y0,t24),z0),t28,t27):and(in(mn(x3,y0,t24),diff),more"rt"(mn(x3,y0,t24),z0))
+t30:=somei(rat,[x:rat]and(in(x,diff),more"rt"(x,z0)),mn(x3,y0,t24),t29):some"rt"([x:rat]and(in(x,diff),more"rt"(x,z0)))
+j@t31:=cutapp3(ksi,x0,lx,some"rt"([x:rat]and(in(x,diff),more"rt"(x,z0))),[y:rat][t:lrt(ksi,y)][u:less"rt"(x0,y)]t30(y,t,u)):some"rt"([x:rat]and(in(x,diff),more"rt"(x,z0)))
+i@t32:=diffapp(z0,i,some"rt"([x:rat]and(in(x,diff),more"rt"(x,z0))),[x:rat][t:lrt(ksi,x)][y:rat][u:urt(eta,y)][v:more"rt"(x,y)][w:is"rt"(z0,mn(x,y,v))]t31(x,t,y,u,v,w)):some"rt"([x:rat]and(in(x,diff),more"rt"(x,z0)))
+m"rp"@[y0:rat][ly:lrt(ksi,y0)][uy:urt(eta,y0)][x0:rat][lx:lrt(ksi,x0)][l:less"rt"(y0,x0)][x1:rat][ux1:urt(ksi,x1)]
+t33:=cut2(diff,mn(x0,y0,t9(y0,ly,uy,x0,lx,l)),t10(y0,ly,uy,x0,lx,l),x1,t15(x1,ux1),[x:rat][t:in(x,diff)][y:rat][u:less"rt"(y,x)]t22(x,t,y,u),[x:rat][t:in(x,diff)]t32(x,t)):cutprop(diff)
+l@t34:=cutapp1b(ksi,cutprop(diff),[x:rat][t:urt(ksi,x)]t33(x,t)):cutprop(diff)
+uy@t35:=cutapp3(ksi,y0,ly,cutprop(diff),[x:rat][t:lrt(ksi,x)][u:less"rt"(y0,x)]t34(x,t,u)):cutprop(diff)
+-3140
+m@satz140h:=moreapp(ksi,eta,m,cutprop(diff),[x:rat][u:lrt(ksi,x)][v:urt(eta,x)]t35".3140"(x,u,v)):cutprop(diff)
++*3140
+m"rp"@chi:=cutof(diff,satz140h):cut
+[z0:rat][lz:lrt(pl(eta,chi),z0)][y1:rat][ly:lrt(eta,y1)][u0:rat][lu:lrt(chi,u0)][i:is"rt"(z0,pl"rt"(y1,u0))][x0:rat][lx:lrt(ksi,x0)][y0:rat][uy:urt(eta,y0)][o:more"rt"(x0,y0)][j:is"rt"(u0,mn(x0,y0,o))]
+t36:=cutapp2b(eta,y1,ly,y0,uy):more"rt"(y0,y1)
+t37:=tr3is(rat,pl"rt"(pl"rt"(mn(x0,y0,o),y1),mn(y0,y1,t36)),pl"rt"(mn(x0,y0,o),pl"rt"(y1,mn(y0,y1,t36))),pl"rt"(mn(x0,y0,o),y0),x0,asspl1"rt"(mn(x0,y0,o),y1,mn(y0,y1,t36)),ispl2"rt"(pl"rt"(y1,mn(y0,y1,t36)),y0,mn(x0,y0,o),satz101c(y0,y1,t36)),satz101e(x0,y0,o)):is"rt"(pl"rt"(pl"rt"(mn(x0,y0,o),y1),mn(y0,y1,t36)),x0)
+t38:=isless2"rt"(pl"rt"(pl"rt"(mn(x0,y0,o),y1),mn(y0,y1,t36)),x0,pl"rt"(mn(x0,y0,o),y1),t37,satz94a(pl"rt"(mn(x0,y0,o),y1),mn(y0,y1,t36))):less"rt"(pl"rt"(mn(x0,y0,o),y1),x0)
+t39:=tr3is(rat,z0,pl"rt"(y1,u0),pl"rt"(u0,y1),pl"rt"(mn(x0,y0,o),y1),i,compl"rt"(y1,u0),ispl1"rt"(u0,mn(x0,y0,o),y1,j)):is"rt"(z0,pl"rt"(mn(x0,y0,o),y1))
+t40:=isless1"rt"(pl"rt"(mn(x0,y0,o),y1),z0,x0,symis(rat,z0,pl"rt"(mn(x0,y0,o),y1),t39),t38):less"rt"(z0,x0)
+t41:=satz120(ksi,x0,lx,z0,t40):lrt(ksi,z0)
+i@t42:=diffapp(u0,ini(diff,satz140h,u0,lu),lrt(ksi,z0),[x:rat][t:lrt(ksi,x)][y:rat][u:urt(eta,y)][v:more"rt"(x,y)][w:is"rt"(u0,mn(x,y,v))]t41(x,t,y,u,v,w)):lrt(ksi,z0)
+lz@a:=plapp(eta,chi,z0,lz,lrt(ksi,z0),[x:rat][t:lrt(eta,x)][y:rat][u:lrt(chi,y)][v:is"rt"(z0,pl"rt"(x,y))]t42(x,t,y,u,v)):lrt(ksi,z0)
+m"rp"@[y0:rat][ly:lrt(ksi,y0)][uy:urt(eta,y0)][x0:rat][lx:lrt(ksi,x0)][l:less"rt"(y0,x0)]
+t43:=satz83(y0,x0,l):more"rt"(x0,y0)
+[y1:rat][ly1:lrt(eta,y1)][y2:rat][uy2:urt(eta,y2)]
+t44:=cutapp2b(eta,y1,ly1,y2,uy2):more"rt"(y2,y1)
+[i:is"rt"(mn(y2,y1,t44),mn(x0,y0,t43))]
+t45:=cutapp2b(eta,y1,ly1,y0,uy):more"rt"(y0,y1)
+t46:=tris(rat,y2,pl"rt"(mn(y2,y1,t44),y1),pl"rt"(mn(x0,y0,t43),y1),satz101f(y2,y1,t44),ispl1"rt"(mn(y2,y1,t44),mn(x0,y0,t43),y1,i)):is"rt"(y2,pl"rt"(mn(x0,y0,t43),y1))
+t47:=tr4is(rat,pl"rt"(y2,mn(y0,y1,t45)),pl"rt"(pl"rt"(mn(x0,y0,t43),y1),mn(y0,y1,t45)),pl"rt"(mn(x0,y0,t43),pl"rt"(y1,mn(y0,y1,t45))),pl"rt"(mn(x0,y0,t43),y0),x0,ispl1"rt"(y2,pl"rt"(mn(x0,y0,t43),y1),mn(y0,y1,t45),t46),asspl1"rt"(mn(x0,y0,t43),y1,mn(y0,y1,t45)),ispl2"rt"(pl"rt"(y1,mn(y0,y1,t45)),y0,mn(x0,y0,t43),satz101c(y0,y1,t45)),satz101e(x0,y0,t43)):is"rt"(pl"rt"(y2,mn(y0,y1,t45)),x0)
+t48:=ismore1"rt"(pl"rt"(y2,mn(y0,y1,t45)),x0,y2,t47,satz94(y2,mn(y0,y1,t45))):more"rt"(x0,y2)
+t49:=satz101g(x0,y2,mn(y0,y1,t45),t48,t47):is"rt"(mn(y0,y1,t45),mn(x0,y2,t48))
+t50:=tris(rat,y0,pl"rt"(mn(y0,y1,t45),y1),pl"rt"(mn(x0,y2,t48),y1),satz101f(y0,y1,t45),ispl1"rt"(mn(y0,y1,t45),mn(x0,y2,t48),y1,t49)):is"rt"(y0,pl"rt"(mn(x0,y2,t48),y1))
+t51:=ine(diff,satz140h,mn(x0,y2,t48),diff1(mn(x0,y2,t48),x0,lx,y2,uy2,t48,refis(rat,mn(x0,y2,t48)))):lrt(chi,mn(x0,y2,t48))
+t52:=lrtpl(eta,chi,y0,y1,ly1,mn(x0,y2,t48),t51,tris(rat,y0,pl"rt"(mn(x0,y2,t48),y1),pl"rt"(y1,mn(x0,y2,t48)),t50,compl"rt"(mn(x0,y2,t48),y1))):lrt(pl(eta,chi),y0)
+l@t53:=satz132app(eta,lrt(pl(eta,chi),y0),mn(x0,y0,t43),[x:rat][t:lrt(eta,x)][y:rat][u:urt(eta,y)][v:is"rt"(mn(y,x,cutapp2b(eta,x,t,y,u)),mn(x0,y0,t43))]t52(x,t,y,u,v)):lrt(pl(eta,chi),y0)
+uy@t54:=cutapp3(ksi,y0,ly,lrt(pl(eta,chi),y0),[x:rat][t:lrt(ksi,x)][u:less"rt"(y0,x)]t53(x,t,u)):lrt(pl(eta,chi),y0)
+ly@[ly0:lrt(eta,y0)][y1:rat][ly1:lrt(ksi,y1)][uy1:urt(eta,y1)]
+t55:=t54(y1,ly1,uy1):lrt(pl(eta,chi),y1)
+t56:=satz120(pl(eta,chi),y1,t55,y0,cutapp2a(eta,y0,ly0,y1,uy1)):lrt(pl(eta,chi),y0)
+ly0@t57:=moreapp(ksi,eta,m,lrt(pl(eta,chi),y0),[x:rat][t:lrt(ksi,x)][u:urt(eta,x)]t56(x,t,u)):lrt(pl(eta,chi),y0)
+ly@b:=th1"l.imp"(lrt(eta,y0),lrt(pl(eta,chi),y0),[t:lrt(eta,y0)]t57(t),[t:urt(eta,y0)]t54(t)):lrt(pl(eta,chi),y0)
+m"rp"@t58:=isi1(pl(eta,chi),ksi,[x:rat][t:lrt(pl(eta,chi),x)]a(x,t),[x:rat][t:lrt(ksi,x)]b(x,t)):is(pl(eta,chi),ksi)
+-3140
+m@satz140a:=somei(cut,[a:cut]is(pl(eta,a),ksi),chi".3140",t58".3140"):some([a:cut]is(pl(eta,a),ksi))
++*3140
+eta@t59:=[c:cut][d:cut][t:is(pl(eta,c),ksi)][u:is(pl(eta,d),ksi)]satz140b(c,d,t,u):amone(cut,[c:cut]is(pl(eta,c),ksi))
+-3140
+m@satz140:=onei(cut,[a:cut]is(pl(eta,a),ksi),t59".3140",satz140a):one([a:cut]is(pl(eta,a),ksi))
+mn:=ind(cut,[a:cut]is(pl(eta,a),ksi),satz140):cut
+satz140c:=oneax(cut,[a:cut]is(pl(eta,a),ksi),satz140):is(pl(eta,mn(ksi,eta,m)),ksi)
+satz140d:=symis(cut,pl(eta,mn(ksi,eta,m)),ksi,satz140c):is(ksi,pl(eta,mn(ksi,eta,m)))
+satz140e:=tris(cut,pl(mn(ksi,eta,m),eta),pl(eta,mn(ksi,eta,m)),ksi,compl(mn(ksi,eta,m),eta),satz140c):is(pl(mn(ksi,eta,m),eta),ksi)
+satz140f:=symis(cut,pl(mn(ksi,eta,m),eta),ksi,satz140e):is(ksi,pl(mn(ksi,eta,m),eta))
+eta@[phi:cut][m:more(ksi,eta)][i:is(pl(eta,phi),ksi)]
+satz140g:=satz140b(phi,mn(ksi,eta,m),i,satz140c(m)):is(phi,mn(ksi,eta,m))
+upsilon@[m:more(ksi,zeta)][n:more(eta,upsilon)][i:is(ksi,eta)][j:is(zeta,upsilon)]
++*3140
+j"rp"@t60:=tr3is(cut,pl(upsilon,mn(ksi,zeta,m)),pl(zeta,mn(ksi,zeta,m)),ksi,eta,ispl1(upsilon,zeta,mn(ksi,zeta,m),symis(cut,zeta,upsilon,j)),satz140c(ksi,zeta,m),i):is(pl(upsilon,mn(ksi,zeta,m)),eta)
+-3140
+j@ismn12:=satz140g(eta,upsilon,mn(ksi,zeta,m),n,t60".3140"):is(mn(ksi,zeta,m),mn(eta,upsilon,n))
+zeta@[m:more(ksi,zeta)][n:more(eta,zeta)][i:is(ksi,eta)]
+ismn1:=ismn12(zeta,m,n,i,refis(cut,zeta)):is(mn(ksi,zeta,m),mn(eta,zeta,n))
+zeta@[m:more(zeta,ksi)][n:more(zeta,eta)][i:is(ksi,eta)]
+ismn2:=ismn12(zeta,zeta,ksi,eta,m,n,refis(cut,zeta),i):is(mn(zeta,ksi,m),mn(zeta,eta,n))
+eta@[z0:rat][x0:rat][y0:rat]
+prodprop1:=and3(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,ts(x0,y0))):'prop'
+z0@prodprop:=some"rt"([x:rat]some"rt"([y:rat]prodprop1(z0,x,y))):'prop'
+eta@prod:=setof(rat,[z:rat]prodprop(z)):set(rat)
+x0@[lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][i:is"rt"(z0,ts(x0,y0))]
++iii4
+t1:=and3i(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,ts(x0,y0)),lx,ly,i):prodprop1(z0,x0,y0)
+t2:=somei(rat,[y:rat]prodprop1(z0,x0,y),y0,t1):some"rt"([y:rat]prodprop1(z0,x0,y))
+t3:=somei(rat,[x:rat]some"rt"([y:rat]prodprop1(z0,x,y)),x0,t2):prodprop(z0)
+-iii4
+prod1:=estii(rat,[z:rat]prodprop(z),z0,t3".iii4"):in(z0,prod)
+z0@[i:in(z0,prod)][p:'prop'][p1:[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,ts(x,y))]p]
++*iii4
+p1@t4:=estie(rat,[z:rat]prodprop(z),z0,i):prodprop(z0)
+-iii4
+p1@[x0:rat][px:some"rt"([y:rat]prodprop1(z0,x0,y))][y0:rat][py:prodprop1(z0,x0,y0)]
++*iii4
+py@t5:=and3e1(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,ts(x0,y0)),py):lrt(ksi,x0)
+t6:=and3e2(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,ts(x0,y0)),py):lrt(eta,y0)
+t7:=and3e3(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,ts(x0,y0)),py):is"rt"(z0,ts(x0,y0))
+t8:=<t7><t6><y0><t5><x0>p1:p
+px@t9:=someapp(rat,[y:rat]prodprop1(z0,x0,y),px,p,[y:rat][t:prodprop1(z0,x0,y)]t8(y,t)):p
+-iii4
+p1@prodapp:=someapp(rat,[x:rat]some"rt"([y:rat]prodprop1(z0,x,y)),t4".iii4",p,[x:rat][t:some"rt"([y:rat]prodprop1(z0,x,y))]t9".iii4"(x,t)):p
+eta@[x1:rat][ux:urt(ksi,x1)][y1:rat][uy:urt(eta,y1)]
++4141
+[z0:rat][i:in(z0,prod)][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][j:is"rt"(z0,ts(x0,y0))]
+t1:=cutapp2a(ksi,x0,lx,x1,ux):less"rt"(x0,x1)
+t2:=cutapp2a(eta,y0,ly,y1,uy):less"rt"(y0,y1)
+t3:=isless1"rt"(ts(x0,y0),z0,ts(x1,y1),symis(rat,z0,ts(x0,y0),j),satz107a(x0,x1,y0,y1,t1,t2)):less"rt"(z0,ts(x1,y1))
+t4:=ec3e31(is"rt"(z0,ts(x1,y1)),more"rt"(z0,ts(x1,y1)),less"rt"(z0,ts(x1,y1)),satz81b(z0,ts(x1,y1)),t3):nis"rt"(z0,ts(x1,y1))
+i@t5:=prodapp(ksi,eta,z0,i,nis"rt"(z0,ts(x1,y1)),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,ts(x,y))]t4(x,t,y,u,v)):nis"rt"(z0,ts(x1,y1))
+-4141
+satz141a:=th3"l.imp"(in(ts(x1,y1),prod),nis"rt"(ts(x1,y1),ts(x1,y1)),weli(is"rt"(ts(x1,y1),ts(x1,y1)),refis(rat,ts(x1,y1))),[t:in(ts(x1,y1),prod)]t5".4141"(ts(x1,y1),t)):not(in(ts(x1,y1),prod))
+-rp
+@[x0:rat][y0:rat]
++4141
+v0:=ts(ov(1rt,y0),x0):rat
+t6:=tr3is(rat,ts(y0,v0),ts(ts(y0,ov(1rt,y0)),x0),ts(1rt,x0),x0,assts2(y0,ov(1rt,y0),x0),ists1(ts(y0,ov(1rt,y0)),1rt,x0,satz110c(1rt,y0)),example1c(x0)):is(ts(y0,v0),x0)
+-4141
+satz141b:=satz110g(x0,y0,v0".4141",t6".4141"):is(ts(ov(1rt,y0),x0),ov(x0,y0))
+satz141c:=symis(rat,ts(ov(1rt,y0),x0),ov(x0,y0),satz141b):is"rt"(ov(x0,y0),ts(ov(1rt,y0),x0))
++*rp
++*4141
+eta@[u0:rat][i:in(u0,prod)][z0:rat][l:less"rt"(z0,u0)][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][j:is"rt"(u0,ts(x0,y0))]
+t7:=isless2"rt"(u0,ts(x0,y0),z0,j,l):less"rt"(z0,ts(x0,y0))
+t8:=tr3is(rat,ts(ov(1rt,x0),ts(x0,y0)),ts(ts(ov(1rt,x0),x0),y0),ts(1rt,y0),y0,assts2(ov(1rt,x0),x0,y0),ists1(ts(ov(1rt,x0),x0),1rt,y0,satz110e(1rt,x0)),example1c(y0)):is"rt"(ts(ov(1rt,x0),ts(x0,y0)),y0)
+t9:=isless12"rt"(ts(ov(1rt,x0),z0),ov(z0,x0),ts(ov(1rt,x0),ts(x0,y0)),y0,satz141b(z0,x0),t8,satz105f(z0,ts(x0,y0),ov(1rt,x0),t7)):less"rt"(ov(z0,x0),y0)
+t10:=satz120(eta,y0,ly,ov(z0,x0),t9):lrt(eta,ov(z0,x0))
+t11:=prod1(z0,x0,lx,ov(z0,x0),t10,satz110d(z0,x0)):in(z0,prod)
+l@t12:=prodapp(u0,i,in(z0,prod),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(u0,ts(x,y))]t11(x,t,y,u,v)):in(z0,prod)
+eta@[z0:rat][i:in(z0,prod)][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][j:is"rt"(z0,ts(x0,y0))][x1:rat][lx1:lrt(ksi,x1)][l:less"rt"(x0,x1)]
+t13:=prod1(ts(x1,y0),x1,lx1,y0,ly,refis(rat,ts(x1,y0))):in(ts(x1,y0),prod)
+t14:=satz105a(x1,x0,y0,satz83(x0,x1,l)):more"rt"(ts(x1,y0),ts(x0,y0))
+t15:=ismore2"rt"(ts(x0,y0),z0,ts(x1,y0),symis(rat,z0,ts(x0,y0),j),t14):more"rt"(ts(x1,y0),z0)
+t16:=andi(in(ts(x1,y0),prod),more"rt"(ts(x1,y0),z0),t13,t15):and(in(ts(x1,y0),prod),more"rt"(ts(x1,y0),z0))
+t17:=somei(rat,[y:rat]and(in(y,prod),more"rt"(y,z0)),ts(x1,y0),t16):some"rt"([y:rat]and(in(y,prod),more"rt"(y,z0)))
+j@t18:=cutapp3(ksi,x0,lx,some"rt"([y:rat]and(in(y,prod),more"rt"(y,z0))),[x:rat][t:lrt(ksi,x)][u:less"rt"(x0,x)]t17(x,t,u)):some"rt"([y:rat]and(in(y,prod),more"rt"(y,z0)))
+i@t19:=prodapp(z0,i,some"rt"([y:rat]and(in(y,prod),more"rt"(y,z0))),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,ts(x,y))]t18(x,t,y,u,v)):some"rt"([y:rat]and(in(y,prod),more"rt"(y,z0)))
+eta@[x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][x1:rat][ux:urt(ksi,x1)][y1:rat][uy:urt(eta,y1)]
+t20:=cut2(prod,ts(x0,y0),prod1(ts(x0,y0),x0,lx,y0,ly,refis(rat,ts(x0,y0))),ts(x1,y1),satz141a(x1,ux,y1,uy),[x:rat][t:in(x,prod)][y:rat][u:less"rt"(y,x)]t12(x,t,y,u),[x:rat][t:in(x,prod)]t19(x,t)):cutprop(prod)
+ux@t21:=cutapp1b(eta,cutprop(prod),[y:rat][t:urt(eta,y)]t20(y,t)):cutprop(prod)
+ly@t22:=cutapp1b(ksi,cutprop(prod),[x:rat][t:urt(ksi,x)]t21(x,t)):cutprop(prod)
+lx@t23:=cutapp1a(eta,cutprop(prod),[y:rat][t:lrt(eta,y)]t22(y,t)):cutprop(prod)
+-4141
+eta@satz141:=cutapp1a(ksi,cutprop(prod),[x:rat][t:lrt(ksi,x)]t23".4141"(x,t)):cutprop(prod)
+ts:=cutof(prod,satz141):cut
+[z0:rat][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][i:is"rt"(z0,ts"rt"(x0,y0))]
+lrtts:=ine(prod,satz141,z0,prod1(z0,x0,lx,y0,ly,i)):lrt(ts(ksi,eta),z0)
+eta@[z0:rat][x0:rat][ux:urt(ksi,x0)][y0:rat][uy:urt(eta,y0)][i:is"rt"(z0,ts"rt"(x0,y0))]
++*iii4
+i@t10:=isp1(rat,[x:rat]not(in(x,prod)),ts"rt"(x0,y0),z0,satz141a(x0,ux,y0,uy),i):not(in(z0,prod))
+-iii4
+i@urtts:=th3"l.imp"(lrt(ts(ksi,eta),z0),in(z0,prod),t10".iii4",[t:lrt(ts(ksi,eta),z0)]ini(prod,satz141,z0,t)):urt(ts(ksi,eta),z0)
+eta@[z0:rat][lz:lrt(ts(ksi,eta),z0)][p:'prop'][p1:[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,ts"rt"(x,y))]p]
++*iii4
+p1@t11:=ini(prod,satz141,z0,lz):in(z0,prod)
+-iii4
+p1@tsapp:=prodapp(z0,t11".iii4",p,p1):p
+zeta@[i:is(ksi,eta)]
+ists1:=isf(cut,cut,[u:cut]ts(u,zeta),ksi,eta,i):is(ts(ksi,zeta),ts(eta,zeta))
+ists2:=isf(cut,cut,[u:cut]ts(zeta,u),ksi,eta,i):is(ts(zeta,ksi),ts(zeta,eta))
+upsilon@[i:is(ksi,eta)][j:is(zeta,upsilon)]
+ists12:=tris(cut,ts(ksi,zeta),ts(eta,zeta),ts(eta,upsilon),ists1(i),ists2(zeta,upsilon,eta,j)):is(ts(ksi,zeta),ts(eta,upsilon))
++4142
+eta@[z0:rat][lz:lrt(ts(ksi,eta),z0)][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][i:is"rt"(z0,ts"rt"(x0,y0))]
+t1:=tris(rat,z0,ts"rt"(x0,y0),ts"rt"(y0,x0),i,comts(x0,y0)):is"rt"(z0,ts"rt"(y0,x0))
+t2:=lrtts(eta,ksi,z0,y0,ly,x0,lx,t1):lrt(ts(eta,ksi),z0)
+lz@t3:=tsapp(ksi,eta,z0,lz,lrt(ts(eta,ksi),z0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,ts"rt"(x,y))]t2(x,t,y,u,v)):lrt(ts(eta,ksi),z0)
+-4142
+eta@satz142:=isi1(ts(ksi,eta),ts(eta,ksi),[x:rat][t:lrt(ts(ksi,eta),x)]t3".4142"(x,t),[x:rat][t:lrt(ts(eta,ksi),x)]t3".4142"(eta,ksi,x,t)):is(ts(ksi,eta),ts(eta,ksi))
+comts:=satz142:is(ts(ksi,eta),ts(eta,ksi))
++4143
+zeta@[u0:rat][lu:lrt(ts(ts(ksi,eta),zeta),u0)][v0:rat][lv:lrt(ts(ksi,eta),v0)][z0:rat][lz:lrt(zeta,z0)][i:is"rt"(u0,ts"rt"(v0,z0))][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][j:is"rt"(v0,ts"rt"(x0,y0))]
+t1:=tr3is(rat,u0,ts"rt"(v0,z0),ts"rt"(ts"rt"(x0,y0),z0),ts"rt"(x0,ts"rt"(y0,z0)),i,ists1"rt"(v0,ts"rt"(x0,y0),z0,j),assts1(x0,y0,z0)):is"rt"(u0,ts"rt"(x0,ts"rt"(y0,z0)))
+t2:=lrtts(eta,zeta,ts"rt"(y0,z0),y0,ly,z0,lz,refis(rat,ts"rt"(y0,z0))):lrt(ts(eta,zeta),ts"rt"(y0,z0))
+t3:=lrtts(ksi,ts(eta,zeta),u0,x0,lx,ts"rt"(y0,z0),t2,t1):lrt(ts(ksi,ts(eta,zeta)),u0)
+i@t4:=tsapp(ksi,eta,v0,lv,lrt(ts(ksi,ts(eta,zeta)),u0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(v0,ts"rt"(x,y))]t3(x,t,y,u,v)):lrt(ts(ksi,ts(eta,zeta)),u0)
+lu@t5:=tsapp(ts(ksi,eta),zeta,u0,lu,lrt(ts(ksi,ts(eta,zeta)),u0),[x:rat][t:lrt(ts(ksi,eta),x)][y:rat][u:lrt(zeta,y)][v:is"rt"(u0,ts"rt"(x,y))]t4(x,t,y,u,v)):lrt(ts(ksi,ts(eta,zeta)),u0)
+u0@[lu:lrt(ts(ksi,ts(eta,zeta)),u0)][x0:rat][lx:lrt(ksi,x0)][v0:rat][lv:lrt(ts(eta,zeta),v0)][i:is"rt"(u0,ts"rt"(x0,v0))][y0:rat][ly:lrt(eta,y0)][z0:rat][lz:lrt(zeta,z0)][j:is"rt"(v0,ts"rt"(y0,z0))]
+t6:=tr3is(rat,u0,ts"rt"(x0,v0),ts"rt"(x0,ts"rt"(y0,z0)),ts"rt"(ts"rt"(x0,y0),z0),i,ists2"rt"(v0,ts"rt"(y0,z0),x0,j),assts2(x0,y0,z0)):is"rt"(u0,ts"rt"(ts"rt"(x0,y0),z0))
+t7:=lrtts(ksi,eta,ts"rt"(x0,y0),x0,lx,y0,ly,refis(rat,ts"rt"(x0,y0))):lrt(ts(ksi,eta),ts"rt"(x0,y0))
+t8:=lrtts(ts(ksi,eta),zeta,u0,ts"rt"(x0,y0),t7,z0,lz,t6):lrt(ts(ts(ksi,eta),zeta),u0)
+i@t9:=tsapp(eta,zeta,v0,lv,lrt(ts(ts(ksi,eta),zeta),u0),[x:rat][t:lrt(eta,x)][y:rat][u:lrt(zeta,y)][v:is"rt"(v0,ts"rt"(x,y))]t8(x,t,y,u,v)):lrt(ts(ts(ksi,eta),zeta),u0)
+lu@t10:=tsapp(ksi,ts(eta,zeta),u0,lu,lrt(ts(ts(ksi,eta),zeta),u0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(ts(eta,zeta),y)][v:is"rt"(u0,ts"rt"(x,y))]t9(x,t,y,u,v)):lrt(ts(ts(ksi,eta),zeta),u0)
+-4143
+zeta@satz143:=isi1(ts(ts(ksi,eta),zeta),ts(ksi,ts(eta,zeta)),[x:rat][t:lrt(ts(ts(ksi,eta),zeta),x)]t5".4143"(x,t),[x:rat][t:lrt(ts(ksi,ts(eta,zeta)),x)]t10".4143"(x,t)):is(ts(ts(ksi,eta),zeta),ts(ksi,ts(eta,zeta)))
+assts1:=satz143:is(ts(ts(ksi,eta),zeta),ts(ksi,ts(eta,zeta)))
+assts2:=symis(cut,ts(ts(ksi,eta),zeta),ts(ksi,ts(eta,zeta)),satz143):is(ts(ksi,ts(eta,zeta)),ts(ts(ksi,eta),zeta))
++4144
+[u0:rat][lu:lrt(ts(ksi,pl(eta,zeta)),u0)][x0:rat][lx:lrt(ksi,x0)][v0:rat][lv:lrt(pl(eta,zeta),v0)][i:is"rt"(u0,ts"rt"(x0,v0))][y0:rat][ly:lrt(eta,y0)][z0:rat][lz:lrt(zeta,z0)][j:is"rt"(v0,pl"rt"(y0,z0))]
+t1:=tr3is(rat,u0,ts"rt"(x0,v0),ts"rt"(x0,pl"rt"(y0,z0)),pl"rt"(ts"rt"(x0,y0),ts"rt"(x0,z0)),i,ists2"rt"(v0,pl"rt"(y0,z0),x0,j),disttp2(x0,y0,z0)):is"rt"(u0,pl"rt"(ts"rt"(x0,y0),ts"rt"(x0,z0)))
+t2:=lrtts(ksi,eta,ts"rt"(x0,y0),x0,lx,y0,ly,refis(rat,ts"rt"(x0,y0))):lrt(ts(ksi,eta),ts"rt"(x0,y0))
+t3:=lrtts(ksi,zeta,ts"rt"(x0,z0),x0,lx,z0,lz,refis(rat,ts"rt"(x0,z0))):lrt(ts(ksi,zeta),ts"rt"(x0,z0))
+t4:=lrtpl(ts(ksi,eta),ts(ksi,zeta),u0,ts"rt"(x0,y0),t2,ts"rt"(x0,z0),t3,t1):lrt(pl(ts(ksi,eta),ts(ksi,zeta)),u0)
+i@t5:=plapp(eta,zeta,v0,lv,lrt(pl(ts(ksi,eta),ts(ksi,zeta)),u0),[x:rat][t:lrt(eta,x)][y:rat][u:lrt(zeta,y)][v:is"rt"(v0,pl"rt"(x,y))]t4(x,t,y,u,v)):lrt(pl(ts(ksi,eta),ts(ksi,zeta)),u0)
+lu@t6:=tsapp(ksi,pl(eta,zeta),u0,lu,lrt(pl(ts(ksi,eta),ts(ksi,zeta)),u0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(pl(eta,zeta),y)][v:is"rt"(u0,ts"rt"(x,y))]t5(x,t,y,u,v)):lrt(pl(ts(ksi,eta),ts(ksi,zeta)),u0)
+u0@[lu:lrt(pl(ts(ksi,eta),ts(ksi,zeta)),u0)][v0:rat][lv:lrt(ts(ksi,eta),v0)][w0:rat][lw:lrt(ts(ksi,zeta),w0)][i:is"rt"(u0,pl"rt"(v0,w0))][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][j:is"rt"(v0,ts"rt"(x0,y0))][x1:rat][lx1:lrt(ksi,x1)][z0:rat][lz:lrt(zeta,z0)][k:is"rt"(w0,ts"rt"(x1,z0))]
+t7:=tris(rat,u0,pl"rt"(v0,w0),pl"rt"(ts"rt"(x0,y0),ts"rt"(x1,z0)),i,ispl12"rt"(v0,ts"rt"(x0,y0),w0,ts"rt"(x1,z0),j,k)):is"rt"(u0,pl"rt"(ts"rt"(x0,y0),ts"rt"(x1,z0)))
+x2:=ite(moreis"rt"(x0,x1),rat,x0,x1):rat
+[m:moreis"rt"(x0,x1)]
+t8:=itet(moreis"rt"(x0,x1),rat,x0,x1,m):is"rt"(x2,x0)
+t9:=isp1(rat,[t:rat]lrt(ksi,t),x0,x2,lx,t8):lrt(ksi,x2)
+t10:=lessisi2"rt"(x0,x2,symis(rat,x2,x0,t8)):lessis"rt"(x0,x2)
+t11:=satz88(x1,x0,x2,satz84(x0,x1,m),t10):lessis"rt"(x1,x2)
+k@[n:not(moreis"rt"(x0,x1))]
+t12:=itef(moreis"rt"(x0,x1),rat,x0,x1,n):is"rt"(x2,x1)
+t13:=isp1(rat,[t:rat]lrt(ksi,t),x1,x2,lx1,t12):lrt(ksi,x2)
+t14:=lessisi2"rt"(x1,x2,symis(rat,x2,x1,t12)):lessis"rt"(x1,x2)
+t15:=lessisi1"rt"(x0,x2,satz87b(x0,x1,x2,satz81j(x0,x1,n),t14)):lessis"rt"(x0,x2)
+k@t16:=th1"l.imp"(moreis"rt"(x0,x1),lrt(ksi,x2),[t:moreis"rt"(x0,x1)]t9(t),[t:not(moreis"rt"(x0,x1))]t13(t)):lrt(ksi,x2)
+t17:=th1"l.imp"(moreis"rt"(x0,x1),lessis"rt"(x0,x2),[t:moreis"rt"(x0,x1)]t10(t),[t:not(moreis"rt"(x0,x1))]t15(t)):lessis"rt"(x0,x2)
+t18:=th1"l.imp"(moreis"rt"(x0,x1),lessis"rt"(x1,x2),[t:moreis"rt"(x0,x1)]t11(t),[t:not(moreis"rt"(x0,x1))]t14(t)):lessis"rt"(x1,x2)
+t19:=lrtpl(eta,zeta,pl"rt"(y0,z0),y0,ly,z0,lz,refis(rat,pl"rt"(y0,z0))):lrt(pl(eta,zeta),pl"rt"(y0,z0))
+t20:=lrtts(ksi,pl(eta,zeta),ts"rt"(x2,pl"rt"(y0,z0)),x2,t16,pl"rt"(y0,z0),t19,refis(rat,ts"rt"(x2,pl"rt"(y0,z0)))):lrt(ts(ksi,pl(eta,zeta)),ts"rt"(x2,pl"rt"(y0,z0)))
+t21:=satz109a(x0,x2,y0,y0,t17,lessisi2"rt"(y0,y0,refis(rat,y0))):lessis"rt"(ts"rt"(x0,y0),ts"rt"(x2,y0))
+t22:=satz109a(x1,x2,z0,z0,t18,lessisi2"rt"(z0,z0,refis(rat,z0))):lessis"rt"(ts"rt"(x1,z0),ts"rt"(x2,z0))
+t23:=islessis12"rt"(pl"rt"(ts"rt"(x0,y0),ts"rt"(x1,z0)),u0,pl"rt"(ts"rt"(x2,y0),ts"rt"(x2,z0)),ts"rt"(x2,pl"rt"(y0,z0)),symis(rat,u0,pl"rt"(ts"rt"(x0,y0),ts"rt"(x1,z0)),t7),distpt2(x2,y0,z0),satz100a(ts"rt"(x0,y0),ts"rt"(x2,y0),ts"rt"(x1,z0),ts"rt"(x2,z0),t21,t22)):lessis"rt"(u0,ts"rt"(x2,pl"rt"(y0,z0)))
+t24:=orapp(less"rt"(u0,ts"rt"(x2,pl"rt"(y0,z0))),is"rt"(u0,ts"rt"(x2,pl"rt"(y0,z0))),lrt(ts(ksi,pl(eta,zeta)),u0),t23,[t:less"rt"(u0,ts"rt"(x2,pl"rt"(y0,z0)))]satz120(ts(ksi,pl(eta,zeta)),ts"rt"(x2,pl"rt"(y0,z0)),t20,u0,t),[t:is"rt"(u0,ts"rt"(x2,pl"rt"(y0,z0)))]isp1(rat,[u:rat]lrt(ts(ksi,pl(eta,zeta)),u),ts"rt"(x2,pl"rt"(y0,z0)),u0,t20,t)):lrt(ts(ksi,pl(eta,zeta)),u0)
+j@t25:=tsapp(ksi,zeta,w0,lw,lrt(ts(ksi,pl(eta,zeta)),u0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(zeta,y)][v:is"rt"(w0,ts"rt"(x,y))]t24(x,t,y,u,v)):lrt(ts(ksi,pl(eta,zeta)),u0)
+i@t26:=tsapp(ksi,eta,v0,lv,lrt(ts(ksi,pl(eta,zeta)),u0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(v0,ts"rt"(x,y))]t25(x,t,y,u,v)):lrt(ts(ksi,pl(eta,zeta)),u0)
+lu@t27:=plapp(ts(ksi,eta),ts(ksi,zeta),u0,lu,lrt(ts(ksi,pl(eta,zeta)),u0),[x:rat][t:lrt(ts(ksi,eta),x)][y:rat][u:lrt(ts(ksi,zeta),y)][v:is"rt"(u0,pl"rt"(x,y))]t26(x,t,y,u,v)):lrt(ts(ksi,pl(eta,zeta)),u0)
+-4144
+satz144:=isi1(ts(ksi,pl(eta,zeta)),pl(ts(ksi,eta),ts(ksi,zeta)),[x:rat][t:lrt(ts(ksi,pl(eta,zeta)),x)]t6".4144"(x,t),[x:rat][t:lrt(pl(ts(ksi,eta),ts(ksi,zeta)),x)]t27".4144"(x,t)):is(ts(ksi,pl(eta,zeta)),pl(ts(ksi,eta),ts(ksi,zeta)))
+disttp1:=tr3is(cut,ts(pl(ksi,eta),zeta),ts(zeta,pl(ksi,eta)),pl(ts(zeta,ksi),ts(zeta,eta)),pl(ts(ksi,zeta),ts(eta,zeta)),comts(pl(ksi,eta),zeta),satz144(zeta,ksi,eta),ispl12(ts(zeta,ksi),ts(ksi,zeta),ts(zeta,eta),ts(eta,zeta),comts(zeta,ksi),comts(zeta,eta))):is(ts(pl(ksi,eta),zeta),pl(ts(ksi,zeta),ts(eta,zeta)))
+disttp2:=satz144:is(ts(ksi,pl(eta,zeta)),pl(ts(ksi,eta),ts(ksi,zeta)))
+distpt1:=symis(cut,ts(pl(ksi,eta),zeta),pl(ts(ksi,zeta),ts(eta,zeta)),disttp1):is(pl(ts(ksi,zeta),ts(eta,zeta)),ts(pl(ksi,eta),zeta))
+distpt2:=symis(cut,ts(ksi,pl(eta,zeta)),pl(ts(ksi,eta),ts(ksi,zeta)),disttp2):is(pl(ts(ksi,eta),ts(ksi,zeta)),ts(ksi,pl(eta,zeta)))
+[m:more(ksi,eta)]
++4145
+phi:=mn(ksi,eta,m):cut
+t1:=satz140d(ksi,eta,m):is(ksi,pl(eta,phi))
+t2:=tris(cut,ts(ksi,zeta),ts(pl(eta,phi),zeta),pl(ts(eta,zeta),ts(phi,zeta)),ists1(ksi,pl(eta,phi),zeta,t1),disttp1(eta,phi,zeta)):is(ts(ksi,zeta),pl(ts(eta,zeta),ts(phi,zeta)))
+-4145
+satz145a:=ismore1(pl(ts(eta,zeta),ts(phi".4145",zeta)),ts(ksi,zeta),ts(eta,zeta),symis(cut,ts(ksi,zeta),pl(ts(eta,zeta),ts(phi".4145",zeta)),t2".4145"),satz133(ts(eta,zeta),ts(phi".4145",zeta))):more(ts(ksi,zeta),ts(eta,zeta))
+zeta@[i:is(ksi,eta)]
+satz145b:=ists1(ksi,eta,zeta,i):is(ts(ksi,zeta),ts(eta,zeta))
+zeta@[l:less(ksi,eta)]
+satz145c:=satz121(ts(eta,zeta),ts(ksi,zeta),satz145a(eta,ksi,zeta,satz122(ksi,eta,l))):less(ts(ksi,zeta),ts(eta,zeta))
+m@satz145d:=ismore12(ts(ksi,zeta),ts(zeta,ksi),ts(eta,zeta),ts(zeta,eta),comts(ksi,zeta),comts(eta,zeta),satz145a):more(ts(zeta,ksi),ts(zeta,eta))
+i@satz145e:=ists2(ksi,eta,zeta,i):is(ts(zeta,ksi),ts(zeta,eta))
+l@satz145f:=isless12(ts(ksi,zeta),ts(zeta,ksi),ts(eta,zeta),ts(zeta,eta),comts(ksi,zeta),comts(eta,zeta),satz145c):less(ts(zeta,ksi),ts(zeta,eta))
+upsilon@[i:is(ksi,eta)][m:more(zeta,upsilon)]
+satz145g:=ismore2(ts(ksi,upsilon),ts(eta,upsilon),ts(ksi,zeta),ists1(ksi,eta,upsilon,i),satz145d(zeta,upsilon,ksi,m)):more(ts(ksi,zeta),ts(eta,upsilon))
+satz145h:=ismore12(ts(ksi,zeta),ts(zeta,ksi),ts(eta,upsilon),ts(upsilon,eta),comts(ksi,zeta),comts(eta,upsilon),satz145g):more(ts(zeta,ksi),ts(upsilon,eta))
+i@[l:less(zeta,upsilon)]
+satz145j:=isless2(ts(ksi,upsilon),ts(eta,upsilon),ts(ksi,zeta),ists1(ksi,eta,upsilon,i),satz145f(zeta,upsilon,ksi,l)):less(ts(ksi,zeta),ts(eta,upsilon))
+satz145k:=isless12(ts(ksi,zeta),ts(zeta,ksi),ts(eta,upsilon),ts(upsilon,eta),comts(ksi,zeta),comts(eta,upsilon),satz145j):less(ts(zeta,ksi),ts(upsilon,eta))
++4146
+zeta@t1:=satz123a(ksi,eta):or3(is(ksi,eta),more(ksi,eta),less(ksi,eta))
+t2:=satz123b(ts(ksi,zeta),ts(eta,zeta)):ec3(is(ts(ksi,zeta),ts(eta,zeta)),more(ts(ksi,zeta),ts(eta,zeta)),less(ts(ksi,zeta),ts(eta,zeta)))
+-4146
+zeta@[m:more(ts(ksi,zeta),ts(eta,zeta))]
+satz146a:=th11"l.ec3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),is(ts(ksi,zeta),ts(eta,zeta)),more(ts(ksi,zeta),ts(eta,zeta)),less(ts(ksi,zeta),ts(eta,zeta)),t1".4146",t2".4146",[u:is(ksi,eta)]satz145b(ksi,eta,zeta,u),[u:more(ksi,eta)]satz145a(ksi,eta,zeta,u),[u:less(ksi,eta)]satz145c(ksi,eta,zeta,u),m):more(ksi,eta)
+zeta@[i:is(ts(ksi,zeta),ts(eta,zeta))]
+satz146b:=th10"l.ec3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),is(ts(ksi,zeta),ts(eta,zeta)),more(ts(ksi,zeta),ts(eta,zeta)),less(ts(ksi,zeta),ts(eta,zeta)),t1".4146",t2".4146",[u:is(ksi,eta)]satz145b(ksi,eta,zeta,u),[u:more(ksi,eta)]satz145a(ksi,eta,zeta,u),[u:less(ksi,eta)]satz145c(ksi,eta,zeta,u),i):is(ksi,eta)
+zeta@[l:less(ts(ksi,zeta),ts(eta,zeta))]
+satz146c:=th12"l.ec3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),is(ts(ksi,zeta),ts(eta,zeta)),more(ts(ksi,zeta),ts(eta,zeta)),less(ts(ksi,zeta),ts(eta,zeta)),t1".4146",t2".4146",[u:is(ksi,eta)]satz145b(ksi,eta,zeta,u),[u:more(ksi,eta)]satz145a(ksi,eta,zeta,u),[u:less(ksi,eta)]satz145c(ksi,eta,zeta,u),l):less(ksi,eta)
+zeta@[m:more(ts(zeta,ksi),ts(zeta,eta))]
+satz146d:=satz146a(ismore12(ts(zeta,ksi),ts(ksi,zeta),ts(zeta,eta),ts(eta,zeta),comts(zeta,ksi),comts(zeta,eta),m)):more(ksi,eta)
+zeta@[i:is(ts(zeta,ksi),ts(zeta,eta))]
+satz146e:=satz146b(tr3is(cut,ts(ksi,zeta),ts(zeta,ksi),ts(zeta,eta),ts(eta,zeta),comts(ksi,zeta),i,comts(zeta,eta))):is(ksi,eta)
+zeta@[l:less(ts(zeta,ksi),ts(zeta,eta))]
+satz146f:=satz146c(isless12(ts(zeta,ksi),ts(ksi,zeta),ts(zeta,eta),ts(eta,zeta),comts(zeta,ksi),comts(zeta,eta),l)):less(ksi,eta)
+upsilon@[m:more(ksi,eta)][n:more(zeta,upsilon)]
++4147
+t1:=satz145a(ksi,eta,zeta,m):more(ts(ksi,zeta),ts(eta,zeta))
+t2:=ismore12(ts(zeta,eta),ts(eta,zeta),ts(upsilon,eta),ts(eta,upsilon),comts(zeta,eta),comts(upsilon,eta),satz145a(zeta,upsilon,eta,n)):more(ts(eta,zeta),ts(eta,upsilon))
+-4147
+satz147:=trmore(ts(ksi,zeta),ts(eta,zeta),ts(eta,upsilon),t1".4147",t2".4147"):more(ts(ksi,zeta),ts(eta,upsilon))
+upsilon@[l:less(ksi,eta)][k:less(zeta,upsilon)]
+satz147a:=satz121(ts(eta,upsilon),ts(ksi,zeta),satz147(eta,ksi,upsilon,zeta,satz122(ksi,eta,l),satz122(zeta,upsilon,k))):less(ts(ksi,zeta),ts(eta,upsilon))
+upsilon@[m:moreis(ksi,eta)][n:more(zeta,upsilon)]
+satz148a:=orapp(more(ksi,eta),is(ksi,eta),more(ts(ksi,zeta),ts(eta,upsilon)),m,[t:more(ksi,eta)]satz147(t,n),[t:is(ksi,eta)]satz145g(t,n)):more(ts(ksi,zeta),ts(eta,upsilon))
+upsilon@[m:more(ksi,eta)][n:moreis(zeta,upsilon)]
+satz148b:=orapp(more(zeta,upsilon),is(zeta,upsilon),more(ts(ksi,zeta),ts(eta,upsilon)),n,[t:more(zeta,upsilon)]satz147(m,t),[t:is(zeta,upsilon)]satz145h(zeta,upsilon,ksi,eta,t,m)):more(ts(ksi,zeta),ts(eta,upsilon))
+upsilon@[l:lessis(ksi,eta)][k:less(zeta,upsilon)]
+satz148c:=satz121(ts(eta,upsilon),ts(ksi,zeta),satz148a(eta,ksi,upsilon,zeta,satz125(ksi,eta,l),satz122(zeta,upsilon,k))):less(ts(ksi,zeta),ts(eta,upsilon))
+upsilon@[l:less(ksi,eta)][k:lessis(zeta,upsilon)]
+satz148d:=satz121(ts(eta,upsilon),ts(ksi,zeta),satz148b(eta,ksi,upsilon,zeta,satz122(ksi,eta,l),satz125(zeta,upsilon,k))):less(ts(ksi,zeta),ts(eta,upsilon))
+upsilon@[m:moreis(ksi,eta)][n:moreis(zeta,upsilon)]
++4149
+[i:is(ksi,eta)][j:is(zeta,upsilon)]
+t1:=moreisi2(ts(ksi,zeta),ts(eta,upsilon),ists12(ksi,eta,zeta,upsilon,i,j)):moreis(ts(ksi,zeta),ts(eta,upsilon))
+i@[o:more(zeta,upsilon)]
+t2:=moreisi1(ts(ksi,zeta),ts(eta,upsilon),satz148a(m,o)):moreis(ts(ksi,zeta),ts(eta,upsilon))
+i@t3:=orapp(more(zeta,upsilon),is(zeta,upsilon),moreis(ts(ksi,zeta),ts(eta,upsilon)),n,[t:more(zeta,upsilon)]t2(t),[t:is(zeta,upsilon)]t1(t)):moreis(ts(ksi,zeta),ts(eta,upsilon))
+n@[o:more(ksi,eta)]
+t4:=moreisi1(ts(ksi,zeta),ts(eta,upsilon),satz148b(o,n)):moreis(ts(ksi,zeta),ts(eta,upsilon))
+-4149
+satz149:=orapp(more(ksi,eta),is(ksi,eta),moreis(ts(ksi,zeta),ts(eta,upsilon)),m,[t:more(ksi,eta)]t4".4149"(t),[t:is(ksi,eta)]t3".4149"(t)):moreis(ts(ksi,zeta),ts(eta,upsilon))
+upsilon@[l:lessis(ksi,eta)][k:lessis(zeta,upsilon)]
+satz149a:=satz124(ts(eta,upsilon),ts(ksi,zeta),satz149(eta,ksi,upsilon,zeta,satz125(ksi,eta,l),satz125(zeta,upsilon,k))):lessis(ts(ksi,zeta),ts(eta,upsilon))
+-rp
+@[r0:rat]
+ratset:=setof(rat,[x:rat]less(x,r0)):set(rat)
++4150
+t1:=satz90(r0):some([x:rat]less(x,r0))
+[x0:rat][l:less(x0,r0)]
+t2:=estii(rat,[x:rat]less(x,r0),x0,l):in(x0,ratset)
+r0@t3:=ec3e13(is(r0,r0),more(r0,r0),less(r0,r0),satz81b(r0,r0),refis(rat,r0)):not(less(r0,r0))
+t4:=th3"l.imp"(in(r0,ratset),less(r0,r0),t3,[t:in(r0,ratset)]estie(rat,[x:rat]less(x,r0),r0,t)):not(in(r0,ratset))
+x0@[i:in(x0,ratset)]
+t5:=estie(rat,[x:rat]less(x,r0),x0,i):less(x0,r0)
+[x1:rat][k:less(x1,x0)]
+t6:=t2(x1,trless(x1,x0,r0,k,t5)):in(x1,ratset)
+i@t7:=satz91(x0,r0,t5):some([x:rat]and(less(x0,x),less(x,r0)))
+[x1:rat][a:and(less(x0,x1),less(x1,r0))]
+t8:=ande1(less(x0,x1),less(x1,r0),a):less(x0,x1)
+t9:=ande2(less(x0,x1),less(x1,r0),a):less(x1,r0)
+t10:=andi(in(x1,ratset),more(x1,x0),t2(x1,t9),satz83(x0,x1,t8)):and(in(x1,ratset),more(x1,x0))
+i@t11:=th6"l.some"(rat,[x:rat]and(less(x0,x),less(x,r0)),[x:rat]and(in(x,ratset),more(x,x0)),t7,[x:rat][t:and(less(x0,x),less(x,r0))]t10(x,t)):some([x:rat]and(in(x,ratset),more(x,x0)))
+l@t12:=cut2(ratset,x0,t2,r0,t4,[x:rat][t:in(x,ratset)][y:rat][u:less(y,x)]t6(x,t,y,u),[x:rat][t:in(x,ratset)]t11(x,t)):cutprop(ratset)
+-4150
+satz150:=someapp(rat,[x:rat]less(x,r0),t1".4150",cutprop(ratset),[x:rat][t:less(x,r0)]t12".4150"(x,t)):cutprop(ratset)
++*rp
+r0@rpofrt:=cutof(ratset,satz150):cut
+[x0:rat][l:less"rt"(x0,r0)]
+lrtrpofrt:=ine(ratset,satz150,x0,t2"rt.4150"(x0,l)):lrt(rpofrt,x0)
+r0@[x0:rat][lx:lrt(rpofrt,x0)]
+lrtrpofrte:=t5"rt.4150"(x0,ini(ratset,satz150,x0,lx)):less"rt"(x0,r0)
+r0@[x0:rat][m:moreis"rt"(x0,r0)]
++*iii4
+m@t12:=satz81c(x0,r0,m):not(less"rt"(x0,r0))
+-iii4
+m@urtrpofrt:=th3"l.imp"(lrt(rpofrt,x0),less"rt"(x0,r0),t12".iii4",[t:lrt(rpofrt,x0)]lrtrpofrte(x0,t)):urt(rpofrt,x0)
+@1rp:=rpofrt(1rt):cut
++4151
+ksi@[z0:rat][lz:lrt(ts(ksi,1rp),z0)][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(1rp,y0)][i:is"rt"(z0,ts"rt"(x0,y0))]
+t1:=lrtrpofrte(1rt,y0,ly):less"rt"(y0,1rt)
+t2:=isless12"rt"(ts"rt"(x0,y0),z0,ts"rt"(x0,1rt),x0,symis(rat,z0,ts"rt"(x0,y0),i),example1a(x0),satz105f(y0,1rt,x0,t1)):less"rt"(z0,x0)
+t3:=satz120(ksi,x0,lx,z0,t2):lrt(ksi,z0)
+lz@t4:=tsapp(ksi,1rp,z0,lz,lrt(ksi,z0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(1rp,y)][v:is"rt"(z0,ts"rt"(x,y))]t3(x,t,y,u,v)):lrt(ksi,z0)
+ksi@[x0:rat][lx:lrt(ksi,x0)][x1:rat][lx1:lrt(ksi,x1)][l:less"rt"(x0,x1)]
+y1:=ts"rt"(ov(1rt,x1),x0):rat
+t5:=isless2"rt"(ts"rt"(ov(1rt,x1),x1),1rt,y1,satz110e(1rt,x1),satz105f(x0,x1,ov(1rt,x1),l)):less"rt"(y1,1rt)
+t6:=lrtrpofrt(1rt,y1,t5):lrt(1rp,y1)
+t7:=tr3is(rat,ts"rt"(x1,y1),ts"rt"(ts"rt"(x1,ov(1rt,x1)),x0),ts"rt"(1rt,x0),x0,assts2"rt"(x1,ov(1rt,x1),x0),ists1"rt"(ts"rt"(x1,ov(1rt,x1)),1rt,x0,satz110c(1rt,x1)),example1c(x0)):is"rt"(ts"rt"(x1,y1),x0)
+t8:=lrtts(ksi,1rp,x0,x1,lx1,y1,t6,symis(rat,ts"rt"(x1,y1),x0,t7)):lrt(ts(ksi,1rp),x0)
+lx@t9:=cutapp3(ksi,x0,lx,lrt(ts(ksi,1rp),x0),[y:rat][t:lrt(ksi,y)][u:less"rt"(x0,y)]t8(y,t,u)):lrt(ts(ksi,1rp),x0)
+-4151
+ksi@satz151:=isi1(ts(ksi,1rp),ksi,[x:rat][t:lrt(ts(ksi,1rp),x)]t4".4151"(x,t),[x:rat][t:lrt(ksi,x)]t9".4151"(x,t)):is(ts(ksi,1rp),ksi)
+satz151a:=symis(cut,ts(ksi,1rp),ksi,satz151):is(ksi,ts(ksi,1rp))
+satz151b:=tris(cut,ts(1rp,ksi),ts(ksi,1rp),ksi,comts(1rp,ksi),satz151):is(ts(1rp,ksi),ksi)
+satz151c:=symis(cut,ts(1rp,ksi),ksi,satz151b):is(ksi,ts(1rp,ksi))
++4152
+[x0:rat][y0:rat]
+invprop1:=and(urt(ksi,y0),less"rt"(y0,x0)):'prop'
+ksi@[z0:rat][x0:rat]
+invprop2:=and3(urt(ksi,x0),some"rt"([x:rat]invprop1(x0,x)),is"rt"(z0,ov(1rt,x0))):'prop'
+z0@invprop:=some"rt"([x:rat]invprop2(z0,x)):'prop'
+ksi@inv:=setof(rat,[z:rat]invprop(z)):set(rat)
+x0@[ux:urt(ksi,x0)][y0:rat][uy:urt(ksi,y0)][l:less"rt"(y0,x0)][i:is"rt"(z0,ov(1rt,x0))]
+t1:=andi(urt(ksi,y0),less"rt"(y0,x0),uy,l):invprop1(x0,y0)
+t2:=somei(rat,[x:rat]invprop1(x0,x),y0,t1):some"rt"([x:rat]invprop1(x0,x))
+t3:=and3i(urt(ksi,x0),some"rt"([x:rat]invprop1(x0,x)),is"rt"(z0,ov(1rt,x0)),ux,t2,i):invprop2(z0,x0)
+t4:=somei(rat,[x:rat]invprop2(z0,x),x0,t3):invprop(z0)
+inv1:=estii(rat,[z:rat]invprop(z),z0,t4):in(z0,inv)
+z0@[i:in(z0,inv)][p:'prop'][p1:[x:rat][t:urt(ksi,x)][y:rat][u:urt(ksi,y)][v:less"rt"(y,x)][w:is"rt"(z0,ov(1rt,x))]p]
+t5:=estie(rat,[x:rat]invprop(x),z0,i):invprop(z0)
+[x0:rat][px:invprop2(z0,x0)]
+t6:=and3e1(urt(ksi,x0),some"rt"([x:rat]invprop1(x0,x)),is"rt"(z0,ov(1rt,x0)),px):urt(ksi,x0)
+t7:=and3e2(urt(ksi,x0),some"rt"([x:rat]invprop1(x0,x)),is"rt"(z0,ov(1rt,x0)),px):some"rt"([x:rat]invprop1(x0,x))
+t8:=and3e3(urt(ksi,x0),some"rt"([x:rat]invprop1(x0,x)),is"rt"(z0,ov(1rt,x0)),px):is"rt"(z0,ov(1rt,x0))
+[y0:rat][py:invprop1(x0,y0)]
+t9:=ande1(urt(ksi,y0),less"rt"(y0,x0),py):urt(ksi,y0)
+t10:=ande2(urt(ksi,y0),less"rt"(y0,x0),py):less"rt"(y0,x0)
+t11:=<t8><t10><t9><y0><t6><x0>p1:p
+px@t12:=someapp(rat,[x:rat]invprop1(x0,x),t7,p,[x:rat][t:invprop1(x0,x)]t11(x,t)):p
+p1@invapp:=someapp(rat,[x:rat]invprop2(z0,x),t5,p,[x:rat][t:invprop2(z0,x)]t12(x,t)):p
+ksi@[x0:rat][ux:urt(ksi,x0)]
+2x0:=pl"rt"(x0,x0):rat
+t13:=satz94a(x0,x0):less"rt"(x0,2x0)
+t14:=satz119a(ksi,x0,ux,2x0,t13):urt(ksi,2x0)
+t15:=inv1(ov(1rt,2x0),2x0,t14,x0,ux,t13,refis(rat,ov(1rt,2x0))):in(ov(1rt,2x0),inv)
+ksi@[x1:rat][lx:lrt(ksi,x1)][x0:rat][ux:urt(ksi,x0)]
+t16:=th3"l.imp"(is"rt"(x0,x1),lrt(ksi,x0),ux,[t:is"rt"(x0,x1)]isp1(rat,[x:rat]lrt(ksi,x),x1,x0,lx,t)):nis"rt"(x0,x1)
+t17:=satz110e(1rt,x0):is"rt"(ts"rt"(ov(1rt,x0),x0),1rt)
+t18:=satz110e(1rt,x1):is"rt"(ts"rt"(ov(1rt,x1),x1),1rt)
+[i:is"rt"(ov(1rt,x0),ov(1rt,x1))]
+t19:=tris(rat,ts"rt"(ov(1rt,x0),x1),ts"rt"(ov(1rt,x1),x1),1rt,ists1"rt"(ov(1rt,x0),ov(1rt,x1),x1,i),t18):is"rt"(ts"rt"(ov(1rt,x0),x1),1rt)
+t20:=satz110b(1rt,ov(1rt,x0),x0,x1,t17,t19):is"rt"(x0,x1)
+ux@t21:=th3"l.imp"(is"rt"(ov(1rt,x0),ov(1rt,x1)),is"rt"(x0,x1),t16,[t:is"rt"(ov(1rt,x0),ov(1rt,x1))]t20(t)):nis"rt"(ov(1rt,x0),ov(1rt,x1))
+lx@[i:in(ov(1rt,x1),inv)]
+t22:=invapp(ov(1rt,x1),i,con,[x:rat][t:urt(ksi,x)][y:rat][u:urt(ksi,y)][v:less"rt"(y,x)][w:is"rt"(ov(1rt,x1),ov(1rt,x))]<symis(rat,ov(1rt,x1),ov(1rt,x),w)>t21(x,t)):con
+lx@t23:=[t:in(ov(1rt,x1),inv)]t22(t):not(in(ov(1rt,x1),inv))
+ksi@[z0:rat][i:in(z0,inv)][u0:rat][l:less"rt"(u0,z0)][x0:rat][ux:urt(ksi,x0)][j:is"rt"(z0,ov(1rt,x0))]
+t24:=isless2"rt"(z0,ov(1rt,x0),u0,j,l):less"rt"(u0,ov(1rt,x0))
+t25:=tris(rat,ts"rt"(ov(1rt,x0),x0),1rt,ts"rt"(u0,ov(1rt,u0)),satz110e(1rt,x0),satz110d(1rt,u0)):is"rt"(ts"rt"(ov(1rt,x0),x0),ts"rt"(u0,ov(1rt,u0)))
+t26:=isless2"rt"(ts"rt"(ov(1rt,x0),x0),ts"rt"(u0,ov(1rt,u0)),ts"rt"(u0,x0),t25,satz105c(u0,ov(1rt,x0),x0,t24)):less"rt"(ts"rt"(u0,x0),ts"rt"(u0,ov(1rt,u0)))
+t27:=isless12"rt"(ts"rt"(u0,x0),ts"rt"(x0,u0),ts"rt"(u0,ov(1rt,u0)),ts"rt"(ov(1rt,u0),u0),comts"rt"(u0,x0),comts"rt"(u0,ov(1rt,u0)),t26):less"rt"(ts"rt"(x0,u0),ts"rt"(ov(1rt,u0),u0))
+t28:=satz106c(x0,ov(1rt,u0),u0,t27):less"rt"(x0,ov(1rt,u0))
+t29:=satz119a(x0,ux,ov(1rt,u0),t28):urt(ksi,ov(1rt,u0))
+t30:=satz110e(1rt,u0):is"rt"(ts"rt"(ov(1rt,u0),u0),1rt)
+t31:=satz110g(1rt,ov(1rt,u0),u0,t30):is"rt"(u0,ov(1rt,ov(1rt,u0)))
+t32:=inv1(u0,ov(1rt,u0),t29,x0,ux,t28,t31):in(u0,inv)
+l@t33:=invapp(z0,i,in(u0,inv),[x:rat][t:urt(ksi,x)][y:rat][u:urt(ksi,y)][v:less"rt"(y,x)][w:is"rt"(z0,ov(1rt,x))]t32(x,t,w)):in(u0,inv)
+i@[x0:rat][ux:urt(ksi,x0)][x1:rat][ux1:urt(ksi,x1)][l:less"rt"(x1,x0)][j:is"rt"(z0,ov(1rt,x0))]
+t34:=satz91(x1,x0,l):some"rt"([x:rat]and(less"rt"(x1,x),less"rt"(x,x0)))
+[x2:rat][a:and(less"rt"(x1,x2),less"rt"(x2,x0))]
+t35:=ande1(less"rt"(x1,x2),less"rt"(x2,x0),a):less"rt"(x1,x2)
+t36:=satz119a(ksi,x1,ux1,x2,t35):urt(ksi,x2)
+t37:=inv1(ov(1rt,x2),x2,t36,x1,ux1,t35,refis(rat,ov(1rt,x2))):in(ov(1rt,x2),inv)
+t38:=ande2(less"rt"(x1,x2),less"rt"(x2,x0),a):less"rt"(x2,x0)
+t39:=tris(rat,ts"rt"(x0,ov(1rt,x0)),1rt,ts"rt"(x2,ov(1rt,x2)),satz110c(1rt,x0),satz110d(1rt,x2)):is"rt"(ts"rt"(x0,ov(1rt,x0)),ts"rt"(x2,ov(1rt,x2)))
+t40:=isless2"rt"(ts"rt"(x0,ov(1rt,x0)),ts"rt"(x2,ov(1rt,x2)),ts"rt"(x2,ov(1rt,x0)),t39,satz105c(x2,x0,ov(1rt,x0),t38)):less"rt"(ts"rt"(x2,ov(1rt,x0)),ts"rt"(x2,ov(1rt,x2)))
+t41:=isless12"rt"(ts"rt"(x2,ov(1rt,x0)),ts"rt"(ov(1rt,x0),x2),ts"rt"(x2,ov(1rt,x2)),ts"rt"(ov(1rt,x2),x2),comts"rt"(x2,ov(1rt,x0)),comts"rt"(x2,ov(1rt,x2)),t40):less"rt"(ts"rt"(ov(1rt,x0),x2),ts"rt"(ov(1rt,x2),x2))
+t42:=satz106c(ov(1rt,x0),ov(1rt,x2),x2,t41):less"rt"(ov(1rt,x0),ov(1rt,x2))
+t43:=ismore2"rt"(ov(1rt,x0),z0,ov(1rt,x2),symis(rat,z0,ov(1rt,x0),j),satz83(ov(1rt,x0),ov(1rt,x2),t42)):more"rt"(ov(1rt,x2),z0)
+t44:=andi(in(ov(1rt,x2),inv),more"rt"(ov(1rt,x2),z0),t37,t43):and(in(ov(1rt,x2),inv),more"rt"(ov(1rt,x2),z0))
+t45:=somei(rat,[x:rat]and(in(x,inv),more"rt"(x,z0)),ov(1rt,x2),t44):some"rt"([x:rat]and(in(x,inv),more"rt"(x,z0)))
+j@t46:=someapp(rat,[x:rat]and(less"rt"(x1,x),less"rt"(x,x0)),t34,some"rt"([x:rat]and(in(x,inv),more"rt"(x,z0))),[x:rat][t:and(less"rt"(x1,x),less"rt"(x,x0))]t45(x,t)):some"rt"([x:rat]and(in(x,inv),more"rt"(x,z0)))
+i@t47:=invapp(z0,i,some"rt"([x:rat]and(in(x,inv),more"rt"(x,z0))),[x:rat][t:urt(ksi,x)][y:rat][u:urt(ksi,y)][v:less"rt"(y,x)][w:is"rt"(z0,ov(1rt,x))]t46(x,t,y,u,v,w)):some"rt"([x:rat]and(in(x,inv),more"rt"(x,z0)))
+ksi@[x0:rat][lx:lrt(ksi,x0)][y0:rat][uy:urt(ksi,y0)]
+t48:=cut2(inv,ov(1rt,pl"rt"(y0,y0)),t15(y0,uy),ov(1rt,x0),t23(x0,lx),[x:rat][t:in(x,inv)][y:rat][u:less"rt"(y,x)]t33(x,t,y,u),[x:rat][t:in(x,inv)]t47(x,t)):cutprop(inv)
+lx@t49:=cutapp1b(ksi,cutprop(inv),[x:rat][t:urt(ksi,x)]t48(x,t)):cutprop(inv)
+ksi@t50:=cutapp1a(ksi,cutprop(inv),[x:rat][t:lrt(ksi,x)]t49(x,t)):cutprop(inv)
+chi:=cutof(inv,t50):cut
+[z0:rat][lz:lrt(ts(ksi,chi),z0)][x0:rat][lx:lrt(ksi,x0)][u0:rat][lu:lrt(chi,u0)][i:is"rt"(z0,ts"rt"(x0,u0))][x1:rat][ux:urt(ksi,x1)][j:is"rt"(u0,ov(1rt,x1))]
+t51:=tris(rat,z0,ts"rt"(x0,u0),ts"rt"(x0,ov(1rt,x1)),i,ists2"rt"(u0,ov(1rt,x1),x0,j)):is"rt"(z0,ts"rt"(x0,ov(1rt,x1)))
+t52:=cutapp2a(ksi,x0,lx,x1,ux):less"rt"(x0,x1)
+t53:=isless12"rt"(ts"rt"(x0,ov(1rt,x1)),z0,ts"rt"(x1,ov(1rt,x1)),1rt,symis(rat,z0,ts"rt"(x0,ov(1rt,x1)),t51),satz110c(1rt,x1),satz105c(x0,x1,ov(1rt,x1),t52)):less"rt"(z0,1rt)
+t54:=lrtrpofrt(1rt,z0,t53):lrt(1rp,z0)
+i@r1:=ini(inv,t50,u0,lu):in(u0,inv)
+r2:=invapp(u0,r1,lrt(1rp,z0),[x:rat][t:urt(ksi,x)][y:rat][u:urt(ksi,y)][v:less"rt"(y,x)][w:is"rt"(u0,ov(1rt,x))]t54(x,t,w)):lrt(1rp,z0)
+lz@r3:=tsapp(ksi,chi,z0,lz,lrt(1rp,z0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(chi,y)][v:is"rt"(z0,ts"rt"(x,y))]r2(x,t,y,u,v)):lrt(1rp,z0)
+ksi@[u0:rat][lu:lrt(1rp,u0)]
+t55:=lrtrpofrte(1rt,u0,lu):less"rt"(u0,1rt)
+t56:=satz83(u0,1rt,t55):more"rt"(1rt,u0)
+[x0:rat][lx:lrt(ksi,x0)][x1:rat][lx1:lrt(ksi,x1)][x2:rat][ux2:urt(ksi,x2)]
+t57:=cutapp2b(x1,lx1,x2,ux2):more"rt"(x2,x1)
+[i:is"rt"(mn"rt"(x2,x1,t57),ts"rt"(mn"rt"(1rt,u0,t56),x0))]
+t58:=cutapp2a(x0,lx,x2,ux2):less"rt"(x0,x2)
+t59:=satz105f(x0,x2,mn"rt"(1rt,u0,t56),t58):less"rt"(ts"rt"(mn"rt"(1rt,u0,t56),x0),ts"rt"(mn"rt"(1rt,u0,t56),x2))
+t60:=isless1"rt"(ts"rt"(mn"rt"(1rt,u0,t56),x0),mn"rt"(x2,x1,t57),ts"rt"(mn"rt"(1rt,u0,t56),x2),symis(rat,mn"rt"(x2,x1,t57),ts"rt"(mn"rt"(1rt,u0,t56),x0),i),t59):less"rt"(mn"rt"(x2,x1,t57),ts"rt"(mn"rt"(1rt,u0,t56),x2))
+t61:=tr4is(rat,pl"rt"(ts"rt"(mn"rt"(1rt,u0,t56),x2),ts"rt"(u0,x2)),ts"rt"(pl"rt"(mn"rt"(1rt,u0,t56),u0),x2),ts"rt"(1rt,x2),x2,pl"rt"(mn"rt"(x2,x1,t57),x1),distpt1"rt"(mn"rt"(1rt,u0,t56),u0,x2),ists1"rt"(pl"rt"(mn"rt"(1rt,u0,t56),u0),1rt,x2,satz101e(1rt,u0,t56)),example1c(x2),satz101f(x2,x1,t57)):is"rt"(pl"rt"(ts"rt"(mn"rt"(1rt,u0,t56),x2),ts"rt"(u0,x2)),pl"rt"(mn"rt"(x2,x1,t57),x1))
+t62:=satz96c(mn"rt"(x2,x1,t57),ts"rt"(mn"rt"(1rt,u0,t56),x2),ts"rt"(u0,x2),t60):less"rt"(pl"rt"(mn"rt"(x2,x1,t57),ts"rt"(u0,x2)),pl"rt"(ts"rt"(mn"rt"(1rt,u0,t56),x2),ts"rt"(u0,x2)))
+t63:=isless2"rt"(pl"rt"(ts"rt"(mn"rt"(1rt,u0,t56),x2),ts"rt"(u0,x2)),pl"rt"(mn"rt"(x2,x1,t57),x1),pl"rt"(mn"rt"(x2,x1,t57),ts"rt"(u0,x2)),t61,t62):less"rt"(pl"rt"(mn"rt"(x2,x1,t57),ts"rt"(u0,x2)),pl"rt"(mn"rt"(x2,x1,t57),x1))
+t64:=isless12"rt"(pl"rt"(mn"rt"(x2,x1,t57),ts"rt"(u0,x2)),pl"rt"(ts"rt"(u0,x2),mn"rt"(x2,x1,t57)),pl"rt"(mn"rt"(x2,x1,t57),x1),pl"rt"(x1,mn"rt"(x2,x1,t57)),compl"rt"(mn"rt"(x2,x1,t57),ts"rt"(u0,x2)),compl"rt"(mn"rt"(x2,x1,t57),x1),t63):less"rt"(pl"rt"(ts"rt"(u0,x2),mn"rt"(x2,x1,t57)),pl"rt"(x1,mn"rt"(x2,x1,t57)))
+t65:=satz97c(ts"rt"(u0,x2),x1,mn"rt"(x2,x1,t57),t64):less"rt"(ts"rt"(u0,x2),x1)
+t66:=tr3is(rat,ts"rt"(ov(1rt,u0),ts"rt"(u0,x2)),ts"rt"(ts"rt"(ov(1rt,u0),u0),x2),ts"rt"(1rt,x2),x2,assts2"rt"(ov(1rt,u0),u0,x2),ists1"rt"(ts"rt"(ov(1rt,u0),u0),1rt,x2,satz110e(1rt,u0)),example1c(x2)):is"rt"(ts"rt"(ov(1rt,u0),ts"rt"(u0,x2)),x2)
+t67:=isless12"rt"(ts"rt"(ov(1rt,u0),ts"rt"(u0,x2)),x2,ts"rt"(ov(1rt,u0),x1),ov(x1,u0),t66,satz141b(x1,u0),satz105f(ts"rt"(u0,x2),x1,ov(1rt,u0),t65)):less"rt"(x2,ov(x1,u0))
+t68:=satz119a(x2,ux2,ov(x1,u0),t67):urt(ksi,ov(x1,u0))
+t69:=satz110e(x1,u0):is"rt"(ts"rt"(ov(x1,u0),u0),x1)
+t70:=tr3is(rat,u0,ov(x1,ov(x1,u0)),ts"rt"(ov(1rt,ov(x1,u0)),x1),ts"rt"(x1,ov(1rt,ov(x1,u0))),satz110g(x1,ov(x1,u0),u0,t69),satz141c(x1,ov(x1,u0)),comts"rt"(ov(1rt,ov(x1,u0)),x1)):is"rt"(u0,ts"rt"(x1,ov(1rt,ov(x1,u0))))
+t71:=inv1(ov(1rt,ov(x1,u0)),ov(x1,u0),t68,x2,ux2,t67,refis(rat,ov(1rt,ov(x1,u0)))):in(ov(1rt,ov(x1,u0)),inv)
+t72:=ine(inv,t50,ov(1rt,ov(x1,u0)),t71):lrt(chi,ov(1rt,ov(x1,u0)))
+t73:=lrtts(ksi,chi,u0,x1,lx1,ov(1rt,ov(x1,u0)),t72,t70):lrt(ts(ksi,chi),u0)
+lx@t74:=satz132app(ksi,lrt(ts(ksi,chi),u0),ts"rt"(mn"rt"(1rt,u0,t56),x0),[x:rat][t:lrt(ksi,x)][y:rat][u:urt(ksi,y)][v:is"rt"(mn"rt"(y,x,cutapp2b(x,t,y,u)),ts"rt"(mn"rt"(1rt,u0,t56),x0))]t73(x,t,y,u,v)):lrt(ts(ksi,chi),u0)
+lu@t75:=cutapp1a(ksi,lrt(ts(ksi,chi),u0),[x:rat][t:lrt(ksi,x)]t74(x,t)):lrt(ts(ksi,chi),u0)
+ksi@t76:=isi1(ts(ksi,chi),1rp,[x:rat][t:lrt(ts(ksi,chi),x)]r3(x,t),[x:rat][t:lrt(1rp,x)]t75(x,t)):is(ts(ksi,chi),1rp)
+-4152
+satz152:=somei(cut,[t:cut]is(ts(ksi,t),1rp),chi".4152",t76".4152"):some([c:cut]is(ts(ksi,c),1rp))
+eta@[phi:cut][psi:cut]
++4153
+[m:more(phi,psi)]
+t1:=satz145d(phi,psi,eta,m):more(ts(eta,phi),ts(eta,psi))
+t2:=ec3e21(is(ts(eta,phi),ts(eta,psi)),more(ts(eta,phi),ts(eta,psi)),less(ts(eta,phi),ts(eta,psi)),satz123b(ts(eta,phi),ts(eta,psi)),t1):nis(ts(eta,phi),ts(eta,psi))
+psi@[l:less(phi,psi)]
+t3:=satz145f(phi,psi,eta,l):less(ts(eta,phi),ts(eta,psi))
+t4:=ec3e31(is(ts(eta,phi),ts(eta,psi)),more(ts(eta,phi),ts(eta,psi)),less(ts(eta,phi),ts(eta,psi)),satz123b(ts(eta,phi),ts(eta,psi)),t3):nis(ts(eta,phi),ts(eta,psi))
+psi@[n:nis(phi,psi)]
+t5:=th1"l.or3"(is(phi,psi),more(phi,psi),less(phi,psi),satz123a(phi,psi),n):or(more(phi,psi),less(phi,psi))
+t6:=orapp(more(phi,psi),less(phi,psi),nis(ts(eta,phi),ts(eta,psi)),t5,[t:more(phi,psi)]t2(t),[t:less(phi,psi)]t4(t)):nis(ts(eta,phi),ts(eta,psi))
+-4153
+[i:is(ts(eta,phi),ksi)][j:is(ts(eta,psi),ksi)]
+satz153b:=th7"l.imp"(is(phi,psi),nis(ts(eta,phi),ts(eta,psi)),weli(is(ts(eta,phi),ts(eta,psi)),tris2(cut,ts(eta,phi),ts(eta,psi),ksi,i,j)),[t:nis(phi,psi)]t6".4153"(t)):is(phi,psi)
++*4153
+eta@[tau:cut][i:is(ts(eta,tau),1rp)]
+chi:=ts(tau,ksi):cut
+t7:=tr3is(cut,ts(eta,chi),ts(ts(eta,tau),ksi),ts(1rp,ksi),ksi,assts2(eta,tau,ksi),ists1(ts(eta,tau),1rp,ksi,i),satz151b(ksi)):is(ts(eta,chi),ksi)
+t8:=somei(cut,[c:cut]is(ts(eta,c),ksi),chi,t7):some([c:cut]is(ts(eta,c),ksi))
+-4153
+eta@satz153a:=someapp(cut,[c:cut]is(ts(eta,c),1rp),satz152(eta),some([c:cut]is(ts(eta,c),ksi)),[c:cut][t:is(ts(eta,c),1rp)]t8".4153"(c,t)):some([c:cut]is(ts(eta,c),ksi))
++*4153
+eta@t9:=[c:cut][d:cut][t:is(ts(eta,c),ksi)][u:is(ts(eta,d),ksi)]satz153b(c,d,t,u):amone(cut,[c:cut]is(ts(eta,c),ksi))
+-4153
+eta@satz153:=onei(cut,[c:cut]is(ts(eta,c),ksi),t9".4153",satz153a):one([c:cut]is(ts(eta,c),ksi))
+ov:=ind(cut,[a:cut]is(ts(eta,a),ksi),satz153):cut
+satz153c:=oneax(cut,[a:cut]is(ts(eta,a),ksi),satz153):is(ts(eta,ov(ksi,eta)),ksi)
+satz153d:=symis(cut,ts(eta,ov(ksi,eta)),ksi,satz153c):is(ksi,ts(eta,ov(ksi,eta)))
+satz153e:=tris(cut,ts(ov(ksi,eta),eta),ts(eta,ov(ksi,eta)),ksi,comts(ov(ksi,eta),eta),satz153c):is(ts(ov(ksi,eta),eta),ksi)
+satz153f:=symis(cut,ts(ov(ksi,eta),eta),ksi,satz153e):is(ksi,ts(ov(ksi,eta),eta))
+[phi:cut][i:is(ts(eta,phi),ksi)]
+satz153g:=satz153b(phi,ov(ksi,eta),i,satz153c):is(phi,ov(ksi,eta))
+@[ksi:cut]
+ratrp:=image(rat,cut,[x:rat]rpofrt(x),ksi):'prop'
+@[x0:rat]
+ratrpi:=imagei(rat,cut,[x:rat]rpofrt(x),x0):ratrp(rpofrt(x0))
+@[x:nat]
+rpofnt:=rpofrt(rtofn(x)):cut
+ksi@natrp:=image(nat,cut,[x:nat]rpofnt(x),ksi):'prop'
+x@natrpi:=imagei(nat,cut,[y:nat]rpofnt(y),x):natrp(rpofnt(x))
+ksi@[n:natrp(ksi)]
++iii5
+[x:nat][i:is(ksi,rpofnt(x))]
+t1:=somei(rat,[y:rat]is(ksi,rpofrt(y)),rtofn(x),i):ratrp(ksi)
+-iii5
+lemmaiii5:=someapp(nat,[x:nat]is(ksi,rpofnt(x)),n,ratrp(ksi),[x:nat][t:is(ksi,rpofnt(x))]t1".iii5"(x,t)):ratrp(ksi)
+@[x0:rat][y0:rat][m:more"rt"(x0,y0)]
++5154
+t1:=lrtrpofrt(x0,y0,satz82(x0,y0,m)):lrt(rpofrt(x0),y0)
+t2:=urtrpofrt(y0,y0,moreisi2"rt"(y0,y0,refis(rat,y0))):urt(rpofrt(y0),y0)
+t3:=andi(lrt(rpofrt(x0),y0),urt(rpofrt(y0),y0),t1,t2):and(lrt(rpofrt(x0),y0),urt(rpofrt(y0),y0))
+-5154
+satz154a:=somei(rat,[x:rat]and(lrt(rpofrt(x0),x),urt(rpofrt(y0),x)),y0,t3".5154"):more(rpofrt(x0),rpofrt(y0))
+y0@[i:is"rt"(x0,y0)]
+satz154b:=isf(rat,cut,[x:rat]rpofrt(x),x0,y0,i):is(rpofrt(x0),rpofrt(y0))
+y0@[l:less"rt"(x0,y0)]
+satz154c:=satz121(rpofrt(y0),rpofrt(x0),satz154a(y0,x0,satz83(x0,y0,l))):less(rpofrt(x0),rpofrt(y0))
++*5154
+y0@t4:=satz81a(x0,y0):or3(is"rt"(x0,y0),more"rt"(x0,y0),less"rt"(x0,y0))
+t5:=satz123b(rpofrt(x0),rpofrt(y0)):ec3(is(rpofrt(x0),rpofrt(y0)),more(rpofrt(x0),rpofrt(y0)),less(rpofrt(x0),rpofrt(y0)))
+-5154
+y0@[m:more(rpofrt(x0),rpofrt(y0))]
+satz154d:=th11"l.ec3"(is"rt"(x0,y0),more"rt"(x0,y0),less"rt"(x0,y0),is(rpofrt(x0),rpofrt(y0)),more(rpofrt(x0),rpofrt(y0)),less(rpofrt(x0),rpofrt(y0)),t4".5154",t5".5154",[u:is"rt"(x0,y0)]satz154b(u),[u:more"rt"(x0,y0)]satz154a(u),[u:less"rt"(x0,y0)]satz154c(u),m):more"rt"(x0,y0)
+y0@[i:is(rpofrt(x0),rpofrt(y0))]
+satz154e:=th10"l.ec3"(is"rt"(x0,y0),more"rt"(x0,y0),less"rt"(x0,y0),is(rpofrt(x0),rpofrt(y0)),more(rpofrt(x0),rpofrt(y0)),less(rpofrt(x0),rpofrt(y0)),t4".5154",t5".5154",[u:is"rt"(x0,y0)]satz154b(u),[u:more"rt"(x0,y0)]satz154a(u),[u:less"rt"(x0,y0)]satz154c(u),i):is"rt"(x0,y0)
+y0@[l:less(rpofrt(x0),rpofrt(y0))]
+satz154f:=th12"l.ec3"(is"rt"(x0,y0),more"rt"(x0,y0),less"rt"(x0,y0),is(rpofrt(x0),rpofrt(y0)),more(rpofrt(x0),rpofrt(y0)),less(rpofrt(x0),rpofrt(y0)),t4".5154",t5".5154",[u:is"rt"(x0,y0)]satz154b(u),[u:more"rt"(x0,y0)]satz154a(u),[u:less"rt"(x0,y0)]satz154c(u),l):less"rt"(x0,y0)
++*iii5
+@t2:=[x:rat][y:rat][t:is(rpofrt(x),rpofrt(y))]satz154e(x,y,t):injective(rat,cut,[x:rat]rpofrt(x))
+-iii5
+y0@[i:is"rt"(x0,y0)]
+isrterp:=satz154b(x0,y0,i):is(rpofrt(x0),rpofrt(y0))
+y0@[i:is(rpofrt(x0),rpofrt(y0))]
+isrtirp:=satz154e(x0,y0,i):is"rt"(x0,y0)
+ksi@[rtksi:ratrp(ksi)]
+rtofrp:=soft(rat,cut,[x:rat]rpofrt(x),t2".iii5",ksi,rtksi):rat
+[eta:cut][rteta:ratrp(eta)][i:is(ksi,eta)]
+isrpert:=isinv(rat,cut,[x:rat]rpofrt(x),t2".iii5",ksi,rtksi,eta,rteta,i):is"rt"(rtofrp(ksi,rtksi),rtofrp(eta,rteta))
+rteta@[i:is"rt"(rtofrp(ksi,rtksi),rtofrp(eta,rteta))]
+isrpirt:=isinve(rat,cut,[x:rat]rpofrt(x),t2".iii5",ksi,rtksi,eta,rteta,i):is(ksi,eta)
+x0@isrtrp1:=isst1(rat,cut,[x:rat]rpofrt(x),t2".iii5",x0):is"rt"(x0,rtofrp(rpofrt(x0),ratrpi(x0)))
+isrtrp2:=isst2(rat,cut,[x:rat]rpofrt(x),t2".iii5",x0):is"rt"(rtofrp(rpofrt(x0),ratrpi(x0)),x0)
+rtksi@isrprt1:=ists1"e"(rat,cut,[x:rat]rpofrt(x),t2".iii5",ksi,rtksi):is(ksi,rpofrt(rtofrp(ksi,rtksi)))
+isrprt2:=ists2"e"(rat,cut,[x:rat]rpofrt(x),t2".iii5",ksi,rtksi):is(rpofrt(rtofrp(ksi,rtksi)),ksi)
+@[x:nat][y:nat][i:is"n"(x,y)]
+isnterp:=isf(nat,cut,[z:nat]rpofnt(z),x,y,i):is(rpofnt(x),rpofnt(y))
+y@[i:is(rpofnt(x),rpofnt(y))]
+isntirp:=isnirt(x,y,isrtirp(rtofn(x),rtofn(y),i)):is"n"(x,y)
++*iii5
+@t3:=[x:nat][y:nat][t:is(rpofnt(x),rpofnt(y))]isntirp(x,y,t):injective(nat,cut,[x:nat]rpofnt(x))
+-iii5
+ksi@[ntksi:natrp(ksi)]
+ntofrp:=soft(nat,cut,[x:nat]rpofnt(x),t3".iii5",ksi,ntksi):nat
+[eta:cut][nteta:natrp(eta)][i:is(ksi,eta)]
+isrpent:=isinv(nat,cut,[x:nat]rpofnt(x),t3".iii5",ksi,ntksi,eta,nteta,i):is"n"(ntofrp(ksi,ntksi),ntofrp(eta,nteta))
+nteta@[i:is"n"(ntofrp(ksi,ntksi),ntofrp(eta,nteta))]
+isrpint:=isinve(nat,cut,[x:nat]rpofnt(x),t3".iii5",ksi,ntksi,eta,nteta,i):is(ksi,eta)
+x@isntrp1:=isst1(nat,cut,[y:nat]rpofnt(y),t3".iii5",x):is"n"(x,ntofrp(rpofnt(x),natrpi(x)))
+isntrp2:=isst2(nat,cut,[y:nat]rpofnt(y),t3".iii5",x):is"n"(ntofrp(rpofnt(x),natrpi(x)),x)
+ntksi@isrpnt1:=ists1"e"(nat,cut,[x:nat]rpofnt(x),t3".iii5",ksi,ntksi):is(ksi,rpofnt(ntofrp(ksi,ntksi)))
+isrpnt2:=ists2"e"(nat,cut,[x:nat]rpofnt(x),t3".iii5",ksi,ntksi):is(rpofnt(ntofrp(ksi,ntksi)),ksi)
+@[x0:rat][y0:rat]
++5155
+[z0:rat][lz:lrt(pl(rpofrt(x0),rpofrt(y0)),z0)][u0:rat][lu:lrt(rpofrt(x0),u0)][v0:rat][lv:lrt(rpofrt(y0),v0)][i:is"rt"(z0,pl"rt"(u0,v0))]
+t1:=lrtrpofrte(x0,u0,lu):less"rt"(u0,x0)
+t2:=lrtrpofrte(y0,v0,lv):less"rt"(v0,y0)
+t3:=satz98a(u0,x0,v0,y0,t1,t2):less"rt"(pl"rt"(u0,v0),pl"rt"(x0,y0))
+t4:=isless1"rt"(pl"rt"(u0,v0),z0,pl"rt"(x0,y0),symis(rat,z0,pl"rt"(u0,v0),i),t3):less"rt"(z0,pl"rt"(x0,y0))
+t5:=lrtrpofrt(pl"rt"(x0,y0),z0,t4):lrt(rpofrt(pl"rt"(x0,y0)),z0)
+lz@t6:=plapp(rpofrt(x0),rpofrt(y0),z0,lz,lrt(rpofrt(pl"rt"(x0,y0)),z0),[x:rat][t:lrt(rpofrt(x0),x)][y:rat][u:lrt(rpofrt(y0),y)][v:is"rt"(z0,pl"rt"(x,y))]t5(x,t,y,u,v)):lrt(rpofrt(pl"rt"(x0,y0)),z0)
+y0@[u0:rat][lu:lrt(rpofrt(pl"rt"(x0,y0)),u0)]
+t7:=lrtrpofrte(pl"rt"(x0,y0),u0,lu):less"rt"(u0,pl"rt"(x0,y0))
+u01:=ov"rt"(u0,pl"rt"(x0,y0)):rat
+t8:=isless12"rt"(u0,ts"rt"(u01,pl"rt"(x0,y0)),pl"rt"(x0,y0),ts"rt"(1rt,pl"rt"(x0,y0)),satz110f(u0,pl"rt"(x0,y0)),example1d(pl"rt"(x0,y0)),t7):less"rt"(ts"rt"(u01,pl"rt"(x0,y0)),ts"rt"(1rt,pl"rt"(x0,y0)))
+t9:=satz106c(u01,1rt,pl"rt"(x0,y0),t8):less"rt"(u01,1rt)
+t10:=tris(rat,u0,ts"rt"(pl"rt"(x0,y0),u01),pl"rt"(ts"rt"(x0,u01),ts"rt"(y0,u01)),satz110d(u0,pl"rt"(x0,y0)),disttp1"rt"(x0,y0,u01)):is"rt"(u0,pl"rt"(ts"rt"(x0,u01),ts"rt"(y0,u01)))
+y0@[l:less"rt"(y0,1rt)]
+t11:=isless12"rt"(ts"rt"(y0,x0),ts"rt"(x0,y0),ts"rt"(1rt,x0),x0,comts"rt"(y0,x0),example1c(x0),satz105c(y0,1rt,x0,l)):less"rt"(ts"rt"(x0,y0),x0)
+t12:=lrtrpofrt(x0,ts"rt"(x0,y0),t11):lrt(rpofrt(x0),ts"rt"(x0,y0))
+lu@t13:=lrtpl(rpofrt(x0),rpofrt(y0),u0,ts"rt"(x0,u01),t12(x0,u01,t9),ts"rt"(y0,u01),t12(y0,u01,t9),t10):lrt(pl(rpofrt(x0),rpofrt(y0)),u0)
+-5155
+satz155a:=isi1(rpofrt(pl"rt"(x0,y0)),pl(rpofrt(x0),rpofrt(y0)),[x:rat][t:lrt(rpofrt(pl"rt"(x0,y0)),x)]t13".5155"(x,t),[x:rat][t:lrt(pl(rpofrt(x0),rpofrt(y0)),x)]t6".5155"(x,t)):is(rpofrt(pl"rt"(x0,y0)),pl(rpofrt(x0),rpofrt(y0)))
+[m:more"rt"(x0,y0)]
++*5155
+m@t14:=satz101f(x0,y0,m):is"rt"(x0,pl"rt"(mn"rt"(x0,y0,m),y0))
+t15:=tris(cut,rpofrt(x0),rpofrt(pl"rt"(mn"rt"(x0,y0,m),y0)),pl(rpofrt(mn"rt"(x0,y0,m)),rpofrt(y0)),isrterp(x0,pl"rt"(mn"rt"(x0,y0,m),y0),t14),satz155a(mn"rt"(x0,y0,m),y0)):is(rpofrt(x0),pl(rpofrt(mn"rt"(x0,y0,m)),rpofrt(y0)))
+t16:=tris2(cut,pl(rpofrt(y0),rpofrt(mn"rt"(x0,y0,m))),rpofrt(x0),pl(rpofrt(mn"rt"(x0,y0,m)),rpofrt(y0)),compl(rpofrt(y0),rpofrt(mn"rt"(x0,y0,m))),t15):is(pl(rpofrt(y0),rpofrt(mn"rt"(x0,y0,m))),rpofrt(x0))
+-5155
+m@satz155b:=satz140g(rpofrt(x0),rpofrt(y0),rpofrt(mn"rt"(x0,y0,m)),satz154a(x0,y0,m),t16".5155"):is(rpofrt(mn"rt"(x0,y0,m)),mn(rpofrt(x0),rpofrt(y0),satz154a(x0,y0,m)))
++*5155
+y0@[z0:rat][lz:lrt(ts(rpofrt(x0),rpofrt(y0)),z0)][u0:rat][lu:lrt(rpofrt(x0),u0)][v0:rat][lv:lrt(rpofrt(y0),v0)][i:is"rt"(z0,ts"rt"(u0,v0))]
+t17:=lrtrpofrte(x0,u0,lu):less"rt"(u0,x0)
+t18:=lrtrpofrte(y0,v0,lv):less"rt"(v0,y0)
+t19:=satz107a(u0,x0,v0,y0,t17,t18):less"rt"(ts"rt"(u0,v0),ts"rt"(x0,y0))
+t20:=isless1"rt"(ts"rt"(u0,v0),z0,ts"rt"(x0,y0),symis(rat,z0,ts"rt"(u0,v0),i),t19):less"rt"(z0,ts"rt"(x0,y0))
+t21:=lrtrpofrt(ts"rt"(x0,y0),z0,t20):lrt(rpofrt(ts"rt"(x0,y0)),z0)
+lz@t22:=tsapp(rpofrt(x0),rpofrt(y0),z0,lz,lrt(rpofrt(ts"rt"(x0,y0)),z0),[x:rat][t:lrt(rpofrt(x0),x)][y:rat][u:lrt(rpofrt(y0),y)][v:is"rt"(z0,ts"rt"(x,y))]t21(x,t,y,u,v)):lrt(rpofrt(ts"rt"(x0,y0)),z0)
+y0@[u0:rat][lu:lrt(rpofrt(ts"rt"(x0,y0)),u0)]
+t23:=lrtrpofrte(ts"rt"(x0,y0),u0,lu):less"rt"(u0,ts"rt"(x0,y0))
+[u1:rat][a:and(less"rt"(u0,u1),less"rt"(u1,ts"rt"(x0,y0)))]
+t24:=ande1(less"rt"(u0,u1),less"rt"(u1,ts"rt"(x0,y0)),a):less"rt"(u0,u1)
+t25:=ande2(less"rt"(u0,u1),less"rt"(u1,ts"rt"(x0,y0)),a):less"rt"(u1,ts"rt"(x0,y0))
+t26:=isless12"rt"(u0,ts"rt"(ov"rt"(u0,u1),u1),u1,ts"rt"(1rt,u1),satz110f(u0,u1),example1d(u1),t24):less"rt"(ts"rt"(ov"rt"(u0,u1),u1),ts"rt"(1rt,u1))
+t27:=satz106c(ov"rt"(u0,u1),1rt,u1,t26):less"rt"(ov"rt"(u0,u1),1rt)
+t28:=isless1"rt"(u1,ts"rt"(ov"rt"(u1,y0),y0),ts"rt"(x0,y0),satz110f(u1,y0),t25):less"rt"(ts"rt"(ov"rt"(u1,y0),y0),ts"rt"(x0,y0))
+t29:=satz106c(ov"rt"(u1,y0),x0,y0,t28):less"rt"(ov"rt"(u1,y0),x0)
+t30:=tr3is(rat,u0,ts"rt"(u1,ov"rt"(u0,u1)),ts"rt"(ts"rt"(ov"rt"(u1,y0),y0),ov"rt"(u0,u1)),ts"rt"(ov"rt"(u1,y0),ts"rt"(y0,ov"rt"(u0,u1))),satz110d(u0,u1),ists1"rt"(u1,ts"rt"(ov"rt"(u1,y0),y0),ov"rt"(u0,u1),satz110f(u1,y0)),assts1"rt"(ov"rt"(u1,y0),y0,ov"rt"(u0,u1))):is"rt"(u0,ts"rt"(ov"rt"(u1,y0),ts"rt"(y0,ov"rt"(u0,u1))))
+t31:=lrtts(rpofrt(x0),rpofrt(y0),u0,ov"rt"(u1,y0),lrtrpofrt(x0,ov"rt"(u1,y0),t29),ts"rt"(y0,ov"rt"(u0,u1)),t12(y0,ov"rt"(u0,u1),t27),t30):lrt(ts(rpofrt(x0),rpofrt(y0)),u0)
+lu@t32:=someapp(rat,[x:rat]and(less"rt"(u0,x),less"rt"(x,ts"rt"(x0,y0))),satz91(u0,ts"rt"(x0,y0),t23),lrt(ts(rpofrt(x0),rpofrt(y0)),u0),[x:rat][t:and(less"rt"(u0,x),less"rt"(x,ts"rt"(x0,y0)))]t31(x,t)):lrt(ts(rpofrt(x0),rpofrt(y0)),u0)
+-5155
+y0@satz155c:=isi1(rpofrt(ts"rt"(x0,y0)),ts(rpofrt(x0),rpofrt(y0)),[x:rat][t:lrt(rpofrt(ts"rt"(x0,y0)),x)]t32".5155"(x,t),[x:rat][t:lrt(ts(rpofrt(x0),rpofrt(y0)),x)]t22".5155"(x,t)):is(rpofrt(ts"rt"(x0,y0)),ts(rpofrt(x0),rpofrt(y0)))
++*5155
+y0@t33:=satz110f(x0,y0):is"rt"(x0,ts"rt"(ov"rt"(x0,y0),y0))
+t34:=tris(cut,rpofrt(x0),rpofrt(ts"rt"(ov"rt"(x0,y0),y0)),ts(rpofrt(ov"rt"(x0,y0)),rpofrt(y0)),isrterp(x0,ts"rt"(ov"rt"(x0,y0),y0),t33),satz155c(ov"rt"(x0,y0),y0)):is(rpofrt(x0),ts(rpofrt(ov"rt"(x0,y0)),rpofrt(y0)))
+t35:=tris2(cut,ts(rpofrt(y0),rpofrt(ov"rt"(x0,y0))),rpofrt(x0),ts(rpofrt(ov"rt"(x0,y0)),rpofrt(y0)),comts(rpofrt(y0),rpofrt(ov"rt"(x0,y0))),t34):is(ts(rpofrt(y0),rpofrt(ov"rt"(x0,y0))),rpofrt(x0))
+-5155
+y0@satz155d:=satz153g(rpofrt(x0),rpofrt(y0),rpofrt(ov"rt"(x0,y0)),t35".5155"):is(rpofrt(ov"rt"(x0,y0)),ov(rpofrt(x0),rpofrt(y0)))
+@[x:nat][y:nat]
+satz155e:=tris(cut,rpofnt(pl"n"(x,y)),rpofrt(pl"rt"(rtofn(x),rtofn(y))),pl(rpofnt(x),rpofnt(y)),isrterp(rtofn(pl"n"(x,y)),pl"rt"(rtofn(x),rtofn(y)),symis(rat,pl"rt"(rtofn(x),rtofn(y)),rtofn(pl"n"(x,y)),satz112h(x,y))),satz155a(rtofn(x),rtofn(y))):is(rpofnt(pl"n"(x,y)),pl(rpofnt(x),rpofnt(y)))
+satz155f:=tris(cut,rpofnt(ts"n"(x,y)),rpofrt(ts"rt"(rtofn(x),rtofn(y))),ts(rpofnt(x),rpofnt(y)),isrterp(rtofn(ts"n"(x,y)),ts"rt"(rtofn(x),rtofn(y)),symis(rat,ts"rt"(rtofn(x),rtofn(y)),rtofn(ts"n"(x,y)),satz112j(x,y))),satz155c(rtofn(x),rtofn(y))):is(rpofnt(ts"n"(x,y)),ts(rpofnt(x),rpofnt(y)))
++nt
+@natt:=ot(cut,[t:cut]natrp(t)):'type'
+[ksi:cut][nksi:natrp(ksi)]
+nttofrp:=out(cut,[t:cut]natrp(t),ksi,nksi):natt
+@[xt:natt][yt:natt]
+is:=is"e"(natt,xt,yt):'prop'
+nis:=not(is(xt,yt)):'prop'
+@[p:[x:natt]'prop']
+all:=all"l"(natt,p):'prop'
+some:=some"l"(natt,p):'prop'
+one:=one"e"(natt,p):'prop'
+xt@[st:set(natt)]
+in:=esti(natt,xt,st):'prop'
+xt@rpofntt:=in"e"(cut,[t:cut]natrp(t),xt):cut
+natrpi:=inp(cut,[t:cut]natrp(t),xt):natrp(rpofntt(xt))
+nksi@[eta:cut][neta:natrp(eta)][i:is"rp"(ksi,eta)]
+isrpentt:=isouti(cut,[t:cut]natrp(t),ksi,nksi,eta,neta,i):is(nttofrp(ksi,nksi),nttofrp(eta,neta))
+neta@[i:is(nttofrp(ksi,nksi),nttofrp(eta,neta))]
+isrpintt:=isoute(cut,[t:cut]natrp(t),ksi,nksi,eta,neta,i):is"rp"(ksi,eta)
+yt@[i:is(xt,yt)]
+isntterp:=isini(cut,[t:cut]natrp(t),xt,yt,i):is"rp"(rpofntt(xt),rpofntt(yt))
+yt@[i:is"rp"(rpofntt(xt),rpofntt(yt))]
+isnttirp:=isine(cut,[t:cut]natrp(t),xt,yt,i):is(xt,yt)
+nksi@isrpntt1:=isinout(cut,[t:cut]natrp(t),ksi,nksi):is"rp"(ksi,rpofntt(nttofrp(ksi,nksi)))
+xt@isnttrp1:=isoutin(cut,[t:cut]natrp(t),xt):is(xt,nttofrp(rpofntt(xt),natrpi(xt)))
+@[x:nat]
+nttofnt:=nttofrp(rpofnt(x),natrpi"rp"(x)):natt
+[y:nat][i:is"n"(x,y)]
+isntentt:=isrpentt(rpofnt(x),natrpi"rp"(x),rpofnt(y),natrpi"rp"(y),isnterp(x,y,i)):is(nttofnt(x),nttofnt(y))
+y@[i:is(nttofnt(x),nttofnt(y))]
+isntintt:=isntirp(x,y,isrpintt(rpofnt(x),natrpi"rp"(x),rpofnt(y),natrpi"rp"(y),i)):is"n"(x,y)
+xt@ntofntt:=ntofrp(rpofntt(xt),natrpi(xt)):nat
+yt@[i:is(xt,yt)]
+isnttent:=isrpent(rpofntt(xt),natrpi(xt),rpofntt(yt),natrpi(yt),isntterp(xt,yt,i)):is"n"(ntofntt(xt),ntofntt(yt))
+yt@[i:is"n"(ntofntt(xt),ntofntt(yt))]
+isnttint:=isnttirp(xt,yt,isrpint(rpofntt(xt),natrpi(xt),rpofntt(yt),natrpi(yt),i)):is(xt,yt)
++iii5
+x@t5:=isrpntt1(rpofnt(x),natrpi"rp"(x)):is"rp"(rpofnt(x),rpofntt(nttofnt(x)))
+t6:=isrpent(rpofnt(x),natrpi"rp"(x),rpofntt(nttofnt(x)),natrpi(nttofnt(x)),t5):is"n"(ntofrp(rpofnt(x),natrpi"rp"(x)),ntofntt(nttofnt(x)))
+-iii5
+x@isntntt1:=tris(nat,x,ntofrp(rpofnt(x),natrpi"rp"(x)),ntofntt(nttofnt(x)),isntrp1(x),t6".iii5"):is"n"(x,ntofntt(nttofnt(x)))
++*iii5
+xt@t7:=isrpnt1(rpofntt(xt),natrpi(xt)):is"rp"(rpofntt(xt),rpofnt(ntofntt(xt)))
+t8:=isrpentt(rpofntt(xt),natrpi(xt),rpofnt(ntofntt(xt)),natrpi"rp"(ntofntt(xt)),t7):is(nttofrp(rpofntt(xt),natrpi(xt)),nttofnt(ntofntt(xt)))
+-iii5
+xt@isnttnt1:=tris(natt,xt,nttofrp(rpofntt(xt),natrpi(xt)),nttofnt(ntofntt(xt)),isnttrp1(xt),t8".iii5"):is(xt,nttofnt(ntofntt(xt)))
+x@isntntt2:=symis(nat,x,ntofntt(nttofnt(x)),isntntt1):is"n"(ntofntt(nttofnt(x)),x)
+xt@isnttnt2:=symis(natt,xt,nttofnt(ntofntt(xt)),isnttnt1):is(nttofnt(ntofntt(xt)),xt)
+@1t:=nttofnt(1):natt
+suct:=[x:natt]nttofnt(<ntofntt(x)>suc):[x:natt]natt
++5156
+xt@[j:is(<xt>suct,1t)]
+t1:=isntintt(<ntofntt(xt)>suc,1,j):is"n"(<ntofntt(xt)>suc,1)
+-5156
+xt@satz156a:=th3"l.imp"(is(<xt>suct,1t),is"n"(<ntofntt(xt)>suc,1),<ntofntt(xt)>ax3,[t:is(<xt>suct,1t)]t1".5156"(t)):nis(<xt>suct,1t)
+yt@[i:is(<xt>suct,<yt>suct)]
++*5156
+i@t2:=isntintt(<ntofntt(xt)>suc,<ntofntt(yt)>suc,i):is"n"(<ntofntt(xt)>suc,<ntofntt(yt)>suc)
+-5156
+i@satz156b:=isnttint(xt,yt,<t2".5156"><ntofntt(yt)><ntofntt(xt)>ax4):is(xt,yt)
+@[st:set(natt)]
+cond1:=in(1t,st):'prop'
+cond2:=all([x:natt]imp(in(x,st),in(<x>suct,st))):'prop'
+[c1:cond1][c2:cond2]
++*5156
+c2@[x:nat]
+prop1:=in(nttofnt(x),st):'prop'
+[p:prop1(x)]
+t3:=<p><nttofnt(x)>c2:in(<nttofnt(x)>suct,st)
+t4:=isp(nat,[t:nat]in(nttofnt(<t>suc),st),ntofntt(nttofnt(x)),x,t3,isntntt2(x)):prop1(<x>suc)
+-5156
+c2@[xt:natt]
++*5156
+xt@t5:=induction([t:nat]prop1(t),c1,[t:nat][u:prop1(t)]t4(t,u),ntofntt(xt)):in(nttofnt(ntofntt(xt)),st)
+-5156
+xt@satz156c:=isp(natt,[t:natt]in(t,st),nttofnt(ntofntt(xt)),xt,t5".5156",isnttnt2(xt)):in(xt,st)
+@ax3t:=[x:natt]satz156a(x):[x:natt]nis(<x>suct,1t)
+ax4t:=[x:natt][y:natt][u:is(<x>suct,<y>suct)]satz156b(x,y,u):[x:natt][y:natt][u:is(<x>suct,<y>suct)]is(x,y)
+ax5t:=[s:set(natt)][u:cond1(s)][v:cond2(s)][x:natt]satz156c(s,u,v,x):[s:set(natt)][u:cond1(s)][v:cond2(s)][x:natt]in(x,s)
+-nt
++rtt
+@ratt:=ot(cut,[t:cut]ratrp(t)):'type'
+[ksi:cut][rtksi:ratrp(ksi)]
+rttofrp:=out(cut,[t:cut]ratrp(t),ksi,rtksi):ratt
+@[x0t:ratt][y0t:ratt]
+is:=is"e"(ratt,x0t,y0t):'prop'
+nis:=not(is(x0t,y0t)):'prop'
+@[p:[x:ratt]'prop']
+all:=all"l"(ratt,p):'prop'
+some:=some"l"(ratt,p):'prop'
+one:=one"e"(ratt,p):'prop'
+x0t@rpofrtt:=in"e"(cut,[t:cut]ratrp(t),x0t):cut
+ratrpi:=inp(cut,[t:cut]ratrp(t),x0t):ratrp(rpofrtt(x0t))
+rtksi@[eta:cut][rteta:ratrp(eta)][i:is"rp"(ksi,eta)]
+isrpertt:=isouti(cut,[t:cut]ratrp(t),ksi,rtksi,eta,rteta,i):is(rttofrp(ksi,rtksi),rttofrp(eta,rteta))
+rteta@[i:is(rttofrp(ksi,rtksi),rttofrp(eta,rteta))]
+isrpirtt:=isoute(cut,[t:cut]ratrp(t),ksi,rtksi,eta,rteta,i):is"rp"(ksi,eta)
+y0t@[i:is(x0t,y0t)]
+isrtterp:=isini(cut,[t:cut]ratrp(t),x0t,y0t,i):is"rp"(rpofrtt(x0t),rpofrtt(y0t))
+y0t@[i:is"rp"(rpofrtt(x0t),rpofrtt(y0t))]
+isrttirp:=isine(cut,[t:cut]ratrp(t),x0t,y0t,i):is(x0t,y0t)
+rtksi@isrprtt1:=isinout(cut,[t:cut]ratrp(t),ksi,rtksi):is"rp"(ksi,rpofrtt(rttofrp(ksi,rtksi)))
+x0t@isrttrp1:=isoutin(cut,[t:cut]ratrp(t),x0t):is(x0t,rttofrp(rpofrtt(x0t),ratrpi(x0t)))
+@[x0:rat]
+rttofrt:=rttofrp(rpofrt(x0),ratrpi"rp"(x0)):ratt
+[y0:rat][i:is"rt"(x0,y0)]
+isrtertt:=isrpertt(rpofrt(x0),ratrpi"rp"(x0),rpofrt(y0),ratrpi"rp"(y0),isrterp(x0,y0,i)):is(rttofrt(x0),rttofrt(y0))
+y0@[i:is(rttofrt(x0),rttofrt(y0))]
+isrtirtt:=isrtirp(x0,y0,isrpirtt(rpofrt(x0),ratrpi"rp"(x0),rpofrt(y0),ratrpi"rp"(y0),i)):is"rt"(x0,y0)
+x0t@rtofrtt:=rtofrp(rpofrtt(x0t),ratrpi(x0t)):rat
+y0t@[i:is(x0t,y0t)]
+isrttert:=isrpert(rpofrtt(x0t),ratrpi(x0t),rpofrtt(y0t),ratrpi(y0t),isrtterp(x0t,y0t,i)):is"rt"(rtofrtt(x0t),rtofrtt(y0t))
+y0t@[i:is"rt"(rtofrtt(x0t),rtofrtt(y0t))]
+isrttirt:=isrttirp(x0t,y0t,isrpirt(rpofrtt(x0t),ratrpi(x0t),rpofrtt(y0t),ratrpi(y0t),i)):is(x0t,y0t)
++iii5
+x0@t9:=isrprtt1(rpofrt(x0),ratrpi"rp"(x0)):is"rp"(rpofrt(x0),rpofrtt(rttofrt(x0)))
+t10:=isrpert(rpofrt(x0),ratrpi"rp"(x0),rpofrtt(rttofrt(x0)),ratrpi(rttofrt(x0)),t9):is"rt"(rtofrp(rpofrt(x0),ratrpi"rp"(x0)),rtofrtt(rttofrt(x0)))
+-iii5
+x0@isrtrtt1:=tris(rat,x0,rtofrp(rpofrt(x0),ratrpi"rp"(x0)),rtofrtt(rttofrt(x0)),isrtrp1(x0),t10".iii5"):is"rt"(x0,rtofrtt(rttofrt(x0)))
++*iii5
+x0t@t11:=isrprt1(rpofrtt(x0t),ratrpi(x0t)):is"rp"(rpofrtt(x0t),rpofrt(rtofrtt(x0t)))
+t12:=isrpertt(rpofrtt(x0t),ratrpi(x0t),rpofrt(rtofrtt(x0t)),ratrpi"rp"(rtofrtt(x0t)),t11):is(rttofrp(rpofrtt(x0t),ratrpi(x0t)),rttofrt(rtofrtt(x0t)))
+-iii5
+x0t@isrttrt1:=tris(ratt,x0t,rttofrp(rpofrtt(x0t),ratrpi(x0t)),rttofrt(rtofrtt(x0t)),isrttrp1(x0t),t12".iii5"):is(x0t,rttofrt(rtofrtt(x0t)))
+-rtt
+@[ksi:cut]
+example2:=satz153c(1rp,ksi):is(ts(ksi,ov(1rp,ksi)),1rp)
+[rtksi:ratrp(ksi)]
++5157
+x01:=rtofrp(ksi,rtksi):rat
+ksi@s1:=setof(rat,[x:rat]urt(ksi,x)):set(rat)
+rtksi@[y0:rat][i:in(y0,s1)]
+t1:=estie(rat,[x:rat]urt(ksi,x),y0,i):urt(ksi,y0)
+[m:more"rt"(x01,y0)]
+t2:=lrtrpofrt(x01,y0,satz82(x01,y0,m)):lrt(rpofrt(x01),y0)
+t3:=isp(cut,[x:cut]lrt(x,y0),rpofrt(x01),ksi,t2,isrprt2(ksi,rtksi)):lrt(ksi,y0)
+i@t4:=th3"l.imp"(more"rt"(x01,y0),lrt(ksi,y0),t1,[t:more"rt"(x01,y0)]t3(t)):not(more"rt"(x01,y0))
+t5:=satz81e(x01,y0,t4):lessis"rt"(x01,y0)
+rtksi@t6:=[x:rat][t:in(x,s1)]t5(x,t):lb(s1,x01)
+t7:=urtrpofrt(x01,x01,moreisi2"rt"(x01,x01,refis(rat,x01))):urt(rpofrt(x01),x01)
+t8:=isp(cut,[x:cut]urt(x,x01),rpofrt(x01),ksi,t7,isrprt2(ksi,rtksi)):urt(ksi,x01)
+t9:=estii(rat,[x:rat]urt(ksi,x),x01,t8):in(x01,s1)
+t10:=andi(lb(s1,x01),in(x01,s1),t6,t9):min(s1,x01)
+-5157
+satz157a:=t10".5157":min(setof(rat,[x:rat]urt(ksi,x)),rtofrp(ksi,rtksi))
+satz157b:=somei(rat,[x:rat]min(s1".5157",x),x01".5157",t10".5157"):some"rt"([x:rat]min(setof(rat,[y:rat]urt(ksi,y)),x))
+ksi@[x0:rat][m:min(setof(rat,[x:rat]urt(ksi,x)),x0)]
++*5157
+m"rp"@t11:=ande1(lb(s1,x0),in(x0,s1),m):lb(s1,x0)
+t12:=ande2(lb(s1,x0),in(x0,s1),m):in(x0,s1)
+t13:=estie(rat,[x:rat]urt(ksi,x),x0,t12):urt(ksi,x0)
+[y0:rat][ly:lrt(ksi,y0)]
+t14:=cutapp2a(ksi,y0,ly,x0,t13):less"rt"(y0,x0)
+t15:=lrtrpofrt(x0,y0,t14):lrt(rpofrt(x0),y0)
+y0@[uy:urt(ksi,y0)]
+t17:=estii(rat,[x:rat]urt(ksi,x),y0,uy):in(y0,s1)
+t18:=satz85(x0,y0,<t17><y0>t11):moreis"rt"(y0,x0)
+t19:=urtrpofrt(x0,y0,t18):urt(rpofrt(x0),y0)
+y0@t20:=cp(lrt(rpofrt(x0),y0),lrt(ksi,y0),[t:urt(ksi,y0)]t19(t)):imp(lrt(rpofrt(x0),y0),lrt(ksi,y0))
+-5157
+m@satz157c:=isi1(ksi,rpofrt(x0),[x:rat][t:lrt(ksi,x)]t15".5157"(x,t),[x:rat]t20".5157"(x)):is(ksi,rpofrt(x0))
+ksi@[s:some"rt"([x:rat]min(setof(rat,[y:rat]urt(ksi,y)),x))]
++*5157
+s@[x0:rat][m:min(s1,x0)]
+t21:=somei(rat,[x:rat]is(ksi,rpofrt(x)),x0,satz157c(x0,m)):ratrp(ksi)
+-5157
+s@satz157d:=someapp(rat,[x:rat]min(s1".5157",x),s,ratrp(ksi),[x:rat][t:min(s1".5157",x)]t21".5157"(x,t)):ratrp(ksi)
+ksi@[x0:rat][lx:lrt(ksi,x0)]
++5158
+x0@xr:=rpofrt(x0):cut
+lx@t1:=urtrpofrt(x0,x0,moreisi2"rt"(x0,x0,refis(rat,x0))):urt(xr,x0)
+t2:=andi(urt(xr,x0),lrt(ksi,x0),t1,lx):and(urt(xr,x0),lrt(ksi,x0))
+-5158
+satz158a:=somei(rat,[x:rat]and(urt(rpofrt(x0),x),lrt(ksi,x)),x0,t2".5158"):less(rpofrt(x0),ksi)
+x0@[ux:urt(ksi,x0)]
++*5158
+ux@s1:=setof(rat,[x:rat]urt(ksi,x)):set(rat)
+[m:min(s1,x0)]
+t3:=symis(cut,ksi,xr,satz157c(ksi,x0,m)):is(xr,ksi)
+t4:=moreisi2(xr,ksi,t3):moreis(xr,ksi)
+ux@[n:not(min(s1,x0))]
+t5:=estii(rat,[x:rat]urt(ksi,x),x0,ux):in(x0,s1)
+t6:=th4"l.and"(lb(s1,x0),in(x0,s1),n,t5):not(lb(s1,x0))
+t7:=th1"l.some"(rat,[x:rat]imp(in(x,s1),lessis"rt"(x0,x)),t6):some"rt"([x:rat]not(imp(in(x,s1),lessis"rt"(x0,x))))
+[y0:rat][o:not(imp(in(y0,s1),lessis"rt"(x0,y0)))]
+t8:=th5"l.imp"(in(y0,s1),lessis"rt"(x0,y0),o):in(y0,s1)
+t9:=estie(rat,[x:rat]urt(ksi,x),y0,t8):urt(ksi,y0)
+t10:=th6"l.imp"(in(y0,s1),lessis"rt"(x0,y0),o):not(lessis"rt"(x0,y0))
+t11:=satz82(x0,y0,satz81k(x0,y0,t10)):less"rt"(y0,x0)
+t12:=lrtrpofrt(x0,y0,t11):lrt(xr,y0)
+t13:=andi(lrt(xr,y0),urt(ksi,y0),t12,t9):and(lrt(xr,y0),urt(ksi,y0))
+t14:=somei(rat,[x:rat]and(lrt(xr,x),urt(ksi,x)),y0,t13):more(xr,ksi)
+n@t15:=someapp(rat,[x:rat]not(imp(in(x,s1),lessis"rt"(x0,x))),t7,more(xr,ksi),[x:rat][t:not(imp(in(x,s1),lessis"rt"(x0,x)))]t14(x,t)):more(xr,ksi)
+t16:=moreisi1(xr,ksi,t15):moreis(xr,ksi)
+-5158
+ux@satz158b:=th1"l.imp"(min(s1".5158",x0),moreis(rpofrt(x0),ksi),[t:min(s1".5158",x0)]t4".5158"(t),[t:not(min(s1".5158",x0))]t16".5158"(t)):moreis(rpofrt(x0),ksi)
+x0@[l:less(rpofrt(x0),ksi)]
++*5158
+l@t17:=satz123h(xr,ksi,l):not(moreis(xr,ksi))
+t18:=th3"l.imp"(urt(ksi,x0),moreis(xr,ksi),t17,[t:urt(ksi,x0)]satz158b(t)):not(urt(ksi,x0))
+-5158
+l@satz158c:=et(lrt(ksi,x0),t18".5158"):lrt(ksi,x0)
+x0@[m:moreis(rpofrt(x0),ksi)]
++*5158
+m"rp"@t19:=satz123c(xr,ksi,m):not(less(xr,ksi))
+-5158
+m@satz158d:=th3"l.imp"(lrt(ksi,x0),less(rpofrt(x0),ksi),t19".5158",[t:lrt(ksi,x0)]satz158a(t)):urt(ksi,x0)
+ksi@[eta:cut][l:less(ksi,eta)]
++5159
+[x0:rat]
+xr:=rpofrt(x0):cut
+[ux:urt(ksi,x0)][lx:lrt(eta,x0)][z0:rat]
+zr:=rpofrt(z0):cut
+[lz:lrt(eta,z0)][k:less"rt"(x0,z0)]
+t1:=satz127a(ksi,xr,zr,satz124(xr,ksi,satz158b(ksi,x0,ux)),satz154c(x0,z0,k)):less(ksi,zr)
+t2:=andi(less(ksi,zr),less(zr,eta),t1,satz158a(eta,z0,lz)):and(less(ksi,zr),less(zr,eta))
+t3:=somei(rat,[x:rat]and(less(ksi,rpofrt(x)),less(rpofrt(x),eta)),z0,t2):some"rt"([x:rat]and(less(ksi,rpofrt(x)),less(rpofrt(x),eta)))
+lx@t4:=cutapp3(eta,x0,lx,some"rt"([x:rat]and(less(ksi,rpofrt(x)),less(rpofrt(x),eta))),[x:rat][t:lrt(eta,x)][u:less"rt"(x0,x)]t3(x,t,u)):some"rt"([x:rat]and(less(ksi,rpofrt(x)),less(rpofrt(x),eta)))
+-5159
+satz159:=lessapp(ksi,eta,l,some"rt"([x:rat]and(less(ksi,rpofrt(x)),less(rpofrt(x),eta))),[x:rat][t:urt(ksi,x)][u:lrt(eta,x)]t4".5159"(x,t,u)):some"rt"([x:rat]and(less(ksi,rpofrt(x)),less(rpofrt(x),eta)))
++*5159
+x0@[a:and(less(ksi,xr),less(xr,eta))]
+t5:=andi(ratrp(xr),and(less(ksi,xr),less(xr,eta)),ratrpi(x0),a):and3(ratrp(xr),less(ksi,xr),less(xr,eta))
+t6:=somei(cut,[c:cut]and3(ratrp(c),less(ksi,c),less(c,eta)),xr,t5):some([c:cut]and3(ratrp(c),less(ksi,c),less(c,eta)))
+-5159
+l@satz159a:=someapp(rat,[x:rat]and(less(ksi,rpofrt(x)),less(rpofrt(x),eta)),satz159,some([a:cut]and3(ratrp(a),less(ksi,a),less(a,eta))),[x:rat][t:and(less(ksi,rpofrt(x)),less(rpofrt(x),eta))]t6".5159"(x,t)):some([a:cut]and3(ratrp(a),less(ksi,a),less(a,eta)))
+[p:'prop'][p1:[x:rat][t:less(ksi,rpofrt(x))][u:less(rpofrt(x),eta)]p]
++*5159
+p1@[y0:rat]
+yr:=rpofrt(y0):cut
+[a:and(less(ksi,yr),less(yr,eta))]
+t7:=ande1(less(ksi,yr),less(yr,eta),a):less(ksi,yr)
+t8:=ande2(less(ksi,yr),less(yr,eta),a):less(yr,eta)
+t9:=<t8><t7><y0>p1:p
+-5159
+p1@satz159app:=someapp(rat,[x:rat]and(less(ksi,rpofrt(x)),less(rpofrt(x),eta)),satz159,p,[x:rat][t:and(less(ksi,rpofrt(x)),less(rpofrt(x),eta))]t9".5159"(x,t)):p
+eta@[z0:rat][m:more(rpofrt(z0),ts(ksi,eta))]
++5160
+zr:=rpofrt(z0):cut
+nm:=mn(zr,ts(ksi,eta),m):cut
+dn:=pl(pl(ksi,eta),1rp):cut
+fr:=ov(nm,dn):cut
+zeta:=ite(less(fr,1rp),cut,fr,1rp):cut
+[l:less(fr,1rp)]
+t1:=itet(less(fr,1rp),cut,fr,1rp,l):is(zeta,fr)
+t2:=lessisi2(zeta,fr,t1):lessis(zeta,fr)
+t3:=lessisi1(zeta,1rp,satz127a(zeta,fr,1rp,t2,l)):lessis(zeta,1rp)
+m@[n:not(less(fr,1rp))]
+t4:=itef(less(fr,1rp),cut,fr,1rp,n):is(zeta,1rp)
+t5:=lessisi2(zeta,1rp,t4):lessis(zeta,1rp)
+t6:=trlessis(zeta,1rp,fr,t5,satz124(fr,1rp,satz123f(fr,1rp,n))):lessis(zeta,fr)
+m@t7:=th1"l.imp"(less(fr,1rp),lessis(zeta,1rp),[t:less(fr,1rp)]t3(t),[t:not(less(fr,1rp))]t5(t)):lessis(zeta,1rp)
+t8:=th1"l.imp"(less(fr,1rp),lessis(zeta,fr),[t:less(fr,1rp)]t2(t),[t:not(less(fr,1rp))]t6(t)):lessis(zeta,fr)
+[z1:rat]
+zr1:=rpofrt(z1):cut
+[l1:less(ksi,zr1)][l2:less(zr1,pl(ksi,zeta))][z2:rat]
+zr2:=rpofrt(z2):cut
+[l3:less(eta,zr2)][l4:less(zr2,pl(eta,zeta))]
+t9:=isless2(ts(pl(ksi,zeta),pl(eta,zeta)),pl(ts(pl(ksi,zeta),eta),ts(pl(ksi,zeta),zeta)),ts(zr1,zr2),disttp2(pl(ksi,zeta),eta,zeta),satz147a(zr1,pl(ksi,zeta),zr2,pl(eta,zeta),l2,l4)):less(ts(zr1,zr2),pl(ts(pl(ksi,zeta),eta),ts(pl(ksi,zeta),zeta)))
+t10:=lessisi2(ts(pl(ksi,zeta),eta),pl(ts(ksi,eta),ts(eta,zeta)),tris(cut,ts(pl(ksi,zeta),eta),pl(ts(ksi,eta),ts(zeta,eta)),pl(ts(ksi,eta),ts(eta,zeta)),disttp1(ksi,zeta,eta),ispl2(ts(zeta,eta),ts(eta,zeta),ts(ksi,eta),comts(zeta,eta)))):lessis(ts(pl(ksi,zeta),eta),pl(ts(ksi,eta),ts(eta,zeta)))
+t11:=satz149a(pl(ksi,zeta),pl(ksi,1rp),zeta,zeta,satz139a(ksi,ksi,zeta,1rp,lessisi2(ksi,ksi,refis(cut,ksi)),t7),lessisi2(zeta,zeta,refis(cut,zeta))):lessis(ts(pl(ksi,zeta),zeta),ts(pl(ksi,1rp),zeta))
+t12:=satz139a(ts(pl(ksi,zeta),eta),pl(ts(ksi,eta),ts(eta,zeta)),ts(pl(ksi,zeta),zeta),ts(pl(ksi,1rp),zeta),t10,t11):lessis(pl(ts(pl(ksi,zeta),eta),ts(pl(ksi,zeta),zeta)),pl(pl(ts(ksi,eta),ts(eta,zeta)),ts(pl(ksi,1rp),zeta)))
+t13:=satz127b(ts(zr1,zr2),pl(ts(pl(ksi,zeta),eta),ts(pl(ksi,zeta),zeta)),pl(pl(ts(ksi,eta),ts(eta,zeta)),ts(pl(ksi,1rp),zeta)),t9,t12):less(ts(zr1,zr2),pl(pl(ts(ksi,eta),ts(eta,zeta)),ts(pl(ksi,1rp),zeta)))
+t14:=tris(cut,pl(eta,pl(ksi,1rp)),pl(pl(eta,ksi),1rp),pl(pl(ksi,eta),1rp),asspl2(eta,ksi,1rp),ispl1(pl(eta,ksi),pl(ksi,eta),1rp,compl(eta,ksi))):is(pl(eta,pl(ksi,1rp)),dn)
+t15:=tris(cut,pl(ts(eta,zeta),ts(pl(ksi,1rp),zeta)),ts(pl(eta,pl(ksi,1rp)),zeta),ts(dn,zeta),distpt1(eta,pl(ksi,1rp),zeta),ists1(pl(eta,pl(ksi,1rp)),dn,zeta,t14)):is(pl(ts(eta,zeta),ts(pl(ksi,1rp),zeta)),ts(dn,zeta))
+t16:=tris(cut,pl(pl(ts(ksi,eta),ts(eta,zeta)),ts(pl(ksi,1rp),zeta)),pl(ts(ksi,eta),pl(ts(eta,zeta),ts(pl(ksi,1rp),zeta))),pl(ts(ksi,eta),ts(dn,zeta)),asspl1(ts(ksi,eta),ts(eta,zeta),ts(pl(ksi,1rp),zeta)),ispl2(pl(ts(eta,zeta),ts(pl(ksi,1rp),zeta)),ts(dn,zeta),ts(ksi,eta),t15)):is(pl(pl(ts(ksi,eta),ts(eta,zeta)),ts(pl(ksi,1rp),zeta)),pl(ts(ksi,eta),ts(dn,zeta)))
+t17:=isless2(pl(pl(ts(ksi,eta),ts(eta,zeta)),ts(pl(ksi,1rp),zeta)),pl(ts(ksi,eta),ts(dn,zeta)),ts(zr1,zr2),t16,t13):less(ts(zr1,zr2),pl(ts(ksi,eta),ts(dn,zeta)))
+t18:=islessis12(ts(zeta,dn),ts(dn,zeta),ts(fr,dn),nm,comts(zeta,dn),satz153e(nm,dn),satz149a(zeta,fr,dn,dn,t8,lessisi2(dn,dn,refis(cut,dn)))):lessis(ts(dn,zeta),nm)
+t19:=satz139a(ts(ksi,eta),ts(ksi,eta),ts(dn,zeta),nm,lessisi2(ts(ksi,eta),ts(ksi,eta),refis(cut,ts(ksi,eta))),t18):lessis(pl(ts(ksi,eta),ts(dn,zeta)),pl(ts(ksi,eta),nm))
+t20:=satz127b(ts(zr1,zr2),pl(ts(ksi,eta),ts(dn,zeta)),pl(ts(ksi,eta),nm),t17,t19):less(ts(zr1,zr2),pl(ts(ksi,eta),nm))
+t21:=isless2(pl(ts(ksi,eta),nm),zr,ts(zr1,zr2),satz140c(zr,ts(ksi,eta),m),t20):less(ts(zr1,zr2),zr)
+t22:=satz154f(ts"rt"(z1,z2),z0,isless1(ts(zr1,zr2),rpofrt(ts"rt"(z1,z2)),zr,symis(cut,rpofrt(ts"rt"(z1,z2)),ts(zr1,zr2),satz155c(z1,z2)),t21)):less"rt"(ts"rt"(z1,z2),z0)
+x0:=ov"rt"(z0,z2):rat
+xr:=rpofrt(x0):cut
+y0:=z2:rat
+yr:=rpofrt(y0):cut
+t23:=satz110e(z0,z2):is"rt"(ts"rt"(x0,y0),z0)
+t24:=ismore1"rt"(z0,ts"rt"(x0,z2),ts"rt"(z1,z2),symis(rat,ts"rt"(x0,z2),z0,t23),satz83(ts"rt"(z1,z2),z0,t22)):more"rt"(ts"rt"(x0,z2),ts"rt"(z1,z2))
+t25:=satz106a(x0,z1,z2,t24):more"rt"(x0,z1)
+t26:=trmore(xr,zr1,ksi,satz154a(x0,z1,t25),satz122(ksi,zr1,l1)):more(xr,ksi)
+t27:=satz122(eta,yr,l3):more(yr,eta)
+z0@[u0:rat]
+ur:=rpofrt(u0):cut
+[v0:rat]
+vr:=rpofrt(v0):cut
+prop1:=and3(more(ur,ksi),more(vr,eta),is"rt"(ts"rt"(u0,v0),z0)):'prop'
+z0@prop2:=some"rt"([x:rat]some"rt"([y:rat]prop1(x,y))):'prop'
+l4@t28:=and3i(more(xr,ksi),more(yr,eta),is"rt"(ts"rt"(x0,y0),z0),t26,t27,t23):prop1(x0,y0)
+t29:=somei(rat,[y:rat]prop1(x0,y),y0,t28):some"rt"([y:rat]prop1(x0,y))
+t30:=somei(rat,[x:rat]some"rt"([y:rat]prop1(x,y)),x0,t29):prop2
+l2@t31:=satz159app(eta,pl(eta,zeta),satz133a(eta,zeta),prop2,[x:rat][t:less(eta,rpofrt(x))][u:less(rpofrt(x),pl(eta,zeta))]t30(x,t,u)):prop2
+-5160
+satz160:=satz159app(ksi,pl(ksi,zeta".5160"),satz133a(ksi,zeta".5160"),prop2".5160",[x:rat][t:less(ksi,rpofrt(x))][u:less(rpofrt(x),pl(ksi,zeta".5160"))]t31".5160"(x,t,u)):some"rt"([x:rat]some"rt"([y:rat]and3(more(rpofrt(x),ksi),more(rpofrt(y),eta),is"rt"(ts"rt"(x,y),z0))))
+[p:'prop'][p1:[x:rat][t:more(rpofrt(x),ksi)][y:rat][u:more(rpofrt(y),eta)][v:is"rt"(ts"rt"(x,y),z0)]p]
++*5160
+p1@[x1:rat]
+xr1:=rpofrt(x1):cut
+[px:some"rt"([y:rat]prop1(x1,y))][y1:rat]
+yr1:=rpofrt(y1):cut
+[py:prop1(x1,y1)]
+t32:=and3e1(more(xr1,ksi),more(yr1,eta),is"rt"(ts"rt"(x1,y1),z0),py):more(xr1,ksi)
+t33:=and3e2(more(xr1,ksi),more(yr1,eta),is"rt"(ts"rt"(x1,y1),z0),py):more(yr1,eta)
+t34:=and3e3(more(xr1,ksi),more(yr1,eta),is"rt"(ts"rt"(x1,y1),z0),py):is"rt"(ts"rt"(x1,y1),z0)
+t35:=<t34><t33><y1><t32><x1>p1:p
+px@t36:=someapp(rat,[y:rat]prop1(x1,y),px,p,[y:rat][v:prop1(x1,y)]t35(y,v)):p
+-5160
+p1@satz160app:=someapp(rat,[x:rat]some"rt"([y:rat]prop1".5160"(x,y)),satz160,p,[x:rat][t:some"rt"([y:rat]prop1".5160"(x,y))]t36".5160"(x,t)):p
++5161
+@[ksi:cut][eta:cut]
+min:=ite(less(ksi,eta),cut,ksi,eta):cut
+max:=ite(more(ksi,eta),cut,ksi,eta):cut
+[u0:rat]
+ur:=rpofrt(u0):cut
+[lu:lrt(min,u0)]
+t1:=satz158a(min,u0,lu):less(ur,min)
+[l:less(ksi,eta)]
+t2:=isless2(min,ksi,ur,itet(less(ksi,eta),cut,ksi,eta,l),t1):less(ur,ksi)
+t3:=trless(ur,ksi,eta,t2,l):less(ur,eta)
+lu@[n:not(less(ksi,eta))]
+t4:=isless2(min,eta,ur,itef(less(ksi,eta),cut,ksi,eta,n),t1):less(ur,eta)
+t5:=satz127b(ur,eta,ksi,t4,satz124(ksi,eta,satz123f(ksi,eta,n))):less(ur,ksi)
+lu@t6:=th1"l.imp"(less(ksi,eta),less(ur,ksi),[t:less(ksi,eta)]t2(t),[t:not(less(ksi,eta))]t5(t)):less(ur,ksi)
+t7:=th1"l.imp"(less(ksi,eta),less(ur,eta),[t:less(ksi,eta)]t3(t),[t:not(less(ksi,eta))]t4(t)):less(ur,eta)
+u0@[uu:urt(max,u0)]
+t8:=satz158b(max,u0,uu):moreis(ur,max)
+[m:more(ksi,eta)]
+t9:=ismoreis2(max,ksi,ur,itet(more(ksi,eta),cut,ksi,eta,m),t8):moreis(ur,ksi)
+t10:=trmoreis(ur,ksi,eta,t9,moreisi1(ksi,eta,m)):moreis(ur,eta)
+uu@[n:not(more(ksi,eta))]
+t11:=ismoreis2(max,eta,ur,itef(more(ksi,eta),cut,ksi,eta,n),t8):moreis(ur,eta)
+t12:=trmoreis(ur,eta,ksi,t11,satz125(ksi,eta,satz123e(ksi,eta,n))):moreis(ur,ksi)
+uu@t13:=th1"l.imp"(more(ksi,eta),moreis(ur,ksi),[t:more(ksi,eta)]t9(t),[t:not(more(ksi,eta))]t12(t)):moreis(ur,ksi)
+t14:=th1"l.imp"(more(ksi,eta),moreis(ur,eta),[t:more(ksi,eta)]t10(t),[t:not(more(ksi,eta))]t11(t)):moreis(ur,eta)
+-5161
+@[zeta:cut]
++*5161
+zeta@[ksi1:cut][ksi2:cut][m:more(ksi1,ksi2)]
+t15:=satz147(ksi1,ksi2,ksi1,ksi2,m,m):more(ts(ksi1,ksi1),ts(ksi2,ksi2))
+ksi2@sq1:=ts(ksi1,ksi1):cut
+sq2:=ts(ksi2,ksi2):cut
+m@t16:=ec3e21(is(sq1,sq2),more(sq1,sq2),less(sq1,sq2),satz123b(sq1,sq2),t15):nis(sq1,sq2)
+ksi2@[i:is(sq1,zeta)][j:is(sq2,zeta)]
+t17:=tris2(cut,sq1,sq2,zeta,i,j):is(sq1,sq2)
+t18:=[t:more(ksi1,ksi2)]<t17>t16(t):not(more(ksi1,ksi2))
+t19:=[t:less(ksi1,ksi2)]<symis(cut,sq1,sq2,t17)>t16(ksi2,ksi1,satz122(ksi1,ksi2,t)):not(less(ksi1,ksi2))
+t20:=or3e1(is(ksi1,ksi2),more(ksi1,ksi2),less(ksi1,ksi2),satz123a(ksi1,ksi2),t18,t19):is(ksi1,ksi2)
+zeta@t21:=[a:cut][b:cut][t:is(ts(a,a),zeta)][u:is(ts(b,b),zeta)]t20(a,b,t,u):amone(cut,[a:cut]is(ts(a,a),zeta))
+sqrtset:=setof(rat,[x:rat]less(ts(rpofrt(x),rpofrt(x)),zeta)):set(rat)
+[x0:rat]
+xr:=rpofrt(x0):cut
+[lx:lrt(min(1rp,zeta),x0)]
+t22:=t6(1rp,zeta,x0,lx):less(xr,1rp)
+t23:=t7(1rp,zeta,x0,lx):less(xr,zeta)
+t24:=isless1(xr,ts(xr,1rp),zeta,satz151a(xr),t23):less(ts(xr,1rp),zeta)
+t25:=trless(ts(xr,xr),ts(xr,1rp),zeta,satz148c(xr,xr,xr,1rp,lessisi2(xr,xr,refis(cut,xr)),t22),t24):less(ts(xr,xr),zeta)
+t26:=estii(rat,[x:rat]less(ts(rpofrt(x),rpofrt(x)),zeta),x0,t25):in(x0,sqrtset)
+x0@[ux:urt(max(1rp,zeta),x0)]
+t27:=t13(1rp,zeta,x0,ux):moreis(xr,1rp)
+t28:=t14(1rp,zeta,x0,ux):moreis(xr,zeta)
+t29:=ismoreis1(xr,ts(xr,1rp),zeta,satz151a(xr),t28):moreis(ts(xr,1rp),zeta)
+t30:=trmoreis(ts(xr,xr),ts(xr,1rp),zeta,satz149(xr,xr,xr,1rp,moreisi2(xr,xr,refis(cut,xr)),t27),t29):moreis(ts(xr,xr),zeta)
+t31:=satz123c(ts(xr,xr),zeta,t30):not(less(ts(xr,xr),zeta))
+t32:=th3"l.imp"(in(x0,sqrtset),less(ts(xr,xr),zeta),t31,[t:in(x0,sqrtset)]estie(rat,[x:rat]less(ts(rpofrt(x),rpofrt(x)),zeta),x0,t)):not(in(x0,sqrtset))
+x0@[i:in(x0,sqrtset)][y0:rat]
+yr:=rpofrt(y0):cut
+[l:less"rt"(y0,x0)]
+i@t33:=estie(rat,[x:rat]less(ts(rpofrt(x),rpofrt(x)),zeta),x0,i):less(ts(xr,xr),zeta)
+l@t34:=satz154c(y0,x0,l):less(yr,xr)
+t35:=trless(ts(yr,yr),ts(xr,xr),zeta,satz147a(yr,xr,yr,xr,t34,t34),t33):less(ts(yr,yr),zeta)
+t36:=estii(rat,[x:rat]less(ts(rpofrt(x),rpofrt(x)),zeta),y0,t35):in(y0,sqrtset)
+i@t37:=satz122(ts(xr,xr),zeta,t33):more(zeta,ts(xr,xr))
+nm:=mn(zeta,ts(xr,xr),t37):cut
+dn:=pl(xr,pl(xr,1rp)):cut
+fr:=ov(nm,dn):cut
+[z0:rat]
+zr:=rpofrt(z0):cut
+[lz:lrt(min(1rp,fr),z0)]
+t38:=t6(1rp,fr,z0,lz):less(zr,1rp)
+t39:=t7(1rp,fr,z0,lz):less(zr,fr)
+t40:=satz94(x0,z0):more"rt"(pl"rt"(x0,z0),x0)
+t41:=tris(cut,ts(rpofrt(pl"rt"(x0,z0)),rpofrt(pl"rt"(x0,z0))),ts(pl(xr,zr),pl(xr,zr)),pl(ts(pl(xr,zr),xr),ts(pl(xr,zr),zr)),ists12(rpofrt(pl"rt"(x0,z0)),pl(xr,zr),rpofrt(pl"rt"(x0,z0)),pl(xr,zr),satz155a(x0,z0),satz155a(x0,z0)),disttp2(pl(xr,zr),xr,zr)):is(ts(rpofrt(pl"rt"(x0,z0)),rpofrt(pl"rt"(x0,z0))),pl(ts(pl(xr,zr),xr),ts(pl(xr,zr),zr)))
+t42:=symis(cut,ts(rpofrt(pl"rt"(x0,z0)),rpofrt(pl"rt"(x0,z0))),pl(ts(pl(xr,zr),xr),ts(pl(xr,zr),zr)),t41):is(pl(ts(pl(xr,zr),xr),ts(pl(xr,zr),zr)),ts(rpofrt(pl"rt"(x0,z0)),rpofrt(pl"rt"(x0,z0))))
+t43:=lessisi2(ts(pl(xr,zr),xr),pl(ts(xr,xr),ts(xr,zr)),tris(cut,ts(pl(xr,zr),xr),pl(ts(xr,xr),ts(zr,xr)),pl(ts(xr,xr),ts(xr,zr)),disttp1(xr,zr,xr),ispl2(ts(zr,xr),ts(xr,zr),ts(xr,xr),comts(zr,xr)))):lessis(ts(pl(xr,zr),xr),pl(ts(xr,xr),ts(xr,zr)))
+t44:=satz145c(pl(xr,zr),pl(xr,1rp),zr,satz138c(xr,xr,zr,1rp,lessisi2(xr,xr,refis(cut,xr)),t38)):less(ts(pl(xr,zr),zr),ts(pl(xr,1rp),zr))
+t45:=satz138c(ts(pl(xr,zr),xr),pl(ts(xr,xr),ts(xr,zr)),ts(pl(xr,zr),zr),ts(pl(xr,1rp),zr),t43,t44):less(pl(ts(pl(xr,zr),xr),ts(pl(xr,zr),zr)),pl(pl(ts(xr,xr),ts(xr,zr)),ts(pl(xr,1rp),zr)))
+t46:=tris(cut,pl(pl(ts(xr,xr),ts(xr,zr)),ts(pl(xr,1rp),zr)),pl(ts(xr,xr),pl(ts(xr,zr),ts(pl(xr,1rp),zr))),pl(ts(xr,xr),ts(dn,zr)),asspl1(ts(xr,xr),ts(xr,zr),ts(pl(xr,1rp),zr)),ispl2(pl(ts(xr,zr),ts(pl(xr,1rp),zr)),ts(dn,zr),ts(xr,xr),distpt1(xr,pl(xr,1rp),zr))):is(pl(pl(ts(xr,xr),ts(xr,zr)),ts(pl(xr,1rp),zr)),pl(ts(xr,xr),ts(dn,zr)))
+t47:=isless12(pl(ts(pl(xr,zr),xr),ts(pl(xr,zr),zr)),ts(rpofrt(pl"rt"(x0,z0)),rpofrt(pl"rt"(x0,z0))),pl(pl(ts(xr,xr),ts(xr,zr)),ts(pl(xr,1rp),zr)),pl(ts(xr,xr),ts(dn,zr)),t42,t46,t45):less(ts(rpofrt(pl"rt"(x0,z0)),rpofrt(pl"rt"(x0,z0))),pl(ts(xr,xr),ts(dn,zr)))
+t48:=isless2(ts(dn,fr),nm,ts(dn,zr),satz153c(nm,dn),satz148c(dn,dn,zr,fr,lessisi2(dn,dn,refis(cut,dn)),t39)):less(ts(dn,zr),nm)
+t49:=satz138c(ts(xr,xr),ts(xr,xr),ts(dn,zr),nm,lessisi2(ts(xr,xr),ts(xr,xr),refis(cut,ts(xr,xr))),t48):less(pl(ts(xr,xr),ts(dn,zr)),pl(ts(xr,xr),nm))
+t50:=isless2(pl(ts(xr,xr),nm),zeta,pl(ts(xr,xr),ts(dn,zr)),satz140c(zeta,ts(xr,xr),t37),t49):less(pl(ts(xr,xr),ts(dn,zr)),zeta)
+t51:=trless(ts(rpofrt(pl"rt"(x0,z0)),rpofrt(pl"rt"(x0,z0))),pl(ts(xr,xr),ts(dn,zr)),zeta,t47,t50):less(ts(rpofrt(pl"rt"(x0,z0)),rpofrt(pl"rt"(x0,z0))),zeta)
+t52:=estii(rat,[x:rat]less(ts(rpofrt(x),rpofrt(x)),zeta),pl"rt"(x0,z0),t51):in(pl"rt"(x0,z0),sqrtset)
+t53:=andi(in(pl"rt"(x0,z0),sqrtset),more"rt"(pl"rt"(x0,z0),x0),t52,t40):and(in(pl"rt"(x0,z0),sqrtset),more"rt"(pl"rt"(x0,z0),x0))
+t54:=somei(rat,[y:rat]and(in(y,sqrtset),more"rt"(y,x0)),pl"rt"(x0,z0),t53):some"rt"([y:rat]and(in(y,sqrtset),more"rt"(y,x0)))
+i@t55:=cutapp1a(min(1rp,fr),some"rt"([y:rat]and(in(y,sqrtset),more"rt"(y,x0))),[x:rat][t:lrt(min(1rp,fr),x)]t54(x,t)):some"rt"([y:rat]and(in(y,sqrtset),more"rt"(y,x0)))
+x0@[lx:lrt(min(1rp,zeta),x0)][y0:rat][uy:urt(max(1rp,zeta),y0)]
+t56:=cut2(sqrtset,x0,t26(lx),y0,t32(y0,uy),[x:rat][t:in(x,sqrtset)][y:rat][u:less"rt"(y,x)]t36(x,t,y,u),[x:rat][t:in(x,sqrtset)]t55(x,t)):cutprop(sqrtset)
+lx@t57:=cutapp1b(max(1rp,zeta),cutprop(sqrtset),[y:rat][t:urt(max(1rp,zeta),y)]t56(y,t)):cutprop(sqrtset)
+zeta@t58:=cutapp1a(min(1rp,zeta),cutprop(sqrtset),[x:rat][t:lrt(min(1rp,zeta),x)]t57(x,t)):cutprop(sqrtset)
+rtc:=cutof(sqrtset,t58):cut
+@[x0:rat][y0:rat][l:lessis"rt"(x0,y0)]
+t59:=th9"l.or"(less"rt"(x0,y0),is"rt"(x0,y0),less(rpofrt(x0),rpofrt(y0)),is(rpofrt(x0),rpofrt(y0)),l,[t:less"rt"(x0,y0)]satz154c(x0,y0,t),[t:is"rt"(x0,y0)]satz154b(x0,y0,t)):lessis(rpofrt(x0),rpofrt(y0))
+y0@[m:moreis"rt"(x0,y0)]
+t60:=satz125(rpofrt(y0),rpofrt(x0),t59(y0,x0,satz84(x0,y0,m))):moreis(rpofrt(x0),rpofrt(y0))
+zeta@[m:more(ts(rtc,rtc),zeta)]
+t61:=satz121(ts(rtc,rtc),zeta,m):less(zeta,ts(rtc,rtc))
+[z1:rat]
+zr1:=rpofrt(z1):cut
+[l1:less(zeta,zr1)][l2:less(zr1,ts(rtc,rtc))]
+t62:=satz158c(ts(rtc,rtc),z1,l2):lrt(ts(rtc,rtc),z1)
+[x1:rat]
+xr1:=rpofrt(x1):cut
+[lx1:lrt(rtc,x1)][x2:rat]
+xr2:=rpofrt(x2):cut
+[lx2:lrt(rtc,x2)][i:is"rt"(z1,ts"rt"(x1,x2))]
+xm:=ite(more"rt"(x1,x2),rat,x1,x2):rat
+xrm:=rpofrt(xm):cut
+[o:more"rt"(x1,x2)]
+t63:=symis(rat,xm,x1,itet(more"rt"(x1,x2),rat,x1,x2,o)):is"rt"(x1,xm)
+t64:=isp(rat,[x:rat]lrt(rtc,x),x1,xm,lx1,t63):lrt(rtc,xm)
+t65:=lessisi2"rt"(x1,xm,t63):lessis"rt"(x1,xm)
+t66:=lessisi1"rt"(x2,xm,satz87b(x2,x1,xm,satz82(x1,x2,o),t65)):lessis"rt"(x2,xm)
+i@[n:not(more"rt"(x1,x2))]
+t67:=symis(rat,xm,x2,itef(more"rt"(x1,x2),rat,x1,x2,n)):is"rt"(x2,xm)
+t68:=isp(rat,[x:rat]lrt(rtc,x),x2,xm,lx2,t67):lrt(rtc,xm)
+t69:=lessisi2"rt"(x2,xm,t67):lessis"rt"(x2,xm)
+t70:=satz88(x1,x2,xm,satz81e(x1,x2,n),t69):lessis"rt"(x1,xm)
+i@t71:=th1"l.imp"(more"rt"(x1,x2),lrt(rtc,xm),[t:more"rt"(x1,x2)]t64(t),[t:not(more"rt"(x1,x2))]t68(t)):lrt(rtc,xm)
+t72:=th1"l.imp"(more"rt"(x1,x2),lessis"rt"(x1,xm),[t:more"rt"(x1,x2)]t65(t),[t:not(more"rt"(x1,x2))]t70(t)):lessis"rt"(x1,xm)
+t73:=th1"l.imp"(more"rt"(x1,x2),lessis"rt"(x2,xm),[t:more"rt"(x1,x2)]t66(t),[t:not(more"rt"(x1,x2))]t69(t)):lessis"rt"(x2,xm)
+t74:=ini(sqrtset,t58,xm,t71):in(xm,sqrtset)
+t75:=t59(x1,xm,t72):lessis(xr1,xrm)
+t76:=t59(x2,xm,t73):lessis(xr2,xrm)
+t77:=tris(cut,zr1,rpofrt(ts"rt"(x1,x2)),ts(xr1,xr2),satz154b(z1,ts"rt"(x1,x2),i),satz155c(x1,x2)):is(zr1,ts(xr1,xr2))
+t78:=islessis1(ts(xr1,xr2),zr1,ts(xrm,xrm),symis(cut,zr1,ts(xr1,xr2),t77),satz149a(xr1,xrm,xr2,xrm,t75,t76)):lessis(zr1,ts(xrm,xrm))
+t79:=estie(rat,[x:rat]less(ts(rpofrt(x),rpofrt(x)),zeta),xm,t74):less(ts(xrm,xrm),zeta)
+t80:=satz127a(zr1,ts(xrm,xrm),zeta,t78,t79):less(zr1,zeta)
+t81:=<t80>ec3e23(is(zr1,zeta),more(zr1,zeta),less(zr1,zeta),satz123b(zr1,zeta),satz122(zeta,zr1,l1)):con
+t82:=tsapp(rtc,rtc,z1,t62,con,[x:rat][t:lrt(rtc,x)][y:rat][u:lrt(rtc,y)][v:is"rt"(z1,ts"rt"(x,y))]t81(x,t,y,u,v)):con
+l2@t82a:=tsapp(rtc,rtc,z1,t62,con,[x:rat][t:lrt(rtc,x)][y:rat][u:lrt(rtc,y)][v:is"rt"(z1,ts"rt"(x,y))]t82(x,t,y,u,v)):con
+m@t83:=satz159app(zeta,ts(rtc,rtc),t61,con,[x:rat][t:less(zeta,rpofrt(x))][u:less(rpofrt(x),ts(rtc,rtc))]t82a(x,t,u)):con
+zeta@[l:less(ts(rtc,rtc),zeta)][z2:rat]
+zr2:=rpofrt(z2):cut
+[l3:less(ts(rtc,rtc),zr2)][l4:less(zr2,zeta)]
+t84:=satz122(ts(rtc,rtc),zr2,l3):more(zr2,ts(rtc,rtc))
+[y1:rat]
+yr1:=rpofrt(y1):cut
+[m1:more(yr1,rtc)][y2:rat]
+yr2:=rpofrt(y2):cut
+[m2:more(yr2,rtc)][i:is"rt"(ts"rt"(y1,y2),z2)]
+ym:=ite(less"rt"(y1,y2),rat,y1,y2):rat
+yrm:=rpofrt(ym):cut
+[k:less"rt"(y1,y2)]
+t85:=symis(rat,ym,y1,itet(less"rt"(y1,y2),rat,y1,y2,k)):is"rt"(y1,ym)
+t86:=satz154b(y1,ym,t85):is(yr1,yrm)
+t87:=ismore1(yr1,yrm,rtc,t86,m1):more(yrm,rtc)
+t88:=moreisi2(yr1,yrm,t86):moreis(yr1,yrm)
+t89:=moreisi1(yr2,yrm,satz127d(yr2,yr1,yrm,satz122(yr1,yr2,satz154c(y1,y2,k)),t88)):moreis(yr2,yrm)
+i@[n:not(less"rt"(y1,y2))]
+t90:=symis(rat,ym,y2,itef(less"rt"(y1,y2),rat,y1,y2,n)):is"rt"(y2,ym)
+t91:=satz154b(y2,ym,t90):is(yr2,yrm)
+t92:=ismore1(yr2,yrm,rtc,t91,m2):more(yrm,rtc)
+t93:=moreisi2(yr2,yrm,t91):moreis(yr2,yrm)
+t94:=trmoreis(yr1,yr2,yrm,t60(y1,y2,satz81f(y1,y2,n)),t93):moreis(yr1,yrm)
+i@t95:=th1"l.imp"(less"rt"(y1,y2),more(yrm,rtc),[t:less"rt"(y1,y2)]t87(t),[t:not(less"rt"(y1,y2))]t92(t)):more(yrm,rtc)
+t96:=th1"l.imp"(less"rt"(y1,y2),moreis(yr1,yrm),[t:less"rt"(y1,y2)]t88(t),[t:not(less"rt"(y1,y2))]t94(t)):moreis(yr1,yrm)
+t97:=th1"l.imp"(less"rt"(y1,y2),moreis(yr2,yrm),[t:less"rt"(y1,y2)]t89(t),[t:not(less"rt"(y1,y2))]t93(t)):moreis(yr2,yrm)
+t98:=satz158d(rtc,ym,moreisi1(yrm,rtc,t95)):urt(rtc,ym)
+t99:=th3"l.imp"(in(ym,sqrtset),lrt(rtc,ym),t98,[t:in(ym,sqrtset)]ine(sqrtset,t58,ym,t)):not(in(ym,sqrtset))
+t100:=th3"l.imp"(less(ts(yrm,yrm),zeta),in(ym,sqrtset),t99,[t:less(ts(yrm,yrm),zeta)]estii(rat,[x:rat]less(ts(rpofrt(x),rpofrt(x)),zeta),ym,t)):not(less(ts(yrm,yrm),zeta))
+t101:=satz123f(ts(yrm,yrm),zeta,t100):moreis(ts(yrm,yrm),zeta)
+t101a:=satz149(yr1,yrm,yr2,yrm,t96,t97):moreis(ts(yr1,yr2),ts(yrm,yrm))
+t102:=ismoreis1(ts(yr1,yr2),zr2,ts(yrm,yrm),tris(cut,ts(yr1,yr2),rpofrt(ts"rt"(y1,y2)),zr2,symis(cut,rpofrt(ts"rt"(y1,y2)),ts(yr1,yr2),satz155c(y1,y2)),satz154b(ts"rt"(y1,y2),z2,i)),t101a):moreis(zr2,ts(yrm,yrm))
+t103:=trmoreis(zr2,ts(yrm,yrm),zeta,t102,t101):moreis(zr2,zeta)
+t104:=<l4>satz123c(zr2,zeta,t103):con
+l4@t105:=satz160app(rtc,rtc,z2,t84,con,[x:rat][t:more(rpofrt(x),rtc)][y:rat][u:more(rpofrt(y),rtc)][v:is"rt"(ts"rt"(x,y),z2)]t104(x,t,y,u,v)):con
+l@t106:=satz159app(ts(rtc,rtc),zeta,l,con,[x:rat][t:less(ts(rtc,rtc),rpofrt(x))][u:less(rpofrt(x),zeta)]t105(x,t,u)):con
+zeta@t107:=or3e1(is(ts(rtc,rtc),zeta),more(ts(rtc,rtc),zeta),less(ts(rtc,rtc),zeta),satz123a(ts(rtc,rtc),zeta),[t:more(ts(rtc,rtc),zeta)]t83(t),[t:less(ts(rtc,rtc),zeta)]t106(t)):is(ts(rtc,rtc),zeta)
+t108:=somei(cut,[a:cut]is(ts(a,a),zeta),rtc,t107):some([a:cut]is(ts(a,a),zeta))
+-5161
+zeta@satz161:=onei(cut,[a:cut]is(ts(a,a),zeta),t21".5161",t108".5161"):one([a:cut]is(ts(a,a),zeta))
+@[ksi:cut]
+irratrp:=not(ratrp(ksi)):'prop'
+-rp
+-rt
++5162
+@[v:nat]
+t1:=tris(nat,pl(v,v),pl(ts(1,v),v),ts(<1>suc,v),ispl1(v,ts(1,v),v,satz28g(v)),satz28h(1,v)):is(pl(v,v),ts(<1>suc,v))
+t2:=isless2(pl(v,v),ts(<1>suc,v),v,t1,satz18a(v,v)):less(v,ts(<1>suc,v))
+[w:nat][l:less(ts(v,v),ts(w,w))]
+t3:=satz10j(v,w,th3"l.imp"(moreis(v,w),moreis(ts(v,v),ts(w,w)),satz10h(ts(v,v),ts(w,w),l),[t:moreis(v,w)]satz36(v,w,v,w,t,t))):less(v,w)
+w@t4:=tris(nat,ts(pl(v,w),v),pl(ts(v,v),ts(w,v)),pl(ts(v,v),ts(v,w)),disttp1(v,w,v),ispl2(ts(w,v),ts(v,w),ts(v,v),comts(w,v))):is(ts(pl(v,w),v),pl(ts(v,v),ts(v,w)))
+t5:=tr3is(nat,ts(pl(v,w),pl(v,w)),pl(ts(pl(v,w),v),ts(pl(v,w),w)),pl(pl(ts(v,v),ts(v,w)),pl(ts(v,w),ts(w,w))),pl(pl(pl(ts(v,v),ts(v,w)),ts(v,w)),ts(w,w)),disttp2(pl(v,w),v,w),ispl12(ts(pl(v,w),v),pl(ts(v,v),ts(v,w)),ts(pl(v,w),w),pl(ts(v,w),ts(w,w)),t4,disttp1(v,w,w)),asspl2(pl(ts(v,v),ts(v,w)),ts(v,w),ts(w,w))):is(ts(pl(v,w),pl(v,w)),pl(pl(pl(ts(v,v),ts(v,w)),ts(v,w)),ts(w,w)))
+t6:=tris(nat,pl(pl(ts(v,v),ts(v,w)),ts(v,w)),pl(ts(v,v),pl(ts(v,w),ts(v,w))),pl(ts(v,v),ts(<1>suc,ts(v,w))),asspl1(ts(v,v),ts(v,w),ts(v,w)),ispl2(pl(ts(v,w),ts(v,w)),ts(<1>suc,ts(v,w)),ts(v,v),t1(ts(v,w)))):is(pl(pl(ts(v,v),ts(v,w)),ts(v,w)),pl(ts(v,v),ts(<1>suc,ts(v,w))))
+nun:=tris(nat,ts(pl(v,w),pl(v,w)),pl(pl(pl(ts(v,v),ts(v,w)),ts(v,w)),ts(w,w)),pl(pl(ts(v,v),ts(<1>suc,ts(v,w))),ts(w,w)),t5,ispl1(pl(pl(ts(v,v),ts(v,w)),ts(v,w)),pl(ts(v,v),ts(<1>suc,ts(v,w))),ts(w,w),t6)):is(ts(pl(v,w),pl(v,w)),pl(pl(ts(v,v),ts(<1>suc,ts(v,w))),ts(w,w)))
+nun1:=symis(nat,ts(pl(v,w),pl(v,w)),pl(pl(ts(v,v),ts(<1>suc,ts(v,w))),ts(w,w)),nun):is(pl(pl(ts(v,v),ts(<1>suc,ts(v,w))),ts(w,w)),ts(pl(v,w),pl(v,w)))
+prop1:=eq(tf(fr(w,v),fr(w,v)),fr(<1>suc,1)):'prop'
+v@prop2:=some([t:nat]prop1(t)):'prop'
+@prop3:=some([u:nat]prop2(u)):'prop'
+[p:prop3]
+y:=ind(nat,[t:nat]min([u:nat]prop2(u),t),satz27a([u:nat]prop2(u),p)):nat
+t7:=oneax(nat,[t:nat]min([u:nat]prop2(u),t),satz27a([u:nat]prop2(u),p)):min([u:nat]prop2(u),y)
+t8:=ande1(lb([u:nat]prop2(u),y),prop2(y),t7):lb([u:nat]prop2(u),y)
+t9:=ande2(lb([u:nat]prop2(u),y),prop2(y),t7):prop2(y)
+[x:nat][q:prop1(y,x)]
+t10:=treq1(fr(<1>suc,1),fr(ts(x,x),ts(y,y)),tf(fr(x,y),fr(x,y)),q,tfeq12a(x,y,x,y)):eq(fr(<1>suc,1),fr(ts(x,x),ts(y,y)))
+t11:=tr4is(nat,ts(<1>suc,ts(y,y)),ts(num(fr(<1>suc,1)),den(fr(ts(x,x),ts(y,y)))),ts(num(fr(ts(x,x),ts(y,y))),den(fr(<1>suc,1))),ts(ts(x,x),1),ts(x,x),12isnd(<1>suc,1,ts(x,x),ts(y,y)),t10,ndis12(ts(x,x),ts(y,y),<1>suc,1),satz28a(ts(x,x))):is(ts(<1>suc,ts(y,y)),ts(x,x))
+t12:=isless2(ts(<1>suc,ts(y,y)),ts(x,x),ts(y,y),t11,t2(ts(y,y))):less(ts(y,y),ts(x,x))
+t13:=isless1(ts(ts(<1>suc,y),y),ts(x,x),ts(ts(<1>suc,y),ts(<1>suc,y)),tris(nat,ts(ts(<1>suc,y),y),ts(<1>suc,ts(y,y)),ts(x,x),assts1(<1>suc,y,y),t11),satz35c(ts(<1>suc,y),ts(<1>suc,y),y,ts(<1>suc,y),lessisi2(ts(<1>suc,y),ts(<1>suc,y),refis(nat,ts(<1>suc,y))),t2(y))):less(ts(x,x),ts(ts(<1>suc,y),ts(<1>suc,y)))
+t14:=t3(y,x,t12):less(y,x)
+t15:=t3(x,ts(<1>suc,y),t13):less(x,ts(<1>suc,y))
+[u:nat][i:is(x,pl(y,u))]
+t16:=isless12(x,pl(y,u),ts(<1>suc,y),pl(y,y),i,symis(nat,pl(y,y),ts(<1>suc,y),t1(y)),t15):less(pl(y,u),pl(y,y))
+t17:=satz20f(u,y,y,t16):less(u,y)
+[t:nat][j:is(y,pl(u,t))]
+t18:=symis(nat,y,pl(u,t),j):is(pl(u,t),y)
+t19:=tris(nat,ts(x,x),ts(pl(y,u),pl(y,u)),pl(pl(ts(y,y),ts(<1>suc,ts(y,u))),ts(u,u)),ists12(x,pl(y,u),x,pl(y,u),i,i),nun(y,u)):is(ts(x,x),pl(pl(ts(y,y),ts(<1>suc,ts(y,u))),ts(u,u)))
+t20:=tris(nat,pl(ts(x,x),ts(t,t)),pl(pl(pl(ts(y,y),ts(<1>suc,ts(y,u))),ts(u,u)),ts(t,t)),pl(pl(ts(y,y),ts(<1>suc,ts(y,u))),pl(ts(u,u),ts(t,t))),ispl1(ts(x,x),pl(pl(ts(y,y),ts(<1>suc,ts(y,u))),ts(u,u)),ts(t,t),t19),asspl1(pl(ts(y,y),ts(<1>suc,ts(y,u))),ts(u,u),ts(t,t))):is(pl(ts(x,x),ts(t,t)),pl(pl(ts(y,y),ts(<1>suc,ts(y,u))),pl(ts(u,u),ts(t,t))))
+t21:=tr3is(nat,ts(y,u),ts(u,y),ts(u,pl(u,t)),pl(ts(u,u),ts(u,t)),comts(y,u),ists2(y,pl(u,t),u,j),disttp2(u,u,t)):is(ts(y,u),pl(ts(u,u),ts(u,t)))
+t22:=tris(nat,ts(<1>suc,ts(y,u)),ts(<1>suc,pl(ts(u,u),ts(u,t))),pl(ts(<1>suc,ts(u,u)),ts(<1>suc,ts(u,t))),ists2(ts(y,u),pl(ts(u,u),ts(u,t)),<1>suc,t21),disttp2(<1>suc,ts(u,u),ts(u,t))):is(ts(<1>suc,ts(y,u)),pl(ts(<1>suc,ts(u,u)),ts(<1>suc,ts(u,t))))
+t23:=tris(nat,pl(ts(y,y),ts(<1>suc,ts(y,u))),pl(ts(y,y),pl(ts(<1>suc,ts(u,u)),ts(<1>suc,ts(u,t)))),pl(pl(ts(y,y),ts(<1>suc,ts(u,u))),ts(<1>suc,ts(u,t))),ispl2(ts(<1>suc,ts(y,u)),pl(ts(<1>suc,ts(u,u)),ts(<1>suc,ts(u,t))),ts(y,y),t22),asspl2(ts(y,y),ts(<1>suc,ts(u,u)),ts(<1>suc,ts(u,t)))):is(pl(ts(y,y),ts(<1>suc,ts(y,u))),pl(pl(ts(y,y),ts(<1>suc,ts(u,u))),ts(<1>suc,ts(u,t))))
+t24:=tr3is(nat,pl(ts(x,x),ts(t,t)),pl(pl(ts(y,y),ts(<1>suc,ts(y,u))),pl(ts(u,u),ts(t,t))),pl(pl(pl(ts(y,y),ts(<1>suc,ts(u,u))),ts(<1>suc,ts(u,t))),pl(ts(u,u),ts(t,t))),pl(pl(ts(y,y),ts(<1>suc,ts(u,u))),pl(ts(<1>suc,ts(u,t)),pl(ts(u,u),ts(t,t)))),t20,ispl1(pl(ts(y,y),ts(<1>suc,ts(y,u))),pl(pl(ts(y,y),ts(<1>suc,ts(u,u))),ts(<1>suc,ts(u,t))),pl(ts(u,u),ts(t,t)),t23),asspl1(pl(ts(y,y),ts(<1>suc,ts(u,u))),ts(<1>suc,ts(u,t)),pl(ts(u,u),ts(t,t)))):is(pl(ts(x,x),ts(t,t)),pl(pl(ts(y,y),ts(<1>suc,ts(u,u))),pl(ts(<1>suc,ts(u,t)),pl(ts(u,u),ts(t,t)))))
+t25:=tr4is(nat,pl(ts(<1>suc,ts(u,t)),pl(ts(u,u),ts(t,t))),pl(pl(ts(<1>suc,ts(u,t)),ts(u,u)),ts(t,t)),pl(pl(ts(u,u),ts(<1>suc,ts(u,t))),ts(t,t)),ts(pl(u,t),pl(u,t)),ts(y,y),asspl2(ts(<1>suc,ts(u,t)),ts(u,u),ts(t,t)),ispl1(pl(ts(<1>suc,ts(u,t)),ts(u,u)),pl(ts(u,u),ts(<1>suc,ts(u,t))),ts(t,t),compl(ts(<1>suc,ts(u,t)),ts(u,u))),nun1(u,t),ists12(pl(u,t),y,pl(u,t),y,t18,t18)):is(pl(ts(<1>suc,ts(u,t)),pl(ts(u,u),ts(t,t))),ts(y,y))
+t26:=tr4is(nat,pl(ts(x,x),ts(t,t)),pl(pl(ts(y,y),ts(<1>suc,ts(u,u))),pl(ts(<1>suc,ts(u,t)),pl(ts(u,u),ts(t,t)))),pl(pl(ts(y,y),ts(<1>suc,ts(u,u))),ts(y,y)),pl(ts(y,y),pl(ts(y,y),ts(<1>suc,ts(u,u)))),pl(pl(ts(y,y),ts(y,y)),ts(<1>suc,ts(u,u))),t24,ispl2(pl(ts(<1>suc,ts(u,t)),pl(ts(u,u),ts(t,t))),ts(y,y),pl(ts(y,y),ts(<1>suc,ts(u,u))),t25),compl(pl(ts(y,y),ts(<1>suc,ts(u,u))),ts(y,y)),asspl2(ts(y,y),ts(y,y),ts(<1>suc,ts(u,u)))):is(pl(ts(x,x),ts(t,t)),pl(pl(ts(y,y),ts(y,y)),ts(<1>suc,ts(u,u))))
+t27:=tris(nat,pl(ts(y,y),ts(y,y)),ts(<1>suc,ts(y,y)),ts(x,x),t1(ts(y,y)),t11):is(pl(ts(y,y),ts(y,y)),ts(x,x))
+t28:=tris(nat,pl(ts(x,x),ts(t,t)),pl(pl(ts(y,y),ts(y,y)),ts(<1>suc,ts(u,u))),pl(ts(x,x),ts(<1>suc,ts(u,u))),t26,ispl1(pl(ts(y,y),ts(y,y)),ts(x,x),ts(<1>suc,ts(u,u)),t27)):is(pl(ts(x,x),ts(t,t)),pl(ts(x,x),ts(<1>suc,ts(u,u))))
+t29:=satz20e(ts(t,t),ts(<1>suc,ts(u,u)),ts(x,x),t28):is(ts(t,t),ts(<1>suc,ts(u,u)))
+t30:=tr4is(nat,ts(num(fr(<1>suc,1)),den(fr(ts(t,t),ts(u,u)))),ts(<1>suc,ts(u,u)),ts(t,t),ts(ts(t,t),1),ts(num(fr(ts(t,t),ts(u,u))),den(fr(<1>suc,1))),ndis12(<1>suc,1,ts(t,t),ts(u,u)),symis(nat,ts(t,t),ts(<1>suc,ts(u,u)),t29),satz28e(ts(t,t)),12isnd(ts(t,t),ts(u,u),<1>suc,1)):eq(fr(<1>suc,1),fr(ts(t,t),ts(u,u)))
+t31:=treq2(tf(fr(t,u),fr(t,u)),fr(<1>suc,1),fr(ts(t,t),ts(u,u)),tfeq12a(t,u,t,u),t30):prop1(u,t)
+t32:=somei(nat,[v:nat]prop1(u,v),t,t31):prop2(u)
+t33:=<t32><u>t8:lessis(y,u)
+t34:=<t33>satz10g(y,u,satz12(u,y,t17)):con
+i@t35:=someapp(nat,[v:nat]diffprop(y,u,v),t17,con,[v:nat][w:diffprop(y,u,v)]t34(v,w)):con
+q@t36:=someapp(nat,[v:nat]diffprop(x,y,v),t14,con,[v:nat][w:diffprop(x,y,v)]t35(v,w)):con
+p@t37:=someapp(nat,[v:nat]prop1(y,v),t9,con,[v:nat][w:prop1(y,v)]t36(v,w)):con
+-5162
++*rt
++5162
+@[x0:rat][i:is(ts(x0,x0),rtofn(<1>suc))][x:frac][xix0:inf(x,class(x0))]
+t38:=ise(ts(x0,x0),rtofn(<1>suc),tf(x,x),fr(<1>suc,1),tict(x0,x0,x,x,xix0,xix0),inclass(fr(<1>suc,1)),i):eq"n"(tf(x,x),fr(<1>suc,1))
+t39:=refeq1(fr(num(x),den(x)),x,fris(x)):eq"n"(fr(num(x),den(x)),x)
+t40:=eqtf12(fr(num(x),den(x)),x,fr(num(x),den(x)),x,t39,t39):eq"n"(tf(fr(num(x),den(x)),fr(num(x),den(x))),tf(x,x))
+t41:=treq"n"(tf(fr(num(x),den(x)),fr(num(x),den(x))),tf(x,x),fr(<1>suc,1),t40,t38):prop1"n.5162"(den(x),num(x))
+t42:=somei(nat,[t:nat]prop1"n.5162"(den(x),t),num(x),t41):prop2"n.5162"(den(x))
+t43:=somei(nat,[t:nat]prop2"n.5162"(t),den(x),t42):prop3"n.5162"
+t44:=t37"n.5162"(t43):con
+i@t45:=ratapp1(x0,con,[x:frac][t:inf(x,class(x0))]t44(x,t)):con
+-5162
++*rp
++5162
+@ksi:=ind(cut,[a:cut]is(ts(a,a),rpofnt(<1>suc)),satz161(rpofnt(<1>suc))):cut
+t46:=oneax(cut,[a:cut]is(ts(a,a),rpofnt(<1>suc)),satz161(rpofnt(<1>suc))):is(ts(ksi,ksi),rpofnt(<1>suc))
+[r:ratrp(ksi)]
+x0:=rtofrp(ksi,r):rat
+t47:=tr3is(cut,rpofrt(ts"rt"(x0,x0)),ts(rpofrt(x0),rpofrt(x0)),ts(ksi,ksi),rpofnt(<1>suc),satz155c(x0,x0),ists12(rpofrt(x0),ksi,rpofrt(x0),ksi,isrprt2(ksi,r),isrprt2(ksi,r)),t46):is(rpofrt(ts"rt"(x0,x0)),rpofnt(<1>suc))
+t48:=isrtirp(ts"rt"(x0,x0),rtofn(<1>suc),t47):is"rt"(ts"rt"(x0,x0),rtofn(<1>suc))
+t49:=t45"rt.5162"(x0,t48):con
+-5162
+@satz162:=somei(cut,[a:cut]irratrp(a),ksi".5162",[t:ratrp(ksi".5162")]t49".5162"(t)):some([a:cut]irratrp(a))
+[zeta:cut]
+sqrt:=ind(cut,[a:cut]is(ts(a,a),zeta),satz161(zeta)):cut
+thsqrt1:=oneax(cut,[a:cut]is(ts(a,a),zeta),satz161(zeta)):is(ts(sqrt(zeta),sqrt(zeta)),zeta)
+[ksi:cut][i:is(ts(ksi,ksi),zeta)]
+thsqrt2:=t20".5161"(zeta,ksi,sqrt,i,thsqrt1):is(ksi,sqrt)
+@[ksi:cut][eta:cut][i:is(ksi,eta)]
+issqrt:=isf(cut,cut,[t:cut]sqrt(t),ksi,eta,i):is(sqrt(ksi),sqrt(eta))
+@[ksi:cut][nx:natrp(ksi)][eta:cut][ny:natrp(eta)]
++iiia
+x:=ntofrp(ksi,nx):nat
+y:=ntofrp(eta,ny):nat
+t1:=isrpnt1(ksi,nx):is(ksi,rpofnt(x))
+t2:=isrpnt1(eta,ny):is(eta,rpofnt(y))
+t3:=ispl12(ksi,rpofnt(x),eta,rpofnt(y),t1,t2):is(pl(ksi,eta),pl(rpofnt(x),rpofnt(y)))
+x0:=rtofn(x):rat
+y0:=rtofn(y):rat
+t4:=natrti(x):natrt(x0)
+t5:=natrti(y):natrt(y0)
+t6:=symis(cut,rpofrt(pl"rt"(x0,y0)),pl(rpofnt(x),rpofnt(y)),satz155a(x0,y0)):is(pl(rpofnt(x),rpofnt(y)),rpofrt(pl"rt"(x0,y0)))
+t7:=satz112d(x0,t4,y0,t5):natrt(pl"rt"(x0,y0))
+xpy:=nofrt(pl"rt"(x0,y0),t7):nat
+t8:=isrtn1(pl"rt"(x0,y0),t7):is"rt"(pl"rt"(x0,y0),rtofn(xpy))
+t9:=isrterp(pl"rt"(x0,y0),rtofn(xpy),t8):is(rpofrt(pl"rt"(x0,y0)),rpofnt(xpy))
+t10:=tr3is(cut,pl(ksi,eta),pl(rpofnt(x),rpofnt(y)),rpofrt(pl"rt"(x0,y0)),rpofnt(xpy),t3,t6,t9):is(pl(ksi,eta),rpofnt(xpy))
+-iiia
+natpl:=somei(nat,[t:nat]is(pl(ksi,eta),rpofnt(t)),xpy".iiia",t10".iiia"):natrp(pl(ksi,eta))
++*iiia
+ny@t11:=ists12(ksi,rpofnt(x),eta,rpofnt(y),t1,t2):is(ts(ksi,eta),ts(rpofnt(x),rpofnt(y)))
+t12:=symis(cut,rpofrt(ts"rt"(x0,y0)),ts(rpofnt(x),rpofnt(y)),satz155c(x0,y0)):is(ts(rpofnt(x),rpofnt(y)),rpofrt(ts"rt"(x0,y0)))
+t13:=satz112f(x0,t4,y0,t5):natrt(ts"rt"(x0,y0))
+xty:=nofrt(ts"rt"(x0,y0),t13):nat
+t14:=isrtn1(ts"rt"(x0,y0),t13):is"rt"(ts"rt"(x0,y0),rtofn(xty))
+t15:=isrterp(ts"rt"(x0,y0),rtofn(xty),t14):is(rpofrt(ts"rt"(x0,y0)),rpofnt(xty))
+t16:=tr3is(cut,ts(ksi,eta),ts(rpofnt(x),rpofnt(y)),rpofrt(ts"rt"(x0,y0)),rpofnt(xty),t11,t12,t15):is(ts(ksi,eta),rpofnt(xty))
+-iiia
+ny@natts:=somei(nat,[t:nat]is(ts(ksi,eta),rpofnt(t)),xty".iiia",t16".iiia"):natrp(ts(ksi,eta))
+[m:more(ksi,eta)]
++*iiia
+m@t17:=ismore12(ksi,rpofnt(x),eta,rpofnt(y),t1,t2,m):more(rpofnt(x),rpofnt(y))
+t18:=satz154d(x0,y0,t17):more"rt"(x0,y0)
+t20:=ismn12(ksi,rpofnt(x),eta,rpofnt(y),m,satz154a(x0,y0,t18),t1,t2):is(mn(ksi,eta,m),mn(rpofnt(x),rpofnt(y),satz154a(x0,y0,t18)))
+t21:=symis(cut,rpofrt(mn"rt"(x0,y0,t18)),mn(rpofnt(x),rpofnt(y),satz154a(x0,y0,t18)),satz155b(x0,y0,t18)):is(mn(rpofnt(x),rpofnt(y),satz154a(x0,y0,t18)),rpofrt(mn"rt"(x0,y0,t18)))
+t22:=satz112g(x0,t4,y0,t5,t18):natrt(mn"rt"(x0,y0,t18))
+xmy:=nofrt(mn"rt"(x0,y0,t18),t22):nat
+t23:=isrtn1(mn"rt"(x0,y0,t18),t22):is"rt"(mn"rt"(x0,y0,t18),rtofn(xmy))
+t24:=isrterp(mn"rt"(x0,y0,t18),rtofn(xmy),t23):is(rpofrt(mn"rt"(x0,y0,t18)),rpofnt(xmy))
+t25:=tr3is(cut,mn(ksi,eta,m),mn(rpofnt(x),rpofnt(y),satz154a(x0,y0,t18)),rpofrt(mn"rt"(x0,y0,t18)),rpofnt(xmy),t20,t21,t24):is(mn(ksi,eta,m),rpofnt(xmy))
+-iiia
+m@natmn:=somei(nat,[t:nat]is(mn(ksi,eta,m),rpofnt(t)),xmy".iiia",t25".iiia"):natrp(mn(ksi,eta,m))
+@[p:cut][q:cut][r:cut]
+3pl13:=tr3is(cut,pl(p,pl(q,r)),pl(pl(q,r),p),pl(pl(r,q),p),pl(r,pl(q,p)),compl(p,pl(q,r)),ispl1(pl(q,r),pl(r,q),p,compl(q,r)),asspl1(r,q,p)):is(pl(p,pl(q,r)),pl(r,pl(q,p)))
+[s:cut]
+4pl24:=tr3is(cut,pl(pl(p,q),pl(r,s)),pl(p,pl(q,pl(r,s))),pl(p,pl(s,pl(r,q))),pl(pl(p,s),pl(r,q)),asspl1(p,q,pl(r,s)),ispl2(pl(q,pl(r,s)),pl(s,pl(r,q)),p,3pl13(q,r,s)),asspl2(p,s,pl(r,q))):is(pl(pl(p,q),pl(r,s)),pl(pl(p,s),pl(r,q)))
+r@3pl12:=tr3is(cut,pl(p,pl(q,r)),pl(pl(p,q),r),pl(pl(q,p),r),pl(q,pl(p,r)),asspl2(p,q,r),ispl1(pl(p,q),pl(q,p),r,compl(p,q)),asspl1(q,p,r)):is(pl(p,pl(q,r)),pl(q,pl(p,r)))
+s@4pl23:=tr3is(cut,pl(pl(p,q),pl(r,s)),pl(p,pl(q,pl(r,s))),pl(p,pl(r,pl(q,s))),pl(pl(p,r),pl(q,s)),asspl1(p,q,pl(r,s)),ispl2(pl(q,pl(r,s)),pl(r,pl(q,s)),p,3pl12(q,r,s)),asspl2(p,r,pl(q,s))):is(pl(pl(p,q),pl(r,s)),pl(pl(p,r),pl(q,s)))
+r@3pl23:=tr3is(cut,pl(pl(p,q),r),pl(p,pl(q,r)),pl(p,pl(r,q)),pl(pl(p,r),q),asspl1(p,q,r),ispl2(pl(q,r),pl(r,q),p,compl(q,r)),asspl2(p,r,q)):is(pl(pl(p,q),r),pl(pl(p,r),q))
+p@a2isapa:=tris(cut,ts(p,pl(1rp,1rp)),pl(ts(p,1rp),ts(p,1rp)),pl(p,p),disttp2(p,1rp,1rp),ispl12(ts(p,1rp),p,ts(p,1rp),p,satz151(p),satz151(p))):is(ts(p,pl(1rp,1rp)),pl(p,p))
+@dif:=pair1type(cut):'type'
+[a1:cut][a2:cut]
+df:=pair1(cut,a1,a2):dif
+@[a:dif]
+stm:=first1(cut,a):cut
+std:=second1(cut,a):cut
+a2@stmis:=first1is1(cut,a1,a2):is(stm(df(a1,a2)),a1)
+isstm:=first1is2(cut,a1,a2):is(a1,stm(df(a1,a2)))
+stdis:=second1is1(cut,a1,a2):is(std(df(a1,a2)),a2)
+isstd:=second1is2(cut,a1,a2):is(a2,std(df(a1,a2)))
+a@1a:=stm(a):cut
+2a:=std(a):cut
+dfis:=pair1is1(cut,a):is"e"(dif,df(1a,2a),a)
+isdf:=pair1is2(cut,a):is"e"(dif,a,df(1a,2a))
+a2@[b1:cut][b2:cut]
+12issmsd:=ispl12(a1,stm(df(a1,a2)),b2,std(df(b1,b2)),isstm(a1,a2),isstd(b1,b2)):is(pl(a1,b2),pl(stm(df(a1,a2)),std(df(b1,b2))))
+smsdis12:=symis(cut,pl(a1,b2),pl(stm(df(a1,a2)),std(df(b1,b2))),12issmsd):is(pl(stm(df(a1,a2)),std(df(b1,b2))),pl(a1,b2))
+a@[r1:cut][r2:cut]
+1sdissmsd:=ispl1(r1,stm(df(r1,r2)),2a,isstm(r1,r2)):is(pl(r1,2a),pl(stm(df(r1,r2)),2a))
+smsdis1sd:=symis(cut,pl(r1,2a),pl(stm(df(r1,r2)),2a),1sdissmsd):is(pl(stm(df(r1,r2)),2a),pl(r1,2a))
+sm2issmsd:=ispl2(r2,std(df(r1,r2)),1a,isstd(r1,r2)):is(pl(1a,r2),pl(1a,std(df(r1,r2))))
+smsdissm2:=symis(cut,pl(1a,r2),pl(1a,std(df(r1,r2))),sm2issmsd):is(pl(1a,std(df(r1,r2))),pl(1a,r2))
+a2@[r:cut][i:is(a1,r)]
+issm:=isf(cut,dif,[t:cut]df(t,a2),a1,r,i):is"e"(dif,df(a1,a2),df(r,a2))
+r@[i:is(a2,r)]
+issd:=isf(cut,dif,[t:cut]df(a1,t),a2,r,i):is"e"(dif,df(a1,a2),df(a1,r))
+b2@[i:is(a1,b1)][j:is(a2,b2)]
+issmsd:=tris(dif,df(a1,a2),df(b1,a2),df(b1,b2),issm(a1,a2,b1,i),issd(b1,a2,b2,j)):is"e"(dif,df(a1,a2),df(b1,b2))
+a@[b:dif]
+1b:=stm(b):cut
+2b:=std(b):cut
+eq:=is(pl(1a,2b),pl(1b,2a)):'prop'
+b2@[i:is(pl(a1,b2),pl(b1,a2))]
+eqi12:=tr3is(cut,pl(stm(df(a1,a2)),std(df(b1,b2))),pl(a1,b2),pl(b1,a2),pl(stm(df(b1,b2)),std(df(a1,a2))),smsdis12(a1,a2,b1,b2),i,12issmsd(b1,b2,a1,a2)):eq(df(a1,a2),df(b1,b2))
+r2@[i:is(pl(1a,r2),pl(r1,2a))]
+eqi1:=isp(dif,[x:dif]eq(x,df(r1,r2)),df(1a,2a),a,eqi12(1a,2a,r1,r2,i),dfis):eq(a,df(r1,r2))
+r2@[i:is(pl(r1,2a),pl(1a,r2))]
+eqi2:=isp(dif,[x:dif]eq(df(r1,r2),x),df(1a,2a),a,eqi12(r1,r2,1a,2a,i),dfis):eq(df(r1,r2),a)
+b2@[e:eq(df(a1,a2),df(b1,b2))]
+eqe12:=tr3is(cut,pl(a1,b2),pl(stm(df(a1,a2)),std(df(b1,b2))),pl(stm(df(b1,b2)),std(df(a1,a2))),pl(b1,a2),12issmsd(a1,a2,b1,b2),e,smsdis12(b1,b2,a1,a2)):is(pl(a1,b2),pl(b1,a2))
+a@satzd163:=refis(cut,pl(1a,2a)):eq(a,a)
+refeq:=satzd163:eq(a,a)
+b@[i:is"e"(dif,a,b)]
+refeq1:=isp(dif,[x:dif]eq(a,x),a,b,refeq,i):eq(a,b)
+refeq2:=isp(dif,[x:dif]eq(x,a),a,b,refeq,i):eq(b,a)
+b2@[i:is(a1,b1)][j:is(a2,b2)]
+eqsmsd:=refeq1(df(a1,a2),df(b1,b2),issmsd(i,j)):eq(df(a1,a2),df(b1,b2))
+r@[i:is(a1,r)]
+eqsm:=refeq1(df(a1,a2),df(r,a2),issm(i)):eq(df(a1,a2),df(r,a2))
+r@[i:is(a2,r)]
+eqsd:=refeq1(df(a1,a2),df(a1,r),issd(i)):eq(df(a1,a2),df(a1,r))
+b@[e:eq(a,b)]
+satzd164:=symis(cut,pl(1a,2b),pl(1b,2a),e):eq(b,a)
+symeq:=satzd164:eq(b,a)
+b@[c:dif]
+1c:=stm(c):cut
+2c:=std(c):cut
+[e:eq(a,b)][f:eq(b,c)]
++1d165
+t1:=ispl12(pl(1a,2b),pl(1b,2a),pl(1b,2c),pl(1c,2b),e,f):is(pl(pl(1a,2b),pl(1b,2c)),pl(pl(1b,2a),pl(1c,2b)))
+t2:=tr4is(cut,pl(pl(1a,2c),pl(1b,2b)),pl(pl(1a,2b),pl(1b,2c)),pl(pl(1b,2a),pl(1c,2b)),pl(pl(1c,2b),pl(1b,2a)),pl(pl(1c,2a),pl(1b,2b)),4pl24(1a,2c,1b,2b),t1,compl(pl(1b,2a),pl(1c,2b)),4pl24(1c,2b,1b,2a)):is(pl(pl(1a,2c),pl(1b,2b)),pl(pl(1c,2a),pl(1b,2b)))
+-1d165
+satzd165:=satz136b(pl(1a,2c),pl(1c,2a),pl(1b,2b),t2".1d165"):eq(a,c)
+treq:=satzd165:eq(a,c)
+c@[e:eq(c,a)][f:eq(c,b)]
+treq1:=treq(a,c,b,symeq(c,a,e),f):eq(a,b)
+c@[e:eq(a,c)][f:eq(b,c)]
+treq2:=treq(a,c,b,e,symeq(b,c,f)):eq(a,b)
+c@[d:dif][e1:eq(a,b)][e2:eq(b,c)][e3:eq(c,d)]
+tr3eq:=treq(a,b,d,e1,treq(b,c,d,e2,e3)):eq(a,d)
+d@[e:dif][e1:eq(a,b)][e2:eq(b,c)][e3:eq(c,d)][e4:eq(d,e)]
+tr4eq:=tr3eq(a,b,c,e,e1,e2,treq(c,d,e,e3,e4)):eq(a,e)
+a@posd:=more(1a,2a):'prop'
+zero:=is(1a,2a):'prop'
+negd:=less(1a,2a):'prop'
+a2@[m:more(a1,a2)]
+posdi:=ismore12(a1,stm(df(a1,a2)),a2,std(df(a1,a2)),isstm(a1,a2),isstd(a1,a2),m):posd(df(a1,a2))
+a2@[i:is(a1,a2)]
+zeroi:=tr3is(cut,stm(df(a1,a2)),a1,a2,std(df(a1,a2)),stmis(a1,a2),i,isstd(a1,a2)):zero(df(a1,a2))
+a2@[l:less(a1,a2)]
+negdi:=isless12(a1,stm(df(a1,a2)),a2,std(df(a1,a2)),isstm(a1,a2),isstd(a1,a2),l):negd(df(a1,a2))
+a@axrde:=satz123b(1a,2a):ec3(zero(a),posd(a),negd(a))
+axrdo:=satz123a(1a,2a):or3(zero(a),posd(a),negd(a))
+axrd:=orec3i(zero(a),posd(a),negd(a),axrdo,axrde):orec3(zero(a),posd(a),negd(a))
+[p:'prop'][p1:[t:posd(a)]p][p2:[t:zero(a)]p][p3:[t:negd(a)]p]
+rappd:=or3app(zero(a),posd(a),negd(a),p,axrdo,p2,p1,p3):p
+a@[p:posd(a)]
+pnot0d:=ec3e21(zero(a),posd(a),negd(a),axrde,p):not(zero(a))
+pnotnd:=ec3e23(zero(a),posd(a),negd(a),axrde,p):not(negd(a))
+a@[z:zero(a)]
+0notpd:=ec3e12(zero(a),posd(a),negd(a),axrde,z):not(posd(a))
+0notnd:=ec3e13(zero(a),posd(a),negd(a),axrde,z):not(negd(a))
+a@[n:negd(a)]
+nnotpd:=ec3e32(zero(a),posd(a),negd(a),axrde,n):not(posd(a))
+nnot0d:=ec3e31(zero(a),posd(a),negd(a),axrde,n):not(zero(a))
+b@[e:eq(a,b)][p:posd(a)]
++iv1d
+t1:=ismore12(pl(1a,2b),pl(1b,2a),pl(2a,2b),pl(2b,2a),e,compl(2a,2b),satz135a(1a,2a,2b,p)):more(pl(1b,2a),pl(2b,2a))
+-iv1d
+eqposd:=satz136a(1b,2b,2a,t1".iv1d"):posd(b)
+e@[z:zero(a)]
++*iv1d
+z@t2:=tr3is(cut,pl(1b,2a),pl(1a,2b),pl(2a,2b),pl(2b,2a),symeq(a,b,e),ispl1(1a,2a,2b,z),compl(2a,2b)):is(pl(1b,2a),pl(2b,2a))
+-iv1d
+z@eqzero:=satz136b(1b,2b,2a,t2".iv1d"):zero(b)
+e@[n:negd(a)]
++*iv1d
+n@t3:=isless12(pl(1a,2b),pl(1b,2a),pl(2a,2b),pl(2b,2a),e,compl(2a,2b),satz135c(1a,2a,2b,n)):less(pl(1b,2a),pl(2b,2a))
+-iv1d
+n@eqnegd:=satz136c(1b,2b,2a,t3".iv1d"):negd(b)
+b@[z:zero(a)][y:zero(b)]
+zeroeq:=tris(cut,pl(1a,2b),pl(2a,1b),pl(1b,2a),ispl12(1a,2a,2b,1b,z,symis(cut,1b,2b,y)),compl(2a,1b)):eq(a,b)
+@[r:cut]
+pdofrp:=df(pl(r,1rp),1rp):dif
+ndofrp:=df(1rp,pl(r,1rp)):dif
+[s:cut][i:is(r,s)]
+isrpepd:=refeq1(pdofrp(r),pdofrp(s),isf(cut,dif,[x:cut]pdofrp(x),r,s,i)):eq(pdofrp(r),pdofrp(s))
+isrpend:=refeq1(ndofrp(r),ndofrp(s),isf(cut,dif,[x:cut]ndofrp(x),r,s,i)):eq(ndofrp(r),ndofrp(s))
+s@[e:eq(pdofrp(r),pdofrp(s))]
++*iv1d
+e@t4:=satz136b(pl(r,1rp),pl(s,1rp),1rp,eqe12(pl(r,1rp),1rp,pl(s,1rp),1rp,e)):is(pl(r,1rp),pl(s,1rp))
+-iv1d
+e@isrpipd:=satz136b(r,s,1rp,t4".iv1d"):is(r,s)
+s@[e:eq(ndofrp(r),ndofrp(s))]
++*iv1d
+e@t5:=satz136e(pl(s,1rp),pl(r,1rp),1rp,eqe12(1rp,pl(r,1rp),1rp,pl(s,1rp),e)):is(pl(s,1rp),pl(r,1rp))
+-iv1d
+e@isrpind:=symis(cut,s,r,satz136b(s,r,1rp,t5".iv1d")):is(r,s)
+r@posdirp:=posdi(pl(r,1rp),1rp,ismore1(pl(1rp,r),pl(r,1rp),1rp,compl(1rp,r),satz133(1rp,r))):posd(pdofrp(r))
+negdirp:=negdi(1rp,pl(r,1rp),isless2(pl(1rp,r),pl(r,1rp),1rp,compl(1rp,r),satz133a(1rp,r))):negd(ndofrp(r))
+a@[p:posd(a)]
+rpofpd:=mn(1a,2a,p):cut
++*iv1d
+p@t6:=tr4is(cut,pl(1a,1rp),pl(pl(rpofpd,2a),1rp),pl(rpofpd,pl(2a,1rp)),pl(rpofpd,pl(1rp,2a)),pl(pl(rpofpd,1rp),2a),ispl1(1a,pl(rpofpd,2a),1rp,satz140f(1a,2a,p)),asspl1(rpofpd,2a,1rp),ispl2(pl(2a,1rp),pl(1rp,2a),rpofpd,compl(2a,1rp)),asspl2(rpofpd,1rp,2a)):is(pl(1a,1rp),pl(pl(rpofpd,1rp),2a))
+-iv1d
+p@eqpdrp1:=eqi1(a,pl(rpofpd,1rp),1rp,t6".iv1d"):eq(a,pdofrp(rpofpd(a,p)))
+eqpdrp2:=symeq(a,pdofrp(rpofpd(a,p)),eqpdrp1):eq(pdofrp(rpofpd(a,p)),a)
+a@[n:negd(a)]
+rpofnd:=mn(2a,1a,satz122(1a,2a,n)):cut
++*iv1d
+n@t7:=tr3is(cut,pl(1a,pl(rpofnd,1rp)),pl(pl(1a,rpofnd),1rp),pl(2a,1rp),pl(1rp,2a),asspl2(1a,rpofnd,1rp),ispl1(pl(1a,rpofnd),2a,1rp,satz140c(2a,1a,satz122(1a,2a,n))),compl(2a,1rp)):is(pl(1a,pl(rpofnd,1rp)),pl(1rp,2a))
+-iv1d
+n@eqndrp1:=eqi1(a,1rp,pl(rpofnd,1rp),t7".iv1d"):eq(a,ndofrp(rpofnd(a,n)))
+eqndrp2:=symeq(a,ndofrp(rpofnd(a,n)),eqndrp1):eq(ndofrp(rpofnd(a,n)),a)
+@[h:dif][p:posd(h)][k:dif][q:posd(k)][e:eq(h,k)]
++*iv1d
+e@t8:=tr3eq(pdofrp(rpofpd(h,p)),h,k,pdofrp(rpofpd(k,q)),eqpdrp2(h,p),e,eqpdrp1(k,q)):eq(pdofrp(rpofpd(h,p)),pdofrp(rpofpd(k,q)))
+-iv1d
+e@eqpderp:=isrpipd(rpofpd(h,p),rpofpd(k,q),t8".iv1d"):is(rpofpd(h,p),rpofpd(k,q))
+q@[i:is(rpofpd(h,p),rpofpd(k,q))]
++*iv1d
+i@t9:=isrpepd(rpofpd(h,p),rpofpd(k,q),i):eq(pdofrp(rpofpd(h,p)),pdofrp(rpofpd(k,q)))
+-iv1d
+i@eqpdirp:=tr3eq(h,pdofrp(rpofpd(h,p)),pdofrp(rpofpd(k,q)),k,eqpdrp1(h,p),t9".iv1d",eqpdrp2(k,q)):eq(h,k)
+h@[n:negd(h)][k:dif][o:negd(k)][e:eq(h,k)]
++*iv1d
+e@t10:=tr3eq(ndofrp(rpofnd(h,n)),h,k,ndofrp(rpofnd(k,o)),eqndrp2(h,n),e,eqndrp1(k,o)):eq(ndofrp(rpofnd(h,n)),ndofrp(rpofnd(k,o)))
+-iv1d
+e@eqnderp:=isrpind(rpofnd(h,n),rpofnd(k,o),t10".iv1d"):is(rpofnd(h,n),rpofnd(k,o))
+o@[i:is(rpofnd(h,n),rpofnd(k,o))]
++*iv1d
+i@t11:=isrpend(rpofnd(h,n),rpofnd(k,o),i):eq(ndofrp(rpofnd(h,n)),ndofrp(rpofnd(k,o)))
+-iv1d
+i@eqndirp:=tr3eq(h,ndofrp(rpofnd(h,n)),ndofrp(rpofnd(k,o)),k,eqndrp1(h,n),t11".iv1d",eqndrp2(k,o)):eq(h,k)
+@[r:cut]
++*iv1d
+r@t12:=eqpdrp1(pdofrp(r),posdirp(r)):eq(pdofrp(r),pdofrp(rpofpd(pdofrp(r),posdirp(r))))
+-iv1d
+r@isrppd1:=isrpipd(r,rpofpd(pdofrp(r),posdirp(r)),t12".iv1d"):is(r,rpofpd(pdofrp(r),posdirp(r)))
+isrppd2:=symis(cut,r,rpofpd(pdofrp(r),posdirp(r)),isrppd1):is(rpofpd(pdofrp(r),posdirp(r)),r)
++*iv1d
+r@t13:=eqndrp1(ndofrp(r),negdirp(r)):eq(ndofrp(r),ndofrp(rpofnd(ndofrp(r),negdirp(r))))
+-iv1d
+r@isrpnd1:=isrpind(r,rpofnd(ndofrp(r),negdirp(r)),t13".iv1d"):is(r,rpofnd(ndofrp(r),negdirp(r)))
+isrpnd2:=symis(cut,r,rpofnd(ndofrp(r),negdirp(r)),isrpnd1):is(rpofnd(ndofrp(r),negdirp(r)),r)
+a2@[r:cut]
+lemmad1:=eqi12(a1,a2,pl(a1,r),pl(a2,r),tris(cut,pl(a1,pl(a2,r)),pl(a1,pl(r,a2)),pl(pl(a1,r),a2),ispl2(pl(a2,r),pl(r,a2),a1,compl(a2,r)),asspl2(a1,r,a2))):eq(df(a1,a2),df(pl(a1,r),pl(a2,r)))
+lemmad2:=symeq(df(a1,a2),df(pl(a1,r),pl(a2,r)),lemmad1):eq(df(pl(a1,r),pl(a2,r)),df(a1,a2))
+a@[r:cut]
+lemmad3:=treq(a,df(1a,2a),df(pl(1a,r),pl(2a,r)),refeq1(a,df(1a,2a),isdf),lemmad1(1a,2a,r)):eq(a,df(pl(1a,r),pl(2a,r)))
+lemmad4:=symeq(a,df(pl(1a,r),pl(2a,r)),lemmad3):eq(df(pl(1a,r),pl(2a,r)),a)
+a@absd:=ite(negd(a),dif,df(2a,1a),a):dif
+[n:negd(a)]
+absnd:=refeq1(absd(a),df(2a,1a),itet(negd(a),dif,df(2a,1a),a,n)):eq(absd(a),df(2a,1a))
+a@[n:not(negd(a))]
+absnnd:=refeq1(absd(a),a,itef(negd(a),dif,df(2a,1a),a,n)):eq(absd(a),a)
+a2@[l:less(a1,a2)]
+absdeql:=treq(absd(df(a1,a2)),df(std(df(a1,a2)),stm(df(a1,a2))),df(a2,a1),absnd(df(a1,a2),negdi(a1,a2,l)),eqsmsd(std(df(a1,a2)),stm(df(a1,a2)),a2,a1,stdis(a1,a2),stmis(a1,a2))):eq(absd(df(a1,a2)),df(a2,a1))
+a2@[m:moreis(a1,a2)]
+absdeqm:=absnnd(df(a1,a2),th3"l.imp"(negd(df(a1,a2)),less(a1,a2),satz123c(a1,a2,m),[t:negd(df(a1,a2))]isless12(stm(df(a1,a2)),a1,std(df(a1,a2)),a2,stmis(a1,a2),stdis(a1,a2),t))):eq(absd(df(a1,a2)),df(a1,a2))
+b@[e:eq(a,b)]
++iv2d
+[n:negd(a)]
+t1:=tr3is(cut,pl(2a,1b),pl(1b,2a),pl(1a,2b),pl(2b,1a),compl(2a,1b),symeq(a,b,e),compl(1a,2b)):is(pl(2a,1b),pl(2b,1a))
+t2:=tr3eq(absd(a),df(2a,1a),df(2b,1b),absd(b),absnd(a,n),eqi12(2a,1a,2b,1b,t1),symeq(absd(b),df(2b,1b),absnd(b,eqnegd(a,b,e,n)))):eq(absd(a),absd(b))
+e@[n:not(negd(a))]
+t3:=tr3eq(absd(a),a,b,absd(b),absnnd(a,n),e,symeq(absd(b),b,absnnd(b,th3"l.imp"(negd(b),negd(a),n,[t:negd(b)]eqnegd(b,a,symeq(a,b,e),t))))):eq(absd(a),absd(b))
+-iv2d
+eqabsd:=th1"l.imp"(negd(a),eq(absd(a),absd(b)),[t:negd(a)]t2".iv2d"(t),[t:not(negd(a))]t3".iv2d"(t)):eq(absd(a),absd(b))
+a@[p:posd(a)]
+satzd166a:=eqposd(a,absd(a),symeq(absd(a),a,absnnd(a,pnotnd(a,p))),p):posd(absd(a))
+a@[n:negd(a)]
++2d166
+t1:=posdi(2a,1a,satz122(1a,2a,n)):posd(df(2a,1a))
+-2d166
+satzd166b:=eqposd(df(2a,1a),absd(a),symeq(absd(a),df(2a,1a),absnd(a,n)),t1".2d166"):posd(absd(a))
+b@[p:posd(a)][q:posd(b)][e:eq(absd(a),absd(b))]
+satzd166c:=tr3eq(a,absd(a),absd(b),b,symeq(absd(a),a,absnnd(a,pnotnd(a,p))),e,absnnd(b,pnotnd(b,q))):eq(a,b)
+b@[n:negd(a)][o:negd(b)][e:eq(absd(a),absd(b))]
++*2d166
+e@t2:=tr3eq(df(2a,1a),absd(a),absd(b),df(2b,1b),symeq(absd(a),df(2a,1a),absnd(a,n)),e,absnd(b,o)):eq(df(2a,1a),df(2b,1b))
+-2d166
+e@satzd166d:=tr3is(cut,pl(1a,2b),pl(2b,1a),pl(2a,1b),pl(1b,2a),compl(1a,2b),symis(cut,pl(2a,1b),pl(2b,1a),eqe12(2a,1a,2b,1b,t2".2d166")),compl(2a,1b)):eq(a,b)
+a@[n:not(zero(a))]
+satzd166e:=rappd(a,posd(absd(a)),[t:posd(a)]satzd166a(a,t),th2"l.imp"(zero(a),posd(absd(a)),n),[t:negd(a)]satzd166b(a,t)):posd(absd(a))
+a@[z:zero(a)]
+satzd166f:=eqzero(a,absd(a),symeq(absd(a),a,absnnd(a,0notnd(a,z))),z):zero(absd(a))
+b@mored:=more(pl(1a,2b),pl(1b,2a)):'prop'
+b2@[m:more(pl(a1,b2),pl(b1,a2))]
+moredi12:=ismore12(pl(a1,b2),pl(stm(df(a1,a2)),std(df(b1,b2))),pl(b1,a2),pl(stm(df(b1,b2)),std(df(a1,a2))),12issmsd(a1,a2,b1,b2),12issmsd(b1,b2,a1,a2),m):mored(df(a1,a2),df(b1,b2))
+r2@[m:more(pl(1a,r2),pl(r1,2a))]
+moredi1:=ismore12(pl(1a,r2),pl(1a,std(df(r1,r2))),pl(r1,2a),pl(stm(df(r1,r2)),2a),sm2issmsd(a,r1,r2),1sdissmsd(a,r1,r2),m):mored(a,df(r1,r2))
+r2@[m:more(pl(r1,2a),pl(1a,r2))]
+moredi2:=ismore12(pl(r1,2a),pl(stm(df(r1,r2)),2a),pl(1a,r2),pl(1a,std(df(r1,r2))),1sdissmsd(a,r1,r2),sm2issmsd(a,r1,r2),m):mored(df(r1,r2),a)
+b2@[m:mored(df(a1,a2),df(b1,b2))]
+morede12:=ismore12(pl(stm(df(a1,a2)),std(df(b1,b2))),pl(a1,b2),pl(stm(df(b1,b2)),std(df(a1,a2))),pl(b1,a2),smsdis12(a1,a2,b1,b2),smsdis12(b1,b2,a1,a2),m):more(pl(a1,b2),pl(b1,a2))
+b@lessd:=less(pl(1a,2b),pl(1b,2a)):'prop'
+[m:mored(a,b)]
+lemmad5:=satz121(pl(1a,2b),pl(1b,2a),m):lessd(b,a)
+b@[l:lessd(a,b)]
+lemmad6:=satz122(pl(1a,2b),pl(1b,2a),l):mored(b,a)
+b2@[l:less(pl(a1,b2),pl(b1,a2))]
+lessdi12:=lemmad5(df(b1,b2),df(a1,a2),moredi12(b1,b2,a1,a2,satz122(pl(a1,b2),pl(b1,a2),l))):lessd(df(a1,a2),df(b1,b2))
+r2@[l:less(pl(1a,r2),pl(r1,2a))]
+lessdi1:=lemmad5(df(r1,r2),a,moredi2(a,r1,r2,satz122(pl(1a,r2),pl(r1,2a),l))):lessd(a,df(r1,r2))
+r2@[l:less(pl(r1,2a),pl(1a,r2))]
+lessdi2:=lemmad5(a,df(r1,r2),moredi1(a,r1,r2,satz122(pl(r1,2a),pl(1a,r2),l))):lessd(df(r1,r2),a)
+b2@[l:lessd(df(a1,a2),df(b1,b2))]
+lessde12:=satz121(pl(b1,a2),pl(a1,b2),morede12(b1,b2,a1,a2,lemmad6(df(a1,a2),df(b1,b2),l))):less(pl(a1,b2),pl(b1,a2))
+b@satzd167:=satz123(pl(1a,2b),pl(1b,2a)):orec3(eq(a,b),mored(a,b),lessd(a,b))
+satzd167a:=satz123a(pl(1a,2b),pl(1b,2a)):or3(eq(a,b),mored(a,b),lessd(a,b))
+satzd167b:=satz123b(pl(1a,2b),pl(1b,2a)):ec3(eq(a,b),mored(a,b),lessd(a,b))
+d@1d:=stm(d):cut
+2d:=std(d):cut
+[e:eq(a,b)][f:eq(c,d)][m:mored(a,c)]
++*iv2d
+m@t4:=tr4is(cut,pl(pl(1b,2d),pl(1c,2a)),pl(pl(1b,2a),pl(1c,2d)),pl(pl(1a,2b),pl(1d,2c)),pl(pl(1a,2c),pl(1d,2b)),pl(pl(1d,2b),pl(1a,2c)),4pl24(1b,2d,1c,2a),ispl12(pl(1b,2a),pl(1a,2b),pl(1c,2d),pl(1d,2c),symeq(a,b,e),f),4pl24(1a,2b,1d,2c),compl(pl(1a,2c),pl(1d,2b))):is(pl(pl(1b,2d),pl(1c,2a)),pl(pl(1d,2b),pl(1a,2c)))
+t5:=ismore2(pl(pl(1b,2d),pl(1c,2a)),pl(pl(1d,2b),pl(1a,2c)),pl(pl(1b,2d),pl(1a,2c)),t4,satz135d(pl(1a,2c),pl(1c,2a),pl(1b,2d),m)):more(pl(pl(1b,2d),pl(1a,2c)),pl(pl(1d,2b),pl(1a,2c)))
+-iv2d
+m@eqmored12:=satz136a(pl(1b,2d),pl(1d,2b),pl(1a,2c),t5".iv2d"):mored(b,d)
+f@[l:lessd(a,c)]
+eqlessd12:=lemmad5(d,b,eqmored12(c,d,a,b,f,e,lemmad6(a,c,l))):lessd(b,d)
+c@[e:eq(a,b)][m:mored(a,c)]
+eqmored1:=eqmored12(a,b,c,c,e,refeq(c),m):mored(b,c)
+e@[m:mored(c,a)]
+eqmored2:=eqmored12(c,c,a,b,refeq(c),e,m):mored(c,b)
+e@[l:lessd(a,c)]
+eqlessd1:=eqlessd12(a,b,c,c,e,refeq(c),l):lessd(b,c)
+e@[l:lessd(c,a)]
+eqlessd2:=eqlessd12(c,c,a,b,refeq(c),e,l):lessd(c,b)
+b@moreq:=or(mored(a,b),eq(a,b)):'prop'
+lesseq:=or(lessd(a,b),eq(a,b)):'prop'
+[m:moreq(a,b)]
+satzd168a:=th9"l.or"(mored(a,b),eq(a,b),lessd(b,a),eq(b,a),m,[t:mored(a,b)]lemmad5(a,b,t),[t:eq(a,b)]symeq(a,b,t)):lesseq(b,a)
+b@[l:lesseq(a,b)]
+satzd168b:=th9"l.or"(lessd(a,b),eq(a,b),mored(b,a),eq(b,a),l,[t:lessd(a,b)]lemmad6(a,b,t),[t:eq(a,b)]symeq(a,b,t)):moreq(b,a)
+c@[e:eq(a,b)][m:moreq(a,c)]
+eqmoreq1:=th9"l.or"(mored(a,c),eq(a,c),mored(b,c),eq(b,c),m,[t:mored(a,c)]eqmored1(a,b,c,e,t),[t:eq(a,c)]treq1(b,c,a,e,t)):moreq(b,c)
+e@[m:moreq(c,a)]
+eqmoreq2:=th9"l.or"(mored(c,a),eq(c,a),mored(c,b),eq(c,b),m,[t:mored(c,a)]eqmored2(a,b,c,e,t),[t:eq(c,a)]treq(c,a,b,t,e)):moreq(c,b)
+e@[l:lesseq(a,c)]
+eqlesseq1:=satzd168a(c,b,eqmoreq2(a,b,c,e,satzd168b(a,c,l))):lesseq(b,c)
+e@[l:lesseq(c,a)]
+eqlesseq2:=satzd168a(b,c,eqmoreq1(a,b,c,e,satzd168b(c,a,l))):lesseq(c,b)
+d@[e:eq(a,b)][f:eq(c,d)][m:moreq(a,c)]
+eqmoreq12:=eqmoreq1(a,b,d,e,eqmoreq2(c,d,a,f,m)):moreq(b,d)
+f@[l:lesseq(a,c)]
+eqlesseq12:=eqlesseq1(a,b,d,e,eqlesseq2(c,d,a,f,l)):lesseq(b,d)
+b@[m:mored(a,b)]
+moreqi1:=ori1(mored(a,b),eq(a,b),m):moreq(a,b)
+b@[l:lessd(a,b)]
+lesseqi1:=ori1(lessd(a,b),eq(a,b),l):lesseq(a,b)
+b@[e:eq(a,b)]
+moreqi2:=ori2(mored(a,b),eq(a,b),e):moreq(a,b)
+lesseqi2:=ori2(lessd(a,b),eq(a,b),e):lesseq(a,b)
+b@[m:moreq(a,b)]
+satzd167c:=th7"l.ec3"(eq(a,b),mored(a,b),lessd(a,b),satzd167b,comor(mored(a,b),eq(a,b),m)):not(lessd(a,b))
+b@[l:lesseq(a,b)]
+satzd167d:=th9"l.ec3"(eq(a,b),mored(a,b),lessd(a,b),satzd167b,l):not(mored(a,b))
+b@[n:not(mored(a,b))]
+satzd167e:=th2"l.or3"(eq(a,b),mored(a,b),lessd(a,b),satzd167a,n):lesseq(a,b)
+b@[n:not(lessd(a,b))]
+satzd167f:=comor(eq(a,b),mored(a,b),th3"l.or3"(eq(a,b),mored(a,b),lessd(a,b),satzd167a,n)):moreq(a,b)
+b@[m:mored(a,b)]
+satzd167g:=th3"l.imp"(lesseq(a,b),not(mored(a,b)),weli(mored(a,b),m),[t:lesseq(a,b)]satzd167d(t)):not(lesseq(a,b))
+b@[l:lessd(a,b)]
+satzd167h:=th3"l.imp"(moreq(a,b),not(lessd(a,b)),weli(lessd(a,b),l),[t:moreq(a,b)]satzd167c(t)):not(moreq(a,b))
+b@[n:not(moreq(a,b))]
+satzd167j:=or3e3(eq(a,b),mored(a,b),lessd(a,b),satzd167a,th5"l.or"(mored(a,b),eq(a,b),n),th4"l.or"(mored(a,b),eq(a,b),n)):lessd(a,b)
+b@[n:not(lesseq(a,b))]
+satzd167k:=or3e2(eq(a,b),mored(a,b),lessd(a,b),satzd167a,th4"l.or"(lessd(a,b),eq(a,b),n),th5"l.or"(lessd(a,b),eq(a,b),n)):mored(a,b)
+b@[z:zero(b)][p:posd(a)]
+satzd169a:=ismore12(pl(1a,1b),pl(1a,2b),pl(2a,1b),pl(1b,2a),ispl2(1b,2b,1a,z),compl(2a,1b),satz135a(1a,2a,1b,p)):mored(a,b)
+z@[m:mored(a,b)]
+satzd169b:=satz136d(1a,2a,2b,ismore12(pl(1a,2b),pl(2b,1a),pl(1b,2a),pl(2b,2a),compl(1a,2b),ispl1(1b,2b,2a,z),m)):posd(a)
+z@[n:negd(a)]
+satzd169c:=isless12(pl(1a,1b),pl(1a,2b),pl(2a,1b),pl(1b,2a),ispl2(1b,2b,1a,z),compl(2a,1b),satz135c(1a,2a,1b,n)):lessd(a,b)
+z@[l:lessd(a,b)]
+satzd169d:=satz136f(1a,2a,2b,isless12(pl(1a,2b),pl(2b,1a),pl(1b,2a),pl(2b,2a),compl(1a,2b),ispl1(1b,2b,2a,z),l)):negd(a)
++2d170
+z@[p:posd(a)]
+t1:=moreqi1(absd(a),b,satzd169a(absd(a),b,z,satzd166a(a,p))):moreq(absd(a),b)
+z@[y:zero(a)]
+t2:=moreqi2(absd(a),b,treq(absd(a),a,b,absnnd(a,0notnd(a,y)),zeroeq(a,b,y,z))):moreq(absd(a),b)
+z@[n:negd(a)]
+t3:=moreqi1(absd(a),b,satzd169a(absd(a),b,z,satzd166b(a,n))):moreq(absd(a),b)
+-2d170
+z@satzd170:=rappd(a,moreq(absd(a),b),[t:posd(a)]t1".2d170"(t),[t:zero(a)]t2".2d170"(t),[t:negd(a)]t3".2d170"(t)):moreq(absd(a),b)
+c@[l:lessd(a,b)][k:lessd(b,c)]
++2d171
+t1:=satz137a(pl(1a,2b),pl(1b,2a),pl(1b,2c),pl(1c,2b),l,k):less(pl(pl(1a,2b),pl(1b,2c)),pl(pl(1b,2a),pl(1c,2b)))
+t2:=isless12(pl(pl(1a,2b),pl(1b,2c)),pl(pl(1a,2c),pl(1b,2b)),pl(pl(1b,2a),pl(1c,2b)),pl(pl(1c,2a),pl(1b,2b)),4pl24(1a,2b,1b,2c),tris(cut,pl(pl(1b,2a),pl(1c,2b)),pl(pl(1b,2b),pl(1c,2a)),pl(pl(1c,2a),pl(1b,2b)),4pl24(1b,2a,1c,2b),compl(pl(1b,2b),pl(1c,2a))),t1):less(pl(pl(1a,2c),pl(1b,2b)),pl(pl(1c,2a),pl(1b,2b)))
+-2d171
+satzd171:=satz136c(pl(1a,2c),pl(1c,2a),pl(1b,2b),t2".2d171"):lessd(a,c)
+trlessd:=satzd171:lessd(a,c)
+c@[m:mored(a,b)][n:mored(b,c)]
+trmored:=lemmad6(c,a,trlessd(c,b,a,lemmad5(b,c,n),lemmad5(a,b,m))):mored(a,c)
+c@[l:lesseq(a,b)][k:lessd(b,c)]
+satzd172a:=orapp(lessd(a,b),eq(a,b),lessd(a,c),l,[t:lessd(a,b)]trlessd(t,k),[t:eq(a,b)]eqlessd1(b,a,c,symeq(a,b,t),k)):lessd(a,c)
+c@[l:lessd(a,b)][k:lesseq(b,c)]
+satzd172b:=orapp(lessd(b,c),eq(b,c),lessd(a,c),k,[t:lessd(b,c)]trlessd(l,t),[t:eq(b,c)]eqlessd2(b,c,a,t,l)):lessd(a,c)
+c@[m:moreq(a,b)][n:mored(b,c)]
+satzd172c:=lemmad6(c,a,satzd172b(c,b,a,lemmad5(b,c,n),satzd168a(a,b,m))):mored(a,c)
+c@[m:mored(a,b)][n:moreq(b,c)]
+satzd172d:=lemmad6(c,a,satzd172a(c,b,a,satzd168a(b,c,n),lemmad5(a,b,m))):mored(a,c)
+c@[l:lesseq(a,b)][k:lesseq(b,c)]
++2d173
+[j:lessd(a,b)]
+t1:=lesseqi1(a,c,satzd172b(j,k)):lesseq(a,c)
+k@[e:eq(a,b)]
+t2:=eqlesseq1(b,a,c,symeq(a,b,e),k):lesseq(a,c)
+-2d173
+satzd173:=orapp(lessd(a,b),eq(a,b),lesseq(a,c),l,[t:lessd(a,b)]t1".2d173"(t),[t:eq(a,b)]t2".2d173"(t)):lesseq(a,c)
+trlesseq:=satzd173:lesseq(a,c)
+c@[m:moreq(a,b)][n:moreq(b,c)]
+trmoreq:=satzd168b(c,a,trlesseq(c,b,a,satzd168a(b,c,n),satzd168a(a,b,m))):moreq(a,c)
+a@ratd:=[t:not(zero(a))]ratrp(rpofpd(absd(a),satzd166e(a,t))):'prop'
+irratd:=not(ratd(a)):'prop'
+b@[e:eq(a,b)][r:ratd(a)]
++*iv2d
+r@[n:not(zero(b))]
+t6:=th3"l.imp"(zero(a),zero(b),n,[t:zero(a)]eqzero(a,b,e,t)):not(zero(a))
+t7:=eqpderp(absd(a),satzd166e(a,t6),absd(b),satzd166e(b,n),eqabsd(a,b,e)):is(rpofpd(absd(a),satzd166e(a,t6)),rpofpd(absd(b),satzd166e(b,n)))
+t8:=isp(cut,[t:cut]ratrp(t),rpofpd(absd(a),satzd166e(a,t6)),rpofpd(absd(b),satzd166e(b,n)),<t6>r,t7):ratrp(rpofpd(absd(b),satzd166e(b,n)))
+-iv2d
+r@eqratd:=[t:not(zero(b))]t8".iv2d"(t):ratd(b)
+e@[i:irratd(a)]
+eqirratd:=th3"l.imp"(ratd(b),ratd(a),i,[t:ratd(b)]eqratd(b,a,symeq(a,b,e),t)):irratd(b)
+a@[z:zero(a)]
+ratdi0:=th2"l.r.imp"(not(zero(a)),[t:not(zero(a))]ratrp(rpofpd(absd(a),satzd166e(a,t))),weli(zero(a),z)):ratd(a)
+@[r:cut][i:irratrp(r)][x0:rat]
++*iv2d
+x0@[s:ratrp(pl(r,rpofrt(x0)))][y0:rat][j:is(pl(r,rpofrt(x0)),rpofrt(y0))]
+t9:=tris(cut,pl(rpofrt(x0),r),pl(r,rpofrt(x0)),rpofrt(y0),compl(rpofrt(x0),r),j):is(pl(rpofrt(x0),r),rpofrt(y0))
+t10:=ismore1(pl(rpofrt(x0),r),rpofrt(y0),rpofrt(x0),t9,satz133(rpofrt(x0),r)):more(rpofrt(y0),rpofrt(x0))
+t11:=satz154d(y0,x0,t10):more"rt"(y0,x0)
+t12:=satz155b(y0,x0,t11):is(rpofrt(mn"rt"(y0,x0,t11)),mn(rpofrt(y0),rpofrt(x0),satz154a(y0,x0,t11)))
+t13:=satz140g(rpofrt(y0),rpofrt(x0),r,satz154a(y0,x0,t11),t9):is(r,mn(rpofrt(y0),rpofrt(x0),satz154a(y0,x0,t11)))
+t14:=tris2(cut,r,rpofrt(mn"rt"(y0,x0,t11)),mn(rpofrt(y0),rpofrt(x0),satz154a(y0,x0,t11)),t13,t12):is(r,rpofrt(mn"rt"(y0,x0,t11)))
+t15:=somei(rat,[x:rat]is(r,rpofrt(x)),mn"rt"(y0,x0,t11),t14):ratrp(r)
+s@t16:=someapp(rat,[x:rat]is(pl(r,rpofrt(x0)),rpofrt(x)),s,con,[x:rat][t:is(pl(r,rpofrt(x0)),rpofrt(x))]<t15(x,t)>i):con
+-iv2d
+x0@remark1:=[t:ratrp(pl(r,rpofrt(x0)))]t16".iv2d"(t):irratrp(pl(r,rpofrt(x0)))
++*iv2d
+r@rp:=pdofrp(r):dif
+rn:=ndofrp(r):dif
+t17:=posdirp(r):posd(rp)
+t18:=pnot0d(rp,t17):not(zero(rp))
+t19:=nnot0d(rn,negdirp(r)):not(zero(rn))
+[n:not(zero(rp))]
+t20:=tris2(cut,r,rpofpd(absd(rp),satzd166e(rp,n)),rpofpd(rp,t17),isrppd1(r),eqpderp(absd(rp),satzd166e(rp,n),rp,t17,absnnd(rp,pnotnd(rp,t17)))):is(r,rpofpd(absd(rp),satzd166e(rp,n)))
+r@t21:=treq(absd(rn),df(std(rn),stm(rn)),rp,absnd(rn,negdirp(r)),eqsmsd(std(rn),stm(rn),pl(r,1rp),1rp,stdis(1rp,pl(r,1rp)),stmis(1rp,pl(r,1rp)))):eq(absd(rn),rp)
+[n:not(zero(rn))]
+t22:=tris2(cut,r,rpofpd(absd(rn),satzd166e(rn,n)),rpofpd(rp,t17),isrppd1(r),eqpderp(absd(rn),satzd166e(rn,n),rp,t17,t21)):is(r,rpofpd(absd(rn),satzd166e(rn,n)))
+r@[s:cut][i:is(r,s)][rr:ratrp(r)]
+t23:=isp(cut,[x:cut]ratrp(x),r,s,rr,i):ratrp(s)
+i@[rs:ratrp(s)]
+t24:=isp1(cut,[x:cut]ratrp(x),s,r,rs,i):ratrp(r)
+-iv2d
+r@[rr:ratrp(r)]
+remark2a:=[t:not(zero(pdofrp(r)))]t23".iv2d"(rpofpd(absd(pdofrp(r)),satzd166e(pdofrp(r),t)),t20".iv2d"(t),rr):ratd(pdofrp(r))
+remark2b:=t17".iv2d":posd(pdofrp(r))
+remark3a:=[t:not(zero(ndofrp(r)))]t23".iv2d"(rpofpd(absd(ndofrp(r)),satzd166e(ndofrp(r),t)),t22".iv2d"(t),rr):ratd(ndofrp(r))
+remark3b:=negdirp(r):negd(ndofrp(r))
+r@[i:irratrp(r)]
+remark4a:=th3"l.imp"(ratd(pdofrp(r)),ratrp(r),i,[t:ratd(pdofrp(r))]t24".iv2d"(rpofpd(absd(pdofrp(r)),satzd166e(pdofrp(r),t18".iv2d")),t20".iv2d"(t18".iv2d"),<t18".iv2d">t)):irratd(pdofrp(r))
+remark4b:=t17".iv2d":posd(pdofrp(r))
+remark5a:=th3"l.imp"(ratd(ndofrp(r)),ratrp(r),i,[t:ratd(ndofrp(r))]t24".iv2d"(rpofpd(absd(ndofrp(r)),satzd166e(ndofrp(r),t19".iv2d")),t22".iv2d"(t19".iv2d"),<t19".iv2d">t)):irratd(ndofrp(r))
+remark5b:=negdirp(r):negd(ndofrp(r))
+a@natd:=and(posd(a),[t:posd(a)]natrp(rpofpd(a,t))):'prop'
+[n:natd(a)]
+natposd:=ande1(posd(a),[t:posd(a)]natrp(rpofpd(a,t)),n):posd(a)
+natderp:=ande2"l.r"(posd(a),[t:posd(a)]natrp(rpofpd(a,t)),n):natrp(rpofpd(a,natposd(a,n)))
+b@[e:eq(a,b)][n:natd(a)]
++*iv2d
+n"rp"@t25:=eqposd(a,b,e,natposd(a,n)):posd(b)
+[p:posd(b)]
+t26:=eqpderp(a,natposd(a,n),b,p,e):is(rpofpd(a,natposd(a,n)),rpofpd(b,p))
+t27:=isp(cut,[t:cut]natrp(t),rpofpd(a,natposd(a,n)),rpofpd(b,p),natderp(a,n),t26):natrp(rpofpd(b,p))
+-iv2d
+n@eqnatd:=andi(posd(b),[t:posd(b)]natrp(rpofpd(b,t)),t25".iv2d",[t:posd(b)]t27".iv2d"(t)):natd(b)
+@[x:nat]
+pdofnt:=pdofrp(rpofnt(x)):dif
++*iv2d
+x@t28:=posdirp(rpofnt(x)):posd(pdofnt(x))
+[p:posd(pdofnt(x))]
+t29:=isrppd1(rpofnt(x)):is(rpofnt(x),rpofpd(pdofnt(x),t28))
+t30:=eqpderp(pdofnt(x),t28,pdofnt(x),p,refeq(pdofnt(x))):is(rpofpd(pdofnt(x),t28),rpofpd(pdofnt(x),p))
+t31:=tris(cut,rpofnt(x),rpofpd(pdofnt(x),t28),rpofpd(pdofnt(x),p),t29,t30):is(rpofnt(x),rpofpd(pdofnt(x),p))
+t32:=isp(cut,[t:cut]natrp(t),rpofnt(x),rpofpd(pdofnt(x),p),natrpi(x),t31):natrp(rpofpd(pdofnt(x),p))
+-iv2d
+x@natdi:=andi(posd(pdofnt(x)),[t:posd(pdofnt(x))]natrp(rpofpd(pdofnt(x),t)),t28".iv2d",[t:posd(pdofnt(x))]t32".iv2d"(t)):natd(pdofnt(x))
+a@intd:=or(zero(a),natd(absd(a))):'prop'
+b@[e:eq(a,b)][i:intd(a)]
++*iv2d
+i"rp"@[z:zero(a)]
+t33:=eqzero(a,b,e,z):zero(b)
+i"rp"@[n:natd(absd(a))]
+t34:=eqnatd(absd(a),absd(b),eqabsd(a,b,e),n):natd(absd(b))
+-iv2d
+i@eqintd:=th9"l.or"(zero(a),natd(absd(a)),zero(b),natd(absd(b)),i,[t:zero(a)]t33".iv2d"(t),[t:natd(absd(a))]t34".iv2d"(t)):intd(b)
+a@[n:natd(a)]
++*iv2d
+n"rp"@t34a:=symeq(absd(a),a,absnnd(a,pnotnd(a,natposd(a,n)))):eq(a,absd(a))
+t35:=eqnatd(a,absd(a),t34a,n):natd(absd(a))
+-iv2d
+n@natintd:=ori2(zero(a),natd(absd(a)),t35".iv2d"):intd(a)
+a@[p:posd(a)][i:intd(a)]
++*iv2d
+i"rp"@t36:=ore2(zero(a),natd(absd(a)),i,pnot0d(a,p)):natd(absd(a))
+-iv2d
+i@posintnatd:=eqnatd(absd(a),a,absnnd(a,pnotnd(a,p)),t36".iv2d"):natd(a)
+a@[z:zero(a)]
+intdi0:=ori1(zero(a),natd(absd(a)),z):intd(a)
+r@[n:natrp(r)]
++*iv2d
+n"rp"@t37:=posdirp(r):posd(pdofrp(r))
+[p:posd(pdofrp(r))]
+t38:=tris(cut,r,rpofpd(pdofrp(r),t37),rpofpd(pdofrp(r),p),isrppd1(r),eqpderp(pdofrp(r),t37,pdofrp(r),p,refeq(pdofrp(r)))):is(r,rpofpd(pdofrp(r),p))
+t39:=isp(cut,[t:cut]natrp(t),r,rpofpd(pdofrp(r),p),n,t38):natrp(rpofpd(pdofrp(r),p))
+-iv2d
+n@remark6a:=andi(posd(pdofrp(r)),[t:posd(pdofrp(r))]natrp(rpofpd(pdofrp(r),t)),t37".iv2d",[t:posd(pdofrp(r))]t39".iv2d"(t)):natd(pdofrp(r))
+remark6:=natintd(pdofrp(r),remark6a):intd(pdofrp(r))
++*iv2d
+n"rp"@t40:=absdeql(1rp,pl(r,1rp),isless2(pl(1rp,r),pl(r,1rp),1rp,compl(1rp,r),satz133a(1rp,r))):eq(absd(ndofrp(r)),pdofrp(r))
+t41:=eqnatd(pdofrp(r),absd(ndofrp(r)),symeq(absd(ndofrp(r)),pdofrp(r),t40),remark6a):natd(absd(ndofrp(r)))
+-iv2d
+n@remark7:=ori2(zero(ndofrp(r)),natd(absd(ndofrp(r))),t41".iv2d"):intd(ndofrp(r))
+a@[i:intd(a)]
++2d174
+[n:not(zero(a))]
+t1:=ore2(zero(a),natd(absd(a)),i,n):natd(absd(a))
+t2:=ande2(posd(absd(a)),[t:posd(absd(a))]natrp(rpofpd(absd(a),t)),t1):[t:posd(absd(a))]natrp(rpofpd(absd(a),t))
+t3:=lemmaiii5(rpofpd(absd(a),satzd166e(a,n)),<satzd166e(a,n)>t2):ratrp(rpofpd(absd(a),satzd166e(a,n)))
+-2d174
+satzd174:=[t:not(zero(a))]t3".2d174"(t):ratd(a)
+b@pd:=df(pl(1a,1b),pl(2a,2b)):dif
+b2@pd12:=issmsd(pl(stm(df(a1,a2)),stm(df(b1,b2))),pl(std(df(a1,a2)),std(df(b1,b2))),pl(a1,b1),pl(a2,b2),ispl12(stm(df(a1,a2)),a1,stm(df(b1,b2)),b1,stmis(a1,a2),stmis(b1,b2)),ispl12(std(df(a1,a2)),a2,std(df(b1,b2)),b2,stdis(a1,a2),stdis(b1,b2))):is"e"(dif,pd(df(a1,a2),df(b1,b2)),df(pl(a1,b1),pl(a2,b2)))
+r2@pd1:=issmsd(pl(1a,stm(df(r1,r2))),pl(2a,std(df(r1,r2))),pl(1a,r1),pl(2a,r2),ispl2(stm(df(r1,r2)),r1,1a,stmis(r1,r2)),ispl2(std(df(r1,r2)),r2,2a,stdis(r1,r2))):is"e"(dif,pd(a,df(r1,r2)),df(pl(1a,r1),pl(2a,r2)))
+pd2:=issmsd(pl(stm(df(r1,r2)),1a),pl(std(df(r1,r2)),2a),pl(r1,1a),pl(r2,2a),ispl1(stm(df(r1,r2)),r1,1a,stmis(r1,r2)),ispl1(std(df(r1,r2)),r2,2a,stdis(r1,r2))):is"e"(dif,pd(df(r1,r2),a),df(pl(r1,1a),pl(r2,2a)))
+b2@pdeq12a:=refeq1(pd(df(a1,a2),df(b1,b2)),df(pl(a1,b1),pl(a2,b2)),pd12):eq(pd(df(a1,a2),df(b1,b2)),df(pl(a1,b1),pl(a2,b2)))
+pdeq12b:=refeq2(pd(df(a1,a2),df(b1,b2)),df(pl(a1,b1),pl(a2,b2)),pd12):eq(df(pl(a1,b1),pl(a2,b2)),pd(df(a1,a2),df(b1,b2)))
+r2@pdeq1a:=refeq1(pd(a,df(r1,r2)),df(pl(1a,r1),pl(2a,r2)),pd1):eq(pd(a,df(r1,r2)),df(pl(1a,r1),pl(2a,r2)))
+pdeq1b:=refeq2(pd(a,df(r1,r2)),df(pl(1a,r1),pl(2a,r2)),pd1):eq(df(pl(1a,r1),pl(2a,r2)),pd(a,df(r1,r2)))
+pdeq2a:=refeq1(pd(df(r1,r2),a),df(pl(r1,1a),pl(r2,2a)),pd2):eq(pd(df(r1,r2),a),df(pl(r1,1a),pl(r2,2a)))
+pdeq2b:=refeq2(pd(df(r1,r2),a),df(pl(r1,1a),pl(r2,2a)),pd2):eq(df(pl(r1,1a),pl(r2,2a)),pd(df(r1,r2),a))
+b@satzd175:=eqsmsd(pl(1a,1b),pl(2a,2b),pl(1b,1a),pl(2b,2a),compl(1a,1b),compl(2a,2b)):eq(pd(a,b),pd(b,a))
+compd:=satzd175:eq(pd(a,b),pd(b,a))
+c@[e:eq(a,b)]
++iv3d
+t1:=tr3is(cut,pl(pl(1a,1c),pl(2b,2c)),pl(pl(1a,2b),pl(1c,2c)),pl(pl(1b,2a),pl(1c,2c)),pl(pl(1b,1c),pl(2a,2c)),4pl23(1a,1c,2b,2c),ispl1(pl(1a,2b),pl(1b,2a),pl(1c,2c),e),4pl23(1b,2a,1c,2c)):is(pl(pl(1a,1c),pl(2b,2c)),pl(pl(1b,1c),pl(2a,2c)))
+-iv3d
+eqpd1:=eqi12(pl(1a,1c),pl(2a,2c),pl(1b,1c),pl(2b,2c),t1".iv3d"):eq(pd(a,c),pd(b,c))
+eqpd2:=tr3eq(pd(c,a),pd(a,c),pd(b,c),pd(c,b),compd(c,a),eqpd1,compd(b,c)):eq(pd(c,a),pd(c,b))
+d@[e:eq(a,b)][f:eq(c,d)]
+eqpd12:=treq(pd(a,c),pd(b,c),pd(b,d),eqpd1(a,b,c,e),eqpd2(c,d,b,f)):eq(pd(a,c),pd(b,d))
+b@[z:zero(a)]
++*iv3d
+z@t2:=tr4is(cut,pl(pl(1a,1b),2b),pl(1a,pl(1b,2b)),pl(2a,pl(2b,1b)),pl(pl(2a,2b),1b),pl(1b,pl(2a,2b)),asspl1(1a,1b,2b),ispl12(1a,2a,pl(1b,2b),pl(2b,1b),z,compl(1b,2b)),asspl2(2a,2b,1b),compl(pl(2a,2b),1b)):is(pl(pl(1a,1b),2b),pl(1b,pl(2a,2b)))
+-iv3d
+z@pd01:=eqi2(b,pl(1a,1b),pl(2a,2b),t2".iv3d"):eq(pd(a,b),b)
+b@[z:zero(b)]
+pd02:=treq(pd(a,b),pd(b,a),a,compd(a,b),pd01(b,a,z)):eq(pd(a,b),a)
+b@[p:posd(a)][q:posd(b)]
+ppd:=posdi(pl(1a,1b),pl(2a,2b),satz137(1a,2a,1b,2b,p,q)):posd(pd(a,b))
+b@[n:negd(a)][o:negd(b)]
+npd:=negdi(pl(1a,1b),pl(2a,2b),satz137a(1a,2a,1b,2b,n,o)):negd(pd(a,b))
+a@m0d:=df(2a,1a):dif
+a2@m0deqa:=eqsmsd(std(df(a1,a2)),stm(df(a1,a2)),a2,a1,stdis(a1,a2),stmis(a1,a2)):eq(m0d(df(a1,a2)),df(a2,a1))
+m0deqb:=symeq(m0d(df(a1,a2)),df(a2,a1),m0deqa):eq(df(a2,a1),m0d(df(a1,a2)))
+b@[e:eq(a,b)]
++*iv3d
+e@t3:=tr3is(cut,pl(2a,1b),pl(1b,2a),pl(1a,2b),pl(2b,1a),compl(2a,1b),symeq(a,b,e),compl(1a,2b)):is(pl(2a,1b),pl(2b,1a))
+-iv3d
+e@eqm0d:=eqi12(2a,1a,2b,1b,t3".iv3d"):eq(m0d(a),m0d(b))
+a@[p:posd(a)]
+satzd176a:=negdi(2a,1a,satz121(1a,2a,p)):negd(m0d(a))
+a@[z:zero(a)]
+satzd176b:=zeroi(2a,1a,symis(cut,1a,2a,z)):zero(m0d(a))
+a@[n:negd(a)]
+satzd176c:=posdi(2a,1a,satz122(1a,2a,n)):posd(m0d(a))
+a@[n:negd(m0d(a))]
+satzd176d:=satz122(2a,1a,isless12(stm(m0d(a)),2a,std(m0d(a)),1a,stmis(2a,1a),stdis(2a,1a),n)):posd(a)
+a@[z:zero(m0d(a))]
+satzd176e:=symis(cut,2a,1a,tr3is(cut,2a,stm(df(2a,1a)),std(df(2a,1a)),1a,isstm(2a,1a),z,stdis(2a,1a))):zero(a)
+a@[p:posd(m0d(a))]
+satzd176f:=satz121(2a,1a,ismore12(stm(m0d(a)),2a,std(m0d(a)),1a,stmis(2a,1a),stdis(2a,1a),p)):negd(a)
+a@[z:zero(a)]
+m0d0:=zeroeq(m0d(a),a,satzd176b(a,z),z):eq(m0d(a),a)
++3d177
+a@t1:=tris(dif,m0d(m0d(a)),df(1a,2a),a,issmsd(std(m0d(a)),stm(m0d(a)),1a,2a,stdis(2a,1a),stmis(2a,1a)),dfis(a)):is"e"(dif,m0d(m0d(a)),a)
+-3d177
+a@satzd177:=refeq1(m0d(m0d(a)),a,t1".3d177"):eq(m0d(m0d(a)),a)
+satzd177a:=symeq(m0d(m0d(a)),a,satzd177):eq(a,m0d(m0d(a)))
+b@[e:eq(a,m0d(b))]
+satzd177b:=treq(m0d(a),m0d(m0d(b)),b,eqm0d(a,m0d(b),e),satzd177(b)):eq(m0d(a),b)
+satzd177c:=symeq(m0d(a),b,satzd177b):eq(b,m0d(a))
+b@[e:eq(m0d(a),b)]
+satzd177d:=satzd177c(b,a,symeq(m0d(a),b,e)):eq(a,m0d(b))
+satzd177e:=symeq(a,m0d(b),satzd177d):eq(m0d(b),a)
++3d178
+a@[p:posd(a)]
+t1:=tr3eq(absd(m0d(a)),m0d(m0d(a)),a,absd(a),absnd(m0d(a),satzd176a(a,p)),satzd177(a),symeq(absd(a),a,absnnd(a,pnotnd(a,p)))):eq(absd(m0d(a)),absd(a))
+a@[z:zero(a)]
+t2:=tr3eq(absd(m0d(a)),m0d(a),a,absd(a),absnnd(m0d(a),0notnd(m0d(a),satzd176b(a,z))),m0d0(a,z),symeq(absd(a),a,absnnd(a,0notnd(a,z)))):eq(absd(m0d(a)),absd(a))
+a@[n:negd(a)]
+t3:=treq(absd(m0d(a)),m0d(a),absd(a),absnnd(m0d(a),pnotnd(m0d(a),satzd176c(a,n))),symeq(absd(a),m0d(a),absnd(a,n))):eq(absd(m0d(a)),absd(a))
+-3d178
+a@satzd178:=rappd(a,eq(absd(m0d(a)),absd(a)),[t:posd(a)]t1".3d178"(t),[t:zero(a)]t2".3d178"(t),[t:negd(a)]t3".3d178"(t)):eq(absd(m0d(a)),absd(a))
+satzd178a:=symeq(absd(m0d(a)),absd(a),satzd178):eq(absd(a),absd(m0d(a)))
++3d179
+t1:=pdeq1b(a,2a,1a):eq(df(pl(1a,2a),pl(2a,1a)),pd(a,m0d(a)))
+t2:=zeroi(pl(1a,2a),pl(2a,1a),compl(1a,2a)):zero(df(pl(1a,2a),pl(2a,1a)))
+-3d179
+satzd179:=eqzero(df(pl(1a,2a),pl(2a,1a)),pd(a,m0d(a)),t1".3d179",t2".3d179"):zero(pd(a,m0d(a)))
+satzd179a:=eqzero(pd(a,m0d(a)),pd(m0d(a),a),compd(a,m0d(a)),satzd179):zero(pd(m0d(a),a))
+b@satzd180:=treq(m0d(pd(a,b)),df(pl(2a,2b),pl(1a,1b)),pd(m0d(a),m0d(b)),m0deqa(pl(1a,1b),pl(2a,2b)),pdeq12b(2a,1a,2b,1b)):eq(m0d(pd(a,b)),pd(m0d(a),m0d(b)))
+satzd180a:=symeq(m0d(pd(a,b)),pd(m0d(a),m0d(b)),satzd180):eq(pd(m0d(a),m0d(b)),m0d(pd(a,b)))
+md:=pd(a,m0d(b)):dif
+b2@mdeq12a:=treq(md(df(a1,a2),df(b1,b2)),pd(df(a1,a2),df(b2,b1)),df(pl(a1,b2),pl(a2,b1)),eqpd2(m0d(df(b1,b2)),df(b2,b1),df(a1,a2),m0deqa(b1,b2)),pdeq12a(a1,a2,b2,b1)):eq(md(df(a1,a2),df(b1,b2)),df(pl(a1,b2),pl(a2,b1)))
+mdeq12b:=symeq(md(df(a1,a2),df(b1,b2)),df(pl(a1,b2),pl(a2,b1)),mdeq12a):eq(df(pl(a1,b2),pl(a2,b1)),md(df(a1,a2),df(b1,b2)))
+r2@mdeq1a:=treq(md(a,df(r1,r2)),pd(a,df(r2,r1)),df(pl(1a,r2),pl(2a,r1)),eqpd2(m0d(df(r1,r2)),df(r2,r1),a,m0deqa(r1,r2)),pdeq1a(a,r2,r1)):eq(md(a,df(r1,r2)),df(pl(1a,r2),pl(2a,r1)))
+mdeq1b:=symeq(md(a,df(r1,r2)),df(pl(1a,r2),pl(2a,r1)),mdeq1a):eq(df(pl(1a,r2),pl(2a,r1)),md(a,df(r1,r2)))
+mdeq2a:=pdeq12a(r1,r2,2a,1a):eq(md(df(r1,r2),a),df(pl(r1,2a),pl(r2,1a)))
+mdeq2b:=pdeq12b(r1,r2,2a,1a):eq(df(pl(r1,2a),pl(r2,1a)),md(df(r1,r2),a))
+c@[e:eq(a,b)]
+eqmd1:=eqpd1(a,b,m0d(c),e):eq(md(a,c),md(b,c))
+eqmd2:=eqpd2(m0d(a),m0d(b),c,eqm0d(a,b,e)):eq(md(c,a),md(c,b))
+d@[e:eq(a,b)][f:eq(c,d)]
+eqmd12:=treq(md(a,c),md(b,c),md(b,d),eqmd1(a,b,c,e),eqmd2(c,d,b,f)):eq(md(a,c),md(b,d))
+b@satzd181:=tr3eq(m0d(md(a,b)),pd(m0d(a),m0d(m0d(b))),pd(m0d(a),b),md(b,a),satzd180(a,m0d(b)),eqpd2(m0d(m0d(b)),b,m0d(a),satzd177(b)),compd(m0d(a),b)):eq(m0d(md(a,b)),md(b,a))
+satzd181a:=symeq(m0d(md(b,a)),md(a,b),satzd181(b,a)):eq(md(a,b),m0d(md(b,a)))
++3d182
+t1:=treq(md(a,b),df(pl(1a,2b),pl(2a,1b)),df(pl(1a,2b),pl(1b,2a)),pdeq1a(a,2b,1b),eqsd(pl(1a,2b),pl(2a,1b),pl(1b,2a),compl(2a,1b))):eq(md(a,b),df(pl(1a,2b),pl(1b,2a)))
+t2:=symeq(md(a,b),df(pl(1a,2b),pl(1b,2a)),t1):eq(df(pl(1a,2b),pl(1b,2a)),md(a,b))
+t3:=stmis(pl(1a,2b),pl(1b,2a)):is(stm(df(pl(1a,2b),pl(1b,2a))),pl(1a,2b))
+t4:=stdis(pl(1a,2b),pl(1b,2a)):is(std(df(pl(1a,2b),pl(1b,2a))),pl(1b,2a))
+-3d182
+[p:posd(md(a,b))]
++*3d182
+p@t5:=eqposd(md(a,b),df(pl(1a,2b),pl(1b,2a)),t1,p):posd(df(pl(1a,2b),pl(1b,2a)))
+-3d182
+p@satzd182a:=ismore12(stm(df(pl(1a,2b),pl(1b,2a))),pl(1a,2b),std(df(pl(1a,2b),pl(1b,2a))),pl(1b,2a),t3".3d182",t4".3d182",t5".3d182"):mored(a,b)
+b@[z:zero(md(a,b))]
++*3d182
+z@t6:=eqzero(md(a,b),df(pl(1a,2b),pl(1b,2a)),t1,z):zero(df(pl(1a,2b),pl(1b,2a)))
+-3d182
+z@satzd182b:=tr3is(cut,pl(1a,2b),stm(df(pl(1a,2b),pl(1b,2a))),std(df(pl(1a,2b),pl(1b,2a))),pl(1b,2a),isstm(pl(1a,2b),pl(1b,2a)),t6".3d182",t4".3d182"):eq(a,b)
+b@[n:negd(md(a,b))]
++*3d182
+n@t7:=eqnegd(md(a,b),df(pl(1a,2b),pl(1b,2a)),t1,n):negd(df(pl(1a,2b),pl(1b,2a)))
+-3d182
+n@satzd182c:=isless12(stm(df(pl(1a,2b),pl(1b,2a))),pl(1a,2b),std(df(pl(1a,2b),pl(1b,2a))),pl(1b,2a),t3".3d182",t4".3d182",t7".3d182"):lessd(a,b)
+b@[m:mored(a,b)]
++*3d182
+m@t8:=posdi(pl(1a,2b),pl(1b,2a),m):posd(df(pl(1a,2b),pl(1b,2a)))
+-3d182
+m@satzd182d:=eqposd(df(pl(1a,2b),pl(1b,2a)),md(a,b),t2".3d182",t8".3d182"):posd(md(a,b))
+b@[e:eq(a,b)]
++*3d182
+e@t9:=zeroi(pl(1a,2b),pl(1b,2a),e):zero(df(pl(1a,2b),pl(1b,2a)))
+-3d182
+e@satzd182e:=eqzero(df(pl(1a,2b),pl(1b,2a)),md(a,b),t2".3d182",t9".3d182"):zero(md(a,b))
+b@[l:lessd(a,b)]
++*3d182
+l@t10:=negdi(pl(1a,2b),pl(1b,2a),l):negd(df(pl(1a,2b),pl(1b,2a)))
+-3d182
+l@satzd182f:=eqnegd(df(pl(1a,2b),pl(1b,2a)),md(a,b),t2".3d182",t10".3d182"):negd(md(a,b))
++3d183
+b@t1:=tris(cut,pl(1a,2b),pl(2b,1a),pl(stm(m0d(b)),std(m0d(a))),compl(1a,2b),12issmsd(2b,1b,2a,1a)):is(pl(1a,2b),pl(stm(m0d(b)),std(m0d(a))))
+t2:=t1(b,a):is(pl(1b,2a),pl(stm(m0d(a)),std(m0d(b))))
+-3d183
+b@[m:mored(a,b)]
+satzd183a:=isless12(pl(1b,2a),pl(stm(m0d(a)),std(m0d(b))),pl(1a,2b),pl(stm(m0d(b)),std(m0d(a))),t2".3d183",t1".3d183",lemmad5(a,b,m)):lessd(m0d(a),m0d(b))
+b@[e:eq(a,b)]
+staz183b:=eqm0d(a,b,e):eq(m0d(a),m0d(b))
+b@[l:lessd(a,b)]
+satzd183c:=ismore12(pl(1b,2a),pl(stm(m0d(a)),std(m0d(b))),pl(1a,2b),pl(stm(m0d(b)),std(m0d(a))),t2".3d183",t1".3d183",lemmad6(a,b,l)):mored(m0d(a),m0d(b))
+b@[l:lessd(m0d(a),m0d(b))]
+satzd183d:=eqmored12(m0d(m0d(a)),a,m0d(m0d(b)),b,satzd177(a),satzd177(b),satzd183c(m0d(a),m0d(b),l)):mored(a,b)
+b@[e:eq(m0d(a),m0d(b))]
+satzd183e:=tr3eq(a,m0d(m0d(a)),m0d(m0d(b)),b,satzd177a(a),eqm0d(m0d(a),m0d(b),e),satzd177(b)):eq(a,b)
+b@[m:mored(m0d(a),m0d(b))]
+satzd183f:=eqlessd12(m0d(m0d(a)),a,m0d(m0d(b)),b,satzd177(a),satzd177(b),satzd183a(m0d(a),m0d(b),m)):lessd(a,b)
++3d184
+a@t1:=tr3eq(a,df(pl(1a,pl(1rp,1rp)),pl(2a,pl(1rp,1rp))),df(pl(pl(1a,1rp),1rp),pl(1rp,pl(2a,1rp))),md(pdofrp(1a),pdofrp(2a)),lemmad3(a,pl(1rp,1rp)),eqsmsd(pl(1a,pl(1rp,1rp)),pl(2a,pl(1rp,1rp)),pl(pl(1a,1rp),1rp),pl(1rp,pl(2a,1rp)),asspl2(1a,1rp,1rp),3pl12(2a,1rp,1rp)),mdeq12b(pl(1a,1rp),1rp,pl(2a,1rp),1rp)):eq(a,md(pdofrp(1a),pdofrp(2a)))
+t2:=and3i(posd(pdofrp(1a)),posd(pdofrp(2a)),eq(a,md(pdofrp(1a),pdofrp(2a))),posdirp(1a),posdirp(2a),t1):and3(posd(pdofrp(1a)),posd(pdofrp(2a)),eq(a,md(pdofrp(1a),pdofrp(2a))))
+t3:=somei(dif,[x:dif]and3(posd(pdofrp(1a)),posd(x),eq(a,md(pdofrp(1a),x))),pdofrp(2a),t2):some"l"(dif,[x:dif]and3(posd(pdofrp(1a)),posd(x),eq(a,md(pdofrp(1a),x))))
+-3d184
+a@satzd184:=somei(dif,[x:dif]some"l"(dif,[y:dif]and3(posd(x),posd(y),eq(a,md(x,y)))),pdofrp(1a),t3".3d184"):some"l"(dif,[x:dif]some"l"(dif,[y:dif]and3(posd(x),posd(y),eq(a,md(x,y)))))
+c@asspd1:=tr3eq(pd(pd(a,b),c),df(pl(pl(1a,1b),1c),pl(pl(2a,2b),2c)),df(pl(1a,pl(1b,1c)),pl(2a,pl(2b,2c))),pd(a,pd(b,c)),pdeq2a(c,pl(1a,1b),pl(2a,2b)),eqsmsd(pl(pl(1a,1b),1c),pl(pl(2a,2b),2c),pl(1a,pl(1b,1c)),pl(2a,pl(2b,2c)),asspl1(1a,1b,1c),asspl1(2a,2b,2c)),pdeq1b(a,pl(1b,1c),pl(2b,2c))):eq(pd(pd(a,b),c),pd(a,pd(b,c)))
+asspd2:=symeq(pd(pd(a,b),c),pd(a,pd(b,c)),asspd1):eq(pd(a,pd(b,c)),pd(pd(a,b),c))
+3pd23:=tr3eq(pd(pd(a,b),c),pd(a,pd(b,c)),pd(a,pd(c,b)),pd(pd(a,c),b),asspd1(a,b,c),eqpd2(pd(b,c),pd(c,b),a,compd(b,c)),asspd2(a,c,b)):eq(pd(pd(a,b),c),pd(pd(a,c),b))
+d@4pd23:=tr3eq(pd(pd(a,b),pd(c,d)),pd(pd(pd(a,b),c),d),pd(pd(pd(a,c),b),d),pd(pd(a,c),pd(b,d)),asspd2(pd(a,b),c,d),eqpd1(pd(pd(a,b),c),pd(pd(a,c),b),d,3pd23),asspd1(pd(a,c),b,d)):eq(pd(pd(a,b),pd(c,d)),pd(pd(a,c),pd(b,d)))
+b@pdmd:=treq(pd(md(a,b),b),pd(a,pd(m0d(b),b)),a,asspd1(a,m0d(b),b),pd02(a,pd(m0d(b),b),satzd179a(b))):eq(pd(md(a,b),b),a)
+mdpd:=treq(md(pd(a,b),b),pd(a,pd(b,m0d(b))),a,asspd1(a,b,m0d(b)),pd02(a,pd(b,m0d(b)),satzd179(b))):eq(md(pd(a,b),b),a)
+d@satzd185:=treq(pd(md(a,b),md(c,d)),pd(pd(a,c),pd(m0d(b),m0d(d))),md(pd(a,c),pd(b,d)),4pd23(a,m0d(b),c,m0d(d)),eqpd2(pd(m0d(b),m0d(d)),m0d(pd(b,d)),pd(a,c),satzd180a(b,d))):eq(pd(md(a,b),md(c,d)),md(pd(a,c),pd(b,d)))
+c@satzd186:=asspd1:eq(pd(pd(a,b),c),pd(a,pd(b,c)))
+b@satzd187a:=treq(pd(b,md(a,b)),pd(md(a,b),b),a,compd(b,md(a,b)),pdmd):eq(pd(b,md(a,b)),a)
+[x:dif][e:eq(pd(b,x),a)]
+satzd187c:=treq(md(a,b),md(pd(x,b),b),x,eqmd1(a,pd(x,b),b,treq1(a,pd(x,b),pd(b,x),e,compd(b,x))),mdpd(x,b)):eq(md(a,b),x)
+satzd187d:=symeq(md(a,b),x,satzd187c):eq(x,md(a,b))
+x@[e:eq(pd(x,b),a)]
+satzd187e:=satzd187c(treq(pd(b,x),pd(x,b),a,compd(b,x),e)):eq(md(a,b),x)
+satzd187f:=symeq(md(a,b),x,satzd187e):eq(x,md(a,b))
++3d188
+c@t1:=tr3eq(md(pd(a,c),pd(b,c)),pd(pd(a,c),pd(m0d(b),m0d(c))),pd(md(a,b),md(c,c)),md(a,b),eqpd2(m0d(pd(b,c)),pd(m0d(b),m0d(c)),pd(a,c),satzd180(b,c)),4pd23(a,c,m0d(b),m0d(c)),pd02(md(a,b),md(c,c),satzd179(c))):eq(md(pd(a,c),pd(b,c)),md(a,b))
+t2:=symeq(md(pd(a,c),pd(b,c)),md(a,b),t1):eq(md(a,b),md(pd(a,c),pd(b,c)))
+-3d188
+c@[m:mored(pd(a,c),pd(b,c))]
++*3d188
+m@t3:=eqposd(md(pd(a,c),pd(b,c)),md(a,b),t1,satzd182d(pd(a,c),pd(b,c),m)):posd(md(a,b))
+-3d188
+m@satzd188a:=satzd182a(a,b,t3".3d188"):mored(a,b)
+c@[e:eq(pd(a,c),pd(b,c))]
++*3d188
+e@t4:=eqzero(md(pd(a,c),pd(b,c)),md(a,b),t1,satzd182e(pd(a,c),pd(b,c),e)):zero(md(a,b))
+-3d188
+e@satzd188b:=satzd182b(a,b,t4".3d188"):eq(a,b)
+c@[l:lessd(pd(a,c),pd(b,c))]
++*3d188
+l@t5:=eqnegd(md(pd(a,c),pd(b,c)),md(a,b),t1,satzd182f(pd(a,c),pd(b,c),l)):negd(md(a,b))
+-3d188
+l@satzd188c:=satzd182c(a,b,t5".3d188"):lessd(a,b)
+c@[m:mored(a,b)]
++*3d188
+m@t6:=eqposd(md(a,b),md(pd(a,c),pd(b,c)),t2,satzd182d(a,b,m)):posd(md(pd(a,c),pd(b,c)))
+-3d188
+m@satzd188d:=satzd182a(pd(a,c),pd(b,c),t6".3d188"):mored(pd(a,c),pd(b,c))
+c@[e:eq(a,b)]
+satzd188e:=eqpd1(a,b,c,e):eq(pd(a,c),pd(b,c))
+c@[l:lessd(a,b)]
++*3d188
+l@t7:=eqnegd(md(a,b),md(pd(a,c),pd(b,c)),t2,satzd182f(a,b,l)):negd(md(pd(a,c),pd(b,c)))
+-3d188
+l@satzd188f:=satzd182c(pd(a,c),pd(b,c),t7".3d188"):lessd(pd(a,c),pd(b,c))
+c@[m:mored(pd(c,a),pd(c,b))]
+satzd188g:=satzd188a(eqmored12(pd(c,a),pd(a,c),pd(c,b),pd(b,c),compd(c,a),compd(c,b),m)):mored(a,b)
+c@[e:eq(pd(c,a),pd(c,b))]
+satzd188h:=satzd188b(tr3eq(pd(a,c),pd(c,a),pd(c,b),pd(b,c),compd(a,c),e,compd(c,b))):eq(a,b)
+[l:lessd(pd(c,a),pd(c,b))]
+satzd188j:=satzd188c(eqlessd12(pd(c,a),pd(a,c),pd(c,b),pd(b,c),compd(c,a),compd(c,b),l)):lessd(a,b)
+c@[m:mored(a,b)]
+satzd188k:=eqmored12(pd(a,c),pd(c,a),pd(b,c),pd(c,b),compd(a,c),compd(b,c),satzd188d(m)):mored(pd(c,a),pd(c,b))
+c@[e:eq(a,b)]
+satzd188l:=eqpd2(a,b,c,e):eq(pd(c,a),pd(c,b))
+c@[l:lessd(a,b)]
+satzd188m:=eqlessd12(pd(a,c),pd(c,a),pd(b,c),pd(c,b),compd(a,c),compd(b,c),satzd188f(l)):lessd(pd(c,a),pd(c,b))
+d@[e:eq(a,b)][m:mored(c,d)]
+satzd188n:=eqmored2(pd(a,d),pd(b,d),pd(a,c),eqpd1(a,b,d,e),satzd188k(c,d,a,m)):mored(pd(a,c),pd(b,d))
+satzd188o:=eqmored12(pd(a,c),pd(c,a),pd(b,d),pd(d,b),compd(a,c),compd(b,d),satzd188n):mored(pd(c,a),pd(d,b))
+e@[l:lessd(c,d)]
+satzd188p:=eqlessd2(pd(a,d),pd(b,d),pd(a,c),eqpd1(a,b,d,e),satzd188m(c,d,a,l)):lessd(pd(a,c),pd(b,d))
+satzd188q:=eqlessd12(pd(a,c),pd(c,a),pd(b,d),pd(d,b),compd(a,c),compd(b,d),satzd188p):lessd(pd(c,a),pd(d,b))
+d@[m:mored(a,b)][n:mored(c,d)]
+satzd189:=trmored(pd(a,c),pd(b,c),pd(b,d),satzd188d(a,b,c,m),satzd188k(c,d,b,n)):mored(pd(a,c),pd(b,d))
+d@[l:lessd(a,b)][k:lessd(c,d)]
+satzd189a:=lemmad5(pd(b,d),pd(a,c),satzd189(b,a,d,c,lemmad6(a,b,l),lemmad6(c,d,k))):lessd(pd(a,c),pd(b,d))
+d@[m:moreq(a,b)][n:mored(c,d)]
+satzd190a:=orapp(mored(a,b),eq(a,b),mored(pd(a,c),pd(b,d)),m,[t:mored(a,b)]satzd189(t,n),[t:eq(a,b)]satzd188n(t,n)):mored(pd(a,c),pd(b,d))
+d@[m:mored(a,b)][n:moreq(c,d)]
+satzd190b:=eqmored12(pd(c,a),pd(a,c),pd(d,b),pd(b,d),compd(c,a),compd(d,b),satzd190a(c,d,a,b,n,m)):mored(pd(a,c),pd(b,d))
+d@[l:lesseq(a,b)][k:lessd(c,d)]
+satzd190c:=lemmad5(pd(b,d),pd(a,c),satzd190a(b,a,d,c,satzd168b(a,b,l),lemmad6(c,d,k))):lessd(pd(a,c),pd(b,d))
+d@[l:lessd(a,b)][k:lesseq(c,d)]
+satzd190d:=lemmad5(pd(b,d),pd(a,c),satzd190b(b,a,d,c,lemmad6(a,b,l),satzd168b(c,d,k))):lessd(pd(a,c),pd(b,d))
+d@[m:moreq(a,b)][n:moreq(c,d)]
++3d191
+[e:eq(a,b)][f:eq(c,d)]
+t1:=moreqi2(pd(a,c),pd(b,d),eqpd12(a,b,c,d,e,f)):moreq(pd(a,c),pd(b,d))
+e@[o:mored(c,d)]
+t2:=moreqi1(pd(a,c),pd(b,d),satzd190a(m,o)):moreq(pd(a,c),pd(b,d))
+e@t3:=orapp(mored(c,d),eq(c,d),moreq(pd(a,c),pd(b,d)),n,[t:mored(c,d)]t2(t),[t:eq(c,d)]t1(t)):moreq(pd(a,c),pd(b,d))
+n@[o:mored(a,b)]
+t4:=moreqi1(pd(a,c),pd(b,d),satzd190b(o,n)):moreq(pd(a,c),pd(b,d))
+-3d191
+satzd191:=orapp(mored(a,b),eq(a,b),moreq(pd(a,c),pd(b,d)),m,[t:mored(a,b)]t4".3d191"(t),[t:eq(a,b)]t3".3d191"(t)):moreq(pd(a,c),pd(b,d))
+d@[l:lesseq(a,b)][k:lesseq(c,d)]
+satzd191a:=satzd168a(pd(b,d),pd(a,c),satzd191(b,a,d,c,satzd168b(a,b,l),satzd168b(c,d,k))):lesseq(pd(a,c),pd(b,d))
+b@td:=df(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,2b),ts(2a,1b))):dif
++iv4d
+a2@[r:cut]
+t1:=ists1(stm(df(a1,a2)),a1,r,stmis(a1,a2)):is(ts(stm(df(a1,a2)),r),ts(a1,r))
+t2:=ists2(stm(df(a1,a2)),a1,r,stmis(a1,a2)):is(ts(r,stm(df(a1,a2))),ts(r,a1))
+t3:=ists1(std(df(a1,a2)),a2,r,stdis(a1,a2)):is(ts(std(df(a1,a2)),r),ts(a2,r))
+t4:=ists2(std(df(a1,a2)),a2,r,stdis(a1,a2)):is(ts(r,std(df(a1,a2))),ts(r,a2))
+[s:cut]
+t5:=ispl12(ts(stm(df(a1,a2)),r),ts(a1,r),ts(std(df(a1,a2)),s),ts(a2,s),t1(r),t3(s)):is(pl(ts(stm(df(a1,a2)),r),ts(std(df(a1,a2)),s)),pl(ts(a1,r),ts(a2,s)))
+t6:=ispl12(ts(r,stm(df(a1,a2))),ts(r,a1),ts(s,std(df(a1,a2))),ts(s,a2),t2(r),t4(s)):is(pl(ts(r,stm(df(a1,a2))),ts(s,std(df(a1,a2)))),pl(ts(r,a1),ts(s,a2)))
+t7:=ispl12(ts(std(df(a1,a2)),r),ts(a2,r),ts(stm(df(a1,a2)),s),ts(a1,s),t3(r),t1(s)):is(pl(ts(std(df(a1,a2)),r),ts(stm(df(a1,a2)),s)),pl(ts(a2,r),ts(a1,s)))
+t8:=ispl12(ts(r,std(df(a1,a2))),ts(r,a2),ts(s,stm(df(a1,a2))),ts(s,a1),t4(r),t2(s)):is(pl(ts(r,std(df(a1,a2))),ts(s,stm(df(a1,a2)))),pl(ts(r,a2),ts(s,a1)))
+b2@t9:=tris(cut,pl(ts(stm(df(a1,a2)),stm(df(b1,b2))),ts(std(df(a1,a2)),std(df(b1,b2)))),pl(ts(a1,stm(df(b1,b2))),ts(a2,std(df(b1,b2)))),pl(ts(a1,b1),ts(a2,b2)),t5(a1,a2,stm(df(b1,b2)),std(df(b1,b2))),t6(b1,b2,a1,a2)):is(pl(ts(stm(df(a1,a2)),stm(df(b1,b2))),ts(std(df(a1,a2)),std(df(b1,b2)))),pl(ts(a1,b1),ts(a2,b2)))
+t10:=tris(cut,pl(ts(stm(df(a1,a2)),std(df(b1,b2))),ts(std(df(a1,a2)),stm(df(b1,b2)))),pl(ts(a1,std(df(b1,b2))),ts(a2,stm(df(b1,b2)))),pl(ts(a1,b2),ts(a2,b1)),t5(a1,a2,std(df(b1,b2)),stm(df(b1,b2))),t8(b1,b2,a1,a2)):is(pl(ts(stm(df(a1,a2)),std(df(b1,b2))),ts(std(df(a1,a2)),stm(df(b1,b2)))),pl(ts(a1,b2),ts(a2,b1)))
+-iv4d
+b2@td12:=issmsd(pl(ts(stm(df(a1,a2)),stm(df(b1,b2))),ts(std(df(a1,a2)),std(df(b1,b2)))),pl(ts(stm(df(a1,a2)),std(df(b1,b2))),ts(std(df(a1,a2)),stm(df(b1,b2)))),pl(ts(a1,b1),ts(a2,b2)),pl(ts(a1,b2),ts(a2,b1)),t9".iv4d",t10".iv4d"):is"e"(dif,td(df(a1,a2),df(b1,b2)),df(pl(ts(a1,b1),ts(a2,b2)),pl(ts(a1,b2),ts(a2,b1))))
+r2@td1:=issmsd(pl(ts(1a,stm(df(r1,r2))),ts(2a,std(df(r1,r2)))),pl(ts(1a,std(df(r1,r2))),ts(2a,stm(df(r1,r2)))),pl(ts(1a,r1),ts(2a,r2)),pl(ts(1a,r2),ts(2a,r1)),t6".iv4d"(r1,r2,1a,2a),t8".iv4d"(r1,r2,1a,2a)):is"e"(dif,td(a,df(r1,r2)),df(pl(ts(1a,r1),ts(2a,r2)),pl(ts(1a,r2),ts(2a,r1))))
+td2:=issmsd(pl(ts(stm(df(r1,r2)),1a),ts(std(df(r1,r2)),2a)),pl(ts(stm(df(r1,r2)),2a),ts(std(df(r1,r2)),1a)),pl(ts(r1,1a),ts(r2,2a)),pl(ts(r1,2a),ts(r2,1a)),t5".iv4d"(r1,r2,1a,2a),t5".iv4d"(r1,r2,2a,1a)):is"e"(dif,td(df(r1,r2),a),df(pl(ts(r1,1a),ts(r2,2a)),pl(ts(r1,2a),ts(r2,1a))))
+b2@tdeq12a:=refeq1(td(df(a1,a2),df(b1,b2)),df(pl(ts(a1,b1),ts(a2,b2)),pl(ts(a1,b2),ts(a2,b1))),td12):eq(td(df(a1,a2),df(b1,b2)),df(pl(ts(a1,b1),ts(a2,b2)),pl(ts(a1,b2),ts(a2,b1))))
+tdeq12b:=refeq2(td(df(a1,a2),df(b1,b2)),df(pl(ts(a1,b1),ts(a2,b2)),pl(ts(a1,b2),ts(a2,b1))),td12):eq(df(pl(ts(a1,b1),ts(a2,b2)),pl(ts(a1,b2),ts(a2,b1))),td(df(a1,a2),df(b1,b2)))
+r2@tdeq1a:=refeq1(td(a,df(r1,r2)),df(pl(ts(1a,r1),ts(2a,r2)),pl(ts(1a,r2),ts(2a,r1))),td1):eq(td(a,df(r1,r2)),df(pl(ts(1a,r1),ts(2a,r2)),pl(ts(1a,r2),ts(2a,r1))))
+tdeq1b:=refeq2(td(a,df(r1,r2)),df(pl(ts(1a,r1),ts(2a,r2)),pl(ts(1a,r2),ts(2a,r1))),td1):eq(df(pl(ts(1a,r1),ts(2a,r2)),pl(ts(1a,r2),ts(2a,r1))),td(a,df(r1,r2)))
+tdeq2a:=refeq1(td(df(r1,r2),a),df(pl(ts(r1,1a),ts(r2,2a)),pl(ts(r1,2a),ts(r2,1a))),td2):eq(td(df(r1,r2),a),df(pl(ts(r1,1a),ts(r2,2a)),pl(ts(r1,2a),ts(r2,1a))))
+tdeq2b:=refeq2(td(df(r1,r2),a),df(pl(ts(r1,1a),ts(r2,2a)),pl(ts(r1,2a),ts(r2,1a))),td2):eq(df(pl(ts(r1,1a),ts(r2,2a)),pl(ts(r1,2a),ts(r2,1a))),td(df(r1,r2),a))
++4d194
+b@t1:=ispl12(ts(1a,1b),ts(1b,1a),ts(2a,2b),ts(2b,2a),comts(1a,1b),comts(2a,2b)):is(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1b,1a),ts(2b,2a)))
+t2:=tris(cut,pl(ts(1a,2b),ts(2a,1b)),pl(ts(2a,1b),ts(1a,2b)),pl(ts(1b,2a),ts(2b,1a)),compl(ts(1a,2b),ts(2a,1b)),ispl12(ts(2a,1b),ts(1b,2a),ts(1a,2b),ts(2b,1a),comts(2a,1b),comts(1a,2b))):is(pl(ts(1a,2b),ts(2a,1b)),pl(ts(1b,2a),ts(2b,1a)))
+-4d194
+b@satzd194:=eqsmsd(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,2b),ts(2a,1b)),pl(ts(1b,1a),ts(2b,2a)),pl(ts(1b,2a),ts(2b,1a)),t1".4d194",t2".4d194"):eq(td(a,b),td(b,a))
+comtd:=satzd194:eq(td(a,b),td(b,a))
+c@[e:eq(a,b)]
++*iv4d
+e@[r:cut]
+t11:=tr3is(cut,pl(ts(1a,r),ts(2b,r)),ts(pl(1a,2b),r),ts(pl(1b,2a),r),pl(ts(1b,r),ts(2a,r)),distpt1(1a,2b,r),ists1(pl(1a,2b),pl(1b,2a),r,e),disttp1(1b,2a,r)):is(pl(ts(1a,r),ts(2b,r)),pl(ts(1b,r),ts(2a,r)))
+e@t12:=tr3is(cut,pl(pl(ts(1a,1c),ts(2a,2c)),pl(ts(1b,2c),ts(2b,1c))),pl(pl(ts(1a,1c),ts(2b,1c)),pl(ts(1b,2c),ts(2a,2c))),pl(pl(ts(1b,1c),ts(2a,1c)),pl(ts(1a,2c),ts(2b,2c))),pl(pl(ts(1b,1c),ts(2b,2c)),pl(ts(1a,2c),ts(2a,1c))),4pl24(ts(1a,1c),ts(2a,2c),ts(1b,2c),ts(2b,1c)),ispl12(pl(ts(1a,1c),ts(2b,1c)),pl(ts(1b,1c),ts(2a,1c)),pl(ts(1b,2c),ts(2a,2c)),pl(ts(1a,2c),ts(2b,2c)),t11(1c),t11(b,a,c,symeq(a,b,e),2c)),4pl24(ts(1b,1c),ts(2a,1c),ts(1a,2c),ts(2b,2c))):is(pl(pl(ts(1a,1c),ts(2a,2c)),pl(ts(1b,2c),ts(2b,1c))),pl(pl(ts(1b,1c),ts(2b,2c)),pl(ts(1a,2c),ts(2a,1c))))
+-iv4d
+e@eqtd1:=eqi12(pl(ts(1a,1c),ts(2a,2c)),pl(ts(1a,2c),ts(2a,1c)),pl(ts(1b,1c),ts(2b,2c)),pl(ts(1b,2c),ts(2b,1c)),t12".iv4d"):eq(td(a,c),td(b,c))
+eqtd2:=tr3eq(td(c,a),td(a,c),td(b,c),td(c,b),comtd(c,a),eqtd1,comtd(b,c)):eq(td(c,a),td(c,b))
+d@[e:eq(a,b)][f:eq(c,d)]
+eqtd12:=treq(td(a,c),td(b,c),td(b,d),eqtd1(a,b,c,e),eqtd2(c,d,b,f)):eq(td(a,c),td(b,d))
+b@[z:zero(a)]
++4d192
+t1:=tris(cut,pl(ts(1a,1b),ts(2a,2b)),pl(ts(2a,1b),ts(1a,2b)),pl(ts(1a,2b),ts(2a,1b)),ispl12(ts(1a,1b),ts(2a,1b),ts(2a,2b),ts(1a,2b),ists1(1a,2a,1b,z),ists1(2a,1a,2b,symis(cut,1a,2a,z))),compl(ts(2a,1b),ts(1a,2b))):is(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,2b),ts(2a,1b)))
+-4d192
+satzd192a:=zeroi(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,2b),ts(2a,1b)),t1".4d192"):zero(td(a,b))
+b@[z:zero(b)]
+satzd192b:=eqzero(td(b,a),td(a,b),comtd(b,a),satzd192a(b,a,z)):zero(td(a,b))
+b@[z:zero(a)]
+td01:=satzd192a(z):zero(td(a,b))
+b@[z:zero(b)]
+td02:=satzd192b(z):zero(td(a,b))
+b@satzd197a:=tr3eq(td(m0d(a),b),df(pl(ts(2a,1b),ts(1a,2b)),pl(ts(2a,2b),ts(1a,1b))),df(pl(ts(1a,2b),ts(2a,1b)),pl(ts(1a,1b),ts(2a,2b))),m0d(td(a,b)),tdeq2a(b,2a,1a),eqsmsd(pl(ts(2a,1b),ts(1a,2b)),pl(ts(2a,2b),ts(1a,1b)),pl(ts(1a,2b),ts(2a,1b)),pl(ts(1a,1b),ts(2a,2b)),compl(ts(2a,1b),ts(1a,2b)),compl(ts(2a,2b),ts(1a,1b))),m0deqb(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,2b),ts(2a,1b)))):eq(td(m0d(a),b),m0d(td(a,b)))
+satzd197b:=tr3eq(td(a,m0d(b)),td(m0d(b),a),m0d(td(b,a)),m0d(td(a,b)),comtd(a,m0d(b)),satzd197a(b,a),eqm0d(td(b,a),td(a,b),comtd(b,a))):eq(td(a,m0d(b)),m0d(td(a,b)))
+satzd197c:=treq2(td(m0d(a),b),td(a,m0d(b)),m0d(td(a,b)),satzd197a,satzd197b):eq(td(m0d(a),b),td(a,m0d(b)))
+satzd197d:=symeq(td(m0d(a),b),td(a,m0d(b)),satzd197c):eq(td(a,m0d(b)),td(m0d(a),b))
+satzd197e:=symeq(td(m0d(a),b),m0d(td(a,b)),satzd197a):eq(m0d(td(a,b)),td(m0d(a),b))
+satzd197f:=symeq(td(a,m0d(b)),m0d(td(a,b)),satzd197b):eq(m0d(td(a,b)),td(a,m0d(b)))
+satzd198:=treq(td(m0d(a),m0d(b)),td(a,m0d(m0d(b))),td(a,b),satzd197c(a,m0d(b)),eqtd2(m0d(m0d(b)),b,a,satzd177(b))):eq(td(m0d(a),m0d(b)),td(a,b))
+satzd198a:=symeq(td(m0d(a),m0d(b)),td(a,b),satzd198):eq(td(a,b),td(m0d(a),m0d(b)))
+[p:posd(a)][q:posd(b)]
++*iv4d
+q@[r:cut]
+t13:=tris(cut,pl(ts(r,mn(1b,2b,q)),ts(r,2b)),ts(r,pl(mn(1b,2b,q),2b)),ts(r,1b),distpt2(r,mn(1b,2b,q),2b),ists2(pl(mn(1b,2b,q),2b),1b,r,satz140e(1b,2b,q))):is(pl(ts(r,mn(1b,2b,q)),ts(r,2b)),ts(r,1b))
+[s:cut]
+t14:=tris(cut,pl(ts(r,mn(1b,2b,q)),pl(ts(r,2b),s)),pl(pl(ts(r,mn(1b,2b,q)),ts(r,2b)),s),pl(ts(r,1b),s),asspl2(ts(r,mn(1b,2b,q)),ts(r,2b),s),ispl1(pl(ts(r,mn(1b,2b,q)),ts(r,2b)),ts(r,1b),s,t13)):is(pl(ts(r,mn(1b,2b,q)),pl(ts(r,2b),s)),pl(ts(r,1b),s))
+t15:=tris(cut,pl(ts(r,mn(1b,2b,q)),pl(ts(r,2b),s)),pl(ts(r,1b),s),pl(s,ts(r,1b)),t14,compl(ts(r,1b),s)):is(pl(ts(r,mn(1b,2b,q)),pl(ts(r,2b),s)),pl(s,ts(r,1b)))
+q@t16:=satz135h(pl(ts(1a,2b),ts(2a,2b)),pl(ts(2a,2b),ts(1a,2b)),ts(1a,mn(1b,2b,q)),ts(2a,mn(1b,2b,q)),compl(ts(1a,2b),ts(2a,2b)),satz145a(1a,2a,mn(1b,2b,q),p)):more(pl(ts(1a,mn(1b,2b,q)),pl(ts(1a,2b),ts(2a,2b))),pl(ts(2a,mn(1b,2b,q)),pl(ts(2a,2b),ts(1a,2b))))
+t17:=ismore12(pl(ts(1a,mn(1b,2b,q)),pl(ts(1a,2b),ts(2a,2b))),pl(ts(1a,1b),ts(2a,2b)),pl(ts(2a,mn(1b,2b,q)),pl(ts(2a,2b),ts(1a,2b))),pl(ts(1a,2b),ts(2a,1b)),t14(1a,ts(2a,2b)),t15(2a,ts(1a,2b)),t16):more(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,2b),ts(2a,1b)))
+-iv4d
+q@ptdpp:=posdi(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,2b),ts(2a,1b)),t17".iv4d"):posd(td(a,b))
+b@[p:posd(a)][n:negd(b)]
++*iv4d
+n@t18:=eqposd(td(a,m0d(b)),m0d(td(a,b)),satzd197b(a,b),ptdpp(a,m0d(b),p,satzd176c(b,n))):posd(m0d(td(a,b)))
+-iv4d
+n@ntdpn:=satzd176f(td(a,b),t18".iv4d"):negd(td(a,b))
+b@[n:negd(a)][p:posd(b)]
+ntdnp:=eqnegd(td(b,a),td(a,b),comtd(b,a),ntdpn(b,a,p,n)):negd(td(a,b))
+b@[n:negd(a)][o:negd(b)]
+ptdnn:=eqposd(td(m0d(a),m0d(b)),td(a,b),satzd198(a,b),ptdpp(m0d(a),m0d(b),satzd176c(a,n),satzd176c(b,o))):posd(td(a,b))
+b@[n:not(zero(a))][o:not(zero(b))]
++*4d192
+o@[p:posd(a)][q:posd(b)]
+t2:=pnot0d(td(a,b),ptdpp(a,b,p,q)):not(zero(td(a,b)))
+p@[m:negd(b)]
+t3:=nnot0d(td(a,b),ntdpn(a,b,p,m)):not(zero(td(a,b)))
+p@t4:=rappd(b,not(zero(td(a,b))),[t:posd(b)]t2(t),th2"l.imp"(zero(b),not(zero(td(a,b))),o),[t:negd(b)]t3(t)):not(zero(td(a,b)))
+o@[m:negd(a)][p:posd(b)]
+t5:=nnot0d(td(a,b),ntdnp(a,b,m,p)):not(zero(td(a,b)))
+m@[l:negd(b)]
+t6:=pnot0d(td(a,b),ptdnn(a,b,m,l)):not(zero(td(a,b)))
+m@t7:=rappd(b,not(zero(td(a,b))),[t:posd(b)]t5(t),th2"l.imp"(zero(b),not(zero(td(a,b))),o),[t:negd(b)]t6(t)):not(zero(td(a,b)))
+-4d192
+o@satzd192d:=rappd(a,not(zero(td(a,b))),[t:posd(a)]t4".4d192"(t),th2"l.imp"(zero(a),not(zero(td(a,b))),n),[t:negd(a)]t7".4d192"(t)):not(zero(td(a,b)))
+b@[z:zero(td(a,b))]
++*4d192
+z@[n:not(zero(a))]
+t8:=et(zero(b),th3"l.imp"(not(zero(b)),not(zero(td(a,b))),weli(zero(td(a,b)),z),[t:not(zero(b))]satzd192d(n,t))):zero(b)
+-4d192
+z@satzd192c:=[t:not(zero(a))]t8".4d192"(t):or(zero(a),zero(b))
++4d193
+b@[p:posd(a)][q:posd(b)]
+t1:=treq2(absd(td(a,b)),td(absd(a),absd(b)),td(a,b),absnnd(td(a,b),pnotnd(td(a,b),ptdpp(a,b,p,q))),eqtd12(absd(a),a,absd(b),b,absnnd(a,pnotnd(a,p)),absnnd(b,pnotnd(b,q)))):eq(absd(td(a,b)),td(absd(a),absd(b)))
+p@[n:negd(b)]
+t2:=treq(absd(td(a,b)),m0d(td(a,b)),td(a,m0d(b)),absnd(td(a,b),ntdpn(a,b,p,n)),satzd197f(a,b)):eq(absd(td(a,b)),td(a,m0d(b)))
+t3:=treq2(absd(td(a,b)),td(absd(a),absd(b)),td(a,m0d(b)),t2,eqtd12(absd(a),a,absd(b),m0d(b),absnnd(a,pnotnd(a,p)),absnd(b,n))):eq(absd(td(a,b)),td(absd(a),absd(b)))
+b@[z:zero(a)]
+t4:=zeroeq(absd(td(a,b)),td(absd(a),absd(b)),satzd166f(td(a,b),td01(a,b,z)),td01(absd(a),absd(b),satzd166f(a,z))):eq(absd(td(a,b)),td(absd(a),absd(b)))
+b@[z:zero(b)]
+t5:=zeroeq(absd(td(a,b)),td(absd(a),absd(b)),satzd166f(td(a,b),td02(a,b,z)),td02(absd(a),absd(b),satzd166f(b,z))):eq(absd(td(a,b)),td(absd(a),absd(b)))
+b@[n:negd(a)][p:posd(b)]
+t6:=tr3eq(absd(td(a,b)),absd(td(b,a)),td(absd(b),absd(a)),td(absd(a),absd(b)),eqabsd(td(a,b),td(b,a),comtd(a,b)),t3(b,a,p,n),comtd(absd(b),absd(a))):eq(absd(td(a,b)),td(absd(a),absd(b)))
+n@[o:negd(b)]
+t7:=treq(td(absd(a),absd(b)),td(m0d(a),m0d(b)),td(a,b),eqtd12(absd(a),m0d(a),absd(b),m0d(b),absnd(a,n),absnd(b,o)),satzd198(a,b)):eq(td(absd(a),absd(b)),td(a,b))
+t8:=treq2(absd(td(a,b)),td(absd(a),absd(b)),td(a,b),absnnd(td(a,b),pnotnd(td(a,b),ptdnn(a,b,n,o))),t7):eq(absd(td(a,b)),td(absd(a),absd(b)))
+b@[p:posd(a)]
+t9:=rappd(b,eq(absd(td(a,b)),td(absd(a),absd(b))),[t:posd(b)]t1(p,t),[t:zero(b)]t5(t),[t:negd(b)]t3(p,t)):eq(absd(td(a,b)),td(absd(a),absd(b)))
+b@[n:negd(a)]
+t10:=rappd(b,eq(absd(td(a,b)),td(absd(a),absd(b))),[t:posd(b)]t6(n,t),[t:zero(b)]t5(t),[t:negd(b)]t8(n,t)):eq(absd(td(a,b)),td(absd(a),absd(b)))
+-4d193
+b@satzd193:=rappd(a,eq(absd(td(a,b)),td(absd(a),absd(b))),[t:posd(a)]t9".4d193"(t),[t:zero(a)]t4".4d193"(t),[t:negd(a)]t10".4d193"(t)):eq(absd(td(a,b)),td(absd(a),absd(b)))
+satzd103a:=symeq(absd(td(a,b)),td(absd(a),absd(b)),satzd193):eq(td(absd(a),absd(b)),absd(td(a,b)))
+@1df:=pdofrp(1rp):dif
++4d195
+a@t1:=tris(cut,pl(pl(ts(1a,pl(1rp,1rp)),ts(2a,1rp)),2a),pl(ts(1a,pl(1rp,1rp)),pl(ts(2a,1rp),2a)),pl(pl(1a,1a),pl(2a,2a)),asspl1(ts(1a,pl(1rp,1rp)),ts(2a,1rp),2a),ispl12(ts(1a,pl(1rp,1rp)),pl(1a,1a),pl(ts(2a,1rp),2a),pl(2a,2a),a2isapa(1a),ispl1(ts(2a,1rp),2a,2a,satz151(2a)))):is(pl(pl(ts(1a,pl(1rp,1rp)),ts(2a,1rp)),2a),pl(pl(1a,1a),pl(2a,2a)))
+t2:=tris(cut,pl(1a,pl(ts(1a,1rp),ts(2a,pl(1rp,1rp)))),pl(pl(1a,ts(1a,1rp)),ts(2a,pl(1rp,1rp))),pl(pl(1a,1a),pl(2a,2a)),asspl2(1a,ts(1a,1rp),ts(2a,pl(1rp,1rp))),ispl12(pl(1a,ts(1a,1rp)),pl(1a,1a),ts(2a,pl(1rp,1rp)),pl(2a,2a),ispl2(ts(1a,1rp),1a,1a,satz151(1a)),a2isapa(2a))):is(pl(1a,pl(ts(1a,1rp),ts(2a,pl(1rp,1rp)))),pl(pl(1a,1a),pl(2a,2a)))
+t3:=tris2(cut,pl(pl(ts(1a,pl(1rp,1rp)),ts(2a,1rp)),2a),pl(1a,pl(ts(1a,1rp),ts(2a,pl(1rp,1rp)))),pl(pl(1a,1a),pl(2a,2a)),t1,t2):is(pl(pl(ts(1a,pl(1rp,1rp)),ts(2a,1rp)),2a),pl(1a,pl(ts(1a,1rp),ts(2a,pl(1rp,1rp)))))
+-4d195
+a@satzd195:=treq(td(a,1df),df(pl(ts(1a,pl(1rp,1rp)),ts(2a,1rp)),pl(ts(1a,1rp),ts(2a,pl(1rp,1rp)))),a,tdeq1a(a,pl(1rp,1rp),1rp),eqi2(a,pl(ts(1a,pl(1rp,1rp)),ts(2a,1rp)),pl(ts(1a,1rp),ts(2a,pl(1rp,1rp))),t3".4d195")):eq(td(a,1df),a)
+satzd195a:=symeq(td(a,1df),a,satzd195):eq(a,td(a,1df))
+satzd195b:=treq(td(1df,a),td(a,1df),a,comtd(1df,a),satzd195):eq(td(1df,a),a)
+satzd195c:=symeq(td(1df,a),a,satzd195b):eq(a,td(1df,a))
+b@[p:posd(a)][q:posd(b)]
+satzd196a:=symeq(td(absd(a),absd(b)),td(a,b),eqtd12(absd(a),a,absd(b),b,absnnd(a,pnotnd(a,p)),absnnd(b,pnotnd(b,q)))):eq(td(a,b),td(absd(a),absd(b)))
+b@[n:negd(a)][o:negd(b)]
+satzd196b:=treq2(td(a,b),td(absd(a),absd(b)),td(m0d(a),m0d(b)),satzd198a(a,b),eqtd12(absd(a),m0d(a),absd(b),m0d(b),absnd(a,n),absnd(b,o))):eq(td(a,b),td(absd(a),absd(b)))
+b@[p:posd(a)][n:negd(b)]
+satzd196c:=treq1(td(a,b),m0d(td(absd(a),absd(b))),td(absd(a),m0d(absd(b))),eqtd12(absd(a),a,m0d(absd(b)),b,absnnd(a,pnotnd(a,p)),satzd177b(absd(b),b,absnd(b,n))),satzd197b(absd(a),absd(b))):eq(td(a,b),m0d(td(absd(a),absd(b))))
+b@[n:negd(a)][p:posd(b)]
+satzd196d:=tr3eq(td(a,b),td(b,a),m0d(td(absd(b),absd(a))),m0d(td(absd(a),absd(b))),comtd(a,b),satzd196c(b,a,p,n),eqm0d(td(absd(b),absd(a)),td(absd(a),absd(b)),comtd(absd(b),absd(a)))):eq(td(a,b),m0d(td(absd(a),absd(b))))
++4d196
+b@p1p2:=and(posd(a),posd(b)):'prop'
+p1n2:=and(posd(a),negd(b)):'prop'
+n1p2:=and(negd(a),posd(b)):'prop'
+n1n2:=and(negd(a),negd(b)):'prop'
+-4d196
+b@[n:not(zero(a))][o:not(zero(b))][e:eq(td(a,b),td(absd(a),absd(b)))]
++*4d196
+o@t1:=ptdpp(absd(a),absd(b),satzd166e(a,n),satzd166e(b,o)):posd(td(absd(a),absd(b)))
+e@t2:=pnotnd(td(a,b),eqposd(td(absd(a),absd(b)),td(a,b),symeq(td(a,b),td(absd(a),absd(b)),e),t1)):not(negd(td(a,b)))
+[p:posd(a)]
+t3:=th3"l.imp"(negd(b),negd(td(a,b)),t2,[t:negd(b)]ntdpn(a,b,p,t)):not(negd(b))
+t4:=or3e2(zero(b),posd(b),negd(b),axrdo(b),t3,o):posd(b)
+t5:=andi(posd(a),posd(b),p,t4):p1p2
+t6:=ori1(p1p2,n1n2,t5):or(p1p2,n1n2)
+e@[m:negd(a)]
+t7:=th3"l.imp"(posd(b),negd(td(a,b)),t2,[t:posd(b)]ntdnp(a,b,m,t)):not(posd(b))
+t8:=or3e3(zero(b),posd(b),negd(b),axrdo(b),o,t7):negd(b)
+t9:=andi(negd(a),negd(b),m,t8):n1n2
+t10:=ori2(p1p2,n1n2,t9):or(p1p2,n1n2)
+-4d196
+e@satzd196e:=rappd(a,or(p1p2".4d196",n1n2".4d196"),[t:posd(a)]t6".4d196"(t),th2"l.imp"(zero(a),or(p1p2".4d196",n1n2".4d196"),n),[t:negd(a)]t10".4d196"(t)):or(and(posd(a),posd(b)),and(negd(a),negd(b)))
+o@[e:eq(td(a,b),m0d(td(absd(a),absd(b))))]
++*4d196
+o@t11:=satzd176a(td(absd(a),absd(b)),t1):negd(m0d(td(absd(a),absd(b))))
+e@t12:=nnotpd(td(a,b),eqnegd(m0d(td(absd(a),absd(b))),td(a,b),symeq(td(a,b),m0d(td(absd(a),absd(b))),e),t11)):not(posd(td(a,b)))
+[p:posd(a)]
+t13:=th3"l.imp"(posd(b),posd(td(a,b)),t12,[t:posd(b)]ptdpp(a,b,p,t)):not(posd(b))
+t14:=or3e3(zero(b),posd(b),negd(b),axrdo(b),o,t13):negd(b)
+t15:=andi(posd(a),negd(b),p,t14):p1n2
+t16:=ori1(p1n2,n1p2,t15):or(p1n2,n1p2)
+e@[m:negd(a)]
+t17:=th3"l.imp"(negd(b),posd(td(a,b)),t12,[t:negd(b)]ptdnn(a,b,m,t)):not(negd(b))
+t18:=or3e2(zero(b),posd(b),negd(b),axrdo(b),t17,o):posd(b)
+t19:=andi(negd(a),posd(b),m,t18):n1p2
+t20:=ori2(p1n2,n1p2,t19):or(p1n2,n1p2)
+-4d196
+e@satzd196f:=rappd(a,or(p1n2".4d196",n1p2".4d196"),[t:posd(a)]t16".4d196"(t),th2"l.imp"(zero(a),or(p1n2".4d196",n1p2".4d196"),n),[t:negd(a)]t20".4d196"(t)):or(and(posd(a),negd(b)),and(negd(a),posd(b)))
++4d199
+@[p:cut][q:cut][r:cut][s:cut][t:cut][u:cut]
+t1:=tris(cut,ts(pl(ts(p,r),ts(q,s)),t),pl(ts(ts(p,r),t),ts(ts(q,s),t)),pl(ts(p,ts(r,t)),ts(q,ts(s,t))),disttp1(ts(p,r),ts(q,s),t),ispl12(ts(ts(p,r),t),ts(p,ts(r,t)),ts(ts(q,s),t),ts(q,ts(s,t)),assts1(p,r,t),assts1(q,s,t))):is(ts(pl(ts(p,r),ts(q,s)),t),pl(ts(p,ts(r,t)),ts(q,ts(s,t))))
+t2:=tris(cut,pl(ts(q,ts(s,t)),ts(q,ts(r,u))),pl(ts(q,ts(r,u)),ts(q,ts(s,t))),ts(q,pl(ts(r,u),ts(s,t))),compl(ts(q,ts(s,t)),ts(q,ts(r,u))),distpt2(q,ts(r,u),ts(s,t))):is(pl(ts(q,ts(s,t)),ts(q,ts(r,u))),ts(q,pl(ts(r,u),ts(s,t))))
+t3:=tr3is(cut,pl(ts(pl(ts(p,r),ts(q,s)),t),ts(pl(ts(p,s),ts(q,r)),u)),pl(pl(ts(p,ts(r,t)),ts(q,ts(s,t))),pl(ts(p,ts(s,u)),ts(q,ts(r,u)))),pl(pl(ts(p,ts(r,t)),ts(p,ts(s,u))),pl(ts(q,ts(s,t)),ts(q,ts(r,u)))),pl(ts(p,pl(ts(r,t),ts(s,u))),ts(q,pl(ts(r,u),ts(s,t)))),ispl12(ts(pl(ts(p,r),ts(q,s)),t),pl(ts(p,ts(r,t)),ts(q,ts(s,t))),ts(pl(ts(p,s),ts(q,r)),u),pl(ts(p,ts(s,u)),ts(q,ts(r,u))),t1,t1(p,q,s,r,u,t)),4pl23(ts(p,ts(r,t)),ts(q,ts(s,t)),ts(p,ts(s,u)),ts(q,ts(r,u))),ispl12(pl(ts(p,ts(r,t)),ts(p,ts(s,u))),ts(p,pl(ts(r,t),ts(s,u))),pl(ts(q,ts(s,t)),ts(q,ts(r,u))),ts(q,pl(ts(r,u),ts(s,t))),distpt2(p,ts(r,t),ts(s,u)),t2)):is(pl(ts(pl(ts(p,r),ts(q,s)),t),ts(pl(ts(p,s),ts(q,r)),u)),pl(ts(p,pl(ts(r,t),ts(s,u))),ts(q,pl(ts(r,u),ts(s,t)))))
+-4d199
+c@satzd199:=tr3eq(td(td(a,b),c),df(pl(ts(pl(ts(1a,1b),ts(2a,2b)),1c),ts(pl(ts(1a,2b),ts(2a,1b)),2c)),pl(ts(pl(ts(1a,1b),ts(2a,2b)),2c),ts(pl(ts(1a,2b),ts(2a,1b)),1c))),df(pl(ts(1a,pl(ts(1b,1c),ts(2b,2c))),ts(2a,pl(ts(1b,2c),ts(2b,1c)))),pl(ts(1a,pl(ts(1b,2c),ts(2b,1c))),ts(2a,pl(ts(1b,1c),ts(2b,2c))))),td(a,td(b,c)),tdeq2a(c,pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,2b),ts(2a,1b))),eqsmsd(pl(ts(pl(ts(1a,1b),ts(2a,2b)),1c),ts(pl(ts(1a,2b),ts(2a,1b)),2c)),pl(ts(pl(ts(1a,1b),ts(2a,2b)),2c),ts(pl(ts(1a,2b),ts(2a,1b)),1c)),pl(ts(1a,pl(ts(1b,1c),ts(2b,2c))),ts(2a,pl(ts(1b,2c),ts(2b,1c)))),pl(ts(1a,pl(ts(1b,2c),ts(2b,1c))),ts(2a,pl(ts(1b,1c),ts(2b,2c)))),t3".4d199"(1a,2a,1b,2b,1c,2c),t3".4d199"(1a,2a,1b,2b,2c,1c)),tdeq1b(a,pl(ts(1b,1c),ts(2b,2c)),pl(ts(1b,2c),ts(2b,1c)))):eq(td(td(a,b),c),td(a,td(b,c)))
+asstd1:=satzd199:eq(td(td(a,b),c),td(a,td(b,c)))
+asstd2:=symeq(td(td(a,b),c),td(a,td(b,c)),satzd199):eq(td(a,td(b,c)),td(td(a,b),c))
++4d201
+@[p:cut][q:cut][r:cut][s:cut][t:cut][u:cut]
+t1:=tris(cut,pl(ts(p,pl(r,t)),ts(q,pl(s,u))),pl(pl(ts(p,r),ts(p,t)),pl(ts(q,s),ts(q,u))),pl(pl(ts(p,r),ts(q,s)),pl(ts(p,t),ts(q,u))),ispl12(ts(p,pl(r,t)),pl(ts(p,r),ts(p,t)),ts(q,pl(s,u)),pl(ts(q,s),ts(q,u)),disttp2(p,r,t),disttp2(q,s,u)),4pl23(ts(p,r),ts(p,t),ts(q,s),ts(q,u))):is(pl(ts(p,pl(r,t)),ts(q,pl(s,u))),pl(pl(ts(p,r),ts(q,s)),pl(ts(p,t),ts(q,u))))
+-4d201
+satzd201:=tr3eq(td(a,pd(b,c)),df(pl(ts(1a,pl(1b,1c)),ts(2a,pl(2b,2c))),pl(ts(1a,pl(2b,2c)),ts(2a,pl(1b,1c)))),df(pl(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,1c),ts(2a,2c))),pl(pl(ts(1a,2b),ts(2a,1b)),pl(ts(1a,2c),ts(2a,1c)))),pd(td(a,b),td(a,c)),tdeq1a(a,pl(1b,1c),pl(2b,2c)),eqsmsd(pl(ts(1a,pl(1b,1c)),ts(2a,pl(2b,2c))),pl(ts(1a,pl(2b,2c)),ts(2a,pl(1b,1c))),pl(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,1c),ts(2a,2c))),pl(pl(ts(1a,2b),ts(2a,1b)),pl(ts(1a,2c),ts(2a,1c))),t1".4d201"(1a,2a,1b,2b,1c,2c),t1".4d201"(1a,2a,2b,1b,2c,1c)),pdeq12b(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,2b),ts(2a,1b)),pl(ts(1a,1c),ts(2a,2c)),pl(ts(1a,2c),ts(2a,1c)))):eq(td(a,pd(b,c)),pd(td(a,b),td(a,c)))
+disttpd1:=tr3eq(td(pd(a,b),c),td(c,pd(a,b)),pd(td(c,a),td(c,b)),pd(td(a,c),td(b,c)),comtd(pd(a,b),c),satzd201(c,a,b),eqpd12(td(c,a),td(a,c),td(c,b),td(b,c),comtd(c,a),comtd(c,b))):eq(td(pd(a,b),c),pd(td(a,c),td(b,c)))
+disttpd2:=satzd201:eq(td(a,pd(b,c)),pd(td(a,b),td(a,c)))
+distptd1:=symeq(td(pd(a,b),c),pd(td(a,c),td(b,c)),disttpd1):eq(pd(td(a,c),td(b,c)),td(pd(a,b),c))
+distptd2:=symeq(td(a,pd(b,c)),pd(td(a,b),td(a,c)),disttpd2):eq(pd(td(a,b),td(a,c)),td(a,pd(b,c)))
+satzd202:=treq(td(a,md(b,c)),pd(td(a,b),td(a,m0d(c))),md(td(a,b),td(a,c)),disttpd2(a,b,m0d(c)),eqpd2(td(a,m0d(c)),m0d(td(a,c)),td(a,b),satzd197b(a,c))):eq(td(a,md(b,c)),md(td(a,b),td(a,c)))
+disttmd1:=treq(td(md(a,b),c),pd(td(a,c),td(m0d(b),c)),md(td(a,c),td(b,c)),disttpd1(a,m0d(b),c),eqpd2(td(m0d(b),c),m0d(td(b,c)),td(a,c),satzd197a(b,c))):eq(td(md(a,b),c),md(td(a,c),td(b,c)))
+disttmd2:=satzd202:eq(td(a,md(b,c)),md(td(a,b),td(a,c)))
+distmtd1:=symeq(td(md(a,b),c),md(td(a,c),td(b,c)),disttmd1):eq(md(td(a,c),td(b,c)),td(md(a,b),c))
+distmtd2:=symeq(td(a,md(b,c)),md(td(a,b),td(a,c)),disttmd2):eq(md(td(a,b),td(a,c)),td(a,md(b,c)))
+satzd200:=satzd202:eq(td(a,md(b,c)),md(td(a,b),td(a,c)))
+[m:mored(a,b)]
++4d203
+t1:=satzd182d(a,b,m):posd(md(a,b))
+-4d203
+[p:posd(c)]
++*4d203
+p@t2:=eqposd(td(md(a,b),c),md(td(a,c),td(b,c)),disttmd1(a,b,c),ptdpp(md(a,b),c,t1,p)):posd(md(td(a,c),td(b,c)))
+-4d203
+p@satzd203a:=satzd182a(td(a,c),td(b,c),t2".4d203"):mored(td(a,c),td(b,c))
+m@[z:zero(c)]
+satzd203b:=zeroeq(td(a,c),td(b,c),td02(a,c,z),td02(b,c,z)):eq(td(a,c),td(b,c))
+m@[n:negd(c)]
++*4d203
+n@t3:=eqnegd(td(md(a,b),c),md(td(a,c),td(b,c)),disttmd1(a,b,c),ntdpn(md(a,b),c,t1,n)):negd(md(td(a,c),td(b,c)))
+-4d203
+n@satzd203c:=satzd182c(td(a,c),td(b,c),t3".4d203"):lessd(td(a,c),td(b,c))
+p@satzd203d:=eqmored12(td(a,c),td(c,a),td(b,c),td(c,b),comtd(a,c),comtd(b,c),satzd203a):mored(td(c,a),td(c,b))
+z@satzd203e:=zeroeq(td(c,a),td(c,b),td01(c,a,z),td01(c,b,z)):eq(td(c,a),td(c,b))
+n@satzd203f:=eqlessd12(td(a,c),td(c,a),td(b,c),td(c,b),comtd(a,c),comtd(b,c),satzd203c):lessd(td(c,a),td(c,b))
+c@[l:lessd(a,b)][p:posd(c)]
+satzd203g:=lemmad5(td(b,c),td(a,c),satzd203a(b,a,c,lemmad6(a,b,l),p)):lessd(td(a,c),td(b,c))
+l@[z:zero(c)]
+satzd203h:=zeroeq(td(a,c),td(b,c),td02(a,c,z),td02(b,c,z)):eq(td(a,c),td(b,c))
+l@[n:negd(c)]
+satzd203j:=lemmad6(td(b,c),td(a,c),satzd203c(b,a,c,lemmad6(a,b,l),n)):mored(td(a,c),td(b,c))
+p@satzd203k:=lemmad5(td(c,b),td(c,a),satzd203d(b,a,c,lemmad6(a,b,l),p)):lessd(td(c,a),td(c,b))
+z@satzd203l:=zeroeq(td(c,a),td(c,b),td01(c,a,z),td01(c,b,z)):eq(td(c,a),td(c,b))
+n@satzd203m:=lemmad6(td(c,b),td(c,a),satzd203f(b,a,c,lemmad6(a,b,l),n)):mored(td(c,a),td(c,b))
++*iv4d
+@[p:cut][q:cut]
+t19:=tris(cut,ts(q,pl(p,1rp)),pl(ts(q,p),ts(q,1rp)),pl(ts(q,p),q),disttp2(q,p,1rp),ispl2(ts(q,1rp),q,ts(q,p),satz151(q))):is(ts(q,pl(p,1rp)),pl(ts(q,p),q))
+[r:cut]
+t20:=tris(cut,pl(ts(q,pl(p,1rp)),ts(r,1rp)),pl(pl(ts(q,p),q),r),pl(ts(q,p),pl(q,r)),ispl12(ts(q,pl(p,1rp)),pl(ts(q,p),q),ts(r,1rp),r,t19,satz151(r)),asspl1(ts(q,p),q,r)):is(pl(ts(q,pl(p,1rp)),ts(r,1rp)),pl(ts(q,p),pl(q,r)))
+t21:=tr3is(cut,pl(ts(r,1rp),ts(q,pl(p,1rp))),pl(ts(q,pl(p,1rp)),ts(r,1rp)),pl(ts(q,p),pl(q,r)),pl(ts(q,p),pl(r,q)),compl(ts(r,1rp),ts(q,pl(p,1rp))),t20,ispl2(pl(q,r),pl(r,q),ts(q,p),compl(q,r))):is(pl(ts(r,1rp),ts(q,pl(p,1rp))),pl(ts(q,p),pl(r,q)))
+a@[p:posd(a)]
+arp:=rpofpd(a,p):cut
+arpi:=ov(1rp,arp):cut
+ai:=pdofrp(arpi):dif
+t22:=tr3eq(td(a,ai),df(pl(ts(1a,pl(arpi,1rp)),ts(2a,1rp)),pl(ts(1a,1rp),ts(2a,pl(arpi,1rp)))),df(pl(ts(1a,arpi),pl(1a,2a)),pl(ts(2a,arpi),pl(1a,2a))),df(ts(1a,arpi),ts(2a,arpi)),tdeq1a(a,pl(arpi,1rp),1rp),eqsmsd(pl(ts(1a,pl(arpi,1rp)),ts(2a,1rp)),pl(ts(1a,1rp),ts(2a,pl(arpi,1rp))),pl(ts(1a,arpi),pl(1a,2a)),pl(ts(2a,arpi),pl(1a,2a)),t20(arpi,1a,2a),t21(arpi,2a,1a)),lemmad2(ts(1a,arpi),ts(2a,arpi),pl(1a,2a))):eq(td(a,ai),df(ts(1a,arpi),ts(2a,arpi)))
+t23:=tr3is(cut,ts(1a,arpi),ts(pl(2a,arp),arpi),pl(ts(2a,arpi),ts(arp,arpi)),pl(ts(2a,arpi),1rp),ists1(1a,pl(2a,arp),arpi,satz140d(1a,2a,p)),disttp1(2a,arp,arpi),ispl2(ts(arp,arpi),1rp,ts(2a,arpi),satz153c(1rp,arp))):is(ts(1a,arpi),pl(ts(2a,arpi),1rp))
+t24:=tr3is(cut,pl(ts(1a,arpi),1rp),pl(pl(ts(2a,arpi),1rp),1rp),pl(ts(2a,arpi),pl(1rp,1rp)),pl(pl(1rp,1rp),ts(2a,arpi)),ispl1(ts(1a,arpi),pl(ts(2a,arpi),1rp),1rp,t23),asspl1(ts(2a,arpi),1rp,1rp),compl(ts(2a,arpi),pl(1rp,1rp))):is(pl(ts(1a,arpi),1rp),pl(pl(1rp,1rp),ts(2a,arpi)))
+t25:=eqi12(ts(1a,arpi),ts(2a,arpi),pl(1rp,1rp),1rp,t24):eq(df(ts(1a,arpi),ts(2a,arpi)),1df)
+t26:=treq(td(a,ai),df(ts(1a,arpi),ts(2a,arpi)),1df,t22,t25):eq(td(a,ai),1df)
+t27:=somei(dif,[x:dif]eq(td(a,x),1df),ai,t26):some"l"(dif,[x:dif]eq(td(a,x),1df))
+a@[n:negd(a)]
+t28:=satzd176c(a,n):posd(m0d(a))
+[h:dif][e:eq(td(m0d(a),h),1df)]
+t29:=treq(td(a,m0d(h)),td(m0d(a),h),1df,satzd197d(a,h),e):eq(td(a,m0d(h)),1df)
+t30:=somei(dif,[x:dif]eq(td(a,x),1df),m0d(h),t29):some"l"(dif,[x:dif]eq(td(a,x),1df))
+n@t31:=someapp(dif,[x:dif]eq(td(m0d(a),x),1df),t27(m0d(a),t28),some"l"(dif,[x:dif]eq(td(a,x),1df)),[x:dif][t:eq(td(m0d(a),x),1df)]t30(x,t)):some"l"(dif,[x:dif]eq(td(a,x),1df))
+-iv4d
+a@[n:not(zero(a))]
+lemmad7:=rappd(a,some"l"(dif,[x:dif]eq(td(a,x),1df)),[t:posd(a)]t27".iv4d"(t),th2"l.imp"(zero(a),some"l"(dif,[x:dif]eq(td(a,x),1df)),n),[t:negd(a)]t31".iv4d"(t)):some"l"(dif,[x:dif]eq(td(a,x),1df))
+b@[n:not(zero(b))][h:dif][k:dif][e:eq(td(b,h),a)][f:eq(td(b,k),a)]
++4d204
+t1:=treq2(td(b,h),td(b,k),a,e,f):eq(td(b,h),td(b,k))
+t2:=eqzero(md(td(b,h),td(b,k)),td(b,md(h,k)),distmtd2(b,h,k),satzd182e(td(b,h),td(b,k),t1)):zero(td(b,md(h,k)))
+t3:=ore2(zero(b),zero(md(h,k)),satzd192c(b,md(h,k),t2),n):zero(md(h,k))
+-4d204
+satzd204b:=satzd182b(h,k,t3".4d204"):eq(h,k)
++*4d204
+n@[h:dif][e:eq(td(b,h),1df)]
+t4:=tr3eq(td(b,td(h,a)),td(td(b,h),a),td(1df,a),a,asstd2(b,h,a),eqtd1(td(b,h),1df,a,e),satzd195b(a)):eq(td(b,td(h,a)),a)
+t5:=somei(dif,[x:dif]eq(td(b,x),a),td(h,a),t4):some"l"(dif,[x:dif]eq(td(b,x),a))
+-4d204
+n@satzd204a:=someapp(dif,[x:dif]eq(td(b,x),1df),lemmad7(b,n),some"l"(dif,[x:dif]eq(td(b,x),a)),[x:dif][t:eq(td(b,x),1df)]t5".4d204"(x,t)):some"l"(dif,[x:dif]eq(td(b,x),a))
+@[r:cut][s:cut][m:more(r,s)]
++iv5d
+t1:=ismore12(pl(r,pl(1rp,1rp)),pl(pl(r,1rp),1rp),pl(s,pl(1rp,1rp)),pl(pl(s,1rp),1rp),asspl2(r,1rp,1rp),asspl2(s,1rp,1rp),satz134(r,s,pl(1rp,1rp),m)):more(pl(pl(r,1rp),1rp),pl(pl(s,1rp),1rp))
+-iv5d
+morerpepd:=moredi12(pl(r,1rp),1rp,pl(s,1rp),1rp,t1".iv5d"):mored(pdofrp(r),pdofrp(s))
+s@[m:mored(pdofrp(r),pdofrp(s))]
++*iv5d
+m@t2:=morede12(pl(r,1rp),1rp,pl(s,1rp),1rp,m):more(pl(pl(r,1rp),1rp),pl(pl(s,1rp),1rp))
+-iv5d
+m@morerpipd:=satz136a(r,s,pl(1rp,1rp),ismore12(pl(pl(r,1rp),1rp),pl(r,pl(1rp,1rp)),pl(pl(s,1rp),1rp),pl(s,pl(1rp,1rp)),asspl1(r,1rp,1rp),asspl1(s,1rp,1rp),t2".iv5d")):more(r,s)
+s@[l:less(r,s)]
+lessrpepd:=lemmad5(pdofrp(s),pdofrp(r),morerpepd(s,r,satz122(r,s,l))):lessd(pdofrp(r),pdofrp(s))
+s@[l:lessd(pdofrp(r),pdofrp(s))]
+lessrpipd:=satz121(s,r,morerpipd(s,r,lemmad6(pdofrp(r),pdofrp(s),l))):less(r,s)
++*iv5d
+@i:=1rp:cut
+2:=pl(i,i):cut
+r@rp1:=pl(r,i):cut
+s@sp1:=pl(s,i):cut
+rps:=pl(r,s):cut
+rs:=ts(r,s):cut
+t3:=tris(cut,pl(pl(rp1,sp1),i),pl(pl(rps,2),i),pl(pl(rps,i),2),ispl1(pl(rp1,sp1),pl(rps,2),i,4pl23(r,i,s,i)),3pl23(rps,2,i)):is(pl(pl(rp1,sp1),i),pl(pl(rps,i),2))
+t4:=treq(pd(pdofrp(r),pdofrp(s)),df(pl(rp1,sp1),2),pdofrp(rps),pdeq12a(rp1,i,sp1,i),eqi12(pl(rp1,sp1),2,pl(rps,i),i,t3)):eq(pd(pdofrp(r),pdofrp(s)),pdofrp(rps))
+-iv5d
+s@lemmad8:=t4".iv5d":eq(pd(pdofrp(r),pdofrp(s)),pdofrp(pl(r,s)))
++*iv5d
+s@t5:=tris(cut,ts(r,sp1),pl(rs,ts(r,i)),pl(rs,r),disttp2(r,s,i),ispl2(ts(r,i),r,rs,satz151(r))):is(ts(r,sp1),pl(rs,r))
+t6:=tr4is(cut,ts(rp1,sp1),pl(ts(r,sp1),ts(i,sp1)),pl(pl(rs,r),sp1),pl(pl(pl(rs,r),s),i),pl(pl(rs,rps),i),disttp1(r,i,sp1),ispl12(ts(r,sp1),pl(rs,r),ts(i,sp1),sp1,t5,satz151b(sp1)),asspl2(pl(rs,r),s,i),ispl1(pl(pl(rs,r),s),pl(rs,rps),i,asspl1(rs,r,s))):is(ts(rp1,sp1),pl(pl(rs,rps),i))
+t7:=tr3is(cut,pl(ts(rp1,sp1),ts(i,i)),pl(pl(pl(rs,rps),i),i),pl(pl(rs,rps),2),pl(rs,pl(rps,2)),ispl12(ts(rp1,sp1),pl(pl(rs,rps),i),ts(i,i),i,t6,satz151(i)),asspl1(pl(rs,rps),i,i),asspl1(rs,rps,2)):is(pl(ts(rp1,sp1),ts(i,i)),pl(rs,pl(rps,2)))
+t8:=tris(cut,pl(ts(rp1,i),ts(i,sp1)),pl(rp1,sp1),pl(rps,2),ispl12(ts(rp1,i),rp1,ts(i,sp1),sp1,satz151(rp1),satz151b(sp1)),4pl23(r,i,s,i)):is(pl(ts(rp1,i),ts(i,sp1)),pl(rps,2))
+t9:=tris(cut,pl(pl(rs,i),pl(ts(rp1,i),ts(i,sp1))),pl(pl(rs,i),pl(rps,2)),pl(pl(rs,pl(rps,2)),i),ispl2(pl(ts(rp1,i),ts(i,sp1)),pl(rps,2),pl(rs,i),t8),3pl23(rs,i,pl(rps,2))):is(pl(pl(rs,i),pl(ts(rp1,i),ts(i,sp1))),pl(pl(rs,pl(rps,2)),i))
+t10:=tris2(cut,pl(pl(ts(rp1,sp1),ts(i,i)),i),pl(pl(rs,i),pl(ts(rp1,i),ts(i,sp1))),pl(pl(rs,pl(rps,2)),i),ispl1(pl(ts(rp1,sp1),ts(i,i)),pl(rs,pl(rps,2)),i,t7),t9):is(pl(pl(ts(rp1,sp1),ts(i,i)),i),pl(pl(rs,i),pl(ts(rp1,i),ts(i,sp1))))
+t11:=treq(td(pdofrp(r),pdofrp(s)),df(pl(ts(rp1,sp1),ts(i,i)),pl(ts(rp1,i),ts(i,sp1))),pdofrp(rs),tdeq12a(rp1,i,sp1,i),eqi12(pl(ts(rp1,sp1),ts(i,i)),pl(ts(rp1,i),ts(i,sp1)),pl(rs,i),i,t10)):eq(td(pdofrp(r),pdofrp(s)),pdofrp(rs))
+-iv5d
+s@lemmad9:=t11".iv5d":eq(td(pdofrp(r),pdofrp(s)),pdofrp(ts(r,s)))
+@[r:cut][s0:set(cut)]
+in:=esti(cut,r,s0):'prop'
+@[s0:set(cut)][t0:set(cut)][p0:all([x:cut]or(in(x,s0),in(x,t0)))][p1a:nonempty(cut,s0)][p1b:nonempty(cut,t0)][p2:all([x:cut][t:in(x,s0)]all([y:cut][u:in(y,t0)]less(x,y)))]
++5p205
+t0@[r:cut]
+prop1:=all([x:cut][t:less(x,r)]in(x,s0)):'prop'
+prop2:=all([x:cut][t:more(x,r)]in(x,t0)):'prop'
+prop3:=and(prop1,prop2):'prop'
+p2@[r1:cut][r2:cut][pr1:prop3(r1)][pr2:prop3(r2)]
+t1:=ande2(prop1(r1),prop2(r1),pr1):prop2(r1)
+t2:=ande1(prop1(r2),prop2(r2),pr2):prop1(r2)
+[l:less(r1,r2)][x0:rat]
+rx:=rpofrt(x0):cut
+[l1:less(r1,rx)][l2:less(rx,r2)]
+t3:=<l2><rx>t2:in(rx,s0)
+t4:=<satz122(r1,rx,l1)><rx>t1:in(rx,t0)
+t5:=<refis(cut,rx)>ec3e31(is(rx,rx),more(rx,rx),less(rx,rx),satz123b(rx,rx),<t4><rx><t3><rx>p2):con
+l@t6:=satz159app(r1,r2,l,con,[x:rat][t:less(r1,rpofrt(x))][u:less(rpofrt(x),r2)]t5(x,t,u)):con
+pr2@t7:=[t:less(r1,r2)]t6(t):not(less(r1,r2))
+t8:=[t:more(r1,r2)]t6(r2,r1,pr2,pr1,satz121(r1,r2,t)):not(more(r1,r2))
+t9:=or3e1(is(r1,r2),more(r1,r2),less(r1,r2),satz123a(r1,r2),t8,t7):is(r1,r2)
+p2@t10:=[x:cut][y:cut][t:prop3(x)][u:prop3(y)]t9(x,y,t,u):amone(cut,[x:cut]prop3(x))
+[x0:rat]
+schnittprop:=some([y:cut]and(in(y,s0),lrt(y,x0))):'prop'
+p2@schnittset:=setof(rat,[x:rat]schnittprop(x)):set(rat)
+[r:cut][i:in(r,s0)][x0:rat][lx:lrt(r,x0)]
+t11:=andi(in(r,s0),lrt(r,x0),i,lx):and(in(r,s0),lrt(r,x0))
+t12:=somei(cut,[y:cut]and(in(y,s0),lrt(y,x0)),r,t11):schnittprop(x0)
+t13:=estii(rat,[x:rat]schnittprop(x),x0,t12):in"rt"(x0,schnittset)
+r@[i:in(r,t0)][x0:rat][ux:urt(r,x0)][s:cut][j:in(s,s0)]
+t14:=satz122(s,r,<i><r><j><s>p2):more(r,s)
+t15:=satz158b(r,x0,ux):moreis(rpofrt(x0),r)
+t16:=moreisi1(rpofrt(x0),s,satz127c(rpofrt(x0),r,s,t15,t14)):moreis(rpofrt(x0),s)
+t17:=satz158d(s,x0,t16):urt(s,x0)
+s@t18:=weli(ec(in(s,s0),lrt(s,x0)),[t:in(s,s0)]t17(t)):not(and(in(s,s0),lrt(s,x0)))
+ux@t19:=th5"l.some"(cut,[y:cut]and(in(y,s0),lrt(y,x0)),[y:cut]t18(y)):not(schnittprop(x0))
+t20:=th3"l.imp"(in"rt"(x0,schnittset),schnittprop(x0),t19,[t:in"rt"(x0,schnittset)]estie(rat,[x:rat]schnittprop(x),x0,t)):not(in"rt"(x0,schnittset))
+p2@[x0:rat][i:in"rt"(x0,schnittset)][y0:rat][l:less"rt"(y0,x0)]
+i@t21:=estie(rat,[x:rat]schnittprop(x),x0,i):schnittprop(x0)
+l@[r:cut][a:and(in(r,s0),lrt(r,x0))]
+t22:=ande1(in(r,s0),lrt(r,x0),a):in(r,s0)
+t23:=ande2(in(r,s0),lrt(r,x0),a):lrt(r,x0)
+t24:=satz120(r,x0,t23,y0,l):lrt(r,y0)
+t25:=andi(in(r,s0),lrt(r,y0),t22,t24):and(in(r,s0),lrt(r,y0))
+t26:=somei(cut,[y:cut]and(in(y,s0),lrt(y,y0)),r,t25):schnittprop(y0)
+l@t27:=someapp(cut,[y:cut]and(in(y,s0),lrt(y,x0)),t21,schnittprop(y0),[y:cut][r:and(in(y,s0),lrt(y,x0))]t26(y,r)):schnittprop(y0)
+t28:=estii(rat,[x:rat]schnittprop(x),y0,t27):in"rt"(y0,schnittset)
+i@[r:cut][a:and(in(r,s0),lrt(r,x0))]
+t29:=ande1(in(r,s0),lrt(r,x0),a):in(r,s0)
+t30:=ande2(in(r,s0),lrt(r,x0),a):lrt(r,x0)
+[y0:rat][ly:lrt(r,y0)][l:less"rt"(x0,y0)]
+t31:=andi(in(r,s0),lrt(r,y0),t29,ly):and(in(r,s0),lrt(r,y0))
+t32:=somei(cut,[y:cut]and(in(y,s0),lrt(y,y0)),r,t31):schnittprop(y0)
+t33:=estii(rat,[x:rat]schnittprop(x),y0,t32):in"rt"(y0,schnittset)
+t34:=satz83(x0,y0,l):more"rt"(y0,x0)
+t35:=andi(in"rt"(y0,schnittset),more"rt"(y0,x0),t33,t34):and(in"rt"(y0,schnittset),more"rt"(y0,x0))
+t36:=somei(rat,[y:rat]and(in"rt"(y,schnittset),more"rt"(y,x0)),y0,t35):some"rt"([y:rat]and(in"rt"(y,schnittset),more"rt"(y,x0)))
+a@t37:=cutapp3(r,x0,t30,some"rt"([y:rat]and(in"rt"(y,schnittset),more"rt"(y,x0))),[y:rat][t:lrt(r,y)][u:less"rt"(x0,y)]t36(y,t,u)):some"rt"([y:rat]and(in"rt"(y,schnittset),more"rt"(y,x0)))
+i@t38:=someapp(cut,[y:cut]and(in(y,s0),lrt(y,x0)),t21,some"rt"([y:rat]and(in"rt"(y,schnittset),more"rt"(y,x0))),[y:cut][t:and(in(y,s0),lrt(y,x0))]t37(y,t)):some"rt"([y:rat]and(in"rt"(y,schnittset),more"rt"(y,x0)))
+p2@[r:cut][i:in(r,s0)][x0:rat][lx:lrt(r,x0)][s:cut][j:in(s,t0)][y0:rat][uy:urt(s,y0)]
+t39:=cut2(schnittset,x0,t13(r,i,x0,lx),y0,t20(s,j,y0,uy),[x:rat][t:in"rt"(x,schnittset)][y:rat][u:less"rt"(y,x)]t28(x,t,y,u),[x:rat][t:in"rt"(x,schnittset)]t38(x,t)):cutprop(schnittset)
+j@t40:=cutapp1b(s,cutprop(schnittset),[x:rat][t:urt(s,x)]t39(x,t)):cutprop(schnittset)
+lx@t41:=nonemptyapp(cut,t0,p1b,cutprop(schnittset),[y:cut][t:in(y,t0)]t40(y,t)):cutprop(schnittset)
+i@t42:=cutapp1a(r,cutprop(schnittset),[x:rat][t:lrt(r,x)]t41(x,t)):cutprop(schnittset)
+p2@t43:=nonemptyapp(cut,s0,p1a,cutprop(schnittset),[y:cut][t:in(y,s0)]t42(y,t)):cutprop(schnittset)
+snt:=cutof(schnittset,t43):cut
+[r:cut][l:less(r,snt)][x0:rat][ux:urt(r,x0)][lx:lrt(snt,x0)]
+t44:=ini(schnittset,t43,x0,lx):in"rt"(x0,schnittset)
+t45:=estie(rat,[x:rat]schnittprop(x),x0,t44):schnittprop(x0)
+[s:cut][a:and(in(s,s0),lrt(s,x0))]
+t46:=ande1(in(s,s0),lrt(s,x0),a):in(s,s0)
+t47:=ande2(in(s,s0),lrt(s,x0),a):lrt(s,x0)
+t48:=andi(urt(r,x0),lrt(s,x0),ux,t47):and(urt(r,x0),lrt(s,x0))
+t49:=somei(rat,[x:rat]and(urt(r,x),lrt(s,x)),x0,t48):less(r,s)
+t50:=ec3e23(is(s,r),more(s,r),less(s,r),satz123b(s,r),satz122(r,s,t49)):not(less(s,r))
+t51:=th3"l.imp"(in(r,t0),less(s,r),t50,<r><t46><s>p2):not(in(r,t0))
+t52:=ore1(in(r,s0),in(r,t0),<r>p0,t51):in(r,s0)
+lx@t53:=someapp(cut,[y:cut]and(in(y,s0),lrt(y,x0)),t45,in(r,s0),[y:cut][t:and(in(y,s0),lrt(y,x0))]t52(y,t)):in(r,s0)
+l@t54:=lessapp(r,snt,l,in(r,s0),[x:rat][t:urt(r,x)][u:lrt(snt,x)]t53(x,t,u)):in(r,s0)
+r@[m:more(r,snt)][x0:rat][lx:lrt(r,x0)][ux:urt(snt,x0)][i:in(r,s0)]
+t55:=andi(in(r,s0),lrt(r,x0),i,lx):and(in(r,s0),lrt(r,x0))
+t56:=somei(cut,[y:cut]and(in(y,s0),lrt(y,x0)),r,t55):schnittprop(x0)
+t57:=estii(rat,[x:rat]schnittprop(x),x0,t56):in"rt"(x0,schnittset)
+t58:=ine(schnittset,t43,x0,t57):lrt(snt,x0)
+ux@t59:=th3"l.imp"(in(r,s0),lrt(snt,x0),ux,[t:in(r,s0)]t58(t)):not(in(r,s0))
+t60:=ore2(in(r,s0),in(r,t0),<r>p0,t59):in(r,t0)
+m@t61:=moreapp(r,snt,m,in(r,t0),[x:rat][t:lrt(r,x)][u:urt(snt,x)]t60(x,t,u)):in(r,t0)
+p2@t62:=andi(prop1(snt),prop2(snt),[x:cut][t:less(x,snt)]t54(x,t),[x:cut][t:more(x,snt)]t61(x,t)):prop3(snt)
+t63:=somei(cut,[x:cut]prop3(x),snt,t62):some([x:cut]prop3(x))
+-5p205
+satzp205:=onei(cut,[x:cut]prop3".5p205"(x),t10".5p205",t63".5p205"):one([x:cut]and(all([y:cut][t:less(y,x)]in(y,s0)),all([y:cut][t:more(y,x)]in(y,t0))))
+schnitt:=ind(cut,[x:cut]prop3".5p205"(x),satzp205):cut
+satzp205a:=ande1(prop1".5p205"(schnitt),prop2".5p205"(schnitt),oneax(cut,[x:cut]prop3".5p205"(x),satzp205)):all([x:cut][t:less(x,schnitt)]in(x,s0))
+satzp205b:=ande2(prop1".5p205"(schnitt),prop2".5p205"(schnitt),oneax(cut,[x:cut]prop3".5p205"(x),satzp205)):all([x:cut][t:more(x,schnitt)]in(x,t0))
+@[r:cut][s:cut]
++ivad
+@i:=1rp:cut
+r@r1:=pl(r,i):cut
+s@s1:=pl(s,i):cut
+rps:=pl(r,s):cut
+@2:=pl(i,i):cut
+s@t1:=pdeq12a(r1,i,s1,i):eq(pd(pdofrp(r),pdofrp(s)),df(pl(r1,s1),2))
+t2:=tris(cut,pl(r1,s1),pl(rps,2),pl(pl(rps,i),i),4pl23(r,i,s,i),asspl2(rps,i,i)):is(pl(r1,s1),pl(pl(rps,i),i))
+t3:=ispl1(pl(r1,s1),pl(pl(rps,i),i),i,t2):is(pl(pl(r1,s1),i),pl(pl(pl(rps,i),i),i))
+t4:=tris(cut,pl(pl(r1,s1),i),pl(pl(pl(rps,i),i),i),pl(pl(rps,i),2),t3,asspl1(pl(rps,i),i,i)):is(pl(pl(r1,s1),i),pl(pl(rps,i),2))
+t5:=eqi12(pl(r1,s1),2,pl(rps,i),i,t4):eq(df(pl(r1,s1),2),pdofrp(rps))
+-ivad
+lemmaivad1:=treq(pd(pdofrp(r),pdofrp(s)),df(pl(pl(r,1rp),pl(s,1rp)),pl(1rp,1rp)),pdofrp(pl(r,s)),t1".ivad",t5".ivad"):eq(pd(pdofrp(r),pdofrp(s)),pdofrp(pl(r,s)))
++*ivad
+s@rs:=ts(r,s):cut
+t6:=tdeq12a(r1,i,s1,i):eq(td(pdofrp(r),pdofrp(s)),df(pl(ts(r1,s1),ts(i,i)),pl(ts(r1,i),ts(i,s1))))
+t7:=tris(cut,ts(r1,s),pl(rs,ts(i,s)),pl(rs,s),disttp1(r,i,s),ispl2(ts(i,s),s,rs,satz151b(s))):is(ts(r1,s),pl(rs,s))
+t8:=tr3is(cut,ts(r1,s1),pl(ts(r1,s),ts(r1,i)),pl(pl(rs,s),r1),pl(pl(rs,i),rps),disttp2(r1,s,i),ispl12(ts(r1,s),pl(rs,s),ts(r1,i),r1,t7,satz151(r1)),4pl24(rs,s,r,i)):is(ts(r1,s1),pl(pl(rs,i),rps))
+t9:=tris(cut,pl(ts(r1,s1),ts(i,i)),pl(pl(pl(rs,i),rps),i),pl(pl(rs,i),pl(rps,i)),ispl12(ts(r1,s1),pl(pl(rs,i),rps),ts(i,i),i,t8,satz151(i)),asspl1(pl(rs,i),rps,i)):is(pl(ts(r1,s1),ts(i,i)),pl(pl(rs,i),pl(rps,i)))
+t10:=tris(cut,pl(pl(ts(r1,s1),ts(i,i)),i),pl(pl(pl(rs,i),pl(rps,i)),i),pl(pl(rs,i),pl(pl(rps,i),i)),ispl1(pl(ts(r1,s1),ts(i,i)),pl(pl(rs,i),pl(rps,i)),i,t9),asspl1(pl(rs,i),pl(rps,i),i)):is(pl(pl(ts(r1,s1),ts(i,i)),i),pl(pl(rs,i),pl(pl(rps,i),i)))
+t11:=tr3is(cut,pl(pl(rps,i),i),pl(rps,2),pl(r1,s1),pl(ts(r1,i),ts(i,s1)),asspl1(rps,i,i),4pl23(r,s,i,i),ispl12(r1,ts(r1,i),s1,ts(i,s1),satz151a(r1),satz151c(s1))):is(pl(pl(rps,i),i),pl(ts(r1,i),ts(i,s1)))
+t12:=tris(cut,pl(pl(ts(r1,s1),ts(i,i)),i),pl(pl(rs,i),pl(pl(rps,i),i)),pl(pl(rs,i),pl(ts(r1,i),ts(i,s1))),t10,ispl2(pl(pl(rps,i),i),pl(ts(r1,i),ts(i,s1)),pl(rs,i),t11)):is(pl(pl(ts(r1,s1),ts(i,i)),i),pl(pl(rs,i),pl(ts(r1,i),ts(i,s1))))
+t13:=eqi12(pl(ts(r1,s1),ts(i,i)),pl(ts(r1,i),ts(i,s1)),pl(rs,i),i,t12):eq(df(pl(ts(r1,s1),ts(i,i)),pl(ts(r1,i),ts(i,s1))),pdofrp(rs))
+-ivad
+s@lemmaivad2:=treq(td(pdofrp(r),pdofrp(s)),df(pl(ts(pl(r,1rp),pl(s,1rp)),ts(1rp,1rp)),pl(ts(pl(r,1rp),1rp),ts(1rp,pl(s,1rp)))),pdofrp(ts(r,s)),t6".ivad",t13".ivad"):eq(td(pdofrp(r),pdofrp(s)),pdofrp(ts(r,s)))
+[m:mored(pdofrp(r),pdofrp(s))]
++*ivad
+m@t14:=morede12(r1,i,s1,i,m):more(pl(r1,i),pl(s1,i))
+t15:=satz136a(r1,s1,i,t14):more(r1,s1)
+-ivad
+m@lemmaivad3:=satz136a(r,s,1rp,t15".ivad"):more(r,s)
+@[c:dif][a:dif][b:dif][n:not(negd(a))][o:not(negd(b))][e:eq(td(a,a),c)][f:eq(td(b,b),c)]
++d161
+t1:=treq2(td(a,a),td(b,b),c,e,f):eq(td(a,a),td(b,b))
+t2:=treq(pd(md(td(a,a),td(a,b)),td(b,a)),pd(md(td(a,a),td(a,b)),td(a,b)),td(a,a),eqpd2(td(b,a),td(a,b),md(td(a,a),td(a,b)),comtd(b,a)),pdmd(td(a,a),td(a,b))):eq(pd(md(td(a,a),td(a,b)),td(b,a)),td(a,a))
+t3:=tr4eq(td(pd(a,b),md(a,b)),pd(td(a,md(a,b)),td(b,md(a,b))),pd(md(td(a,a),td(a,b)),md(td(b,a),td(b,b))),md(pd(md(td(a,a),td(a,b)),td(b,a)),td(b,b)),md(td(a,a),td(b,b)),disttpd1(a,b,md(a,b)),eqpd12(td(a,md(a,b)),md(td(a,a),td(a,b)),td(b,md(a,b)),md(td(b,a),td(b,b)),disttmd2(a,a,b),disttmd2(b,a,b)),asspd2(md(td(a,a),td(a,b)),td(b,a),m0d(td(b,b))),eqmd1(pd(md(td(a,a),td(a,b)),td(b,a)),td(a,a),td(b,b),t2)):eq(td(pd(a,b),md(a,b)),md(td(a,a),td(b,b)))
+t4:=eqzero(md(td(a,a),td(b,b)),td(pd(a,b),md(a,b)),symeq(td(pd(a,b),md(a,b)),md(td(a,a),td(b,b)),t3),satzd182e(td(a,a),td(b,b),t1)):zero(td(pd(a,b),md(a,b)))
+t5:=satzd192c(pd(a,b),md(a,b),t4):or(zero(pd(a,b)),zero(md(a,b)))
+[z:zero(a)]
+t6:=eqzero(td(a,a),td(b,b),t1,td01(a,a,z)):zero(td(b,b))
+t7:=th1"l.imp"(zero(b),zero(b),refimp(zero(b)),satzd192c(b,b,t6)):zero(b)
+t8:=zeroeq(a,b,z,t7):eq(a,b)
+f@[p:not(zero(a))]
+t9:=or3e2(zero(a),posd(a),negd(a),axrdo(a),n,p):posd(a)
+t10:=th3"l.imp"(zero(b),zero(a),p,[t:zero(b)]t7(b,a,o,n,f,e,t)):not(zero(b))
+t11:=t9(b,a,o,n,f,e,t10):posd(b)
+t12:=pnot0d(pd(a,b),ppd(a,b,t9,t11)):not(zero(pd(a,b)))
+t13:=ore2(zero(pd(a,b)),zero(md(a,b)),t5,t12):zero(md(a,b))
+t14:=satzd182b(a,b,t13):eq(a,b)
+-d161
+satzd161b:=th1"l.imp"(zero(a),eq(a,b),[t:zero(a)]t8".d161"(t),[t:not(zero(a))]t14".d161"(t)):eq(a,b)
+c@[n:not(negd(c))]
++*d161
+n@[z:zero(c)]
+t15:=zeroeq(td(c,c),c,td01(c,c,z),z):eq(td(c,c),c)
+t16:=andi(not(negd(c)),eq(td(c,c),c),n,t15):and(not(negd(c)),eq(td(c,c),c))
+t17:=somei(dif,[x:dif]and(not(negd(x)),eq(td(x,x),c)),c,t16):some"l"(dif,[x:dif]and(not(negd(x)),eq(td(x,x),c)))
+n@[o:not(zero(c))]
+t18:=or3e2(zero(c),posd(c),negd(c),axrdo(c),n,o):posd(c)
+crp:=rpofpd(c,t18):cut
+srp:=sqrt(crp):cut
+s:=pdofrp(srp):dif
+t19:=tr3eq(td(s,s),pdofrp(ts(srp,srp)),pdofrp(crp),c,lemmaivad2(srp,srp),isrpepd(ts(srp,srp),crp,thsqrt1(crp)),eqpdrp2(c,t18)):eq(td(s,s),c)
+t20:=andi(not(negd(s)),eq(td(s,s),c),pnotnd(s,posdirp(srp)),t19):and(not(negd(s)),eq(td(s,s),c))
+t21:=somei(dif,[x:dif]and(not(negd(x)),eq(td(x,x),c)),s,t20):some"l"(dif,[x:dif]and(not(negd(x)),eq(td(x,x),c)))
+-d161
+n@satzd161a:=th1"l.imp"(zero(c),some"l"(dif,[x:dif]and(not(negd(x)),eq(td(x,x),c))),[t:zero(c)]t17".d161"(t),[t:not(zero(c))]t21".d161"(t)):some"l"(dif,[x:dif]and(not(negd(x)),eq(td(x,x),c)))
+@[a:dif][i:intd(a)]
++intd
+[z:zero(a)]
+t1:=ori1(zero(absd(a)),natd(absd(absd(a))),satzd166f(a,z)):intd(absd(a))
+i@[n:natd(absd(a))]
+t2:=natintd(absd(a),n):intd(absd(a))
+-intd
+intabsd:=orapp(zero(a),natd(absd(a)),intd(absd(a)),i,[t:zero(a)]t1".intd"(t),[t:natd(absd(a))]t2".intd"(t)):intd(absd(a))
++*intd
+n@t4:=eqnatd(absd(a),absd(m0d(a)),satzd178a(a),n):natd(absd(m0d(a)))
+-intd
+i@intm0d:=th9"l.or"(zero(a),natd(absd(a)),zero(m0d(a)),natd(absd(m0d(a))),i,[t:zero(a)]satzd176b(a,t),[t:natd(absd(a))]t4".intd"(t)):intd(m0d(a))
+a@[b:dif][i:intd(a)][j:intd(b)]
++*intd
+j@[z:zero(a)]
+t5:=symeq(pd(a,b),b,pd01(a,b,z)):eq(b,pd(a,b))
+t6:=eqintd(b,pd(a,b),t5,j):intd(pd(a,b))
+j@[z:zero(b)]
+t7:=symeq(pd(a,b),a,pd02(a,b,z)):eq(a,pd(a,b))
+t8:=eqintd(a,pd(a,b),t7,i):intd(pd(a,b))
+a@[i:intd(a)][p:posd(a)]
+t9:=<p>ande2(posd(a),[t:posd(a)]natrp(rpofpd(a,t)),posintnatd(a,p,i)):natrp(rpofpd(a,p))
+j@[pp:posd(pd(a,b))]
+apb1:=rpofpd(pd(a,b),pp):cut
+[p:posd(a)]
+a1:=rpofpd(a,p):cut
+[q:posd(b)]
+b1:=rpofpd(b,q):cut
+t10:=natpl(a1,t9(a,i,p),b1,t9(b,j,q)):natrp(pl(a1,b1))
+t11:=eqpd12(a,pdofrp(a1),b,pdofrp(b1),eqpdrp1(a,p),eqpdrp1(b,q)):eq(pd(a,b),pd(pdofrp(a1),pdofrp(b1)))
+t12:=treq(pd(a,b),pd(pdofrp(a1),pdofrp(b1)),pdofrp(pl(a1,b1)),t11,lemmaivad1(a1,b1)):eq(pd(a,b),pdofrp(pl(a1,b1)))
+t13:=tris(cut,apb1,rpofpd(pdofrp(pl(a1,b1)),posdirp(pl(a1,b1))),pl(a1,b1),eqpderp(pd(a,b),pp,pdofrp(pl(a1,b1)),posdirp(pl(a1,b1)),t12),isrppd2(pl(a1,b1))):is(apb1,pl(a1,b1))
+t14:=isp1(cut,[t:cut]natrp(t),pl(a1,b1),apb1,t10,t13):natrp(apb1)
+t15:=andi(posd(pd(a,b)),[t:posd(pd(a,b))]natrp(apb1(t)),pp,[t:posd(pd(a,b))]t14(t,p,q)):natd(pd(a,b))
+t16:=natintd(pd(a,b),t15):intd(pd(a,b))
+p@[n:negd(b)]
+t17:=satzd176c(b,n):posd(m0d(b))
+b2:=rpofpd(m0d(b),t17):cut
+t18:=eqpd2(b,m0d(m0d(b)),a,satzd177a(b)):eq(pd(a,b),md(a,m0d(b)))
+t19:=eqposd(pd(a,b),md(a,m0d(b)),t18,pp):posd(md(a,m0d(b)))
+t20:=satzd182a(a,m0d(b),t19):mored(a,m0d(b))
+t21:=eqmored12(a,pdofrp(a1),m0d(b),pdofrp(b2),eqpdrp1(a,p),eqpdrp1(m0d(b),t17),t20):mored(pdofrp(a1),pdofrp(b2))
+t22:=lemmaivad3(a1,b2,t21):more(a1,b2)
+t23:=natmn(a1,t9(a,i,p),b2,t9(m0d(b),intm0d(b,j),t17),t22):natrp(mn(a1,b2,t22))
+t24:=eqpd12(m0d(b),pdofrp(b2),pd(a,b),pdofrp(apb1),eqpdrp1(m0d(b),t17),eqpdrp1(pd(a,b),pp)):eq(pd(m0d(b),pd(a,b)),pd(pdofrp(b2),pdofrp(apb1)))
+t25:=tr4eq(a,md(pd(a,b),b),pd(m0d(b),pd(a,b)),pd(pdofrp(b2),pdofrp(apb1)),pdofrp(pl(b2,apb1)),symeq(md(pd(a,b),b),a,mdpd(a,b)),compd(pd(a,b),m0d(b)),t24,lemmaivad1(b2,apb1)):eq(a,pdofrp(pl(b2,apb1)))
+t26:=tris2(cut,pl(b2,apb1),a1,rpofpd(pdofrp(pl(b2,apb1)),posdirp(pl(b2,apb1))),isrppd1(pl(b2,apb1)),eqpderp(a,p,pdofrp(pl(b2,apb1)),posdirp(pl(b2,apb1)),t25)):is(pl(b2,apb1),a1)
+t27:=satz140g(a1,b2,apb1,t22,t26):is(apb1,mn(a1,b2,t22))
+t28:=isp1(cut,[t:cut]natrp(t),mn(a1,b2,t22),apb1,t23,t27):natrp(apb1)
+t29:=andi(posd(pd(a,b)),[t:posd(pd(a,b))]natrp(apb1(t)),pp,[t:posd(pd(a,b))]t28(t,p,n)):natd(pd(a,b))
+t30:=natintd(pd(a,b),t29):intd(pd(a,b))
+p@t31:=rappd(b,intd(pd(a,b)),[t:posd(b)]t16(t),[t:zero(b)]t8(t),[t:negd(b)]t30(t)):intd(pd(a,b))
+pp@[n:negd(a)]
+t31a:=th3"l.imp"(negd(b),negd(pd(a,b)),pnotnd(pd(a,b),pp),[t:negd(b)]npd(a,b,n,t)):not(negd(b))
+t32:=th3"l.imp"(zero(b),negd(pd(a,b)),pnotnd(pd(a,b),pp),[t:zero(b)]eqnegd(a,pd(a,b),symeq(pd(a,b),a,pd02(a,b,t)),n)):not(zero(b))
+t33:=or3e2(zero(b),posd(b),negd(b),axrdo(b),t31a,t32):posd(b)
+t34:=eqposd(pd(a,b),pd(b,a),compd(a,b),pp):posd(pd(b,a))
+t35:=t30(b,a,j,i,t34,t33,n):intd(pd(b,a))
+t36:=eqintd(pd(b,a),pd(a,b),compd(b,a),t35):intd(pd(a,b))
+pp@t37:=rappd(a,intd(pd(a,b)),[t:posd(a)]t31(t),[t:zero(a)]t6(t),[t:negd(a)]t36(t)):intd(pd(a,b))
+j@[0p:zero(pd(a,b))]
+t38:=intdi0(pd(a,b),0p):intd(pd(a,b))
+j@[np:negd(pd(a,b))]
+t39:=satzd176c(pd(a,b),np):posd(m0d(pd(a,b)))
+t40:=eqposd(m0d(pd(a,b)),pd(m0d(a),m0d(b)),satzd180(a,b),t39):posd(pd(m0d(a),m0d(b)))
+t41:=t37(m0d(a),m0d(b),intm0d(a,i),intm0d(b,j),t40):intd(pd(m0d(a),m0d(b)))
+t42:=eqintd(pd(m0d(a),m0d(b)),m0d(pd(a,b)),satzd180a(a,b),t41):intd(m0d(pd(a,b)))
+t43:=intm0d(m0d(pd(a,b)),t42):intd(m0d(m0d(pd(a,b))))
+t44:=eqintd(m0d(m0d(pd(a,b))),pd(a,b),satzd177(pd(a,b)),t43):intd(pd(a,b))
+-intd
+j@intpd:=rappd(pd(a,b),intd(pd(a,b)),[t:posd(pd(a,b))]t37".intd"(t),[t:zero(pd(a,b))]t38".intd"(t),[t:negd(pd(a,b))]t44".intd"(t)):intd(pd(a,b))
+intmd:=intpd(a,m0d(b),i,intm0d(b,j)):intd(md(a,b))
++*intd
+j@[n:not(zero(td(a,b)))]
+t45:=th3"l.imp"(zero(a),zero(td(a,b)),n,[t:zero(a)]td01(a,b,t)):not(zero(a))
+t46:=th3"l.imp"(zero(b),zero(td(a,b)),n,[t:zero(b)]td02(a,b,t)):not(zero(b))
+t47:=satzd166e(a,t45):posd(absd(a))
+a3:=rpofpd(absd(a),t47):cut
+t48:=satzd166e(b,t46):posd(absd(b))
+b3:=rpofpd(absd(b),t48):cut
+t49:=natts(a3,t9(absd(a),intabsd(a,i),t47),b3,t9(absd(b),intabsd(b,j),t48)):natrp(ts(a3,b3))
+t50:=satzd166e(td(a,b),n):posd(absd(td(a,b)))
+[p:posd(absd(td(a,b)))]
+atb3:=rpofpd(absd(td(a,b)),p):cut
+t51:=eqtd12(absd(a),pdofrp(a3),absd(b),pdofrp(b3),eqpdrp1(absd(a),t47),eqpdrp1(absd(b),t48)):eq(td(absd(a),absd(b)),td(pdofrp(a3),pdofrp(b3)))
+t52:=tr3eq(absd(td(a,b)),td(absd(a),absd(b)),td(pdofrp(a3),pdofrp(b3)),pdofrp(ts(a3,b3)),satzd193(a,b),t51,lemmaivad2(a3,b3)):eq(absd(td(a,b)),pdofrp(ts(a3,b3)))
+t53:=tris2(cut,atb3,ts(a3,b3),rpofpd(pdofrp(ts(a3,b3)),posdirp(ts(a3,b3))),eqpderp(absd(td(a,b)),p,pdofrp(ts(a3,b3)),posdirp(ts(a3,b3)),t52),isrppd1(ts(a3,b3))):is(atb3,ts(a3,b3))
+t54:=isp1(cut,[t:cut]natrp(t),ts(a3,b3),atb3,t49,t53):natrp(atb3)
+n@t55:=andi(posd(absd(td(a,b))),[t:posd(absd(td(a,b)))]natrp(atb3(t)),t50,[t:posd(absd(td(a,b)))]t54(t)):natd(absd(td(a,b)))
+-intd
+j@inttd:=[t:not(zero(td(a,b)))]t55".intd"(t):intd(td(a,b))
++r
+@eq:=[x:dif][y:dif]eq"rp"(x,y):[x:dif][y:dif]'prop'
+refeq:=[x:dif]refeq"rp"(x):[x:dif]<x><x>eq
+symeq:=[x:dif][y:dif][t:<y><x>eq]symeq"rp"(x,y,t):[x:dif][y:dif][t:<y><x>eq]<x><y>eq
+treq:=[x:dif][y:dif][z:dif][t:<y><x>eq][u:<z><y>eq]treq"rp"(x,y,z,t,u):[x:dif][y:dif][z:dif][t:<y><x>eq][u:<z><y>eq]<z><x>eq
+[a:dif][s:set(dif)]
+inn:=esti(dif,a,s):'prop'
+@real:=ect"eq"(dif,eq,refeq,symeq,treq):'type'
+[r:real][s:real]
+is:=is"e"(real,r,s):'prop'
+nis:=not(is(r,s)):'prop'
+@[p:[x:real]'prop']
+some:=some"l"(real,p):'prop'
+all:=all"l"(real,p):'prop'
+one:=one"e"(real,p):'prop'
+r@[s0:set(real)]
+in:=esti(real,r,s0):'prop'
+a@realof:=ectelt"eq"(dif,eq,refeq,symeq,treq,a):real
+r@class:=ecect"eq"(dif,eq,refeq,symeq,treq,r):set(dif)
+a@innclass:=th5"eq.4"(dif,eq,refeq,symeq,treq,a):inn(a,class(realof(a)))
+r@[a:dif][b:dif][e:eq"rp"(a,b)][air:inn(a,class(r))]
+eqinn:=th8"eq.4"(dif,eq,refeq,symeq,treq,r,a,air,b,e):inn(b,class(r))
+r@[p:'prop'][p1:[x:dif][xi:inn(x,class(r))]p]
+realapp1:=th3"eq.4"(dif,eq,refeq,symeq,treq,r,p,p1):p
+r@[s:real][p:'prop'][p1:[x:dif][y:dif][xi:inn(x,class(r))][yi:inn(y,class(s))]p]
++ivr1
+[a:dif][air:inn(a,class(r))]
+t1:=realapp1(s,p,[y:dif]<air><y><a>p1):p
+-ivr1
+realapp2:=realapp1(r,p,[x:dif][xi:inn(x,class(r))]t1".ivr1"(x,xi)):p
+s@[t:real][p:'prop'][p1:[x:dif][y:dif][z:dif][xi:inn(x,class(r))][yi:inn(y,class(s))][zi:inn(z,class(t))]p]
++*ivr1
+p1@[a:dif][air:inn(a,class(r))]
+t2:=realapp2(s,t,p,[y:dif][z:dif]<air><z><y><a>p1):p
+-ivr1
+p1@realapp3:=realapp1(r,p,[x:dif][xi:inn(x,class(r))]t2".ivr1"(x,xi)):p
+t@[u:real][p:'prop'][p1:[x:dif][y:dif][z:dif][v:dif][xi:inn(x,class(r))][yi:inn(y,class(s))][zi:inn(z,class(t))][vi:inn(v,class(u))]p]
++*ivr1
+p1@[a:dif][air:inn(a,class(r))]
+t3:=realapp3(s,t,u,p,[y:dif][z:dif][v:dif]<air><v><z><y><a>p1):p
+-ivr1
+p1@realapp4:=realapp1(r,p,[x:dif][xi:inn(x,class(r))]t3".ivr1"(x,xi)):p
+s@[a1:dif][b1:dif][a1ir:inn(a1,class(r))][b1is:inn(b1,class(s))][e:eq"rp"(a1,b1)]
+isin:=th3"eq.5"(dif,eq,refeq,symeq,treq,r,s,a1,a1ir,b1,b1is,e):is(r,s)
+b1is@[i:is(r,s)]
+isex:=th5"eq.5"(dif,eq,refeq,symeq,treq,r,s,a1,a1ir,b1,b1is,i):eq"rp"(a1,b1)
+b1is@[n:not(eq"rp"(a1,b1))]
+nisin:=th3"l.imp"(is(r,s),eq"rp"(a1,b1),n,[t:is(r,s)]isex(t)):nis(r,s)
+b1is@[n:nis(r,s)]
+nisex:=th3"l.imp"(eq"rp"(a1,b1),is(r,s),n,[t:eq"rp"(a1,b1)]isin(t)):not(eq"rp"(a1,b1))
+@[alpha:'type'][f:[x:dif]alpha]
+fixf:=fixfu"eq"(dif,eq,refeq,symeq,treq,alpha,f):'prop'
+[ff:fixf(alpha,f)][r0:real]
+indreal:=indeq"eq"(dif,eq,refeq,symeq,treq,alpha,f,ff,r0):alpha
+[a:dif][air:inn(a,class(r0))]
+isindreal:=th2"eq.10"(dif,eq,refeq,symeq,treq,alpha,f,ff,r0,a,air):is"e"(alpha,<a>f,indreal)
+alpha@[g:[x:dif][y:dif]alpha]
+fixf2:=fixfu2"eq"(dif,eq,refeq,symeq,treq,alpha,g):'prop'
+[ff2:fixf2(alpha,g)][r0:real][s0:real]
+indreal2:=indeq2"eq"(dif,eq,refeq,symeq,treq,alpha,g,ff2,r0,s0):alpha
+[a:dif][b:dif][air:inn(a,class(r0))][bis:inn(b,class(s0))]
+isindreal2:=th1"eq.11"(dif,eq,refeq,symeq,treq,alpha,g,ff2,r0,s0,a,air,b,bis):is"e"(alpha,<b><a>g,indreal2)
+@0:=realof(df(1rp,1rp)):real
+r@[a0:dif][a0ir:inn(a0,class(r))][z:zero(a0)]
+0in:=isin(r,0,a0,df(1rp,1rp),a0ir,innclass(df(1rp,1rp)),zeroeq(a0,df(1rp,1rp),z,zeroi(1rp,1rp,refis(cut,1rp)))):is(r,0)
+a0ir@[i:is(r,0)]
+0ex:=eqzero(df(1rp,1rp),a0,isex(0,r,df(1rp,1rp),a0,innclass(df(1rp,1rp)),a0ir,symis(real,r,0,i)),tris(cut,stm(df(1rp,1rp)),1rp,std(df(1rp,1rp)),stmis(1rp,1rp),isstd(1rp,1rp))):zero(a0)
++*ivr1
+a0@propp:=and(inn(a0,class(r)),posd(a0)):'prop'
+-ivr1
+r@pos:=some"l"(dif,[x:dif]propp".ivr1"(x)):'prop'
+a0ir@[p:posd(a0)]
++*ivr1
+p@t4:=andi(inn(a0,class(r)),posd(a0),a0ir,p):propp(a0)
+-ivr1
+p@posin:=somei(dif,[x:dif]propp".ivr1"(x),a0,t4".ivr1"):pos(r)
+a0ir@[p:pos(r)]
++*ivr1
+p@[a:dif][q1:propp(a)]
+t5:=ande1(inn(a,class(r)),posd(a),q1):inn(a,class(r))
+t6:=ande2(inn(a,class(r)),posd(a),q1):posd(a)
+t7:=eqposd(a,a0,isex(r,r,a,a0,t5,a0ir,refis(real,r)),t6):posd(a0)
+-ivr1
+p@posex:=someapp(dif,[x:dif]propp".ivr1"(x),p,posd(a0),[x:dif][t:propp".ivr1"(x)]t7".ivr1"(x,t)):posd(a0)
++*ivr1
+a0@propn:=and(inn(a0,class(r)),negd(a0)):'prop'
+-ivr1
+r@neg:=some"l"(dif,[x:dif]propn".ivr1"(x)):'prop'
+a0ir@[n:negd(a0)]
++*ivr1
+n@t8:=andi(inn(a0,class(r)),negd(a0),a0ir,n):propn(a0)
+-ivr1
+n@negin:=somei(dif,[x:dif]propn".ivr1"(x),a0,t8".ivr1"):neg(r)
+a0ir@[n:neg(r)]
++*ivr1
+n@[a:dif][pl:propn(a)]
+t9:=ande1(inn(a,class(r)),negd(a),pl):inn(a,class(r))
+t10:=ande2(inn(a,class(r)),negd(a),pl):negd(a)
+t11:=eqnegd(a,a0,isex(r,r,a,a0,t9,a0ir,refis(real,r)),t10):negd(a0)
+-ivr1
+n@negex:=someapp(dif,[x:dif]propn".ivr1"(x),n,negd(a0),[x:dif][t:propn".ivr1"(x)]t11".ivr1"(x,t)):negd(a0)
++*ivr1
+a0ir@[p:posd(a0)]
+t12:=or3i2(is(r,0),pos(r),neg(r),posin(p)):or3(is(r,0),pos(r),neg(r))
+a0ir@[z:zero(a0)]
+t13:=or3i1(is(r,0),pos(r),neg(r),0in(z)):or3(is(r,0),pos(r),neg(r))
+a0ir@[n:negd(a0)]
+t14:=or3i3(is(r,0),pos(r),neg(r),negin(n)):or3(is(r,0),pos(r),neg(r))
+a0ir@t15:=rappd(a0,or3(is(r,0),pos(r),neg(r)),[t:posd(a0)]t12(t),[t:zero(a0)]t13(t),[t:negd(a0)]t14(t)):or3(is(r,0),pos(r),neg(r))
+-ivr1
+r@axrlo:=realapp1(r,or3(is(r,0),pos(r),neg(r)),[x:dif][xi:inn(x,class(r))]t15".ivr1"(x,xi)):or3(is(r,0),pos(r),neg(r))
++*ivr1
+a0ir@[i:is(r,0)]
+t16:=th3"l.imp"(pos(r),posd(a0),0notpd(a0,0ex(i)),[t:pos(r)]posex(t)):not(pos(r))
+a0ir@[p:pos(r)]
+t17:=th3"l.imp"(neg(r),negd(a0),pnotnd(a0,posex(p)),[t:neg(r)]negex(t)):not(neg(r))
+a0ir@[n:neg(r)]
+t18:=th3"l.imp"(is(r,0),zero(a0),nnot0d(a0,negex(n)),[t:is(r,0)]0ex(t)):not(is(r,0))
+a0ir@t19:=th6"l.ec3"(is(r,0),pos(r),neg(r),[t:is(r,0)]t16(t),[t:pos(r)]t17(t),[t:neg(r)]t18(t)):ec3(is(r,0),pos(r),neg(r))
+-ivr1
+r@axrle:=realapp1(r,ec3(is(r,0),pos(r),neg(r)),[x:dif][xi:inn(x,class(r))]t19".ivr1"(x,xi)):ec3(is(r,0),pos(r),neg(r))
+axrl:=orec3i(is(r,0),pos(r),neg(r),axrlo,axrle):orec3(is(r,0),pos(r),neg(r))
+[p:'prop'][p1:[t:pos(r)]p][p2:[t:is(r,0)]p][p3:[t:neg(r)]p]
+rapp:=or3app(is(r,0),pos(r),neg(r),p,axrlo,p2,p1,p3):p
+r@[p:pos(r)]
+pnotn:=ec3e23(is(r,0),pos(r),neg(r),axrle,p):not(neg(r))
+pnot0:=ec3e21(is(r,0),pos(r),neg(r),axrle,p):nis(r,0)
+r@[i:is(r,0)]
+0notp:=ec3e12(is(r,0),pos(r),neg(r),axrle,i):not(pos(r))
+0notn:=ec3e13(is(r,0),pos(r),neg(r),axrle,i):not(neg(r))
+r@[n:neg(r)]
+nnotp:=ec3e32(is(r,0),pos(r),neg(r),axrle,n):not(pos(r))
+nnot0:=ec3e31(is(r,0),pos(r),neg(r),axrle,n):nis(r,0)
+s@[i:is(r,s)][p:pos(r)]
+ispos:=isp(real,[x:real]pos(x),r,s,p,i):pos(s)
+i@[n:neg(r)]
+isneg:=isp(real,[x:real]neg(x),r,s,n,i):neg(s)
+@[r0:cut]
+pofrp:=realof(pdofrp(r0)):real
+nofrp:=realof(ndofrp(r0)):real
+[s0:cut][i:is"rp"(r0,s0)]
+isrpep:=isf(cut,real,[x:cut]pofrp(x),r0,s0,i):is(pofrp(r0),pofrp(s0))
+isrpen:=isf(cut,real,[x:cut]nofrp(x),r0,s0,i):is(nofrp(r0),nofrp(s0))
+s0@[i:is(pofrp(r0),pofrp(s0))]
++*ivr1
+i"r"@t20:=isex(pofrp(r0),pofrp(s0),pdofrp(r0),pdofrp(s0),innclass(pdofrp(r0)),innclass(pdofrp(s0)),i):eq"rp"(pdofrp(r0),pdofrp(s0))
+-ivr1
+i@isrpip:=isrpipd(r0,s0,t20".ivr1"):is"rp"(r0,s0)
+s0@[i:is(nofrp(r0),nofrp(s0))]
++*ivr1
+i"r"@t21:=isex(nofrp(r0),nofrp(s0),ndofrp(r0),ndofrp(s0),innclass(ndofrp(r0)),innclass(ndofrp(s0)),i):eq"rp"(ndofrp(r0),ndofrp(s0))
+-ivr1
+i@isrpin:=isrpind(r0,s0,t21".ivr1"):is"rp"(r0,s0)
+r0@posi:=posin(pofrp(r0),pdofrp(r0),innclass(pdofrp(r0)),posdirp(r0)):pos(pofrp(r0))
+negi:=negin(nofrp(r0),ndofrp(r0),innclass(ndofrp(r0)),negdirp(r0)):neg(nofrp(r0))
+s@[r0:cut][s0:cut][i:is(r,pofrp(r0))][j:is(s,pofrp(s0))][k:is(r,s)]
++*ivr1
+k@t22:=isrpip(r0,s0,tr3is(real,pofrp(r0),r,s,pofrp(s0),symis(real,r,pofrp(r0),i),k,j)):is"rp"(r0,s0)
+r@t23:=[x:cut][y:cut][t:is(r,pofrp(x))][u:is(r,pofrp(y))]t22(r,r,x,y,t,u,refis(real,r)):amone(cut,[x:cut]is(r,pofrp(x)))
+a0ir@[p1:pos(r)]
+t24:=posex(p1):posd(a0)
+pr:=rpofpd(a0,t24):cut
+t25:=isin(r,pofrp(pr),a0,pdofrp(pr),a0ir,innclass(pdofrp(pr)),eqpdrp1(a0,t24)):is(r,pofrp(pr))
+t26:=somei(cut,[x:cut]is(r,pofrp(x)),pr,t25):some"rp"([x:cut]is(r,pofrp(x)))
+-ivr1
+r@[p:pos(r)]
++*ivr1
+p"r"@t27:=realapp1(some"rp"([x:cut]is(r,pofrp(x))),[x:dif][t:inn(x,class(r))]t26(x,t,p)):some"rp"([x:cut]is(r,pofrp(x)))
+t28:=onei(cut,[x:cut]is(r,pofrp(x)),t23,t27):one"rp"([x:cut]is(r,pofrp(x)))
+-ivr1
+p@rpofp:=ind(cut,[x:cut]is(r,pofrp(x)),t28".ivr1"):cut
+isprp1:=oneax(cut,[x:cut]is(r,pofrp(x)),t28".ivr1"):is(r,pofrp(rpofp(r,p)))
+isprp2:=symis(real,r,pofrp(rpofp(r,p)),isprp1):is(pofrp(rpofp(r,p)),r)
+@[r1:real][p:pos(r1)][s1:real][q:pos(s1)][i:is(r1,s1)]
+isperp:=t22".ivr1"(r1,s1,rpofp(r1,p),rpofp(s1,q),isprp1(r1,p),isprp1(s1,q),i):is"rp"(rpofp(r1,p),rpofp(s1,q))
+q@[i:is"rp"(rpofp(r1,p),rpofp(s1,q))]
+ispirp:=tr3is(real,r1,pofrp(rpofp(r1,p)),pofrp(rpofp(s1,q)),s1,isprp1(r1,p),isrpep(rpofp(r1,p),rpofp(s1,q),i),isprp2(s1,q)):is(r1,s1)
+@[r0:cut]
+isrpp1:=t22".ivr1"(pofrp(r0),pofrp(r0),r0,rpofp(pofrp(r0),posi(r0)),refis(real,pofrp(r0)),isprp1(pofrp(r0),posi(r0)),refis(real,pofrp(r0))):is"rp"(r0,rpofp(pofrp(r0),posi(r0)))
+isrpp2:=symis(cut,r0,rpofp(pofrp(r0),posi(r0)),isrpp1):is"rp"(rpofp(pofrp(r0),posi(r0)),r0)
+s@[r0:cut][s0:cut][i:is(r,nofrp(r0))][j:is(s,nofrp(s0))][k:is(r,s)]
++*ivr1
+k@t29:=isrpin(r0,s0,tr3is(real,nofrp(r0),r,s,nofrp(s0),symis(real,r,nofrp(r0),i),k,j)):is"rp"(r0,s0)
+r@t30:=[x:cut][y:cut][t:is(r,nofrp(x))][u:is(r,nofrp(y))]t29(r,r,x,y,t,u,refis(real,r)):amone(cut,[x:cut]is(r,nofrp(x)))
+a0ir@[n1:neg(r)]
+t31:=negex(n1):negd(a0)
+nr:=rpofnd(a0,t31):cut
+t32:=isin(r,nofrp(nr),a0,ndofrp(nr),a0ir,innclass(ndofrp(nr)),eqndrp1(a0,t31)):is(r,nofrp(nr))
+t33:=somei(cut,[x:cut]is(r,nofrp(x)),nr,t32):some"rp"([x:cut]is(r,nofrp(x)))
+-ivr1
+r@[n:neg(r)]
++*ivr1
+n"r"@t34:=realapp1(some"rp"([x:cut]is(r,nofrp(x))),[x:dif][t:inn(x,class(r))]t33(x,t,n)):some"rp"([x:cut]is(r,nofrp(x)))
+t35:=onei(cut,[x:cut]is(r,nofrp(x)),t30,t34):one"rp"([x:cut]is(r,nofrp(x)))
+-ivr1
+n@rpofn:=ind(cut,[x:cut]is(r,nofrp(x)),t35".ivr1"):cut
+isnrp1:=oneax(cut,[x:cut]is(r,nofrp(x)),t35".ivr1"):is(r,nofrp(rpofn(r,n)))
+isnrp2:=symis(real,r,nofrp(rpofn(r,n)),isnrp1):is(nofrp(rpofn(r,n)),r)
+@[r1:real][n:neg(r1)][s1:real][m:neg(s1)][i:is(r1,s1)]
+isnerp:=t29".ivr1"(r1,s1,rpofn(r1,n),rpofn(s1,m),isnrp1(r1,n),isnrp1(s1,m),i):is"rp"(rpofn(r1,n),rpofn(s1,m))
+m@[i:is"rp"(rpofn(r1,n),rpofn(s1,m))]
+isnirp:=tr3is(real,r1,nofrp(rpofn(r1,n)),nofrp(rpofn(s1,m)),s1,isnrp1(r1,n),isrpen(rpofn(r1,n),rpofn(s1,m),i),isnrp2(s1,m)):is(r1,s1)
+@[r0:cut]
+isrpn1:=t29".ivr1"(nofrp(r0),nofrp(r0),r0,rpofn(nofrp(r0),negi(r0)),refis(real,nofrp(r0)),isnrp1(nofrp(r0),negi(r0)),refis(real,nofrp(r0))):is"rp"(r0,rpofn(nofrp(r0),negi(r0)))
+isrpn2:=symis(cut,r0,rpofn(nofrp(r0),negi(r0)),isrpn1):is"rp"(rpofn(nofrp(r0),negi(r0)),r0)
+r@satz163:=refis(real,r):is(r,r)
+s@[i:is(r,s)]
+satz164:=symis(real,r,s,i):is(s,r)
+t@[i:is(r,s)][j:is(s,t)]
+satz165:=tris(real,r,s,t,i,j):is(r,t)
+@absdr:=[x:dif]realof(absd(x)):[x:dif]real
++ivr2
+[a:dif][b:dif][e:eq"rp"(a,b)]
+t1:=isin(realof(absd(a)),realof(absd(b)),absd(a),absd(b),innclass(absd(a)),innclass(absd(b)),eqabsd(a,b,e)):is(<a>absdr,<b>absdr)
+-ivr2
+fabsdr:=[x:dif][y:dif][t:<y><x>eq]t1".ivr2"(x,y,t):fixf(real,absdr)
+r@abs:=indreal(real,absdr,fabsdr,r):real
++*ivr2
+a0ir@t2:=isindreal(real,absdr,fabsdr,r,a0,a0ir):is(realof(absd(a0)),abs(r))
+-ivr2
+a0ir@aica:=isp(real,[x:real]inn(absd(a0),class(x)),realof(absd(a0)),abs(r),innclass(absd(a0)),t2".ivr2"):inn(absd(a0),class(abs(r)))
+s@[i:is(r,s)]
+isabs:=isf(real,real,[x:real]abs(x),r,s,i):is(abs(r),abs(s))
++2r166
+a0ir@[p:pos(r)]
+t1:=satzd166a(a0,posex(p)):posd(absd(a0))
+t2:=posin(abs(r),absd(a0),aica,t1):pos(abs(r))
+-2r166
+r@[p:pos(r)]
+satz166a:=realapp1(pos(abs(r)),[x:dif][t:inn(x,class(r))]t2".2r166"(x,t,p)):pos(abs(r))
++*2r166
+a0ir@[n:neg(r)]
+t3:=satzd166b(a0,negex(n)):posd(absd(a0))
+t4:=posin(abs(r),absd(a0),aica,t3):pos(abs(r))
+-2r166
+r@[n:neg(r)]
+satz166b:=realapp1(pos(abs(r)),[x:dif][t:inn(x,class(r))]t4".2r166"(x,t,n)):pos(abs(r))
++*2r166
+b1is@[p:pos(r)][q:pos(s)][i:is(abs(r),abs(s))]
+t5:=satzd166c(a1,b1,posex(r,a1,a1ir,p),posex(s,b1,b1is,q),isex(abs(r),abs(s),absd(a1),absd(b1),aica(r,a1,a1ir),aica(s,b1,b1is),i)):eq"rp"(a1,b1)
+t6:=isin(t5):is(r,s)
+-2r166
+s@[p:pos(r)][q:pos(s)][i:is(abs(r),abs(s))]
+satz166c:=realapp2(is(r,s),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t6".2r166"(x,y,t,u,p,q,i)):is(r,s)
++*2r166
+b1is@[n:neg(r)][o:neg(s)][i:is(abs(r),abs(s))]
+t7:=satzd166d(a1,b1,negex(r,a1,a1ir,n),negex(s,b1,b1is,o),isex(abs(r),abs(s),absd(a1),absd(b1),aica(r,a1,a1ir),aica(s,b1,b1is),i)):eq"rp"(a1,b1)
+t8:=isin(t7):is(r,s)
+-2r166
+s@[n:neg(r)][o:neg(s)][i:is(abs(r),abs(s))]
+satz166d:=realapp2(is(r,s),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t8".2r166"(x,y,t,u,n,o,i)):is(r,s)
+r@[n:nis(r,0)]
+satz166e:=rapp(r,pos(abs(r)),[t:pos(r)]satz166a(t),th2"l.imp"(is(r,0),pos(abs(r)),n),[t:neg(r)]satz166b(t)):pos(abs(r))
++*2r166
+a0ir@[i:is(r,0)]
+t9:=satzd166f(a0,0ex(i)):zero(absd(a0))
+t10:=0in(abs(r),absd(a0),aica,t9):is(abs(r),0)
+-2r166
+r@[i:is(r,0)]
+satz166f:=realapp1(is(abs(r),0),[x:dif][t:inn(x,class(r))]t10".2r166"(x,t,i)):is(abs(r),0)
+s@more:=some"l"(dif,[x:dif]some"l"(dif,[y:dif]and3(inn(x,class(r)),inn(y,class(s)),mored(x,y)))):'prop'
++*ivr2
+b1@propm:=and3(inn(a1,class(r)),inn(b1,class(s)),mored(a1,b1)):'prop'
+-ivr2
+b1is@[m:mored(a1,b1)]
++*ivr2
+m@t3:=and3i(inn(a1,class(r)),inn(b1,class(s)),mored(a1,b1),a1ir,b1is,m):propm(a1,b1)
+t4:=somei(dif,[x:dif]propm(a1,x),b1,t3):some"l"(dif,[x:dif]propm(a1,x))
+-ivr2
+m@morein:=somei(dif,[x:dif]some"l"(dif,[y:dif]propm".ivr2"(x,y)),a1,t4".ivr2"):more(r,s)
+b1is@[m:more(r,s)]
++*ivr2
+m@[a:dif][sa:some"l"(dif,[x:dif]propm(a,x))][b:dif][p2:propm(a,b)]
+t5:=and3e1(inn(a,class(r)),inn(b,class(s)),mored(a,b),p2):inn(a,class(r))
+t6:=and3e2(inn(a,class(r)),inn(b,class(s)),mored(a,b),p2):inn(b,class(s))
+t7:=and3e3(inn(a,class(r)),inn(b,class(s)),mored(a,b),p2):mored(a,b)
+t8:=eqmored12(a,a1,b,b1,isex(r,r,a,a1,t5,a1ir,refis(real,r)),isex(s,s,b,b1,t6,b1is,refis(real,s)),t7):mored(a1,b1)
+sa@t9:=someapp(dif,[x:dif]propm(a,x),sa,mored(a1,b1),[x:dif][t:propm(a,x)]t8(x,t)):mored(a1,b1)
+-ivr2
+m@moreex:=someapp(dif,[x:dif]some"l"(dif,[y:dif]propm".ivr2"(x,y)),m,mored(a1,b1),[x:dif][t:some"l"(dif,[y:dif]propm".ivr2"(x,y))]t9".ivr2"(x,t)):mored(a1,b1)
+s@less:=some"l"(dif,[x:dif]some"l"(dif,[y:dif]and3(inn(x,class(r)),inn(y,class(s)),lessd(x,y)))):'prop'
++*ivr2
+b1@propl:=and3(inn(a1,class(r)),inn(b1,class(s)),lessd(a1,b1)):'prop'
+-ivr2
+b1is@[l:lessd(a1,b1)]
++*ivr2
+l@t10:=and3i(inn(a1,class(r)),inn(b1,class(s)),lessd(a1,b1),a1ir,b1is,l):propl(a1,b1)
+t11:=somei(dif,[x:dif]propl(a1,x),b1,t10):some"l"(dif,[x:dif]propl(a1,x))
+-ivr2
+l@lessin:=somei(dif,[x:dif]some"l"(dif,[y:dif]propl".ivr2"(x,y)),a1,t11".ivr2"):less(r,s)
+b1is@[l:less(r,s)]
++*ivr2
+l@[a:dif][sa:some"l"(dif,[x:dif]propl(a,x))][b:dif][p2:propl(a,b)]
+t12:=and3e1(inn(a,class(r)),inn(b,class(s)),lessd(a,b),p2):inn(a,class(r))
+t13:=and3e2(inn(a,class(r)),inn(b,class(s)),lessd(a,b),p2):inn(b,class(s))
+t14:=and3e3(inn(a,class(r)),inn(b,class(s)),lessd(a,b),p2):lessd(a,b)
+t15:=eqlessd12(a,a1,b,b1,isex(r,r,a,a1,t12,a1ir,refis(real,r)),isex(s,s,b,b1,t13,b1is,refis(real,s)),t14):lessd(a1,b1)
+sa@t16:=someapp(dif,[x:dif]propl(a,x),sa,lessd(a1,b1),[x:dif][t:propl(a,x)]t15(x,t)):lessd(a1,b1)
+-ivr2
+l@lessex:=someapp(dif,[x:dif]some"l"(dif,[y:dif]propl".ivr2"(x,y)),l,lessd(a1,b1),[x:dif][t:some"l"(dif,[y:dif]propl".ivr2"(x,y))]t16".ivr2"(x,t)):lessd(a1,b1)
+t@[i:is(r,s)][m:more(r,t)]
+ismore1:=isp(real,[x:real]more(x,t),r,s,m,i):more(s,t)
+i@[m:more(t,r)]
+ismore2:=isp(real,[x:real]more(t,x),r,s,m,i):more(t,s)
+i@[l:less(r,t)]
+isless1:=isp(real,[x:real]less(x,t),r,s,l,i):less(s,t)
+i@[l:less(t,r)]
+isless2:=isp(real,[x:real]less(t,x),r,s,l,i):less(t,s)
+u@[i:is(r,s)][j:is(t,u)][m:more(r,t)]
+ismore12:=ismore2(t,u,s,j,ismore1(r,s,t,i,m)):more(s,u)
+j@[l:less(r,t)]
+isless12:=isless2(t,u,s,j,isless1(r,s,t,i,l)):less(s,u)
++*ivr2
+b1is@[m:more(r,s)]
+t17:=lemmad5(a1,b1,moreex(m)):lessd(b1,a1)
+t18:=lessin(s,r,b1,a1,b1is,a1ir,t17):less(s,r)
+-ivr2
+s@[m:more(r,s)]
+lemma1:=realapp2(less(s,r),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t18".ivr2"(x,y,t,u,m)):less(s,r)
++*ivr2
+b1is@[l:less(r,s)]
+t19:=lemmad6(a1,b1,lessex(l)):mored(b1,a1)
+t20:=morein(s,r,b1,a1,b1is,a1ir,t19):more(s,r)
+-ivr2
+s@[l:less(r,s)]
+lemma2:=realapp2(more(s,r),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t20".ivr2"(x,y,t,u,l)):more(s,r)
++2r167
+b1is@t1:=satzd167a(a1,b1):or3(eq"rp"(a1,b1),mored(a1,b1),lessd(a1,b1))
+[e:eq"rp"(a1,b1)]
+t2:=or3i1(is(r,s),more(r,s),less(r,s),isin(e)):or3(is(r,s),more(r,s),less(r,s))
+b1is@[m:mored(a1,b1)]
+t3:=or3i2(is(r,s),more(r,s),less(r,s),morein(m)):or3(is(r,s),more(r,s),less(r,s))
+b1is@[l:lessd(a1,b1)]
+t4:=or3i3(is(r,s),more(r,s),less(r,s),lessin(l)):or3(is(r,s),more(r,s),less(r,s))
+b1is@t5:=or3app(eq"rp"(a1,b1),mored(a1,b1),lessd(a1,b1),or3(is(r,s),more(r,s),less(r,s)),t1,[t:eq"rp"(a1,b1)]t2(t),[t:mored(a1,b1)]t3(t),[t:lessd(a1,b1)]t4(t)):or3(is(r,s),more(r,s),less(r,s))
+t6:=satzd167b(a1,b1):ec3(eq"rp"(a1,b1),mored(a1,b1),lessd(a1,b1))
+[i:is(r,s)]
+t7:=th3"l.imp"(more(r,s),mored(a1,b1),ec3e12(eq"rp"(a1,b1),mored(a1,b1),lessd(a1,b1),t6,isex(i)),[t:more(r,s)]moreex(t)):not(more(r,s))
+b1is@[m:more(r,s)]
+t8:=th3"l.imp"(less(r,s),lessd(a1,b1),ec3e23(eq"rp"(a1,b1),mored(a1,b1),lessd(a1,b1),t6,moreex(m)),[t:less(r,s)]lessex(t)):not(less(r,s))
+b1is@[l:less(r,s)]
+t9:=th3"l.imp"(is(r,s),eq"rp"(a1,b1),ec3e31(eq"rp"(a1,b1),mored(a1,b1),lessd(a1,b1),t6,lessex(l)),[t:is(r,s)]isex(t)):not(is(r,s))
+b1is@t10:=th6"l.ec3"(is(r,s),more(r,s),less(r,s),th1"l.ec"(is(r,s),more(r,s),[t:is(r,s)]t7(t)),th1"l.ec"(more(r,s),less(r,s),[t:more(r,s)]t8(t)),th1"l.ec"(less(r,s),is(r,s),[t:less(r,s)]t9(t))):ec3(is(r,s),more(r,s),less(r,s))
+t11:=orec3i(is(r,s),more(r,s),less(r,s),t5,t10):orec3(is(r,s),more(r,s),less(r,s))
+-2r167
+s@satz167:=realapp2(orec3(is(r,s),more(r,s),less(r,s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t11".2r167"(x,y,t,u)):orec3(is(r,s),more(r,s),less(r,s))
+satz167a:=orec3e1(is(r,s),more(r,s),less(r,s),satz167):or3(is(r,s),more(r,s),less(r,s))
+satz167b:=orec3e2(is(r,s),more(r,s),less(r,s),satz167):ec3(is(r,s),more(r,s),less(r,s))
+moreis:=or(more(r,s),is(r,s)):'prop'
+lessis:=or(less(r,s),is(r,s)):'prop'
+[m:moreis(r,s)]
+satz168a:=th9"l.or"(more(r,s),is(r,s),less(s,r),is(s,r),m,[t:more(r,s)]lemma1(t),[t:is(r,s)]symis(real,r,s,t)):lessis(s,r)
+s@[l:lessis(r,s)]
+satz168b:=th9"l.or"(less(r,s),is(r,s),more(s,r),is(s,r),l,[t:less(r,s)]lemma2(t),[t:is(r,s)]symis(real,r,s,t)):moreis(s,r)
+t@[i:is(r,s)][m:moreis(r,t)]
+ismoreis1:=isp(real,[x:real]moreis(x,t),r,s,m,i):moreis(s,t)
+i@[m:moreis(t,r)]
+ismoreis2:=isp(real,[x:real]moreis(t,x),r,s,m,i):moreis(t,s)
+i@[l:lessis(r,t)]
+islessis1:=isp(real,[x:real]lessis(x,t),r,s,l,i):lessis(s,t)
+i@[l:lessis(t,r)]
+islessis2:=isp(real,[x:real]lessis(t,x),r,s,l,i):lessis(t,s)
+u@[i:is(r,s)][j:is(t,u)][m:moreis(r,t)]
+ismoreis12:=ismoreis2(t,u,s,j,ismoreis1(r,s,t,i,m)):moreis(s,u)
+j@[l:lessis(r,t)]
+islessis12:=islessis2(t,u,s,j,islessis1(r,s,t,i,l)):lessis(s,u)
+s@[m:more(r,s)]
+moreisi1:=ori1(more(r,s),is(r,s),m):moreis(r,s)
+s@[l:less(r,s)]
+lessisi1:=ori1(less(r,s),is(r,s),l):lessis(r,s)
+s@[i:is(r,s)]
+moreisi2:=ori2(more(r,s),is(r,s),i):moreis(r,s)
+lessisi2:=ori2(less(r,s),is(r,s),i):lessis(r,s)
+b1is@[m:moreq(a1,b1)]
+moreisin:=orapp(mored(a1,b1),eq"rp"(a1,b1),moreis(r,s),m,[t:mored(a1,b1)]moreisi1(morein(t)),[t:eq"rp"(a1,b1)]moreisi2(isin(t))):moreis(r,s)
+b1is@[m:moreis(r,s)]
+moreisex:=orapp(more(r,s),is(r,s),moreq(a1,b1),m,[t:more(r,s)]moreqi1(a1,b1,moreex(t)),[t:is(r,s)]moreqi2(a1,b1,isex(t))):moreq(a1,b1)
+b1is@[l:lesseq(a1,b1)]
+lessisin:=orapp(lessd(a1,b1),eq"rp"(a1,b1),lessis(r,s),l,[t:lessd(a1,b1)]lessisi1(lessin(t)),[t:eq"rp"(a1,b1)]lessisi2(isin(t))):lessis(r,s)
+b1is@[l:lessis(r,s)]
+lessisex:=orapp(less(r,s),is(r,s),lesseq(a1,b1),l,[t:less(r,s)]lesseqi1(a1,b1,lessex(t)),[t:is(r,s)]lesseqi2(a1,b1,isex(t))):lesseq(a1,b1)
+s@[m:moreis(r,s)]
+satz167c:=th7"l.ec3"(is(r,s),more(r,s),less(r,s),satz167b,comor(more(r,s),is(r,s),m)):not(less(r,s))
+s@[l:lessis(r,s)]
+satz167d:=th9"l.ec3"(is(r,s),more(r,s),less(r,s),satz167b,l):not(more(r,s))
+s@[n:not(more(r,s))]
+satz167e:=th2"l.or3"(is(r,s),more(r,s),less(r,s),satz167a,n):lessis(r,s)
+s@[n:not(less(r,s))]
+s@[n:not(less(r,s))]
+satz167f:=comor(is(r,s),more(r,s),th3"l.or3"(is(r,s),more(r,s),less(r,s),satz167a,n)):moreis(r,s)
+s@[m:more(r,s)]
+satz167g:=th3"l.imp"(lessis(r,s),not(more(r,s)),weli(more(r,s),m),[t:lessis(r,s)]satz167d(t)):not(lessis(r,s))
+s@[l:less(r,s)]
+satz167h:=th3"l.imp"(moreis(r,s),not(less(r,s)),weli(less(r,s),l),[t:moreis(r,s)]satz167c(t)):not(moreis(r,s))
+s@[n:not(moreis(r,s))]
+satz167j:=or3e3(is(r,s),more(r,s),less(r,s),satz167a,th5"l.or"(more(r,s),is(r,s),n),th4"l.or"(more(r,s),is(r,s),n)):less(r,s)
+s@[n:not(lessis(r,s))]
+satz167k:=or3e2(is(r,s),more(r,s),less(r,s),satz167a,th4"l.or"(less(r,s),is(r,s),n),th5"l.or"(less(r,s),is(r,s),n)):more(r,s)
+r@[p:pos(r)]
++2r169
+[a:dif][b:dif][air:inn(a,class(r))][bi0:inn(b,class(0))]
+t1:=satzd169a(a,b,0ex(0,b,bi0,refis(real,0)),posex(a,air,p)):mored(a,b)
+t2:=morein(r,0,a,b,air,bi0,t1):more(r,0)
+-2r169
+satz169a:=realapp2(r,0,more(r,0),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(0))]t2".2r169"(x,y,t,u)):more(r,0)
+r@[m:more(r,0)]
++*2r169
+m@[a:dif][b:dif][air:inn(a,class(r))][bi0:inn(b,class(0))]
+t3:=satzd169b(a,b,0ex(0,b,bi0,refis(real,0)),moreex(r,0,a,b,air,bi0,m)):posd(a)
+t4:=posin(r,a,air,t3):pos(r)
+-2r169
+m@satz169b:=realapp2(r,0,pos(r),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(0))]t4".2r169"(x,y,t,u)):pos(r)
+r@[n:neg(r)]
++*2r169
+n@[a:dif][b:dif][air:inn(a,class(r))][bi0:inn(b,class(0))]
+t5:=satzd169c(a,b,0ex(0,b,bi0,refis(real,0)),negex(a,air,n)):lessd(a,b)
+t6:=lessin(r,0,a,b,air,bi0,t5):less(r,0)
+-2r169
+n@satz169c:=realapp2(r,0,less(r,0),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(0))]t6".2r169"(x,y,t,u)):less(r,0)
+r@[l:less(r,0)]
++*2r169
+l@[a:dif][b:dif][air:inn(a,class(r))][bi0:inn(b,class(0))]
+t7:=satzd169d(a,b,0ex(0,b,bi0,refis(real,0)),lessex(r,0,a,b,air,bi0,l)):negd(a)
+t8:=negin(r,a,air,t7):neg(r)
+-2r169
+l@satz169d:=realapp2(r,0,neg(r),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(0))]t8".2r169"(x,y,t,u)):neg(r)
++2r170
+r@[a:dif][b:dif][air:inn(a,class(r))][bi0:inn(b,class(0))]
+t1:=satzd170(a,b,0ex(0,b,bi0,refis(real,0))):moreq(absd(a),b)
+t2:=moreisin(abs(r),0,absd(a),b,aica(r,a,air),bi0,t1):moreis(abs(r),0)
+-2r170
+r@satz170:=realapp2(r,0,moreis(abs(r),0),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(0))]t2".2r170"(x,y,t,u)):moreis(abs(r),0)
+satz170a:=th3"l.imp"(neg(abs(r)),less(abs(r),0),satz167c(abs(r),0,satz170),[t:neg(abs(r))]satz169c(abs(r),t)):not(neg(abs(r)))
+t@[l:less(r,s)][k:less(s,t)]
++2r171
+[a:dif][b:dif][c:dif][air:inn(a,class(r))][bis:inn(b,class(s))][cit:inn(c,class(t))]
+t1:=satzd171(a,b,c,lessex(r,s,a,b,air,bis,l),lessex(s,t,b,c,bis,cit,k)):lessd(a,c)
+t2:=lessin(r,t,a,c,air,cit,t1):less(r,t)
+-2r171
+satz171:=realapp3(r,s,t,less(r,t),[x:dif][y:dif][z:dif][w:inn(x,class(r))][u:inn(y,class(s))][v:inn(z,class(t))]t2".2r171"(x,y,z,w,u,v)):less(r,t)
+trless:=satz171:less(r,t)
+t@[m:more(r,s)][n:more(s,t)]
+trmore:=lemma2(t,r,trless(t,s,r,lemma1(s,t,n),lemma1(r,s,m))):more(r,t)
+t@[a2:dif][b2:dif][c2:dif][a2ir:inn(a2,class(r))][b2is:inn(b2,class(s))][c2it:inn(c2,class(t))]
++2r172
+[l:lessis(r,s)][k:less(s,t)]
+t1:=satzd172a(a2,b2,c2,lessisex(a2,b2,a2ir,b2is,l),lessex(s,t,b2,c2,b2is,c2it,k)):lessd(a2,c2)
+t2:=lessin(r,t,a2,c2,a2ir,c2it,t1):less(r,t)
+-2r172
+t@[l:lessis(r,s)][k:less(s,t)]
+satz172a:=realapp3(less(r,t),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t2".2r172"(x,y,z,u,v,w,l,k)):less(r,t)
++*2r172
+c2it@[l:less(r,s)][k:lessis(s,t)]
+t3:=satzd172b(a2,b2,c2,lessex(a2,b2,a2ir,b2is,l),lessisex(s,t,b2,c2,b2is,c2it,k)):lessd(a2,c2)
+t4:=lessin(r,t,a2,c2,a2ir,c2it,t3):less(r,t)
+-2r172
+t@[l:less(r,s)][k:lessis(s,t)]
+satz172b:=realapp3(less(r,t),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t4".2r172"(x,y,z,u,v,w,l,k)):less(r,t)
+t@[m:moreis(r,s)][n:more(s,t)]
+satz172c:=lemma2(t,r,satz172b(t,s,r,lemma1(s,t,n),satz168a(m))):more(r,t)
+t@[m:more(r,s)][n:moreis(s,t)]
+satz172d:=lemma2(t,r,satz172a(t,s,r,satz168a(s,t,n),lemma1(m))):more(r,t)
++2r173
+c2it@[l:lessis(r,s)][k:lessis(s,t)]
+t1:=satzd173(a2,b2,c2,lessisex(a2,b2,a2ir,b2is,l),lessisex(s,t,b2,c2,b2is,c2it,k)):lesseq(a2,c2)
+t2:=lessisin(r,t,a2,c2,a2ir,c2it,t1):lessis(r,t)
+-2r173
+t@[l:lessis(r,s)][k:lessis(s,t)]
+satz173:=realapp3(lessis(r,t),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t2".2r173"(x,y,z,u,v,w,l,k)):lessis(r,t)
+trlessis:=satz173:lessis(r,t)
+t@[m:moreis(r,s)][n:moreis(s,t)]
+trmoreis:=satz168b(t,r,trlessis(t,s,r,satz168a(s,t,n),satz168a(m))):moreis(r,t)
+r@ratrl:=some"l"(dif,[x:dif]and(inn(x,class(r)),ratd(x))):'prop'
+a0ir@[r1:ratd(a0)]
++*ivr2
+r1@t21:=andi(inn(a0,class(r)),ratd(a0),a0ir,r1):and(inn(a0,class(r)),ratd(a0))
+-ivr2
+r1@ratrlin:=somei(dif,[x:dif]and(inn(x,class(r)),ratd(x)),a0,t21".ivr2"):ratrl(r)
+a0ir@[rr:ratrl(r)]
++*ivr2
+rr@[a:dif][b:and(inn(a,class(r)),ratd(a))]
+t22:=ande1(inn(a,class(r)),ratd(a),b):inn(a,class(r))
+t23:=ande2(inn(a,class(r)),ratd(a),b):ratd(a)
+t24:=eqratd(a,a0,isex(r,r,a,a0,t22,a0ir,refis(real,r)),t23):ratd(a0)
+-ivr2
+rr@ratrlex:=someapp(dif,[x:dif]and(inn(x,class(r)),ratd(x)),rr,ratd(a0),[x:dif][t:and(inn(x,class(r)),ratd(x))]t24".ivr2"(x,t)):ratd(a0)
+r@irratrl:=not(ratrl(r)):'prop'
+@[r0:cut][rr:ratrp(r0)]
+remark2:=ratrlin(pofrp(r0),pdofrp(r0),innclass(pdofrp(r0)),remark2a(r0,rr)):ratrl(pofrp(r0))
+remark3:=ratrlin(nofrp(r0),ndofrp(r0),innclass(ndofrp(r0)),remark3a(r0,rr)):ratrl(nofrp(r0))
+r0@[ir:irratrp(r0)]
+remark4:=th3"l.imp"(ratrl(pofrp(r0)),ratd(pdofrp(r0)),remark4a(r0,ir),[t:ratrl(pofrp(r0))]ratrlex(pofrp(r0),pdofrp(r0),innclass(pdofrp(r0)),t)):irratrl(pofrp(r0))
+remark5:=th3"l.imp"(ratrl(nofrp(r0)),ratd(ndofrp(r0)),remark5a(r0,ir),[t:ratrl(nofrp(r0))]ratrlex(nofrp(r0),ndofrp(r0),innclass(ndofrp(r0)),t)):irratrl(nofrp(r0))
+r@natrl:=some"l"(dif,[x:dif]and(inn(x,class(r)),natd(x))):'prop'
+a0ir@[n:natd(a0)]
++*ivr2
+n@t25:=andi(inn(a0,class(r)),natd(a0),a0ir,n):and(inn(a0,class(r)),natd(a0))
+-ivr2
+n@natrlin:=somei(dif,[x:dif]and(inn(x,class(r)),natd(x)),a0,t25".ivr2"):natrl(r)
+a0ir@[n:natrl(r)]
++*ivr2
+n@[a:dif][b:and(inn(a,class(r)),natd(a))]
+t26:=ande1(inn(a,class(r)),natd(a),b):inn(a,class(r))
+t27:=ande2(inn(a,class(r)),natd(a),b):natd(a)
+t28:=eqnatd(a,a0,isex(r,r,a,a0,t26,a0ir,refis(real,r)),t27):natd(a0)
+-ivr2
+n@natrlex:=someapp(dif,[x:dif]and(inn(x,class(r)),natd(x)),n,natd(a0),[x:dif][t:and(inn(x,class(r)),natd(x))]t28".ivr2"(x,t)):natd(a0)
++*ivr2
+a0ir@[n:natrl(r)]
+t29:=natposd(a0,natrlex(n)):posd(a0)
+t30:=posin(t29):pos(r)
+-ivr2
+r@[n:natrl(r)]
+natpos:=realapp1(pos(r),[x:dif][t:inn(x,class(r))]t30".ivr2"(x,t,n)):pos(r)
+@[x:nat]
+rlofnt:=realof(pdofnt(x)):real
+natrli:=natrlin(rlofnt(x),pdofnt(x),innclass(pdofnt(x)),natdi(x)):natrl(rlofnt(x))
+[y:nat][i:is"n"(x,y)]
+isnterl:=isf(nat,real,[u:nat]rlofnt(u),x,y,i):is(rlofnt(x),rlofnt(y))
+y@[i:is(rlofnt(x),rlofnt(y))]
+isntirl:=isntirp(x,y,isrpip(rpofnt(x),rpofnt(y),i)):is"n"(x,y)
++*ivr2
+@t31:=[x:nat][y:nat][t:is(rlofnt(x),rlofnt(y))]isntirl(x,y,t):injective(nat,real,[x:nat]rlofnt(x))
+a0ir@[n:natrl(r)]
+t32:=natposd(a0,natrlex(n)):posd(a0)
+ap:=rpofpd(a0,t32):cut
+t33:=natderp(a0,natrlex(n)):natrp(ap)
+x0:=ntofrp(ap,t33):nat
+t34:=isrpepd(ap,rpofnt(x0),isrpnt1(ap,t33)):eq"rp"(pdofrp(ap),pdofnt(x0))
+t35:=treq"rp"(a0,pdofrp(ap),pdofnt(x0),eqpdrp1(a0,t32),t34):eq"rp"(a0,pdofnt(x0))
+t36:=isin(r,rlofnt(x0),a0,pdofnt(x0),a0ir,innclass(pdofnt(x0)),t35):is(r,rlofnt(x0))
+t37:=somei(nat,[x:nat]is(r,rlofnt(x)),x0,t36):image(nat,real,[x:nat]rlofnt(x),r)
+-ivr2
+r@[n:natrl(r)]
+natimage:=realapp1(image(nat,real,[x:nat]rlofnt(x),r),[x:dif][t:inn(x,class(r))]t37".ivr2"(x,t,n)):image(nat,real,[x:nat]rlofnt(x),r)
+r@[i:image(nat,real,[x:nat]rlofnt(x),r)]
++*ivr2
+i"r"@[x:nat][j:is(r,rlofnt(x))]
+t38:=isp1(real,[u:real]natrl(u),rlofnt(x),r,natrli(x),j):natrl(r)
+-ivr2
+i@imagenat:=someapp(nat,[u:nat]is(r,rlofnt(u)),i,natrl(r),[u:nat][v:is(r,rlofnt(u))]t38".ivr2"(u,v)):natrl(r)
+r@[n:natrl(r)]
+ntofrl:=soft(nat,real,[x:nat]rlofnt(x),t31".ivr2",r,natimage(r,n)):nat
+@[r1:real][n:natrl(r1)][s1:real][m:natrl(s1)][i:is(r1,s1)]
+isrlent:=isinv(nat,real,[x:nat]rlofnt(x),t31".ivr2",r1,natimage(r1,n),s1,natimage(s1,m),i):is"n"(ntofrl(r1,n),ntofrl(s1,m))
+m@[i:is"n"(ntofrl(r1,n),ntofrl(s1,m))]
+isrlint:=isinve(nat,real,[x:nat]rlofnt(x),t31".ivr2",r1,natimage(r1,n),s1,natimage(s1,m),i):is(r1,s1)
+r@[n:natrl(r)]
+isrlnt1:=ists1"e"(nat,real,[x:nat]rlofnt(x),t31".ivr2",r,natimage(r,n)):is(r,rlofnt(ntofrl(r,n)))
+isrlnt2:=symis(real,r,rlofnt(ntofrl(r,n)),isrlnt1):is(rlofnt(ntofrl(r,n)),r)
+@[x:nat]
++*ivr2
+x"r"@xn:=soft(nat,real,[u:nat]rlofnt(u),t31,rlofnt(x),imagei(nat,real,[u:nat]rlofnt(u),x)):nat
+t39:=isinv(nat,real,[u:nat]rlofnt(u),t31,rlofnt(x),imagei(nat,real,[u:nat]rlofnt(u),x),rlofnt(x),natimage(rlofnt(x),natrli(x)),refis(real,rlofnt(x))):is"n"(xn,ntofrl(rlofnt(x),natrli(x)))
+-ivr2
+x@isntrl1:=tris(nat,x,xn".ivr2",ntofrl(rlofnt(x),natrli(x)),isst1(nat,real,[u:nat]rlofnt(u),t31".ivr2",x),t39".ivr2"):is"n"(x,ntofrl(rlofnt(x),natrli(x)))
+isntrl2:=symis(nat,x,ntofrl(rlofnt(x),natrli(x)),isntrl1):is"n"(ntofrl(rlofnt(x),natrli(x)),x)
+r@intrl:=some"l"(dif,[x:dif]and(inn(x,class(r)),intd(x))):'prop'
+a0ir@[i:intd(a0)]
++*ivr2
+i@t40:=andi(inn(a0,class(r)),intd(a0),a0ir,i):and(inn(a0,class(r)),intd(a0))
+-ivr2
+i@intrlin:=somei(dif,[x:dif]and(inn(x,class(r)),intd(x)),a0,t40".ivr2"):intrl(r)
+a0ir@[i:intrl(r)]
++*ivr2
+i@[a:dif][b:and(inn(a,class(r)),intd(a))]
+t41:=ande1(inn(a,class(r)),intd(a),b):inn(a,class(r))
+t42:=ande2(inn(a,class(r)),intd(a),b):intd(a)
+t43:=eqintd(a,a0,isex(r,r,a,a0,t41,a0ir,refis(real,r)),t42):intd(a0)
+-ivr2
+i@intrlex:=someapp(dif,[x:dif]and(inn(x,class(r)),intd(x)),i,intd(a0),[x:dif][t:and(inn(x,class(r)),intd(x))]t43".ivr2"(x,t)):intd(a0)
++*ivr2
+a0ir@[n:natrl(r)]
+t44:=natintd(a0,natrlex(n)):intd(a0)
+t45:=intrlin(t44):intrl(r)
+-ivr2
+r@[n:natrl(r)]
+natintrl:=realapp1(intrl(r),[x:dif][t:inn(x,class(r))]t45".ivr2"(x,t,n)):intrl(r)
++*ivr2
+a0ir@[p:pos(r)][i:intrl(r)]
+t46:=posintnatd(a0,posex(p),intrlex(i)):natd(a0)
+t47:=natrlin(t46):natrl(r)
+-ivr2
+r@[p:pos(r)][i:intrl(r)]
+posintnatrl:=realapp1(natrl(r),[x:dif][t:inn(x,class(r))]t47".ivr2"(x,t,p,i)):natrl(r)
++*ivr2
+a0ir@[i2:is(r,0)]
+t48:=intdi0(a0,0ex(i2)):intd(a0)
+t49:=intrlin(t48):intrl(r)
+-ivr2
+r@[i:is(r,0)]
+intrli0:=realapp1(intrl(r),[x:dif][t:inn(x,class(r))]t49".ivr2"(x,t,i)):intrl(r)
+r0@[n:natrp(r0)]
+remark6:=intrlin(pofrp(r0),pdofrp(r0),innclass(pdofrp(r0)),remark6"rp"(r0,n)):intrl(pofrp(r0))
+remark7:=intrlin(nofrp(r0),ndofrp(r0),innclass(ndofrp(r0)),remark7"rp"(r0,n)):intrl(nofrp(r0))
++2r174
+a0ir@[i:intrl(r)]
+t1:=satzd174(a0,intrlex(i)):ratd(a0)
+t2:=ratrlin(t1):ratrl(r)
+-2r174
+r@[i:intrl(r)]
+satz174:=realapp1(ratrl(r),[x:dif][t:inn(x,class(r))]t2".2r174"(x,t,i)):ratrl(r)
+@plusdr:=[x:dif][y:dif]realof(pd(x,y)):[x:dif][y:dif]real
++ivr3
+[a:dif][b:dif][c:dif][d:dif][e:eq"rp"(a,b)][f:eq"rp"(c,d)]
+t1:=isin(realof(pd(a,c)),realof(pd(b,d)),pd(a,c),pd(b,d),innclass(pd(a,c)),innclass(pd(b,d)),eqpd12(a,b,c,d,e,f)):is(<c><a>plusdr,<d><b>plusdr)
+-ivr3
+fplusdr:=[x:dif][y:dif][z:dif][v:dif][t:<y><x>eq][u:<v><z>eq]t1".ivr3"(x,y,z,v,t,u):fixf2(real,plusdr)
+s@pl:=indreal2(real,plusdr,fplusdr,r,s):real
++*ivr3
+b1is@t2:=isindreal2(real,plusdr,fplusdr,r,s,a1,b1,a1ir,b1is):is(realof(pd(a1,b1)),pl(r,s))
+-ivr3
+b1is@picp:=isp(real,[x:real]inn(pd(a1,b1),class(x)),realof(pd(a1,b1)),pl(r,s),innclass(pd(a1,b1)),t2".ivr3"):inn(pd(a1,b1),class(pl(r,s)))
+t@[i:is(r,s)]
+ispl1:=isf(real,real,[x:real]pl(x,t),r,s,i):is(pl(r,t),pl(s,t))
+ispl2:=isf(real,real,[x:real]pl(t,x),r,s,i):is(pl(t,r),pl(t,s))
+u@[i:is(r,s)][j:is(t,u)]
+ispl12:=tris(real,pl(r,t),pl(s,t),pl(s,u),ispl1(i),ispl2(t,u,s,j)):is(pl(r,t),pl(s,u))
++3r175
+b1is@t1:=satzd175(a1,b1):eq"rp"(pd(a1,b1),pd(b1,a1))
+t2:=isin(pl(r,s),pl(s,r),pd(a1,b1),pd(b1,a1),picp,picp(s,r,b1,a1,b1is,a1ir),t1):is(pl(r,s),pl(s,r))
+-3r175
+s@satz175:=realapp2(is(pl(r,s),pl(s,r)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t2".3r175"(x,y,t,u)):is(pl(r,s),pl(s,r))
+compl:=satz175:is(pl(r,s),pl(s,r))
++*ivr3
+b1is@[i:is(r,0)]
+t3:=pd01(a1,b1,0ex(r,a1,a1ir,i)):eq"rp"(pd(a1,b1),b1)
+t4:=isin(pl(r,s),s,pd(a1,b1),b1,picp,b1is,t3):is(pl(r,s),s)
+-ivr3
+s@[i:is(r,0)]
+pl01:=realapp2(is(pl(r,s),s),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t4".ivr3"(x,y,t,u,i)):is(pl(r,s),s)
+s@[i:is(s,0)]
+pl02:=tris(real,pl(r,s),pl(s,r),r,compl,pl01(s,r,i)):is(pl(r,s),r)
++*ivr3
+b1is@[p:pos(r)][q:pos(s)]
+t5:=ppd(a1,b1,posex(r,a1,a1ir,p),posex(s,b1,b1is,q)):posd(pd(a1,b1))
+t6:=posin(pl(r,s),pd(a1,b1),picp,t5):pos(pl(r,s))
+-ivr3
+s@[p:pos(r)][q:pos(s)]
+pospl:=realapp2(pos(pl(r,s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t6".ivr3"(x,y,t,u,p,q)):pos(pl(r,s))
++*ivr3
+b1is@[n:neg(r)][o:neg(s)]
+t7:=npd(a1,b1,negex(r,a1,a1ir,n),negex(s,b1,b1is,o)):negd(pd(a1,b1))
+t8:=negin(pl(r,s),pd(a1,b1),picp,t7):neg(pl(r,s))
+-ivr3
+s@[n:neg(r)][o:neg(s)]
+negpl:=realapp2(neg(pl(r,s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t8".ivr3"(x,y,t,u,n,o)):neg(pl(r,s))
+@m0dr:=[x:dif]realof(m0d(x)):[x:dif]real
++*ivr3
+@[a:dif][b:dif][e:eq"rp"(a,b)]
+t5a:=isin(realof(m0d(a)),realof(m0d(b)),m0d(a),m0d(b),innclass(m0d(a)),innclass(m0d(b)),eqm0d(a,b,e)):is(<a>m0dr,<b>m0dr)
+-ivr3
+@fm0dr:=[x:dif][y:dif][t:<y><x>eq]t5a".ivr3"(x,y,t):fixf(real,m0dr)
+r@m0:=indreal(real,m0dr,fm0dr,r):real
++*ivr3
+a0ir@t6a:=isindreal(real,m0dr,fm0dr,r,a0,a0ir):is(realof(m0d(a0)),m0(r))
+-ivr3
+a0ir@micm0:=isp(real,[x:real]inn(m0d(a0),class(x)),realof(m0d(a0)),m0(r),innclass(m0d(a0)),t6a".ivr3"):inn(m0d(a0),class(m0(r)))
+s@[i:is(r,s)]
+ism0:=isf(real,real,[x:real]m0(x),r,s,i):is(m0(r),m0(s))
++*ivr3
+a0ir@[n:neg(r)]
+t7a:=absnd(a0,negex(n)):eq"rp"(absd(a0),m0d(a0))
+t8a:=isin(abs(r),m0(r),absd(a0),m0d(a0),aica,micm0,t7a):is(abs(r),m0(r))
+-ivr3
+r@[n:neg(r)]
+absn:=realapp1(is(abs(r),m0(r)),[x:dif][t:inn(x,class(r))]t8a".ivr3"(x,t,n)):is(abs(r),m0(r))
++*ivr3
+a0ir@[nn:not(neg(r))]
+t9:=absnnd(a0,th3"l.imp"(negd(a0),neg(r),nn,[t:negd(a0)]negin(t))):eq"rp"(absd(a0),a0)
+t10:=isin(abs(r),r,absd(a0),a0,aica,a0ir,t9):is(abs(r),r)
+-ivr3
+r@[nn:not(neg(r))]
+absnn:=realapp1(is(abs(r),r),[x:dif][t:inn(x,class(r))]t10".ivr3"(x,t,nn)):is(abs(r),r)
+r@[p:pos(r)]
+absp:=absnn(r,pnotn(r,p)):is(abs(r),r)
+r@[i:is(r,0)]
+abs0:=tris(real,abs(r),r,0,absnn(r,0notn(r,i)),i):is(abs(r),0)
++3r176
+a0ir@[p:pos(r)]
+t1:=satzd176a(a0,posex(p)):negd(m0d(a0))
+t2:=negin(m0(r),m0d(a0),micm0,t1):neg(m0(r))
+-3r176
+r@[p:pos(r)]
+satz176a:=realapp1(neg(m0(r)),[x:dif][t:inn(x,class(r))]t2".3r176"(x,t,p)):neg(m0(r))
++*3r176
+a0ir@[i:is(r,0)]
+t3:=satzd176b(a0,0ex(i)):zero(m0d(a0))
+t4:=0in(m0(r),m0d(a0),micm0,t3):is(m0(r),0)
+-3r176
+r@[i:is(r,0)]
+satz176b:=realapp1(is(m0(r),0),[x:dif][t:inn(x,class(r))]t4".3r176"(x,t,i)):is(m0(r),0)
++*3r176
+a0ir@[n:neg(r)]
+t5:=satzd176c(a0,negex(n)):posd(m0d(a0))
+t6:=posin(m0(r),m0d(a0),micm0,t5):pos(m0(r))
+-3r176
+r@[n:neg(r)]
+satz176c:=realapp1(pos(m0(r)),[x:dif][t:inn(x,class(r))]t6".3r176"(x,t,n)):pos(m0(r))
++*3r176
+a0ir@[n:neg(m0(r))]
+t7:=satzd176d(a0,negex(m0(r),m0d(a0),micm0,n)):posd(a0)
+t8:=posin(t7):pos(r)
+-3r176
+r@[n:neg(m0(r))]
+satz176d:=realapp1(pos(r),[x:dif][t:inn(x,class(r))]t8".3r176"(x,t,n)):pos(r)
++*3r176
+a0ir@[i:is(m0(r),0)]
+t9:=satzd176e(a0,0ex(m0(r),m0d(a0),micm0,i)):zero(a0)
+t10:=0in(t9):is(r,0)
+-3r176
+r@[i:is(m0(r),0)]
+satz176e:=realapp1(is(r,0),[x:dif][t:inn(x,class(r))]t10".3r176"(x,t,i)):is(r,0)
++*3r176
+a0ir@[p:pos(m0(r))]
+t11:=satzd176f(a0,posex(m0(r),m0d(a0),micm0,p)):negd(a0)
+t12:=negin(t11):neg(r)
+-3r176
+r@[p:pos(m0(r))]
+satz176f:=realapp1(neg(r),[x:dif][t:inn(x,class(r))]t12".3r176"(x,t,p)):neg(r)
++3r177
+a0ir@t1:=isin(m0(m0(r)),r,m0d(m0d(a0)),a0,micm0(m0(r),m0d(a0),micm0),a0ir,satzd177(a0)):is(m0(m0(r)),r)
+-3r177
+r@satz177:=realapp1(is(m0(m0(r)),r),[x:dif][t:inn(x,class(r))]t1".3r177"(x,t)):is(m0(m0(r)),r)
+satz177a:=symis(real,m0(m0(r)),r,satz177):is(r,m0(m0(r)))
+s@[i:is(r,m0(s))]
+satz177b:=tris(real,m0(r),m0(m0(s)),s,ism0(r,m0(s),i),satz177(s)):is(m0(r),s)
+satz177c:=symis(real,m0(r),s,satz177b):is(s,m0(r))
+s@[i:is(m0(r),s)]
+satz177d:=satz177c(s,r,symis(real,m0(r),s,i)):is(r,m0(s))
+satz177e:=symis(real,r,m0(s),satz177d):is(m0(s),r)
++3r178
+a0ir@t1:=isin(abs(m0(r)),abs(r),absd(m0d(a0)),absd(a0),aica(m0(r),m0d(a0),micm0),aica,satzd178(a0)):is(abs(m0(r)),abs(r))
+-3r178
+r@satz178:=realapp1(is(abs(m0(r)),abs(r)),[x:dif][t:inn(x,class(r))]t1".3r178"(x,t)):is(abs(m0(r)),abs(r))
+satz178a:=symis(real,abs(m0(r)),abs(r),satz178):is(abs(r),abs(m0(r)))
++3r179
+a0ir@t1:=0in(pl(r,m0(r)),pd(a0,m0d(a0)),picp(r,m0(r),a0,m0d(a0),a0ir,micm0),satzd179(a0)):is(pl(r,m0(r)),0)
+-3r179
+satz179:=realapp1(is(pl(r,m0(r)),0),[x:dif][t:inn(x,class(r))]t1".3r179"(x,t)):is(pl(r,m0(r)),0)
+satz179a:=tris(real,pl(m0(r),r),pl(r,m0(r)),0,compl(m0(r),r),satz179):is(pl(m0(r),r),0)
++3r180
+b1is@t1:=isin(m0(pl(r,s)),pl(m0(r),m0(s)),m0d(pd(a1,b1)),pd(m0d(a1),m0d(b1)),micm0(pl(r,s),pd(a1,b1),picp),picp(m0(r),m0(s),m0d(a1),m0d(b1),micm0(r,a1,a1ir),micm0(s,b1,b1is)),satzd180(a1,b1)):is(m0(pl(r,s)),pl(m0(r),m0(s)))
+-3r180
+s@satz180:=realapp2(is(m0(pl(r,s)),pl(m0(r),m0(s))),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t1".3r180"(x,y,t,u)):is(m0(pl(r,s)),pl(m0(r),m0(s)))
+satz180a:=symis(real,m0(pl(r,s)),pl(m0(r),m0(s)),satz180):is(pl(m0(r),m0(s)),m0(pl(r,s)))
+mn:=pl(r,m0(s)):real
+b1is@micmn:=picp(r,m0(s),a1,m0d(b1),a1ir,micm0(s,b1,b1is)):inn(md(a1,b1),class(mn(r,s)))
+t@[i:is(r,s)]
+ismn1:=ispl1(r,s,m0(t),i):is(mn(r,t),mn(s,t))
+ismn2:=ispl2(m0(r),m0(s),t,ism0(r,s,i)):is(mn(t,r),mn(t,s))
+u@[i:is(r,s)][j:is(t,u)]
+ismn12:=ispl12(r,s,m0(t),m0(u),i,ism0(t,u,j)):is(mn(r,t),mn(s,u))
+s@satz181:=tr3is(real,m0(mn(r,s)),pl(m0(r),m0(m0(s))),pl(m0(r),s),mn(s,r),satz180(r,m0(s)),ispl2(m0(m0(s)),s,m0(r),satz177(s)),compl(m0(r),s)):is(m0(mn(r,s)),mn(s,r))
+satz181a:=symis(real,m0(mn(s,r)),mn(r,s),satz181(s,r)):is(mn(r,s),m0(mn(s,r)))
++3r182
+b1is@[p:pos(mn(r,s))]
+t1:=satzd182a(a1,b1,posex(mn(r,s),md(a1,b1),micmn,p)):mored(a1,b1)
+t2:=morein(t1):more(r,s)
+-3r182
+[p:pos(mn(r,s))]
+satz182a:=realapp2(more(r,s),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t2".3r182"(x,y,t,u,p)):more(r,s)
++*3r182
+b1is@[i:is(mn(r,s),0)]
+t3:=satzd182b(a1,b1,0ex(mn(r,s),md(a1,b1),micmn,i)):eq"rp"(a1,b1)
+t4:=isin(t3):is(r,s)
+-3r182
+s@[i:is(mn(r,s),0)]
+satz182b:=realapp2(is(r,s),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t4".3r182"(x,y,t,u,i)):is(r,s)
++*3r182
+b1is@[n:neg(mn(r,s))]
+t5:=satzd182c(a1,b1,negex(mn(r,s),md(a1,b1),micmn,n)):lessd(a1,b1)
+t6:=lessin(t5):less(r,s)
+-3r182
+s@[n:neg(mn(r,s))]
+satz182c:=realapp2(less(r,s),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t6".3r182"(x,y,t,u,n)):less(r,s)
++*3r182
+b1is@[m:more(r,s)]
+t7:=satzd182d(a1,b1,moreex(m)):posd(md(a1,b1))
+t8:=posin(mn(r,s),md(a1,b1),micmn,t7):pos(mn(r,s))
+-3r182
+s@[m:more(r,s)]
+satz182d:=realapp2(pos(mn(r,s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t8".3r182"(x,y,t,u,m)):pos(mn(r,s))
++*3r182
+b1is@[i:is(r,s)]
+t9:=satzd182e(a1,b1,isex(i)):zero(md(a1,b1))
+t10:=0in(mn(r,s),md(a1,b1),micmn,t9):is(mn(r,s),0)
+-3r182
+s@[i:is(r,s)]
+satz182e:=realapp2(is(mn(r,s),0),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t10".3r182"(x,y,t,u,i)):is(mn(r,s),0)
++*3r182
+b1is@[l:less(r,s)]
+t11:=satzd182f(a1,b1,lessex(l)):negd(md(a1,b1))
+t12:=negin(mn(r,s),md(a1,b1),micmn,t11):neg(mn(r,s))
+-3r182
+s@[l:less(r,s)]
+satz182f:=realapp2(neg(mn(r,s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t12".3r182"(x,y,t,u,l)):neg(mn(r,s))
++3r183
+b1is@[m:more(r,s)]
+t1:=satzd183a(a1,b1,moreex(m)):lessd(m0d(a1),m0d(b1))
+t2:=lessin(m0(r),m0(s),m0d(a1),m0d(b1),micm0(r,a1,a1ir),micm0(s,b1,b1is),t1):less(m0(r),m0(s))
+-3r183
+s@[m:more(r,s)]
+satz183a:=realapp2(less(m0(r),m0(s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t2".3r183"(x,y,t,u,m)):less(m0(r),m0(s))
+s@[i:is(r,s)]
+satz183b:=ism0(r,s,i):is(m0(r),m0(s))
++*3r183
+b1is@[l:less(r,s)]
+t3:=satzd183c(a1,b1,lessex(l)):mored(m0d(a1),m0d(b1))
+t4:=morein(m0(r),m0(s),m0d(a1),m0d(b1),micm0(r,a1,a1ir),micm0(s,b1,b1is),t3):more(m0(r),m0(s))
+-3r183
+s@[l:less(r,s)]
+satz183c:=realapp2(more(m0(r),m0(s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t4".3r183"(x,y,t,u,l)):more(m0(r),m0(s))
+s@[l:less(m0(r),m0(s))]
+satz183d:=ismore12(m0(m0(r)),r,m0(m0(s)),s,satz177(r),satz177(s),satz183c(m0(r),m0(s),l)):more(r,s)
+s@[i:is(m0(r),m0(s))]
+satz183e:=tr3is(real,r,m0(m0(r)),m0(m0(s)),s,satz177a(r),ism0(m0(r),m0(s),i),satz177(s)):is(r,s)
+s@[m:more(m0(r),m0(s))]
+satz183f:=isless12(m0(m0(r)),r,m0(m0(s)),s,satz177(r),satz177(s),satz183a(m0(r),m0(s),m)):less(r,s)
++3r184
+t@prop1:=and3(pos(s),pos(t),is(r,mn(s,t))):'prop'
+s@prop2:=some([x:real]prop1(x)):'prop'
+r@prop3:=some([x:real]prop2(x)):'prop'
+a0ir@[a:dif][b:dif]
+prop1d:=and3(posd(a),posd(b),eq"rp"(a0,md(a,b))):'prop'
+a@prop2d:=some"l"(dif,[x:dif]prop1d(x)):'prop'
+[p2:prop2d(a)][b:dif][p1:prop1d(a,b)]
+t1:=and3e1(posd(a),posd(b),eq"rp"(a0,md(a,b)),p1):posd(a)
+t2:=and3e2(posd(a),posd(b),eq"rp"(a0,md(a,b)),p1):posd(b)
+t3:=and3e3(posd(a),posd(b),eq"rp"(a0,md(a,b)),p1):eq"rp"(a0,md(a,b))
+p2@ra:=realof(a):real
+p1@rb:=realof(b):real
+t4:=innclass(a):inn(a,class(ra))
+t5:=innclass(b):inn(b,class(rb))
+t6:=isin(r,mn(ra,rb),a0,md(a,b),a0ir,micmn(ra,rb,a,b,t4,t5),t3):is(r,mn(ra,rb))
+t7:=and3i(pos(ra),pos(rb),is(r,mn(ra,rb)),posin(ra,a,t4,t1),posin(rb,b,t5,t2),t6):prop1(ra,rb)
+t8:=somei(real,[x:real]prop1(ra,x),rb,t7):prop2(ra)
+p2@t9:=someapp(dif,[x:dif]prop1d(a,x),p2,prop2(ra),[x:dif][t:prop1d(a,x)]t8(x,t)):prop2(ra)
+t10:=somei(real,[x:real]prop2(x),ra,t9):prop3
+a0ir@t11:=someapp(dif,[x:dif]prop2d(x),satzd184(a0),prop3,[x:dif][t:prop2d(x)]t10(x,t)):prop3
+-3r184
+r@satz184:=realapp1(prop3".3r184",[x:dif][t:inn(x,class(r))]t11".3r184"(x,t)):some([x:real]some([y:real]and3(pos(x),pos(y),is(r,mn(x,y)))))
+u@[a3:dif][b3:dif][c3:dif][d3:dif][a3ir:inn(a3,class(r))][b3is:inn(b3,class(s))][c3it:inn(c3,class(t))][d3iu:inn(d3,class(u))]
++3r185
+t1:=satzd185(a3,b3,c3,d3):eq"rp"(pd(md(a3,b3),md(c3,d3)),md(pd(a3,c3),pd(b3,d3)))
+t2:=isin(pl(mn(r,s),mn(t,u)),mn(pl(r,t),pl(s,u)),pd(md(a3,b3),md(c3,d3)),md(pd(a3,c3),pd(b3,d3)),picp(mn(r,s),mn(t,u),md(a3,b3),md(c3,d3),micmn(r,s,a3,b3,a3ir,b3is),micmn(t,u,c3,d3,c3it,d3iu)),micmn(pl(r,t),pl(s,u),pd(a3,c3),pd(b3,d3),picp(r,t,a3,c3,a3ir,c3it),picp(s,u,b3,d3,b3is,d3iu)),t1):is(pl(mn(r,s),mn(t,u)),mn(pl(r,t),pl(s,u)))
+-3r185
+u@satz185:=realapp4(is(pl(mn(r,s),mn(t,u)),mn(pl(r,t),pl(s,u))),[x:dif][y:dif][z:dif][v:dif][xi:inn(x,class(r))][yi:inn(y,class(s))][zi:inn(z,class(t))][vi:inn(v,class(u))]t2".3r185"(x,y,z,v,xi,yi,zi,vi)):is(pl(mn(r,s),mn(t,u)),mn(pl(r,t),pl(s,u)))
++3r186
+c2it@t1:=satzd186(a2,b2,c2):eq"rp"(pd(pd(a2,b2),c2),pd(a2,pd(b2,c2)))
+t2:=isin(pl(pl(r,s),t),pl(r,pl(s,t)),pd(pd(a2,b2),c2),pd(a2,pd(b2,c2)),picp(pl(r,s),t,pd(a2,b2),c2,picp(r,s,a2,b2,a2ir,b2is),c2it),picp(r,pl(s,t),a2,pd(b2,c2),a2ir,picp(s,t,b2,c2,b2is,c2it)),t1):is(pl(pl(r,s),t),pl(r,pl(s,t)))
+-3r186
+t@satz186:=realapp3(is(pl(pl(r,s),t),pl(r,pl(s,t))),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t2".3r186"(x,y,z,u,v,w)):is(pl(pl(r,s),t),pl(r,pl(s,t)))
+asspl1:=satz186:is(pl(pl(r,s),t),pl(r,pl(s,t)))
+asspl2:=symis(real,pl(pl(r,s),t),pl(r,pl(s,t)),satz186):is(pl(r,pl(s,t)),pl(pl(r,s),t))
+s@plmn:=tris(real,pl(mn(r,s),s),pl(r,pl(m0(s),s)),r,asspl1(r,m0(s),s),pl02(r,pl(m0(s),s),satz179a(s))):is(pl(mn(r,s),s),r)
+mnpl:=tris(real,mn(pl(r,s),s),pl(r,pl(s,m0(s))),r,asspl1(r,s,m0(s)),pl02(r,pl(s,m0(s)),satz179(s))):is(mn(pl(r,s),s),r)
+satz187a:=tris(real,pl(s,mn(r,s)),pl(mn(r,s),s),r,compl(s,mn(r,s)),plmn):is(pl(s,mn(r,s)),r)
+satz187b:=somei(real,[x:real]is(pl(s,x),r),mn(r,s),satz187a):some([x:real]is(pl(s,x),r))
+[x:real][i:is(pl(s,x),r)]
+satz187c:=tris(real,mn(r,s),mn(pl(x,s),s),x,ismn1(r,pl(x,s),s,tris1(real,r,pl(x,s),pl(s,x),i,compl(s,x))),mnpl(x,s)):is(mn(r,s),x)
+satz187d:=symis(real,mn(r,s),x,satz187c):is(x,mn(r,s))
+x@[i:is(pl(x,s),r)]
+satz187e:=satz187c(tris(real,pl(s,x),pl(x,s),r,compl(s,x),i)):is(mn(r,s),x)
+satz187f:=symis(real,mn(r,s),x,satz187e):is(x,mn(r,s))
++3r187
+s@[x:real][y:real][i:is(pl(s,x),r)][j:is(pl(s,y),r)]
+t1:=tris1(real,x,y,mn(r,s),satz187c(x,i),satz187c(y,j)):is(x,y)
+s@t2:=[x:real][y:real][t:is(pl(s,x),r)][u:is(pl(s,y),r)]t1(x,y,t,u):amone(real,[x:real]is(pl(s,x),r))
+-3r187
+s@satz187:=onei(real,[x:real]is(pl(s,x),r),t2".3r187",satz187b):one([x:real]is(pl(s,x),r))
++3r188
+c2it@[m:more(pl(r,t),pl(s,t))]
+t1:=satzd188a(a2,b2,c2,moreex(pl(r,t),pl(s,t),pd(a2,c2),pd(b2,c2),picp(r,t,a2,c2,a2ir,c2it),picp(s,t,b2,c2,b2is,c2it),m)):mored(a2,b2)
+t2:=morein(r,s,a2,b2,a2ir,b2is,t1):more(r,s)
+-3r188
+t@[m:more(pl(r,t),pl(s,t))]
+satz188a:=realapp3(more(r,s),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t2".3r188"(x,y,z,u,v,w,m)):more(r,s)
++*3r188
+c2it@[i:is(pl(r,t),pl(s,t))]
+t3:=satzd188b(a2,b2,c2,isex(pl(r,t),pl(s,t),pd(a2,c2),pd(b2,c2),picp(r,t,a2,c2,a2ir,c2it),picp(s,t,b2,c2,b2is,c2it),i)):eq"rp"(a2,b2)
+t4:=isin(r,s,a2,b2,a2ir,b2is,t3):is(r,s)
+-3r188
+t@[i:is(pl(r,t),pl(s,t))]
+satz188b:=realapp3(is(r,s),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t4".3r188"(x,y,z,u,v,w,i)):is(r,s)
++*3r188
+c2it@[l:less(pl(r,t),pl(s,t))]
+t5:=satzd188c(a2,b2,c2,lessex(pl(r,t),pl(s,t),pd(a2,c2),pd(b2,c2),picp(r,t,a2,c2,a2ir,c2it),picp(s,t,b2,c2,b2is,c2it),l)):lessd(a2,b2)
+t6:=lessin(r,s,a2,b2,a2ir,b2is,t5):less(r,s)
+-3r188
+t@[l:less(pl(r,t),pl(s,t))]
+satz188c:=realapp3(less(r,s),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t6".3r188"(x,y,z,u,v,w,l)):less(r,s)
++*3r188
+c2it@[m:more(r,s)]
+t7:=satzd188d(a2,b2,c2,moreex(r,s,a2,b2,a2ir,b2is,m)):mored(pd(a2,c2),pd(b2,c2))
+t8:=morein(pl(r,t),pl(s,t),pd(a2,c2),pd(b2,c2),picp(r,t,a2,c2,a2ir,c2it),picp(s,t,b2,c2,b2is,c2it),t7):more(pl(r,t),pl(s,t))
+-3r188
+t@[m:more(r,s)]
+satz188d:=realapp3(more(pl(r,t),pl(s,t)),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t8".3r188"(x,y,z,u,v,w,m)):more(pl(r,t),pl(s,t))
+t@[i:is(r,s)]
+satz188e:=ispl1(r,s,t,i):is(pl(r,t),pl(s,t))
++*3r188
+c2it@[l:less(r,s)]
+t9:=satzd188f(a2,b2,c2,lessex(r,s,a2,b2,a2ir,b2is,l)):lessd(pd(a2,c2),pd(b2,c2))
+t10:=lessin(pl(r,t),pl(s,t),pd(a2,c2),pd(b2,c2),picp(r,t,a2,c2,a2ir,c2it),picp(s,t,b2,c2,b2is,c2it),t9):less(pl(r,t),pl(s,t))
+-3r188
+t@[l:less(r,s)]
+satz188f:=realapp3(less(pl(r,t),pl(s,t)),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t10".3r188"(x,y,z,u,v,w,l)):less(pl(r,t),pl(s,t))
+t@[m:more(pl(t,r),pl(t,s))]
+satz188g:=satz188a(ismore12(pl(t,r),pl(r,t),pl(t,s),pl(s,t),compl(t,r),compl(t,s),m)):more(r,s)
+t@[i:is(pl(t,r),pl(t,s))]
+satz188h:=satz188b(tr3is(real,pl(r,t),pl(t,r),pl(t,s),pl(s,t),compl(r,t),i,compl(t,s))):is(r,s)
+t@[l:less(pl(t,r),pl(t,s))]
+satz188j:=satz188c(isless12(pl(t,r),pl(r,t),pl(t,s),pl(s,t),compl(t,r),compl(t,s),l)):less(r,s)
+t@[m:more(r,s)]
+satz188k:=ismore12(pl(r,t),pl(t,r),pl(s,t),pl(t,s),compl(r,t),compl(s,t),satz188d(m)):more(pl(t,r),pl(t,s))
+t@[i:is(r,s)]
+satz188l:=ispl2(r,s,t,i):is(pl(t,r),pl(t,s))
+t@[l:less(r,s)]
+satz188m:=isless12(pl(r,t),pl(t,r),pl(s,t),pl(t,s),compl(r,t),compl(s,t),satz188f(l)):less(pl(t,r),pl(t,s))
+u@[i:is(r,s)][m:more(t,u)]
+satz188n:=ismore2(pl(r,u),pl(s,u),pl(r,t),ispl1(r,s,u,i),satz188k(t,u,r,m)):more(pl(r,t),pl(s,u))
+satz188o:=ismore12(pl(r,t),pl(t,r),pl(s,u),pl(u,s),compl(r,t),compl(s,u),satz188n):more(pl(t,r),pl(u,s))
+i@[l:less(t,u)]
+satz188p:=isless2(pl(r,u),pl(s,u),pl(r,t),ispl1(r,s,u,i),satz188m(t,u,r,l)):less(pl(r,t),pl(s,u))
+satz188q:=isless12(pl(r,t),pl(t,r),pl(s,u),pl(u,s),compl(r,t),compl(s,u),satz188p):less(pl(t,r),pl(u,s))
+u@[m:more(r,s)][n:more(t,u)]
+satz189:=trmore(pl(r,t),pl(s,t),pl(s,u),satz188d(m),satz188k(t,u,s,n)):more(pl(r,t),pl(s,u))
+u@[l:less(r,s)][k:less(t,u)]
+satz189a:=lemma1(pl(s,u),pl(r,t),satz189(s,r,u,t,lemma2(r,s,l),lemma2(t,u,k))):less(pl(r,t),pl(s,u))
+u@[m:moreis(r,s)][n:more(t,u)]
+satz190a:=orapp(more(r,s),is(r,s),more(pl(r,t),pl(s,u)),m,[v:more(r,s)]satz189(v,n),[v:is(r,s)]satz188n(v,n)):more(pl(r,t),pl(s,u))
+u@[m:more(r,s)][n:moreis(t,u)]
+satz190b:=ismore12(pl(t,r),pl(r,t),pl(u,s),pl(s,u),compl(t,r),compl(u,s),satz190a(t,u,r,s,n,m)):more(pl(r,t),pl(s,u))
+u@[l:lessis(r,s)][k:less(t,u)]
+satz190c:=lemma1(pl(s,u),pl(r,t),satz190a(s,r,u,t,satz168b(l),lemma2(t,u,k))):less(pl(r,t),pl(s,u))
+u@[l:less(r,s)][k:lessis(t,u)]
+satz190d:=lemma1(pl(s,u),pl(r,t),satz190b(s,r,u,t,lemma2(l),satz168b(t,u,k))):less(pl(r,t),pl(s,u))
++3r191
+d3iu@[m:moreis(r,s)][n:moreis(t,u)]
+t1:=satzd191(a3,b3,c3,d3,moreisex(r,s,a3,b3,a3ir,b3is,m),moreisex(t,u,c3,d3,c3it,d3iu,n)):moreq(pd(a3,c3),pd(b3,d3))
+t2:=moreisin(pl(r,t),pl(s,u),pd(a3,c3),pd(b3,d3),picp(r,t,a3,c3,a3ir,c3it),picp(s,u,b3,d3,b3is,d3iu),t1):moreis(pl(r,t),pl(s,u))
+-3r191
+u@[m:moreis(r,s)][n:moreis(t,u)]
+satz191:=realapp4(moreis(pl(r,t),pl(s,u)),[x:dif][y:dif][z:dif][v:dif][xi:inn(x,class(r))][yi:inn(y,class(s))][zi:inn(z,class(t))][vi:inn(v,class(u))]t2".3r191"(x,y,z,v,xi,yi,zi,vi,m,n)):moreis(pl(r,t),pl(s,u))
+u@[l:lessis(r,s)][k:lessis(t,u)]
+satz191a:=satz168a(pl(s,u),pl(r,t),satz191(s,r,u,t,satz168b(l),satz168b(t,u,k))):lessis(pl(r,t),pl(s,u))
+@timesdr:=[x:dif][y:dif]realof(td(x,y)):[x:dif][y:dif]real
++ivr4
+[a:dif][b:dif][c:dif][d:dif][e:eq"rp"(a,b)][f:eq"rp"(c,d)]
+t1:=isin(realof(td(a,c)),realof(td(b,d)),td(a,c),td(b,d),innclass(td(a,c)),innclass(td(b,d)),eqtd12(a,b,c,d,e,f)):is(<c><a>timesdr,<d><b>timesdr)
+-ivr4
+ftimesdr:=[x:dif][y:dif][z:dif][v:dif][t:<y><x>eq][u:<v><z>eq]t1".ivr4"(x,y,z,v,t,u):fixf2(real,timesdr)
+s@ts:=indreal2(real,timesdr,ftimesdr,r,s):real
++*ivr4
+b1is@t2:=isindreal2(real,timesdr,ftimesdr,r,s,a1,b1,a1ir,b1is):is(realof(td(a1,b1)),ts(r,s))
+-ivr4
+b1is@tict:=isp(real,[x:real]inn(td(a1,b1),class(x)),realof(td(a1,b1)),ts(r,s),innclass(td(a1,b1)),t2".ivr4"):inn(td(a1,b1),class(ts(r,s)))
+t@[i:is(r,s)]
+ists1:=isf(real,real,[x:real]ts(x,t),r,s,i):is(ts(r,t),ts(s,t))
+ists2:=isf(real,real,[x:real]ts(t,x),r,s,i):is(ts(t,r),ts(t,s))
+u@[i:is(r,s)][j:is(t,u)]
+ists12:=tris(real,ts(r,t),ts(s,t),ts(s,u),ists1(i),ists2(t,u,s,j)):is(ts(r,t),ts(s,u))
++4r192
+b1is@[i:is(r,0)]
+t1:=satzd192a(a1,b1,0ex(r,a1,a1ir,i)):zero(td(a1,b1))
+t2:=0in(ts(r,s),td(a1,b1),tict,t1):is(ts(r,s),0)
+-4r192
+s@[i:is(r,0)]
+satz192a:=realapp2(is(ts(r,s),0),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t2".4r192"(x,y,t,u,i)):is(ts(r,s),0)
++*4r192
+b1is@[i:is(s,0)]
+t3:=satzd192b(a1,b1,0ex(s,b1,b1is,i)):zero(td(a1,b1))
+t4:=0in(ts(r,s),td(a1,b1),tict,t3):is(ts(r,s),0)
+-4r192
+s@[i:is(s,0)]
+satz192b:=realapp2(is(ts(r,s),0),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t4".4r192"(x,y,t,u,i)):is(ts(r,s),0)
++*4r192
+b1is@[i:is(ts(r,s),0)]
+t5:=satzd192c(a1,b1,0ex(ts(r,s),td(a1,b1),tict,i)):or(zero(a1),zero(b1))
+t6:=th9"l.or"(zero(a1),zero(b1),is(r,0),is(s,0),t5,[t:zero(a1)]0in(r,a1,a1ir,t),[t:zero(b1)]0in(s,b1,b1is,t)):or(is(r,0),is(s,0))
+-4r192
+s@[i:is(ts(r,s),0)]
+satz192c:=realapp2(or(is(r,0),is(s,0)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t6".4r192"(x,y,t,u,i)):or(is(r,0),is(s,0))
+s@[n:nis(r,0)][o:nis(s,0)]
+satz192d:=th3"l.imp"(is(ts(r,s),0),or(is(r,0),is(s,0)),th3"l.or"(is(r,0),is(s,0),n,o),[t:is(ts(r,s),0)]satz192c(t)):nis(ts(r,s),0)
+s@[i:is(r,0)]
+ts01:=satz192a(i):is(ts(r,s),0)
+s@[i:is(s,0)]
+ts02:=satz192b(i):is(ts(r,s),0)
++4r193
+b1is@t1:=satzd193(a1,b1):eq"rp"(absd(td(a1,b1)),td(absd(a1),absd(b1)))
+t2:=isin(abs(ts(r,s)),ts(abs(r),abs(s)),absd(td(a1,b1)),td(absd(a1),absd(b1)),aica(ts(r,s),td(a1,b1),tict),tict(abs(r),abs(s),absd(a1),absd(b1),aica(r,a1,a1ir),aica(s,b1,b1is)),t1):is(abs(ts(r,s)),ts(abs(r),abs(s)))
+-4r193
+s@satz193:=realapp2(is(abs(ts(r,s)),ts(abs(r),abs(s))),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t2".4r193"(x,y,t,u)):is(abs(ts(r,s)),ts(abs(r),abs(s)))
+satz193a:=symis(real,abs(ts(r,s)),ts(abs(r),abs(s)),satz193):is(ts(abs(r),abs(s)),abs(ts(r,s)))
++4r194
+b1is@t1:=satzd194(a1,b1):eq"rp"(td(a1,b1),td(b1,a1))
+t2:=isin(ts(r,s),ts(s,r),td(a1,b1),td(b1,a1),tict,tict(s,r,b1,a1,b1is,a1ir),t1):is(ts(r,s),ts(s,r))
+-4r194
+satz194:=realapp2(is(ts(r,s),ts(s,r)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t2".4r194"(x,y,t,u)):is(ts(r,s),ts(s,r))
+comts:=satz194:is(ts(r,s),ts(s,r))
+@1rl:=realof(1df):real
+pos1:=posin(1rl,1df,innclass(1df),posdirp(1rp)):pos(1rl)
+natrl1:=natrli(1):natrl(1rl)
+intrl1:=natintrl(1rl,natrl1):intrl(1rl)
++4r195
+a0ir@t1:=satzd195(a0):eq"rp"(td(a0,1df),a0)
+t2:=isin(ts(r,1rl),r,td(a0,1df),a0,tict(r,1rl,a0,1df,a0ir,innclass(1df)),a0ir,t1):is(ts(r,1rl),r)
+-4r195
+r@satz195:=realapp1(is(ts(r,1rl),r),[x:dif][t:inn(x,class(r))]t2".4r195"(x,t)):is(ts(r,1rl),r)
+satz195a:=symis(real,ts(r,1rl),r,satz195):is(r,ts(r,1rl))
+satz195b:=tris(real,ts(1rl,r),ts(r,1rl),r,comts(1rl,r),satz195):is(ts(1rl,r),r)
+satz195c:=symis(real,ts(1rl,r),r,satz195b):is(r,ts(1rl,r))
+s@[p:pos(r)][q:pos(s)]
+satz196a:=symis(real,ts(abs(r),abs(s)),ts(r,s),ists12(abs(r),r,abs(s),s,absp(r,p),absp(s,q))):is(ts(r,s),ts(abs(r),abs(s)))
++4r196
+b1is@[n:neg(r)][o:neg(s)]
+t1:=satzd196b(a1,b1,negex(r,a1,a1ir,n),negex(s,b1,b1is,o)):eq"rp"(td(a1,b1),td(absd(a1),absd(b1)))
+t2:=isin(ts(r,s),ts(abs(r),abs(s)),td(a1,b1),td(absd(a1),absd(b1)),tict,tict(abs(r),abs(s),absd(a1),absd(b1),aica(r,a1,a1ir),aica(s,b1,b1is)),t1):is(ts(r,s),ts(abs(r),abs(s)))
+-4r196
+s@[n:neg(r)][o:neg(s)]
+satz196b:=realapp2(is(ts(r,s),ts(abs(r),abs(s))),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t2".4r196"(x,y,t,u,n,o)):is(ts(r,s),ts(abs(r),abs(s)))
++*4r196
+b1is@[p:pos(r)][n:neg(s)]
+t1a:=satzd196c(a1,b1,posex(r,a1,a1ir,p),negex(s,b1,b1is,n)):eq"rp"(td(a1,b1),m0d(td(absd(a1),absd(b1))))
+t2a:=isin(ts(r,s),m0(ts(abs(r),abs(s))),td(a1,b1),m0d(td(absd(a1),absd(b1))),tict,micm0(ts(abs(r),abs(s)),td(absd(a1),absd(b1)),tict(abs(r),abs(s),absd(a1),absd(b1),aica(r,a1,a1ir),aica(s,b1,b1is))),t1a):is(ts(r,s),m0(ts(abs(r),abs(s))))
+-4r196
+s@[p:pos(r)][n:neg(s)]
+satz196c:=realapp2(is(ts(r,s),m0(ts(abs(r),abs(s)))),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t2a".4r196"(x,y,t,u,p,n)):is(ts(r,s),m0(ts(abs(r),abs(s))))
+s@[n:neg(r)][p:pos(s)]
+satz196d:=tr3is(real,ts(r,s),ts(s,r),m0(ts(abs(s),abs(r))),m0(ts(abs(r),abs(s))),comts(r,s),satz196c(s,r,p,n),ism0(ts(abs(s),abs(r)),ts(abs(r),abs(s)),comts(abs(s),abs(r)))):is(ts(r,s),m0(ts(abs(r),abs(s))))
++*4r196
+a0ir@[n:not(is(r,0))]
+t3:=th3"l.imp"(zero(a0),is(r,0),n,[t:zero(a0)]0in(t)):not(zero(a0))
+b1is@[n:not(is(r,0))][o:not(is(s,0))][i:is(ts(r,s),ts(abs(r),abs(s)))]
+t4:=satzd196e(a1,b1,t3(r,a1,a1ir,n),t3(s,b1,b1is,o),isex(ts(r,s),ts(abs(r),abs(s)),td(a1,b1),td(absd(a1),absd(b1)),tict,tict(abs(r),abs(s),absd(a1),absd(b1),aica(r,a1,a1ir),aica(s,b1,b1is)),i)):or(and(posd(a1),posd(b1)),and(negd(a1),negd(b1)))
+[a:and(posd(a1),posd(b1))]
+t5:=andi(pos(r),pos(s),posin(r,a1,a1ir,ande1(posd(a1),posd(b1),a)),posin(s,b1,b1is,ande2(posd(a1),posd(b1),a))):and(pos(r),pos(s))
+i@[a:and(negd(a1),negd(b1))]
+t6:=andi(neg(r),neg(s),negin(r,a1,a1ir,ande1(negd(a1),negd(b1),a)),negin(s,b1,b1is,ande2(negd(a1),negd(b1),a))):and(neg(r),neg(s))
+i@t7:=th9"l.or"(and(posd(a1),posd(b1)),and(negd(a1),negd(b1)),and(pos(r),pos(s)),and(neg(r),neg(s)),t4,[t:and(posd(a1),posd(b1))]t5(t),[t:and(negd(a1),negd(b1))]t6(t)):or(and(pos(r),pos(s)),and(neg(r),neg(s)))
+-4r196
+s@[n:not(is(r,0))][o:not(is(s,0))][i:is(ts(r,s),ts(abs(r),abs(s)))]
+satz196e:=realapp2(or(and(pos(r),pos(s)),and(neg(r),neg(s))),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t7".4r196"(x,y,t,u,n,o,i)):or(and(pos(r),pos(s)),and(neg(r),neg(s)))
++*4r196
+o@[i:is(ts(r,s),m0(ts(abs(r),abs(s))))]
+t8:=satzd196f(a1,b1,t3(r,a1,a1ir,n),t3(s,b1,b1is,o),isex(ts(r,s),m0(ts(abs(r),abs(s))),td(a1,b1),m0d(td(absd(a1),absd(b1))),tict,micm0(ts(abs(r),abs(s)),td(absd(a1),absd(b1)),tict(abs(r),abs(s),absd(a1),absd(b1),aica(r,a1,a1ir),aica(s,b1,b1is))),i)):or(and(posd(a1),negd(b1)),and(negd(a1),posd(b1)))
+[a:and(posd(a1),negd(b1))]
+t9:=andi(pos(r),neg(s),posin(r,a1,a1ir,ande1(posd(a1),negd(b1),a)),negin(s,b1,b1is,ande2(posd(a1),negd(b1),a))):and(pos(r),neg(s))
+i@[a:and(negd(a1),posd(b1))]
+t10:=andi(neg(r),pos(s),negin(r,a1,a1ir,ande1(negd(a1),posd(b1),a)),posin(s,b1,b1is,ande2(negd(a1),posd(b1),a))):and(neg(r),pos(s))
+i@t11:=th9"l.or"(and(posd(a1),negd(b1)),and(negd(a1),posd(b1)),and(pos(r),neg(s)),and(neg(r),pos(s)),t8,[t:and(posd(a1),negd(b1))]t9(t),[t:and(negd(a1),posd(b1))]t10(t)):or(and(pos(r),neg(s)),and(neg(r),pos(s)))
+-4r196
+o@[i:is(ts(r,s),m0(ts(abs(r),abs(s))))]
+satz196f:=realapp2(or(and(pos(r),neg(s)),and(neg(r),pos(s))),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t11".4r196"(x,y,t,u,n,o,i)):or(and(pos(r),neg(s)),and(neg(r),pos(s)))
+s@[p:pos(ts(r,s))]
++*4r196
+p"r"@t12:=th3"l.imp"(is(r,0),is(ts(r,s),0),pnot0(ts(r,s),p),[t:is(r,0)]ts01(r,s,t)):nis(r,0)
+t13:=th3"l.imp"(is(s,0),is(ts(r,s),0),pnot0(ts(r,s),p),[t:is(s,0)]ts02(r,s,t)):nis(s,0)
+t14:=tris1(real,ts(r,s),ts(abs(r),abs(s)),abs(ts(r,s)),absp(ts(r,s),p),satz193(r,s)):is(ts(r,s),ts(abs(r),abs(s)))
+-4r196
+p@satz196g:=satz196e(t12".4r196",t13".4r196",t14".4r196"):or(and(pos(r),pos(s)),and(neg(r),neg(s)))
+s@[n:neg(ts(r,s))]
++*4r196
+n"r"@t15:=th3"l.imp"(is(r,0),is(ts(r,s),0),nnot0(ts(r,s),n),[t:is(r,0)]ts01(r,s,t)):nis(r,0)
+t16:=th3"l.imp"(is(s,0),is(ts(r,s),0),nnot0(ts(r,s),n),[t:is(s,0)]ts02(r,s,t)):nis(s,0)
+t17:=satz177c(ts(abs(r),abs(s)),ts(r,s),tris(real,ts(abs(r),abs(s)),abs(ts(r,s)),m0(ts(r,s)),satz193a(r,s),absn(ts(r,s),n))):is(ts(r,s),m0(ts(abs(r),abs(s))))
+-4r196
+n@satz196h:=satz196f(t15".4r196",t16".4r196",t17".4r196"):or(and(pos(r),neg(s)),and(neg(r),pos(s)))
++4r197
+b1is@t1:=satzd197a(a1,b1):eq"rp"(td(m0d(a1),b1),m0d(td(a1,b1)))
+t2:=isin(ts(m0(r),s),m0(ts(r,s)),td(m0d(a1),b1),m0d(td(a1,b1)),tict(m0(r),s,m0d(a1),b1,micm0(r,a1,a1ir),b1is),micm0(ts(r,s),td(a1,b1),tict),t1):is(ts(m0(r),s),m0(ts(r,s)))
+-4r197
+s@satz197a:=realapp2(is(ts(m0(r),s),m0(ts(r,s))),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t2".4r197"(x,y,t,u)):is(ts(m0(r),s),m0(ts(r,s)))
+satz197b:=tr3is(real,ts(r,m0(s)),ts(m0(s),r),m0(ts(s,r)),m0(ts(r,s)),comts(r,m0(s)),satz197a(s,r),ism0(ts(s,r),ts(r,s),comts(s,r))):is(ts(r,m0(s)),m0(ts(r,s)))
+satz197c:=tris2(real,ts(m0(r),s),ts(r,m0(s)),m0(ts(r,s)),satz197a,satz197b):is(ts(m0(r),s),ts(r,m0(s)))
+satz197d:=symis(real,ts(m0(r),s),ts(r,m0(s)),satz197c):is(ts(r,m0(s)),ts(m0(r),s))
+satz197e:=symis(real,ts(m0(r),s),m0(ts(r,s)),satz197a):is(m0(ts(r,s)),ts(m0(r),s))
+satz197f:=symis(real,ts(r,m0(s)),m0(ts(r,s)),satz197b):is(m0(ts(r,s)),ts(r,m0(s)))
+satz198:=tris(real,ts(m0(r),m0(s)),ts(r,m0(m0(s))),ts(r,s),satz197c(r,m0(s)),ists2(m0(m0(s)),s,r,satz177(s))):is(ts(m0(r),m0(s)),ts(r,s))
+satz198a:=symis(real,ts(m0(r),m0(s)),ts(r,s),satz198):is(ts(r,s),ts(m0(r),m0(s)))
++*ivr4
+b1is@[p:pos(r)][q:pos(s)]
+t3:=ptdpp(a1,b1,posex(r,a1,a1ir,p),posex(s,b1,b1is,q)):posd(td(a1,b1))
+t4:=posin(ts(r,s),td(a1,b1),tict,t3):pos(ts(r,s))
+-ivr4
+s@[p:pos(r)][q:pos(s)]
+postspp:=realapp2(pos(ts(r,s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t4".ivr4"(x,y,t,u,p,q)):pos(ts(r,s))
++*ivr4
+p@[n:neg(s)]
+t5:=ntdpn(a1,b1,posex(r,a1,a1ir,p),negex(s,b1,b1is,n)):negd(td(a1,b1))
+t6:=negin(ts(r,s),td(a1,b1),tict,t5):neg(ts(r,s))
+-ivr4
+s@[p:pos(r)][n:neg(s)]
+negtspn:=realapp2(neg(ts(r,s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t6".ivr4"(x,y,t,u,p,n)):neg(ts(r,s))
+s@[n:neg(r)][p:pos(s)]
+negtsnp:=isneg(ts(s,r),ts(r,s),comts(s,r),negtspn(s,r,p,n)):neg(ts(r,s))
+s@[n:neg(r)][o:neg(s)]
+postsnn:=ispos(ts(m0(r),m0(s)),ts(r,s),satz198,postspp(m0(r),m0(s),satz176c(r,n),satz176c(s,o))):pos(ts(r,s))
+r@[n:nis(r,0)]
+possq:=rapp(r,pos(ts(r,r)),[t:pos(r)]postspp(r,r,t,t),th2"l.imp"(is(r,0),pos(ts(r,r)),n),[t:neg(r)]postsnn(r,r,t,t)):pos(ts(r,r))
+r@nnegsq:=th1"l.imp"(is(r,0),not(neg(ts(r,r))),[t:is(r,0)]0notn(ts(r,r),satz192a(r,r,t)),[t:nis(r,0)]pnotn(ts(r,r),possq(r,t))):not(neg(ts(r,r)))
++4r199
+c2it@t1:=satzd199(a2,b2,c2):eq"rp"(td(td(a2,b2),c2),td(a2,td(b2,c2)))
+t2:=isin(ts(ts(r,s),t),ts(r,ts(s,t)),td(td(a2,b2),c2),td(a2,td(b2,c2)),tict(ts(r,s),t,td(a2,b2),c2,tict(r,s,a2,b2,a2ir,b2is),c2it),tict(r,ts(s,t),a2,td(b2,c2),a2ir,tict(s,t,b2,c2,b2is,c2it)),t1):is(ts(ts(r,s),t),ts(r,ts(s,t)))
+-4r199
+t@satz199:=realapp3(is(ts(ts(r,s),t),ts(r,ts(s,t))),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t2".4r199"(x,y,z,u,v,w)):is(ts(ts(r,s),t),ts(r,ts(s,t)))
+assts1:=satz199:is(ts(ts(r,s),t),ts(r,ts(s,t)))
+assts2:=symis(real,ts(ts(r,s),t),ts(r,ts(s,t)),satz199):is(ts(r,ts(s,t)),ts(ts(r,s),t))
++4r201
+c2it@t1:=satzd201(a2,b2,c2):eq"rp"(td(a2,pd(b2,c2)),pd(td(a2,b2),td(a2,c2)))
+t2:=isin(ts(r,pl(s,t)),pl(ts(r,s),ts(r,t)),td(a2,pd(b2,c2)),pd(td(a2,b2),td(a2,c2)),tict(r,pl(s,t),a2,pd(b2,c2),a2ir,picp(s,t,b2,c2,b2is,c2it)),picp(ts(r,s),ts(r,t),td(a2,b2),td(a2,c2),tict(r,s,a2,b2,a2ir,b2is),tict(r,t,a2,c2,a2ir,c2it)),t1):is(ts(r,pl(s,t)),pl(ts(r,s),ts(r,t)))
+-4r201
+satz201:=realapp3(is(ts(r,pl(s,t)),pl(ts(r,s),ts(r,t))),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t2".4r201"(x,y,z,u,v,w)):is(ts(r,pl(s,t)),pl(ts(r,s),ts(r,t)))
+disttp1:=tr3is(real,ts(pl(r,s),t),ts(t,pl(r,s)),pl(ts(t,r),ts(t,s)),pl(ts(r,t),ts(s,t)),comts(pl(r,s),t),satz201(t,r,s),ispl12(ts(t,r),ts(r,t),ts(t,s),ts(s,t),comts(t,r),comts(t,s))):is(ts(pl(r,s),t),pl(ts(r,t),ts(s,t)))
+disttp2:=satz201:is(ts(r,pl(s,t)),pl(ts(r,s),ts(r,t)))
+distpt1:=symis(real,ts(pl(r,s),t),pl(ts(r,t),ts(s,t)),disttp1):is(pl(ts(r,t),ts(s,t)),ts(pl(r,s),t))
+distpt2:=symis(real,ts(r,pl(s,t)),pl(ts(r,s),ts(r,t)),disttp2):is(pl(ts(r,s),ts(r,t)),ts(r,pl(s,t)))
+satz202:=tris(real,ts(r,mn(s,t)),pl(ts(r,s),ts(r,m0(t))),mn(ts(r,s),ts(r,t)),disttp2(r,s,m0(t)),ispl2(ts(r,m0(t)),m0(ts(r,t)),ts(r,s),satz197b(r,t))):is(ts(r,mn(s,t)),mn(ts(r,s),ts(r,t)))
+disttm1:=tris(real,ts(mn(r,s),t),pl(ts(r,t),ts(m0(s),t)),mn(ts(r,t),ts(s,t)),disttp1(r,m0(s),t),ispl2(ts(m0(s),t),m0(ts(s,t)),ts(r,t),satz197a(s,t))):is(ts(mn(r,s),t),mn(ts(r,t),ts(s,t)))
+disttm2:=satz202:is(ts(r,mn(s,t)),mn(ts(r,s),ts(r,t)))
+distmt1:=symis(real,ts(mn(r,s),t),mn(ts(r,t),ts(s,t)),disttm1):is(mn(ts(r,t),ts(s,t)),ts(mn(r,s),t))
+distmt2:=symis(real,ts(r,mn(s,t)),mn(ts(r,s),ts(r,t)),disttm2):is(mn(ts(r,s),ts(r,t)),ts(r,mn(s,t)))
+satz200:=satz202:is(ts(r,mn(s,t)),mn(ts(r,s),ts(r,t)))
++4r203
+c2it@[m:more(r,s)][p:pos(t)]
+t1:=satzd203a(a2,b2,c2,moreex(r,s,a2,b2,a2ir,b2is,m),posex(t,c2,c2it,p)):mored(td(a2,c2),td(b2,c2))
+t2:=morein(ts(r,t),ts(s,t),td(a2,c2),td(b2,c2),tict(r,t,a2,c2,a2ir,c2it),tict(s,t,b2,c2,b2is,c2it),t1):more(ts(r,t),ts(s,t))
+-4r203
+[m:more(r,s)][p:pos(t)]
+satz203a:=realapp3(more(ts(r,t),ts(s,t)),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t2".4r203"(x,y,z,u,v,w,m,p)):more(ts(r,t),ts(s,t))
+m@[i:is(t,0)]
+satz203b:=tris2(real,ts(r,t),ts(s,t),0,ts02(r,t,i),ts02(s,t,i)):is(ts(r,t),ts(s,t))
++*4r203
+m@[n:neg(t)]
+t3:=satzd203c(a2,b2,c2,moreex(r,s,a2,b2,a2ir,b2is,m),negex(t,c2,c2it,n)):lessd(td(a2,c2),td(b2,c2))
+t4:=lessin(ts(r,t),ts(s,t),td(a2,c2),td(b2,c2),tict(r,t,a2,c2,a2ir,c2it),tict(s,t,b2,c2,b2is,c2it),t3):less(ts(r,t),ts(s,t))
+-4r203
+m@[n:neg(t)]
+satz203c:=realapp3(less(ts(r,t),ts(s,t)),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t4".4r203"(x,y,z,u,v,w,m,n)):less(ts(r,t),ts(s,t))
+p@satz203d:=ismore12(ts(r,t),ts(t,r),ts(s,t),ts(t,s),comts(r,t),comts(s,t),satz203a):more(ts(t,r),ts(t,s))
+i@satz203e:=tris2(real,ts(t,r),ts(t,s),0,ts01(t,r,i),ts01(t,s,i)):is(ts(t,r),ts(t,s))
+n@satz203f:=isless12(ts(r,t),ts(t,r),ts(s,t),ts(t,s),comts(r,t),comts(s,t),satz203c):less(ts(t,r),ts(t,s))
+t@[l:less(r,s)][p:pos(t)]
+satz203g:=lemma1(ts(s,t),ts(r,t),satz203a(s,r,t,lemma2(r,s,l),p)):less(ts(r,t),ts(s,t))
+l@[i:is(t,0)]
+satz203h:=tris2(real,ts(r,t),ts(s,t),0,ts02(r,t,i),ts02(s,t,i)):is(ts(r,t),ts(s,t))
+l@[n:neg(t)]
+satz203j:=lemma2(ts(s,t),ts(r,t),satz203c(s,r,t,lemma2(r,s,l),n)):more(ts(r,t),ts(s,t))
+p@satz203k:=lemma1(ts(t,s),ts(t,r),satz203d(s,r,t,lemma2(r,s,l),p)):less(ts(t,r),ts(t,s))
+i@satz203l:=tris2(real,ts(t,r),ts(t,s),0,ts01(t,r,i),ts01(t,s,i)):is(ts(t,r),ts(t,s))
+n@satz203m:=lemma2(ts(t,s),ts(t,r),satz203f(s,r,t,lemma2(r,s,l),n)):more(ts(t,r),ts(t,s))
++4r204
+a0ir@[n1:nis(r,0)]
+t1:=th3"l.imp"(zero(a0),is(r,0),n1,[t:zero(a0)]0in(t)):not(zero(a0))
+d3iu@[n1:nis(s,0)][i:is(ts(s,t),r)][j:is(ts(s,u),r)]
+t2:=satzd204b(a3,b3,t1(s,b3,b3is,n1),c3,d3,isex(ts(s,t),r,td(b3,c3),a3,tict(s,t,b3,c3,b3is,c3it),a3ir,i),isex(ts(s,u),r,td(b3,d3),a3,tict(s,u,b3,d3,b3is,d3iu),a3ir,j)):eq"rp"(c3,d3)
+t3:=isin(t,u,c3,d3,c3it,d3iu,t2):is(t,u)
+-4r204
+s@[n:nis(s,0)][x:real][y:real][i:is(ts(s,x),r)][j:is(ts(s,y),r)]
+satz204b:=realapp4(x,y,is(x,y),[z:dif][u:dif][v:dif][w:dif][zi:inn(z,class(r))][ui:inn(u,class(s))][vi:inn(v,class(x))][wi:inn(w,class(y))]t3".4r204"(x,y,z,u,v,w,zi,ui,vi,wi,n,i,j)):is(x,y)
++*4r204
+b1is@[n1:nis(s,0)]
+t4:=satzd204a(a1,b1,t1(s,b1,b1is,n1)):some"l"(dif,[x:dif]eq"rp"(td(b1,x),a1))
+[a:dif][e:eq"rp"(td(b1,a),a1)]
+ar:=realof(a):real
+t5:=isin(ts(s,ar),r,td(b1,a),a1,tict(s,ar,b1,a,b1is,innclass(a)),a1ir,e):is(ts(s,ar),r)
+t6:=somei(real,[x:real]is(ts(s,x),r),ar,t5):some([x:real]is(ts(s,x),r))
+n1@t7:=someapp(dif,[x:dif]eq"rp"(td(b1,x),a1),t4,some([x:real]is(ts(s,x),r)),[x:dif][t:eq"rp"(td(b1,x),a1)]t6(x,t)):some([x:real]is(ts(s,x),r))
+-4r204
+n@satz204a:=realapp2(some([x:real]is(ts(s,x),r)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t7".4r204"(x,y,t,u,n)):some([x:real]is(ts(s,x),r))
+satz204:=onei(real,[x:real]is(ts(s,x),r),[x:real][y:real][t:is(ts(s,x),r)][u:is(ts(s,y),r)]satz204b(x,y,t,u),satz204a):one([x:real]is(ts(s,x),r))
+ov:=ind(real,[x:real]is(ts(s,x),r),satz204):real
+satz204c:=oneax(real,[x:real]is(ts(s,x),r),satz204):is(ts(s,ov(r,s,n)),r)
+satz204d:=symis(real,ts(s,ov(r,s,n)),r,satz204c):is(r,ts(s,ov(r,s,n)))
+satz204e:=tris(real,ts(ov(r,s,n),s),ts(s,ov(r,s,n)),r,comts(ov(r,s,n),s),satz204c):is(ts(ov(r,s,n),s),r)
+satz204f:=symis(real,ts(ov(r,s,n),s),r,satz204e):is(r,ts(ov(r,s,n),s))
+s@[x:real][n:nis(s,0)][i:is(ts(s,x),r)]
+satz204g:=satz204b(n,x,ov(r,s,n),i,satz204c(n)):is(x,ov(r,s,n))
+s@[n:nis(s,0)][p:pos(r)][q:pos(s)]
++*4r204
+n@ros:=ov(r,s,n):real
+p@t8:=ispos(r,ts(s,ros),satz204d(n),p):pos(ts(s,ros))
+q@t9:=th1"l.and"(neg(s),neg(ros),pnotn(s,q)):not(and(neg(s),neg(ros)))
+t10:=ore1(and(pos(s),pos(ros)),and(neg(s),neg(ros)),satz196g(s,ros,t8),t9):and(pos(s),pos(ros))
+-4r204
+q@posovpp:=ande2(pos(s),pos(ov(r,s,n)),t10".4r204"):pos(ov(r,s,n))
+p@[m:neg(s)]
++*4r204
+m@t11:=th1"l.and"(pos(s),pos(ros),nnotp(s,m)):not(and(pos(s),pos(ros)))
+t12:=ore2(and(pos(s),pos(ros)),and(neg(s),neg(ros)),satz196g(s,ros,t8),t11):and(neg(s),neg(ros))
+-4r204
+m@negovpn:=ande2(neg(s),neg(ov(r,s,n)),t12".4r204"):neg(ov(r,s,n))
+n@[m:neg(r)][p:pos(s)]
++*4r204
+m@t13:=isneg(r,ts(s,ros),satz204d(n),m):neg(ts(s,ros))
+p@t14:=th1"l.and"(neg(s),pos(ros),pnotn(s,p)):not(and(neg(s),pos(ros)))
+t15:=ore1(and(pos(s),neg(ros)),and(neg(s),pos(ros)),satz196h(s,ros,t13),t14):and(pos(s),neg(ros))
+-4r204
+p@negovnp:=ande2(pos(s),neg(ov(r,s,n)),t15".4r204"):neg(ov(r,s,n))
+m@[l:neg(s)]
++*4r204
+l@t16:=th1"l.and"(pos(s),neg(ros),nnotp(s,l)):not(and(pos(s),neg(ros)))
+t17:=ore2(and(pos(s),neg(ros)),and(neg(s),pos(ros)),satz196h(s,ros,t13),t16):and(neg(s),pos(ros))
+-4r204
+l@posovnn:=ande2(neg(s),pos(ov(r,s,n)),t17".4r204"):pos(ov(r,s,n))
+@[r0:cut][s0:cut][m:more"rp"(r0,s0)]
+morerpep:=morein(pofrp(r0),pofrp(s0),pdofrp(r0),pdofrp(s0),innclass(pdofrp(r0)),innclass(pdofrp(s0)),morerpepd(r0,s0,m)):more(pofrp(r0),pofrp(s0))
+s0@[m:more(pofrp(r0),pofrp(s0))]
+morerpip:=morerpipd(r0,s0,moreex(pofrp(r0),pofrp(s0),pdofrp(r0),pdofrp(s0),innclass(pdofrp(r0)),innclass(pdofrp(s0)),m)):more"rp"(r0,s0)
+s0@[l:less"rp"(r0,s0)]
+lessrpep:=lemma1(pofrp(s0),pofrp(r0),morerpep(s0,r0,satz122(r0,s0,l))):less(pofrp(r0),pofrp(s0))
+s0@[l:less(pofrp(r0),pofrp(s0))]
+lessrpip:=satz121(s0,r0,morerpip(s0,r0,lemma2(pofrp(r0),pofrp(s0),l))):less"rp"(r0,s0)
+s@[p:pos(r)][q:pos(s)][m:more(r,s)]
+q@[m:more(r,s)]
++ivr5
+t1:=ismore12(r,pofrp(rpofp(r,p)),s,pofrp(rpofp(s,q)),isprp1(r,p),isprp1(s,q),m):more(pofrp(rpofp(r,p)),pofrp(rpofp(s,q)))
+-ivr5
+moreperp:=morerpip(rpofp(r,p),rpofp(s,q),t1".ivr5"):more"rp"(rpofp(r,p),rpofp(s,q))
+q@[m:more"rp"(rpofp(r,p),rpofp(s,q))]
++*ivr5
+m@t2:=morerpep(rpofp(r,p),rpofp(s,q),m):more(pofrp(rpofp(r,p)),pofrp(rpofp(s,q)))
+-ivr5
+m@morepirp:=ismore12(pofrp(rpofp(r,p)),r,pofrp(rpofp(s,q)),s,isprp2(r,p),isprp2(s,q),t2".ivr5"):more(r,s)
+q@[l:less(r,s)]
+lessperp:=satz121(rpofp(s,q),rpofp(r,p),moreperp(s,r,q,p,lemma2(r,s,l))):less"rp"(rpofp(r,p),rpofp(s,q))
+q@[l:less"rp"(rpofp(r,p),rpofp(s,q))]
+lesspirp:=lemma1(s,r,morepirp(s,r,q,p,satz122(rpofp(r,p),rpofp(s,q),l))):less(r,s)
+r@s01:=setof(real,[x:real]lessis(x,r)):set(real)
+s02:=setof(real,[x:real]more(x,r)):set(real)
++5r205
+s@[n:not(in(s,s01))]
+t1:=th3"l.imp"(lessis(s,r),in(s,s01),n,[t:lessis(s,r)]estii(real,[x:real]lessis(x,r),s,t)):not(lessis(s,r))
+t2:=estii(real,[x:real]more(x,r),s,satz167k(s,r,t1)):in(s,s02)
+-5r205
+vb00:=[x:real][t:not(in(x,s01))]t2".5r205"(x,t):all([x:real]or(in(x,s01),in(x,s02)))
++*5r205
+r@t3:=estii(real,[x:real]lessis(x,r),r,lessisi2(r,r,refis(real,r))):in(r,s01)
+-5r205
+r@vb01a:=nonemptyi(real,s01,r,t3".5r205"):nonempty(real,s01)
++*5r205
+r@t4:=ismore2(pl(r,0),r,pl(r,1rl),pl02(r,0,refis(real,0)),satz188k(1rl,0,r,satz169a(1rl,pos1))):more(pl(r,1rl),r)
+t5:=estii(real,[x:real]more(x,r),pl(r,1rl),t4):in(pl(r,1rl),s02)
+-5r205
+r@vb01b:=nonemptyi(real,s02,pl(r,1rl),t5".5r205"):nonempty(real,s02)
++*5r205
+s@[i:in(s,s01)][t:real][j:in(t,s02)]
+t6:=satz172a(s,r,t,estie(real,[x:real]lessis(x,r),s,i),lemma1(t,r,estie(real,[x:real]more(x,r),t,j))):less(s,t)
+-5r205
+r@vb02:=[x:real][t:in(x,s01)][y:real][u:in(y,s02)]t6".5r205"(x,t,y,u):all([x:real][t:in(x,s01)]all([y:real][u:in(y,s02)]less(x,y)))
+s@[l:less(s,r)]
+vb03a:=estii(real,[x:real]lessis(x,r),s,lessisi1(s,r,l)):in(s,s01)
+s@[m:more(s,r)]
+vb03b:=estii(real,[x:real]more(x,r),s,m):in(s,s02)
+r@s11:=setof(real,[x:real]less(x,r)):set(real)
+s12:=setof(real,[x:real]moreis(x,r)):set(real)
++*5r205
+s@[n:not(in(s,s11))]
+t7:=th3"l.imp"(less(s,r),in(s,s11),n,[t:less(s,r)]estii(real,[x:real]less(x,r),s,t)):not(less(s,r))
+t8:=estii(real,[x:real]moreis(x,r),s,satz167f(s,r,t7)):in(s,s12)
+-5r205
+r@vb10:=[x:real][t:not(in(x,s11))]t8".5r205"(x,t):all([x:real]or(in(x,s11),in(x,s12)))
++*5r205
+r@t9:=isless2(pl(r,0),r,mn(r,1rl),pl02(r,0,refis(real,0)),satz188m(m0(1rl),0,r,satz169c(m0(1rl),satz176a(1rl,pos1)))):less(mn(r,1rl),r)
+t10:=estii(real,[x:real]less(x,r),mn(r,1rl),t9):in(mn(r,1rl),s11)
+-5r205
+r@vb11a:=nonemptyi(real,s11,mn(r,1rl),t10".5r205"):nonempty(real,s11)
++*5r205
+r@t11:=estii(real,[x:real]moreis(x,r),r,moreisi2(r,r,refis(real,r))):in(r,s12)
+-5r205
+r@vb11b:=nonemptyi(real,s12,r,t11".5r205"):nonempty(real,s12)
++*5r205
+s@[i:in(s,s11)][t:real][j:in(t,s12)]
+t12:=satz172b(s,r,t,estie(real,[x:real]less(x,r),s,i),satz168a(t,r,estie(real,[x:real]moreis(x,r),t,j))):less(s,t)
+-5r205
+r@vb12:=[x:real][t:in(x,s11)][y:real][u:in(y,s12)]t12".5r205"(x,t,y,u):all([x:real][t:in(x,s11)]all([y:real][u:in(y,s12)]less(x,y)))
+s@[l:less(s,r)]
+vb13a:=estii(real,[x:real]less(x,r),s,l):in(s,s11)
+s@[m:more(s,r)]
+vb13b:=estii(real,[x:real]moreis(x,r),s,moreisi1(s,r,m)):in(s,s12)
+@2rl:=pl(1rl,1rl):real
+pos2:=pospl(1rl,1rl,pos1,pos1):pos(2rl)
+half:=ov(1rl,2rl,pnot0(2rl,pos2)):real
+poshalf:=posovpp(1rl,2rl,pnot0(2rl,pos2),pos1,pos2):pos(half)
++*ivr5
+r@t3:=tris(real,pl(r,r),pl(ts(1rl,r),ts(1rl,r)),ts(2rl,r),ispl12(r,ts(1rl,r),r,ts(1rl,r),satz195c(r),satz195c(r)),distpt1(1rl,1rl,r)):is(pl(r,r),ts(2rl,r))
+t4:=tr4is(real,ts(half,pl(r,r)),ts(half,ts(2rl,r)),ts(ts(half,2rl),r),ts(1rl,r),r,ists2(pl(r,r),ts(2rl,r),half,t3),assts2(half,2rl,r),ists1(ts(half,2rl),1rl,r,satz204e(1rl,2rl,pnot0(2rl,pos2))),satz195b(r)):is(ts(half,pl(r,r)),r)
+-ivr5
+s@[l:less(r,s)]
++*ivr5
+l@t5:=satz203k(pl(r,r),pl(r,s),half,satz188m(r,s,r,l),poshalf):less(ts(half,pl(r,r)),ts(half,pl(r,s)))
+-ivr5
+l@lemma3:=isless1(ts(half,pl(r,r)),r,ts(half,pl(r,s)),t4".ivr5",t5".ivr5"):less(r,ts(half,pl(r,s)))
++*ivr5
+l@t6:=satz203k(pl(r,s),pl(s,s),half,satz188f(r,s,s,l),poshalf):less(ts(half,pl(r,s)),ts(half,pl(s,s)))
+-ivr5
+l@lemma4:=isless2(ts(half,pl(s,s)),s,ts(half,pl(r,s)),t4".ivr5"(s),t6".ivr5"):less(ts(half,pl(r,s)),s)
+[p:pos(r)]
+lemma5:=satz169b(s,trmore(s,r,0,lemma2(r,s,l),satz169a(r,p))):pos(s)
+@[s1:set(real)][s2:set(real)][p0:all([x:real]or(in(x,s1),in(x,s2)))][p1a:nonempty(real,s1)][p1b:nonempty(real,s2)][p2:all([x:real][t:in(x,s1)]all([y:real][u:in(y,s2)]less(x,y)))]
++*5r205
+s2@[r:real]
+prop1:=all([x:real][t:less(x,r)]in(x,s1)):'prop'
+prop2:=all([x:real][t:more(x,r)]in(x,s2)):'prop'
+prop3:=and(prop1,prop2):'prop'
+p2@[x:real][y:real][px:prop3(x)][py:prop3(y)][l:less(x,y)]
+mxy:=ts(half,pl(x,y)):real
+t13:=lemma2(x,mxy,lemma3(x,y,l)):more(mxy,x)
+t14:=lemma4(x,y,l):less(mxy,y)
+t15:=<t14><mxy>ande1(prop1(y),prop2(y),py):in(mxy,s1)
+t16:=<t13><mxy>ande2(prop1(x),prop2(x),px):in(mxy,s2)
+t17:=<t16><mxy><t15><mxy>p2:less(mxy,mxy)
+t18:=<refis(real,mxy)>ec3e31(is(mxy,mxy),more(mxy,mxy),less(mxy,mxy),satz167b(mxy,mxy),t17):con
+py@t19:=[t:less(x,y)]t18(t):not(less(x,y))
+t20:=[t:more(x,y)]t18(y,x,py,px,lemma1(x,y,t)):not(more(x,y))
+t21:=or3e1(is(x,y),more(x,y),less(x,y),satz167a(x,y),t20,t19):is(x,y)
+p2@t22:=[x:real][y:real][t:prop3(x)][u:prop3(y)]t21(x,y,t,u):amone(real,[x:real]prop3(x))
+[case1:some([x:real]and(pos(x),in(x,s1)))][r:real][a:and(pos(r),in(r,s1))]
+t23:=ande1(pos(r),in(r,s1),a):pos(r)
+t24:=ande2(pos(r),in(r,s1),a):in(r,s1)
+sc1:=setof(cut,[x:cut]in(pofrp(x),s1)):set(cut)
+sc2:=setof(cut,[x:cut]in(pofrp(x),s2)):set(cut)
+[r0:cut][i:in(pofrp(r0),s1)]
+t25:=estii(cut,[x:cut]in(pofrp(x),s1),r0,i):in"rp"(r0,sc1)
+r0@[i:in"rp"(r0,sc1)]
+t26:=estie(cut,[x:cut]in(pofrp(x),s1),r0,i):in(pofrp(r0),s1)
+r0@[i:in(pofrp(r0),s2)]
+t27:=estii(cut,[x:cut]in(pofrp(x),s2),r0,i):in"rp"(r0,sc2)
+r0@[i:in"rp"(r0,sc2)]
+t28:=estie(cut,[x:cut]in(pofrp(x),s2),r0,i):in(pofrp(r0),s2)
+r0@t29:=th9"l.or"(in(pofrp(r0),s1),in(pofrp(r0),s2),in"rp"(r0,sc1),in"rp"(r0,sc2),<pofrp(r0)>p0,[t:in(pofrp(r0),s1)]t25(t),[t:in(pofrp(r0),s2)]t27(t)):or(in"rp"(r0,sc1),in"rp"(r0,sc2))
+a@pr1:=rpofp(r,t23):cut
+t30:=isp(real,[x:real]in(x,s1),r,pofrp(pr1),t24,isprp1(r,t23)):in(pofrp(pr1),s1)
+t31:=nonemptyi(cut,sc1,pr1,t25(pr1,t30)):nonempty(cut,sc1)
+[s:real][i:in(s,s2)]
+t32:=<i><s><t24><r>p2:less(r,s)
+t33:=lemma5(r,s,t32,t23):pos(s)
+ps1:=rpofp(s,t33):cut
+t34:=isp(real,[x:real]in(x,s2),s,pofrp(ps1),i,isprp1(s,t33)):in(pofrp(ps1),s2)
+t35:=nonemptyi(cut,sc2,ps1,t27(ps1,t34)):nonempty(cut,sc2)
+a@t36:=nonemptyapp(real,s2,p1b,nonempty(cut,sc2),[x:real][t:in(x,s2)]t35(x,t)):nonempty(cut,sc2)
+r0@[i:in"rp"(r0,sc1)][s0:cut][j:in"rp"(s0,sc2)]
+t37:=<t28(s0,j)><pofrp(s0)><t26(r0,i)><pofrp(r0)>p2:less(pofrp(r0),pofrp(s0))
+t38:=lessrpip(r0,s0,t37):less"rp"(r0,s0)
+a@stc:=schnitt(sc1,sc2,[x:cut]t29(x),t31,t36,[x:cut][t:in"rp"(x,sc1)][y:cut][u:in"rp"(y,sc2)]t38(x,t,y,u)):cut
+t39:=satzp205a(sc1,sc2,[x:cut]t29(x),t31,t36,[x:cut][t:in"rp"(x,sc1)][y:cut][u:in"rp"(y,sc2)]t38(x,t,y,u)):all"rp"([x:cut][t:less"rp"(x,stc)]in"rp"(x,sc1))
+t40:=satzp205b(sc1,sc2,[x:cut]t29(x),t31,t36,[x:cut][t:in"rp"(x,sc1)][y:cut][u:in"rp"(y,sc2)]t38(x,t,y,u)):all"rp"([x:cut][t:more"rp"(x,stc)]in"rp"(x,sc2))
+stp:=pofrp(stc):real
+t41:=posi(stc):pos(stp)
+[s:real][l:less(s,stp)][p:pos(s)]
+ps2:=rpofp(s,p):cut
+t42:=lessrpip(ps2,stc,isless1(s,pofrp(ps2),stp,isprp1(s,p),l)):less"rp"(ps2,stc)
+t43:=<t42><ps2>t39:in"rp"(ps2,sc1)
+t44:=isp(real,[x:real]in(x,s1),pofrp(ps2),s,t26(ps2,t43),isprp2(s,p)):in(s,s1)
+l@[n:not(pos(s))][i:in(s,s2)]
+t45:=<i><s><t24><r>p2:less(r,s)
+t46:=<lemma5(r,s,t45,t23)>n:con
+n@t47:=ore1(in(s,s1),in(s,s2),<s>p0,[t:in(s,s2)]t46(t)):in(s,s1)
+l@t48:=th1"l.imp"(pos(s),in(s,s1),[t:pos(s)]t44(t),[t:not(pos(s))]t47(t)):in(s,s1)
+s@[m:more(s,stp)]
+t49:=lemma5(stp,s,lemma1(s,stp,m),t41):pos(s)
+ps3:=rpofp(s,t49):cut
+t50:=morerpip(ps3,stc,ismore1(s,pofrp(ps3),stp,isprp1(s,t49),m)):more"rp"(ps3,stc)
+t51:=<t50><ps3>t40:in"rp"(ps3,sc2)
+t52:=isp(real,[x:real]in(x,s2),pofrp(ps3),s,t28(ps3,t51),isprp2(s,t49)):in(s,s2)
+a@t53:=andi(prop1(stp),prop2(stp),[x:real][t:less(x,stp)]t48(x,t),[x:real][t:more(x,stp)]t52(x,t)):prop3(stp)
+t54:=somei(real,[x:real]prop3(x),stp,t53):some([x:real]prop3(x))
+case1@t55:=someapp(real,[x:real]and(pos(x),in(x,s1)),case1,some([x:real]prop3(x)),[x:real][t:and(pos(x),in(x,s1))]t54(x,t)):some([x:real]prop3(x))
+p2@[case2:some([x:real]and(neg(x),in(x,s2)))]
+sp1:=setof(real,[x:real]in(m0(x),s1)):set(real)
+sp2:=setof(real,[x:real]in(m0(x),s2)):set(real)
+[r:real][i:in(m0(r),s1)]
+t56:=estii(real,[x:real]in(m0(x),s1),r,i):in(r,sp1)
+r@[i:in(r,sp1)]
+t57:=estie(real,[x:real]in(m0(x),s1),r,i):in(m0(r),s1)
+r@[i:in(m0(r),s2)]
+t58:=estii(real,[x:real]in(m0(x),s2),r,i):in(r,sp2)
+r@[i:in(r,sp2)]
+t59:=estie(real,[x:real]in(m0(x),s2),r,i):in(m0(r),s2)
+r@t60:=comor(in(r,sp1),in(r,sp2),th9"l.or"(in(m0(r),s1),in(m0(r),s2),in(r,sp1),in(r,sp2),<m0(r)>p0,[t:in(m0(r),s1)]t56(t),[t:in(m0(r),s2)]t58(t))):or(in(r,sp2),in(r,sp1))
+[i:in(r,s2)]
+t61:=t58(m0(r),isp(real,[x:real]in(x,s2),r,m0(m0(r)),i,satz177a(r))):in(m0(r),sp2)
+t62:=nonemptyi(real,sp2,m0(r),t61):nonempty(real,sp2)
+case2@t63:=nonemptyapp(real,s2,p1b,nonempty(real,sp2),[x:real][t:in(x,s2)]t62(x,t)):nonempty(real,sp2)
+r@[i:in(r,s1)]
+t64:=t56(m0(r),isp(real,[x:real]in(x,s1),r,m0(m0(r)),i,satz177a(r))):in(m0(r),sp1)
+t65:=nonemptyi(real,sp1,m0(r),t64):nonempty(real,sp1)
+case2@t66:=nonemptyapp(real,s1,p1a,nonempty(real,sp1),[x:real][t:in(x,s1)]t65(x,t)):nonempty(real,sp1)
+r@[i:in(r,sp2)][s:real][j:in(s,sp1)]
+t67:=<t59(r,i)><m0(r)><t57(s,j)><m0(s)>p2:less(m0(s),m0(r))
+t68:=lemma1(s,r,satz183d(s,r,t67)):less(r,s)
+r@[a:and(neg(r),in(r,s2))]
+t69:=satz176c(r,ande1(neg(r),in(r,s2),a)):pos(m0(r))
+t70:=isp(real,[x:real]in(x,s2),r,m0(m0(r)),ande2(neg(r),in(r,s2),a),satz177a(r)):in(m0(m0(r)),s2)
+t71:=andi(pos(m0(r)),in(m0(r),sp2),t69,t58(m0(r),t70)):and(pos(m0(r)),in(m0(r),sp2))
+t72:=somei(real,[x:real]and(pos(x),in(x,sp2)),m0(r),t71):some([x:real]and(pos(x),in(x,sp2)))
+case2@t73:=someapp(real,[x:real]and(neg(x),in(x,s2)),case2,some([x:real]and(pos(x),in(x,sp2))),[x:real][t:and(neg(x),in(x,s2))]t72(x,t)):some([x:real]and(pos(x),in(x,sp2)))
+t74:=t55(sp2,sp1,[x:real]t60(x),t63,t66,[x:real][t:in(x,sp2)][y:real][u:in(y,sp1)]t68(x,t,y,u),t73):some([x:real]prop3(sp2,sp1,x))
+[r:real][p:prop3(sp2,sp1,r)][s:real][l:less(s,m0(r))]
+t75:=ismore2(m0(m0(r)),r,m0(s),satz177(r),satz183c(s,m0(r),l)):more(m0(s),r)
+t76:=<t75><m0(s)>ande2(prop1(sp2,sp1,r),prop2(sp2,sp1,r),p):in(m0(s),sp1)
+t77:=isp(real,[x:real]in(x,s1),m0(m0(s)),s,t57(m0(s),t76),satz177(s)):in(s,s1)
+s@[m:more(s,m0(r))]
+t78:=isless2(m0(m0(r)),r,m0(s),satz177(r),satz183a(s,m0(r),m)):less(m0(s),r)
+t79:=<t78><m0(s)>ande1(prop1(sp2,sp1,r),prop2(sp2,sp1,r),p):in(m0(s),sp2)
+t80:=isp(real,[x:real]in(x,s2),m0(m0(s)),s,t59(m0(s),t79),satz177(s)):in(s,s2)
+p@t81:=andi(prop1(m0(r)),prop2(m0(r)),[x:real][t:less(x,m0(r))]t77(x,t),[x:real][t:more(x,m0(r))]t80(x,t)):prop3(m0(r))
+t82:=somei(real,[x:real]prop3(x),m0(r),t81):some([x:real]prop3(x))
+case2@t83:=someapp(real,[x:real]prop3(sp2,sp1,x),t74,some([x:real]prop3(x)),[x:real][t:prop3(sp2,sp1,x)]t82(x,t)):some([x:real]prop3(x))
+p2@[notcase1:not(some([x:real]and(pos(x),in(x,s1))))][notcase2:not(some([x:real]and(neg(x),in(x,s2))))][r:real][l:less(r,0)]
+t84:=th4"l.some"(real,[x:real]and(neg(x),in(x,s2)),notcase2,r):not(and(neg(r),in(r,s2)))
+t85:=th3"l.and"(neg(r),in(r,s2),t84,satz169d(r,l)):not(in(r,s2))
+t86:=ore1(in(r,s1),in(r,s2),<r>p0,t85):in(r,s1)
+r@[m:more(r,0)]
+t87:=th4"l.some"(real,[x:real]and(pos(x),in(x,s1)),notcase1,r):not(and(pos(r),in(r,s1)))
+t88:=th3"l.and"(pos(r),in(r,s1),t87,satz169b(r,m)):not(in(r,s1))
+t89:=ore2(in(r,s1),in(r,s2),<r>p0,t88):in(r,s2)
+notcase2@t90:=andi(prop1(0),prop2(0),[x:real][t:less(x,0)]t86(x,t),[x:real][t:more(x,0)]t89(x,t)):prop3(0)
+t91:=somei(real,[x:real]prop3(x),0,t90):some([x:real]prop3(x))
+notcase1@t92:=th1"l.imp"(some([x:real]and(neg(x),in(x,s2))),some([x:real]prop3(x)),[t:some([x:real]and(neg(x),in(x,s2)))]t83(t),[t:not(some([x:real]and(neg(x),in(x,s2))))]t91(t)):some([x:real]prop3(x))
+p2@t93:=th1"l.imp"(some([x:real]and(pos(x),in(x,s1))),some([x:real]prop3(x)),[t:some([x:real]and(pos(x),in(x,s1)))]t55(t),[t:not(some([x:real]and(pos(x),in(x,s1))))]t92(t)):some([x:real]prop3(x))
+t94:=onei(real,[x:real]prop3(x),t22,t93):one([x:real]prop3(x))
+-5r205
+p2@satz205:=t94".5r205":one([x:real]and(all([y:real][t:less(y,x)]in(y,s1)),all([y:real][t:more(y,x)]in(y,s2))))
+dedekind:=satz205:one([x:real]and(all([y:real][t:less(y,x)]in(y,s1)),all([y:real][t:more(y,x)]in(y,s2))))
+schnitt:=ind(real,[x:real]prop3".5r205"(x),satz205):real
+[r:real][l:less(r,schnitt)]
+satz205a:=<l><r>ande1(prop1".5r205"(schnitt),prop2".5r205"(schnitt),oneax(real,[x:real]prop3".5r205"(x),satz205)):in(r,s1)
+r@[m:more(r,schnitt)]
+satz205b:=<m><r>ande2(prop1".5r205"(schnitt),prop2".5r205"(schnitt),oneax(real,[x:real]prop3".5r205"(x),satz205)):in(r,s2)
+@[r0:cut][s0:cut]
++iva
+dr:=pdofrp(r0):dif
+ds:=pdofrp(s0):dif
+t1:=lemmaivad1(r0,s0):eq"rp"(pd(dr,ds),pdofrp(pl"rp"(r0,s0)))
+-iva
+lemmaiva1:=isin(pl(pofrp(r0),pofrp(s0)),pofrp(pl"rp"(r0,s0)),pd(pdofrp(r0),pdofrp(s0)),pdofrp(pl"rp"(r0,s0)),picp(pofrp(r0),pofrp(s0),pdofrp(r0),pdofrp(s0),innclass(pdofrp(r0)),innclass(pdofrp(s0))),innclass(pdofrp(pl"rp"(r0,s0))),t1".iva"):is(pl(pofrp(r0),pofrp(s0)),pofrp(pl"rp"(r0,s0)))
++*iva
+s0@t2:=lemmaivad2(r0,s0):eq"rp"(td(dr,ds),pdofrp(ts"rp"(r0,s0)))
+-iva
+s0@lemmaiva2:=isin(ts(pofrp(r0),pofrp(s0)),pofrp(ts"rp"(r0,s0)),td(pdofrp(r0),pdofrp(s0)),pdofrp(ts"rp"(r0,s0)),tict(pofrp(r0),pofrp(s0),pdofrp(r0),pdofrp(s0),innclass(pdofrp(r0)),innclass(pdofrp(s0))),innclass(pdofrp(ts"rp"(r0,s0))),t2".iva"):is(ts(pofrp(r0),pofrp(s0)),pofrp(ts"rp"(r0,s0)))
+[m:more(pofrp(r0),pofrp(s0))]
++*iva
+m@t3:=moreex(pofrp(r0),pofrp(s0),dr,ds,innclass(dr),innclass(ds),m):mored(dr,ds)
+-iva
+m@lemmaiva3:=lemmaivad3(r0,s0,t3".iva"):more"rp"(r0,s0)
+s0@[m:more"rp"(r0,s0)]
++*iva
+m@[l:less(pofrp(r0),pofrp(s0))]
+t4:=satz121(s0,r0,lemmaiva3(s0,r0,lemma2(pofrp(r0),pofrp(s0),l))):less"rp"(r0,s0)
+m@t5:=ec3e23(is"rp"(r0,s0),more"rp"(r0,s0),less"rp"(r0,s0),satz123b(r0,s0),m):not(less"rp"(r0,s0))
+t6:=th3"l.imp"(less(pofrp(r0),pofrp(s0)),less"rp"(r0,s0),t5,[t:less(pofrp(r0),pofrp(s0))]t4(t)):not(less(pofrp(r0),pofrp(s0)))
+t7:=ec3e21(is"rp"(r0,s0),more"rp"(r0,s0),less"rp"(r0,s0),satz123b(r0,s0),m):nis"rp"(r0,s0)
+t8:=th3"l.imp"(is(pofrp(r0),pofrp(s0)),is"rp"(r0,s0),t7,[t:is(pofrp(r0),pofrp(s0))]isrpip(r0,s0,t)):nis(pofrp(r0),pofrp(s0))
+-iva
+m@lemmaiva4:=or3e2(is(pofrp(r0),pofrp(s0)),more(pofrp(r0),pofrp(s0)),less(pofrp(r0),pofrp(s0)),satz167a(pofrp(r0),pofrp(s0)),t6".iva",t8".iva"):more(pofrp(r0),pofrp(s0))
+@[x:nat][y:nat][m:more(rlofnt(x),rlofnt(y))]
++*iva
+m@t9:=lemmaiva3(rpofnt(x),rpofnt(y),m):more"rp"(rpofnt(x),rpofnt(y))
+t10:=satz154d(rtofn(x),rtofn(y),t9):more"rt"(rtofn(x),rtofn(y))
+t11:=moree"rt"(rtofn(x),rtofn(y),fr(x,1),fr(y,1),inclass"rt"(fr(x,1)),inclass"rt"(fr(y,1)),t10):moref(fr(x,1),fr(y,1))
+-iva
+m@lemmaiva5:=satz111a(x,y,t11".iva"):more"n"(x,y)
+y@[m:more"n"(x,y)]
++*iva
+m@t12:=satz111d(x,y,m):moref(fr(x,1),fr(y,1))
+t13:=morei"rt"(rtofn(x),rtofn(y),fr(x,1),fr(y,1),inclass"rt"(fr(x,1)),inclass"rt"(fr(y,1)),t12):more"rt"(rtofn(x),rtofn(y))
+t14:=satz154a(rtofn(x),rtofn(y),t13):more"rp"(rpofnt(x),rpofnt(y))
+-iva
+m@lemmaiva6:=lemmaiva4(rpofnt(x),rpofnt(y),t14".iva"):more(rlofnt(x),rlofnt(y))
+@[r:real]
++int
+a0ir@[i:intrl(r)]
+t1:=intabsd(a0,intrlex(r,a0,a0ir,i)):intd(absd(a0))
+t2:=intrlin(abs(r),absd(a0),aica,t1):intrl(abs(r))
+-int
+[i:intrl(r)]
+intabs:=realapp1(r,intrl(abs(r)),[x:dif][t:inn(x,class(r))]t2".int"(r,x,t,i)):intrl(abs(r))
++*int
+i@t3:=intm0d(a0,intrlex(r,a0,a0ir,i)):intd(m0d(a0))
+t4:=intrlin(m0(r),m0d(a0),micm0,t3):intrl(m0(r))
+-int
+i@intm0:=realapp1(r,intrl(m0(r)),[x:dif][t:inn(x,class(r))]t4".int"(r,x,t,i)):intrl(m0(r))
++*int
+b1is@[i:intrl(r)][j:intrl(s)]
+t5:=intpd(a1,b1,intrlex(r,a1,a1ir,i),intrlex(s,b1,b1is,j)):intd(pd(a1,b1))
+t6:=intrlin(pl(r,s),pd(a1,b1),picp,t5):intrl(pl(r,s))
+-int
+i@[s:real][j:intrl(s)]
+intpl:=realapp2(r,s,intrl(pl(r,s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t6".int"(r,s,x,y,t,u,i,j)):intrl(pl(r,s))
+intmn:=intpl(r,i,m0(s),intm0(s,j)):intrl(mn(r,s))
++*int
+j@t7:=inttd(a1,b1,intrlex(r,a1,a1ir,i),intrlex(s,b1,b1is,j)):intd(td(a1,b1))
+t8:=intrlin(ts(r,s),td(a1,b1),tict,t7):intrl(ts(r,s))
+-int
+j@intts:=realapp2(r,s,intrl(ts(r,s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t8".int"(r,s,x,y,t,u,i,j)):intrl(ts(r,s))
+r@[n:natrl(r)]
++ivr24
+t1:=satz24a(ntofrl(r,n)):lessis"n"(1,ntofrl(r,n))
+t2:=th3"l.imp"(more(1rl,r),more"n"(1,ntofrl(r,n)),satz10d(1,ntofrl(r,n),t1),[t:more(1rl,r)]lemmaiva5(1,ntofrl(r,n),ismore2(r,rlofnt(ntofrl(r,n)),1rl,isrlnt1(r,n),t))):not(more(1rl,r))
+-ivr24
+satzr24:=satz167e(1rl,r,t2".ivr24"):lessis(1rl,r)
+r@[i:intrl(r)][s:real][j:intrl(s)][l:less(r,s)]
++ivr25
+t1:=satz182d(s,r,lemma2(r,s,l)):pos(mn(s,r))
+t2:=intmn(s,j,r,i):intrl(mn(s,r))
+t3:=posintnatrl(mn(s,r),t1,t2):natrl(mn(s,r))
+t4:=satzr24(mn(s,r),t3):lessis(1rl,mn(s,r))
+t5:=th9"l.or"(less(1rl,mn(s,r)),is(1rl,mn(s,r)),less(pl(1rl,r),pl(mn(s,r),r)),is(pl(1rl,r),pl(mn(s,r),r)),t4,[t:less(1rl,mn(s,r))]satz188f(1rl,mn(s,r),r,t),[t:is(1rl,mn(s,r))]ispl1(1rl,mn(s,r),r,t)):lessis(pl(1rl,r),pl(mn(s,r),r))
+-ivr25
+satzr25:=islessis12(pl(1rl,r),pl(r,1rl),pl(mn(s,r),r),s,compl(1rl,r),plmn(s,r),t5".ivr25"):lessis(pl(r,1rl),s)
+@[x:nat][y:nat]
++ivr155
+t1:=lemmaiva1(rpofnt(x),rpofnt(y)):is(pl(rlofnt(x),rlofnt(y)),pofrp(pl"rp"(rpofnt(x),rpofnt(y))))
+t2:=isrpep(rpofnt(pl"n"(x,y)),pl"rp"(rpofnt(x),rpofnt(y)),satz155e(x,y)):is(rlofnt(pl"n"(x,y)),pofrp(pl"rp"(rpofnt(x),rpofnt(y))))
+-ivr155
+satzr155a:=tris2(real,rlofnt(pl"n"(x,y)),pl(rlofnt(x),rlofnt(y)),pofrp(pl"rp"(rpofnt(x),rpofnt(y))),t2".ivr155",t1".ivr155"):is(rlofnt(pl"n"(x,y)),pl(rlofnt(x),rlofnt(y)))
+satzr155b:=symis(real,rlofnt(pl"n"(x,y)),pl(rlofnt(x),rlofnt(y)),satzr155a):is(pl(rlofnt(x),rlofnt(y)),rlofnt(pl"n"(x,y)))
++*ivr155
+y@t3:=lemmaiva2(rpofnt(x),rpofnt(y)):is(ts(rlofnt(x),rlofnt(y)),pofrp(ts"rp"(rpofnt(x),rpofnt(y))))
+t4:=isrpep(rpofnt(ts"n"(x,y)),ts"rp"(rpofnt(x),rpofnt(y)),satz155f(x,y)):is(rlofnt(ts"n"(x,y)),pofrp(ts"rp"(rpofnt(x),rpofnt(y))))
+-ivr155
+y@satzr155c:=tris2(real,rlofnt(ts"n"(x,y)),ts(rlofnt(x),rlofnt(y)),pofrp(ts"rp"(rpofnt(x),rpofnt(y))),t4".ivr155",t3".ivr155"):is(rlofnt(ts"n"(x,y)),ts(rlofnt(x),rlofnt(y)))
+satzr155d:=symis(real,rlofnt(ts"n"(x,y)),ts(rlofnt(x),rlofnt(y)),satzr155c):is(ts(rlofnt(x),rlofnt(y)),rlofnt(ts"n"(x,y)))
+@[t:real][r:real][s:real][a:and(not(neg(r)),is(ts(r,r),t))][b:and(not(neg(s)),is(ts(s,s),t))]
++7r161
+[c0:dif][cit:inn(c0,class(t))][a0:dif][air:inn(a0,class(r))][b0:dif][bis:inn(b0,class(s))]
+t1:=th3"l.imp"(negd(a0),neg(r),ande1(not(neg(r)),is(ts(r,r),t),a),[u:negd(a0)]negin(r,a0,air,u)):not(negd(a0))
+t2:=th3"l.imp"(negd(b0),neg(s),ande1(not(neg(s)),is(ts(s,s),t),b),[u:negd(b0)]negin(s,b0,bis,u)):not(negd(b0))
+t3:=isex(ts(r,r),t,td(a0,a0),c0,tict(r,r,a0,a0,air,air),cit,ande2(not(neg(r)),is(ts(r,r),t),a)):eq"rp"(td(a0,a0),c0)
+t4:=isex(ts(s,s),t,td(b0,b0),c0,tict(s,s,b0,b0,bis,bis),cit,ande2(not(neg(s)),is(ts(s,s),t),b)):eq"rp"(td(b0,b0),c0)
+t5:=isin(r,s,a0,b0,air,bis,satzd161b(c0,a0,b0,t1,t2,t3,t4)):is(r,s)
+-7r161
+satzr161b:=realapp3(t,r,s,is(r,s),[x:dif][y:dif][z:dif][u:inn(x,class(t))][v:inn(y,class(r))][w:inn(z,class(s))]t5".7r161"(x,u,y,v,z,w)):is(r,s)
+t@[n:not(neg(t))]
++*7r161
+n@[c0:dif][cit:inn(c0,class(t))]
+t6:=th3"l.imp"(negd(c0),neg(t),n,[u:negd(c0)]negin(t,c0,cit,u)):not(negd(c0))
+[a0:dif][a:and(not(negd(a0)),eq"rp"(td(a0,a0),c0))]
+ar:=realof(a0):real
+t7:=th3"l.imp"(neg(ar),negd(a0),ande1(not(negd(a0)),eq"rp"(td(a0,a0),c0),a),[u:neg(ar)]negex(ar,a0,innclass(a0),u)):not(neg(ar))
+t8:=isin(ts(ar,ar),t,td(a0,a0),c0,tict(ar,ar,a0,a0,innclass(a0),innclass(a0)),cit,ande2(not(negd(a0)),eq"rp"(td(a0,a0),c0),a)):is(ts(ar,ar),t)
+t9:=andi(not(neg(ar)),is(ts(ar,ar),t),t7,t8):and(not(neg(ar)),is(ts(ar,ar),t))
+t10:=somei(real,[u:real]and(not(neg(u)),is(ts(u,u),t)),ar,t9):some([u:real]and(not(neg(u)),is(ts(u,u),t)))
+cit@t11:=someapp(dif,[x:dif]and(not(negd(x)),eq"rp"(td(x,x),c0)),satzd161a(c0,t6),some([u:real]and(not(neg(u)),is(ts(u,u),t))),[x:dif][v:and(not(negd(x)),eq"rp"(td(x,x),c0))]t10(x,v)):some([u:real]and(not(neg(u)),is(ts(u,u),t)))
+-7r161
+n@satzr161a:=realapp1(t,some([u:real]and(not(neg(u)),is(ts(u,u),t))),[x:dif][v:inn(x,class(t))]t11".7r161"(x,v)):some([u:real]and(not(neg(u)),is(ts(u,u),t)))
+satzr161:=onei(real,[u:real]and(not(neg(u)),is(ts(u,u),t)),[u:real][v:real][a:and(not(neg(u)),is(ts(u,u),t))][b:and(not(neg(v)),is(ts(v,v),t))]satzr161b(u,v,a,b),satzr161a):one([u:real]and(not(neg(u)),is(ts(u,u),t)))
+sqrt:=ind(real,[u:real]and(not(neg(u)),is(ts(u,u),t)),satzr161):real
++*7r161
+n@t12:=oneax(real,[u:real]and(not(neg(u)),is(ts(u,u),t)),satzr161):and(not(neg(sqrt)),is(ts(sqrt,sqrt),t))
+-7r161
+n@thsqrt1a:=ande1(not(neg(sqrt)),is(ts(sqrt,sqrt),t),t12".7r161"):not(neg(sqrt))
+thsqrt1b:=ande2(not(neg(sqrt)),is(ts(sqrt,sqrt),t),t12".7r161"):is(ts(sqrt,sqrt),t)
+[x:real][o:not(neg(x))][i:is(ts(x,x),t)]
+thsqrt2:=satzr161b(x,sqrt,andi(not(neg(x)),is(ts(x,x),t),o,i),t12".7r161"):is(x,sqrt(t,n))
+o@[i:is(t,ts(x,x))]
+thsqrt3:=symis(real,x,sqrt(t,n),thsqrt2(symis(real,t,ts(x,x),i))):is(sqrt(t,n),x)
+@[r:real][s:real][n:not(neg(r))][o:not(neg(s))][i:is(r,s)]
+issqrt:=thsqrt2(s,o,sqrt(r,n),thsqrt1a(r,n),tris(real,ts(sqrt(r,n),sqrt(r,n)),r,s,thsqrt1b(r,n),i)):is(sqrt(r,n),sqrt(s,o))
+r@[n:not(neg(r))][i:is(r,0)]
+sqrt0:=thsqrt3(r,n,0,0notn(0,refis(real,0)),tris2(real,r,ts(0,0),0,i,ts01(0,0,refis(real,0)))):is(sqrt(r,n),0)
+n@[o:nis(r,0)]
++sqrt
+t1:=th3"l.imp"(is(sqrt(r,n),0),is(r,0),o,[t:is(sqrt(r,n),0)]tris1(real,r,0,ts(sqrt(r,n),sqrt(r,n)),thsqrt1b(r,n),ts01(sqrt(r,n),sqrt(r,n),t))):nis(sqrt(r,n),0)
+-sqrt
+sqrtnot0:=or3e2(is(sqrt(r,n),0),pos(sqrt(r,n)),neg(sqrt(r,n)),axrlo(sqrt(r,n)),thsqrt1a(r,n),t1".sqrt"):pos(sqrt(r,n))
+@[r:real][s:real][t:real][n:nis(t,0)]
++v0
+t1:=tr3is(real,ts(t,ts(r,ov(s,t,n))),ts(ts(r,ov(s,t,n)),t),ts(r,ts(ov(s,t,n),t)),ts(r,s),comts(t,ts(r,ov(s,t,n))),assts1(r,ov(s,t,n),t),ists2(ts(ov(s,t,n),t),s,r,satz204e(s,t,n))):is(ts(t,ts(r,ov(s,t,n))),ts(r,s))
+-v0
+lemma6:=satz204g(ts(r,s),t,ts(r,ov(s,t,n)),n,t1".v0"):is(ts(r,ov(s,t,n)),ov(ts(r,s),t,n))
++*v0
+n@t2:=tris(real,ts(t,pl(ov(r,t,n),ov(s,t,n))),pl(ts(t,ov(r,t,n)),ts(t,ov(s,t,n))),pl(r,s),disttp2(t,ov(r,t,n),ov(s,t,n)),ispl12(ts(t,ov(r,t,n)),r,ts(t,ov(s,t,n)),s,satz204c(r,t,n),satz204c(s,t,n))):is(ts(t,pl(ov(r,t,n),ov(s,t,n))),pl(r,s))
+-v0
+n@lemma7:=satz204g(pl(r,s),t,pl(ov(r,t,n),ov(s,t,n)),n,t2".v0"):is(pl(ov(r,t,n),ov(s,t,n)),ov(pl(r,s),t,n))
+r@[n:nis(r,0)]
+lemma8:=satz204b(r,r,n,ov(r,r,n),1rl,satz204c(r,r,n),satz195(r)):is(ov(r,r,n),1rl)
+lemma9:=ore2(is(r,0),is(ov(0,r,n),0),satz192c(r,ov(0,r,n),satz204c(0,r,n)),n):is(ov(0,r,n),0)
+r@[i:is(r,m0(r))]
++*v0
+i@[p:pos(m0(r))]
+t3:=<isneg(r,m0(r),i,satz176f(r,p))>pnotn(m0(r),p):con
+i@[n:neg(m0(r))]
+t4:=<ispos(r,m0(r),i,satz176d(r,n))>nnotp(m0(r),n):con
+-v0
+i@lemma10:=satz176e(r,or3e1(is(m0(r),0),pos(m0(r)),neg(m0(r)),axrlo(m0(r)),[t:pos(m0(r))]t3".v0"(t),[t:neg(m0(r))]t4".v0"(t))):is(r,0)
+r@lemma11:=satz167f(ts(r,r),0,th3"l.imp"(less(ts(r,r),0),neg(ts(r,r)),nnegsq(r),[t:less(ts(r,r),0)]satz169d(ts(r,r),t))):moreis(ts(r,r),0)
+lemma12:=rapp(r,is(ts(r,r),ts(abs(r),abs(r))),[t:pos(r)]satz196a(r,r,t,t),[t:is(r,0)]tris2(real,ts(r,r),ts(abs(r),abs(r)),0,ts01(r,r,t),ts01(abs(r),abs(r),abs0(r,t))),[t:neg(r)]satz196b(r,r,t,t)):is(ts(r,r),ts(abs(r),abs(r)))
+@[x:real][ix:intrl(x)][y:real][iy:intrl(y)][ly:lessis(y,x)]
++shift
+t1:=satz190a(x,x,1rl,0,moreisi2(x,x,refis(real,x)),satz169a(1rl,natpos(1rl,natrl1))):more(pl(x,1rl),pl(x,0))
+t2:=ismore2(pl(x,0),x,pl(x,1rl),pl02(x,0,refis(real,0)),t1):more(pl(x,1rl),x)
+t3:=satz172d(pl(x,1rl),x,y,t2,satz168b(y,x,ly)):more(pl(x,1rl),y)
+t4:=satz182d(pl(x,1rl),y,t3):pos(mn(pl(x,1rl),y))
+t5:=intmn(pl(x,1rl),intpl(x,ix,1rl,intrl1),y,iy):intrl(mn(pl(x,1rl),y))
+t6:=posintnatrl(mn(pl(x,1rl),y),t4,t5):natrl(mn(pl(x,1rl),y))
+-shift
+shiftl:=ntofrl(mn(pl(x,1rl),y),t6".shift"):nat
+[n:1to(shiftl)]
++*shift
+n@n1:=inn"n"(shiftl,n):nat
+t7:=1top(shiftl,n):lessis"n"(n1,shiftl)
+n2:=rlofnt(n1):real
+t8:=natintrl(n2,natrli(n1)):intrl(n2)
+-shift
+n@shiftr:=mn(pl(n2".shift",y),1rl):real
+intshiftr:=intmn(pl(n2".shift",y),intpl(n2".shift",t8".shift",y,iy),1rl,intrl1):intrl(shiftr)
+[m:1to(shiftl)][i:is(shiftr(n),shiftr(m))]
++*shift
+n@t8a:=tris(real,mn(pl(shiftr(n),1rl),y),mn(pl(n2,y),y),n2,ismn1(pl(mn(pl(n2,y),1rl),1rl),pl(n2,y),y,plmn(pl(n2,y),1rl)),mnpl(n2,y)):is(mn(pl(shiftr(n),1rl),y),n2)
+i@t9a:=ismn1(pl(shiftr(n),1rl),pl(shiftr(m),1rl),y,ispl1(shiftr(n),shiftr(m),1rl,i)):is(mn(pl(shiftr(n),1rl),y),mn(pl(shiftr(m),1rl),y))
+t10a:=tr3is(real,n2(n),mn(pl(shiftr(n),1rl),y),mn(pl(shiftr(m),1rl),y),n2(m),symis(real,mn(pl(shiftr(n),1rl),y),n2,t8a),t9a,t8a(m)):is(n2(n),n2(m))
+t11a:=isntirl(n1(n),n1(m),t10a):is"n"(n1(n),n1(m))
+-shift
+i@iseshiftr:=isinne(shiftl,n,m,t11a".shift"):is"e"(1to(shiftl),n,m)
++*shift
+n@[m:more(shiftr,x)]
+t9:=satz188d(shiftr,x,1rl,m):more(pl(shiftr,1rl),pl(x,1rl))
+t10:=ismore1(pl(shiftr,1rl),pl(n2,y),pl(x,1rl),plmn(pl(n2,y),1rl),t9):more(pl(n2,y),pl(x,1rl))
+t11:=satz188d(pl(n2,y),pl(x,1rl),m0(y),t10):more(mn(pl(n2,y),y),mn(pl(x,1rl),y))
+t12:=ismore1(mn(pl(n2,y),y),n2,mn(pl(x,1rl),y),mnpl(n2,y),t11):more(n2,mn(pl(x,1rl),y))
+t13:=ismore12(n2,rlofnt(ntofrl(n2,natrli(n1))),mn(pl(x,1rl),y),rlofnt(ntofrl(mn(pl(x,1rl),y),t6)),isrlnt1(n2,natrli(n1)),isrlnt1(mn(pl(x,1rl),y),t6),t12):more(rlofnt(ntofrl(n2,natrli(n1))),rlofnt(shiftl))
+t14:=lemmaiva5(ntofrl(n2,natrli(n1)),shiftl,t13):more"n"(ntofrl(n2,natrli(n1)),shiftl)
+t15:=ismore1"n"(ntofrl(n2,natrli(n1)),n1,shiftl,isntrl2(n1),t14):more"n"(n1,shiftl)
+n@t16:=th3"l.imp"(more(shiftr,x),more"n"(n1,shiftl),satz10d(n1,shiftl,t7),[t:more(shiftr,x)]t15(t)):not(more(shiftr,x))
+-shift
+n@shiftrls:=satz167e(shiftr,x,t16".shift"):lessis(shiftr,x)
++*shift
+n@[m:more(y,shiftr)]
+t17:=satz188d(y,shiftr,1rl,m):more(pl(y,1rl),pl(shiftr,1rl))
+t18:=ismore12(pl(y,1rl),pl(1rl,y),pl(shiftr,1rl),pl(n2,y),compl(y,1rl),plmn(pl(n2,y),1rl),t17):more(pl(1rl,y),pl(n2,y))
+t19:=satz188a(1rl,n2,y,t18):more(1rl,n2)
+t20:=lemmaiva5(1,n1,t19):more"n"(1,n1)
+n@t21:=th3"l.imp"(more(y,shiftr),more"n"(1,n1),satz10d(1,n1,satz24a(n1)),[t:more(y,shiftr)]t20(t)):not(more(y,shiftr))
+-shift
+n@lsshiftr:=satz167e(y,shiftr,t21".shift"):lessis(y,shiftr)
+ly@[u:real][a:and3(intrl(u),lessis(y,u),lessis(u,x))]
++*shift
+a@t22:=and3e1(intrl(u),lessis(y,u),lessis(u,x),a):intrl(u)
+t23:=and3e2(intrl(u),lessis(y,u),lessis(u,x),a):lessis(y,u)
+t24:=and3e3(intrl(u),lessis(y,u),lessis(u,x),a):lessis(u,x)
+[l:less(u,x)]
+t25:=satz188f(pl(u,1rl),pl(x,1rl),m0"r"(y),satz188f(u,x,1rl,l)):less(mn(pl(u,1rl),y),mn(pl(x,1rl),y))
+a@[i:is(u,x)]
+t26:=ismn1(pl(u,1rl),pl(x,1rl),y,ispl1(u,x,1rl,i)):is(mn(pl(u,1rl),y),mn(pl(x,1rl),y))
+a@t27:=th9"l.or"(less(u,x),is(u,x),less(mn(pl(u,1rl),y),mn(pl(x,1rl),y)),is(mn(pl(u,1rl),y),mn(pl(x,1rl),y)),t24,[t:less(u,x)]t25(t),[t:is(u,x)]t26(t)):lessis(mn(pl(u,1rl),y),mn(pl(x,1rl),y))
+ul:=shiftl(u,t22,y,iy,t23):nat
+t28:=islessis12(mn(pl(u,1rl),y),rlofnt(ul),mn(pl(x,1rl),y),rlofnt(shiftl),isrlnt1(mn(pl(u,1rl),y),t6(u,t22,y,iy,t23)),isrlnt1(mn(pl(x,1rl),y),t6),t27):lessis(rlofnt(ul),rlofnt(shiftl))
+t29:=th3"l.imp"(more"n"(ul,shiftl),more(rlofnt(ul),rlofnt(shiftl)),satz167d(rlofnt(ul),rlofnt(shiftl),t28),[t:more"n"(ul,shiftl)]lemmaiva6(ul,shiftl,t)):not(more"n"(ul,shiftl))
+t30:=satz10e(ul,shiftl,t29):lessis"n"(ul,shiftl)
+-shift
+a@shiftl1:=outn(shiftl,ul".shift",t30".shift"):1to(shiftl)
++*shift
+a@t31:=isinoutn(shiftl,ul,t30):is"n"(ul,n1(shiftl1))
+t32:=tris(real,mn(pl(u,1rl),y),rlofnt(ul),n2(shiftl1),isrlnt1(mn(pl(u,1rl),y),t6(u,t22,y,iy,t23)),isnterl(ul,n1(shiftl1),t31)):is(mn(pl(u,1rl),y),n2(shiftl1))
+t33:=tris(real,mn(pl(mn(pl(u,1rl),y),y),1rl),mn(pl(u,1rl),1rl),u,ismn1(pl(mn(pl(u,1rl),y),y),pl(u,1rl),1rl,plmn(pl(u,1rl),y)),mnpl(u,1rl)):is(mn(pl(mn(pl(u,1rl),y),y),1rl),u)
+-shift
+a@shiftinv1:=tris1(real,u,shiftr(shiftl1),mn(pl(mn(pl(u,1rl),y),y),1rl),t33".shift",ismn1(pl(mn(pl(u,1rl),y),y),pl(n2".shift"(shiftl1),y),1rl,ispl1(mn(pl(u,1rl),y),n2".shift"(shiftl1),y,t32".shift"))):is(u,shiftr(shiftl1))
+shiftinv2:=symis(real,u,shiftr(shiftl1),shiftinv1):is(shiftr(shiftl1),u)
+ly@[alpha:'type']
+seq:=[t:real][u:intrl(t)][v:lessis(y,t)][w:lessis(t,x)]alpha:'type'
+[s:seq]
+proofsirrelevant:=[t:real][it:intrl(t)][lt:lessis(y,t)][tl:lessis(t,x)][u:real][iu:intrl(u)][lu:lessis(y,u)][ul:lessis(u,x)][v:is(t,u)]is"e"(alpha,<tl><lt><it><t>s,<ul><lu><iu><u>s):'prop'
+alpha@[f:seq]
+shiftf:=[t:1to(shiftl)]<shiftrls(t)><lsshiftr(t)><intshiftr(t)><shiftr(t)>f:[t:1to(shiftl)]alpha
+ly@[s:seq(real)]
+inseq:=[t:real][u:intrl(t)][v:lessis(y,t)][w:lessis(t,x)]and3(intrl(<w><v><u><t>s),lessis(y,<w><v><u><t>s),lessis(<w><v><u><t>s,x)):'prop'
+injseq:=[t:real][it:intrl(t)][lt:lessis(y,t)][tl:lessis(t,x)][u:real][iu:intrl(u)][lu:lessis(y,u)][ul:lessis(u,x)][v:is"r"(<tl><lt><it><t>s,<ul><lu><iu><u>s)]is"r"(t,u):'prop'
+[u:real][v:real][a:and3(intrl(v),lessis(y,v),lessis(v,x))]
++*shift
+a@prop1:=is(u,<t24(v,a)><t23(v,a)><t22(v,a)><v>s):'prop'
+-shift
+v@improp:=and(and3(intrl(v),lessis(y,v),lessis(v,x)),[t:and3(intrl(v),lessis(y,v),lessis(v,x))]prop1".shift"(t)):'prop'
+u@imseq:=some([t:real]improp(u,t)):'prop'
+s@surjseq:=[t:real][u:intrl(t)][v:lessis(y,t)][w:lessis(t,x)]imseq(t):'prop'
+perm:=and(injseq,surjseq):'prop'
+[ins:inseq(s)]
++*shift
+ins@[n:1to(shiftl)]
+ns:=<shiftrls(n)><lsshiftr(n)><intshiftr(n)><shiftr(n)>s:real
+t34:=<shiftrls(n)><lsshiftr(n)><intshiftr(n)><shiftr(n)>ins:and3(intrl(ns),lessis(y,ns),lessis(ns,x))
+-shift
+ins@shiftseq:=[t:1to(shiftl)]shiftl1(ns".shift"(t),t34".shift"(t)):[t:1to(shiftl)]1to(shiftl)
+[js:injseq(s)]
++*shift
+js@[n:1to(shiftl)][m:1to(shiftl)][i:is"e"(1to(shiftl),<n>shiftseq,<m>shiftseq)]
+t35:=isoutne(shiftl,ul(ns(n),t34(n)),t30(ns(n),t34(n)),ul(ns(m),t34(m)),t30(ns(m),t34(m)),i):is"n"(ul(ns(n),t34(n)),ul(ns(m),t34(m)))
+t36:=isrlint(mn(pl(ns(n),1rl),y),t6(ns(n),t22(ns(n),t34(n)),y,iy,t23(ns(n),t34(n))),mn(pl(ns(m),1rl),y),t6(ns(m),t22(ns(m),t34(m)),y,iy,t23(ns(m),t34(m))),t35):is(mn(pl(ns(n),1rl),y),mn(pl(ns(m),1rl),y))
+t37:=satz188b(ns(n),ns(m),1rl,satz188b(pl(ns(n),1rl),pl(ns(m),1rl),m0"r"(y),t36)):is(ns(n),ns(m))
+t38:=<t37><shiftrls(m)><lsshiftr(m)><intshiftr(m)><shiftr(m)><shiftrls(n)><lsshiftr(n)><intshiftr(n)><shiftr(n)>js:is(shiftr(n),shiftr(m))
+t39:=satz188b(n2(n),n2(m),y,satz188b(pl(n2(n),y),pl(n2(m),y),m0(1rl),t38)):is(n2(n),n2(m))
+t40:=isntirl(n1(n),n1(m),t39):is"n"(n1(n),n1(m))
+t41:=isinne(shiftl,n,m,t40):is"e"(1to(shiftl),n,m)
+-shift
+js@injshiftseq:=[t:1to(shiftl)][u:1to(shiftl)][v:is"e"(1to(shiftl),<t>shiftseq,<u>shiftseq)]t41".shift"(t,u,v):injective(1to(shiftl),1to(shiftl),shiftseq)
+ins@[pri:proofsirrelevant(real,s)][ss:surjseq(s)]
++*shift
+ss@[n:1to(shiftl)]
+t42:=<shiftrls(n)><lsshiftr(n)><intshiftr(n)><shiftr(n)>ss:imseq(shiftr(n))
+[u:real][p:improp(shiftr(n),u)]
+t43:=ande1(and3(intrl(u),lessis(y,u),lessis(u,x)),[t:and3(intrl(u),lessis(y,u),lessis(u,x))]prop1(shiftr(n),u,t),p):and3(intrl(u),lessis(y,u),lessis(u,x))
+t44:=ande2"l.r"(and3(intrl(u),lessis(y,u),lessis(u,x)),[t:and3(intrl(u),lessis(y,u),lessis(u,x))]prop1(shiftr(n),u,t),p):is(shiftr(n),<t24(u,t43)><t23(u,t43)><t22(u,t43)><u>s)
+ul1:=shiftl1(u,t43):1to(shiftl)
+t45:=<shiftinv1(u,t43)><shiftrls(ul1)><lsshiftr(ul1)><intshiftr(ul1)><shiftr(ul1)><t24(u,t43)><t23(u,t43)><t22(u,t43)><u>pri:is(<t24(u,t43)><t23(u,t43)><t22(u,t43)><u>s,ns(ul1))
+t46:=shiftinv1(ns(ul1),t34(ul1)):is(ns(ul1),shiftr(<ul1>shiftseq))
+t47:=tr3is(real,shiftr(n),<t24(u,t43)><t23(u,t43)><t22(u,t43)><u>s,ns(ul1),shiftr(<ul1>shiftseq),t44,t45,t46):is(shiftr(n),shiftr(<ul1>shiftseq))
+t48:=iseshiftr(n,<ul1>shiftseq,t47):is"e"(1to(shiftl),n,<ul1>shiftseq)
+t49:=somei(1to(shiftl),[t:1to(shiftl)]is"e"(1to(shiftl),n,<t>shiftseq),ul1,t48):image(1to(shiftl),1to(shiftl),shiftseq,n)
+n@t50:=someapp(real,[t:real]improp(shiftr(n),t),t42,image(1to(shiftl),1to(shiftl),shiftseq,n),[t:real][u:improp(shiftr(n),t)]t49(t,u)):image(1to(shiftl),1to(shiftl),shiftseq,n)
+-shift
+ss@surjshiftseq:=[t:1to(shiftl)]t50".shift"(t):surjective(1to(shiftl),1to(shiftl),shiftseq)
+pri@[ps:perm(s)]
+bijshiftseq:=andi(injective(1to(shiftl),1to(shiftl),shiftseq),surjective(1to(shiftl),1to(shiftl),shiftseq),injshiftseq(ande1(injseq(s),surjseq(s),ps)),surjshiftseq(ande2(injseq(s),surjseq(s),ps))):bijective(1to(shiftl),1to(shiftl),shiftseq)
++c
+@complex:=pair1type(real):'type'
+cx:=complex:'type'
+[x:complex][y:complex]
+is:=is"e"(cx,x,y):'prop'
+nis:=not(is(x,y)):'prop'
+@[p:[t:complex]'prop']
+some:=some"l"(cx,p):'prop'
+all:=all"l"(cx,p):'prop'
+one:=one"e"(cx,p):'prop'
+@[a:real][b:real]
+pli:=pair1(real,a,b):complex
+x@re:=first1(real,x):real
+im:=second1(real,x):real
+b@reis:=first1is1(real,a,b):is"r"(re(pli(a,b)),a)
+isre:=first1is2(real,a,b):is"r"(a,re(pli(a,b)))
+imis:=second1is1(real,a,b):is"r"(im(pli(a,b)),b)
+isim:=second1is2(real,a,b):is"r"(b,im(pli(a,b)))
+x@pliis:=pair1is1(real,x):is(pli(re(x),im(x)),x)
+ispli:=pair1is2(real,x):is(x,pli(re(x),im(x)))
+y@[i:is(x,y)]
+iscere:=isf(cx,real,[t:cx]re(t),x,y,i):is"r"(re(x),re(y))
+isceim:=isf(cx,real,[t:cx]im(t),x,y,i):is"r"(im(x),im(y))
+b@[c:real][i:is"r"(a,b)]
+isrecx1:=isf(real,cx,[t:real]pli(t,c),a,b,i):is(pli(a,c),pli(b,c))
+isrecx2:=isf(real,cx,[t:real]pli(c,t),a,b,i):is(pli(c,a),pli(c,b))
+c@[d:real][i:is"r"(a,b)][j:is"r"(c,d)]
+isrecx12:=tris(cx,pli(a,c),pli(b,c),pli(b,d),isrecx1(a,b,c,i),isrecx2(c,d,b,j)):is(pli(a,c),pli(b,d))
+x@satz206:=refis(cx,x):is(x,x)
+y@[i:is(x,y)]
+satz207:=symis(cx,x,y,i):is(y,x)
+y@[z:complex][i:is(x,y)][j:is(y,z)]
+satz208:=tris(cx,x,y,z,i,j):is(x,z)
+@0c:=pli(0,0):complex
+1c:=pli(1rl,0):complex
+y@pl:=pli(pl"r"(re(x),re(y)),pl"r"(im(x),im(y))):complex
+d@plis12a:=isrecx12(pl"r"(re(pli(a,b)),re(pli(c,d))),pl"r"(a,c),pl"r"(im(pli(a,b)),im(pli(c,d))),pl"r"(b,d),ispl12(re(pli(a,b)),a,re(pli(c,d)),c,reis(a,b),reis(c,d)),ispl12(im(pli(a,b)),b,im(pli(c,d)),d,imis(a,b),imis(c,d))):is(pl(pli(a,b),pli(c,d)),pli(pl"r"(a,c),pl"r"(b,d)))
+plis12b:=symis(cx,pl(pli(a,b),pli(c,d)),pli(pl"r"(a,c),pl"r"(b,d)),plis12a):is(pli(pl"r"(a,c),pl"r"(b,d)),pl(pli(a,b),pli(c,d)))
+x@[r:real][s:real]
+plis1a:=isrecx12(pl"r"(re(pli(r,s)),re(x)),pl"r"(r,re(x)),pl"r"(im(pli(r,s)),im(x)),pl"r"(s,im(x)),ispl1(re(pli(r,s)),r,re(x),reis(r,s)),ispl1(im(pli(r,s)),s,im(x),imis(r,s))):is(pl(pli(r,s),x),pli(pl"r"(r,re(x)),pl"r"(s,im(x))))
+plis1b:=symis(cx,pl(pli(r,s),x),pli(pl"r"(r,re(x)),pl"r"(s,im(x))),plis1a):is(pli(pl"r"(r,re(x)),pl"r"(s,im(x))),pl(pli(r,s),x))
+plis2a:=isrecx12(pl"r"(re(x),re(pli(r,s))),pl"r"(re(x),r),pl"r"(im(x),im(pli(r,s))),pl"r"(im(x),s),ispl2(re(pli(r,s)),r,re(x),reis(r,s)),ispl2(im(pli(r,s)),s,im(x),imis(r,s))):is(pl(x,pli(r,s)),pli(pl"r"(re(x),r),pl"r"(im(x),s)))
+plis2b:=symis(cx,pl(x,pli(r,s)),pli(pl"r"(re(x),r),pl"r"(im(x),s)),plis2a):is(pli(pl"r"(re(x),r),pl"r"(im(x),s)),pl(x,pli(r,s)))
+z@[i:is(x,y)]
+ispl1:=isf(cx,cx,[t:cx]pl(t,z),x,y,i):is(pl(x,z),pl(y,z))
+ispl2:=isf(cx,cx,[t:cx]pl(z,t),x,y,i):is(pl(z,x),pl(z,y))
+z@[u:complex][i:is(x,y)][j:is(z,u)]
+ispl12:=tris(cx,pl(x,z),pl(y,z),pl(y,u),ispl1(x,y,z,i),ispl2(z,u,y,j)):is(pl(x,z),pl(y,u))
+y@satz209:=isrecx12(pl"r"(re(x),re(y)),pl"r"(re(y),re(x)),pl"r"(im(x),im(y)),pl"r"(im(y),im(x)),compl(re(x),re(y)),compl(im(x),im(y))):is(pl(x,y),pl(y,x))
+compl:=satz209:is(pl(x,y),pl(y,x))
+x@satz210:=tr3is(cx,pl(x,0c),pli(pl"r"(re(x),0),pl"r"(im(x),0)),pli(re(x),im(x)),x,plis2a(x,0,0),isrecx12(pl"r"(re(x),0),re(x),pl"r"(im(x),0),im(x),pl02(re(x),0,refis(real,0)),pl02(im(x),0,refis(real,0))),pliis(x)):is(pl(x,0c),x)
+satz210a:=symis(cx,pl(x,0c),x,satz210):is(x,pl(x,0c))
+satz210b:=tris(cx,pl(0c,x),pl(x,0c),x,compl(0c,x),satz210):is(pl(0c,x),x)
+satz210c:=symis(cx,pl(0c,x),x,satz210b):is(x,pl(0c,x))
+z@satz211:=tr3is(cx,pl(pl(x,y),z),pli(pl"r"(pl"r"(re(x),re(y)),re(z)),pl"r"(pl"r"(im(x),im(y)),im(z))),pli(pl"r"(re(x),pl"r"(re(y),re(z))),pl"r"(im(x),pl"r"(im(y),im(z)))),pl(x,pl(y,z)),plis1a(z,pl"r"(re(x),re(y)),pl"r"(im(x),im(y))),isrecx12(pl"r"(pl"r"(re(x),re(y)),re(z)),pl"r"(re(x),pl"r"(re(y),re(z))),pl"r"(pl"r"(im(x),im(y)),im(z)),pl"r"(im(x),pl"r"(im(y),im(z))),asspl1(re(x),re(y),re(z)),asspl1(im(x),im(y),im(z))),plis2b(x,pl"r"(re(y),re(z)),pl"r"(im(y),im(z)))):is(pl(pl(x,y),z),pl(x,pl(y,z)))
+asspl1:=satz211:is(pl(pl(x,y),z),pl(x,pl(y,z)))
+asspl2:=symis(cx,pl(pl(x,y),z),pl(x,pl(y,z)),asspl1):is(pl(x,pl(y,z)),pl(pl(x,y),z))
+y@[u:complex][i:is(pl(y,u),x)]
++2212
+t1:=tris(real,pl"r"(re(y),re(u)),re(pl(y,u)),re(x),isre(pl"r"(re(y),re(u)),pl"r"(im(y),im(u))),iscere(pl(y,u),x,i)):is"r"(pl"r"(re(y),re(u)),re(x))
+t2:=tris(real,pl"r"(im(y),im(u)),im(pl(y,u)),im(x),isim(pl"r"(re(y),re(u)),pl"r"(im(y),im(u))),isceim(pl(y,u),x,i)):is"r"(pl"r"(im(y),im(u)),im(x))
+t3:=satz187d(re(x),re(y),re(u),t1):is"r"(re(u),mn(re(x),re(y)))
+t4:=satz187d(im(x),im(y),im(u),t2):is"r"(im(u),mn(im(x),im(y)))
+-2212
+satz212a:=tris(cx,u,pli(re(u),im(u)),pli(mn(re(x),re(y)),mn(im(x),im(y))),ispli(u),isrecx12(re(u),mn(re(x),re(y)),im(u),mn(im(x),im(y)),t3".2212",t4".2212")):is(u,pli(mn(re(x),re(y)),mn(im(x),im(y))))
+y@satz212b:=tr3is(cx,pl(y,pli(mn(re(x),re(y)),mn(im(x),im(y)))),pli(pl"r"(re(y),mn(re(x),re(y))),pl"r"(im(y),mn(im(x),im(y)))),pli(re(x),im(x)),x,plis2a(y,mn(re(x),re(y)),mn(im(x),im(y))),isrecx12(pl"r"(re(y),mn(re(x),re(y))),re(x),pl"r"(im(y),mn(im(x),im(y))),im(x),satz187a(re(x),re(y)),satz187a(im(x),im(y))),pliis(x)):is(pl(y,pli(mn(re(x),re(y)),mn(im(x),im(y)))),x)
+satz212c:=somei(cx,[t:cx]is(pl(y,t),x),pli(mn(re(x),re(y)),mn(im(x),im(y))),satz212b):some([t:complex]is(pl(y,t),x))
+satz212:=onei(cx,[t:cx]is(pl(y,t),x),[t:cx][u:cx][v:is(pl(y,t),x)][w:is(pl(y,u),x)]tris2(cx,t,u,pli(mn(re(x),re(y)),mn(im(x),im(y))),satz212a(t,v),satz212a(u,w)),satz212c):one([t:complex]is(pl(y,t),x))
+%satz212:=onei(cx,[t:cx]is(pl(y,t),x),[t:cx][u:cx][v:is(pl(y,t),x)][w:is(pl(y,u),x)]tris2(cx,t,u,v),satz212a(u,w)),satz212c):one([t:complex]is(pl(y,t),x))
+mn:=pli(mn"r"(re(x),re(y)),mn"r"(im(x),im(y))):complex
+d@mnis12a:=isrecx12(mn"r"(re(pli(a,b)),re(pli(c,d))),mn"r"(a,c),mn"r"(im(pli(a,b)),im(pli(c,d))),mn"r"(b,d),ismn12(re(pli(a,b)),a,re(pli(c,d)),c,reis(a,b),reis(c,d)),ismn12(im(pli(a,b)),b,im(pli(c,d)),d,imis(a,b),imis(c,d))):is(mn(pli(a,b),pli(c,d)),pli(mn"r"(a,c),mn"r"(b,d)))
+mnis12b:=symis(cx,mn(pli(a,b),pli(c,d)),pli(mn"r"(a,c),mn"r"(b,d)),mnis12a):is(pli(mn"r"(a,c),mn"r"(b,d)),mn(pli(a,b),pli(c,d)))
+x@[r:real][s:real]
+mnis1a:=isrecx12(mn"r"(re(pli(r,s)),re(x)),mn"r"(r,re(x)),mn"r"(im(pli(r,s)),im(x)),mn"r"(s,im(x)),ismn1(re(pli(r,s)),r,re(x),reis(r,s)),ismn1(im(pli(r,s)),s,im(x),imis(r,s))):is(mn(pli(r,s),x),pli(mn"r"(r,re(x)),mn"r"(s,im(x))))
+mnis1b:=symis(cx,mn(pli(r,s),x),pli(mn"r"(r,re(x)),mn"r"(s,im(x))),mnis1a):is(pli(mn"r"(r,re(x)),mn"r"(s,im(x))),mn(pli(r,s),x))
+mnis2a:=isrecx12(mn"r"(re(x),re(pli(r,s))),mn"r"(re(x),r),mn"r"(im(x),im(pli(r,s))),mn"r"(im(x),s),ismn2(re(pli(r,s)),r,re(x),reis(r,s)),ismn2(im(pli(r,s)),s,im(x),imis(r,s))):is(mn(x,pli(r,s)),pli(mn"r"(re(x),r),mn"r"(im(x),s)))
+mnis2b:=symis(cx,mn(x,pli(r,s)),pli(mn"r"(re(x),r),mn"r"(im(x),s)),mnis2a):is(pli(mn"r"(re(x),r),mn"r"(im(x),s)),mn(x,pli(r,s)))
+z@[i:is(x,y)]
+ismn1:=isf(cx,cx,[t:cx]mn(t,z),x,y,i):is(mn(x,z),mn(y,z))
+ismn2:=isf(cx,cx,[t:cx]mn(z,t),x,y,i):is(mn(z,x),mn(z,y))
+z@[u:complex][i:is(x,y)][j:is(z,u)]
+ismn12:=tris(cx,mn(x,z),mn(y,z),mn(y,u),ismn1(x,y,z,i),ismn2(z,u,y,j)):is(mn(x,z),mn(y,u))
+y@[u:complex][i:is(pl(y,u),x)]
+satz212d:=satz212a(u,i):is(u,mn(x,y))
+satz212e:=symis(cx,u,mn(x,y),satz212d):is(mn(x,y),u)
+u@[i:is(pl(u,y),x)]
+satz212f:=satz212d(tris(cx,pl(y,u),pl(u,y),x,compl(y,u),i)):is(u,mn(x,y))
+satz212g:=symis(cx,u,mn(x,y),satz212f):is(mn(x,y),u)
+y@satz212h:=satz212b:is(pl(y,mn(x,y)),x)
+[i:is(mn(x,y),0c)]
++2213
+t1:=tr3is(real,mn"r"(re(x),re(y)),re(mn(x,y)),re(0c),0,isre(mn"r"(re(x),re(y)),mn"r"(im(x),im(y))),iscere(mn(x,y),0c,i),reis(0,0)):is"r"(mn"r"(re(x),re(y)),0)
+t2:=tr3is(real,mn"r"(im(x),im(y)),im(mn(x,y)),im(0c),0,isim(mn"r"(re(x),re(y)),mn"r"(im(x),im(y))),isceim(mn(x,y),0c,i),imis(0,0)):is"r"(mn"r"(im(x),im(y)),0)
+t3:=satz182b(re(x),re(y),t1):is"r"(re(x),re(y))
+t4:=satz182b(im(x),im(y),t2):is"r"(im(x),im(y))
+-2213
+satz213a:=tr3is(cx,x,pli(re(x),im(x)),pli(re(y),im(y)),y,ispli(x),isrecx12(re(x),re(y),im(x),im(y),t3".2213",t4".2213"),pliis(y)):is(x,y)
+y@[i:is(x,y)]
++*2213
+i@t5:=satz182e(re(x),re(y),iscere(x,y,i)):is"r"(mn"r"(re(x),re(y)),0)
+t6:=satz182e(im(x),im(y),isceim(x,y,i)):is"r"(mn"r"(im(x),im(y)),0)
+-2213
+i@satz213b:=isrecx12(mn"r"(re(x),re(y)),0,mn"r"(im(x),im(y)),0,t5".2213",t6".2213"):is(mn(x,y),0c)
+x@m0:=mn(0c,x):complex
+satz214:=isrecx12(mn"r"(re(0c),re(x)),m0"r"(re(x)),mn"r"(im(0c),im(x)),m0"r"(im(x)),pl01(re(0c),m0"r"(re(x)),reis(0,0)),pl01(im(0c),m0"r"(im(x)),imis(0,0))):is(m0(x),pli(m0"r"(re(x)),m0"r"(im(x))))
+satz214a:=symis(cx,m0(x),pli(m0"r"(re(x)),m0"r"(im(x))),satz214):is(pli(m0"r"(re(x)),m0"r"(im(x))),m0(x))
+b@m0isa:=tris(cx,m0(pli(a,b)),pli(m0"r"(re(pli(a,b))),m0"r"(im(pli(a,b)))),pli(m0"r"(a),m0"r"(b)),satz214(pli(a,b)),isrecx12(m0"r"(re(pli(a,b))),m0"r"(a),m0"r"(im(pli(a,b))),m0"r"(b),ism0(re(pli(a,b)),a,reis(a,b)),ism0(im(pli(a,b)),b,imis(a,b)))):is(m0(pli(a,b)),pli(m0"r"(a),m0"r"(b)))
+m0isb:=symis(cx,m0(pli(a,b)),pli(m0"r"(a),m0"r"(b)),m0isa):is(pli(m0"r"(a),m0"r"(b)),m0(pli(a,b)))
+y@[i:is(x,y)]
+ism0:=isf(cx,cx,[t:cx]m0(t),x,y,i):is(m0(x),m0(y))
+x@satz215:=tr4is(cx,m0(m0(x)),m0(pli(m0"r"(re(x)),m0"r"(im(x)))),pli(m0"r"(m0"r"(re(x))),m0"r"(m0"r"(im(x)))),pli(re(x),im(x)),x,ism0(m0(x),pli(m0"r"(re(x)),m0"r"(im(x))),satz214),m0isa(m0"r"(re(x)),m0"r"(im(x))),isrecx12(m0"r"(m0"r"(re(x))),re(x),m0"r"(m0"r"(im(x))),im(x),satz177(re(x)),satz177(im(x))),pliis(x)):is(m0(m0(x)),x)
+satz215a:=symis(cx,m0(m0(x)),x,satz215):is(x,m0(m0(x)))
+y@[i:is(x,m0(y))]
+satz215b:=tris(cx,m0(x),m0(m0(y)),y,ism0(x,m0(y),i),satz215(y)):is(m0(x),y)
+satz215c:=symis(cx,m0(x),y,satz215b):is(y,m0(x))
+y@[i:is(m0(x),y)]
+satz215d:=satz215c(y,x,symis(cx,m0(x),y,i)):is(x,m0(y))
+satz215e:=symis(cx,x,m0(y),satz215d):is(m0(y),x)
+x@satz216:=tr3is(cx,pl(x,m0(x)),pl(x,pli(m0"r"(re(x)),m0"r"(im(x)))),pli(pl"r"(re(x),m0"r"(re(x))),pl"r"(im(x),m0"r"(im(x)))),0c,ispl2(m0(x),pli(m0"r"(re(x)),m0"r"(im(x))),x,satz214(x)),plis2a(x,m0"r"(re(x)),m0"r"(im(x))),isrecx12(pl"r"(re(x),m0"r"(re(x))),0,pl"r"(im(x),m0"r"(im(x))),0,satz179(re(x)),satz179(im(x)))):is(pl(x,m0(x)),0c)
++2216
+anders:=satz212h(0c,x):is(pl(x,m0(x)),0c)
+-2216
+satz216a:=tris(cx,pl(m0(x),x),pl(x,m0(x)),0c,compl(m0(x),x),satz216):is(pl(m0(x),x),0c)
+y@satz217:=tr4is(cx,m0(pl(x,y)),pli(m0"r"(pl"r"(re(x),re(y))),m0"r"(pl"r"(im(x),im(y)))),pli(pl"r"(m0"r"(re(x)),m0"r"(re(y))),pl"r"(m0"r"(im(x)),m0"r"(im(y)))),pl(pli(m0"r"(re(x)),m0"r"(im(x))),pli(m0"r"(re(y)),m0"r"(im(y)))),pl(m0(x),m0(y)),m0isa(pl"r"(re(x),re(y)),pl"r"(im(x),im(y))),isrecx12(m0"r"(pl"r"(re(x),re(y))),pl"r"(m0"r"(re(x)),m0"r"(re(y))),m0"r"(pl"r"(im(x),im(y))),pl"r"(m0"r"(im(x)),m0"r"(im(y))),satz180(re(x),re(y)),satz180(im(x),im(y))),plis12b(m0"r"(re(x)),m0"r"(im(x)),m0"r"(re(y)),m0"r"(im(y))),ispl12(pli(m0"r"(re(x)),m0"r"(im(x))),m0(x),pli(m0"r"(re(y)),m0"r"(im(y))),m0(y),satz214a(x),satz214a(y))):is(m0(pl(x,y)),pl(m0(x),m0(y)))
+satz217a:=symis(cx,m0(pl(x,y)),pl(m0(x),m0(y)),satz217):is(pl(m0(x),m0(y)),m0(pl(x,y)))
+satz218:=tris(cx,mn(x,y),pl(x,pli(m0"r"(re(y)),m0"r"(im(y)))),pl(x,m0(y)),plis2b(x,m0"r"(re(y)),m0"r"(im(y))),ispl2(pli(m0"r"(re(y)),m0"r"(im(y))),m0(y),x,satz214a(y))):is(mn(x,y),pl(x,m0(y)))
+satz218a:=symis(cx,mn(x,y),pl(x,m0(y)),satz218):is(pl(x,m0(y)),mn(x,y))
++2219
+t1:=tr3is(cx,m0(mn(x,y)),m0(pl(x,m0(y))),pl(m0(x),m0(m0(y))),pl(m0(x),y),ism0(mn(x,y),pl(x,m0(y)),satz218),satz217(x,m0(y)),ispl2(m0(m0(y)),y,m0(x),satz215(y))):is(m0(mn(x,y)),pl(m0(x),y))
+-2219
+satz219:=tr3is(cx,m0(mn(x,y)),pl(m0(x),y),pl(y,m0(x)),mn(y,x),t1".2219",compl(m0(x),y),satz218a(y,x)):is(m0(mn(x,y)),mn(y,x))
+satz219a:=symis(cx,m0(mn(y,x)),mn(x,y),satz219(y,x)):is(mn(x,y),m0(mn(y,x)))
+ts:=pli(mn"r"(ts"r"(re(x),re(y)),ts"r"(im(x),im(y))),pl"r"(ts"r"(re(x),im(y)),ts"r"(im(x),re(y)))):complex
+rets:=mn"r"(ts"r"(re(x),re(y)),ts"r"(im(x),im(y))):real
+imts:=pl"r"(ts"r"(re(x),im(y)),ts"r"(im(x),re(y))):real
++v3
+d@t1:=ismn12"r"(ts"r"(re(pli(a,b)),re(pli(c,d))),ts"r"(a,c),ts"r"(im(pli(a,b)),im(pli(c,d))),ts"r"(b,d),ists12(re(pli(a,b)),a,re(pli(c,d)),c,reis(a,b),reis(c,d)),ists12(im(pli(a,b)),b,im(pli(c,d)),d,imis(a,b),imis(c,d))):is"r"(rets(pli(a,b),pli(c,d)),mn"r"(ts"r"(a,c),ts"r"(b,d)))
+t2:=ispl12"r"(ts"r"(re(pli(a,b)),im(pli(c,d))),ts"r"(a,d),ts"r"(im(pli(a,b)),re(pli(c,d))),ts"r"(b,c),ists12(re(pli(a,b)),a,im(pli(c,d)),d,reis(a,b),imis(c,d)),ists12(im(pli(a,b)),b,re(pli(c,d)),c,imis(a,b),reis(c,d))):is"r"(imts(pli(a,b),pli(c,d)),pl"r"(ts"r"(a,d),ts"r"(b,c)))
+-v3
+d@tsis12a:=isrecx12(rets(pli(a,b),pli(c,d)),mn"r"(ts"r"(a,c),ts"r"(b,d)),imts(pli(a,b),pli(c,d)),pl"r"(ts"r"(a,d),ts"r"(b,c)),t1".v3",t2".v3"):is(ts(pli(a,b),pli(c,d)),pli(mn"r"(ts"r"(a,c),ts"r"(b,d)),pl"r"(ts"r"(a,d),ts"r"(b,c))))
+tsis12b:=symis(cx,ts(pli(a,b),pli(c,d)),pli(mn"r"(ts"r"(a,c),ts"r"(b,d)),pl"r"(ts"r"(a,d),ts"r"(b,c))),tsis12a):is(pli(mn"r"(ts"r"(a,c),ts"r"(b,d)),pl"r"(ts"r"(a,d),ts"r"(b,c))),ts(pli(a,b),pli(c,d)))
+x@[r:real][s:real]
++*v3
+s@t3:=ismn12"r"(ts"r"(re(pli(r,s)),re(x)),ts"r"(r,re(x)),ts"r"(im(pli(r,s)),im(x)),ts"r"(s,im(x)),ists1(re(pli(r,s)),r,re(x),reis(r,s)),ists1(im(pli(r,s)),s,im(x),imis(r,s))):is"r"(rets(pli(r,s),x),mn"r"(ts"r"(r,re(x)),ts"r"(s,im(x))))
+t4:=ispl12"r"(ts"r"(re(pli(r,s)),im(x)),ts"r"(r,im(x)),ts"r"(im(pli(r,s)),re(x)),ts"r"(s,re(x)),ists1(re(pli(r,s)),r,im(x),reis(r,s)),ists1(im(pli(r,s)),s,re(x),imis(r,s))):is"r"(imts(pli(r,s),x),pl"r"(ts"r"(r,im(x)),ts"r"(s,re(x))))
+-v3
+s@tsis1a:=isrecx12(rets(pli(r,s),x),mn"r"(ts"r"(r,re(x)),ts"r"(s,im(x))),imts(pli(r,s),x),pl"r"(ts"r"(r,im(x)),ts"r"(s,re(x))),t3".v3",t4".v3"):is(ts(pli(r,s),x),pli(mn"r"(ts"r"(r,re(x)),ts"r"(s,im(x))),pl"r"(ts"r"(r,im(x)),ts"r"(s,re(x)))))
+tsis1b:=symis(cx,ts(pli(r,s),x),pli(mn"r"(ts"r"(r,re(x)),ts"r"(s,im(x))),pl"r"(ts"r"(r,im(x)),ts"r"(s,re(x)))),tsis1a):is(pli(mn"r"(ts"r"(r,re(x)),ts"r"(s,im(x))),pl"r"(ts"r"(r,im(x)),ts"r"(s,re(x)))),ts(pli(r,s),x))
++*v3
+s@t5:=ismn12"r"(ts"r"(re(x),re(pli(r,s))),ts"r"(re(x),r),ts"r"(im(x),im(pli(r,s))),ts"r"(im(x),s),ists2(re(pli(r,s)),r,re(x),reis(r,s)),ists2(im(pli(r,s)),s,im(x),imis(r,s))):is"r"(rets(x,pli(r,s)),mn"r"(ts"r"(re(x),r),ts"r"(im(x),s)))
+t6:=ispl12"r"(ts"r"(re(x),im(pli(r,s))),ts"r"(re(x),s),ts"r"(im(x),re(pli(r,s))),ts"r"(im(x),r),ists2(im(pli(r,s)),s,re(x),imis(r,s)),ists2(re(pli(r,s)),r,im(x),reis(r,s))):is"r"(imts(x,pli(r,s)),pl"r"(ts"r"(re(x),s),ts"r"(im(x),r)))
+-v3
+s@tsis2a:=isrecx12(rets(x,pli(r,s)),mn"r"(ts"r"(re(x),r),ts"r"(im(x),s)),imts(x,pli(r,s)),pl"r"(ts"r"(re(x),s),ts"r"(im(x),r)),t5".v3",t6".v3"):is(ts(x,pli(r,s)),pli(mn"r"(ts"r"(re(x),r),ts"r"(im(x),s)),pl"r"(ts"r"(re(x),s),ts"r"(im(x),r))))
+tsis2b:=symis(cx,ts(x,pli(r,s)),pli(mn"r"(ts"r"(re(x),r),ts"r"(im(x),s)),pl"r"(ts"r"(re(x),s),ts"r"(im(x),r))),tsis2a):is(pli(mn"r"(ts"r"(re(x),r),ts"r"(im(x),s)),pl"r"(ts"r"(re(x),s),ts"r"(im(x),r))),ts(x,pli(r,s)))
+z@[i:is(x,y)]
+ists1:=isf(cx,cx,[t:cx]ts(t,z),x,y,i):is(ts(x,z),ts(y,z))
+ists2:=isf(cx,cx,[t:cx]ts(z,t),x,y,i):is(ts(z,x),ts(z,y))
+z@[u:complex][i:is(x,y)][j:is(z,u)]
+ists12:=tris(cx,ts(x,z),ts(y,z),ts(y,u),ists1(x,y,z,i),ists2(z,u,y,j)):is(ts(x,z),ts(y,u))
++3220
+y@t1:=ismn12"r"(ts"r"(re(x),re(y)),ts"r"(re(y),re(x)),ts"r"(im(x),im(y)),ts"r"(im(y),im(x)),comts(re(x),re(y)),comts(im(x),im(y))):is"r"(rets(x,y),rets(y,x))
+t2:=tris(real,imts(x,y),pl"r"(ts"r"(im(x),re(y)),ts"r"(re(x),im(y))),imts(y,x),compl"r"(ts"r"(re(x),im(y)),ts"r"(im(x),re(y))),ispl12"r"(ts"r"(im(x),re(y)),ts"r"(re(y),im(x)),ts"r"(re(x),im(y)),ts"r"(im(y),re(x)),comts(im(x),re(y)),comts(re(x),im(y)))):is"r"(imts(x,y),imts(y,x))
+-3220
+y@satz220:=isrecx12(rets(x,y),rets(y,x),imts(x,y),imts(y,x),t1".3220",t2".3220"):is(ts(x,y),ts(y,x))
+comts:=satz220:is(ts(x,y),ts(y,x))
+x@[i:is(x,0c)]
+lemma1:=tris(real,re(x),re(0c),0,iscere(x,0c,i),reis(0,0)):is"r"(re(x),0)
+lemma2:=tris(real,im(x),im(0c),0,isceim(x,0c,i),imis(0,0)):is"r"(im(x),0)
+x@mod2:=pl"r"(ts"r"(re(x),re(x)),ts"r"(im(x),im(x))):real
+i@lemma3:=tris(real,mod2,pl"r"(0,0),0,ispl12"r"(ts"r"(re(x),re(x)),0,ts"r"(im(x),im(x)),0,ts01(re(x),re(x),lemma1),ts01(im(x),im(x),lemma2)),pl01(0,0,refis(real,0))):is"r"(mod2(x),0)
+x@[n:nis(x,0c)]
++*v3
+x@re2:=ts"r"(re(x),re(x)):real
+im2:=ts"r"(im(x),im(x)):real
+n@[i:is"r"(re(x),0)]
+t7:=th3"l.imp"(is"r"(im(x),0),is(x,0c),n,[t:is"r"(im(x),0)]tris(cx,x,pli(re(x),im(x)),0c,ispli(x),isrecx12(re(x),0,im(x),0,i,t))):nis"r"(im(x),0)
+t8:=ispos(im2,mod2,symis(real,mod2,im2,pl01(re2,im2,ts01(re(x),re(x),i))),possq(im(x),t7)):pos(mod2)
+n@[o:nis"r"(re(x),0)][i:is"r"(im(x),0)]
+t9:=ispos(re2,mod2,symis(real,mod2,re2,pl02(re2,im2,ts01(im(x),im(x),i))),possq(re(x),o)):pos(mod2)
+o@[p:nis"r"(im(x),0)]
+t10:=pospl(re2,im2,possq(re(x),o),possq(im(x),p)):pos(mod2)
+o@t11:=th1"l.imp"(is"r"(im(x),0),pos(mod2),[t:is"r"(im(x),0)]t9(t),[t:nis"r"(im(x),0)]t10(t)):pos(mod2)
+-v3
+n@lemma4:=th1"l.imp"(is"r"(re(x),0),pos(mod2),[t:is"r"(re(x),0)]t8".v3"(t),[t:nis"r"(re(x),0)]t11".v3"(t)):pos(mod2(x))
+x@lemma5:=th1"l.imp"(is(x,0c),not(neg(mod2)),[t:is(x,0c)]0notn(mod2,lemma3(t)),[t:nis(x,0c)]pnotn(mod2,lemma4(t))):not(neg(mod2(x)))
+y@[i:is(x,0c)]
++3221
+t1:=lemma1(x,i):is"r"(re(x),0)
+t2:=lemma2(x,i):is"r"(im(x),0)
+t3:=tris(real,rets(x,y),mn"r"(0,0),0,ismn12"r"(ts"r"(re(x),re(y)),0,ts"r"(im(x),im(y)),0,ts01(re(x),re(y),t1),ts01(im(x),im(y),t2)),satz187c(0,0,0,pl02(0,0,refis(real,0)))):is"r"(rets(x,y),0)
+t4:=tris(real,imts(x,y),pl"r"(0,0),0,ispl12"r"(ts"r"(re(x),im(y)),0,ts"r"(im(x),re(y)),0,ts01(re(x),im(y),t1),ts01(im(x),re(y),t2)),pl02(0,0,refis(real,0))):is"r"(imts(x,y),0)
+-3221
+satz221a:=isrecx12(rets(x,y),0,imts(x,y),0,t3".3221",t4".3221"):is(ts(x,y),0c)
+y@[i:is(y,0c)]
+satz221b:=tris(cx,ts(x,y),ts(y,x),0c,comts(x,y),satz221a(y,x,i)):is(ts(x,y),0c)
+y@[i:is(ts(x,y),0c)]
++*3221
+i@[n:nis(y,0c)]
+t5:=lemma4(y,n):pos(mod2(y))
+t6:=tris1(real,rets(x,y),0,re(ts(x,y)),reis(rets(x,y),imts(x,y)),lemma1(ts(x,y),i)):is"r"(rets(x,y),0)
+t7:=tris1(real,imts(x,y),0,im(ts(x,y)),imis(rets(x,y),imts(x,y)),lemma2(ts(x,y),i)):is"r"(imts(x,y),0)
+t8:=tris(real,pl"r"(ts"r"(rets(x,y),re(y)),ts"r"(imts(x,y),im(y))),pl"r"(0,0),0,ispl12"r"(ts"r"(rets(x,y),re(y)),0,ts"r"(imts(x,y),im(y)),0,ts01(rets(x,y),re(y),t6),ts01(imts(x,y),im(y),t7)),pl02(0,0,refis(real,0))):is"r"(pl"r"(ts"r"(rets(x,y),re(y)),ts"r"(imts(x,y),im(y))),0)
+y@ii1r:=ts"r"(ts"r"(im(x),im(y)),re(y)):real
+i1ir:=ts"r"(im(x),ts"r"(im(y),re(y))):real
+ir1i:=ts"r"(ts"r"(im(x),re(y)),im(y)):real
+i1ri:=ts"r"(im(x),ts"r"(re(y),im(y))):real
+rr1r:=ts"r"(ts"r"(re(x),re(y)),re(y)):real
+r1rr:=ts"r"(re(x),ts"r"(re(y),re(y))):real
+ri1r:=ts"r"(ts"r"(re(x),im(y)),re(y)):real
+r1ir:=ts"r"(re(x),ts"r"(im(y),re(y))):real
+ri1i:=ts"r"(ts"r"(re(x),im(y)),im(y)):real
+r1ii:=ts"r"(re(x),ts"r"(im(y),im(y))):real
+n@t9:=tris(real,ii1r,i1ir,i1ri,assts1(im(x),im(y),re(y)),ists2"r"(ts"r"(im(y),re(y)),ts"r"(re(y),im(y)),im(x),comts"r"(im(y),re(y)))):is"r"(ii1r,i1ri)
+t10:=tris(real,ts"r"(rets(x,y),re(y)),mn"r"(rr1r,ii1r),mn"r"(r1rr,i1ri),disttm1(ts"r"(re(x),re(y)),ts"r"(im(x),im(y)),re(y)),ismn12"r"(rr1r,r1rr,ii1r,i1ri,assts1(re(x),re(y),re(y)),t9)):is"r"(ts"r"(rets(x,y),re(y)),mn"r"(r1rr,i1ri))
+t11:=tr3is(real,ts"r"(imts(x,y),im(y)),pl"r"(ri1i,ir1i),pl"r"(r1ii,i1ri),pl"r"(i1ri,r1ii),disttp1(ts"r"(re(x),im(y)),ts"r"(im(x),re(y)),im(y)),ispl12"r"(ri1i,r1ii,ir1i,i1ri,assts1(re(x),im(y),im(y)),assts1(im(x),re(y),im(y))),compl"r"(r1ii,i1ri)):is"r"(ts"r"(imts(x,y),im(y)),pl"r"(i1ri,r1ii))
+t12:=tr4is(real,pl"r"(ts"r"(rets(x,y),re(y)),ts"r"(imts(x,y),im(y))),pl"r"(mn"r"(r1rr,i1ri),pl"r"(i1ri,r1ii)),pl"r"(pl"r"(mn"r"(r1rr,i1ri),i1ri),r1ii),pl"r"(r1rr,r1ii),ts"r"(re(x),mod2(y)),ispl12"r"(ts"r"(rets(x,y),re(y)),mn"r"(r1rr,i1ri),ts"r"(imts(x,y),im(y)),pl"r"(i1ri,r1ii),t10,t11),asspl2"r"(mn"r"(r1rr,i1ri),i1ri,r1ii),ispl1"r"(pl"r"(mn"r"(r1rr,i1ri),i1ri),r1rr,r1ii,plmn(r1rr,i1ri)),distpt2(re(x),ts"r"(re(y),re(y)),ts"r"(im(y),im(y)))):is"r"(pl"r"(ts"r"(rets(x,y),re(y)),ts"r"(imts(x,y),im(y))),ts"r"(re(x),mod2(y)))
+t13:=tris1(real,ts"r"(re(x),mod2(y)),0,pl"r"(ts"r"(rets(x,y),re(y)),ts"r"(imts(x,y),im(y))),t12,t8):is"r"(ts"r"(re(x),mod2(y)),0)
+t14:=ore1(is"r"(re(x),0),is"r"(mod2(y),0),satz192c(re(x),mod2(y),t13),pnot0(mod2(y),t5)):is"r"(re(x),0)
+t15:=tris1(real,ts"r"(im(x),im(y)),0,ts"r"(re(x),re(y)),satz182b(ts"r"(re(x),re(y)),ts"r"(im(x),im(y)),t6),ts01(re(x),re(y),t14)):is"r"(ts"r"(im(x),im(y)),0)
+t16:=tris1(real,ts"r"(im(x),re(y)),0,imts(x,y),pl01(ts"r"(re(x),im(y)),ts"r"(im(x),re(y)),ts01(re(x),im(y),t14)),t7):is"r"(ts"r"(im(x),re(y)),0)
+[j:is"r"(re(y),0)]
+t17:=t7"c.v3"(y,n,j):nis"r"(im(y),0)
+t18:=ore1(is"r"(im(x),0),is"r"(im(y),0),satz192c(im(x),im(y),t15),t17):is"r"(im(x),0)
+n@[o:nis"r"(re(y),0)]
+t19:=ore1(is"r"(im(x),0),is"r"(re(y),0),satz192c(im(x),re(y),t16),o):is"r"(im(x),0)
+n@t20:=th1"l.imp"(is"r"(re(y),0),is"r"(im(x),0),[t:is"r"(re(y),0)]t18(t),[t:nis"r"(re(y),0)]t19(t)):is"r"(im(x),0)
+t21:=tris(cx,x,pli(re(x),im(x)),0c,ispli(x),isrecx12(re(x),0,im(x),0,t14,t20)):is(x,0c)
+-3221
+i@satz221c:=th2"l.or"(is(x,0c),is(y,0c),[t:nis(y,0c)]t21".3221"(t)):or(is(x,0c),is(y,0c))
+y@[n:nis(x,0c)][o:nis(y,0c)]
+satz221d:=th3"l.imp"(is(ts(x,y),0c),or(is(x,0c),is(y,0c)),th3"l.or"(is(x,0c),is(y,0c),n,o),[t:is(ts(x,y),0c)]satz221c(t)):nis(ts(x,y),0c)
++3222
+x@t1:=tris(real,mn"r"(ts"r"(re(x),1rl),ts"r"(im(x),0)),mn"r"(re(x),0),re(x),ismn12"r"(ts"r"(re(x),1rl),re(x),ts"r"(im(x),0),0,satz195(re(x)),ts02(im(x),0,refis(real,0))),pl02(re(x),m0"r"(0),satz176b(0,refis(real,0)))):is"r"(mn"r"(ts"r"(re(x),1rl),ts"r"(im(x),0)),re(x))
+t2:=tris(real,pl"r"(ts"r"(re(x),0),ts"r"(im(x),1rl)),pl"r"(0,im(x)),im(x),ispl12"r"(ts"r"(re(x),0),0,ts"r"(im(x),1rl),im(x),ts02(re(x),0,refis(real,0)),satz195(im(x))),pl01(0,im(x),refis(real,0))):is"r"(pl"r"(ts"r"(re(x),0),ts"r"(im(x),1rl)),im(x))
+-3222
+x@satz222:=tr3is(cx,ts(x,1c),pli(mn"r"(ts"r"(re(x),1rl),ts"r"(im(x),0)),pl"r"(ts"r"(re(x),0),ts"r"(im(x),1rl))),pli(re(x),im(x)),x,tsis2a(x,1rl,0),isrecx12(mn"r"(ts"r"(re(x),1rl),ts"r"(im(x),0)),re(x),pl"r"(ts"r"(re(x),0),ts"r"(im(x),1rl)),im(x),t1".3222",t2".3222"),pliis(x)):is(ts(x,1c),x)
+satz222a:=symis(cx,ts(x,1c),x,satz222):is(x,ts(x,1c))
+satz222b:=tris(cx,ts(1c,x),ts(x,1c),x,comts(1c,x),satz222):is(ts(1c,x),x)
+satz222c:=symis(cx,ts(1c,x),x,satz222b):is(x,ts(1c,x))
++3223
+t1:=tris(real,mn"r"(ts"r"(re(x),m0"r"(1rl)),ts"r"(im(x),m0"r"(0))),mn"r"(m0"r"(re(x)),0),m0"r"(re(x)),ismn12"r"(ts"r"(re(x),m0"r"(1rl)),m0"r"(re(x)),ts"r"(im(x),m0"r"(0)),0,tris(real,ts"r"(re(x),m0"r"(1rl)),m0"r"(ts"r"(re(x),1rl)),m0"r"(re(x)),satz197b(re(x),1rl),ism0"r"(ts"r"(re(x),1rl),re(x),satz195(re(x)))),ts02(im(x),m0"r"(0),satz176b(0,refis(real,0)))),pl02(m0"r"(re(x)),m0"r"(0),satz176b(0,refis(real,0)))):is"r"(mn"r"(ts"r"(re(x),m0"r"(1rl)),ts"r"(im(x),m0"r"(0))),m0"r"(re(x)))
+t2:=tris(real,pl"r"(ts"r"(re(x),m0"r"(0)),ts"r"(im(x),m0"r"(1rl))),pl"r"(0,m0"r"(im(x))),m0"r"(im(x)),ispl12"r"(ts"r"(re(x),m0"r"(0)),0,ts"r"(im(x),m0"r"(1rl)),m0"r"(im(x)),ts02(re(x),m0"r"(0),satz176b(0,refis(real,0))),tris(real,ts"r"(im(x),m0"r"(1rl)),m0"r"(ts"r"(im(x),1rl)),m0"r"(im(x)),satz197b(im(x),1rl),ism0"r"(ts"r"(im(x),1rl),im(x),satz195(im(x))))),pl01(0,m0"r"(im(x)),refis(real,0))):is"r"(pl"r"(ts"r"(re(x),m0"r"(0)),ts"r"(im(x),m0"r"(1rl))),m0"r"(im(x)))
+-3223
+satz223:=tr4is(cx,ts(x,m0(1c)),ts(x,pli(m0"r"(1rl),m0"r"(0))),pli(mn"r"(ts"r"(re(x),m0"r"(1rl)),ts"r"(im(x),m0"r"(0))),pl"r"(ts"r"(re(x),m0"r"(0)),ts"r"(im(x),m0"r"(1rl)))),pli(m0"r"(re(x)),m0"r"(im(x))),m0(x),ists2(m0(1c),pli(m0"r"(1rl),m0"r"(0)),x,m0isa(1rl,0)),tsis2a(x,m0"r"(1rl),m0"r"(0)),isrecx12(mn"r"(ts"r"(re(x),m0"r"(1rl)),ts"r"(im(x),m0"r"(0))),m0"r"(re(x)),pl"r"(ts"r"(re(x),m0"r"(0)),ts"r"(im(x),m0"r"(1rl))),m0"r"(im(x)),t1".3223",t2".3223"),satz214a(x)):is(ts(x,m0(1c)),m0(x))
+satz223a:=symis(cx,ts(x,m0(1c)),m0(x),satz223):is(m0(x),ts(x,m0(1c)))
+satz223b:=tris(cx,ts(m0(1c),x),ts(x,m0(1c)),m0(x),comts(m0(1c),x),satz223):is(ts(m0(1c),x),m0(x))
+satz223c:=symis(cx,ts(m0(1c),x),m0(x),satz223b):is(m0(x),ts(m0(1c),x))
++3224
+y@rxry:=ts"r"(re(x),re(y)):real
+ixiy:=ts"r"(im(x),im(y)):real
+rxiy:=ts"r"(re(x),im(y)):real
+ixry:=ts"r"(im(x),re(y)):real
+t1:=tr4is(real,mn"r"(ts"r"(m0"r"(re(x)),re(y)),ts"r"(m0"r"(im(x)),im(y))),mn"r"(m0"r"(rxry),m0"r"(ixiy)),pl"r"(m0"r"(rxry),ixiy),mn"r"(ixiy,rxry),m0"r"(mn"r"(rxry,ixiy)),ismn12"r"(ts"r"(m0"r"(re(x)),re(y)),m0"r"(rxry),ts"r"(m0"r"(im(x)),im(y)),m0"r"(ixiy),satz197a(re(x),re(y)),satz197a(im(x),im(y))),ispl2"r"(m0"r"(m0"r"(ixiy)),ixiy,m0"r"(rxry),satz177(ixiy)),compl"r"(m0"r"(rxry),ixiy),satz181a(ixiy,rxry)):is"r"(mn"r"(ts"r"(m0"r"(re(x)),re(y)),ts"r"(m0"r"(im(x)),im(y))),m0"r"(mn"r"(rxry,ixiy)))
+t2:=tris(real,pl"r"(ts"r"(m0"r"(re(x)),im(y)),ts"r"(m0"r"(im(x)),re(y))),mn"r"(m0"r"(rxiy),ixry),m0"r"(pl"r"(rxiy,ixry)),ispl12"r"(ts"r"(m0"r"(re(x)),im(y)),m0"r"(rxiy),ts"r"(m0"r"(im(x)),re(y)),m0"r"(ixry),satz197a(re(x),im(y)),satz197a(im(x),re(y))),satz180a(rxiy,ixry)):is"r"(pl"r"(ts"r"(m0"r"(re(x)),im(y)),ts"r"(m0"r"(im(x)),re(y))),m0"r"(pl"r"(rxiy,ixry)))
+-3224
+y@satz224a:=tr4is(cx,ts(m0(x),y),ts(pli(m0"r"(re(x)),m0"r"(im(x))),y),pli(mn"r"(ts"r"(m0"r"(re(x)),re(y)),ts"r"(m0"r"(im(x)),im(y))),pl"r"(ts"r"(m0"r"(re(x)),im(y)),ts"r"(m0"r"(im(x)),re(y)))),pli(m0"r"(mn"r"(ts"r"(re(x),re(y)),ts"r"(im(x),im(y)))),m0"r"(pl"r"(ts"r"(re(x),im(y)),ts"r"(im(x),re(y))))),m0(ts(x,y)),ists1(m0(x),pli(m0"r"(re(x)),m0"r"(im(x))),y,satz214(x)),tsis1a(y,m0"r"(re(x)),m0"r"(im(x))),isrecx12(mn"r"(ts"r"(m0"r"(re(x)),re(y)),ts"r"(m0"r"(im(x)),im(y))),m0"r"(mn"r"(ts"r"(re(x),re(y)),ts"r"(im(x),im(y)))),pl"r"(ts"r"(m0"r"(re(x)),im(y)),ts"r"(m0"r"(im(x)),re(y))),m0"r"(pl"r"(ts"r"(re(x),im(y)),ts"r"(im(x),re(y)))),t1".3224",t2".3224"),m0isb(mn"r"(ts"r"(re(x),re(y)),ts"r"(im(x),im(y))),pl"r"(ts"r"(re(x),im(y)),ts"r"(im(x),re(y))))):is(ts(m0(x),y),m0(ts(x,y)))
+satz224b:=tr3is(cx,ts(x,m0(y)),ts(m0(y),x),m0(ts(y,x)),m0(ts(x,y)),comts(x,m0(y)),satz224a(y,x),ism0(ts(y,x),ts(x,y),comts(y,x))):is(ts(x,m0(y)),m0(ts(x,y)))
+satz224c:=tris2(cx,ts(m0(x),y),ts(x,m0(y)),m0(ts(x,y)),satz224a,satz224b):is(ts(m0(x),y),ts(x,m0(y)))
+satz224d:=symis(cx,ts(m0(x),y),ts(x,m0(y)),satz224c):is(ts(x,m0(y)),ts(m0(x),y))
+satz224e:=symis(cx,ts(m0(x),y),m0(ts(x,y)),satz224a):is(m0(ts(x,y)),ts(m0(x),y))
+satz224f:=symis(cx,ts(x,m0(y)),m0(ts(x,y)),satz224b):is(m0(ts(x,y)),ts(x,m0(y)))
+satz225:=tris(cx,ts(m0(x),m0(y)),ts(x,m0(m0(y))),ts(x,y),satz224c(x,m0(y)),ists2(m0(m0(y)),y,x,satz215(y))):is(ts(m0(x),m0(y)),ts(x,y))
+satz225a:=symis(cx,ts(m0(x),m0(y)),ts(x,y),satz225):is(ts(x,y),ts(m0(x),m0(y)))
++3226
+z@rrr:=ts"r"(ts"r"(re(x),re(y)),re(z)):real
+iir:=ts"r"(ts"r"(im(x),im(y)),re(z)):real
+rii:=ts"r"(ts"r"(re(x),im(y)),im(z)):real
+iri:=ts"r"(ts"r"(im(x),re(y)),im(z)):real
+rri:=ts"r"(ts"r"(re(x),re(y)),im(z)):real
+iii:=ts"r"(ts"r"(im(x),im(y)),im(z)):real
+rir:=ts"r"(ts"r"(re(x),im(y)),re(z)):real
+irr:=ts"r"(ts"r"(im(x),re(y)),re(z)):real
+t1:=tr3is(real,mn"r"(ts"r"(rets(x,y),re(z)),ts"r"(imts(x,y),im(z))),mn"r"(mn"r"(rrr,iir),pl"r"(rii,iri)),pl"r"(rrr,pl"r"(m0"r"(iir),m0"r"(pl"r"(rii,iri)))),mn"r"(rrr,pl"r"(iir,pl"r"(rii,iri))),ismn12"r"(ts"r"(rets(x,y),re(z)),mn"r"(rrr,iir),ts"r"(imts(x,y),im(z)),pl"r"(rii,iri),disttm1(ts"r"(re(x),re(y)),ts"r"(im(x),im(y)),re(z)),disttp1(ts"r"(re(x),im(y)),ts"r"(im(x),re(y)),im(z))),asspl1"r"(rrr,m0"r"(iir),m0"r"(pl"r"(rii,iri))),ispl2"r"(pl"r"(m0"r"(iir),m0"r"(pl"r"(rii,iri))),m0"r"(pl"r"(iir,pl"r"(rii,iri))),rrr,satz180a(iir,pl"r"(rii,iri)))):is"r"(mn"r"(ts"r"(rets(x,y),re(z)),ts"r"(imts(x,y),im(z))),mn"r"(rrr,pl"r"(iir,pl"r"(rii,iri))))
+t2:=tr3is(real,pl"r"(ts"r"(rets(x,y),im(z)),ts"r"(imts(x,y),re(z))),pl"r"(mn"r"(rri,iii),pl"r"(rir,irr)),pl"r"(pl"r"(rir,irr),mn"r"(rri,iii)),mn"r"(pl"r"(pl"r"(rir,irr),rri),iii),ispl12"r"(ts"r"(rets(x,y),im(z)),mn"r"(rri,iii),ts"r"(imts(x,y),re(z)),pl"r"(rir,irr),disttm1(ts"r"(re(x),re(y)),ts"r"(im(x),im(y)),im(z)),disttp1(ts"r"(re(x),im(y)),ts"r"(im(x),re(y)),re(z))),compl"r"(mn"r"(rri,iii),pl"r"(rir,irr)),asspl2"r"(pl"r"(rir,irr),rri,m0"r"(iii))):is"r"(pl"r"(ts"r"(rets(x,y),im(z)),ts"r"(imts(x,y),re(z))),mn"r"(pl"r"(pl"r"(rir,irr),rri),iii))
+t3:=tris(cx,ts(ts(x,y),z),pli(mn"r"(ts"r"(rets(x,y),re(z)),ts"r"(imts(x,y),im(z))),pl"r"(ts"r"(rets(x,y),im(z)),ts"r"(imts(x,y),re(z)))),pli(mn"r"(rrr,pl"r"(iir,pl"r"(rii,iri))),mn"r"(pl"r"(pl"r"(rir,irr),rri),iii)),tsis1a(z,rets(x,y),imts(x,y)),isrecx12(mn"r"(ts"r"(rets(x,y),re(z)),ts"r"(imts(x,y),im(z))),mn"r"(rrr,pl"r"(iir,pl"r"(rii,iri))),pl"r"(ts"r"(rets(x,y),im(z)),ts"r"(imts(x,y),re(z))),mn"r"(pl"r"(pl"r"(rir,irr),rri),iii),t1,t2)):is(ts(ts(x,y),z),pli(mn"r"(rrr,pl"r"(iir,pl"r"(rii,iri))),mn"r"(pl"r"(pl"r"(rir,irr),rri),iii)))
+c@t4:=tris(real,ts"r"(ts"r"(a,b),c),ts"r"(a,ts"r"(b,c)),ts"r"(ts"r"(b,c),a),assts1(a,b,c),comts"r"(a,ts"r"(b,c))):is"r"(ts"r"(ts"r"(a,b),c),ts"r"(ts"r"(b,c),a))
+t5:=tris(real,pl"r"(pl"r"(a,b),c),pl"r"(c,pl"r"(a,b)),pl"r"(pl"r"(c,a),b),compl"r"(pl"r"(a,b),c),asspl2"r"(c,a,b)):is"r"(pl"r"(pl"r"(a,b),c),pl"r"(pl"r"(c,a),b))
+t6:=tris(real,pl"r"(a,pl"r"(b,c)),pl"r"(pl"r"(b,c),a),pl"r"(b,pl"r"(c,a)),compl"r"(a,pl"r"(b,c)),asspl1"r"(b,c,a)):is"r"(pl"r"(a,pl"r"(b,c)),pl"r"(b,pl"r"(c,a)))
+z@rrr1:=rrr(y,z,x):real
+iir1:=iir(y,z,x):real
+rii1:=rii(y,z,x):real
+iri1:=iri(y,z,x):real
+rri1:=rri(y,z,x):real
+iii1:=iii(y,z,x):real
+rir1:=rir(y,z,x):real
+irr1:=irr(y,z,x):real
+t7:=tris(real,pl"r"(iir,pl"r"(rii,iri)),pl"r"(rii,pl"r"(iri,iir)),pl"r"(iir1,pl"r"(rii1,iri1)),t6(iir,rii,iri),ispl12"r"(rii,iir1,pl"r"(iri,iir),pl"r"(rii1,iri1),t4(re(x),im(y),im(z)),ispl12"r"(iri,rii1,iir,iri1,t4(im(x),re(y),im(z)),t4(im(x),im(y),re(z))))):is"r"(pl"r"(iir,pl"r"(rii,iri)),pl"r"(iir1,pl"r"(rii1,iri1)))
+t8:=tris(real,pl"r"(pl"r"(rir,irr),rri),pl"r"(pl"r"(rri,rir),irr),pl"r"(pl"r"(rir1,irr1),rri1),t5(rir,irr,rri),ispl12"r"(pl"r"(rri,rir),pl"r"(rir1,irr1),irr,rri1,ispl12"r"(rri,rir1,rir,irr1,t4(re(x),re(y),im(z)),t4(re(x),im(y),re(z))),t4(im(x),re(y),re(z)))):is"r"(pl"r"(pl"r"(rir,irr),rri),pl"r"(pl"r"(rir1,irr1),rri1))
+t9:=ismn12"r"(rrr,rrr1,pl"r"(iir,pl"r"(rii,iri)),pl"r"(iir1,pl"r"(rii1,iri1)),t4(re(x),re(y),re(z)),t7):is"r"(mn"r"(rrr,pl"r"(iir,pl"r"(rii,iri))),mn"r"(rrr1,pl"r"(iir1,pl"r"(rii1,iri1))))
+t10:=ismn12"r"(pl"r"(pl"r"(rir,irr),rri),pl"r"(pl"r"(rir1,irr1),rri1),iii,iii1,t8,t4(im(x),im(y),im(z))):is"r"(mn"r"(pl"r"(pl"r"(rir,irr),rri),iii),mn"r"(pl"r"(pl"r"(rir1,irr1),rri1),iii1))
+t11:=tris(cx,ts(ts(x,y),z),pli(mn"r"(rrr,pl"r"(iir,pl"r"(rii,iri))),mn"r"(pl"r"(pl"r"(rir,irr),rri),iii)),pli(mn"r"(rrr1,pl"r"(iir1,pl"r"(rii1,iri1))),mn"r"(pl"r"(pl"r"(rir1,irr1),rri1),iii1)),t3,isrecx12(mn"r"(rrr,pl"r"(iir,pl"r"(rii,iri))),mn"r"(rrr1,pl"r"(iir1,pl"r"(rii1,iri1))),mn"r"(pl"r"(pl"r"(rir,irr),rri),iii),mn"r"(pl"r"(pl"r"(rir1,irr1),rri1),iii1),t9,t10)):is(ts(ts(x,y),z),pli(mn"r"(rrr1,pl"r"(iir1,pl"r"(rii1,iri1))),mn"r"(pl"r"(pl"r"(rir1,irr1),rri1),iii1)))
+t12:=tris(cx,ts(x,ts(y,z)),ts(ts(y,z),x),pli(mn"r"(rrr1,pl"r"(iir1,pl"r"(rii1,iri1))),mn"r"(pl"r"(pl"r"(rir1,irr1),rri1),iii1)),comts(x,ts(y,z)),t3(y,z,x)):is(ts(x,ts(y,z)),pli(mn"r"(rrr1,pl"r"(iir1,pl"r"(rii1,iri1))),mn"r"(pl"r"(pl"r"(rir1,irr1),rri1),iii1)))
+t13:=tris2(cx,ts(ts(x,y),z),ts(x,ts(y,z)),pli(mn"r"(rrr1,pl"r"(iir1,pl"r"(rii1,iri1))),mn"r"(pl"r"(pl"r"(rir1,irr1),rri1),iii1)),t11,t12):is(ts(ts(x,y),z),ts(x,ts(y,z)))
+-3226
+z@satz226:=t13".3226":is(ts(ts(x,y),z),ts(x,ts(y,z)))
+assts1:=satz226:is(ts(ts(x,y),z),ts(x,ts(y,z)))
+assts2:=symis(cx,ts(ts(x,y),z),ts(x,ts(y,z)),assts1):is(ts(x,ts(y,z)),ts(ts(x,y),z))
++3227
+c@t1:=tr3is(real,pl"r"(pl"r"(a,b),c),pl"r"(a,pl"r"(b,c)),pl"r"(a,pl"r"(c,b)),pl"r"(pl"r"(a,c),b),asspl1"r"(a,b,c),ispl2"r"(pl"r"(b,c),pl"r"(c,b),a,compl"r"(b,c)),asspl2"r"(a,c,b)):is"r"(pl"r"(pl"r"(a,b),c),pl"r"(pl"r"(a,c),b))
+d@t2:=tr3is(real,pl"r"(pl"r"(a,b),pl"r"(c,d)),pl"r"(pl"r"(pl"r"(a,b),c),d),pl"r"(pl"r"(pl"r"(a,c),b),d),pl"r"(pl"r"(a,c),pl"r"(b,d)),asspl2"r"(pl"r"(a,b),c,d),ispl1"r"(pl"r"(pl"r"(a,b),c),pl"r"(pl"r"(a,c),b),d,t1),asspl1"r"(pl"r"(a,c),b,d)):is"r"(pl"r"(pl"r"(a,b),pl"r"(c,d)),pl"r"(pl"r"(a,c),pl"r"(b,d)))
+t3:=tris(real,mn"r"(pl"r"(a,b),pl"r"(c,d)),pl"r"(pl"r"(a,b),pl"r"(m0"r"(c),m0"r"(d))),pl"r"(mn"r"(a,c),mn"r"(b,d)),ispl2"r"(m0"r"(pl"r"(c,d)),pl"r"(m0"r"(c),m0"r"(d)),pl"r"(a,b),satz180(c,d)),t2(a,b,m0"r"(c),m0"r"(d))):is"r"(mn"r"(pl"r"(a,b),pl"r"(c,d)),pl"r"(mn"r"(a,c),mn"r"(b,d)))
+z@t4:=tris(real,mn"r"(ts"r"(re(x),pl"r"(re(y),re(z))),ts"r"(im(x),pl"r"(im(y),im(z)))),mn"r"(pl"r"(ts"r"(re(x),re(y)),ts"r"(re(x),re(z))),pl"r"(ts"r"(im(x),im(y)),ts"r"(im(x),im(z)))),pl"r"(rets(x,y),rets(x,z)),ismn12"r"(ts"r"(re(x),pl"r"(re(y),re(z))),pl"r"(ts"r"(re(x),re(y)),ts"r"(re(x),re(z))),ts"r"(im(x),pl"r"(im(y),im(z))),pl"r"(ts"r"(im(x),im(y)),ts"r"(im(x),im(z))),disttp2(re(x),re(y),re(z)),disttp2(im(x),im(y),im(z))),t3(ts"r"(re(x),re(y)),ts"r"(re(x),re(z)),ts"r"(im(x),im(y)),ts"r"(im(x),im(z)))):is"r"(mn"r"(ts"r"(re(x),pl"r"(re(y),re(z))),ts"r"(im(x),pl"r"(im(y),im(z)))),pl"r"(rets(x,y),rets(x,z)))
+t5:=tris(real,pl"r"(ts"r"(re(x),pl"r"(im(y),im(z))),ts"r"(im(x),pl"r"(re(y),re(z)))),pl"r"(pl"r"(ts"r"(re(x),im(y)),ts"r"(re(x),im(z))),pl"r"(ts"r"(im(x),re(y)),ts"r"(im(x),re(z)))),pl"r"(imts(x,y),imts(x,z)),ispl12"r"(ts"r"(re(x),pl"r"(im(y),im(z))),pl"r"(ts"r"(re(x),im(y)),ts"r"(re(x),im(z))),ts"r"(im(x),pl"r"(re(y),re(z))),pl"r"(ts"r"(im(x),re(y)),ts"r"(im(x),re(z))),disttp2(re(x),im(y),im(z)),disttp2(im(x),re(y),re(z))),t2(ts"r"(re(x),im(y)),ts"r"(re(x),im(z)),ts"r"(im(x),re(y)),ts"r"(im(x),re(z)))):is"r"(pl"r"(ts"r"(re(x),pl"r"(im(y),im(z))),ts"r"(im(x),pl"r"(re(y),re(z)))),pl"r"(imts(x,y),imts(x,z)))
+t6:=tr3is(cx,ts(x,pl(y,z)),pli(mn"r"(ts"r"(re(x),pl"r"(re(y),re(z))),ts"r"(im(x),pl"r"(im(y),im(z)))),pl"r"(ts"r"(re(x),pl"r"(im(y),im(z))),ts"r"(im(x),pl"r"(re(y),re(z))))),pli(pl"r"(rets(x,y),rets(x,z)),pl"r"(imts(x,y),imts(x,z))),pl(ts(x,y),ts(x,z)),tsis2a(x,pl"r"(re(y),re(z)),pl"r"(im(y),im(z))),isrecx12(mn"r"(ts"r"(re(x),pl"r"(re(y),re(z))),ts"r"(im(x),pl"r"(im(y),im(z)))),pl"r"(rets(x,y),rets(x,z)),pl"r"(ts"r"(re(x),pl"r"(im(y),im(z))),ts"r"(im(x),pl"r"(re(y),re(z)))),pl"r"(imts(x,y),imts(x,z)),t4,t5),plis12b(rets(x,y),imts(x,y),rets(x,z),imts(x,z))):is(ts(x,pl(y,z)),pl(ts(x,y),ts(x,z)))
+-3227
+satz227:=t6".3227":is(ts(x,pl(y,z)),pl(ts(x,y),ts(x,z)))
+disttp1:=tr3is(cx,ts(pl(x,y),z),ts(z,pl(x,y)),pl(ts(z,x),ts(z,y)),pl(ts(x,z),ts(y,z)),comts(pl(x,y),z),satz227(z,x,y),ispl12(ts(z,x),ts(x,z),ts(z,y),ts(y,z),comts(z,x),comts(z,y))):is(ts(pl(x,y),z),pl(ts(x,z),ts(y,z)))
+disttp2:=satz227:is(ts(x,pl(y,z)),pl(ts(x,y),ts(x,z)))
+distpt1:=symis(cx,ts(pl(x,y),z),pl(ts(x,z),ts(y,z)),disttp1):is(pl(ts(x,z),ts(y,z)),ts(pl(x,y),z))
+distpt2:=symis(cx,ts(x,pl(y,z)),pl(ts(x,y),ts(x,z)),disttp2):is(pl(ts(x,y),ts(x,z)),ts(x,pl(y,z)))
+satz228:=tr4is(cx,ts(x,mn(y,z)),ts(x,pl(y,m0(z))),pl(ts(x,y),ts(x,m0(z))),pl(ts(x,y),m0(ts(x,z))),mn(ts(x,y),ts(x,z)),ists2(mn(y,z),pl(y,m0(z)),x,satz218(y,z)),disttp2(x,y,m0(z)),ispl2(ts(x,m0(z)),m0(ts(x,z)),ts(x,y),satz224b(x,z)),satz218a(ts(x,y),ts(x,z))):is(ts(x,mn(y,z)),mn(ts(x,y),ts(x,z)))
+disttm1:=tr3is(cx,ts(mn(x,y),z),ts(z,mn(x,y)),mn(ts(z,x),ts(z,y)),mn(ts(x,z),ts(y,z)),comts(mn(x,y),z),satz228(z,x,y),ismn12(ts(z,x),ts(x,z),ts(z,y),ts(y,z),comts(z,x),comts(z,y))):is(ts(mn(x,y),z),mn(ts(x,z),ts(y,z)))
+disttm2:=satz228:is(ts(x,mn(y,z)),mn(ts(x,y),ts(x,z)))
+distmt1:=symis(cx,ts(mn(x,y),z),mn(ts(x,z),ts(y,z)),disttm1):is(mn(ts(x,z),ts(y,z)),ts(mn(x,y),z))
+distmt2:=symis(cx,ts(x,mn(y,z)),mn(ts(x,y),ts(x,z)),disttm2):is(mn(ts(x,y),ts(x,z)),ts(x,mn(y,z)))
+y@[n:nis(y,0c)][u1:complex][u2:complex][i:is(ts(y,u1),x)][j:is(ts(y,u2),x)]
++3229
+t1:=tris2(cx,ts(y,u1),ts(y,u2),x,i,j):is(ts(y,u1),ts(y,u2))
+t2:=tris(cx,ts(y,mn(u1,u2)),mn(ts(y,u1),ts(y,u2)),0c,disttm2(y,u1,u2),satz213b(ts(y,u1),ts(y,u2),t1)):is(ts(y,mn(u1,u2)),0c)
+t3:=ore2(is(y,0c),is(mn(u1,u2),0c),satz221c(y,mn(u1,u2),t2),n):is(mn(u1,u2),0c)
+-3229
+satz229b:=satz213a(u1,u2,t3".3229"):is(u1,u2)
++*3229
+n@t4:=pnot0(mod2(y),lemma4(y,n)):nis"r"(mod2(y),0)
+u:=ts(pli(ov(re(y),mod2(y),t4),m0"r"(ov(im(y),mod2(y),t4))),x):complex
+[v:real]
+dd:=ov(v,mod2(y),t4):real
+n@t5:=tr3is(real,m0"r"(ts"r"(im(y),m0"r"(dd(im(y))))),m0"r"(m0"r"(ts"r"(im(y),dd(im(y))))),ts"r"(im(y),dd(im(y))),dd(ts"r"(im(y),im(y))),ism0"r"(ts"r"(im(y),m0"r"(dd(im(y)))),m0"r"(ts"r"(im(y),dd(im(y)))),satz197b(im(y),dd(im(y)))),satz177(ts"r"(im(y),dd(im(y)))),lemma6(im(y),im(y),mod2(y),t4)):is"r"(m0"r"(ts"r"(im(y),m0"r"(dd(im(y))))),dd(ts"r"(im(y),im(y))))
+t6:=tr3is(real,mn"r"(ts"r"(re(y),dd(re(y))),ts"r"(im(y),m0"r"(dd(im(y))))),pl"r"(dd(ts"r"(re(y),re(y))),dd(ts"r"(im(y),im(y)))),dd(mod2(y)),1rl,ispl12"r"(ts"r"(re(y),dd(re(y))),dd(ts"r"(re(y),re(y))),m0"r"(ts"r"(im(y),m0"r"(dd(im(y))))),dd(ts"r"(im(y),im(y))),lemma6(re(y),re(y),mod2(y),t4),t5),lemma7(ts"r"(re(y),re(y)),ts"r"(im(y),im(y)),mod2(y),t4),lemma8(mod2(y),t4)):is"r"(mn"r"(ts"r"(re(y),dd(re(y))),ts"r"(im(y),m0"r"(dd(im(y))))),1rl)
+t7:=tris(real,ts"r"(re(y),m0"r"(dd(im(y)))),ts"r"(m0"r"(re(y)),dd(im(y))),dd(ts"r"(m0"r"(re(y)),im(y))),satz197d(re(y),dd(im(y))),lemma6(m0"r"(re(y)),im(y),mod2(y),t4)):is"r"(ts"r"(re(y),m0"r"(dd(im(y)))),dd(ts"r"(m0"r"(re(y)),im(y))))
+t8:=tris(real,pl"r"(ts"r"(re(y),m0"r"(dd(im(y)))),ts"r"(im(y),dd(re(y)))),pl"r"(dd(ts"r"(m0"r"(re(y)),im(y))),dd(ts"r"(im(y),re(y)))),dd(pl"r"(ts"r"(m0"r"(re(y)),im(y)),ts"r"(im(y),re(y)))),ispl12"r"(ts"r"(re(y),m0"r"(dd(im(y)))),dd(ts"r"(m0"r"(re(y)),im(y))),ts"r"(im(y),dd(re(y))),dd(ts"r"(im(y),re(y))),t7,lemma6(im(y),re(y),mod2(y),t4)),lemma7(ts"r"(m0"r"(re(y)),im(y)),ts"r"(im(y),re(y)),mod2(y),t4)):is"r"(pl"r"(ts"r"(re(y),m0"r"(dd(im(y)))),ts"r"(im(y),dd(re(y)))),dd(pl"r"(ts"r"(m0"r"(re(y)),im(y)),ts"r"(im(y),re(y)))))
+t9:=tr3is(real,pl"r"(ts"r"(m0"r"(re(y)),im(y)),ts"r"(im(y),re(y))),pl"r"(m0"r"(ts"r"(re(y),im(y))),ts"r"(im(y),re(y))),mn"r"(ts"r"(im(y),re(y)),ts"r"(re(y),im(y))),0,ispl1"r"(ts"r"(m0"r"(re(y)),im(y)),m0"r"(ts"r"(re(y),im(y))),ts"r"(im(y),re(y)),satz197a(re(y),im(y))),compl"r"(m0"r"(ts"r"(re(y),im(y))),ts"r"(im(y),re(y))),satz182e(ts"r"(im(y),re(y)),ts"r"(re(y),im(y)),comts"r"(im(y),re(y)))):is"r"(pl"r"(ts"r"(m0"r"(re(y)),im(y)),ts"r"(im(y),re(y))),0)
+t10:=tr3is(real,pl"r"(ts"r"(re(y),m0"r"(dd(im(y)))),ts"r"(im(y),dd(re(y)))),dd(pl"r"(ts"r"(m0"r"(re(y)),im(y)),ts"r"(im(y),re(y)))),dd(0),0,t8,isf(real,real,[t:real]dd(t),pl"r"(ts"r"(m0"r"(re(y)),im(y)),ts"r"(im(y),re(y))),0,t9),lemma9(mod2(y),t4)):is"r"(pl"r"(ts"r"(re(y),m0"r"(dd(im(y)))),ts"r"(im(y),dd(re(y)))),0)
+t11:=tris(cx,ts(y,pli(dd(re(y)),m0"r"(dd(im(y))))),pli(mn"r"(ts"r"(re(y),dd(re(y))),ts"r"(im(y),m0"r"(dd(im(y))))),pl"r"(ts"r"(re(y),m0"r"(dd(im(y)))),ts"r"(im(y),dd(re(y))))),1c,tsis2a(y,dd(re(y)),m0"r"(dd(im(y)))),isrecx12(mn"r"(ts"r"(re(y),dd(re(y))),ts"r"(im(y),m0"r"(dd(im(y))))),1rl,pl"r"(ts"r"(re(y),m0"r"(dd(im(y)))),ts"r"(im(y),dd(re(y)))),0,t6,t10)):is(ts(y,pli(dd(re(y)),m0"r"(dd(im(y))))),1c)
+t12:=tr3is(cx,ts(y,u),ts(ts(y,pli(dd(re(y)),m0"r"(dd(im(y))))),x),ts(1c,x),x,assts2(y,pli(dd(re(y)),m0"r"(dd(im(y)))),x),ists1(ts(y,pli(dd(re(y)),m0"r"(dd(im(y))))),1c,x,t11),satz222b(x)):is(ts(y,u),x)
+-3229
+n@satz229a:=somei(cx,[t:cx]is(ts(y,t),x),u".3229",t12".3229"):some([t:cx]is(ts(y,t),x))
+satz229:=onei(cx,[t:cx]is(ts(y,t),x),[t:cx][u:cx][v:is(ts(y,t),x)][w:is(ts(y,u),x)]satz229b(t,u,v,w),satz229a):one([t:cx]is(ts(y,t),x))
+ov:=ind(cx,[t:cx]is(ts(y,t),x),satz229):complex
+satz229c:=oneax(cx,[t:cx]is(ts(y,t),x),satz229):is(ts(y,ov(x,y,n)),x)
+satz229d:=symis(cx,ts(y,ov(x,y,n)),x,satz229c):is(x,ts(y,ov(x,y,n)))
+satz229e:=tris(cx,ts(ov(x,y,n),y),ts(y,ov(x,y,n)),x,comts(ov(x,y,n),y),satz229c):is(ts(ov(x,y,n),y),x)
+satz229f:=symis(cx,ts(ov(x,y,n),y),x,satz229e):is(x,ts(ov(x,y,n),y))
+y@[u:complex][n:nis(y,0c)][i:is(ts(y,u),x)]
+satz229g:=satz229b(n,u,ov(x,y,n),i,satz229c(n)):is(u,ov(x,y,n))
+satz229h:=symis(cx,u,ov(x,y,n),satz229g):is(ov(x,y,n),u)
+n@[i:is(ts(u,y),x)]
+satz229j:=satz229g(tris(cx,ts(y,u),ts(u,y),x,comts(y,u),i)):is(u,ov(x,y,n))
+satz229k:=symis(cx,u,ov(x,y,n),satz229j):is(ov(x,y,n),u)
+z@[i:is(x,y)][n:nis(z,0c)]
+isov1:=isf(cx,cx,[t:cx]ov(t,z,n),x,y,i):is(ov(x,z,n),ov(y,z,n))
+i@[n:nis(x,0c)][o:nis(y,0c)]
+isov2:=satz229h(z,x,ov(z,y,o),n,tris(cx,ts(x,ov(z,y,o)),ts(y,ov(z,y,o)),z,ists1(x,y,ov(z,y,o),i),satz229c(z,y,o))):is(ov(z,x,n),ov(z,y,o))
+z@[u:complex][i:is(x,y)][j:is(z,u)][n:nis(z,0c)][o:nis(u,0c)]
+isov12:=tris(cx,ov(x,z,n),ov(y,z,n),ov(y,u,o),isov1(x,y,z,i,n),isov2(z,u,y,j,n,o)):is(ov(x,z,n),ov(y,u,o))
+y@satz230:=tris(cx,pl(mn(x,y),y),pl(y,mn(x,y)),x,compl(mn(x,y),y),satz212h(x,y)):is(pl(mn(x,y),y),x)
+satz231:=satz212e(pl(x,y),y,x,compl(y,x)):is(mn(pl(x,y),y),x)
+satz232:=satz212e(x,mn(x,y),y,satz230):is(mn(x,mn(x,y)),y)
++4233
+z@t1:=tr3is(cx,pl(pl(y,z),mn(mn(x,y),z)),pl(mn(mn(x,y),z),pl(y,z)),pl(mn(mn(x,y),z),pl(z,y)),pl(pl(mn(mn(x,y),z),z),y),compl(pl(y,z),mn(mn(x,y),z)),ispl2(pl(y,z),pl(z,y),mn(mn(x,y),z),compl(y,z)),asspl2(mn(mn(x,y),z),z,y)):is(pl(pl(y,z),mn(mn(x,y),z)),pl(pl(mn(mn(x,y),z),z),y))
+t2:=tr3is(cx,pl(pl(y,z),mn(mn(x,y),z)),pl(pl(mn(mn(x,y),z),z),y),pl(mn(x,y),y),x,t1,ispl1(pl(mn(mn(x,y),z),z),mn(x,y),y,satz230(mn(x,y),z)),satz230(x,y)):is(pl(pl(y,z),mn(mn(x,y),z)),x)
+-4233
+z@satz233:=satz212d(x,pl(y,z),mn(mn(x,y),z),t2".4233"):is(mn(mn(x,y),z),mn(x,pl(y,z)))
+satz234:=satz212g(pl(x,y),z,pl(x,mn(y,z)),tris(cx,pl(pl(x,mn(y,z)),z),pl(x,pl(mn(y,z),z)),pl(x,y),asspl1(x,mn(y,z),z),ispl2(pl(mn(y,z),z),y,x,satz230(y,z)))):is(mn(pl(x,y),z),pl(x,mn(y,z)))
+satz234a:=symis(cx,mn(pl(x,y),z),pl(x,mn(y,z)),satz234):is(pl(x,mn(y,z)),mn(pl(x,y),z))
+satz234b:=tr3is(cx,mn(pl(x,y),z),mn(pl(y,x),z),pl(y,mn(x,z)),pl(mn(x,z),y),ismn1(pl(x,y),pl(y,x),z,compl(x,y)),satz234(y,x,z),compl(y,mn(x,z))):is(mn(pl(x,y),z),pl(mn(x,z),y))
+satz234c:=symis(cx,mn(pl(x,y),z),pl(mn(x,z),y),satz234b):is(pl(mn(x,z),y),mn(pl(x,y),z))
+satz235:=satz212f(x,mn(y,z),pl(mn(x,y),z),tr3is(cx,pl(pl(mn(x,y),z),mn(y,z)),pl(mn(x,y),pl(z,mn(y,z))),pl(mn(x,y),y),x,asspl1(mn(x,y),z,mn(y,z)),ispl2(pl(z,mn(y,z)),y,mn(x,y),satz212h(y,z)),satz230(x,y))):is(pl(mn(x,y),z),mn(x,mn(y,z)))
+satz235a:=symis(cx,pl(mn(x,y),z),mn(x,mn(y,z)),satz235):is(mn(x,mn(y,z)),pl(mn(x,y),z))
+satz235b:=tris(cx,mn(x,mn(y,z)),pl(mn(x,y),z),mn(pl(x,z),y),satz235a,satz234c(x,z,y)):is(mn(x,mn(y,z)),mn(pl(x,z),y))
+satz235c:=tris(cx,mn(x,mn(y,z)),mn(pl(x,z),y),mn(pl(z,x),y),satz235b,ismn1(pl(x,z),pl(z,x),y,compl(x,z))):is(mn(x,mn(y,z)),mn(pl(z,x),y))
+satz236:=satz212g(pl(x,z),pl(y,z),mn(x,y),tris(cx,pl(mn(x,y),pl(y,z)),pl(pl(mn(x,y),y),z),pl(x,z),asspl2(mn(x,y),y,z),ispl1(pl(mn(x,y),y),x,z,satz230(x,y)))):is(mn(pl(x,z),pl(y,z)),mn(x,y))
+satz236a:=tris(cx,mn(pl(z,x),pl(z,y)),mn(pl(x,z),pl(y,z)),mn(x,y),ismn12(pl(z,x),pl(x,z),pl(z,y),pl(y,z),compl(z,x),compl(z,y)),satz236):is(mn(pl(z,x),pl(z,y)),mn(x,y))
+[u:complex]
++4237
+t1:=tr3is(cx,pl(mn(z,u),pl(u,y)),pl(pl(mn(z,u),u),y),pl(z,y),pl(y,z),asspl2(mn(z,u),u,y),ispl1(pl(mn(z,u),u),z,y,satz230(z,u)),compl(z,y)):is(pl(mn(z,u),pl(u,y)),pl(y,z))
+t2:=tr3is(cx,pl(pl(mn(x,y),mn(z,u)),pl(y,u)),pl(pl(mn(x,y),mn(z,u)),pl(u,y)),pl(mn(x,y),pl(mn(z,u),pl(u,y))),pl(mn(x,y),pl(y,z)),ispl2(pl(y,u),pl(u,y),pl(mn(x,y),mn(z,u)),compl(y,u)),asspl1(mn(x,y),mn(z,u),pl(u,y)),ispl2(pl(mn(z,u),pl(u,y)),pl(y,z),mn(x,y),t1)):is(pl(pl(mn(x,y),mn(z,u)),pl(y,u)),pl(mn(x,y),pl(y,z)))
+t3:=tr3is(cx,pl(pl(mn(x,y),mn(z,u)),pl(y,u)),pl(mn(x,y),pl(y,z)),pl(pl(mn(x,y),y),z),pl(x,z),t2,asspl2(mn(x,y),y,z),ispl1(pl(mn(x,y),y),x,z,satz230(x,y))):is(pl(pl(mn(x,y),mn(z,u)),pl(y,u)),pl(x,z))
+-4237
+satz237:=satz212f(pl(x,z),pl(y,u),pl(mn(x,y),mn(z,u)),t3".4237"):is(pl(mn(x,y),mn(z,u)),mn(pl(x,z),pl(y,u)))
++4238
+t1:=tris(cx,pl(pl(x,u),z),pl(x,pl(u,z)),pl(x,pl(z,u)),asspl1(x,u,z),ispl2(pl(u,z),pl(z,u),x,compl(u,z))):is(pl(pl(x,u),z),pl(x,pl(z,u)))
+t2:=tr3is(cx,pl(mn(pl(x,u),pl(y,z)),mn(z,u)),mn(pl(pl(x,u),z),pl(pl(y,z),u)),mn(pl(x,pl(z,u)),pl(y,pl(z,u))),mn(x,y),satz237(pl(x,u),pl(y,z),z,u),ismn12(pl(pl(x,u),z),pl(x,pl(z,u)),pl(pl(y,z),u),pl(y,pl(z,u)),t1,asspl1(y,z,u)),satz236(x,y,pl(z,u))):is(pl(mn(pl(x,u),pl(y,z)),mn(z,u)),mn(x,y))
+-4238
+satz238:=satz212g(mn(x,y),mn(z,u),mn(pl(x,u),pl(y,z)),t2".4238"):is(mn(mn(x,y),mn(z,u)),mn(pl(x,u),pl(y,z)))
+[i:is(mn(x,y),mn(z,u))]
++4239
+t1:=tris1(cx,mn(pl(x,u),pl(y,z)),0c,mn(mn(x,y),mn(z,u)),satz238,satz213b(mn(x,y),mn(z,u),i)):is(mn(pl(x,u),pl(y,z)),0c)
+-4239
+satz239a:=satz213a(pl(x,u),pl(y,z),t1".4239"):is(pl(x,u),pl(y,z))
+u@[i:is(pl(x,u),pl(y,z))]
++*4239
+i@t2:=tris(cx,mn(mn(x,y),mn(z,u)),mn(pl(x,u),pl(y,z)),0c,satz238,satz213b(pl(x,u),pl(y,z),i)):is(mn(mn(x,y),mn(z,u)),0c)
+-4239
+i@satz239b:=satz213a(mn(x,y),mn(z,u),t2".4239"):is(mn(x,y),mn(z,u))
+y@[n:nis(y,0c)]
+satz240:=tris(cx,ts(ov(x,y,n),y),ts(y,ov(x,y,n)),x,comts(ov(x,y,n),y),satz229c(x,y,n)):is(ts(ov(x,y,n),y),x)
+satz241:=satz229h(ts(x,y),y,x,n,comts(y,x)):is(ov(ts(x,y),y,n),x)
+y@[n:nis(x,0c)][o:nis(y,0c)]
+lemma6:=th3"l.imp"(is(ov(x,y,o),0c),is(x,0c),n,[t:is(ov(x,y,o),0c)]tris1(cx,x,0c,ts(y,ov(x,y,o)),satz229c(x,y,o),satz221b(y,ov(x,y,o),t))):nis(ov(x,y,o),0c)
+satz242:=satz229h(x,ov(x,y,o),y,lemma6,satz240(o)):is(ov(x,ov(x,y,o),lemma6),y)
+z@[n:nis(y,0c)][o:nis(z,0c)]
++5243
+t1:=tr3is(cx,ts(ts(y,z),ov(ov(x,y,n),z,o)),ts(ov(ov(x,y,n),z,o),ts(y,z)),ts(ov(ov(x,y,n),z,o),ts(z,y)),ts(ts(ov(ov(x,y,n),z,o),z),y),comts(ts(y,z),ov(ov(x,y,n),z,o)),ists2(ts(y,z),ts(z,y),ov(ov(x,y,n),z,o),comts(y,z)),assts2(ov(ov(x,y,n),z,o),z,y)):is(ts(ts(y,z),ov(ov(x,y,n),z,o)),ts(ts(ov(ov(x,y,n),z,o),z),y))
+t2:=tr3is(cx,ts(ts(y,z),ov(ov(x,y,n),z,o)),ts(ts(ov(ov(x,y,n),z,o),z),y),ts(ov(x,y,n),y),x,t1,ists1(ts(ov(ov(x,y,n),z,o),z),ov(x,y,n),y,satz240(ov(x,y,n),z,o)),satz240(x,y,n)):is(ts(ts(y,z),ov(ov(x,y,n),z,o)),x)
+-5243
+satz243:=satz229g(x,ts(y,z),ov(ov(x,y,n),z,o),satz221d(y,z,n,o),t2".5243"):is(ov(ov(x,y,n),z,o),ov(x,ts(y,z),satz221d(y,z,n,o)))
+z@[n:nis(z,0c)]
+satz244:=satz229k(ts(x,y),z,ts(x,ov(y,z,n)),n,tris(cx,ts(ts(x,ov(y,z,n)),z),ts(x,ts(ov(y,z,n),z)),ts(x,y),assts1(x,ov(y,z,n),z),ists2(ts(ov(y,z,n),z),y,x,satz240(y,z,n)))):is(ov(ts(x,y),z,n),ts(x,ov(y,z,n)))
+satz244a:=symis(cx,ov(ts(x,y),z,n),ts(x,ov(y,z,n)),satz244):is(ts(x,ov(y,z,n)),ov(ts(x,y),z,n))
+satz244b:=tr3is(cx,ov(ts(x,y),z,n),ov(ts(y,x),z,n),ts(y,ov(x,z,n)),ts(ov(x,z,n),y),isov1(ts(x,y),ts(y,x),z,comts(x,y),n),satz244(y,x,z,n),comts(y,ov(x,z,n))):is(ov(ts(x,y),z,n),ts(ov(x,z,n),y))
+satz244c:=symis(cx,ov(ts(x,y),z,n),ts(ov(x,z,n),y),satz244b):is(ts(ov(x,z,n),y),ov(ts(x,y),z,n))
+z@[n:nis(y,0c)][o:nis(z,0c)]
+satz245:=satz229j(x,ov(y,z,o),ts(ov(x,y,n),z),lemma6(y,z,n,o),tr3is(cx,ts(ts(ov(x,y,n),z),ov(y,z,o)),ts(ov(x,y,n),ts(z,ov(y,z,o))),ts(ov(x,y,n),y),x,assts1(ov(x,y,n),z,ov(y,z,o)),ists2(ts(z,ov(y,z,o)),y,ov(x,y,n),satz229c(y,z,o)),satz240(x,y,n))):is(ts(ov(x,y,n),z),ov(x,ov(y,z,o),lemma6(y,z,n,o)))
+satz245a:=symis(cx,ts(ov(x,y,n),z),ov(x,ov(y,z,o),lemma6(y,z,n,o)),satz245):is(ov(x,ov(y,z,o),lemma6(y,z,n,o)),ts(ov(x,y,n),z))
+satz245b:=tris(cx,ov(x,ov(y,z,o),lemma6(y,z,n,o)),ts(ov(x,y,n),z),ov(ts(x,z),y,n),satz245a,satz244c(x,z,y,n)):is(ov(x,ov(y,z,o),lemma6(y,z,n,o)),ov(ts(x,z),y,n))
+satz245c:=tris(cx,ov(x,ov(y,z,o),lemma6(y,z,n,o)),ov(ts(x,z),y,n),ov(ts(z,x),y,n),satz245b,isov1(ts(x,z),ts(z,x),y,comts(x,z),n)):is(ov(x,ov(y,z,o),lemma6(y,z,n,o)),ov(ts(z,x),y,n))
+satz246:=satz229k(ts(x,z),ts(y,z),ov(x,y,n),satz221d(y,z,n,o),tris(cx,ts(ov(x,y,n),ts(y,z)),ts(ts(ov(x,y,n),y),z),ts(x,z),assts2(ov(x,y,n),y,z),ists1(ts(ov(x,y,n),y),x,z,satz240(x,y,n)))):is(ov(ts(x,z),ts(y,z),satz221d(y,z,n,o)),ov(x,y,n))
+satz246a:=tris(cx,ov(ts(z,x),ts(z,y),satz221d(z,y,o,n)),ov(ts(x,z),ts(y,z),satz221d(y,z,n,o)),ov(x,y,n),isov12(ts(z,x),ts(x,z),ts(z,y),ts(y,z),comts(z,x),comts(z,y),satz221d(z,y,o,n),satz221d(y,z,n,o)),satz246):is(ov(ts(z,x),ts(z,y),satz221d(z,y,o,n)),ov(x,y,n))
+z@[u:complex][n:nis(y,0c)][o:nis(u,0c)]
++5247
+t1:=tr3is(cx,ts(ov(z,u,o),ts(u,y)),ts(ts(ov(z,u,o),u),y),ts(z,y),ts(y,z),assts2(ov(z,u,o),u,y),ists1(ts(ov(z,u,o),u),z,y,satz240(z,u,o)),comts(z,y)):is(ts(ov(z,u,o),ts(u,y)),ts(y,z))
+t2:=tr3is(cx,ts(ts(ov(x,y,n),ov(z,u,o)),ts(y,u)),ts(ts(ov(x,y,n),ov(z,u,o)),ts(u,y)),ts(ov(x,y,n),ts(ov(z,u,o),ts(u,y))),ts(ov(x,y,n),ts(y,z)),ists2(ts(y,u),ts(u,y),ts(ov(x,y,n),ov(z,u,o)),comts(y,u)),assts1(ov(x,y,n),ov(z,u,o),ts(u,y)),ists2(ts(ov(z,u,o),ts(u,y)),ts(y,z),ov(x,y,n),t1)):is(ts(ts(ov(x,y,n),ov(z,u,o)),ts(y,u)),ts(ov(x,y,n),ts(y,z)))
+t3:=tr3is(cx,ts(ts(ov(x,y,n),ov(z,u,o)),ts(y,u)),ts(ov(x,y,n),ts(y,z)),ts(ts(ov(x,y,n),y),z),ts(x,z),t2,assts2(ov(x,y,n),y,z),ists1(ts(ov(x,y,n),y),x,z,satz240(x,y,n))):is(ts(ts(ov(x,y,n),ov(z,u,o)),ts(y,u)),ts(x,z))
+-5247
+satz247:=satz229j(ts(x,z),ts(y,u),ts(ov(x,y,n),ov(z,u,o)),satz221d(y,u,n,o),t3".5247"):is(ts(ov(x,y,n),ov(z,u,o)),ov(ts(x,z),ts(y,u),satz221d(y,u,n,o)))
+u@[n:nis(y,0c)][o:nis(z,0c)][p:nis(u,0c)]
++5248
+t1:=tris(cx,ts(ts(x,u),z),ts(x,ts(u,z)),ts(x,ts(z,u)),assts1(x,u,z),ists2(ts(u,z),ts(z,u),x,comts(u,z))):is(ts(ts(x,u),z),ts(x,ts(z,u)))
+t2:=tr3is(cx,ts(ov(ts(x,u),ts(y,z),satz221d(y,z,n,o)),ov(z,u,p)),ov(ts(ts(x,u),z),ts(ts(y,z),u),satz221d(ts(y,z),u,satz221d(y,z,n,o),p)),ov(ts(x,ts(z,u)),ts(y,ts(z,u)),satz221d(y,ts(z,u),n,satz221d(z,u,o,p))),ov(x,y,n),satz247(ts(x,u),ts(y,z),z,u,satz221d(y,z,n,o),p),isov12(ts(ts(x,u),z),ts(x,ts(z,u)),ts(ts(y,z),u),ts(y,ts(z,u)),t1,assts1(y,z,u),satz221d(ts(y,z),u,satz221d(y,z,n,o),p),satz221d(y,ts(z,u),n,satz221d(z,u,o,p))),satz246(x,y,ts(z,u),n,satz221d(z,u,o,p))):is(ts(ov(ts(x,u),ts(y,z),satz221d(y,z,n,o)),ov(z,u,p)),ov(x,y,n))
+-5248
+satz248:=satz229k(ov(x,y,n),ov(z,u,p),ov(ts(x,u),ts(y,z),satz221d(y,z,n,o)),lemma6(z,u,o,p),t2".5248"):is(ov(ov(x,y,n),ov(z,u,p),lemma6(z,u,o,p)),ov(ts(x,u),ts(y,z),satz221d(y,z,n,o)))
+x@[n:nis(x,0c)]
+satz249:=satz229h(0c,x,0c,n,satz221b(x,0c,refis(cx,0c))):is(ov(0c,x,n),0c)
+satz250:=satz229h(x,x,1c,n,satz222(x)):is(ov(x,x,n),1c)
+y@[n:nis(y,0c)][i:is(x,y)]
+satz251a:=tris(cx,ov(x,y,n),ov(x,x,th2"e.notis"(cx,y,0c,x,n,i)),1c,isov2(y,x,x,symis(cx,x,y,i),n,th2"e.notis"(cx,y,0c,x,n,i)),satz250(x,th2"e.notis"(cx,y,0c,x,n,i))):is(ov(x,y,n),1c)
+n@[i:is(ov(x,y,n),1c)]
+satz251b:=tr3is(cx,x,ts(y,ov(x,y,n)),ts(y,1c),y,satz229d(x,y,n),ists2(ov(x,y,n),1c,y,i),satz222(y)):is(x,y)
+u@[n:nis(y,0c)][o:nis(u,0c)][i:is(ov(x,y,n),ov(z,u,o))]
++5252
+[j:is(z,0c)]
+t1:=tr3is(cx,ov(x,y,n),ov(z,u,o),ov(0c,u,o),0c,i,isov1(z,0c,u,j,o),satz249(u,o)):is(ov(x,y,n),0c)
+t2:=tris(cx,x,ts(y,ov(x,y,n)),0c,satz229d(x,y,n),satz221b(y,ov(x,y,n),t1)):is(x,0c)
+t3:=tris2(cx,ts(x,u),ts(y,z),0c,satz221a(x,u,t2),satz221b(y,z,j)):is(ts(x,u),ts(y,z))
+i@[p:nis(z,0c)]
+t4:=tris1(cx,ov(ts(x,u),ts(y,z),satz221d(y,z,n,p)),1c,ov(ov(x,y,n),ov(z,u,o),lemma6(z,u,p,o)),satz248(x,y,z,u,n,p,o),satz251a(ov(x,y,n),ov(z,u,o),lemma6(z,u,p,o),i)):is(ov(ts(x,u),ts(y,z),satz221d(y,z,n,p)),1c)
+t5:=satz251b(ts(x,u),ts(y,z),satz221d(y,z,n,p),t4):is(ts(x,u),ts(y,z))
+-5252
+satz252a:=th1"l.imp"(is(z,0c),is(ts(x,u),ts(y,z)),[t:is(z,0c)]t3".5252"(t),[t:nis(z,0c)]t5".5252"(t)):is(ts(x,u),ts(y,z))
+o@[i:is(ts(x,u),ts(y,z))]
++*5252
+i@[j:is(z,0c)]
+t6:=tris(cx,ts(x,u),ts(y,z),0c,i,satz221b(y,z,j)):is(ts(x,u),0c)
+t7:=ore1(is(x,0c),is(u,0c),satz221c(x,u,t6),o):is(x,0c)
+t8:=tris2(cx,ov(x,y,n),ov(z,u,o),0c,tris(cx,ov(x,y,n),ov(0c,y,n),0c,isov1(x,0c,y,t7,n),satz249(y,n)),tris(cx,ov(z,u,o),ov(0c,u,o),0c,isov1(z,0c,u,j,o),satz249(u,o))):is(ov(x,y,n),ov(z,u,o))
+i@[p:nis(z,0c)]
+t9:=tris(cx,ov(ov(x,y,n),ov(z,u,o),lemma6(z,u,p,o)),ov(ts(x,u),ts(y,z),satz221d(y,z,n,p)),1c,satz248(x,y,z,u,n,p,o),satz251a(ts(x,u),ts(y,z),satz221d(y,z,n,p),i)):is(ov(ov(x,y,n),ov(z,u,o),lemma6(z,u,p,o)),1c)
+t10:=satz251b(ov(x,y,n),ov(z,u,o),lemma6(z,u,p,o),t9):is(ov(x,y,n),ov(z,u,o))
+-5252
+i@satz252b:=th1"l.imp"(is(z,0c),is(ov(x,y,n),ov(z,u,o)),[t:is(z,0c)]t8".5252"(t),[t:nis(z,0c)]t10".5252"(t)):is(ov(x,y,n),ov(z,u,o))
+z@[n:nis(y,0c)]
+satz253:=satz229g(pl(x,z),y,pl(ov(x,y,n),ov(z,y,n)),n,tris(cx,ts(y,pl(ov(x,y,n),ov(z,y,n))),pl(ts(y,ov(x,y,n)),ts(y,ov(z,y,n))),pl(x,z),disttp2(y,ov(x,y,n),ov(z,y,n)),ispl12(ts(y,ov(x,y,n)),x,ts(y,ov(z,y,n)),z,satz229c(x,y,n),satz229c(z,y,n)))):is(pl(ov(x,y,n),ov(z,y,n)),ov(pl(x,z),y,n))
+z@[n:nis(z,0c)]
+distop:=symis(cx,pl(ov(x,z,n),ov(y,z,n)),ov(pl(x,y),z,n),satz253(x,z,y,n)):is(ov(pl(x,y),z,n),pl(ov(x,z,n),ov(y,z,n)))
+distpo:=satz253(x,z,y,n):is(pl(ov(x,z,n),ov(y,z,n)),ov(pl(x,y),z,n))
+u@[n:nis(y,0c)][o:nis(u,0c)]
+satz254:=tris1(cx,pl(ov(x,y,n),ov(z,u,o)),ov(pl(ts(x,u),ts(y,z)),ts(y,u),satz221d(y,u,n,o)),pl(ov(ts(x,u),ts(y,u),satz221d(y,u,n,o)),ov(ts(y,z),ts(y,u),satz221d(y,u,n,o))),ispl12(ov(ts(x,u),ts(y,u),satz221d(y,u,n,o)),ov(x,y,n),ov(ts(y,z),ts(y,u),satz221d(y,u,n,o)),ov(z,u,o),satz246(x,y,u,n,o),satz246a(z,u,y,o,n)),satz253(ts(x,u),ts(y,u),ts(y,z),satz221d(y,u,n,o))):is(pl(ov(x,y,n),ov(z,u,o)),ov(pl(ts(x,u),ts(y,z)),ts(y,u),satz221d(y,u,n,o)))
+z@[n:nis(y,0c)]
+satz255:=satz229g(mn(x,z),y,mn(ov(x,y,n),ov(z,y,n)),n,tris(cx,ts(y,mn(ov(x,y,n),ov(z,y,n))),mn(ts(y,ov(x,y,n)),ts(y,ov(z,y,n))),mn(x,z),disttm2(y,ov(x,y,n),ov(z,y,n)),ismn12(ts(y,ov(x,y,n)),x,ts(y,ov(z,y,n)),z,satz229c(x,y,n),satz229c(z,y,n)))):is(mn(ov(x,y,n),ov(z,y,n)),ov(mn(x,z),y,n))
+z@[n:nis(z,0c)]
+distom:=symis(cx,mn(ov(x,z,n),ov(y,z,n)),ov(mn(x,y),z,n),satz255(x,z,y,n)):is(ov(mn(x,y),z,n),mn(ov(x,z,n),ov(y,z,n)))
+distmo:=satz255(x,z,y,n):is(mn(ov(x,z,n),ov(y,z,n)),ov(mn(x,y),z,n))
+u@[n:nis(y,0c)][o:nis(u,0c)]
+satz256:=tris1(cx,mn(ov(x,y,n),ov(z,u,o)),ov(mn(ts(x,u),ts(y,z)),ts(y,u),satz221d(y,u,n,o)),mn(ov(ts(x,u),ts(y,u),satz221d(y,u,n,o)),ov(ts(y,z),ts(y,u),satz221d(y,u,n,o))),ismn12(ov(ts(x,u),ts(y,u),satz221d(y,u,n,o)),ov(x,y,n),ov(ts(y,z),ts(y,u),satz221d(y,u,n,o)),ov(z,u,o),satz246(x,y,u,n,o),satz246a(z,u,y,o,n)),satz255(ts(x,u),ts(y,u),ts(y,z),satz221d(y,u,n,o))):is(mn(ov(x,y,n),ov(z,u,o)),ov(mn(ts(x,u),ts(y,z)),ts(y,u),satz221d(y,u,n,o)))
+x@conj:=pli(re(x),m0"r"(im(x))):complex
+b@conjisa:=isrecx12(re(pli(a,b)),a,m0"r"(im(pli(a,b))),m0"r"(b),reis(a,b),ism0"r"(im(pli(a,b)),b,imis(a,b))):is(conj(pli(a,b)),pli(a,m0"r"(b)))
+conjisb:=symis(cx,conj(pli(a,b)),pli(a,m0"r"(b)),conjisa):is(pli(a,m0"r"(b)),conj(pli(a,b)))
+y@[i:is(x,y)]
+isconj:=isf(cx,cx,[t:cx]conj(t),x,y,i):is(conj(x),conj(y))
+x@satz257:=tr3is(cx,conj(conj(x)),pli(re(x),m0"r"(m0"r"(im(x)))),pli(re(x),im(x)),x,conjisa(re(x),m0"r"(im(x))),isrecx2(m0"r"(m0"r"(im(x))),im(x),re(x),satz177(im(x))),pliis(x)):is(conj(conj(x)),x)
+[i:is(x,0c)]
+satz258a:=tr3is(cx,conj(x),conj(0c),pli(0,m0"r"(0)),0c,isconj(x,0c,i),conjisa(0,0),isrecx2(m0"r"(0),0,0,satz176b(0,refis(real,0)))):is(conj(x),0c)
+x@[i:is(conj(x),0c)]
++6258
+t1:=tris(real,re(x),re(conj(x)),0,isre(re(x),m0"r"(im(x))),lemma1(conj(x),i)):is"r"(re(x),0)
+t2:=satz176e(im(x),tris(real,m0"r"(im(x)),im(conj(x)),0,isim(re(x),m0"r"(im(x))),lemma2(conj(x),i))):is"r"(im(x),0)
+-6258
+satz258b:=tris(cx,x,pli(re(x),im(x)),0c,ispli(x),isrecx12(re(x),0,im(x),0,t1".6258",t2".6258")):is(x,0c)
++*6258
+i@anders:=tris1(cx,x,0c,conj(conj(x)),satz257,satz258a(conj(x),i)):is(x,0c)
+-6258
+x@[n:nis(x,0c)]
+satz258c:=th3"l.imp"(is(conj(x),0c),is(x,0c),n,[t:is(conj(x),0c)]satz258b(t)):nis(conj(x),0c)
+x@[i:is(conj(x),x)]
++6259
+t1:=tris(real,m0"r"(im(x)),im(conj(x)),im(x),isim(re(x),m0"r"(im(x))),isceim(conj(x),x,i)):is"r"(m0"r"(im(x)),im(x))
+-6259
+satz259a:=lemma10(im(x),symis(real,m0"r"(im(x)),im(x),t1".6259")):is"r"(im(x),0)
+x@[i:is"r"(im(x),0)]
+satz259b:=tris(cx,conj(x),pli(re(x),im(x)),x,isrecx2(m0"r"(im(x)),im(x),re(x),tris2(real,m0"r"(im(x)),im(x),0,satz176b(im(x),i),i)),pliis(x)):is(conj(x),x)
+x@[i:is(x,conj(x))]
+satz269c:=satz259a(x,symis(cx,x,conj(x),i)):is"r"(im(x),0)
+x@[i:is"r"(im(x),0)]
+satz269d:=symis(cx,conj(x),x,satz259b(i)):is(x,conj(x))
+y@satz260:=tr3is(cx,conj(pl(x,y)),pli(pl"r"(re(x),re(y)),m0"r"(pl"r"(im(x),im(y)))),pli(pl"r"(re(x),re(y)),pl"r"(m0"r"(im(x)),m0"r"(im(y)))),pl(conj(x),conj(y)),conjisa(pl"r"(re(x),re(y)),pl"r"(im(x),im(y))),isrecx2(m0"r"(pl"r"(im(x),im(y))),pl"r"(m0"r"(im(x)),m0"r"(im(y))),pl"r"(re(x),re(y)),satz180(im(x),im(y))),plis12b(re(x),m0"r"(im(x)),re(y),m0"r"(im(y)))):is(conj(pl(x,y)),pl(conj(x),conj(y)))
+satz260a:=symis(cx,conj(pl(x,y)),pl(conj(x),conj(y)),satz260):is(pl(conj(x),conj(y)),conj(pl(x,y)))
++6261
+t1:=tris(real,m0"r"(imts(x,y)),pl"r"(m0"r"(ts"r"(re(x),im(y))),m0"r"(ts"r"(im(x),re(y)))),pl"r"(ts"r"(re(x),m0"r"(im(y))),ts"r"(m0"r"(im(x)),re(y))),satz180(ts"r"(re(x),im(y)),ts"r"(im(x),re(y))),ispl12"r"(m0"r"(ts"r"(re(x),im(y))),ts"r"(re(x),m0"r"(im(y))),m0"r"(ts"r"(im(x),re(y))),ts"r"(m0"r"(im(x)),re(y)),satz197f(re(x),im(y)),satz197e(im(x),re(y)))):is"r"(m0"r"(imts(x,y)),pl"r"(ts"r"(re(x),m0"r"(im(y))),ts"r"(m0"r"(im(x)),re(y))))
+-6261
+satz261:=tr3is(cx,conj(ts(x,y)),pli(rets(x,y),m0"r"(imts(x,y))),pli(mn"r"(ts"r"(re(x),re(y)),ts"r"(m0"r"(im(x)),m0"r"(im(y)))),pl"r"(ts"r"(re(x),m0"r"(im(y))),ts"r"(m0"r"(im(x)),re(y)))),ts(conj(x),conj(y)),conjisa(rets(x,y),imts(x,y)),isrecx12(rets(x,y),mn"r"(ts"r"(re(x),re(y)),ts"r"(m0"r"(im(x)),m0"r"(im(y)))),m0"r"(imts(x,y)),pl"r"(ts"r"(re(x),m0"r"(im(y))),ts"r"(m0"r"(im(x)),re(y))),ismn2"r"(ts"r"(im(x),im(y)),ts"r"(m0"r"(im(x)),m0"r"(im(y))),ts"r"(re(x),re(y)),satz198a(im(x),im(y))),t1".6261"),tsis12b(re(x),m0"r"(im(x)),re(y),m0"r"(im(y)))):is(conj(ts(x,y)),ts(conj(x),conj(y)))
+satz261a:=symis(cx,conj(ts(x,y)),ts(conj(x),conj(y)),satz261):is(ts(conj(x),conj(y)),conj(ts(x,y)))
++6262
+t1:=symis(cx,pl(mn(x,y),y),x,satz230(x,y)):is(x,pl(mn(x,y),y))
+t2:=tris(cx,conj(x),conj(pl(mn(x,y),y)),pl(conj(mn(x,y)),conj(y)),isconj(x,pl(mn(x,y),y),t1),satz260(mn(x,y),y)):is(conj(x),pl(conj(mn(x,y)),conj(y)))
+-6262
+satz262:=satz212f(conj(x),conj(y),conj(mn(x,y)),symis(cx,conj(x),pl(conj(mn(x,y)),conj(y)),t2".6262")):is(conj(mn(x,y)),mn(conj(x),conj(y)))
+satz262a:=symis(cx,conj(mn(x,y)),mn(conj(x),conj(y)),satz262):is(mn(conj(x),conj(y)),conj(mn(x,y)))
+[n:nis(y,0c)]
++6263
+t1:=satz229f(x,y,n):is(x,ts(ov(x,y,n),y))
+t2:=isconj(x,ts(ov(x,y,n),y),t1):is(conj(x),conj(ts(ov(x,y,n),y)))
+t3:=satz261(ov(x,y,n),y):is(conj(ts(ov(x,y,n),y)),ts(conj(ov(x,y,n)),conj(y)))
+t4:=tris(cx,conj(x),conj(ts(ov(x,y,n),y)),ts(conj(ov(x,y,n)),conj(y)),t2,t3):is(conj(x),ts(conj(ov(x,y,n)),conj(y)))
+t5:=satz258c(y,n):nis(conj(y),0c)
+-6263
+satz263:=satz229j(conj(x),conj(y),conj(ov(x,y,n)),t5".6263",symis(cx,conj(x),ts(conj(ov(x,y,n)),conj(y)),t4".6263")):is(conj(ov(x,y,n)),ov(conj(x),conj(y),satz258c(y,n)))
+satz263a:=symis(cx,conj(ov(x,y,n)),ov(conj(x),conj(y),satz258c(y,n)),satz263):is(ov(conj(x),conj(y),satz258c(y,n)),conj(ov(x,y,n)))
+x@mod:=sqrt(mod2(x),lemma5(x)):real
+y@[i:is(x,y)]
+ismod:=isf(cx,real,[t:cx]mod(t),x,y,i):is"r"(mod(x),mod(y))
+x@[n:nis(x,0c)]
+satz264a:=sqrtnot0(mod2(x),lemma5(x),pnot0(mod2(x),lemma4(x,n))):pos(mod(x))
+x@[i:is(x,0c)]
+satz264b:=sqrt0(mod2(x),lemma5(x),lemma3(x,i)):is"r"(mod(x),0)
+x@satz264c:=thsqrt1a(mod2(x),lemma5(x)):not(neg(mod(x)))
+satz264d:=satz167f(mod(x),0,th3"l.imp"(less(mod(x),0),neg(mod(x)),satz264c,[t:less(mod(x),0)]satz169d(mod(x),t))):moreis(mod(x),0)
++7265
+t1:=symis(real,ts"r"(mod(x),mod(x)),mod2(x),thsqrt1b(mod2(x),lemma5(x))):is"r"(mod2(x),ts"r"(mod(x),mod(x)))
+t2:=tris(real,pl"r"(ts"r"(re(x),re(x)),0),ts"r"(re(x),re(x)),ts"r"(abs(re(x)),abs(re(x))),pl02(ts"r"(re(x),re(x)),0,refis(real,0)),lemma12"r"(re(x))):is"r"(pl"r"(ts"r"(re(x),re(x)),0),ts"r"(abs(re(x)),abs(re(x))))
+t3:=satz191(ts"r"(re(x),re(x)),ts"r"(re(x),re(x)),ts"r"(im(x),im(x)),0,moreisi2(ts"r"(re(x),re(x)),ts"r"(re(x),re(x)),refis(real,ts"r"(re(x),re(x)))),lemma11"r"(im(x))):moreis(mod2(x),pl"r"(ts"r"(re(x),re(x)),0))
+t4:=ismoreis12(mod2(x),ts"r"(mod(x),mod(x)),pl"r"(ts"r"(re(x),re(x)),0),ts"r"(abs(re(x)),abs(re(x))),t1,t2,t3):moreis(ts"r"(mod(x),mod(x)),ts"r"(abs(re(x)),abs(re(x))))
+t5:=tris(real,pl"r"(0,ts"r"(im(x),im(x))),ts"r"(im(x),im(x)),ts"r"(abs(im(x)),abs(im(x))),pl01(0,ts"r"(im(x),im(x)),refis(real,0)),lemma12"r"(im(x))):is"r"(pl"r"(0,ts"r"(im(x),im(x))),ts"r"(abs(im(x)),abs(im(x))))
+t6:=satz191(ts"r"(re(x),re(x)),0,ts"r"(im(x),im(x)),ts"r"(im(x),im(x)),lemma11"r"(re(x)),moreisi2(ts"r"(im(x),im(x)),ts"r"(im(x),im(x)),refis(real,ts"r"(im(x),im(x))))):moreis(mod2(x),pl"r"(0,ts"r"(im(x),im(x))))
+t7:=ismoreis12(mod2(x),ts"r"(mod(x),mod(x)),pl"r"(0,ts"r"(im(x),im(x))),ts"r"(abs(im(x)),abs(im(x))),t1,t5,t6):moreis(ts"r"(mod(x),mod(x)),ts"r"(abs(im(x)),abs(im(x))))
+@[r:real][s:real][m:moreis(ts"r"(r,r),ts"r"(s,s))][n:moreis(r,0)][l:less(r,s)]
+t8:=lemma2"r"(r,s,l):more(s,r)
+t9:=satz169b(s,satz172d(s,r,0,t8,n)):pos(s)
+[o:more(r,0)]
+t10:=trmore(ts"r"(s,s),ts"r"(r,s),ts"r"(r,r),satz203a(s,r,s,t8,t9),satz203d(s,r,r,t8,satz169b(r,o))):more(ts"r"(s,s),ts"r"(r,r))
+l@[i:is"r"(r,0)]
+t11:=ismore2(0,ts"r"(r,r),ts"r"(s,s),symis(real,ts"r"(r,r),0,ts01(r,r,i)),satz169a(ts"r"(s,s),possq(s,pnot0(s,t9)))):more(ts"r"(s,s),ts"r"(r,r))
+l@t12:=lemma1"r"(ts"r"(s,s),ts"r"(r,r),orapp(more(r,0),is"r"(r,0),more(ts"r"(s,s),ts"r"(r,r)),n,[t:more(r,0)]t10(t),[t:is"r"(r,0)]t11(t))):less(ts"r"(r,r),ts"r"(s,s))
+n@t13:=satz167f(r,s,[t:less(r,s)]<t12(t)>satz167c(ts"r"(r,r),ts"r"(s,s),m)):moreis(r,s)
+-7265
+satz265a:=t13".7265"(mod(x),abs(re(x)),t4".7265",satz264d(x)):moreis(mod(x),abs(re(x)))
+satz265b:=t13".7265"(mod(x),abs(im(x)),t7".7265",satz264d(x)):moreis(mod(x),abs(im(x)))
+@[r:real][s:real][i:is(ts(pli(r,0),pli(r,0)),ts(pli(s,0),pli(s,0)))][n:not(neg(r))][o:not(neg(s))]
++7266
+@[t:real]
+t1:=pl02(ts"r"(t,t),m0"r"(ts"r"(0,0)),satz176b(ts"r"(0,0),ts01(0,0,refis(real,0)))):is"r"(mn"r"(ts"r"(t,t),ts"r"(0,0)),ts"r"(t,t))
+t2:=tris(real,pl"r"(ts"r"(t,0),ts"r"(0,t)),ts"r"(t,0),0,pl02(ts"r"(t,0),ts"r"(0,t),ts01(0,t,refis(real,0))),ts02(t,0,refis(real,0))):is"r"(pl"r"(ts"r"(t,0),ts"r"(0,t)),0)
+t3:=tris(cx,ts(pli(t,0),pli(t,0)),pli(mn"r"(ts"r"(t,t),ts"r"(0,0)),pl"r"(ts"r"(t,0),ts"r"(0,t))),pli(ts"r"(t,t),0),tsis12a(t,0,t,0),isrecx12(mn"r"(ts"r"(t,t),ts"r"(0,0)),ts"r"(t,t),pl"r"(ts"r"(t,0),ts"r"(0,t)),0,t1,t2)):is(ts(pli(t,0),pli(t,0)),pli(ts"r"(t,t),0))
+o@t4:=tr3is(cx,pli(ts"r"(r,r),0),ts(pli(r,0),pli(r,0)),ts(pli(s,0),pli(s,0)),pli(ts"r"(s,s),0),symis(cx,ts(pli(r,0),pli(r,0)),pli(ts"r"(r,r),0),t3(r)),i,t3(s)):is(pli(ts"r"(r,r),0),pli(ts"r"(s,s),0))
+t5:=tr3is(real,ts"r"(r,r),re(pli(ts"r"(r,r),0)),re(pli(ts"r"(s,s),0)),ts"r"(s,s),isre(ts"r"(r,r),0),iscere(pli(ts"r"(r,r),0),pli(ts"r"(s,s),0),t4),reis(ts"r"(s,s),0)):is"r"(ts"r"(r,r),ts"r"(s,s))
+t6:=andi(not(neg(r)),is"r"(ts"r"(r,r),ts"r"(s,s)),n,t5):and(not(neg(r)),is"r"(ts"r"(r,r),ts"r"(s,s)))
+t7:=andi(not(neg(s)),is"r"(ts"r"(s,s),ts"r"(s,s)),o,refis(real,ts"r"(s,s))):and(not(neg(s)),is"r"(ts"r"(s,s),ts"r"(s,s)))
+-7266
+satz266:=satzr161b(ts"r"(s,s),r,s,t6".7266",t7".7266"):is"r"(r,s)
++7267
+x@t1:=tris(cx,ts(pli(mod(x),0),pli(mod(x),0)),pli(ts"r"(mod(x),mod(x)),0),pli(mod2(x),0),t3"c.7266"(mod(x)),isrecx1(ts"r"(mod(x),mod(x)),mod2(x),0,thsqrt1b(mod2(x),lemma5(x)))):is(ts(pli(mod(x),0),pli(mod(x),0)),pli(mod2(x),0))
+t2:=ispl2"r"(m0"r"(ts"r"(im(x),m0"r"(im(x)))),ts"r"(im(x),im(x)),ts"r"(re(x),re(x)),tris(real,m0"r"(ts"r"(im(x),m0"r"(im(x)))),ts"r"(m0"r"(im(x)),m0"r"(im(x))),ts"r"(im(x),im(x)),satz197e(im(x),m0"r"(im(x))),satz198(im(x),im(x)))):is"r"(mn"r"(ts"r"(re(x),re(x)),ts"r"(im(x),m0"r"(im(x)))),mod2(x))
+t3:=tris(real,pl"r"(ts"r"(re(x),m0"r"(im(x))),ts"r"(im(x),re(x))),pl"r"(m0"r"(ts"r"(re(x),im(x))),ts"r"(re(x),im(x))),0,ispl12"r"(ts"r"(re(x),m0"r"(im(x))),m0"r"(ts"r"(re(x),im(x))),ts"r"(im(x),re(x)),ts"r"(re(x),im(x)),satz197b(re(x),im(x)),comts"r"(im(x),re(x))),satz179a(ts"r"(re(x),im(x)))):is"r"(pl"r"(ts"r"(re(x),m0"r"(im(x))),ts"r"(im(x),re(x))),0)
+t4:=tris(cx,ts(x,conj(x)),pli(mn"r"(ts"r"(re(x),re(x)),ts"r"(im(x),m0"r"(im(x)))),pl"r"(ts"r"(re(x),m0"r"(im(x))),ts"r"(im(x),re(x)))),pli(mod2(x),0),tsis2a(x,re(x),m0"r"(im(x))),isrecx12(mn"r"(ts"r"(re(x),re(x)),ts"r"(im(x),m0"r"(im(x)))),mod2(x),pl"r"(ts"r"(re(x),m0"r"(im(x))),ts"r"(im(x),re(x))),0,t2,t3)):is(ts(x,conj(x)),pli(mod2(x),0))
+-7267
+x@satz267:=tris2(cx,ts(pli(mod(x),0),pli(mod(x),0)),ts(x,conj(x)),pli(mod2(x),0),t1".7267",t4".7267"):is(ts(pli(mod(x),0),pli(mod(x),0)),ts(x,conj(x)))
+satz267a:=symis(cx,ts(pli(mod(x),0),pli(mod(x),0)),ts(x,conj(x)),satz267):is(ts(x,conj(x)),ts(pli(mod(x),0),pli(mod(x),0)))
++7268
+z@t1:=tr3is(cx,ts(x,ts(y,z)),ts(ts(x,y),z),ts(ts(y,x),z),ts(y,ts(x,z)),assts2(x,y,z),ists1(ts(x,y),ts(y,x),z,comts(x,y)),assts1(y,x,z)):is(ts(x,ts(y,z)),ts(y,ts(x,z)))
+[u:complex]
+t2:=tr3is(cx,ts(ts(x,y),ts(z,u)),ts(x,ts(y,ts(z,u))),ts(x,ts(z,ts(y,u))),ts(ts(x,z),ts(y,u)),assts1(x,y,ts(z,u)),ists2(ts(y,ts(z,u)),ts(z,ts(y,u)),x,t1(y,z,u)),assts2(x,z,ts(y,u))):is(ts(ts(x,y),ts(z,u)),ts(ts(x,z),ts(y,u)))
+y@t3:=tr3is(cx,ts(pli(mod(ts(x,y)),0),pli(mod(ts(x,y)),0)),ts(ts(x,y),conj(ts(x,y))),ts(ts(x,y),ts(conj(x),conj(y))),ts(ts(x,conj(x)),ts(y,conj(y))),satz267(ts(x,y)),ists2(conj(ts(x,y)),ts(conj(x),conj(y)),ts(x,y),satz261(x,y)),t2(x,y,conj(x),conj(y))):is(ts(pli(mod(ts(x,y)),0),pli(mod(ts(x,y)),0)),ts(ts(x,conj(x)),ts(y,conj(y))))
+t4:=tr3is(cx,ts(pli(mod(ts(x,y)),0),pli(mod(ts(x,y)),0)),ts(ts(x,conj(x)),ts(y,conj(y))),ts(ts(pli(mod(x),0),pli(mod(x),0)),ts(pli(mod(y),0),pli(mod(y),0))),ts(ts(pli(mod(x),0),pli(mod(y),0)),ts(pli(mod(x),0),pli(mod(y),0))),t3,ists12(ts(x,conj(x)),ts(pli(mod(x),0),pli(mod(x),0)),ts(y,conj(y)),ts(pli(mod(y),0),pli(mod(y),0)),satz267a(x),satz267a(y)),t2(pli(mod(x),0),pli(mod(x),0),pli(mod(y),0),pli(mod(y),0))):is(ts(pli(mod(ts(x,y)),0),pli(mod(ts(x,y)),0)),ts(ts(pli(mod(x),0),pli(mod(y),0)),ts(pli(mod(x),0),pli(mod(y),0))))
+@[r:real][s:real]
+t5:=pl02(ts"r"(r,s),m0"r"(ts"r"(0,0)),satz176b(ts"r"(0,0),ts01(0,0,refis(real,0)))):is"r"(mn"r"(ts"r"(r,s),ts"r"(0,0)),ts"r"(r,s))
+t6:=tris(real,pl"r"(ts"r"(r,0),ts"r"(0,s)),ts"r"(r,0),0,pl02(ts"r"(r,0),ts"r"(0,s),ts01(0,s,refis(real,0))),ts02(r,0,refis(real,0))):is"r"(pl"r"(ts"r"(r,0),ts"r"(0,s)),0)
+t7:=tris(cx,ts(pli(r,0),pli(s,0)),pli(mn"r"(ts"r"(r,s),ts"r"(0,0)),pl"r"(ts"r"(r,0),ts"r"(0,s))),pli(ts"r"(r,s),0),tsis12a(r,0,s,0),isrecx12(mn"r"(ts"r"(r,s),ts"r"(0,0)),ts"r"(r,s),pl"r"(ts"r"(r,0),ts"r"(0,s)),0,t5,t6)):is(ts(pli(r,0),pli(s,0)),pli(ts"r"(r,s),0))
+y@t8:=tris(cx,ts(pli(mod(ts(x,y)),0),pli(mod(ts(x,y)),0)),ts(ts(pli(mod(x),0),pli(mod(y),0)),ts(pli(mod(x),0),pli(mod(y),0))),ts(pli(ts"r"(mod(x),mod(y)),0),pli(ts"r"(mod(x),mod(y)),0)),t4,ists12(ts(pli(mod(x),0),pli(mod(y),0)),pli(ts"r"(mod(x),mod(y)),0),ts(pli(mod(x),0),pli(mod(y),0)),pli(ts"r"(mod(x),mod(y)),0),t7(mod(x),mod(y)),t7(mod(x),mod(y)))):is(ts(pli(mod(ts(x,y)),0),pli(mod(ts(x,y)),0)),ts(pli(ts"r"(mod(x),mod(y)),0),pli(ts"r"(mod(x),mod(y)),0)))
+[n:neg(ts"r"(mod(x),mod(y)))]
+t9:=orapp(and(pos(mod(x)),neg(mod(y))),and(neg(mod(x)),pos(mod(y))),con,satz196h(mod(x),mod(y),n),[t:and(pos(mod(x)),neg(mod(y)))]<ande2(pos(mod(x)),neg(mod(y)),t)>satz264c(y),[t:and(neg(mod(x)),pos(mod(y)))]<ande1(neg(mod(x)),pos(mod(y)),t)>satz264c(x)):con
+-7268
+y@satz268:=satz266(mod(ts(x,y)),ts"r"(mod(x),mod(y)),t8".7268",satz264c(ts(x,y)),[t:neg(ts"r"(mod(x),mod(y)))]t9".7268"(t)):is"r"(mod(ts(x,y)),ts"r"(mod(x),mod(y)))
+satz268a:=symis(real,mod(ts(x,y)),ts"r"(mod(x),mod(y)),satz268):is"r"(ts"r"(mod(x),mod(y)),mod(ts(x,y)))
+[n:nis(y,0c)]
++7269
+t1:=pnot0(mod(y),satz264a(y,n)):nis"r"(mod(y),0)
+t2:=tris1(real,ts"r"(mod(ov(x,y,n)),mod(y)),mod(x),mod(ts(ov(x,y,n),y)),satz268(ov(x,y,n),y),ismod(ts(ov(x,y,n),y),x,satz240(x,y,n))):is"r"(ts"r"(mod(ov(x,y,n)),mod(y)),mod(x))
+t3:=satz204g(mod(x),mod(y),mod(ov(x,y,n)),t1,tris(real,ts"r"(mod(y),mod(ov(x,y,n))),ts"r"(mod(ov(x,y,n)),mod(y)),mod(x),comts"r"(mod(y),mod(ov(x,y,n))),t2)):is"r"(mod(ov(x,y,n)),ov"r"(mod(x),mod(y),t1))
+-7269
+satz269:=t3".7269":is"r"(mod(ov(x,y,n)),ov"r"(mod(x),mod(y),pnot0(mod(y),satz264a(y,n))))
+y@[i:is(pl(x,y),1c)]
++7270
+@[r:real]
+t1:=th1"l.imp"(neg(r),moreis(abs(r),r),[t:neg(r)]moreisi1(abs(r),r,trmore(abs(r),0,r,satz169a(abs(r),satz166b(r,t)),lemma2"r"(r,0,satz169c(r,t)))),[t:not(neg(r))]moreisi2(abs(r),r,absnn(r,t))):moreis(abs(r),r)
+x@t2:=trmoreis(mod(x),abs(re(x)),re(x),satz265a(x),t1(re(x))):moreis(mod(x),re(x))
+i@t3:=tr3is(real,pl"r"(re(x),re(y)),re(pl(x,y)),re(1c),1rl,isre(pl"r"(re(x),re(y)),pl"r"(im(x),im(y))),iscere(pl(x,y),1c,i),reis(1rl,0)):is"r"(pl"r"(re(x),re(y)),1rl)
+-7270
+satz270:=ismoreis2(pl"r"(re(x),re(y)),1rl,pl"r"(mod(x),mod(y)),t3".7270",satz191(mod(x),re(x),mod(y),re(y),t2".7270",t2".7270"(y))):moreis(pl"r"(mod(x),mod(y)),1rl)
++7271
+y@[i:is(pl(x,y),0c)]
+t1:=satz264b(pl(x,y),i):is"r"(mod(pl(x,y)),0)
+t2:=ismoreis2(pl"r"(0,0),mod(pl(x,y)),pl"r"(mod(x),mod(y)),tris2(real,pl"r"(0,0),mod(pl(x,y)),0,pl01(0,0,refis(real,0)),t1),satz191(mod(x),0,mod(y),0,satz264d(x),satz264d(y))):moreis(pl"r"(mod(x),mod(y)),mod(pl(x,y)))
+y@[n:nis(pl(x,y),0c)]
+t3:=pnot0(mod(pl(x,y)),satz264a(pl(x,y),n)):nis"r"(mod(pl(x,y)),0)
+t4:=tris(cx,pl(ov(x,pl(x,y),n),ov(y,pl(x,y),n)),ov(pl(x,y),pl(x,y),n),1c,satz253(x,pl(x,y),y,n),satz250(pl(x,y),n)):is(pl(ov(x,pl(x,y),n),ov(y,pl(x,y),n)),1c)
+t5:=satz270(ov(x,pl(x,y),n),ov(y,pl(x,y),n),t4):moreis(pl"r"(mod(ov(x,pl(x,y),n)),mod(ov(y,pl(x,y),n))),1rl)
+fx:=ov"r"(mod(x),mod(pl(x,y)),t3):real
+fy:=ov"r"(mod(y),mod(pl(x,y)),t3):real
+t6:=ismoreis1(pl"r"(mod(ov(x,pl(x,y),n)),mod(ov(y,pl(x,y),n))),pl"r"(fx,fy),1rl,ispl12"r"(mod(ov(x,pl(x,y),n)),fx,mod(ov(y,pl(x,y),n)),fy,satz269(x,pl(x,y),n),satz269(y,pl(x,y),n)),t5):moreis(pl"r"(fx,fy),1rl)
+prl:=ts"r"(pl"r"(fx,fy),mod(pl(x,y))):real
+prr:=ts"r"(1rl,mod(pl(x,y))):real
+t7:=orapp(more(pl"r"(fx,fy),1rl),is"r"(pl"r"(fx,fy),1rl),moreis(prl,prr),t6,[t:more(pl"r"(fx,fy),1rl)]moreisi1(prl,prr,satz203a(pl"r"(fx,fy),1rl,mod(pl(x,y)),t,satz264a(pl(x,y),n))),[t:is"r"(pl"r"(fx,fy),1rl)]moreisi2(prl,prr,ists1"r"(pl"r"(fx,fy),1rl,mod(pl(x,y)),t))):moreis(prl,prr)
+t8:=tris(real,prl,pl"r"(ts"r"(fx,mod(pl(x,y))),ts"r"(fy,mod(pl(x,y)))),pl"r"(mod(x),mod(y)),disttp1"r"(fx,fy,mod(pl(x,y))),ispl12"r"(ts"r"(fx,mod(pl(x,y))),mod(x),ts"r"(fy,mod(pl(x,y))),mod(y),satz204e(mod(x),mod(pl(x,y)),t3),satz204e(mod(y),mod(pl(x,y)),t3))):is"r"(prl,pl"r"(mod(x),mod(y)))
+t9:=satz195b(mod(pl(x,y))):is"r"(prr,mod(pl(x,y)))
+t10:=ismoreis12(prl,pl"r"(mod(x),mod(y)),prr,mod(pl(x,y)),t8,t9,t7):moreis(pl"r"(mod(x),mod(y)),mod(pl(x,y)))
+y@t11:=th1"l.imp"(is(pl(x,y),0c),moreis(pl"r"(mod(x),mod(y)),mod(pl(x,y))),[t:is(pl(x,y),0c)]t2(t),[t:nis(pl(x,y),0c)]t10(t)):moreis(pl"r"(mod(x),mod(y)),mod(pl(x,y)))
+-7271
+y@satz271:=satz168a(pl"r"(mod(x),mod(y)),mod(pl(x,y)),t11".7271"):lessis(mod(pl(x,y)),pl"r"(mod(x),mod(y)))
+satz271a:=t11".7271":moreis(pl"r"(mod(x),mod(y)),mod(pl(x,y)))
++7272
+x@t1:=tris(real,re(m0(x)),re(pli(m0"r"(re(x)),m0"r"(im(x)))),m0"r"(re(x)),iscere(m0(x),pli(m0"r"(re(x)),m0"r"(im(x))),satz214(x)),reis(m0"r"(re(x)),m0"r"(im(x)))):is"r"(re(m0(x)),m0"r"(re(x)))
+t2:=tris(real,ts"r"(re(m0(x)),re(m0(x))),ts"r"(m0"r"(re(x)),m0"r"(re(x))),ts"r"(re(x),re(x)),ists12"r"(re(m0(x)),m0"r"(re(x)),re(m0(x)),m0"r"(re(x)),t1,t1),satz198(re(x),re(x))):is"r"(ts"r"(re(m0(x)),re(m0(x))),ts"r"(re(x),re(x)))
+t3:=tris(real,im(m0(x)),im(pli(m0"r"(re(x)),m0"r"(im(x)))),m0"r"(im(x)),isceim(m0(x),pli(m0"r"(re(x)),m0"r"(im(x))),satz214(x)),imis(m0"r"(re(x)),m0"r"(im(x)))):is"r"(im(m0(x)),m0"r"(im(x)))
+t4:=tris(real,ts"r"(im(m0(x)),im(m0(x))),ts"r"(m0"r"(im(x)),m0"r"(im(x))),ts"r"(im(x),im(x)),ists12"r"(im(m0(x)),m0"r"(im(x)),im(m0(x)),m0"r"(im(x)),t3,t3),satz198(im(x),im(x))):is"r"(ts"r"(im(m0(x)),im(m0(x))),ts"r"(im(x),im(x)))
+t5:=ispl12"r"(ts"r"(re(m0(x)),re(m0(x))),ts"r"(re(x),re(x)),ts"r"(im(m0(x)),im(m0(x))),ts"r"(im(x),im(x)),t2,t4):is"r"(mod2(m0(x)),mod2(x))
+-7272
+x@satz272:=issqrt(mod2(m0(x)),mod2(x),lemma5(m0(x)),lemma5(x),t5".7272"):is"r"(mod(m0(x)),mod(x))
+satz272a:=symis(real,mod(m0(x)),mod(x),satz272):is"r"(mod(x),mod(m0(x)))
++7273
+y@sum:=pl"r"(mod(y),mod(mn(x,y))):real
+t1:=islessis1(mod(pl(y,mn(x,y))),mod(x),sum,ismod(pl(y,mn(x,y)),x,satz212h(x,y)),satz271(y,mn(x,y))):lessis(mod(x),sum)
+t2:=th9"l.or"(less(mod(x),sum),is"r"(mod(x),sum),less(mn"r"(mod(x),mod(y)),mn"r"(sum,mod(y))),is"r"(mn"r"(mod(x),mod(y)),mn"r"(sum,mod(y))),t1,[t:less(mod(x),sum)]satz188f(mod(x),sum,m0"r"(mod(y)),t),[t:is"r"(mod(x),sum)]ismn1"r"(mod(x),sum,mod(y),t)):lessis(mn"r"(mod(x),mod(y)),mn"r"(sum,mod(y)))
+t3:=tris(real,mn"r"(sum,mod(y)),mn"r"(pl"r"(mod(mn(x,y)),mod(y)),mod(y)),mod(mn(x,y)),ismn1"r"(sum,pl"r"(mod(mn(x,y)),mod(y)),mod(y),compl"r"(mod(y),mod(mn(x,y)))),mnpl(mod(mn(x,y)),mod(y))):is"r"(mn"r"(sum,mod(y)),mod(mn(x,y)))
+t4:=satz168b(mn"r"(mod(x),mod(y)),mod(mn(x,y)),islessis2(mn"r"(sum,mod(y)),mod(mn(x,y)),mn"r"(mod(x),mod(y)),t3,t2)):moreis(mod(mn(x,y)),mn"r"(mod(x),mod(y)))
+t5:=ismoreis12(mod(mn(y,x)),mod(mn(x,y)),mn"r"(mod(y),mod(x)),m0"r"(mn"r"(mod(x),mod(y))),tris1(real,mod(mn(y,x)),mod(mn(x,y)),mod(m0(mn(x,y))),ismod(m0(mn(x,y)),mn(y,x),satz219(x,y)),satz272(mn(x,y))),satz181a(mod(y),mod(x)),t4(y,x)):moreis(mod(mn(x,y)),m0"r"(mn"r"(mod(x),mod(y))))
+@[r:real][s:real][m:moreis(r,s)][n:moreis(r,m0"r"(s))]
+r@t6:=th9"l.or"(neg(r),not(neg(r)),is"r"(abs(r),m0"r"(r)),is"r"(abs(r),r),th6"l.or"(neg(r)),[t:neg(r)]absn(r,t),[t:not(neg(r))]absnn(r,t)):or(is"r"(abs(r),m0"r"(r)),is"r"(abs(r),r))
+n@t7:=orapp(is"r"(abs(s),m0"r"(s)),is"r"(abs(s),s),moreis(r,abs(s)),t6(s),[t:is"r"(abs(s),m0"r"(s))]ismoreis2(m0"r"(s),abs(s),r,symis(real,abs(s),m0"r"(s),t),n),[t:is"r"(abs(s),s)]ismoreis2(s,abs(s),r,symis(real,abs(s),s,t),m)):moreis(r,abs(s))
+-7273
+y@satz273:=t7".7273"(mod(mn(x,y)),mn"r"(mod(x),mod(y)),t4".7273",t5".7273"):moreis(mod(mn(x,y)),abs(mn"r"(mod(x),mod(y))))
+-c
+-r
+-rp
+-rt
+@[x:nat][y:nat]
++8274
+prop1:=some"l"([t:1to(x)]1to(y),[f:[t:1to(x)]1to(y)]bijective(1to(x),1to(y),f)):'prop'
+x@prop2:=all([y:nat]imp(less(x,y),not(prop1(y)))):'prop'
+@[y:nat][l:less(1,y)][f:[t:1to(1)]1to(y)]
+1y:=1out(y):1to(y)
+yy:=xout(y):1to(y)
+[i:is"e"(1to(y),1y,yy)]
+t1:=isoutne(y,1,satz24a(y),y,lessisi3(y),i):is(1,y)
+f@t2:=ec3e31(is(1,y),more(1,y),less(1,y),satz10b(1,y),l):nis(1,y)
+t3:=th3"l.imp"(is"e"(1to(y),1y,yy),is(1,y),t2,[t:is"e"(1to(y),1y,yy)]t1(t)):not(is"e"(1to(y),1y,yy))
+[u:1to(1)]
+t4:=isf(1to(1),1to(y),f,u,1o,th1"n.singlet"(u)):is"e"(1to(y),<u>f,<1o>f)
+f@[i:is"e"(1to(y),<1o>f,1y)][u:1to(1)]
+t5:=th2"e.notis"(1to(y),1y,yy,<u>f,t3,tris(1to(y),<u>f,<1o>f,1y,t4(u),i)):not(is"e"(1to(y),<u>f,yy))
+i@t6:=th5"l.some"(1to(1),[u:1to(1)]is"e"(1to(y),yy,<u>f),[u:1to(1)]symnotis(1to(y),<u>f,yy,t5(u))):not(image(1to(1),1to(y),f,yy))
+t7:=th1"l.all"(1to(y),[u:1to(y)]image(1to(1),1to(y),f,u),yy,t6):not(surjective(1to(1),1to(y),f))
+f@[n:not(is"e"(1to(y),<1o>f,1y))][u:1to(1)]
+t8:=th2"e.notis"(1to(y),<1o>f,1y,<u>f,n,t4(u)):not(is"e"(1to(y),<u>f,1y))
+n@t9:=th5"l.some"(1to(1),[u:1to(1)]is"e"(1to(y),1y,<u>f),[u:1to(1)]symnotis(1to(y),<u>f,1y,t8(u))):not(image(1to(1),1to(y),f,1y))
+t10:=th1"l.all"(1to(y),[u:1to(y)]image(1to(1),1to(y),f,u),1y,t9):not(surjective(1to(1),1to(y),f))
+f@t11:=th1"l.imp"(is"e"(1to(y),<1o>f,1y),not(surjective(1to(1),1to(y),f)),[t:is"e"(1to(y),<1o>f,1y)]t7(t),[t:not(is"e"(1to(y),<1o>f,1y))]t10(t)):not(surjective(1to(1),1to(y),f))
+t12:=th2"l.and"(injective(1to(1),1to(y),f),surjective(1to(1),1to(y),f),t11):not(bijective(1to(1),1to(y),f))
+l@t13:=th5"l.some"([t:1to(1)]1to(y),[f:[t:1to(1)]1to(y)]bijective(1to(1),1to(y),f),[f:[t:1to(1)]1to(y)]t12(f)):not(prop1(1,y))
+@t14:=[y:nat][t:less(1,y)]t13(y,t):prop2(1)
+x@[p:prop2(x)][y:nat][l:less(<x>suc,y)]
+x@xs:=<x>suc:nat
+l@xxs:=xout(xs):1to(<x>suc)
+yy1:=xout(y):1to(y)
+t15:=trless(1,<x>suc,y,satz24c(x),l):less(1,y)
+ym1:=mn(y,1,t15):nat
+t16:=isless12(<x>suc,pl(x,1),y,pl(ym1,1),satz4e(x),th1c"n.mn"(y,1,t15),l):less(pl(x,1),pl(ym1,1))
+t17:=satz20c(x,ym1,1,t16):less(x,ym1)
+t18:=isless2(pl(ym1,1),y,ym1,th1d"n.mn"(y,1,t15),satz18a(ym1,1)):less(ym1,y)
+[f:[t:1to(xs)]1to(y)][b:bijective(1to(xs),1to(y),f)]
+t19:=ande1(injective(1to(xs),1to(y),f),surjective(1to(xs),1to(y),f),b):injective(1to(xs),1to(y),f)
+t20:=ande2(injective(1to(xs),1to(y),f),surjective(1to(xs),1to(y),f),b):surjective(1to(xs),1to(y),f)
+[i:is"e"(1to(y),<xxs>f,yy1)][u:1to(x)]
+u1:=inn(x,u):nat
+t21:=satz16a(u1,x,xs,1top(x,u),satz18c(x)):less(u1,xs)
+t22:=ec3e31(is(u1,xs),more(u1,xs),less(u1,xs),satz10b(u1,xs),t21):nis(u1,xs)
+t23:=lessisi1(u1,xs,t21):lessis(u1,xs)
+u2:=outn(xs,u1,t23):1to(xs)
+t24:=th3"l.imp"(is"e"(1to(xs),u2,xxs),is(u1,xs),t22,[t:is"e"(1to(xs),u2,xxs)]isoutne(xs,u1,t23,xs,lessisi3(xs),t)):not(is"e"(1to(xs),u2,xxs))
+[j:is"e"(1to(y),<u2>f,yy1)]
+t25:=tris2(1to(y),<u2>f,<xxs>f,yy1,j,i):is"e"(1to(y),<u2>f,<xxs>f)
+t26:=isfe(1to(xs),1to(y),f,t19,u2,xxs,t25):is"e"(1to(xs),u2,xxs)
+u@t27:=th3"l.imp"(is"e"(1to(y),<u2>f,yy1),is"e"(1to(xs),u2,xxs),t24,[t:is"e"(1to(y),<u2>f,yy1)]t26(t)):not(is"e"(1to(y),<u2>f,yy1))
+w1:=inn(y,<u2>f):nat
+[j:is(w1,y)]
+t28:=tris(1to(y),<u2>f,outn(y,w1,1top(y,<u2>f)),yy1,isoutinn(y,<u2>f),isoutni(y,w1,1top(y,<u2>f),y,lessisi3(y),j)):is"e"(1to(y),<u2>f,yy1)
+u@t29:=th3"l.imp"(is(w1,y),is"e"(1to(y),<u2>f,yy1),t27,[t:is(w1,y)]t28(t)):nis(w1,y)
+t30:=ore1(less(w1,y),is(w1,y),1top(y,<u2>f),t29):less(w1,y)
+t31:=islessis2(y,pl(ym1,1),pl(w1,1),th1c"n.mn"(y,1,t15),satz25b(y,w1,t30)):lessis(pl(w1,1),pl(ym1,1))
+t32:=th9"l.or"(less(pl(w1,1),pl(ym1,1)),is(pl(w1,1),pl(ym1,1)),less(w1,ym1),is(w1,ym1),t31,[t:less(pl(w1,1),pl(ym1,1))]satz20c(w1,ym1,1,t),[t:is(pl(w1,1),pl(ym1,1))]satz20b(w1,ym1,1,t)):lessis(w1,ym1)
+w2:=outn(ym1,w1,t32):1to(ym1)
+i@f1:=[t:1to(x)]w2(t):[t:1to(x)]1to(ym1)
+u@[v:1to(x)][j:is"e"(1to(ym1),<u>f1,<v>f1)]
+t33:=isoutne(ym1,w1(u),t32(u),w1(v),t32(v),j):is(w1(u),w1(v))
+t34:=isinne(y,<u2(u)>f,<u2(v)>f,t33):is"e"(1to(y),<u2(u)>f,<u2(v)>f)
+t35:=<t34><u2(v)><u2(u)>t19:is"e"(1to(xs),u2(u),u2(v))
+t36:=isoutne(xs,u1(u),t23(u),u1(v),t23(v),t35):is(u1(u),u1(v))
+t37:=isinne(x,u,v,t36):is"e"(1to(x),u,v)
+i@[v:1to(ym1)]
+v1:=inn(ym1,v):nat
+t38:=satz16a(v1,ym1,y,1top(ym1,v),t18):less(v1,y)
+t39:=ec3e31(is(v1,y),more(v1,y),less(v1,y),satz10b(v1,y),t38):nis(v1,y)
+t40:=lessisi1(v1,y,t38):lessis(v1,y)
+v2:=outn(y,v1,t40):1to(y)
+w3:=<v2>invf(1to(xs),1to(y),f,b):1to(xs)
+t41:=thinvf2(1to(xs),1to(y),f,b,v2):is"e"(1to(y),v2,<w3>f)
+[j:is"e"(1to(xs),w3,xxs)]
+t42:=isf(1to(xs),1to(y),f,w3,xxs,j):is"e"(1to(y),<w3>f,<xxs>f)
+t43:=tr3is(1to(y),v2,<w3>f,<xxs>f,yy1,t41,t42,i):is"e"(1to(y),v2,yy1)
+t44:=isoutne(y,v1,t40,y,lessisi3(y),t43):is(v1,y)
+v@t45:=th3"l.imp"(is"e"(1to(xs),w3,xxs),is(v1,y),t39,[t:is"e"(1to(xs),w3,xxs)]t44(t)):not(is"e"(1to(xs),w3,xxs))
+w4:=inn(xs,w3):nat
+[j:is(w4,xs)]
+t46:=tris(1to(xs),w3,outn(xs,w4,1top(xs,w3)),xxs,isoutinn(xs,w3),isoutni(xs,w4,1top(xs,w3),xs,lessisi3(xs),j)):is"e"(1to(xs),w3,xxs)
+v@t47:=th3"l.imp"(is(w4,xs),is"e"(1to(xs),w3,xxs),t45,[t:is(w4,xs)]t46(t)):nis(w4,xs)
+t48:=ore1(less(w4,xs),is(w4,xs),1top(xs,w3),t47):less(w4,xs)
+t49:=satz26a(x,w4,t48):lessis(w4,x)
+w5:=outn(x,w4,t49):1to(x)
+t50:=isinoutn(x,w4,t49):is(w4,u1(w5))
+t51:=tris(1to(xs),w3,outn(xs,w4,1top(xs,w3)),u2(w5),isoutinn(xs,w3),isoutni(xs,w4,1top(xs,w3),u1(w5),t23(w5),t50)):is"e"(1to(xs),w3,u2(w5))
+t52:=isf(1to(xs),1to(y),f,w3,u2(w5),t51):is"e"(1to(y),<w3>f,<u2(w5)>f)
+t53:=tris(1to(y),v2,<w3>f,<u2(w5)>f,t41,t52):is"e"(1to(y),v2,<u2(w5)>f)
+t54:=tris(nat,v1,inn(y,v2),w1(w5),isinoutn(y,v1,t40),isinni(y,v2,<u2(w5)>f,t53)):is(v1,w1(w5))
+t55:=tris(1to(ym1),v,outn(ym1,v1,1top(ym1,v)),w2(w5),isoutinn(ym1,v),isoutni(ym1,v1,1top(ym1,v),w1(w5),t32(w5),t54)):is"e"(1to(ym1),v,<w5>f1)
+t56:=somei(1to(x),[t:1to(x)]is"e"(1to(ym1),v,<t>f1),w5,t55):image(1to(x),1to(ym1),f1,v)
+i@t57:=andi(injective(1to(x),1to(ym1),f1),surjective(1to(x),1to(ym1),f1),[u:1to(x)][v:1to(x)][t:is"e"(1to(ym1),<u>f1,<v>f1)]t37(u,v,t),[u:1to(ym1)]t56(u)):bijective(1to(x),1to(ym1),f1)
+t58:=somei([t:1to(x)]1to(ym1),[g:[t:1to(x)]1to(ym1)]bijective(1to(x),1to(ym1),g),f1,t57):prop1(ym1)
+t59:=<t58><t17><ym1>p:con
+b@[n:not(is"e"(1to(y),<xxs>f,yy1))]
+m0:=<yy1>invf(1to(xs),1to(y),f,b):1to(xs)
+t60:=thinvf2(1to(xs),1to(y),f,b,yy1):is"e"(1to(y),yy1,<m0>f)
+f2:=changef(1to(xs),1to(y),f,m0,xxs):[t:1to(xs)]1to(y)
+t61:=changef2(1to(xs),1to(y),f,m0,xxs,xxs,refis(1to(xs),xxs)):is"e"(1to(y),<xxs>f2,<m0>f)
+t62:=tris2(1to(y),<xxs>f2,yy1,<m0>f,t61,t60):is"e"(1to(y),<xxs>f2,yy1)
+t63:=th6"e.wissel"(1to(xs),1to(y),f,m0,xxs,b):bijective(1to(xs),1to(y),f2)
+t64:=t59(f2,t63,t62):con
+b@t65:=th1"l.imp"(is"e"(1to(y),<xxs>f,yy1),con,[t:is"e"(1to(y),<xxs>f,yy1)]t59(t),[t:not(is"e"(1to(y),<xxs>f,yy1))]t64(t)):con
+l@t65a:=th5"l.some"([t:1to(xs)]1to(y),[f:[t:1to(xs)]1to(y)]bijective(1to(xs),1to(y),f),[f:[t:1to(xs)]1to(y)][t:bijective(1to(xs),1to(y),f)]t65(f,t)):not(prop1(xs,y))
+p@t66:=[y:nat][t:less(xs,y)]t65a(y,t):prop2(xs)
+x@t67:=induction([t:nat]prop2(t),t14,[t:nat][u:prop2(t)]t66(t,u),x):prop2(x)
+-8274
+[l:less(x,y)]
+satz274:=<l><y>t67".8274":not(some"l"([t:1to(x)]1to(y),[f:[t:1to(x)]1to(y)]bijective(1to(x),1to(y),f)))
+[f:[t:1to(x)]1to(y)]
+satz274a:=th4"l.some"([t:1to(x)]1to(y),[g:[t:1to(x)]1to(y)]bijective(1to(x),1to(y),g),satz274,f):not(bijective(1to(x),1to(y),f))
++*rt
++*rp
++*r
++*c
+@[x:nat][u:1to(x)]
+inn:=inn"n"(x,u):nat
+@[q:[t:cx][u:cx]cx][x:nat][f:[t:1to(x)]cx]
+x@[n:1to(x)][o:not(is"e"(1to(x),n,xout(x)))]
++8275
+t1:=th3"l.imp"(is"n"(inn(x,n),x),is"e"(1to(x),n,xout(x)),o,[t:is"n"(inn(x,n),x)]tris(1to(x),n,outn(x,inn(x,n),1top(x,n)),xout(x),isoutinn(x,n),isoutni(x,inn(x,n),1top(x,n),x,lessisi3(x),t))):not(is"n"(inn(x,n),x))
+t2:=ore1(less"n"(inn(x,n),x),is"n"(inn(x,n),x),1top(x,n),t1):less"n"(inn(x,n),x)
+-8275
+lemma275:=satz25c(x,inn(x,n),t2".8275"):lessis"n"(<inn(x,n)>suc,x)
+f@[g:[t:1to(x)]cx]
+recprop:=and(is(<1out(x)>g,<1out(x)>f),[t:1to(x)][u:not(is"e"(1to(x),t,xout(x)))]is(<outn(x,<inn(x,t)>suc,lemma275(t,u))>g,<<outn(x,<inn(x,t)>suc,lemma275(t,u))>f><<t>g>q)):'prop'
++*8275
+x@1o:=1out(x):1to(x)
+xo:=xout(x):1to(x)
+[u:nat][l:lessis"n"(<u>suc,x)]
+t11:=satz16b(u,<u>suc,x,satz18c(u),l):less"n"(u,x)
+t12:=lessisi1"n"(u,x,t11):lessis"n"(u,x)
+ux:=outn(x,u,t12):1to(x)
+t13:=ec3e31(is"n"(u,x),more"n"(u,x),less"n"(u,x),satz10b(u,x),t11):nis"n"(u,x)
+t14:=th3"l.imp"(is"e"(1to(x),ux,xo),is"n"(u,x),t13,[t:is"e"(1to(x),ux,xo)]isoutne(x,u,t12,x,lessisi3(x),t)):not(is"e"(1to(x),ux,xo))
+t15:=isf(nat,nat,suc,u,inn(x,ux),isinoutn(x,u,t12)):is"n"(<u>suc,<inn(x,ux)>suc)
+t16:=isoutni(x,<u>suc,l,<inn(x,ux)>suc,lemma275(ux,t14),t15):is"e"(1to(x),outn(x,<u>suc,l),outn(x,<inn(x,ux)>suc,lemma275(ux,t14)))
+x@[n:1to(x)][o:not(is"e"(1to(x),n,xo))]
+ns:=outn(x,<inn(x,n)>suc,lemma275(n,o)):1to(x)
+f@[g:[t:1to(x)]cx]
+prop1:=is(<1o>g,<1o>f):'prop'
+prop2:=[t:1to(x)][u:not(is"e"(1to(x),t,xo))]is(<ns(t,u)>g,<<ns(t,u)>f><<t>g>q):'prop'
+[pg:recprop(g)]
+t3:=ande1(prop1,prop2,pg):prop1
+[n:1to(x)][o:not(is"e"(1to(x),n,xo))]
+t4:=<o><n>ande2(prop1,prop2,pg):is(<ns(n,o)>g,<<ns(n,o)>f><<n>g>q)
+pg@[u:nat][l:lessis"n"(<u>suc,x)]
+t17:=isf(1to(x),cx,g,outn(x,<u>suc,l),ns(ux(u,l),t14(u,l)),t16(u,l)):is(<outn(x,<u>suc,l)>g,<ns(ux(u,l),t14(u,l))>g)
+t18:=tris(cx,<outn(x,<u>suc,l)>g,<ns(ux(u,l),t14(u,l))>g,<<ns(ux(u,l),t14(u,l))>f><<ux(u,l)>g>q,t17,t4(pg,ux(u,l),t14(u,l))):is(<outn(x,<u>suc,l)>g,<<ns(ux(u,l),t14(u,l))>f><<ux(u,l)>g>q)
+g@[h:[t:1to(x)]cx][u:nat][l:lessis"n"(u,x)]
+prop3:=is(<outn(x,u,l)>g,<outn(x,u,l)>h):'prop'
+u@prop4:=and(lessis"n"(u,x),[t:lessis"n"(u,x)]prop3(t)):'prop'
+prop5:=or(prop4,more"n"(u,x)):'prop'
+h@[pg:recprop(g)][ph:recprop(h)][l:lessis"n"(1,x)]
+t5:=isoutni(x,1,l,1,satz24a(x),refis(nat,1)):is"e"(1to(x),outn(x,1,l),1o)
+t6:=isf(1to(x),cx,g,outn(x,1,l),1o,t5):is(<outn(x,1,l)>g,<1o>g)
+t7:=tris(cx,<outn(x,1,l)>g,<1o>g,<1o>f,t6,t3(pg)):is(<outn(x,1,l)>g,<1o>f)
+t8:=tris2(cx,<outn(x,1,l)>g,<outn(x,1,l)>h,<1o>f,t7,t7(h,g,ph,pg,l)):prop3(1,l)
+ph@t9:=andi(lessis"n"(1,x),[t:lessis"n"(1,x)]prop3(1,t),satz24a(x),[t:lessis"n"(1,x)]t8(t)):prop4(1)
+t10:=ori1(prop4(1),more"n"(1,x),t9):prop5(1)
+[u:nat][p:prop5(u)][l:lessis"n"(<u>suc,x)]
+t19:=ec3e32(is"n"(u,x),more"n"(u,x),less"n"(u,x),satz10b(u,x),t11(u,l)):not(more"n"(u,x))
+t20:=ore1(prop4(u),more"n"(u,x),p,t19):prop4(u)
+t21:=<t12(u,l)>ande2(lessis"n"(u,x),[t:lessis"n"(u,x)]prop3(u,t),t20):prop3(u,t12(u,l))
+t22:=isf(cx,cx,[t:cx]<<ns(ux(u,l),t14(u,l))>f><t>q,<ux(u,l)>g,<ux(u,l)>h,t21):is(<<ns(ux(u,l),t14(u,l))>f><<ux(u,l)>g>q,<<ns(ux(u,l),t14(u,l))>f><<ux(u,l)>h>q)
+t23:=symis(cx,<outn(x,<u>suc,l)>h,<<ns(ux(u,l),t14(u,l))>f><<ux(u,l)>h>q,t18(h,ph,u,l)):is(<<ns(ux(u,l),t14(u,l))>f><<ux(u,l)>h>q,<outn(x,<u>suc,l)>h)
+t24:=tr3is(cx,<outn(x,<u>suc,l)>g,<<ns(ux(u,l),t14(u,l))>f><<ux(u,l)>g>q,<<ns(ux(u,l),t14(u,l))>f><<ux(u,l)>h>q,<outn(x,<u>suc,l)>h,t18(g,pg,u,l),t22,t23):prop3(<u>suc,l)
+t25:=andi(lessis"n"(<u>suc,x),[t:lessis"n"(<u>suc,x)]prop3(<u>suc,t),l,[t:lessis"n"(<u>suc,x)]t24(t)):prop4(<u>suc)
+t26:=ori1(prop4(<u>suc),more"n"(<u>suc,x),t25):prop5(<u>suc)
+p@[n:not(lessis"n"(<u>suc,x))]
+t27:=satz10k(<u>suc,x,n):more"n"(<u>suc,x)
+t28:=ori2(prop4(<u>suc),more"n"(<u>suc,x),t27):prop5(<u>suc)
+p@t29:=th1"l.imp"(lessis"n"(<u>suc,x),prop5(<u>suc),[t:lessis"n"(<u>suc,x)]t26(t),[t:not(lessis"n"(<u>suc,x))]t28(t)):prop5(<u>suc)
+u@t30:=induction([v:nat]prop5(v),t10,[v:nat][t:prop5(v)]t29(v,t),u):prop5(u)
+ph@[n:1to(x)]
+t31:=isf(1to(x),cx,g,n,outn(x,inn(x,n),1top(x,n)),isoutinn(x,n)):is(<n>g,<outn(x,inn(x,n),1top(x,n))>g)
+t32:=satz10d(inn(x,n),x,1top(x,n)):not(more"n"(inn(x,n),x))
+t33:=ore1(prop4(inn(x,n)),more"n"(inn(x,n),x),t30(inn(x,n)),t32):prop4(inn(x,n))
+t34:=<1top(x,n)>ande2(lessis"n"(inn(x,n),x),[t:lessis"n"(inn(x,n),x)]prop3(inn(x,n),t),t33):prop3(inn(x,n),1top(x,n))
+t35:=symis(cx,<n>h,<outn(x,inn(x,n),1top(x,n))>h,t31(h,g,ph,pg,n)):is(<outn(x,inn(x,n),1top(x,n))>h,<n>h)
+t36:=tr3is(cx,<n>g,<outn(x,inn(x,n),1top(x,n))>g,<outn(x,inn(x,n),1top(x,n))>h,<n>h,t31,t34,t35):is(<n>g,<n>h)
+ph@t37:=fisi(1to(x),cx,g,h,[t:1to(x)]t36(t)):is"e"([t:1to(x)]cx,g,h)
+f@prop6:=some"l"([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(g)):'prop'
+x@prop7:=all"l"([t:1to(x)]cx,[f:[t:1to(x)]cx]prop6(f)):'prop'
+q@[f:[t:1to(1)]cx]
+t38:=refis(cx,<1o(1)>f):prop1(1,f,f)
+[n:1to(1)][o:not(is"e"(1to(1),n,xo(1)))]
+t39:=<th1"n.singlet"(n)>o:con
+t40:=cone(is(<ns(1,n,o)>f,<<ns(1,n,o)>f><<n>f>q),t39):is(<ns(1,n,o)>f,<<ns(1,n,o)>f><<n>f>q)
+f@t41:=andi(prop1(1,f,f),prop2(1,f,f),t38,[t:1to(1)][u:not(is"e"(1to(1),t,xo(1)))]t40(t,u)):recprop(1,f,f)
+t42:=somei([t:1to(1)]cx,[g:[t:1to(1)]cx]recprop(1,f,g),f,t41):prop6(1,f)
+q@t43:=[f:[t:1to(1)]cx]t42(f):prop7(1)
+x@[p:prop7(x)]
+xs:=<x>suc:nat
+[f:[t:1to(xs)]cx]
+f1:=left(cx,xs,x,lessisi1"n"(x,xs,satz18c(x)),f):[t:1to(x)]cx
+t44:=onei([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(x,f1,g),[g:[t:1to(x)]cx][h:[t:1to(x)]cx][u:recprop(x,f1,g)][v:recprop(x,f1,h)]t37(f1,g,h,u,v),<f1>p):one"e"([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(x,f1,g))
+g1:=ind([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(x,f1,g),t44):[t:1to(x)]cx
+t45:=oneax([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(x,f1,g),t44):recprop(x,f1,g1)
+[n:1to(xs)]
+nxs:=is"e"(1to(xs),n,xo(xs)):'prop'
+[o:not(nxs)]
+t46:=satz26a(x,inn(xs,n),t2(xs,n,o)):lessis"n"(inn(xs,n),x)
+n1:=outn(x,inn(xs,n),t46):1to(x)
+b:=<n1>g1:cx
+[o1:not(nxs)]
+t47:=isoutni(x,inn(xs,n),t46(o),inn(xs,n),t46(o1),refis(nat,inn(xs,n))):is"e"(1to(x),n1(o),n1(o1))
+t48:=isf(1to(x),cx,g1,n1(o),n1(o1),t47):is(b(o),b(o1))
+f@a:=<<xo(xs)>f><<xo(x)>g1>q:cx
+n@c:=ite"l.r"(nxs,cx,[t:nxs]a,[t:not(nxs)]b(t),[t:nxs][u:nxs]refis(cx,a),[t:not(nxs)][u:not(nxs)]t48(t,u)):cx
+[i:nxs]
+t49:=itet"l.r"(nxs,cx,[t:nxs]a,[t:not(nxs)]b(t),[t:nxs][u:nxs]refis(cx,a),[t:not(nxs)][u:not(nxs)]t48(t,u),i):is(c,a)
+o@t50:=itef"l.r"(nxs,cx,[t:nxs]a,[t:not(nxs)]b(t),[t:nxs][u:nxs]refis(cx,a),[t:not(nxs)][u:not(nxs)]t48(t,u),o):is(c,b)
+f@g2:=[t:1to(xs)]c(t):[t:1to(xs)]cx
+t51:=th3"l.imp"(is"e"(1to(xs),1o(xs),xo(xs)),is"n"(1,xs),symnotis(nat,xs,1,<x>ax3),[t:is"e"(1to(xs),1o(xs),xo(xs))]isoutne(xs,1,satz24a(xs),xs,lessisi3(xs),t)):not(is"e"(1to(xs),1o(xs),xo(xs)))
+t52:=t50(1o(xs),t51):is(c(1o(xs)),b(1o(xs),t51))
+t53:=isinoutn(xs,1,satz24a(xs)):is"n"(1,inn(xs,1o(xs)))
+t54:=isoutni(x,1,satz24a(x),inn(xs,1o(xs)),t46(1o(xs),t51),t53):is"e"(1to(x),1o(x),n1(1o(xs),t51))
+t55:=isf(1to(x),cx,g1,1o(x),n1(1o(xs),t51),t54):is(<1o(x)>g1,b(1o(xs),t51))
+t56:=tris2(cx,c(1o(xs)),<1o(x)>g1,b(1o(xs),t51),t52,t55):is(c(1o(xs)),<1o(x)>g1)
+t57:=tris(cx,c(1o(xs)),<1o(x)>g1,<1o(x)>f1,t56,t3(x,f1,g1,t45)):is(c(1o(xs)),<1o(x)>f1)
+t58:=isinoutn(x,1,satz24a(x)):is"n"(1,inn(x,1o(x)))
+t59:=isoutni(xs,1,satz24a(xs),inn(x,1o(x)),trlessis"n"(inn(x,1o(x)),x,xs,1top(x,1o(x)),lessisi1"n"(x,xs,satz18c(x))),t58):is"e"(1to(xs),1o(xs),left1to(xs,x,lessisi1"n"(x,xs,satz18c(x)),1o(x)))
+t60:=isf(1to(xs),cx,f,1o(xs),left1to(xs,x,lessisi1"n"(x,xs,satz18c(x)),1o(x)),t59):is(<1o(xs)>f,<1o(x)>f1)
+t61:=tris2(cx,c(1o(xs)),<1o(xs)>f,<1o(x)>f1,t57,t60):prop1(xs,f,g2)
+o@[i:is"e"(1to(xs),ns(xs,n,o),xo(xs))]
+t62:=isoutne(xs,<inn(xs,n)>suc,lemma275(xs,n,o),xs,lessisi3(xs),i):is"n"(<inn(xs,n)>suc,xs)
+t63:=<t62><x><inn(xs,n)>ax4:is"n"(inn(xs,n),x)
+t64:=isoutni(x,inn(xs,n),t46,x,lessisi3(x),t63):is"e"(1to(x),n1,xo(x))
+t65:=isf(1to(x),cx,g1,xo(x),n1,symis(1to(x),n1,xo(x),t64)):is(<xo(x)>g1,b)
+t66:=tris2(cx,<xo(x)>g1,c,b,t65,t50):is(<xo(x)>g1,c)
+t67:=isf(cx,cx,[t:cx]<<xo(xs)>f><t>q,<xo(x)>g1,c,t66):is(a,<<xo(xs)>f><c>q)
+t68:=isf(1to(xs),cx,f,xo(xs),ns(xs,n,o),symis(1to(xs),ns(xs,n,o),xo(xs),i)):is(<xo(xs)>f,<ns(xs,n,o)>f)
+t69:=isf(cx,cx,<c>q,<xo(xs)>f,<ns(xs,n,o)>f,t68):is(<<xo(xs)>f><c>q,<<ns(xs,n,o)>f><c>q)
+t70:=tr3is(cx,c(ns(xs,n,o)),a,<<xo(xs)>f><c>q,<<ns(xs,n,o)>f><c>q,t49(ns(xs,n,o),i),t67,t69):is(c(ns(xs,n,o)),<<ns(xs,n,o)>f><c>q)
+o@[o1:not(is"e"(1to(xs),ns(xs,n,o),xo(xs)))][i:is"e"(1to(x),n1,xo(x))]
+t71:=isoutne(x,inn(xs,n),t46,x,lessisi3(x),i):is"n"(inn(xs,n),x)
+t72:=ax2(inn(xs,n),x,t71):is"n"(<inn(xs,n)>suc,xs)
+t73:=isoutni(xs,<inn(xs,n)>suc,lemma275(xs,n,o),xs,lessisi3(xs),t72):is"e"(1to(xs),ns(xs,n,o),xo(xs))
+o1@t74:=th3"l.imp"(is"e"(1to(x),n1,xo(x)),is"e"(1to(xs),ns(xs,n,o),xo(xs)),o1,[t:is"e"(1to(x),n1,xo(x))]t73(t)):not(is"e"(1to(x),n1,xo(x)))
+t75:=isinoutn(x,inn(xs,n),t46):is"n"(inn(xs,n),inn(x,n1))
+t76:=ax2(inn(xs,n),inn(x,n1),t75):is"n"(<inn(xs,n)>suc,<inn(x,n1)>suc)
+t77:=isinoutn(xs,<inn(xs,n)>suc,lemma275(xs,n,o)):is"n"(<inn(xs,n)>suc,inn(xs,ns(xs,n,o)))
+t78:=tris1(nat,inn(xs,ns(xs,n,o)),<inn(x,n1)>suc,<inn(xs,n)>suc,t77,t76):is"n"(inn(xs,ns(xs,n,o)),<inn(x,n1)>suc)
+t79:=isoutni(x,inn(xs,ns(xs,n,o)),t46(ns(xs,n,o),o1),<inn(x,n1)>suc,lemma275(x,n1,t74),t78):is"e"(1to(x),n1(ns(xs,n,o),o1),ns(n1,t74))
+t80:=isf(1to(x),cx,g1,n1(ns(xs,n,o),o1),ns(n1,t74),t79):is(b(ns(xs,n,o),o1),<ns(n1,t74)>g1)
+t81:=isinoutn(x,<inn(x,n1)>suc,lemma275(x,n1,t74)):is"n"(<inn(x,n1)>suc,inn(x,ns(n1,t74)))
+t82:=tris(nat,<inn(xs,n)>suc,<inn(x,n1)>suc,inn(x,ns(n1,t74)),t76,t81):is"n"(<inn(xs,n)>suc,inn(x,ns(n1,t74)))
+t83:=isoutni(xs,<inn(xs,n)>suc,lemma275(xs,n,o),inn(x,ns(n1,t74)),trlessis"n"(inn(x,ns(n1,t74)),x,xs,1top(x,ns(n1,t74)),lessisi1"n"(x,xs,satz18c(x))),t82):is"e"(1to(xs),ns(xs,n,o),left1to(xs,x,lessisi1"n"(x,xs,satz18c(x)),ns(n1,t74)))
+t84:=isf(1to(xs),cx,f,ns(xs,n,o),left1to(xs,x,lessisi1"n"(x,xs,satz18c(x)),ns(n1,t74)),t83):is(<ns(xs,n,o)>f,<ns(n1,t74)>f1)
+t85:=isf(cx,cx,<b>q,<ns(xs,n,o)>f,<ns(n1,t74)>f1,t84):is(<<ns(xs,n,o)>f><b>q,<<ns(n1,t74)>f1><b>q)
+t86:=isf(cx,cx,[t:cx]<<ns(xs,n,o)>f><t>q,c,b,t50):is(<<ns(xs,n,o)>f><c>q,<<ns(xs,n,o)>f><b>q)
+t87:=tr3is(cx,c(ns(xs,n,o)),b(ns(xs,n,o),o1),<ns(n1,t74)>g1,<<ns(n1,t74)>f1><b>q,t50(ns(xs,n,o),o1),t80,t4(f1,g1,t45,n1,t74)):is(c(ns(xs,n,o)),<<ns(n1,t74)>f1><b>q)
+t88:=tris(cx,<<ns(xs,n,o)>f><c>q,<<ns(xs,n,o)>f><b>q,<<ns(n1,t74)>f1><b>q,t86,t85):is(<<ns(xs,n,o)>f><c>q,<<ns(n1,t74)>f1><b>q)
+t89:=tris2(cx,c(ns(xs,n,o)),<<ns(xs,n,o)>f><c>q,<<ns(n1,t74)>f1><b>q,t87,t88):is(c(ns(xs,n,o)),<<ns(xs,n,o)>f><c>q)
+o@t90:=th1"l.imp"(is"e"(1to(xs),ns(xs,n,o),xo(xs)),is(c(ns(xs,n,o)),<<ns(xs,n,o)>f><c>q),[t:is"e"(1to(xs),ns(xs,n,o),xo(xs))]t70(t),[t:not(is"e"(1to(xs),ns(xs,n,o),xo(xs)))]t89(t)):is(c(ns(xs,n,o)),<<ns(xs,n,o)>f><c>q)
+f@t91:=[t:1to(xs)][u:not(nxs(t))]t90(t,u):prop2(xs,f,g2)
+t92:=andi(prop1(xs,f,g2),prop2(xs,f,g2),t61,t91):recprop(xs,f,g2)
+t93:=somei([t:1to(xs)]cx,[g:[t:1to(xs)]cx]recprop(xs,f,g),g2,t92):prop6(xs,f)
+p@t94:=[f:[t:1to(xs)]cx]t93(f):prop7(xs)
+x@t95:=induction([y:nat]prop7(y),t43,[y:nat][t:prop7(y)]t94(y,t),x):prop7(x)
+[f:[t:1to(x)]cx]
+t96:=<f>t95:prop6(x,f)
+t97:=onei([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(x,f,g),[g:[t:1to(x)]cx][h:[t:1to(x)]cx][u:recprop(x,f,g)][v:recprop(x,f,h)]t37(f,g,h,u,v),t96):one"e"([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(x,f,g))
+-8275
+f@satz275:=t97".8275"(f):one"e"([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(x,f,g))
+recf:=ind([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(x,f,g),satz275):[t:1to(x)]cx
+satz275a:=oneax([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(x,f,g),satz275):recprop(x,f,recf)
+[n:1to(x)]
+rec:=<n>recf:cx
+f@satz275b:=t3".8275"(x,f,recf,satz275a):is(rec(1out(x)),<1out(x)>f)
+n@[o:not(is"e"(1to(x),n,xout(x)))]
+sucx:=ns".8275"(n,o):1to(x)
+satz275c:=t4".8275"(x,f,recf,satz275a,n,o):is(rec(sucx(n,o)),<<sucx(n,o)>f><rec(n)>q)
+f@[g:[t:1to(x)]cx][r:recprop(x,f,g)]
+satz275d:=t37".8275"(x,f,g,recf,r,satz275a):is"e"([t:1to(x)]cx,g,recf)
+[n:1to(x)]
+satz275e:=fise(1to(x),cx,g,recf,satz275d,n):is(<n>g,rec(n))
+x@[y:nat]
++*8275
+y@[l:lessis"n"(y,x)][f:[t:1to(x)]cx]
+fl:=left(cx,x,y,l,f):[t:1to(y)]cx
+rf:=recf(x,f):[t:1to(x)]cx
+rfl:=left(cx,x,y,l,rf):[t:1to(y)]cx
+t98:=isinoutn(y,1,satz24a(y)):is"n"(1,inn(y,1out(y)))
+t99:=isoutni(x,1,satz24a(x),inn(y,1out(y)),trlessis"n"(inn(y,1out(y)),y,x,1top(y,1out(y)),l),t98):is"e"(1to(x),1out(x),left1to(x,y,l,1out(y)))
+t100:=isp(1to(x),[t:1to(x)]is(<t>rf,<t>f),1out(x),left1to(x,y,l,1out(y)),t3(x,f,rf,satz275a(x,f)),t99):prop1(y,fl,rfl)
+[n:1to(y)][o:not(is"e"(1to(y),n,xout(y)))]
+t100a:=th3"l.imp"(is"n"(inn(y,n),y),is"e"(1to(y),n,xout(y)),o,[t:is"n"(inn(y,n),y)]tris(1to(y),n,outn(y,inn(y,n),1top(y,n)),xout(y),isoutinn(y,n),isoutni(y,inn(y,n),1top(y,n),y,lessisi3(y),t))):not(is"n"(inn(y,n),y))
+t100b:=ore1(less"n"(inn(y,n),y),is"n"(inn(y,n),y),1top(y,n),t100a):less"n"(inn(y,n),y)
+t101:=satz16b(inn(y,n),y,x,t100b,l):less"n"(inn(y,n),x)
+t102:=ec3e31(is"n"(inn(y,n),x),more"n"(inn(y,n),x),less"n"(inn(y,n),x),satz10b(inn(y,n),x),t101):nis"n"(inn(y,n),x)
+t103:=th3"l.imp"(is"e"(1to(x),left1to(x,y,l,n),xout(x)),is"n"(inn(y,n),x),t102,[t:is"e"(1to(x),left1to(x,y,l,n),xout(x))]isoutne(x,inn(y,n),trlessis"n"(inn(y,n),y,x,1top(y,n),l),x,lessisi3(x),t)):not(is"e"(1to(x),left1to(x,y,l,n),xout(x)))
+t104:=t4(x,f,rf,satz275a(x,f),left1to(x,y,l,n),t103):is(<ns(x,left1to(x,y,l,n),t103)>rf,<<ns(x,left1to(x,y,l,n),t103)>f><<n>rfl>q)
+t105:=isinoutn(x,inn(y,n),trlessis"n"(inn(y,n),y,x,1top(y,n),l)):is"n"(inn(y,n),inn(x,left1to(x,y,l,n)))
+t106:=ax2(inn(y,n),inn(x,left1to(x,y,l,n)),t105):is"n"(<inn(y,n)>suc,<inn(x,left1to(x,y,l,n))>suc)
+t107:=isinoutn(y,<inn(y,n)>suc,lemma275(y,n,o)):is"n"(<inn(y,n)>suc,inn(y,ns(y,n,o)))
+t108:=tris1(nat,<inn(x,left1to(x,y,l,n))>suc,inn(y,ns(y,n,o)),<inn(y,n)>suc,t106,t107):is"n"(<inn(x,left1to(x,y,l,n))>suc,inn(y,ns(y,n,o)))
+t109:=isoutni(x,<inn(x,left1to(x,y,l,n))>suc,lemma275(x,left1to(x,y,l,n),t103),inn(y,ns(y,n,o)),trlessis"n"(inn(y,ns(y,n,o)),y,x,1top(y,ns(y,n,o)),l),t108):is"e"(1to(x),ns(x,left1to(x,y,l,n),t103),left1to(x,y,l,ns(y,n,o)))
+t110:=isp(1to(x),[t:1to(x)]is(<t>rf,<<t>f><<n>rfl>q),ns(x,left1to(x,y,l,n),t103),left1to(x,y,l,ns(y,n,o)),t104,t109):is(<ns(y,n,o)>rfl,<<ns(y,n,o)>fl><<n>rfl>q)
+f@t111:=[t:1to(y)][u:not(is"e"(1to(y),t,xout(y)))]t110(t,u):prop2(y,fl,rfl)
+t112:=andi(prop1(y,fl,rfl),prop2(y,fl,rfl),t100,t111):recprop(y,fl,rfl)
+-8275
+y@[l:lessis"n"(y,x)][f:[t:1to(x)]cx]
+satz275f:=satz275d(y,fl".8275"(l,f),rfl".8275"(l,f),t112".8275"(l,f)):is"e"([t:1to(y)]cx,left(cx,x,y,l,recf(x,f)),recf(y,left(cx,x,y,l,f)))
+x@[f:[t:1to(pl"n"(x,1))]cx]
++8276
+xs:=<x>suc:nat
+x1:=pl"n"(x,1):nat
+t1:=lessisi1"n"(x,x1,satz18a(x,1)):lessis"n"(x,x1)
+t2:=lessisi1"n"(x,xs,satz18c(x)):lessis"n"(x,xs)
+t3:=lessisi2"n"(xs,x1,satz4e(x)):lessis"n"(xs,x1)
+fx:=left(cx,x1,x,t1,f):[t:1to(x)]cx
+f1:=left(cx,x1,xs,t3,f):[t:1to(xs)]cx
+f1x:=f1"c.8275"(x,t95"c.8275"(x),f1):[t:1to(x)]cx
+g1:=g2"c.8275"(x,t95"c.8275"(x),f1):[t:1to(xs)]cx
+g1x:=g1"c.8275"(x,t95"c.8275"(x),f1):[t:1to(x)]cx
+g:=left(cx,x1,xs,t3,recf(x1,f)):[t:1to(xs)]cx
+t4:=t49"c.8275"(x,t95"c.8275"(x),f1,xout(xs),refis(1to(xs),xout(xs))):is(<xout(xs)>g1,<<xout(xs)>f1><<xout(x)>g1x>q)
+t5:=satz275d(xs,f1,g1,t92"c.8275"(x,t95"c.8275"(x),f1)):is"e"([t:1to(xs)]cx,g1,recf(xs,f1))
+t6:=satz275f(x1,xs,t3,f):is"e"([t:1to(xs)]cx,g,recf(xs,f1))
+t7:=tris2([t:1to(xs)]cx,g,g1,recf(xs,f1),t6,t5):is"e"([t:1to(xs)]cx,g,g1)
+t8:=fise(1to(xs),cx,g,g1,t7,xout(xs)):is(<xout(xs)>g,<xout(xs)>g1)
+t9:=tris(cx,<xout(xs)>g,<xout(xs)>g1,<<xout(xs)>f1><<xout(x)>g1x>q,t8,t4):is(<xout(xs)>g,<<xout(xs)>f1><<xout(x)>g1x>q)
+[n:1to(x)]
+t10:=isinoutn(xs,inn(x,n),trlessis"n"(inn(x,n),x,xs,1top(x,n),t2)):is"n"(inn(x,n),inn(xs,left1to(xs,x,t2,n)))
+t11:=isoutni(x1,inn(x,n),trlessis"n"(inn(x,n),x,x1,1top(x,n),t1),inn(xs,left1to(xs,x,t2,n)),trlessis"n"(inn(xs,left1to(xs,x,t2,n)),xs,x1,1top(xs,left1to(xs,x,t2,n)),t3),t10):is"e"(1to(x1),left1to(x1,x,t1,n),left1to(x1,xs,t3,left1to(xs,x,t2,n)))
+t12:=isf(1to(x1),cx,f,left1to(x1,x,t1,n),left1to(x1,xs,t3,left1to(xs,x,t2,n)),t11):is(<n>fx,<n>f1x)
+f@t13:=fisi(1to(x),cx,fx,f1x,[t:1to(x)]t12(t)):is"e"([t:1to(x)]cx,fx,f1x)
+t14:=isf([t:1to(x)]cx,[t:1to(x)]cx,[u:[t:1to(x)]cx]recf(x,u),fx,f1x,t13):is"e"([t:1to(x)]cx,recf(x,fx),recf(x,f1x))
+t15:=satz275d(x,f1x,g1x,t45"c.8275"(x,t95"c.8275"(x),f1)):is"e"([t:1to(x)]cx,g1x,recf(x,f1x))
+t16:=tris2([t:1to(x)]cx,g1x,recf(x,fx),recf(x,f1x),t15,t14):is"e"([t:1to(x)]cx,g1x,recf(x,fx))
+t17:=fise(1to(x),cx,g1x,recf(x,fx),t16,xout(x)):is(<xout(x)>g1x,<xout(x)>recf(x,fx))
+t18:=isinoutn(xs,xs,lessisi3(xs)):is"n"(xs,inn(xs,xout(xs)))
+t19:=tris(nat,x1,xs,inn(xs,xout(xs)),satz4a(x),t18):is"n"(x1,inn(xs,xout(xs)))
+t20:=isoutni(x1,x1,lessisi3(x1),inn(xs,xout(xs)),trlessis"n"(inn(xs,xout(xs)),xs,x1,1top(xs,xout(xs)),t3),t19):is"e"(1to(x1),xout(x1),left1to(x1,xs,t3,xout(xs)))
+t21:=isp1(1to(x1),[t:1to(x1)]is(<t>recf(x1,f),<<t>f><<xout(x)>g1x>q),left1to(x1,xs,t3,xout(xs)),xout(x1),t9,t20):is(<xout(x1)>recf(x1,f),<<xout(x1)>f><<xout(x)>g1x>q)
+t22:=isf(cx,cx,[t:cx]<<xout(x1)>f><t>q,<xout(x)>g1x,<xout(x)>recf(x,fx),t17):is(<<xout(x1)>f><<xout(x)>g1x>q,<<xout(x1)>f><<xout(x)>recf(x,fx)>q)
+-8276
+satz276:=tris(cx,<xout(pl"n"(x,1))>recf(pl"n"(x,1),f),<<xout(pl"n"(x,1))>f><<xout(x)>g1x".8276">q,<<xout(pl"n"(x,1))>f><<xout(x)>recf(x,fx".8276")>q,t21".8276",t22".8276"):is(<xout(pl"n"(x,1))>recf(pl"n"(x,1),f),<<xout(pl"n"(x,1))>f><<xout(x)>recf(x,left(cx,pl"n"(x,1),x,lessisi1"n"(x,pl"n"(x,1),satz18a(x,1)),f))>q)
+x@[f:[u:1to(x)]cx]
+smpr:=rec(x,f,xout(x)):cx
+@[x:nat][f:[u:1to(x)]cx]
+sum:=smpr([t:cx][u:cx]pl(t,u),x,f):cx
+prod:=smpr([t:cx][u:cx]ts(t,u),x,f):cx
+q@[f:[u:1to(1)]cx]
++8277
+t1:=isoutni(1,1,satz24a(1),1,lessisi3(1),refis(nat,1)):is"e"(1to(1),1out(1),xout(1))
+-8277
+satz277:=isp(1to(1),[t:1to(1)]is(rec(1,f,t),<t>f),1out(1),xout(1),satz275b(1,f),t1".8277"):is(smpr(1,f),<xout(1)>f)
+q@[x:nat][f:[u:1to(pl"n"(x,1))]cx]
+satz278:=satz276(x,f):is(smpr(pl"n"(x,1),f),<<xout(pl"n"(x,1))>f><smpr(x,left(cx,pl"n"(x,1),x,lessisi1"n"(x,pl"n"(x,1),satz18a(x,1)),f))>q)
+x@[f:[u:1to(x)]cx][y:nat][i:is"n"(y,x)]
++v8
+t1:=lessisi2"n"(y,x,i):lessis"n"(y,x)
+f0:=left(cx,x,y,t1,f):[t:1to(y)]cx
+t2:=fise(1to(y),cx,left(cx,x,y,t1,recf(x,f)),recf(y,f0),satz275f(x,y,t1,f),xout(y)):is(<left1to(x,y,t1,xout(y))>recf(x,f),smpr(y,f0))
+t3:=tris1(nat,inn(y,xout(y)),x,y,isinoutn(y,y,lessisi3(y)),i):is"n"(inn(y,xout(y)),x)
+t4:=isoutni(x,inn(y,xout(y)),trlessis"n"(inn(y,xout(y)),y,x,1top(y,xout(y)),t1),x,lessisi3(x),t3):is"e"(1to(x),left1to(x,y,t1,xout(y)),xout(x))
+t5:=isf(1to(x),cx,recf(x,f),left1to(x,y,t1,xout(y)),xout(x),t4):is(<left1to(x,y,t1,xout(y))>recf(x,f),smpr(x,f))
+-v8
+issmpr:=tris1(cx,smpr(y,f0".v8"),smpr(x,f),<left1to(x,y,t1".v8",xout(y))>recf(x,f),t2".v8",t5".v8"):is(smpr(y,left(cx,x,y,lessisi2"n"(y,x,i),f)),smpr(x,f))
+@[z:complex][x:nat]
++8279
+xr:=rlofnt(x):real
+prop1:=is(sum(x,[t:1to(x)]z),ts(z,pli(xr,0))):'prop'
+z@t1:=satz277([t:cx][u:cx]pl(t,u),[t:1to(1)]z):is(sum(1,[t:1to(1)]z),z)
+t2:=tris(cx,sum(1,[t:1to(1)]z),z,ts(z,1c),t1,satz222a(z)):prop1(1)
+x@[p:prop1(x)]
+t3:=satz278([t:cx][u:cx]pl(t,u),x,[t:1to(pl"n"(x,1))]z):is(sum(pl"n"(x,1),[t:1to(pl"n"(x,1))]z),pl(sum(x,[t:1to(x)]z),z))
+t4:=ispl12(sum(x,[t:1to(x)]z),ts(z,pli(xr,0)),z,ts(z,1c),p,satz222a(z)):is(pl(sum(x,[t:1to(x)]z),z),pl(ts(z,pli(xr,0)),ts(z,1c)))
+t5:=distpt2(z,pli(xr,0),1c):is(pl(ts(z,pli(xr,0)),ts(z,1c)),ts(z,pl(pli(xr,0),1c)))
+t6:=plis12a(xr,0,1rl,0):is(pl(pli(xr,0),1c),pli(pl"r"(xr,1rl),pl"r"(0,0)))
+t7:=isrecx12(pl"r"(xr,1rl),rlofnt(pl"n"(x,1)),pl"r"(0,0),0,satzr155b(x,1),pl01"r"(0,0,refis(real,0))):is(pli(pl"r"(xr,1rl),pl"r"(0,0)),pli(rlofnt(pl"n"(x,1)),0))
+t8:=tris(cx,pl(pli(xr,0),1c),pli(pl"r"(xr,1rl),pl"r"(0,0)),pli(rlofnt(pl"n"(x,1)),0),t6,t7):is(pl(pli(xr,0),1c),pli(rlofnt(pl"n"(x,1)),0))
+t9:=ists2(pl(pli(xr,0),1c),pli(rlofnt(pl"n"(x,1)),0),z,t8):is(ts(z,pl(pli(xr,0),1c)),ts(z,pli(rlofnt(pl"n"(x,1)),0)))
+t10:=tr4is(cx,sum(pl"n"(x,1),[t:1to(pl"n"(x,1))]z),pl(sum(x,[t:1to(x)]z),z),pl(ts(z,pli(xr,0)),ts(z,1c)),ts(z,pl(pli(xr,0),1c)),ts(z,pli(rlofnt(pl"n"(x,1)),0)),t3,t4,t5,t9):prop1(pl"n"(x,1))
+t11:=isp(nat,[t:nat]prop1(t),pl"n"(x,1),<x>suc,t10,satz4a(x)):prop1(<x>suc)
+-8279
+satz279:=induction([t:nat]prop1".8279"(t),t2".8279",[u:nat][t:prop1".8279"(u)]t11".8279"(u,t),x):is(sum(x,[t:1to(x)]z),ts(z,pli(rlofnt(x),0)))
+q@[f:[t:1to(2)]cx]
++8280
+t1:=lessisi1"n"(1,2,satz18a(1,1)):lessis"n"(1,2)
+f1:=left(cx,2,1,t1,f):[t:1to(1)]cx
+t2:=satz278(q,1,f):is(smpr(2,f),<<xout(2)>f><smpr(1,f1)>q)
+t3:=satz277(q,f1):is(smpr(1,f1),<xout(1)>f1)
+t4:=isinoutn(1,1,lessisi3(1)):is"n"(1,inn(1,xout(1)))
+t5:=isoutni(2,1,satz24a(2),inn(1,xout(1)),trlessis"n"(inn(1,xout(1)),1,2,1top(1,xout(1)),t1),t4):is"e"(1to(2),1out(2),left1to(2,1,t1,xout(1)))
+t6:=isf(1to(2),cx,f,1out(2),left1to(2,1,t1,xout(1)),t5):is(<1out(2)>f,<xout(1)>f1)
+t7:=tris2(cx,smpr(1,f1),<1out(2)>f,<xout(1)>f1,t3,t6):is(smpr(1,f1),<1out(2)>f)
+t8:=isf(cx,cx,[t:cx]<<xout(2)>f><t>q,smpr(1,f1),<1out(2)>f,t7):is(<<xout(2)>f><smpr(1,f1)>q,<<xout(2)>f><<1out(2)>f>q)
+-8280
+satz280:=tris(cx,smpr(2,f),<<xout(2)>f><smpr(1,f1".8280")>q,<<xout(2)>f><<1out(2)>f>q,t2".8280",t8".8280"):is(smpr(2,f),<<xout(2)>f><<1out(2)>f>q)
+q@assoc:=[x:cx][y:cx][z:cx]is(<z><<y><x>q>q,<<z><y>q><x>q):'prop'
+@assocp1:=[x:cx][y:cx][z:cx]asspl1(x,y,z):assoc([x:cx][y:cx]pl(x,y))
+assocts:=[x:cx][y:cx][z:cx]assts1(x,y,z):assoc([x:cx][y:cx]ts(x,y))
+q@[a:assoc][z:cx][u:cx][v:cx]
+assq1:=<v><u><z>a:is(<v><<u><z>q>q,<<v><u>q><z>q)
+assq2:=symis(cx,<v><<u><z>q>q,<<v><u>q><z>q,assq1):is(<<v><u>q><z>q,<v><<u><z>q>q)
+q@[a:assoc(q)][x:nat][y:nat][f:[t:1to(pl"n"(x,y))]cx]
++8281
+y@t1:=lessisi1"n"(x,pl"n"(x,y),satz18a(x,y)):lessis"n"(x,pl"n"(x,y))
+f@f1:=left(cx,pl"n"(x,y),x,t1,f):[t:1to(x)]cx
+f2:=right(cx,x,y,f):[t:1to(y)]cx
+prop1:=is(smpr(pl"n"(x,y),f),<smpr(y,f2)><smpr(x,f1)>q):'prop'
+y@prop2:=all"l"([t:1to(pl"n"(x,y))]cx,[u:[t:1to(pl"n"(x,y))]cx]prop1(u)):'prop'
+x@[f0:[t:1to(pl"n"(x,1))]cx]
+t2:=satz278(q,x,f0):is(smpr(pl"n"(x,1),f0),<<xout(pl"n"(x,1))>f0><smpr(x,f1(1,f0))>q)
+t3:=satz277(q,f2(1,f0)):is(smpr(1,f2(1,f0)),<xout(1)>f2(1,f0))
+t4:=isinoutn(1,1,lessisi3(1)):is"n"(1,inn(1,xout(1)))
+t5:=ispl2"n"(1,inn(1,xout(1)),x,t4):is"n"(pl"n"(x,1),pl"n"(x,inn(1,xout(1))))
+t6:=isoutni(pl"n"(x,1),pl"n"(x,1),lessisi3(pl"n"(x,1)),pl"n"(x,inn(1,xout(1))),satz19o(inn(1,xout(1)),1,x,1top(1,xout(1))),t5):is"e"(1to(pl"n"(x,1)),xout(pl"n"(x,1)),right1to(x,1,xout(1)))
+t7:=isf(1to(pl"n"(x,1)),cx,f0,xout(pl"n"(x,1)),right1to(x,1,xout(1)),t6):is(<xout(pl"n"(x,1))>f0,<xout(1)>f2(1,f0))
+t8:=tris2(cx,<xout(pl"n"(x,1))>f0,smpr(1,f2(1,f0)),<xout(1)>f2(1,f0),t7,t3):is(<xout(pl"n"(x,1))>f0,smpr(1,f2(1,f0)))
+t9:=isf(cx,cx,<smpr(x,f1(1,f0))>q,<xout(pl"n"(x,1))>f0,smpr(1,f2(1,f0)),t8):is(<<xout(pl"n"(x,1))>f0><smpr(x,f1(1,f0))>q,<smpr(1,f2(1,f0))><smpr(x,f1(1,f0))>q)
+t10:=tris(cx,smpr(pl"n"(x,1),f0),<<xout(pl"n"(x,1))>f0><smpr(x,f1(1,f0))>q,<smpr(1,f2(1,f0))><smpr(x,f1(1,f0))>q,t2,t9):prop1(1,f0)
+x@t11:=[u:[t:1to(pl"n"(x,1))]cx]t10(u):prop2(1)
+y@yp1:=pl"n"(y,1):nat
+xpy:=pl"n"(x,y):nat
+xpy1:=pl"n"(x,yp1):nat
+xyp1:=pl"n"(xpy,1):nat
+t12:=lessisi2"n"(xyp1,xpy1,asspl1"n"(x,y,1)):lessis"n"(xyp1,xpy1)
+[p:prop2(y)][f:[t:1to(xpy1)]cx]
+t13:=isinoutn(xyp1,xyp1,lessisi3(xyp1)):is"n"(xyp1,inn(xyp1,xout(xyp1)))
+t14:=tris(nat,xpy1,xyp1,inn(xyp1,xout(xyp1)),asspl2"n"(x,y,1),t13):is"n"(xpy1,inn(xyp1,xout(xyp1)))
+t15:=isoutni(xpy1,xpy1,lessisi3(xpy1),inn(xyp1,xout(xyp1)),trlessis"n"(inn(xyp1,xout(xyp1)),xyp1,xpy1,1top(xyp1,xout(xyp1)),t12),t14):is"e"(1to(xpy1),xout(xpy1),left1to(xpy1,xyp1,t12,xout(xyp1)))
+t16:=isf(1to(xpy1),cx,recf(xpy1,f),xout(xpy1),left1to(xpy1,xyp1,t12,xout(xyp1)),t15):is(smpr(xpy1,f),<xout(xyp1)>left(cx,xpy1,xyp1,t12,recf(xpy1,f)))
+fr:=left(cx,xpy1,xyp1,t12,f):[t:1to(xyp1)]cx
+t17:=satz275f(xpy1,xyp1,t12,f):is"e"([t:1to(xyp1)]cx,left(cx,xpy1,xyp1,t12,recf(xpy1,f)),recf(xyp1,fr))
+t18:=fise(1to(xyp1),cx,left(cx,xpy1,xyp1,t12,recf(xpy1,f)),recf(xyp1,fr),t17,xout(xyp1)):is(<xout(xyp1)>left(cx,xpy1,xyp1,t12,recf(xpy1,f)),smpr(xyp1,fr))
+t19:=lessisi1"n"(xpy,xyp1,satz18a(xpy,1)):lessis"n"(xpy,xyp1)
+frr:=left(cx,xyp1,xpy,t19,fr):[t:1to(xpy)]cx
+t20:=satz278(xpy,fr):is(smpr(xyp1,fr),<<xout(xyp1)>fr><smpr(xpy,frr)>q)
+t21:=isf(cx,cx,[u:cx]<<xout(xyp1)>fr><u>q,smpr(xpy,frr),<smpr(y,f2(frr))><smpr(x,f1(frr))>q,<frr>p):is(<<xout(xyp1)>fr><smpr(xpy,frr)>q,<<xout(xyp1)>fr><<smpr(y,f2(frr))><smpr(x,f1(frr))>q>q)
+t22:=assq1(a,smpr(x,f1(frr)),smpr(y,f2(frr)),<xout(xyp1)>fr):is(<<xout(xyp1)>fr><<smpr(y,f2(frr))><smpr(x,f1(frr))>q>q,<<<xout(xyp1)>fr><smpr(y,f2(frr))>q><smpr(x,f1(frr))>q)
+t23:=lessisi1"n"(y,yp1,satz18a(y,1)):lessis"n"(y,yp1)
+fy:=left(cx,yp1,y,t23,f2(yp1,f)):[t:1to(y)]cx
+t24:=satz278(y,f2(yp1,f)):is(smpr(yp1,f2(yp1,f)),<<xout(yp1)>f2(yp1,f)><smpr(y,fy)>q)
+t25:=isinoutn(yp1,yp1,lessisi3(yp1)):is"n"(yp1,inn(yp1,xout(yp1)))
+t26:=ispl2"n"(yp1,inn(yp1,xout(yp1)),x,t25):is"n"(xpy1,pl"n"(x,inn(yp1,xout(yp1))))
+t27:=tris1(nat,inn(xyp1,xout(xyp1)),pl"n"(x,inn(yp1,xout(yp1))),xpy1,t14,t26):is"n"(inn(xyp1,xout(xyp1)),pl"n"(x,inn(yp1,xout(yp1))))
+t28:=isoutni(xpy1,inn(xyp1,xout(xyp1)),trlessis"n"(inn(xyp1,xout(xyp1)),xyp1,xpy1,1top(xyp1,xout(xyp1)),t12),pl"n"(x,inn(yp1,xout(yp1))),satz19o(inn(yp1,xout(yp1)),yp1,x,1top(yp1,xout(yp1))),t27):is"e"(1to(xpy1),left1to(xpy1,xyp1,t12,xout(xyp1)),right1to(x,yp1,xout(yp1)))
+t29:=isf(1to(xpy1),cx,f,left1to(xpy1,xyp1,t12,xout(xyp1)),right1to(x,yp1,xout(yp1)),t28):is(<xout(xyp1)>fr,<xout(yp1)>f2(yp1,f))
+t30:=isf(cx,cx,<smpr(y,f2(frr))>q,<xout(xyp1)>fr,<xout(yp1)>f2(yp1,f),t29):is(<<xout(xyp1)>fr><smpr(y,f2(frr))>q,<<xout(yp1)>f2(yp1,f)><smpr(y,f2(frr))>q)
+[n:1to(y)]
+n0:=inn(y,n):nat
+nyp1:=left1to(yp1,y,t23,n):1to(yp1)
+t31:=isinoutn(yp1,n0,trlessis"n"(n0,y,yp1,1top(y,n),t23)):is"n"(n0,inn(yp1,nyp1))
+t32:=ispl2"n"(n0,inn(yp1,nyp1),x,t31):is"n"(pl"n"(x,n0),pl"n"(x,inn(yp1,nyp1)))
+nxpy:=right1to(x,y,n):1to(xpy)
+nxyp1:=left1to(xyp1,xpy,t19,nxpy):1to(xyp1)
+t33:=isinoutn(xyp1,inn(xpy,nxpy),trlessis"n"(inn(xpy,nxpy),xpy,xyp1,1top(xpy,nxpy),t19)):is"n"(inn(xpy,nxpy),inn(xyp1,nxyp1))
+t34:=isinoutn(xpy,pl"n"(x,n0),satz19o(n0,y,x,1top(y,n))):is"n"(pl"n"(x,n0),inn(xpy,nxpy))
+t35:=tris(nat,pl"n"(x,n0),inn(xpy,nxpy),inn(xyp1,nxyp1),t34,t33):is"n"(pl"n"(x,n0),inn(xyp1,nxyp1))
+t36:=tris1(nat,pl"n"(x,inn(yp1,nyp1)),inn(xyp1,nxyp1),pl"n"(x,n0),t32,t35):is"n"(pl"n"(x,inn(yp1,nyp1)),inn(xyp1,nxyp1))
+t37:=isoutni(xpy1,pl"n"(x,inn(yp1,nyp1)),satz19o(inn(yp1,nyp1),yp1,x,1top(yp1,nyp1)),inn(xyp1,nxyp1),trlessis"n"(inn(xyp1,nxyp1),xyp1,xpy1,1top(xyp1,nxyp1),t12),t36):is"e"(1to(xpy1),right1to(x,yp1,nyp1),left1to(xpy1,xyp1,t12,nxyp1))
+t38:=isf(1to(xpy1),cx,f,right1to(x,yp1,nyp1),left1to(xpy1,xyp1,t12,nxyp1),t37):is(<n>fy,<n>f2(frr))
+f@t39:=fisi(1to(y),cx,fy,f2(frr),[u:1to(y)]t38(u)):is"e"([u:1to(y)]cx,fy,f2(frr))
+t40:=isf([u:1to(y)]cx,cx,[t:[u:1to(y)]cx]smpr(y,t),fy,f2(frr),t39):is(smpr(y,fy),smpr(y,f2(frr)))
+t41:=isf(cx,cx,[t:cx]<<xout(yp1)>f2(yp1,f)><t>q,smpr(y,f2(frr)),smpr(y,fy),symis(cx,smpr(y,fy),smpr(y,f2(frr)),t40)):is(<<xout(yp1)>f2(yp1,f)><smpr(y,f2(frr))>q,<<xout(yp1)>f2(yp1,f)><smpr(y,fy)>q)
+t41a:=tris(cx,<<xout(xyp1)>fr><smpr(y,f2(frr))>q,<<xout(yp1)>f2(yp1,f)><smpr(y,f2(frr))>q,<<xout(yp1)>f2(yp1,f)><smpr(y,fy)>q,t30,t41):is(<<xout(xyp1)>fr><smpr(y,f2(frr))>q,<<xout(yp1)>f2(yp1,f)><smpr(y,fy)>q)
+t42:=tris2(cx,<<xout(xyp1)>fr><smpr(y,f2(frr))>q,smpr(yp1,f2(yp1,f)),<<xout(yp1)>f2(yp1,f)><smpr(y,fy)>q,t41a,t24):is(<<xout(xyp1)>fr><smpr(y,f2(frr))>q,smpr(yp1,f2(yp1,f)))
+t43:=isf(cx,cx,<smpr(x,f1(frr))>q,<<xout(xyp1)>fr><smpr(y,f2(frr))>q,smpr(yp1,f2(yp1,f)),t42):is(<<<xout(xyp1)>fr><smpr(y,f2(frr))>q><smpr(x,f1(frr))>q,<smpr(yp1,f2(yp1,f))><smpr(x,f1(frr))>q)
+[m:1to(x)]
+m0:=inn(x,m):nat
+mxpy:=left1to(xpy,x,t1,m):1to(xpy)
+mxyp1:=left1to(xyp1,xpy,t19,mxpy):1to(xyp1)
+t44:=isinoutn(xyp1,inn(xpy,mxpy),trlessis"n"(inn(xpy,mxpy),xpy,xyp1,1top(xpy,mxpy),t19)):is"n"(inn(xpy,mxpy),inn(xyp1,mxyp1))
+t45:=isinoutn(xpy,m0,trlessis"n"(m0,x,xpy,1top(x,m),t1)):is"n"(m0,inn(xpy,mxpy))
+t46:=tris(nat,m0,inn(xpy,mxpy),inn(xyp1,mxyp1),t45,t44):is"n"(m0,inn(xyp1,mxyp1))
+t47:=isoutni(xpy1,m0,trlessis"n"(m0,x,xpy1,1top(x,m),t1(yp1)),inn(xyp1,mxyp1),trlessis"n"(inn(xyp1,mxyp1),xyp1,xpy1,1top(xyp1,mxyp1),t12),t46):is"e"(1to(xpy1),left1to(xpy1,x,t1(yp1),m),left1to(xpy1,xyp1,t12,mxyp1))
+t48:=isf(1to(xpy1),cx,f,left1to(xpy1,x,t1(yp1),m),left1to(xpy1,xyp1,t12,mxyp1),t47):is(<m>f1(x,yp1,f),<m>f1(x,y,frr))
+f@t49:=fisi(1to(x),cx,f1(x,yp1,f),f1(x,y,frr),[u:1to(x)]t48(u)):is"e"([u:1to(x)]cx,f1(x,yp1,f),f1(x,y,frr))
+t50:=isf([u:1to(x)]cx,cx,[t:[u:1to(x)]cx]smpr(x,t),f1(yp1,f),f1(frr),t49):is(smpr(x,f1(yp1,f)),smpr(x,f1(frr)))
+t51:=isf(cx,cx,[t:cx]<smpr(yp1,f2(yp1,f))><t>q,smpr(x,f1(frr)),smpr(x,f1(yp1,f)),symis(cx,smpr(x,f1(yp1,f)),smpr(x,f1(frr)),t50)):is(<smpr(yp1,f2(yp1,f))><smpr(x,f1(frr))>q,<smpr(yp1,f2(yp1,f))><smpr(x,f1(yp1,f))>q)
+t52:=tr4is(cx,smpr(xpy1,f),<xout(xyp1)>left(cx,xpy1,xyp1,t12,recf(xpy1,f)),smpr(xyp1,fr),<<xout(xyp1)>fr><smpr(xpy,frr)>q,<<xout(xyp1)>fr><<smpr(y,f2(frr))><smpr(x,f1(frr))>q>q,t16,t18,t20,t21):is(smpr(xpy1,f),<<xout(xyp1)>fr><<smpr(y,f2(frr))><smpr(x,f1(frr))>q>q)
+t53:=tr4is(cx,smpr(xpy1,f),<<xout(xyp1)>fr><<smpr(y,f2(frr))><smpr(x,f1(frr))>q>q,<<<xout(xyp1)>fr><smpr(y,f2(frr))>q><smpr(x,f1(frr))>q,<smpr(yp1,f2(yp1,f))><smpr(x,f1(frr))>q,<smpr(yp1,f2(yp1,f))><smpr(x,f1(yp1,f))>q,t52,t22,t43,t51):prop1(yp1,f)
+p@t54:=[u:[t:1to(xpy1)]cx]t53(u):prop2(yp1)
+t55:=isp(nat,[t:nat]prop2(t),yp1,<y>suc,t54,satz4a(y)):prop2(<y>suc)
+y@t56:=induction([t:nat]prop2(t),t11,[z:nat][t:prop2(z)]t55(z,t),y):prop2(y)
+-8281
+satz281:=<f>t56".8281":is(smpr(pl"n"(x,y),f),<smpr(y,right(cx,x,y,f))><smpr(x,left(cx,pl"n"(x,y),x,lessisi1"n"(x,pl"n"(x,y),satz18a(x,y)),f))>q)
+q@commut:=[x:cx][y:cx]is(<y><x>q,<x><y>q):'prop'
+@commutpl:=[x:cx][y:cx]compl(x,y):commut([x:cx][y:cx]pl(x,y))
+commutts:=[x:cx][y:cx]comts(x,y):commut([x:cx][y:cx]ts(x,y))
+q@[c:commut][z:cx][u:cx]
+comq:=<u><z>c:is(<u><z>q,<z><u>q)
+a@[c:commut(q)][x:nat][f:[t:1to(x)]cx][g:[t:1to(x)]cx]
++8282
+prop1:=is(smpr(x,[t:1to(x)]<<t>g><<t>f>q),<smpr(x,g)><smpr(x,f)>q):'prop'
+x@prop2:=all"l"([t:1to(x)]cx,[u:[t:1to(x)]cx]all"l"([t:1to(x)]cx,[v:[t:1to(x)]cx]prop1(u,v))):'prop'
+c@[f0:[t:1to(1)]cx][g0:[t:1to(1)]cx]
+t1:=satz277([t:1to(1)]<<t>g0><<t>f0>q):is(smpr(1,[t:1to(1)]<<t>g0><<t>f0>q),<<xout(1)>g0><<xout(1)>f0>q)
+t2:=isf(cx,cx,<smpr(1,f0)>q,smpr(1,g0),<xout(1)>g0,satz277(g0)):is(<smpr(1,g0)><smpr(1,f0)>q,<<xout(1)>g0><smpr(1,f0)>q)
+t3:=isf(cx,cx,[t:cx]<<xout(1)>g0><t>q,smpr(1,f0),<xout(1)>f0,satz277(f0)):is(<<xout(1)>g0><smpr(1,f0)>q,<<xout(1)>g0><<xout(1)>f0>q)
+t4:=tris(cx,<smpr(1,g0)><smpr(1,f0)>q,<<xout(1)>g0><smpr(1,f0)>q,<<xout(1)>g0><<xout(1)>f0>q,t2,t3):is(<smpr(1,g0)><smpr(1,f0)>q,<<xout(1)>g0><<xout(1)>f0>q)
+t5:=tris2(cx,smpr(1,[t:1to(1)]<<t>g0><<t>f0>q),<smpr(1,g0)><smpr(1,f0)>q,<<xout(1)>g0><<xout(1)>f0>q,t1,t4):prop1(1,f0,g0)
+c@t6:=[u:[t:1to(1)]cx][v:[t:1to(1)]cx]t5(u,v):prop2(1)
+x@xp1:=pl"n"(x,1):nat
+[p:prop2(x)][f:[t:1to(xp1)]cx][g:[t:1to(xp1)]cx]
+c@[u:cx][v:cx][w:cx][z:cx]
+t7:=assq2(a,<v><u>q,w,z):is(<<z><w>q><<v><u>q>q,<z><<w><<v><u>q>q>q)
+t8:=comq(c,<v><u>q,w):is(<w><<v><u>q>q,<<v><u>q><w>q)
+t9:=assq2(a,w,u,v):is(<<v><u>q><w>q,<v><<u><w>q>q)
+t10:=tris(cx,<w><<v><u>q>q,<<v><u>q><w>q,<v><<u><w>q>q,t8,t9):is(<w><<v><u>q>q,<v><<u><w>q>q)
+t11:=isf(cx,cx,[t:cx]<z><t>q,<w><<v><u>q>q,<v><<u><w>q>q,t10):is(<z><<w><<v><u>q>q>q,<z><<v><<u><w>q>q>q)
+t12:=assq1(a,<u><w>q,v,z):is(<z><<v><<u><w>q>q>q,<<z><v>q><<u><w>q>q)
+t13:=comq(c,w,u):is(<u><w>q,<w><u>q)
+t14:=isf(cx,cx,[t:cx]<<z><v>q><t>q,<u><w>q,<w><u>q,t13):is(<<z><v>q><<u><w>q>q,<<z><v>q><<w><u>q>q)
+t15:=tr4is(cx,<<z><w>q><<v><u>q>q,<z><<w><<v><u>q>q>q,<z><<v><<u><w>q>q>q,<<z><v>q><<u><w>q>q,<<z><v>q><<w><u>q>q,t7,t11,t12,t14):is(<<z><w>q><<v><u>q>q,<<z><v>q><<w><u>q>q)
+g@t16:=lessisi1"n"(x,xp1,satz18a(x,1)):lessis"n"(x,xp1)
+sfx:=smpr(x,left(cx,xp1,x,t16,f)):cx
+sgx:=smpr(x,left(cx,xp1,x,t16,g)):cx
+h:=[t:1to(xp1)]<<t>g><<t>f>q:[t:1to(xp1)]cx
+shx:=smpr(x,left(cx,xp1,x,t16,h)):cx
+t17:=satz278(x,h):is(smpr(xp1,h),<<<xout(xp1)>g><<xout(xp1)>f>q><shx>q)
+t18:=<left(cx,xp1,x,t16,g)><left(cx,xp1,x,t16,f)>p:is(shx,<sgx><sfx>q)
+t19:=isf(cx,cx,[t:cx]<<<xout(xp1)>g><<xout(xp1)>f>q><t>q,shx,<sgx><sfx>q,t18):is(<<<xout(xp1)>g><<xout(xp1)>f>q><shx>q,<<<xout(xp1)>g><<xout(xp1)>f>q><<sgx><sfx>q>q)
+t20:=t15(sfx,sgx,<xout(xp1)>f,<xout(xp1)>g):is(<<<xout(xp1)>g><<xout(xp1)>f>q><<sgx><sfx>q>q,<<<xout(xp1)>g><sgx>q><<<xout(xp1)>f><sfx>q>q)
+t21:=symis(cx,smpr(xp1,f),<<xout(xp1)>f><sfx>q,satz278(x,f)):is(<<xout(xp1)>f><sfx>q,smpr(xp1,f))
+t22:=isf(cx,cx,[t:cx]<<<xout(xp1)>g><sgx>q><t>q,<<xout(xp1)>f><sfx>q,smpr(xp1,f),t21):is(<<<xout(xp1)>g><sgx>q><<<xout(xp1)>f><sfx>q>q,<<<xout(xp1)>g><sgx>q><smpr(xp1,f)>q)
+t23:=symis(cx,smpr(xp1,g),<<xout(xp1)>g><sgx>q,satz278(x,g)):is(<<xout(xp1)>g><sgx>q,smpr(xp1,g))
+t24:=isf(cx,cx,<smpr(xp1,f)>q,<<xout(xp1)>g><sgx>q,smpr(xp1,g),t23):is(<<<xout(xp1)>g><sgx>q><smpr(xp1,f)>q,<smpr(xp1,g)><smpr(xp1,f)>q)
+t25:=tr3is(cx,smpr(xp1,h),<<<xout(xp1)>g><<xout(xp1)>f>q><shx>q,<<<xout(xp1)>g><<xout(xp1)>f>q><<sgx><sfx>q>q,<<<xout(xp1)>g><sgx>q><<<xout(xp1)>f><sfx>q>q,t17,t19,t20):is(smpr(xp1,h),<<<xout(xp1)>g><sgx>q><<<xout(xp1)>f><sfx>q>q)
+t26:=tr3is(cx,smpr(xp1,h),<<<xout(xp1)>g><sgx>q><<<xout(xp1)>f><sfx>q>q,<<<xout(xp1)>g><sgx>q><smpr(xp1,f)>q,<smpr(xp1,g)><smpr(xp1,f)>q,t25,t22,t24):prop1(xp1,f,g)
+p@t27:=[u:[t:1to(xp1)]cx][v:[t:1to(xp1)]cx]t26(u,v):prop2(xp1)
+t28:=isp(nat,[t:nat]prop2(t),xp1,<x>suc,t27,satz4a(x)):prop2(<x>suc)
+x@t29:=induction([t:nat]prop2(t),t6,[y:nat][t:prop2(y)]t28(y,t),x):prop2(x)
+-8282
+satz282:=<g><f>t29".8282":is(smpr(x,[t:1to(x)]<<t>g><<t>f>q),<smpr(x,g)><smpr(x,f)>q)
+x@[s:[t:1to(x)]1to(x)][b:bijective(1to(x),1to(x),s)][f:[t:1to(x)]cx]
++8283
+s@[f:[t:1to(x)]cx]
+g:=[t:1to(x)]<<t>s>f:[t:1to(x)]cx
+prop1:=is(smpr(x,g),smpr(x,f)):'prop'
+x@prop2:=all"l"([t:1to(x)]1to(x),[u:[t:1to(x)]1to(x)]all"l"([t:1to(x)]cx,[v:[t:1to(x)]cx]imp(bijective(1to(x),1to(x),u),prop1(u,v)))):'prop'
+c@[s:[t:1to(1)]1to(1)][f:[t:1to(1)]cx]
+t1:=tris2(1to(1),<xout(1)>s,xout(1),1o"n",th1"n.singlet"(<xout(1)>s),th1"n.singlet"(xout(1))):is"e"(1to(1),<xout(1)>s,xout(1))
+t2:=satz277(g(1,s,f)):is(smpr(1,g(1,s,f)),<xout(1)>g(1,s,f))
+t3:=isf(1to(1),cx,f,<xout(1)>s,xout(1),t1):is(<xout(1)>g(1,s,f),<xout(1)>f)
+t4:=symis(cx,smpr(1,f),<xout(1)>f,satz277(f)):is(<xout(1)>f,smpr(1,f))
+t5:=tr3is(cx,smpr(1,g(1,s,f)),<xout(1)>g(1,s,f),<xout(1)>f,smpr(1,f),t2,t3,t4):prop1(1,s,f)
+c@t6:=[u:[t:1to(1)]1to(1)][v:[t:1to(1)]cx][w:bijective(1to(1),1to(1),u)]t5(u,v):prop2(1)
+x@xp1:=pl"n"(x,1):nat
+t7:=lessisi1"n"(x,xp1,satz18a(x,1)):lessis"n"(x,xp1)
+[p:prop2(x)][s:[t:1to(xp1)]1to(xp1)][f:[t:1to(xp1)]cx][b:bijective(1to(xp1),1to(xp1),s)]
+t8:=ande1(injective(1to(xp1),1to(xp1),s),surjective(1to(xp1),1to(xp1),s),b):injective(1to(xp1),1to(xp1),s)
+[case1:is"e"(1to(xp1),<xout(xp1)>s,xout(xp1))][u:1to(x)]
+u1:=left1to(xp1,x,t7,u):1to(xp1)
+n1:=inn(xp1,<u1>s):nat
+[i:is"n"(n1,xp1)]
+t9:=tr3is(1to(xp1),<u1>s,outn(xp1,n1,1top(xp1,<u1>s)),xout(xp1),<xout(xp1)>s,isoutinn(xp1,<u1>s),isoutni(xp1,n1,1top(xp1,<u1>s),xp1,lessisi3(xp1),i),symis(1to(xp1),<xout(xp1)>s,xout(xp1),case1)):is"e"(1to(xp1),<u1>s,<xout(xp1)>s)
+t10:=isfe(1to(xp1),1to(xp1),s,t8,u1,xout(xp1),t9):is"e"(1to(xp1),u1,xout(xp1))
+t11:=isoutne(xp1,inn(x,u),trlessis"n"(inn(x,u),x,xp1,1top(x,u),t7),xp1,lessisi3(xp1),t10):is"n"(inn(x,u),xp1)
+t12:=satz16a(inn(x,u),x,xp1,1top(x,u),satz18a(x,1)):less"n"(inn(x,u),xp1)
+t13:=<t11>ec3e31(is"n"(inn(x,u),xp1),more"n"(inn(x,u),xp1),less"n"(inn(x,u),xp1),satz10b(inn(x,u),xp1),t12):con
+u@t14:=ore1(less"n"(n1,xp1),is"n"(n1,xp1),1top(xp1,<u1>s),[t:is"n"(n1,xp1)]t13(t)):less"n"(n1,xp1)
+t15:=satz26(x,n1,t14):lessis"n"(n1,x)
+w1:=outn(x,n1,t15):1to(x)
+case1@s01:=[t:1to(x)]w1(t):[t:1to(x)]1to(x)
+u@[v:1to(x)][i:is"e"(1to(x),w1(u),w1(v))]
+t16:=isoutne(x,n1(u),t15(u),n1(v),t15(v),i):is"n"(n1(u),n1(v))
+t17:=<isinne(xp1,<u1(u)>s,<u1(v)>s,t16)><u1(v)><u1(u)>t8:is"e"(1to(xp1),u1(u),u1(v))
+t18:=thleft1(xp1,x,t7,u,v,t17):is"e"(1to(x),u,v)
+u@u2:=<u1>invf(1to(xp1),1to(xp1),s,b):1to(xp1)
+n2:=inn(xp1,u2):nat
+[i:is"n"(n2,xp1)]
+t19:=tris(1to(xp1),u2,outn(xp1,n2,1top(xp1,u2)),xout(xp1),isoutinn(xp1,u2),isoutni(xp1,n2,1top(xp1,u2),xp1,lessisi3(xp1),i)):is"e"(1to(xp1),u2,xout(xp1))
+t20:=tr3is(1to(xp1),u1,<u2>s,<xout(xp1)>s,xout(xp1),thinvf2(1to(xp1),1to(xp1),s,b,u1),isf(1to(xp1),1to(xp1),s,u2,xout(xp1),t19),case1):is"e"(1to(xp1),u1,xout(xp1))
+t21:=isoutne(xp1,inn(x,u),trlessis"n"(inn(x,u),x,xp1,1top(x,u),t7),xp1,lessisi3(xp1),t20):is"n"(inn(x,u),xp1)
+t22:=satz16a(inn(x,u),x,xp1,1top(x,u),satz18a(x,1)):less"n"(inn(x,u),xp1)
+t23:=<t21>ec3e31(is"n"(inn(x,u),xp1),more"n"(inn(x,u),xp1),less"n"(inn(x,u),xp1),satz10b(inn(x,u),xp1),t22):con
+u@t24:=ore1(less"n"(n2,xp1),is"n"(n2,xp1),1top(xp1,u2),[t:is"n"(n2,xp1)]t23(t)):less"n"(n2,xp1)
+t25:=satz26(x,n2,t24):lessis"n"(n2,x)
+w2:=outn(x,n2,t25):1to(x)
+t26:=isinoutn(x,n2,t25):is"n"(n2,inn(x,w2))
+t27:=tris(1to(xp1),u2,outn(xp1,n2,1top(xp1,u2)),u1(w2),isoutinn(xp1,u2),isoutni(xp1,n2,1top(xp1,u2),inn(x,w2),trlessis"n"(inn(x,w2),x,xp1,1top(x,w2),t7),t26)):is"e"(1to(xp1),u2,u1(w2))
+t28:=tris(1to(xp1),u1,<u2>s,<u1(w2)>s,thinvf2(1to(xp1),1to(xp1),s,b,u1),isf(1to(xp1),1to(xp1),s,u2,u1(w2),t27)):is"e"(1to(xp1),u1,<u1(w2)>s)
+t29:=tris(nat,inn(x,u),inn(xp1,u1),n1(w2),isinoutn(xp1,inn(x,u),trlessis"n"(inn(x,u),x,xp1,1top(x,u),t7)),isinni(xp1,u1,<u1(w2)>s,t28)):is"n"(inn(x,u),n1(w2))
+t30:=tris(1to(x),u,outn(x,inn(x,u),1top(x,u)),w1(w2),isoutinn(x,u),isoutni(x,inn(x,u),1top(x,u),n1(w2),t15(w2),t29)):is"e"(1to(x),u,w1(w2))
+t31:=somei(1to(x),[t:1to(x)]is"e"(1to(x),u,w1(t)),w2,t30):image(1to(x),1to(x),s01,u)
+case1@t32:=andi(injective(1to(x),1to(x),s01),surjective(1to(x),1to(x),s01),[t:1to(x)][u:1to(x)][v:is"e"(1to(x),<t>s01,<u>s01)]t18(t,u,v),[t:1to(x)]t31(t)):bijective(1to(x),1to(x),s01)
+f01:=left(cx,xp1,x,t7,f):[t:1to(x)]cx
+t33:=<t32><f01><s01>p:prop1(s01,f01)
+g1:=left(cx,xp1,x,t7,g(xp1,s,f)):[t:1to(x)]cx
+g2:=g(x,s01,f01):[t:1to(x)]cx
+u@t33a:=isoutinn(xp1,<u1>s):is"e"(1to(xp1),<u1>s,outn(xp1,n1,1top(xp1,<u1>s)))
+t34:=isinoutn(x,n1,t15):is"n"(n1,inn(x,w1))
+t35:=isoutni(xp1,n1,1top(xp1,<u1>s),inn(x,w1),trlessis"n"(inn(x,w1),x,xp1,1top(x,w1),t7),t34):is"e"(1to(xp1),outn(xp1,n1,1top(xp1,<u1>s)),left1to(xp1,x,t7,w1))
+t36:=tris(1to(xp1),<u1>s,outn(xp1,n1,1top(xp1,<u1>s)),left1to(xp1,x,t7,w1),t33a,t35):is"e"(1to(xp1),<u1>s,left1to(xp1,x,t7,w1))
+t37:=isf(1to(xp1),cx,f,<u1>s,left1to(xp1,x,t7,w1),t36):is(<u>g1,<u>g2)
+case1@t38:=fisi(1to(x),cx,g1,g2,[t:1to(x)]t37(t)):is"e"([t:1to(x)]cx,g1,g2)
+t39:=isf([t:1to(x)]cx,cx,[u:[t:1to(x)]cx]smpr(x,u),g1,g2,t38):is(smpr(x,g1),smpr(x,g2))
+t40:=tris(cx,smpr(x,g1),smpr(x,g2),smpr(x,f01),t39,t33):is(smpr(x,g1),smpr(x,f01))
+t41:=isf(1to(xp1),cx,f,<xout(xp1)>s,xout(xp1),case1):is(<xout(xp1)>g(xp1,s,f),<xout(xp1)>f)
+t42:=satz278(x,g(xp1,s,f)):is(smpr(xp1,g(xp1,s,f)),<<xout(xp1)>g(xp1,s,f)><smpr(x,g1)>q)
+t43:=isf(cx,cx,<smpr(x,g1)>q,<xout(xp1)>g(xp1,s,f),<xout(xp1)>f,t41):is(<<xout(xp1)>g(xp1,s,f)><smpr(x,g1)>q,<<xout(xp1)>f><smpr(x,g1)>q)
+t44:=isf(cx,cx,[t:cx]<<xout(xp1)>f><t>q,smpr(x,g1),smpr(x,f01),t40):is(<<xout(xp1)>f><smpr(x,g1)>q,<<xout(xp1)>f><smpr(x,f01)>q)
+t45:=symis(cx,smpr(xp1,f),<<xout(xp1)>f><smpr(x,f01)>q,satz278(x,f)):is(<<xout(xp1)>f><smpr(x,f01)>q,smpr(xp1,f))
+t46:=tr4is(cx,smpr(xp1,g(xp1,s,f)),<<xout(xp1)>g(xp1,s,f)><smpr(x,g1)>q,<<xout(xp1)>f><smpr(x,g1)>q,<<xout(xp1)>f><smpr(x,f01)>q,smpr(xp1,f),t42,t43,t44,t45):prop1(xp1,s,f)
+b@1px:=pl"n"(1,x):nat
+[case2:is"e"(1to(xp1),<1out(xp1)>s,1out(xp1))][u:1to(x)]
+u3:=right1to(1,x,u):1to(1px)
+case2@t47:=lessisi2"n"(1px,xp1,compl"n"(1,x)):lessis"n"(1px,xp1)
+s02:=left(1to(xp1),xp1,1px,t47,s):[t:1to(1px)]1to(xp1)
+u@n3:=inn(xp1,<u3>s02):nat
+[i:is"n"(n3,1)]
+t48:=tr3is(1to(xp1),<u3>s02,outn(xp1,n3,1top(xp1,<u3>s02)),1out(xp1),<1out(xp1)>s,isoutinn(xp1,<u3>s02),isoutni(xp1,n3,1top(xp1,<u3>s02),1,satz24a(xp1),i),symis(1to(xp1),<1out(xp1)>s,1out(xp1),case2)):is"e"(1to(xp1),<u3>s02,<1out(xp1)>s)
+t49:=isfe(1to(xp1),1to(xp1),s,t8,left1to(xp1,1px,t47,u3),1out(xp1),t48):is"e"(1to(xp1),left1to(xp1,1px,t47,u3),1out(xp1))
+t50:=isoutne(xp1,inn(1px,u3),trlessis"n"(inn(1px,u3),1px,xp1,1top(1px,u3),t47),1,satz24a(xp1),t49):is"n"(inn(1px,u3),1)
+t51:=isinoutn(1px,pl"n"(1,inn(x,u)),satz19o(inn(x,u),x,1,1top(x,u))):is"n"(pl"n"(1,inn(x,u)),inn(1px,u3))
+t52:=ismore1"n"(pl"n"(1,inn(x,u)),inn(1px,u3),1,t51,satz18(1,inn(x,u))):more"n"(inn(1px,u3),1)
+t53:=<t50>ec3e21(is"n"(inn(1px,u3),1),more"n"(inn(1px,u3),1),less"n"(inn(1px,u3),1),satz10b(inn(1px,u3),1),t52):con
+u@t54:=ore1(more"n"(n3,1),is"n"(n3,1),satz24(n3),[t:is"n"(n3,1)]t53(t)):more"n"(n3,1)
+nm1:=mn"n"(n3,1,t54):nat
+t54a:=islessis1"n"(n3,pl"n"(nm1,1),xp1,th1c"n.mn"(n3,1,t54),1top(xp1,<u3>s02)):lessis"n"(pl"n"(nm1,1),xp1)
+t55:=th9"l.or"(less"n"(pl"n"(nm1,1),xp1),is"n"(pl"n"(nm1,1),xp1),less"n"(nm1,x),is"n"(nm1,x),t54a,[t:less"n"(pl"n"(nm1,1),xp1)]satz20c(nm1,x,1,t),[t:is"n"(pl"n"(nm1,1),xp1)]satz20b(nm1,x,1,t)):lessis"n"(nm1,x)
+w3:=outn(x,nm1,t55):1to(x)
+case2@s03:=[t:1to(x)]w3(t):[t:1to(x)]1to(x)
+u@[v:1to(x)][i:is"e"(1to(x),w3(u),w3(v))]
+t56:=isoutne(x,nm1(u),t55(u),nm1(v),t55(v),i):is"n"(nm1(u),nm1(v))
+t57:=tr3is(nat,n3(u),pl"n"(nm1(u),1),pl"n"(nm1(v),1),n3(v),th1c"n.mn"(n3(u),1,t54(u)),ispl1"n"(nm1(u),nm1(v),1,t56),th1d"n.mn"(n3(v),1,t54(v))):is"n"(n3(u),n3(v))
+t58:=isinne(xp1,<u3(u)>s02,<u3(v)>s02,t57):is"e"(1to(xp1),<u3(u)>s02,<u3(v)>s02)
+t59:=isfe(1to(xp1),1to(xp1),s,t8,left1to(xp1,1px,t47,u3(u)),left1to(xp1,1px,t47,u3(v)),t58):is"e"(1to(xp1),left1to(xp1,1px,t47,u3(u)),left1to(xp1,1px,t47,u3(v)))
+t60:=thleft1(xp1,1px,t47,u3(u),u3(v),t59):is"e"(1to(1px),u3(u),u3(v))
+t61:=thright1(1,x,u,v,t60):is"e"(1to(x),u,v)
+case2@s04:=left(1to(xp1),xp1,1px,t47,invf(1to(xp1),1to(xp1),s,b)):[t:1to(1px)]1to(xp1)
+u@u4:=<u3>s04:1to(xp1)
+n4:=inn(xp1,u4):nat
+[i:is"n"(n4,1)]
+t62:=tris(1to(xp1),u4,outn(xp1,n4,1top(xp1,u4)),1out(xp1),isoutinn(xp1,u4),isoutni(xp1,n4,1top(xp1,u4),1,satz24a(xp1),i)):is"e"(1to(xp1),u4,1out(xp1))
+t63:=tr3is(1to(xp1),left1to(xp1,1px,t47,u3),<u4>s,<1out(xp1)>s,1out(xp1),thinvf2(1to(xp1),1to(xp1),s,b,left1to(xp1,1px,t47,u3)),isf(1to(xp1),1to(xp1),s,u4,1out(xp1),t62),case2):is"e"(1to(xp1),left1to(xp1,1px,t47,u3),1out(xp1))
+t64:=isoutne(xp1,inn(1px,u3),trlessis"n"(inn(1px,u3),1px,xp1,1top(1px,u3),t47),1,satz24a(xp1),t63):is"n"(inn(1px,u3),1)
+t65:=tris(nat,pl"n"(1,inn(x,u)),inn(1px,u3),1,isinoutn(1px,pl"n"(1,inn(x,u)),satz19o(inn(x,u),x,1,1top(x,u))),t64):is"n"(pl"n"(1,inn(x,u)),1)
+t66:=<t65>ec3e21(is"n"(pl"n"(1,inn(x,u)),1),more"n"(pl"n"(1,inn(x,u)),1),less"n"(pl"n"(1,inn(x,u)),1),satz10b(pl"n"(1,inn(x,u)),1),satz18(1,inn(x,u))):con
+u@t67:=ore1(more"n"(n4,1),is"n"(n4,1),satz24(n4),[t:is"n"(n4,1)]t66(t)):more"n"(n4,1)
+nm2:=mn"n"(n4,1,t67):nat
+t68:=islessis1"n"(n4,pl"n"(nm2,1),xp1,th1c"n.mn"(n4,1,t67),1top(xp1,u4)):lessis"n"(pl"n"(nm2,1),xp1)
+t69:=th9"l.or"(less"n"(pl"n"(nm2,1),xp1),is"n"(pl"n"(nm2,1),xp1),less"n"(nm2,x),is"n"(nm2,x),t68,[t:less"n"(pl"n"(nm2,1),xp1)]satz20c(nm2,x,1,t),[t:is"n"(pl"n"(nm2,1),xp1)]satz20b(nm2,x,1,t)):lessis"n"(nm2,x)
+w4:=outn(x,nm2,t69):1to(x)
+t70:=isinoutn(x,nm2,t69):is"n"(nm2,inn(x,w4))
+t71:=tr3is(nat,n4,pl"n"(1,nm2),pl"n"(1,inn(x,w4)),inn(1px,u3(w4)),th1a"n.mn"(n4,1,t67),ispl2"n"(nm2,inn(x,w4),1,t70),isinoutn(1px,pl"n"(1,inn(x,w4)),satz19o(inn(x,w4),x,1,1top(x,w4)))):is"n"(n4,inn(1px,u3(w4)))
+t72:=tris(1to(xp1),u4,outn(xp1,n4,1top(xp1,u4)),left1to(xp1,1px,t47,u3(w4)),isoutinn(xp1,u4),isoutni(xp1,n4,1top(xp1,u4),inn(1px,u3(w4)),trlessis"n"(inn(1px,u3(w4)),1px,xp1,1top(1px,u3(w4)),t47),t71)):is"e"(1to(xp1),u4,left1to(xp1,1px,t47,u3(w4)))
+t73:=tris(1to(xp1),left1to(xp1,1px,t47,u3),<u4>s,<u3(w4)>s02,thinvf2(1to(xp1),1to(xp1),s,b,left1to(xp1,1px,t47,u3)),isf(1to(xp1),1to(xp1),s,u4,left1to(xp1,1px,t47,u3(w4)),t72)):is"e"(1to(xp1),left1to(xp1,1px,t47,u3),<u3(w4)>s02)
+t74:=tr3is(nat,pl"n"(1,inn(x,u)),inn(1px,u3),inn(xp1,left1to(xp1,1px,t47,u3)),n3(w4),isinoutn(1px,pl"n"(1,inn(x,u)),satz19o(inn(x,u),x,1,1top(x,u))),isinoutn(xp1,inn(1px,u3),trlessis"n"(inn(1px,u3),1px,xp1,1top(1px,u3),t47)),isinni(xp1,left1to(xp1,1px,t47,u3),<u3(w4)>s02,t73)):is"n"(pl"n"(1,inn(x,u)),n3(w4))
+t75:=th1e"n.mn"(n3(w4),1,inn(x,u),t54(w4),t74):is"n"(inn(x,u),nm1(w4))
+t76:=tris(1to(x),u,outn(x,inn(x,u),1top(x,u)),w3(w4),isoutinn(x,u),isoutni(x,inn(x,u),1top(x,u),nm1(w4),t55(w4),t75)):is"e"(1to(x),u,w3(w4))
+t77:=somei(1to(x),[t:1to(x)]is"e"(1to(x),u,w3(t)),w4,t76):image(1to(x),1to(x),s03,u)
+case2@t78:=andi(injective(1to(x),1to(x),s03),surjective(1to(x),1to(x),s03),[t:1to(x)][u:1to(x)][v:is"e"(1to(x),<t>s03,<u>s03)]t61(t,u,v),[t:1to(x)]t77(t)):bijective(1to(x),1to(x),s03)
+f02:=left(cx,xp1,1px,t47,f):[t:1to(1px)]cx
+f03:=right(cx,1,x,f02):[t:1to(x)]cx
+t79:=<t78><f03><s03>p:prop1(s03,f03)
+g3:=left(cx,xp1,1px,t47,g(xp1,s,f)):[t:1to(1px)]cx
+g4:=right(cx,1,x,g3):[t:1to(x)]cx
+g5:=g(x,s03,f03):[t:1to(x)]cx
+u@t80:=tr3is(nat,n3,pl"n"(1,nm1),pl"n"(1,inn(x,w3)),inn(1px,right1to(1,x,w3)),th1a"n.mn"(n3,1,t54),ispl2"n"(nm1,inn(x,w3),1,isinoutn(x,nm1,t55)),isinoutn(1px,pl"n"(1,inn(x,w3)),satz19o(inn(x,w3),x,1,1top(x,w3)))):is"n"(n3,inn(1px,right1to(1,x,w3)))
+t81:=tris(1to(xp1),<u3>s02,outn(xp1,n3,1top(xp1,<u3>s02)),left1to(xp1,1px,t47,right1to(1,x,w3)),isoutinn(xp1,<u3>s02),isoutni(xp1,n3,1top(xp1,<u3>s02),inn(1px,right1to(1,x,w3)),trlessis"n"(inn(1px,right1to(1,x,w3)),1px,xp1,1top(1px,right1to(1,x,w3)),t47),t80)):is"e"(1to(xp1),<u3>s02,left1to(xp1,1px,t47,right1to(1,x,w3)))
+t82:=isf(1to(xp1),cx,f,<u3>s02,left1to(xp1,1px,t47,right1to(1,x,w3)),t81):is(<u>g4,<u>g5)
+case2@t83:=fisi(1to(x),cx,g4,g5,[t:1to(x)]t82(t)):is"e"([t:1to(x)]cx,g4,g5)
+t85:=isf([t:1to(x)]cx,cx,[u:[t:1to(x)]cx]smpr(x,u),g4,g5,t83):is(smpr(x,g4),smpr(x,g5))
+t86:=tris(cx,smpr(x,g4),smpr(x,g5),smpr(x,f03),t85,t79):is(smpr(x,g4),smpr(x,f03))
+t87:=lessisi1"n"(1,1px,satz18a(1,x)):lessis"n"(1,1px)
+g6:=left(cx,1px,1,t87,g3):[t:1to(1)]cx
+f04:=left(cx,1px,1,t87,f02):[t:1to(1)]cx
+t87a:=isinoutn(1,1,lessisi3(1)):is"n"(1,inn(1,xout(1)))
+1d:=left1to(1px,1,t87,xout(1)):1to(1px)
+t87b:=isinoutn(1px,inn(1,xout(1)),trlessis"n"(inn(1,xout(1)),1,1px,1top(1,xout(1)),t87)):is"n"(inn(1,xout(1)),inn(1px,1d))
+t88:=tris(nat,1,inn(1,xout(1)),inn(1px,1d),t87a,t87b):is"n"(1,inn(1px,1d))
+1e:=left1to(xp1,1px,t47,1d):1to(xp1)
+t88a:=isoutni(xp1,1,satz24a(xp1),inn(1px,1d),trlessis"n"(inn(1px,1d),1px,xp1,1top(1px,1d),t47),t88):is"e"(1to(xp1),1out(xp1),1e)
+t88b:=isf(1to(xp1),1to(xp1),s,1e,1out(xp1),symis(1to(xp1),1out(xp1),1e,t88a)):is"e"(1to(xp1),<1e>s,<1out(xp1)>s)
+t89:=tr3is(1to(xp1),<1e>s,<1out(xp1)>s,1out(xp1),1e,t88b,case2,t88a):is"e"(1to(xp1),<1e>s,1e)
+t89a:=tr3is(cx,smpr(1,g6),<xout(1)>g6,<xout(1)>f04,smpr(1,f04),satz277(g6),isf(1to(xp1),cx,f,<1e>s,1e,t89),symis(cx,smpr(1,f04),<xout(1)>f04,satz277(f04))):is(smpr(1,g6),smpr(1,f04))
+t90:=satz281(1,x,g3):is(smpr(1px,g3),<smpr(x,g4)><smpr(1,g6)>q)
+t91:=isf(cx,cx,<smpr(1,g6)>q,smpr(x,g4),smpr(x,f03),t86):is(<smpr(x,g4)><smpr(1,g6)>q,<smpr(x,f03)><smpr(1,g6)>q)
+t92:=isf(cx,cx,[t:cx]<smpr(x,f03)><t>q,smpr(1,g6),smpr(1,f04),t89a):is(<smpr(x,f03)><smpr(1,g6)>q,<smpr(x,f03)><smpr(1,f04)>q)
+t93:=symis(cx,smpr(1px,f02),<smpr(x,f03)><smpr(1,f04)>q,satz281(1,x,f02)):is(<smpr(x,f03)><smpr(1,f04)>q,smpr(1px,f02))
+t94:=tr4is(cx,smpr(1px,g3),<smpr(x,g4)><smpr(1,g6)>q,<smpr(x,f03)><smpr(1,g6)>q,<smpr(x,f03)><smpr(1,f04)>q,smpr(1px,f02),t90,t91,t92,t93):is(smpr(1px,g3),smpr(1px,f02))
+t95:=issmpr(xp1,f,1px,compl"n"(1,x)):is(smpr(1px,f02),smpr(xp1,f))
+t96:=symis(cx,smpr(1px,g3),smpr(xp1,g(xp1,s,f)),issmpr(xp1,g(xp1,s,f),1px,compl"n"(1,x))):is(smpr(xp1,g(xp1,s,f)),smpr(1px,g3))
+t97:=tr3is(cx,smpr(xp1,g(xp1,s,f)),smpr(1px,g3),smpr(1px,f02),smpr(xp1,f),t96,t94,t95):prop1(xp1,s,f)
+b@[not1:not(is"e"(1to(xp1),<xout(xp1)>s,xout(xp1)))][not2:not(is"e"(1to(xp1),<1out(xp1)>s,1out(xp1)))]
+a0:=<1out(xp1)>s:1to(xp1)
+b0:=<1out(xp1)>invf(1to(xp1),1to(xp1),s,b):1to(xp1)
+t98:=thinvf2(1to(xp1),1to(xp1),s,b,1out(xp1)):is"e"(1to(xp1),1out(xp1),<b0>s)
+t99:=not2:not(is"e"(1to(xp1),a0,1out(xp1)))
+t100:=symnotis(1to(xp1),<1out(xp1)>s,<b0>s,th3"e.notis"(1to(xp1),<1out(xp1)>s,1out(xp1),<b0>s,not2,t98)):not(is"e"(1to(xp1),<b0>s,<1out(xp1)>s))
+t101:=th3"l.imp"(is"e"(1to(xp1),b0,1out(xp1)),is"e"(1to(xp1),<b0>s,<1out(xp1)>s),t100,[t:is"e"(1to(xp1),b0,1out(xp1))]isf(1to(xp1),1to(xp1),s,b0,1out(xp1),t)):not(is"e"(1to(xp1),b0,1out(xp1)))
+s1:=changef(1to(xp1),1to(xp1),s,1out(xp1),b0):[t:1to(xp1)]1to(xp1)
+[u:1to(xp1)][i:is"e"(1to(xp1),u,1out(xp1))]
+t102:=changef1(1to(xp1),1to(xp1),s,1out(xp1),b0,u,i):is"e"(1to(xp1),<u>s1,<b0>s)
+t103:=tris2(1to(xp1),<u>s1,1out(xp1),<b0>s,t102,t98):is"e"(1to(xp1),<u>s1,1out(xp1))
+u@[i:is"e"(1to(xp1),u,b0)]
+t104:=changef2(1to(xp1),1to(xp1),s,1out(xp1),b0,u,i):is"e"(1to(xp1),<u>s1,a0)
+u@[n:not(is"e"(1to(xp1),u,1out(xp1)))][o:not(is"e"(1to(xp1),u,b0))]
+t105:=changef3(1to(xp1),1to(xp1),s,1out(xp1),b0,u,n,o):is"e"(1to(xp1),<u>s1,<u>s)
+not2@t106:=th6"e.wissel"(1to(xp1),1to(xp1),s,1out(xp1),b0,b):bijective(1to(xp1),1to(xp1),s1)
+[alpha:not(is"e"(1to(xp1),a0,xout(xp1)))]
+s2:=wissel(1to(xp1),1out(xp1),a0):[t:1to(xp1)]1to(xp1)
+t107:=th3"e.wissel"(1to(xp1),1out(xp1),a0):bijective(1to(xp1),1to(xp1),s2)
+[u:1to(xp1)][i:is"e"(1to(xp1),u,1out(xp1))]
+t108:=iswissel1(1to(xp1),1out(xp1),a0,<u>s1,t103(u,i)):is"e"(1to(xp1),<<u>s1>s2,a0)
+t109:=tris2(1to(xp1),<u>s,<<u>s1>s2,a0,isf(1to(xp1),1to(xp1),s,u,1out(xp1),i),t108):is"e"(1to(xp1),<u>s,<<u>s1>s2)
+u@[i:is"e"(1to(xp1),u,b0)]
+t110:=iswissel2(1to(xp1),1out(xp1),a0,<u>s1,t104(u,i)):is"e"(1to(xp1),<<u>s1>s2,1out(xp1))
+t111:=tris2(1to(xp1),<u>s,<<u>s1>s2,1out(xp1),tris2(1to(xp1),<u>s,1out(xp1),<b0>s,isf(1to(xp1),1to(xp1),s,u,b0,i),t98),t110):is"e"(1to(xp1),<u>s,<<u>s1>s2)
+u@[n:not(is"e"(1to(xp1),u,1out(xp1)))][o:not(is"e"(1to(xp1),u,b0))][i:is"e"(1to(xp1),<u>s1,1out(xp1))]
+t112:=isfe(1to(xp1),1to(xp1),s1,t8(s1,f,t106),u,1out(xp1),tris2(1to(xp1),<u>s1,<1out(xp1)>s1,1out(xp1),i,t103(1out(xp1),refis(1to(xp1),1out(xp1))))):is"e"(1to(xp1),u,1out(xp1))
+o@t113:=th3"l.imp"(is"e"(1to(xp1),<u>s1,1out(xp1)),is"e"(1to(xp1),u,1out(xp1)),n,[t:is"e"(1to(xp1),<u>s1,1out(xp1))]t112(t)):not(is"e"(1to(xp1),<u>s1,1out(xp1)))
+[i:is"e"(1to(xp1),<u>s1,a0)]
+t114:=isfe(1to(xp1),1to(xp1),s1,t8(s1,f,t106),u,b0,tris2(1to(xp1),<u>s1,<b0>s1,a0,i,t104(b0,refis(1to(xp1),b0)))):is"e"(1to(xp1),u,b0)
+o@t115:=th3"l.imp"(is"e"(1to(xp1),<u>s1,a0),is"e"(1to(xp1),u,b0),o,[t:is"e"(1to(xp1),<u>s1,a0)]t114(t)):not(is"e"(1to(xp1),<u>s1,a0))
+t116:=iswissel3(1to(xp1),1out(xp1),a0,<u>s1,t113,t115):is"e"(1to(xp1),<<u>s1>s2,<u>s1)
+t117:=symis(1to(xp1),<<u>s1>s2,<u>s,tris(1to(xp1),<<u>s1>s2,<u>s1,<u>s,t116,t105(u,n,o))):is"e"(1to(xp1),<u>s,<<u>s1>s2)
+n@t118:=th1"l.imp"(is"e"(1to(xp1),u,b0),is"e"(1to(xp1),<u>s,<<u>s1>s2),[t:is"e"(1to(xp1),u,b0)]t111(t),[t:not(is"e"(1to(xp1),u,b0))]t117(t)):is"e"(1to(xp1),<u>s,<<u>s1>s2)
+u@t119:=th1"l.imp"(is"e"(1to(xp1),u,1out(xp1)),is"e"(1to(xp1),<u>s,<<u>s1>s2),[t:is"e"(1to(xp1),u,1out(xp1))]t109(t),[t:not(is"e"(1to(xp1),u,1out(xp1)))]t118(t)):is"e"(1to(xp1),<u>s,<<u>s1>s2)
+alpha@t120:=fisi(1to(xp1),1to(xp1),s,[t:1to(xp1)]<<t>s1>s2,[t:1to(xp1)]t119(t)):is"e"([t:1to(xp1)]1to(xp1),s,[t:1to(xp1)]<<t>s1>s2)
+not2@t121:=t103(1out(xp1),refis(1to(xp1),1out(xp1))):is"e"(1to(xp1),<1out(xp1)>s1,1out(xp1))
+t121a:=ec3e21(is"n"(xp1,1),more"n"(xp1,1),less"n"(xp1,1),satz10b(xp1,1),ismore1"n"(1px,xp1,1,compl"n"(1,x),satz18(1,x))):nis"n"(xp1,1)
+t122:=th3"l.imp"(is"e"(1to(xp1),xout(xp1),1out(xp1)),is"n"(xp1,1),t121a,[t:is"e"(1to(xp1),xout(xp1),1out(xp1))]isoutne(xp1,xp1,lessisi3(xp1),1,satz24a(xp1),t)):not(is"e"(1to(xp1),xout(xp1),1out(xp1)))
+alpha@t123:=symnotis(1to(xp1),a0,xout(xp1),alpha):not(is"e"(1to(xp1),xout(xp1),a0))
+t124:=iswissel3(1to(xp1),1out(xp1),a0,xout(xp1),t122,t123):is"e"(1to(xp1),<xout(xp1)>s2,xout(xp1))
+t125:=isf([t:1to(xp1)]1to(xp1),cx,[u:[t:1to(xp1)]1to(xp1)]smpr(xp1,g(xp1,u,f)),s,[t:1to(xp1)]<<t>s1>s2,t120):is(smpr(xp1,g(xp1,s,f)),smpr(xp1,g(xp1,s1,g(xp1,s2,f))))
+t126:=t97(s1,g(xp1,s2,f),t106,t121):is(smpr(xp1,g(xp1,s1,g(xp1,s2,f))),smpr(xp1,g(xp1,s2,f)))
+t127:=t46(s2,f,t107,t124):is(smpr(xp1,g(xp1,s2,f)),smpr(xp1,f))
+t128:=tr3is(cx,smpr(xp1,g(xp1,s,f)),smpr(xp1,g(xp1,s1,g(xp1,s2,f))),smpr(xp1,g(xp1,s2,f)),smpr(xp1,f),t125,t126,t127):prop1(xp1,s,f)
+not2@[i3:is"e"(1to(xp1),a0,xout(xp1))][beta:not(is"e"(1to(xp1),b0,xout(xp1)))]
+s3:=wissel(1to(xp1),1out(xp1),b0):[t:1to(xp1)]1to(xp1)
+t129:=th3"e.wissel"(1to(xp1),1out(xp1),b0):bijective(1to(xp1),1to(xp1),s3)
+[u:1to(xp1)][i:is"e"(1to(xp1),u,1out(xp1))]
+t130:=t104(<u>s3,iswissel1(1to(xp1),1out(xp1),b0,u,i)):is"e"(1to(xp1),<<u>s3>s1,a0)
+t131:=tris2(1to(xp1),<u>s,<<u>s3>s1,a0,isf(1to(xp1),1to(xp1),s,u,1out(xp1),i),t130):is"e"(1to(xp1),<u>s,<<u>s3>s1)
+u@[i:is"e"(1to(xp1),u,b0)]
+t132:=t103(<u>s3,iswissel2(1to(xp1),1out(xp1),b0,u,i)):is"e"(1to(xp1),<<u>s3>s1,1out(xp1))
+t133:=tris2(1to(xp1),<u>s,<<u>s3>s1,<b0>s,isf(1to(xp1),1to(xp1),s,u,b0,i),tris(1to(xp1),<<u>s3>s1,1out(xp1),<b0>s,t132,t98)):is"e"(1to(xp1),<u>s,<<u>s3>s1)
+u@[n:not(is"e"(1to(xp1),u,1out(xp1)))][o:not(is"e"(1to(xp1),u,b0))]
+t134:=iswissel3(1to(xp1),1out(xp1),b0,u,n,o):is"e"(1to(xp1),<u>s3,u)
+t135:=isf(1to(xp1),1to(xp1),s1,<u>s3,u,t134):is"e"(1to(xp1),<<u>s3>s1,<u>s1)
+t136:=t105(u,n,o):is"e"(1to(xp1),<u>s1,<u>s)
+t139:=symis(1to(xp1),<<u>s3>s1,<u>s,tris(1to(xp1),<<u>s3>s1,<u>s1,<u>s,t135,t136)):is"e"(1to(xp1),<u>s,<<u>s3>s1)
+n@t140:=th1"l.imp"(is"e"(1to(xp1),u,b0),is"e"(1to(xp1),<u>s,<<u>s3>s1),[t:is"e"(1to(xp1),u,b0)]t133(t),[t:not(is"e"(1to(xp1),u,b0))]t139(t)):is"e"(1to(xp1),<u>s,<<u>s3>s1)
+u@t141:=th1"l.imp"(is"e"(1to(xp1),u,1out(xp1)),is"e"(1to(xp1),<u>s,<<u>s3>s1),[t:is"e"(1to(xp1),u,1out(xp1))]t131(t),[t:not(is"e"(1to(xp1),u,1out(xp1)))]t140(t)):is"e"(1to(xp1),<u>s,<<u>s3>s1)
+beta@t142:=fisi(1to(xp1),1to(xp1),s,[t:1to(xp1)]<<t>s3>s1,[t:1to(xp1)]t141(t)):is"e"([t:1to(xp1)]1to(xp1),s,[t:1to(xp1)]<<t>s3>s1)
+t143:=symnotis(1to(xp1),b0,xout(xp1),beta):not(is"e"(1to(xp1),xout(xp1),b0))
+t144:=iswissel3(1to(xp1),1out(xp1),b0,xout(xp1),t122,t143):is"e"(1to(xp1),<xout(xp1)>s3,xout(xp1))
+t145:=isf([t:1to(xp1)]1to(xp1),cx,[u:[t:1to(xp1)]1to(xp1)]smpr(xp1,g(xp1,u,f)),s,[t:1to(xp1)]<<t>s3>s1,t142):is(smpr(xp1,g(xp1,s,f)),smpr(xp1,g(xp1,s3,g(xp1,s1,f))))
+t146:=t46(s3,g(xp1,s1,f),t129,t144):is(smpr(xp1,g(xp1,s3,g(xp1,s1,f))),smpr(xp1,g(xp1,s1,f)))
+t147:=t97(s1,f,t106,t121):is(smpr(xp1,g(xp1,s1,f)),smpr(xp1,f))
+t148:=tr3is(cx,smpr(xp1,g(xp1,s,f)),smpr(xp1,g(xp1,s3,g(xp1,s1,f))),smpr(xp1,g(xp1,s1,f)),smpr(xp1,f),t145,t146,t147):prop1(xp1,s,f)
+i3@[gamma:is"e"(1to(xp1),b0,xout(xp1))][i:is"n"(x,1)]
+t149:=ispl1"n"(1,x,1,symis(nat,x,1,i)):is"n"(2,xp1)
+t150:=lessisi2"n"(2,xp1,t149):lessis"n"(2,xp1)
+f05:=left(cx,xp1,2,t150,f):[t:1to(2)]cx
+s05:=left(1to(xp1),xp1,2,t150,s):[t:1to(2)]1to(xp1)
+g7:=left(cx,xp1,2,t150,g(xp1,s,f)):[t:1to(2)]cx
+t151:=issmpr(xp1,f,2,t149):is(smpr(2,f05),smpr(xp1,f))
+t152:=issmpr(xp1,g(xp1,s,f),2,t149):is(smpr(2,g7),smpr(xp1,g(xp1,s,f)))
+t153:=satz280(f05):is(smpr(2,f05),<<xout(2)>f05><<1out(2)>f05>q)
+t154:=satz280(g7):is(smpr(2,g7),<<xout(2)>g7><<1out(2)>g7>q)
+t155:=tris1(nat,inn(2,xout(2)),xp1,2,isinoutn(2,2,lessisi3(2)),t149):is"n"(inn(2,xout(2)),xp1)
+t156:=isoutni(xp1,inn(2,xout(2)),trlessis"n"(inn(2,xout(2)),2,xp1,1top(2,xout(2)),t150),xp1,lessisi3(xp1),t155):is"e"(1to(xp1),left1to(xp1,2,t150,xout(2)),xout(xp1))
+t157:=isf(1to(xp1),1to(xp1),s,left1to(xp1,2,t150,xout(2)),xout(xp1),t156):is"e"(1to(xp1),<xout(2)>s05,<xout(xp1)>s)
+t158:=symis(nat,1,inn(2,1out(2)),isinoutn(2,1,satz24a(2))):is"n"(inn(2,1out(2)),1)
+t159:=isoutni(xp1,inn(2,1out(2)),trlessis"n"(inn(2,1out(2)),2,xp1,1top(2,1out(2)),t150),1,satz24a(xp1),t158):is"e"(1to(xp1),left1to(xp1,2,t150,1out(2)),1out(xp1))
+t160:=tr3is(1to(xp1),left1to(xp1,2,t150,1out(2)),1out(xp1),<b0>s,<xout(xp1)>s,t159,t98,isf(1to(xp1),1to(xp1),s,b0,xout(xp1),gamma)):is"e"(1to(xp1),left1to(xp1,2,t150,1out(2)),<xout(xp1)>s)
+t161:=tris2(1to(xp1),<xout(2)>s05,left1to(xp1,2,t150,1out(2)),<xout(xp1)>s,t157,t160):is"e"(1to(xp1),<xout(2)>s05,left1to(xp1,2,t150,1out(2)))
+t163:=isf(1to(xp1),1to(xp1),s,left1to(xp1,2,t150,1out(2)),1out(xp1),t159):is"e"(1to(xp1),<1out(2)>s05,<1out(xp1)>s)
+t164:=tris(1to(xp1),<1out(2)>s05,<1out(xp1)>s,xout(xp1),t163,i3):is"e"(1to(xp1),<1out(2)>s05,xout(xp1))
+t165:=tris2(1to(xp1),<1out(2)>s05,left1to(xp1,2,t150,xout(2)),xout(xp1),t164,t156):is"e"(1to(xp1),<1out(2)>s05,left1to(xp1,2,t150,xout(2)))
+t166:=isf(1to(xp1),cx,f,<xout(2)>s05,left1to(xp1,2,t150,1out(2)),t161):is(<xout(2)>g7,<1out(2)>f05)
+t167:=isf(1to(xp1),cx,f,<1out(2)>s05,left1to(xp1,2,t150,xout(2)),t165):is(<1out(2)>g7,<xout(2)>f05)
+t168:=isf(cx,cx,<<1out(2)>g7>q,<xout(2)>g7,<1out(2)>f05,t166):is(<<xout(2)>g7><<1out(2)>g7>q,<<1out(2)>f05><<1out(2)>g7>q)
+t169:=comq(c,<1out(2)>g7,<1out(2)>f05):is(<<1out(2)>f05><<1out(2)>g7>q,<<1out(2)>g7><<1out(2)>f05>q)
+t170:=isf(cx,cx,<<1out(2)>f05>q,<1out(2)>g7,<xout(2)>f05,t167):is(<<1out(2)>g7><<1out(2)>f05>q,<<xout(2)>f05><<1out(2)>f05>q)
+t171:=tr4is(cx,smpr(xp1,g(xp1,s,f)),smpr(2,g7),<<xout(2)>g7><<1out(2)>g7>q,<<1out(2)>f05><<1out(2)>g7>q,<<1out(2)>g7><<1out(2)>f05>q,symis(cx,smpr(2,g7),smpr(xp1,g(xp1,s,f)),t152),t154,t168,t169):is(smpr(xp1,g(xp1,s,f)),<<1out(2)>g7><<1out(2)>f05>q)
+t172:=tr4is(cx,smpr(xp1,g(xp1,s,f)),<<1out(2)>g7><<1out(2)>f05>q,<<xout(2)>f05><<1out(2)>f05>q,smpr(2,f05),smpr(xp1,f),t171,t170,symis(cx,smpr(2,f05),<<xout(2)>f05><<1out(2)>f05>q,t153),t151):prop1(xp1,s,f)
+trivial:=t172:prop1(xp1,s,f)
+gamma@[n:nis"n"(x,1)]
+t173:=ore1(more"n"(x,1),is"n"(x,1),satz24(x),n):more"n"(x,1)
+xm1:=mn"n"(x,1,t173):nat
+s4:=changef(1to(xp1),1to(xp1),s,1out(xp1),xout(xp1)):[t:1to(xp1)]1to(xp1)
+t174:=th6"e.wissel"(1to(xp1),1to(xp1),s,1out(xp1),xout(xp1),b):bijective(1to(xp1),1to(xp1),s4)
+t175:=changef2(1to(xp1),1to(xp1),s,1out(xp1),xout(xp1),xout(xp1),refis(1to(xp1),xout(xp1))):is"e"(1to(xp1),<xout(xp1)>s4,<1out(xp1)>s)
+t176:=symis(1to(xp1),a0,xout(xp1),i3):is"e"(1to(xp1),xout(xp1),<1out(xp1)>s)
+t177:=tris2(1to(xp1),<xout(xp1)>s4,xout(xp1),<1out(xp1)>s,t175,t176):is"e"(1to(xp1),<xout(xp1)>s4,xout(xp1))
+t178:=lessisi1"n"(x,xp1,satz18a(x,1)):lessis"n"(x,xp1)
+g8:=left(cx,xp1,x,t178,g(xp1,s,f)):[t:1to(x)]cx
+t179:=satz278(x,g(xp1,s,f)):is(smpr(xp1,g(xp1,s,f)),<<xout(xp1)>g(xp1,s,f)><smpr(x,g8)>q)
+t180:=th1b"n.mn"(x,1,t173):is"n"(pl"n"(1,xm1),x)
+t181:=lessisi2"n"(pl"n"(1,xm1),x,t180):lessis"n"(pl"n"(1,xm1),x)
+g9:=left(cx,x,pl"n"(1,xm1),t181,g8):[t:1to(pl"n"(1,xm1))]cx
+t182:=symis(cx,smpr(pl"n"(1,xm1),g9),smpr(x,g8),issmpr(x,g8,pl"n"(1,xm1),t180)):is(smpr(x,g8),smpr(pl"n"(1,xm1),g9))
+g10:=right(cx,1,xm1,g9):[t:1to(xm1)]cx
+t183:=lessisi1"n"(1,pl"n"(1,xm1),satz18a(1,xm1)):lessis"n"(1,pl"n"(1,xm1))
+g11:=left(cx,pl"n"(1,xm1),1,t183,g9):[t:1to(1)]cx
+t184:=satz281(a,1,xm1,g9):is(smpr(pl"n"(1,xm1),g9),<smpr(xm1,g10)><smpr(1,g11)>q)
+t185:=satz277(g11):is(smpr(1,g11),<xout(1)>g11)
+t186:=isinoutn(1,1,lessisi3(1)):is"n"(1,inn(1,xout(1)))
+1a:=left1to(pl"n"(1,xm1),1,t183,xout(1)):1to(pl"n"(1,xm1))
+t187:=isinoutn(pl"n"(1,xm1),inn(1,xout(1)),trlessis"n"(inn(1,xout(1)),1,pl"n"(1,xm1),1top(1,xout(1)),t183)):is"n"(inn(1,xout(1)),inn(pl"n"(1,xm1),1a))
+1b:=left1to(x,pl"n"(1,xm1),t181,1a):1to(x)
+t188:=isinoutn(x,inn(pl"n"(1,xm1),1a),trlessis"n"(inn(pl"n"(1,xm1),1a),pl"n"(1,xm1),x,1top(pl"n"(1,xm1),1a),t181)):is"n"(inn(pl"n"(1,xm1),1a),inn(x,1b))
+t189:=tr3is(nat,1,inn(1,xout(1)),inn(pl"n"(1,xm1),1a),inn(x,1b),t186,t187,t188):is"n"(1,inn(x,1b))
+1c:=left1to(xp1,x,t178,1b):1to(xp1)
+t190:=isoutni(xp1,1,satz24a(xp1),inn(x,1b),trlessis"n"(inn(x,1b),x,xp1,1top(x,1b),t178),t189):is"e"(1to(xp1),1out(xp1),1c)
+t191:=isf(1to(xp1),cx,g(xp1,s,f),1out(xp1),1c,t190):is(<1out(xp1)>g(xp1,s,f),<xout(1)>g11)
+t192:=tris2(cx,smpr(1,g11),<1out(xp1)>g(xp1,s,f),<xout(1)>g11,t185,t191):is(smpr(1,g11),<1out(xp1)>g(xp1,s,f))
+t193:=symis(1to(xp1),<xout(xp1)>s4,<1out(xp1)>s,t175):is"e"(1to(xp1),<1out(xp1)>s,<xout(xp1)>s4)
+t194:=isf(1to(xp1),cx,f,<1out(xp1)>s,<xout(xp1)>s4,t193):is(<1out(xp1)>g(xp1,s,f),<xout(xp1)>g(xp1,s4,f))
+t195:=tris(cx,smpr(1,g11),<1out(xp1)>g(xp1,s,f),<xout(xp1)>g(xp1,s4,f),t192,t194):is(smpr(1,g11),<xout(xp1)>g(xp1,s4,f))
+t196:=isf(cx,cx,[t:cx]<smpr(xm1,g10)><t>q,smpr(1,g11),<xout(xp1)>g(xp1,s4,f),t195):is(<smpr(xm1,g10)><smpr(1,g11)>q,<smpr(xm1,g10)><<xout(xp1)>g(xp1,s4,f)>q)
+t197:=tr3is(cx,smpr(x,g8),smpr(pl"n"(1,xm1),g9),<smpr(xm1,g10)><smpr(1,g11)>q,<smpr(xm1,g10)><<xout(xp1)>g(xp1,s4,f)>q,t182,t184,t196):is(smpr(x,g8),<smpr(xm1,g10)><<xout(xp1)>g(xp1,s4,f)>q)
+t198:=isf(cx,cx,[t:cx]<<xout(xp1)>g(xp1,s,f)><t>q,smpr(x,g8),<smpr(xm1,g10)><<xout(xp1)>g(xp1,s4,f)>q,t197):is(<<xout(xp1)>g(xp1,s,f)><smpr(x,g8)>q,<<xout(xp1)>g(xp1,s,f)><<smpr(xm1,g10)><<xout(xp1)>g(xp1,s4,f)>q>q)
+t199:=assq1(a,<xout(xp1)>g(xp1,s4,f),smpr(xm1,g10),<xout(xp1)>g(xp1,s,f)):is(<<xout(xp1)>g(xp1,s,f)><<smpr(xm1,g10)><<xout(xp1)>g(xp1,s4,f)>q>q,<<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q><<xout(xp1)>g(xp1,s4,f)>q)
+t200:=comq(c,<xout(xp1)>g(xp1,s4,f),<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q):is(<<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q><<xout(xp1)>g(xp1,s4,f)>q,<<xout(xp1)>g(xp1,s4,f)><<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q>q)
+g12:=left(cx,xp1,x,t178,g(xp1,s4,f)):[t:1to(x)]cx
+g13:=left(cx,x,pl"n"(1,xm1),t181,g12):[t:1to(pl"n"(1,xm1))]cx
+g14:=right(cx,1,xm1,g13):[t:1to(xm1)]cx
+g15:=left(cx,pl"n"(1,xm1),1,lessisi1"n"(1,pl"n"(1,xm1),satz18a(1,xm1)),g13):[t:1to(1)]cx
+t201:=satz278(x,g(xp1,s4,f)):is(smpr(xp1,g(xp1,s4,f)),<<xout(xp1)>g(xp1,s4,f)><smpr(x,g12)>q)
+t202:=symis(cx,smpr(pl"n"(1,xm1),g13),smpr(x,g12),issmpr(x,g12,pl"n"(1,xm1),t180)):is(smpr(x,g12),smpr(pl"n"(1,xm1),g13))
+t203:=satz281(a,1,xm1,g13):is(smpr(pl"n"(1,xm1),g13),<smpr(xm1,g14)><smpr(1,g15)>q)
+t204:=satz277(g15):is(smpr(1,g15),<xout(1)>g15)
+t205:=isf(1to(xp1),cx,g(xp1,s4,f),1out(xp1),1c,t190):is(<1out(xp1)>g(xp1,s4,f),<xout(1)>g15)
+t206:=tris2(cx,smpr(1,g15),<1out(xp1)>g(xp1,s4,f),<xout(1)>g15,t204,t205):is(smpr(1,g15),<1out(xp1)>g(xp1,s4,f))
+t207:=changef1(1to(xp1),1to(xp1),s,1out(xp1),xout(xp1),1out(xp1),refis(1to(xp1),1out(xp1))):is"e"(1to(xp1),<1out(xp1)>s4,<xout(xp1)>s)
+t208:=isf(1to(xp1),cx,f,<1out(xp1)>s4,<xout(xp1)>s,t207):is(<1out(xp1)>g(xp1,s4,f),<xout(xp1)>g(xp1,s,f))
+t209:=tris(cx,smpr(1,g15),<1out(xp1)>g(xp1,s4,f),<xout(xp1)>g(xp1,s,f),t206,t208):is(smpr(1,g15),<xout(xp1)>g(xp1,s,f))
+t210:=isf(cx,cx,[t:cx]<smpr(xm1,g14)><t>q,smpr(1,g15),<xout(xp1)>g(xp1,s,f),t209):is(<smpr(xm1,g14)><smpr(1,g15)>q,<smpr(xm1,g14)><<xout(xp1)>g(xp1,s,f)>q)
+t211:=tr3is(cx,smpr(x,g12),smpr(pl"n"(1,xm1),g13),<smpr(xm1,g14)><smpr(1,g15)>q,<smpr(xm1,g14)><<xout(xp1)>g(xp1,s,f)>q,t202,t203,t210):is(smpr(x,g12),<smpr(xm1,g14)><<xout(xp1)>g(xp1,s,f)>q)
+[u:1to(xm1)]
+ua:=right1to(1,xm1,u):1to(pl"n"(1,xm1))
+ub:=left1to(x,pl"n"(1,xm1),t181,ua):1to(x)
+uc:=left1to(xp1,x,t178,ub):1to(xp1)
+[i:is"e"(1to(xp1),uc,xout(xp1))]
+t212:=isoutne(xp1,inn(x,ub),trlessis"n"(inn(x,ub),x,xp1,1top(x,ub),t178),xp1,lessisi3(xp1),i):is"n"(inn(x,ub),xp1)
+t213:=satz16a(inn(x,ub),x,xp1,1top(x,ub),satz18a(x,1)):less"n"(inn(x,ub),xp1)
+t214:=<t212>ec3e31(is"n"(inn(x,ub),xp1),more"n"(inn(x,ub),xp1),less"n"(inn(x,ub),xp1),satz10b(inn(x,ub),xp1),t213):con
+u@t215:=[t:is"e"(1to(xp1),uc,xout(xp1))]t214(t):not(is"e"(1to(xp1),uc,xout(xp1)))
+[i:is"e"(1to(xp1),uc,1out(xp1))]
+t216:=isoutne(xp1,inn(x,ub),trlessis"n"(inn(x,ub),x,xp1,1top(x,ub),t178),1,satz24a(xp1),i):is"n"(inn(x,ub),1)
+t217:=isinoutn(x,inn(pl"n"(1,xm1),ua),trlessis"n"(inn(pl"n"(1,xm1),ua),pl"n"(1,xm1),x,1top(pl"n"(1,xm1),ua),t181)):is"n"(inn(pl"n"(1,xm1),ua),inn(x,ub))
+t218:=isinoutn(pl"n"(1,xm1),pl"n"(1,inn(xm1,u)),satz19o(inn(xm1,u),xm1,1,1top(xm1,u))):is"n"(pl"n"(1,inn(xm1,u)),inn(pl"n"(1,xm1),ua))
+t219:=tr3is(nat,pl"n"(1,inn(xm1,u)),inn(pl"n"(1,xm1),ua),inn(x,ub),1,t218,t217,t216):is"n"(pl"n"(1,inn(xm1,u)),1)
+t220:=satz18(1,inn(xm1,u)):more"n"(pl"n"(1,inn(xm1,u)),1)
+t221:=<t219>ec3e21(is"n"(pl"n"(1,inn(xm1,u)),1),more"n"(pl"n"(1,inn(xm1,u)),1),less"n"(pl"n"(1,inn(xm1,u)),1),satz10b(pl"n"(1,inn(xm1,u)),1),t220):con
+u@t222:=[t:is"e"(1to(xp1),uc,1out(xp1))]t221(t):not(is"e"(1to(xp1),uc,1out(xp1)))
+t223:=changef3(1to(xp1),1to(xp1),s,1out(xp1),xout(xp1),uc,t222,t215):is"e"(1to(xp1),<uc>s4,<uc>s)
+t224:=isf(1to(xp1),cx,f,<uc>s4,<uc>s,t223):is(<u>g14,<u>g10)
+n@t225:=fisi(1to(xm1),cx,g10,g14,[t:1to(xm1)]symis(cx,<t>g14,<t>g10,t224(t))):is"e"([t:1to(xm1)]cx,g10,g14)
+t226:=isf([t:1to(xm1)]cx,cx,[u:[t:1to(xm1)]cx]smpr(xm1,u),g10,g14,t225):is(smpr(xm1,g10),smpr(xm1,g14))
+t227:=comq(c,smpr(xm1,g10),<xout(xp1)>g(xp1,s,f)):is(<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q,<smpr(xm1,g10)><<xout(xp1)>g(xp1,s,f)>q)
+t228:=isf(cx,cx,<<xout(xp1)>g(xp1,s,f)>q,smpr(xm1,g10),smpr(xm1,g14),t226):is(<smpr(xm1,g10)><<xout(xp1)>g(xp1,s,f)>q,<smpr(xm1,g14)><<xout(xp1)>g(xp1,s,f)>q)
+t229:=tris(cx,<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q,<smpr(xm1,g10)><<xout(xp1)>g(xp1,s,f)>q,<smpr(xm1,g14)><<xout(xp1)>g(xp1,s,f)>q,t227,t228):is(<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q,<smpr(xm1,g14)><<xout(xp1)>g(xp1,s,f)>q)
+t230:=tris2(cx,<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q,smpr(x,g12),<smpr(xm1,g14)><<xout(xp1)>g(xp1,s,f)>q,t229,t211):is(<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q,smpr(x,g12))
+t231:=isf(cx,cx,[t:cx]<<xout(xp1)>g(xp1,s4,f)><t>q,<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q,smpr(x,g12),t230):is(<<xout(xp1)>g(xp1,s4,f)><<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q>q,<<xout(xp1)>g(xp1,s4,f)><smpr(x,g12)>q)
+t232:=symis(cx,smpr(xp1,g(xp1,s4,f)),<<xout(xp1)>g(xp1,s4,f)><smpr(x,g12)>q,t201):is(<<xout(xp1)>g(xp1,s4,f)><smpr(x,g12)>q,smpr(xp1,g(xp1,s4,f)))
+t233:=t46(s4,f,t174,t177):is(smpr(xp1,g(xp1,s4,f)),smpr(xp1,f))
+t234:=tr4is(cx,smpr(xp1,g(xp1,s,f)),<<xout(xp1)>g(xp1,s,f)><smpr(x,g8)>q,<<xout(xp1)>g(xp1,s,f)><<smpr(xm1,g10)><<xout(xp1)>g(xp1,s4,f)>q>q,<<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q><<xout(xp1)>g(xp1,s4,f)>q,<<xout(xp1)>g(xp1,s4,f)><<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q>q,t179,t198,t199,t200):is(smpr(xp1,g(xp1,s,f)),<<xout(xp1)>g(xp1,s4,f)><<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q>q)
+t235:=tr4is(cx,smpr(xp1,g(xp1,s,f)),<<xout(xp1)>g(xp1,s4,f)><<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q>q,<<xout(xp1)>g(xp1,s4,f)><smpr(x,g12)>q,smpr(xp1,g(xp1,s4,f)),smpr(xp1,f),t234,t231,t232,t233):prop1(xp1,s,f)
+gamma@t236:=th1"l.imp"(is"n"(x,1),prop1(xp1,s,f),[t:is"n"(x,1)]t172(t),[t:not(is"n"(x,1))]t235(t)):prop1(xp1,s,f)
+i3@t237:=th1"l.imp"(is"e"(1to(xp1),b0,xout(xp1)),prop1(xp1,s,f),[t:is"e"(1to(xp1),b0,xout(xp1))]t236(t),[t:not(is"e"(1to(xp1),b0,xout(xp1)))]t148(t)):prop1(xp1,s,f)
+not2@t238:=th1"l.imp"(is"e"(1to(xp1),a0,xout(xp1)),prop1(xp1,s,f),[t:is"e"(1to(xp1),a0,xout(xp1))]t237(t),[t:not(is"e"(1to(xp1),a0,xout(xp1)))]t128(t)):prop1(xp1,s,f)
+not1@t239:=th1"l.imp"(is"e"(1to(xp1),<1out(xp1)>s,1out(xp1)),prop1(xp1,s,f),[t:is"e"(1to(xp1),<1out(xp1)>s,1out(xp1))]t97(t),[t:not(is"e"(1to(xp1),<1out(xp1)>s,1out(xp1)))]t238(t)):prop1(xp1,s,f)
+b@t240:=th1"l.imp"(is"e"(1to(xp1),<xout(xp1)>s,xout(xp1)),prop1(xp1,s,f),[t:is"e"(1to(xp1),<xout(xp1)>s,xout(xp1))]t46(t),[t:not(is"e"(1to(xp1),<xout(xp1)>s,xout(xp1)))]t239(t)):prop1(xp1,s,f)
+p@t241:=[u:[t:1to(xp1)]1to(xp1)][v:[t:1to(xp1)]cx][w:bijective(1to(xp1),1to(xp1),u)]t240(u,v,w):prop2(xp1)
+t242:=isp(nat,[t:nat]prop2(t),xp1,<x>suc,t241,satz4a(x)):prop2(<x>suc)
+x@t243:=induction([t:nat]prop2(t),t6,[t:nat][u:prop2(t)]t242(t,u),x):prop2(x)
+-8283
+satz283:=<b><f><s>t243".8283":is(smpr(x,[t:1to(x)]<<t>s>f),smpr(x,f))
+@[x:real][ix:intrl(x)][y:real][iy:intrl(y)][ly:lessis(y,x)]
+shiftl:=shiftl"r"(x,ix,y,iy,ly):nat
+[n:1to(shiftl)]
+shiftr:=shiftr"r"(x,ix,y,iy,ly,n):real
+intshiftr:=intshiftr"r"(x,ix,y,iy,ly,n):intrl(shiftr)
+shiftrls:=shiftrls"r"(x,ix,y,iy,ly,n):lessis(shiftr,x)
+lsshiftr:=lsshiftr"r"(x,ix,y,iy,ly,n):lessis(y,shiftr)
+[m:1to(shiftl)][i:is"r"(shiftr(n),shiftr(m))]
+iseshiftr:=iseshiftr"r"(x,ix,y,iy,ly,n,m,i):is"e"(1to(shiftl),n,m)
+ly@[u:real][a:and3(intrl(u),lessis(y,u),lessis(u,x))]
+shiftl1:=shiftl1"r"(x,ix,y,iy,ly,u,a):1to(shiftl)
+shiftinv1:=shiftinv1"r"(x,ix,y,iy,ly,u,a):is"r"(u,shiftr(shiftl1))
+shiftinv2:=shiftinv2"r"(x,ix,y,iy,ly,u,a):is"r"(shiftr(shiftl1),u)
+ly@[f:seq(x,ix,y,iy,ly,cx)]
+shiftf:=shiftf(x,ix,y,iy,ly,cx,f):[t:1to(shiftl)]cx
+[q:[t:cx][u:cx]cx]
+smpri:=smpr(q,shiftl,shiftf):cx
+f@[pi:proofsirrelevant(x,ix,y,iy,ly,cx,f)][q:[t:cx][u:cx]cx][a:assoc(q)][u:real][iu:intrl(u)][l:lessis(y,u)][k:less(u,x)][v:real][iv:intrl(v)][lv:lessis(y,v)][kv:lessis(v,u)]
++8284
+t1:=lessisi1(v,x,satz172a(v,u,x,kv,k)):lessis(v,x)
+-8284
+k@lft:=[t:real][v:intrl(t)][lt:lessis(y,t)][kt:lessis(t,u)]<t1".8284"(t,v,lt,kt)><lt><v><t>f:[t:real][v:intrl(t)][lt:lessis(y,t)][kt:lessis(t,u)]cx
+iv@[lv:lessis(pl"r"(u,1rl),v)][kv:lessis(v,x)]
++*8284
+x@[y:real]
+pl:=pl"r"(x,y):real
+mn:=mn"r"(x,y):real
+x@p1:=pl"r"(x,1rl):real
+kv@t2:=satz190c(u,u,0,1rl,lessisi2(u,u,refis(real,u)),lemma1"r"(1rl,0,satz169a(1rl,natpos(1rl,natrl1)))):less(pl(u,0),p1(u))
+t3:=isless1(pl(u,0),u,p1(u),pl02"r"(u,0,refis(real,0)),t2):less(u,p1(u))
+t4:=lessisi1(y,v,satz172b(y,p1(u),v,satz172a(y,u,p1(u),l,t3),lv)):lessis(y,v)
+-8284
+k@rgt:=[t:real][v:intrl(t)][lt:lessis(pl"r"(u,1rl),t)][kt:lessis(t,x)]<kt><t4".8284"(t,v,lt,kt)><v><t>f:[t:real][v:intrl(t)][lt:lessis(pl"r"(u,1rl),t)][kt:lessis(t,x)]cx
++*8284
+k@t5:=intpl(u,iu,1rl,intrl1):intrl(p1(u))
+t6:=satzr25(u,iu,x,ix,k):lessis(p1(u),x)
+t7:=tr3is(real,pl(mn(p1(u),y),mn(p1(x),p1(u))),pl(mn(p1(x),p1(u)),mn(p1(u),y)),mn(pl(mn(p1(x),p1(u)),p1(u)),y),mn(p1(x),y),compl"r"(mn(p1(u),y),mn(p1(x),p1(u))),asspl2"r"(mn(p1(x),p1(u)),p1(u),m0"r"(y)),ismn1"r"(pl(mn(p1(x),p1(u)),p1(u)),p1(x),y,plmn(p1(x),p1(u)))):is"r"(pl(mn(p1(u),y),mn(p1(x),p1(u))),mn(p1(x),y))
+sxy:=shiftl(x,ix,y,iy,ly):nat
+suy:=shiftl(u,iu,y,iy,l):nat
+sxu:=shiftl(x,ix,p1(u),t5,t6):nat
+t8:=tr4is(real,rlofnt(pl"n"(suy,sxu)),pl(rlofnt(suy),rlofnt(sxu)),pl(mn(p1(u),y),mn(p1(x),p1(u))),mn(p1(x),y),rlofnt(sxy),satzr155a(suy,sxu),ispl12"r"(rlofnt(suy),mn(p1(u),y),rlofnt(sxu),mn(p1(x),p1(u)),isrlnt2(mn(p1(u),y),t6"r.shift"(u,iu,y,iy,l)),isrlnt2(mn(p1(x),p1(u)),t6"r.shift"(x,ix,p1(u),t5,t6))),t7,isrlnt1(mn(p1(x),y),t6"r.shift"(x,ix,y,iy,ly))):is"r"(rlofnt(pl"n"(suy,sxu)),rlofnt(sxy))
+t9:=isntirl(pl"n"(suy,sxu),sxy,t8):is"n"(pl"n"(suy,sxu),sxy)
+t10:=lessisi2"n"(pl"n"(suy,sxu),sxy,t9):lessis"n"(pl"n"(suy,sxu),sxy)
+f1:=left(cx,sxy,pl"n"(suy,sxu),t10,shiftf(x,ix,y,iy,ly,f)):[t:1to(pl"n"(suy,sxu))]cx
+t11:=issmpr(q,sxy,shiftf(x,ix,y,iy,ly,f),pl"n"(suy,sxu),t9):is(smpr(q,pl"n"(suy,sxu),f1),smpri(x,ix,y,iy,ly,f,q))
+fr:=right(cx,suy,sxu,f1):[t:1to(sxu)]cx
+t12:=lessisi1"n"(suy,pl"n"(suy,sxu),satz18a(suy,sxu)):lessis"n"(suy,pl"n"(suy,sxu))
+fl:=left(cx,pl"n"(suy,sxu),suy,t12,f1):[t:1to(suy)]cx
+t12a:=satz281(q,a,suy,sxu,f1):is(smpr(q,pl"n"(suy,sxu),f1),<smpr(q,sxu,fr)><smpr(q,suy,fl)>q)
+[n:1to(sxu)]
+t13:=isinoutn(pl"n"(suy,sxu),pl"n"(suy,inn(sxu,n)),satz19o(inn(sxu,n),sxu,suy,1top(sxu,n))):is"n"(pl"n"(suy,inn(sxu,n)),inn(pl"n"(suy,sxu),right1to(suy,sxu,n)))
+t14:=isinoutn(sxy,inn(pl"n"(suy,sxu),right1to(suy,sxu,n)),trlessis"n"(inn(pl"n"(suy,sxu),right1to(suy,sxu,n)),pl"n"(suy,sxu),sxy,1top(pl"n"(suy,sxu),right1to(suy,sxu,n)),t10)):is"n"(inn(pl"n"(suy,sxu),right1to(suy,sxu,n)),inn(sxy,left1to(sxy,pl"n"(suy,sxu),t10,right1to(suy,sxu,n))))
+n1:=left1to(sxy,pl"n"(suy,sxu),t10,right1to(suy,sxu,n)):1to(sxy)
+t15:=tris(nat,pl"n"(suy,inn(sxu,n)),inn(pl"n"(suy,sxu),right1to(suy,sxu,n)),inn(sxy,n1),t13,t14):is"n"(pl"n"(suy,inn(sxu,n)),inn(sxy,n1))
+t16:=isnterl(pl"n"(suy,inn(sxu,n)),inn(sxy,n1),t15):is"r"(rlofnt(pl"n"(suy,inn(sxu,n))),rlofnt(inn(sxy,n1)))
+t17:=satzr155b(suy,inn(sxu,n)):is"r"(pl(rlofnt(suy),rlofnt(inn(sxu,n))),rlofnt(pl"n"(suy,inn(sxu,n))))
+t18:=ispl1"r"(mn(p1(u),y),rlofnt(suy),rlofnt(inn(sxu,n)),isrlnt1(mn(p1(u),y),t6"r.shift"(u,iu,y,iy,l))):is"r"(pl(mn(p1(u),y),rlofnt(inn(sxu,n))),pl(rlofnt(suy),rlofnt(inn(sxu,n))))
+t19:=tr3is(real,pl(mn(p1(u),y),rlofnt(inn(sxu,n))),pl(rlofnt(suy),rlofnt(inn(sxu,n))),rlofnt(pl"n"(suy,inn(sxu,n))),rlofnt(inn(sxy,n1)),t18,t17,t16):is"r"(pl(mn(p1(u),y),rlofnt(inn(sxu,n))),rlofnt(inn(sxy,n1)))
+t20:=ispl1"r"(pl(mn(p1(u),y),rlofnt(inn(sxu,n))),rlofnt(inn(sxy,n1)),y,t19):is"r"(pl(pl(mn(p1(u),y),rlofnt(inn(sxu,n))),y),pl(rlofnt(inn(sxy,n1)),y))
+t21:=tr3is(real,pl(pl(mn(p1(u),y),rlofnt(inn(sxu,n))),y),pl(pl(rlofnt(inn(sxu,n)),mn(p1(u),y)),y),pl(rlofnt(inn(sxu,n)),pl(mn(p1(u),y),y)),pl(rlofnt(inn(sxu,n)),p1(u)),ispl1"r"(pl(mn(p1(u),y),rlofnt(inn(sxu,n))),pl(rlofnt(inn(sxu,n)),mn(p1(u),y)),y,compl"r"(mn(p1(u),y),rlofnt(inn(sxu,n)))),asspl1"r"(rlofnt(inn(sxu,n)),mn(p1(u),y),y),ispl2"r"(pl(mn(p1(u),y),y),p1(u),rlofnt(inn(sxu,n)),plmn(p1(u),y))):is"r"(pl(pl(mn(p1(u),y),rlofnt(inn(sxu,n))),y),pl(rlofnt(inn(sxu,n)),p1(u)))
+t22:=tris1(real,pl(rlofnt(inn(sxy,n1)),y),pl(rlofnt(inn(sxu,n)),p1(u)),pl(pl(mn(p1(u),y),rlofnt(inn(sxu,n))),y),t20,t21):is"r"(pl(rlofnt(inn(sxy,n1)),y),pl(rlofnt(inn(sxu,n)),p1(u)))
+t23:=ismn1"r"(pl(rlofnt(inn(sxy,n1)),y),pl(rlofnt(inn(sxu,n)),p1(u)),1rl,t22):is"r"(shiftr(x,ix,y,iy,ly,n1),shiftr(x,ix,p1(u),t5,t6,n))
+t24:=intshiftr(x,ix,y,iy,ly,n1):intrl(shiftr(x,ix,y,iy,ly,n1))
+t25:=lsshiftr(x,ix,y,iy,ly,n1):lessis(y,shiftr(x,ix,y,iy,ly,n1))
+t26:=shiftrls(x,ix,y,iy,ly,n1):lessis(shiftr(x,ix,y,iy,ly,n1),x)
+t27:=intshiftr(x,ix,p1(u),t5,t6,n):intrl(shiftr(x,ix,p1(u),t5,t6,n))
+t28:=lsshiftr(x,ix,p1(u),t5,t6,n):lessis(p1(u),shiftr(x,ix,p1(u),t5,t6,n))
+t29:=shiftrls(x,ix,p1(u),t5,t6,n):lessis(shiftr(x,ix,p1(u),t5,t6,n),x)
+t30:=t4(shiftr(x,ix,p1(u),t5,t6,n),t27,t28,t29):lessis(y,shiftr(x,ix,p1(u),t5,t6,n))
+t31:=<t23><t29><t30><t27><shiftr(x,ix,p1(u),t5,t6,n)><t26><t25><t24><shiftr(x,ix,y,iy,ly,n1)>pi:is(<n>fr,<n>shiftf(x,ix,p1(u),t5,t6,rgt))
+k@t32:=fisi(1to(sxu),cx,fr,shiftf(x,ix,p1(u),t5,t6,rgt),[t:1to(sxu)]t31(t)):is"e"([t:1to(sxu)]cx,fr,shiftf(x,ix,p1(u),t5,t6,rgt))
+t33:=isf([t:1to(sxu)]cx,cx,[v:[t:1to(sxu)]cx]smpr(q,sxu,v),fr,shiftf(x,ix,p1(u),t5,t6,rgt),t32):is(smpr(q,sxu,fr),smpri(x,ix,p1(u),t5,t6,rgt,q))
+t34:=isf(cx,cx,<smpr(q,suy,fl)>q,smpr(q,sxu,fr),smpri(x,ix,p1(u),t5,t6,rgt,q),t33):is(<smpr(q,sxu,fr)><smpr(q,suy,fl)>q,<smpri(x,ix,p1(u),t5,t6,rgt,q)><smpr(q,suy,fl)>q)
+[n:1to(suy)]
+t35:=isinoutn(pl"n"(suy,sxu),inn(suy,n),trlessis"n"(inn(suy,n),suy,pl"n"(suy,sxu),1top(suy,n),t12)):is"n"(inn(suy,n),inn(pl"n"(suy,sxu),left1to(pl"n"(suy,sxu),suy,t12,n)))
+t36:=isinoutn(sxy,inn(pl"n"(suy,sxu),left1to(pl"n"(suy,sxu),suy,t12,n)),trlessis"n"(inn(pl"n"(suy,sxu),left1to(pl"n"(suy,sxu),suy,t12,n)),pl"n"(suy,sxu),sxy,1top(pl"n"(suy,sxu),left1to(pl"n"(suy,sxu),suy,t12,n)),t10)):is"n"(inn(pl"n"(suy,sxu),left1to(pl"n"(suy,sxu),suy,t12,n)),inn(sxy,left1to(sxy,pl"n"(suy,sxu),t10,left1to(pl"n"(suy,sxu),suy,t12,n))))
+n2:=left1to(sxy,pl"n"(suy,sxu),t10,left1to(pl"n"(suy,sxu),suy,t12,n)):1to(sxy)
+t37:=tris(nat,inn(suy,n),inn(pl"n"(suy,sxu),left1to(pl"n"(suy,sxu),suy,t12,n)),inn(sxy,n2),t35,t36):is"n"(inn(suy,n),inn(sxy,n2))
+t38:=isnterl(inn(suy,n),inn(sxy,n2),t37):is"r"(rlofnt(inn(suy,n)),rlofnt(inn(sxy,n2)))
+t39:=ispl1"r"(rlofnt(inn(suy,n)),rlofnt(inn(sxy,n2)),y,t38):is"r"(pl(rlofnt(inn(suy,n)),y),pl(rlofnt(inn(sxy,n2)),y))
+t40:=ismn1"r"(pl(rlofnt(inn(suy,n)),y),pl(rlofnt(inn(sxy,n2)),y),1rl,t39):is"r"(shiftr(u,iu,y,iy,l,n),shiftr(x,ix,y,iy,ly,n2))
+t41:=intshiftr(u,iu,y,iy,l,n):intrl(shiftr(u,iu,y,iy,l,n))
+t42:=lsshiftr(u,iu,y,iy,l,n):lessis(y,shiftr(u,iu,y,iy,l,n))
+t43:=shiftrls(u,iu,y,iy,l,n):lessis(shiftr(u,iu,y,iy,l,n),u)
+t44:=t1(shiftr(u,iu,y,iy,l,n),t41,t42,t43):lessis(shiftr(u,iu,y,iy,l,n),x)
+t45:=intshiftr(x,ix,y,iy,ly,n2):intrl(shiftr(x,ix,y,iy,ly,n2))
+t46:=lsshiftr(x,ix,y,iy,ly,n2):lessis(y,shiftr(x,ix,y,iy,ly,n2))
+t47:=shiftrls(x,ix,y,iy,ly,n2):lessis(shiftr(x,ix,y,iy,ly,n2),x)
+t48:=<t40><t47><t46><t45><shiftr(x,ix,y,iy,ly,n2)><t44><t42><t41><shiftr(u,iu,y,iy,l,n)>pi:is(<n>shiftf(u,iu,y,iy,l,lft),<n>fl)
+t49:=symis(cx,<n>shiftf(u,iu,y,iy,l,lft),<n>fl,t48):is(<n>fl,<n>shiftf(u,iu,y,iy,l,lft))
+k@t50:=fisi(1to(suy),cx,fl,shiftf(u,iu,y,iy,l,lft),[t:1to(suy)]t49(t)):is"e"([t:1to(suy)]cx,fl,shiftf(u,iu,y,iy,l,lft))
+t51:=isf([t:1to(suy)]cx,cx,[v:[t:1to(suy)]cx]smpr(q,suy,v),fl,shiftf(u,iu,y,iy,l,lft),t50):is(smpr(q,suy,fl),smpri(u,iu,y,iy,l,lft,q))
+t52:=isf(cx,cx,[t:cx]<smpri(x,ix,p1(u),t5,t6,rgt,q)><t>q,smpr(q,suy,fl),smpri(u,iu,y,iy,l,lft,q),t51):is(<smpri(x,ix,p1(u),t5,t6,rgt,q)><smpr(q,suy,fl)>q,<smpri(x,ix,p1(u),t5,t6,rgt,q)><smpri(u,iu,y,iy,l,lft,q)>q)
+t53:=tr3is(cx,smpr(q,pl"n"(suy,sxu),f1),<smpr(q,sxu,fr)><smpr(q,suy,fl)>q,<smpri(x,ix,p1(u),t5,t6,rgt,q)><smpr(q,suy,fl)>q,<smpri(x,ix,p1(u),t5,t6,rgt,q)><smpri(u,iu,y,iy,l,lft,q)>q,t12a,t34,t52):is(smpr(q,pl"n"(suy,sxu),f1),<smpri(x,ix,p1(u),t5,t6,rgt,q)><smpri(u,iu,y,iy,l,lft,q)>q)
+-8284
+k@satz284:=tris1(cx,smpri(x,ix,y,iy,ly,f,q),<smpri(x,ix,pl"r"(u,1rl),intpl(u,iu,1rl,intrl1),satzr25(u,iu,x,ix,k),rgt,q)><smpri(u,iu,y,iy,l,lft,q)>q,smpr(q,pl"n"(suy".8284",sxu".8284"),f1".8284"),t11".8284",t53".8284"):is(smpri(x,ix,y,iy,ly,f,q),<smpri(x,ix,pl"r"(u,1rl),intpl(u,iu,1rl,intrl1),satzr25(u,iu,x,ix,k),rgt,q)><smpri(u,iu,y,iy,l,lft,q)>q)
+q@[v:real][iv:intrl(v)][w:real][iw:intrl(w)][lw:lessis(pl"r"(y,v),w)][kw:lessis(w,pl"r"(x,v))]
++8285
+x@[y:real]
+pl:=pl"r"(x,y):real
+mn:=mn"r"(x,y):real
+x@p1:=pl"r"(x,1rl):real
+kw@t1:=th9"l.or"(less(pl(y,v),w),is"r"(pl(y,v),w),less(mn(pl(y,v),v),mn(w,v)),is"r"(mn(pl(y,v),v),mn(w,v)),lw,[t:less(pl(y,v),w)]satz188f(pl(y,v),w,m0"r"(v),t),[t:is"r"(pl(y,v),w)]ismn1"r"(pl(y,v),w,v,t)):lessis(mn(pl(y,v),v),mn(w,v))
+t2:=islessis1(mn(pl(y,v),v),y,mn(w,v),mnpl(y,v),t1):lessis(y,mn(w,v))
+t3:=th9"l.or"(less(w,pl(x,v)),is"r"(w,pl(x,v)),less(mn(w,v),mn(pl(x,v),v)),is"r"(mn(w,v),mn(pl(x,v),v)),kw,[t:less(w,pl(x,v))]satz188f(w,pl(x,v),m0"r"(v),t),[t:is"r"(w,pl(x,v))]ismn1"r"(w,pl(x,v),v,t)):lessis(mn(w,v),mn(pl(x,v),v))
+t4:=islessis2(mn(pl(x,v),v),x,mn(w,v),mnpl(x,v),t3):lessis(mn(w,v),x)
+-8285
+iv@sft:=[t:real][w:intrl(t)][lt:lessis(pl"r"(y,v),t)][kt:lessis(t,pl"r"(x,v))]<t4".8285"(t,w,lt,kt)><t2".8285"(t,w,lt,kt)><intmn(t,w,v,iv)><mn"r"(t,v)>f:[t:real][w:intrl(t)][lt:lessis(pl"r"(y,v),t)][kt:lessis(t,pl"r"(x,v))]cx
++*8285
+iv@t5:=tris(real,m0"r"(pl(y,v)),m0"r"(pl(v,y)),pl(m0"r"(v),m0"r"(y)),ism0"r"(pl(y,v),pl(v,y),compl"r"(y,v)),satz180(v,y)):is"r"(m0"r"(pl(y,v)),pl(m0"r"(v),m0"r"(y)))
+t6:=tr3is(real,mn(pl(1rl,pl(x,v)),v),pl(1rl,mn(pl(x,v),v)),pl(1rl,x),p1(x),asspl1"r"(1rl,pl(x,v),m0"r"(v)),ispl2"r"(mn(pl(x,v),v),x,1rl,mnpl(x,v)),compl"r"(1rl,x)):is"r"(mn(pl(1rl,pl(x,v)),v),p1(x))
+t7:=tr3is(real,mn(p1(pl(x,v)),pl(y,v)),pl(pl(1rl,pl(x,v)),pl(m0"r"(v),m0"r"(y))),mn(mn(pl(1rl,pl(x,v)),v),y),mn(p1(x),y),ispl12"r"(p1(pl(x,v)),pl(1rl,pl(x,v)),m0"r"(pl(y,v)),pl(m0"r"(v),m0"r"(y)),compl"r"(pl(x,v),1rl),t5),asspl2"r"(pl(1rl,pl(x,v)),m0"r"(v),m0"r"(y)),ismn1"r"(mn(pl(1rl,pl(x,v)),v),p1(x),y,t6)):is"r"(mn(p1(pl(x,v)),pl(y,v)),mn(p1(x),y))
+t8:=th9"l.or"(less(y,x),is"r"(y,x),less(pl(y,v),pl(x,v)),is"r"(pl(y,v),pl(x,v)),ly,[t:less(y,x)]satz188f(y,x,v,t),[t:is"r"(y,x)]ispl1"r"(y,x,v,t)):lessis(pl(y,v),pl(x,v))
+s0:=shiftl(x,ix,y,iy,ly):nat
+sv:=shiftl(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8):nat
+t9:=isrlent(mn(p1(pl(x,v)),pl(y,v)),t6"r.shift"(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8),mn(p1(x),y),t6"r.shift"(x,ix,y,iy,ly),t7):is"n"(sv,s0)
+t10:=lessisi2"n"(sv,s0,t9):lessis"n"(sv,s0)
+f1:=left(cx,s0,sv,t10,shiftf(x,ix,y,iy,ly,f)):[t:1to(sv)]cx
+t11:=issmpr(q,s0,shiftf(x,ix,y,iy,ly,f),sv,t9):is(smpr(q,sv,f1),smpri(x,ix,y,iy,ly,f,q))
+[n:1to(sv)]
+t12:=isinoutn(s0,inn(sv,n),trlessis"n"(inn(sv,n),sv,s0,1top(sv,n),t10)):is"n"(inn(sv,n),inn(s0,left1to(s0,sv,t10,n)))
+n1:=left1to(s0,sv,t10,n):1to(s0)
+t13:=isnterl(inn(sv,n),inn(s0,n1),t12):is"r"(rlofnt(inn(sv,n)),rlofnt(inn(s0,n1)))
+t14:=tris(real,mn(pl(rlofnt(inn(sv,n)),pl(y,v)),v),pl(rlofnt(inn(sv,n)),mn(pl(y,v),v)),pl(rlofnt(inn(s0,n1)),y),asspl1"r"(rlofnt(inn(sv,n)),pl(y,v),m0"r"(v)),ispl12"r"(rlofnt(inn(sv,n)),rlofnt(inn(s0,n1)),mn(pl(y,v),v),y,t13,mnpl(y,v))):is"r"(mn(pl(rlofnt(inn(sv,n)),pl(y,v)),v),pl(rlofnt(inn(s0,n1)),y))
+st0:=shiftr(x,ix,y,iy,ly,n1):real
+stv:=shiftr(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8,n):real
+t15:=tr4is(real,mn(stv,v),pl(pl(rlofnt(inn(sv,n)),pl(y,v)),pl(m0"r"(1rl),m0"r"(v))),pl(pl(rlofnt(inn(sv,n)),pl(y,v)),pl(m0"r"(v),m0"r"(1rl))),mn(mn(pl(rlofnt(inn(sv,n)),pl(y,v)),v),1rl),st0,asspl1"r"(pl(rlofnt(inn(sv,n)),pl(y,v)),m0"r"(1rl),m0"r"(v)),ispl2"r"(pl(m0"r"(1rl),m0"r"(v)),pl(m0"r"(v),m0"r"(1rl)),pl(rlofnt(inn(sv,n)),pl(y,v)),compl"r"(m0"r"(1rl),m0"r"(v))),asspl2"r"(pl(rlofnt(inn(sv,n)),pl(y,v)),m0"r"(v),m0"r"(1rl)),ismn1"r"(mn(pl(rlofnt(inn(sv,n)),pl(y,v)),v),pl(rlofnt(inn(s0,n1)),y),1rl,t14)):is"r"(mn(stv,v),st0)
+t16:=intshiftr(x,ix,y,iy,ly,n1):intrl(st0)
+t17:=shiftrls(x,ix,y,iy,ly,n1):lessis(st0,x)
+t18:=lsshiftr(x,ix,y,iy,ly,n1):lessis(y,st0)
+t19:=intshiftr(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8,n):intrl(stv)
+t20:=shiftrls(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8,n):lessis(stv,pl(x,v))
+t21:=lsshiftr(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8,n):lessis(pl(y,v),stv)
+t22:=intmn(stv,t19,v,iv):intrl(mn(stv,v))
+t23:=t2(stv,t19,t21,t20):lessis(y,mn(stv,v))
+t24:=t4(stv,t19,t21,t20):lessis(mn(stv,v),x)
+t25:=<t15><t17><t18><t16><st0><t24><t23><t22><mn(stv,v)>pi:is(<n>shiftf(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8,sft),<n>f1)
+iv@t26:=fisi(1to(sv),cx,shiftf(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8,sft),f1,[t:1to(sv)]t25(t)):is"e"([t:1to(sv)]cx,shiftf(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8,sft),f1)
+t27:=isf([t:1to(sv)]cx,cx,[w:[t:1to(sv)]cx]smpr(q,sv,w),shiftf(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8,sft),f1,t26):is(smpri(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8,sft,q),smpr(q,sv,f1))
+-8285
+iv@lemma285:=t8".8285":lessis(pl"r"(y,v),pl"r"(x,v))
+satz285:=tris(cx,smpri(pl"r"(x,v),intpl(x,ix,v,iv),pl"r"(y,v),intpl(y,iy,v,iv),lemma285,sft,q),smpr(q,sv".8285",f1".8285"),smpri(x,ix,y,iy,ly,f,q),t27".8285",t11".8285"):is(smpri(pl"r"(x,v),intpl(x,ix,v,iv),pl"r"(y,v),intpl(y,iy,v,iv),lemma285,sft,q),smpri(x,ix,y,iy,ly,f,q))
+ly@[s:seq(x,ix,y,iy,ly,real)][ins:inseq(x,ix,y,iy,ly,s)][f:seq(x,ix,y,iy,ly,cx)][u:real][iu:intrl(u)][lu:lessis(y,u)][ul:lessis(u,x)]
+us:=<ul><lu><iu><u>s:real
++8286
+t1:=<ul><lu><iu><u>ins:and3(intrl(us),lessis(y,us),lessis(us,x))
+-8286
+inseqe1:=t22"r.shift"(x,ix,y,iy,ly,us,t1".8286"):intrl(us)
+inseqe2:=t23"r.shift"(x,ix,y,iy,ly,us,t1".8286"):lessis(y,us)
+inseqe3:=t24"r.shift"(x,ix,y,iy,ly,us,t1".8286"):lessis(us,x)
+usf:=<inseqe3><inseqe2><inseqe1><us>f:cx
+f@permseq:=[t:real][u:intrl(t)][v:lessis(y,t)][w:lessis(t,x)]usf(t,u,v,w):[t:real][u:intrl(t)][v:lessis(y,t)][w:lessis(t,x)]cx
+q@[a:assoc(q)][c:commut(q)][s:seq(x,ix,y,iy,ly,real)][ins:inseq(x,ix,y,iy,ly,s)][pri:proofsirrelevant(x,ix,y,iy,ly,real,s)][ps:perm(x,ix,y,iy,ly,s)]
++*8286
+ps@ss:=shiftseq(x,ix,y,iy,ly,s,ins):[t:1to(shiftl)]1to(shiftl)
+t2:=satz283(q,a,c,shiftl,ss,bijshiftseq(x,ix,y,iy,ly,s,ins,pri,ps),shiftf(f)):is(smpr(q,shiftl,[t:1to(shiftl)]<<t>ss>shiftf(f)),smpri(f,q))
+[n:1to(shiftl)]
+ns:=us(s,ins,f,shiftr(n),intshiftr(n),lsshiftr(n),shiftrls(n)):real
+t3:=shiftinv1(ns,t34"r.shift"(x,ix,y,iy,ly,s,ins,n)):is"r"(ns,shiftr(<n>ss))
+t4:=inseqe1(s,ins,f,shiftr(n),intshiftr(n),lsshiftr(n),shiftrls(n)):intrl(ns)
+t5:=inseqe2(s,ins,f,shiftr(n),intshiftr(n),lsshiftr(n),shiftrls(n)):lessis(y,ns)
+t6:=inseqe3(s,ins,f,shiftr(n),intshiftr(n),lsshiftr(n),shiftrls(n)):lessis(ns,x)
+t7:=intshiftr(<n>ss):intrl(shiftr(<n>ss))
+t8:=lsshiftr(<n>ss):lessis(y,shiftr(<n>ss))
+t9:=shiftrls(<n>ss):lessis(shiftr(<n>ss),x)
+t10:=<t3><t9><t8><t7><shiftr(<n>ss)><t6><t5><t4><ns>pi:is(<n>shiftf(permseq(s,ins,f)),<<n>ss>shiftf(f))
+ps@t11:=fisi(1to(shiftl),cx,shiftf(permseq(s,ins,f)),[t:1to(shiftl)]<<t>ss>shiftf(f),[t:1to(shiftl)]t10(t)):is"e"([t:1to(shiftl)]cx,shiftf(permseq(s,ins,f)),[t:1to(shiftl)]<<t>ss>shiftf(f))
+t12:=isf([t:1to(shiftl)]cx,cx,[u:[t:1to(shiftl)]cx]smpr(q,shiftl,u),shiftf(permseq(s,ins,f)),[t:1to(shiftl)]<<t>ss>shiftf(f),t11):is(smpri(permseq(s,ins,f),q),smpr(q,shiftl,[t:1to(shiftl)]<<t>ss>shiftf(f)))
+-8286
+ps@satz286:=tris(cx,smpri(permseq(s,ins,f),q),smpr(q,shiftl,[t:1to(shiftl)]<<t>ss".8286">shiftf(f)),smpri(f,q),t12".8286",t2".8286"):is(smpri(permseq(s,ins,f),q),smpri(f,q))
+@[x:nat][f:[t:1to(x)]cx]
+modf:=[t:1to(x)]pli(mod(<t>f),0):[t:1to(x)]cx
++8287
+[r:real]
+prop1:=lessis(mod(sum(x,f)),r):'prop'
+prop2:=is(sum(x,modf(f)),pli(r,0)):'prop'
+prop3:=and(prop1,prop2):'prop'
+f@prop4:=some"r"([t:real]prop3(t)):'prop'
+x@prop5:=[u:[t:1to(x)]cx]prop4(u):'prop'
+@[f:[t:1to(1)]cx]
+t1:=satz277([t:cx][u:cx]pl(t,u),f):is(sum(1,f),<xout(1)>f)
+t2:=ismod(sum(1,f),<xout(1)>f,t1):is"r"(mod(sum(1,f)),mod(<xout(1)>f))
+t3:=lessisi2(mod(sum(1,f)),mod(<xout(1)>f),t2):prop1(1,f,mod(<xout(1)>f))
+t4:=satz277([t:cx][u:cx]pl(t,u),modf(1,f)):prop2(1,f,mod(<xout(1)>f))
+t5:=andi(prop1(1,f,mod(<xout(1)>f)),prop2(1,f,mod(<xout(1)>f)),t3,t4):prop3(1,f,mod(<xout(1)>f))
+t6:=somei(real,[t:real]prop3(1,f,t),mod(<xout(1)>f),t5):prop4(1,f)
+@t7:=[u:[t:1to(1)]cx]t6(u):prop5(1)
+x@[p:prop5(x)][f:[t:1to(pl"n"(x,1))]cx]
+t8:=lessisi1"n"(x,pl"n"(x,1),satz18a(x,1)):lessis"n"(x,pl"n"(x,1))
+lf:=left(cx,pl"n"(x,1),x,t8,f):[t:1to(x)]cx
+[r:real][pr:prop3(lf,r)]
+t9:=ande1(prop1(lf,r),prop2(lf,r),pr):prop1(lf,r)
+t10:=ande2(prop1(lf,r),prop2(lf,r),pr):prop2(lf,r)
+t11:=satz278([t:cx][u:cx]pl(t,u),x,f):is(sum(pl"n"(x,1),f),pl(sum(x,lf),<xout(pl"n"(x,1))>f))
+t12:=ismod(pl(sum(x,lf),<xout(pl"n"(x,1))>f),sum(pl"n"(x,1),f),symis(cx,sum(pl"n"(x,1),f),pl(sum(x,lf),<xout(pl"n"(x,1))>f),t11)):is"r"(mod(pl(sum(x,lf),<xout(pl"n"(x,1))>f)),mod(sum(pl"n"(x,1),f)))
+m:=mod(<xout(pl"n"(x,1))>f):real
+t13:=islessis1(mod(pl(sum(x,lf),<xout(pl"n"(x,1))>f)),mod(sum(pl"n"(x,1),f)),pl"r"(mod(sum(x,lf)),m),t12,satz271(sum(x,lf),<xout(pl"n"(x,1))>f)):lessis(mod(sum(pl"n"(x,1),f)),pl"r"(mod(sum(x,lf)),m))
+t14:=th9"l.or"(less(mod(sum(x,lf)),r),is"r"(mod(sum(x,lf)),r),less(pl"r"(mod(sum(x,lf)),m),pl"r"(r,m)),is"r"(pl"r"(mod(sum(x,lf)),m),pl"r"(r,m)),t9,[t:less(mod(sum(x,lf)),r)]satz188f(mod(sum(x,lf)),r,m,t),[t:is"r"(mod(sum(x,lf)),r)]ispl1"r"(mod(sum(x,lf)),r,m,t)):lessis(pl"r"(mod(sum(x,lf)),m),pl"r"(r,m))
+t15:=trlessis(mod(sum(pl"n"(x,1),f)),pl"r"(mod(sum(x,lf)),m),pl"r"(r,m),t13,t14):prop1(pl"n"(x,1),f,pl"r"(r,m))
+lmf:=left(cx,pl"n"(x,1),x,t8,modf(pl"n"(x,1),f)):[t:1to(x)]cx
+t16:=satz278([t:cx][u:cx]pl(t,u),x,modf(pl"n"(x,1),f)):is(sum(pl"n"(x,1),modf(pl"n"(x,1),f)),pl(sum(x,lmf),pli(m,0)))
+t17:=ispl1(sum(x,lmf),pli(r,0),pli(m,0),t10):is(pl(sum(x,lmf),pli(m,0)),pl(pli(r,0),pli(m,0)))
+t18:=plis12a(r,0,m,0):is(pl(pli(r,0),pli(m,0)),pli(pl"r"(r,m),pl"r"(0,0)))
+t19:=isrecx2(pl"r"(0,0),0,pl"r"(r,m),pl01"r"(0,0,refis(real,0))):is(pli(pl"r"(r,m),pl"r"(0,0)),pli(pl"r"(r,m),0))
+t20:=tr4is(cx,sum(pl"n"(x,1),modf(pl"n"(x,1),f)),pl(sum(x,lmf),pli(m,0)),pl(pli(r,0),pli(m,0)),pli(pl"r"(r,m),pl"r"(0,0)),pli(pl"r"(r,m),0),t16,t17,t18,t19):prop2(pl"n"(x,1),f,pl"r"(r,m))
+t21:=andi(prop1(pl"n"(x,1),f,pl"r"(r,m)),prop2(pl"n"(x,1),f,pl"r"(r,m)),t15,t20):prop3(pl"n"(x,1),f,pl"r"(r,m))
+t22:=somei(real,[t:real]prop3(pl"n"(x,1),f,t),pl"r"(r,m),t21):prop4(pl"n"(x,1),f)
+f@t23:=someapp(real,[t:real]prop3(lf,t),<lf>p,prop4(pl"n"(x,1),f),[t:real][u:prop3(lf,t)]t22(t,u)):prop4(pl"n"(x,1),f)
+p@t25:=[u:[t:1to(pl"n"(x,1))]cx]t23(u):prop5(pl"n"(x,1))
+t26:=isp(nat,[t:nat]prop5(t),pl"n"(x,1),<x>suc,t25,satz4a(x)):prop5(<x>suc)
+-8287
+satz287:=<f>induction([t:nat]prop5".8287"(t),t7".8287",[t:nat][u:prop5".8287"(t)]t26".8287"(t,u),x):some"r"([t:real]and(lessis(mod(sum(x,f)),t),is(sum(x,modf(f)),pli(t,0))))
++8288
+prop1:=is(pli(mod(prod(x,f)),0),prod(x,modf(f))):'prop'
+x@prop2:=[u:[t:1to(x)]cx]prop1(u):'prop'
+@[f:[t:1to(1)]cx]
+t1:=satz277([t:cx][u:cx]ts(t,u),f):is(prod(1,f),<xout(1)>f)
+t2:=ismod(prod(1,f),<xout(1)>f,t1):is"r"(mod(prod(1,f)),mod(<xout(1)>f))
+t3:=isrecx1(mod(prod(1,f)),mod(<xout(1)>f),0,t2):is(pli(mod(prod(1,f)),0),pli(mod(<xout(1)>f),0))
+t4:=satz277([t:cx][u:cx]ts(t,u),modf(1,f)):is(prod(1,modf(1,f)),pli(mod(<xout(1)>f),0))
+t5:=tris2(cx,pli(mod(prod(1,f)),0),prod(1,modf(1,f)),pli(mod(<xout(1)>f),0),t3,t4):prop1(1,f)
+@t6:=[u:[t:1to(1)]cx]t5(u):prop2(1)
+x@[p:prop2(x)][f:[t:1to(pl"n"(x,1))]cx]
+t7:=lessisi1"n"(x,pl"n"(x,1),satz18a(x,1)):lessis"n"(x,pl"n"(x,1))
+lf:=left(cx,pl"n"(x,1),x,t7,f):[t:1to(x)]cx
+t8:=satz278([t:cx][u:cx]ts(t,u),x,f):is(prod(pl"n"(x,1),f),ts(prod(x,lf),<xout(pl"n"(x,1))>f))
+m:=mod(<xout(pl"n"(x,1))>f):real
+t9:=ismod(prod(pl"n"(x,1),f),ts(prod(x,lf),<xout(pl"n"(x,1))>f),t8):is"r"(mod(prod(pl"n"(x,1),f)),mod(ts(prod(x,lf),<xout(pl"n"(x,1))>f)))
+t10:=satz268(prod(x,lf),<xout(pl"n"(x,1))>f):is"r"(mod(ts(prod(x,lf),<xout(pl"n"(x,1))>f)),ts"r"(mod(prod(x,lf)),m))
+t11:=tris(real,mod(prod(pl"n"(x,1),f)),mod(ts(prod(x,lf),<xout(pl"n"(x,1))>f)),ts"r"(mod(prod(x,lf)),m),t9,t10):is"r"(mod(prod(pl"n"(x,1),f)),ts"r"(mod(prod(x,lf)),m))
+t12:=isrecx1(mod(prod(pl"n"(x,1),f)),ts"r"(mod(prod(x,lf)),m),0,t11):is(pli(mod(prod(pl"n"(x,1),f)),0),pli(ts"r"(mod(prod(x,lf)),m),0))
+lmf:=left(cx,pl"n"(x,1),x,t7,modf(pl"n"(x,1),f)):[t:1to(x)]cx
+t13:=satz278([t:cx][u:cx]ts(t,u),x,modf(pl"n"(x,1),f)):is(prod(pl"n"(x,1),modf(pl"n"(x,1),f)),ts(prod(x,lmf),pli(m,0)))
+t14:=symis(cx,pli(mod(prod(x,lf)),0),prod(x,lmf),<lf>p):is(prod(x,lmf),pli(mod(prod(x,lf)),0))
+t15:=ists1(prod(x,lmf),pli(mod(prod(x,lf)),0),pli(m,0),t14):is(ts(prod(x,lmf),pli(m,0)),ts(pli(mod(prod(x,lf)),0),pli(m,0)))
+t16:=tsis12a(mod(prod(x,lf)),0,m,0):is(ts(pli(mod(prod(x,lf)),0),pli(m,0)),pli(mn"r"(ts"r"(mod(prod(x,lf)),m),ts"r"(0,0)),pl"r"(ts"r"(mod(prod(x,lf)),0),ts"r"(0,m))))
+t17:=tris(real,mn"r"(ts"r"(mod(prod(x,lf)),m),ts"r"(0,0)),mn"r"(ts"r"(mod(prod(x,lf)),m),0),ts"r"(mod(prod(x,lf)),m),ismn2"r"(ts"r"(0,0),0,ts"r"(mod(prod(x,lf)),m),ts01"r"(0,0,refis(real,0))),pl02"r"(ts"r"(mod(prod(x,lf)),m),m0"r"(0),satz176b(0,refis(real,0)))):is"r"(mn"r"(ts"r"(mod(prod(x,lf)),m),ts"r"(0,0)),ts"r"(mod(prod(x,lf)),m))
+t18:=tris(real,pl"r"(ts"r"(mod(prod(x,lf)),0),ts"r"(0,m)),pl"r"(0,0),0,ispl12"r"(ts"r"(mod(prod(x,lf)),0),0,ts"r"(0,m),0,ts02"r"(mod(prod(x,lf)),0,refis(real,0)),ts01"r"(0,m,refis(real,0))),pl01"r"(0,0,refis(real,0))):is"r"(pl"r"(ts"r"(mod(prod(x,lf)),0),ts"r"(0,m)),0)
+t19:=isrecx12(mn"r"(ts"r"(mod(prod(x,lf)),m),ts"r"(0,0)),ts"r"(mod(prod(x,lf)),m),pl"r"(ts"r"(mod(prod(x,lf)),0),ts"r"(0,m)),0,t17,t18):is(pli(mn"r"(ts"r"(mod(prod(x,lf)),m),ts"r"(0,0)),pl"r"(ts"r"(mod(prod(x,lf)),0),ts"r"(0,m))),pli(ts"r"(mod(prod(x,lf)),m),0))
+t20:=tr4is(cx,prod(pl"n"(x,1),modf(pl"n"(x,1),f)),ts(prod(x,lmf),pli(m,0)),ts(pli(mod(prod(x,lf)),0),pli(m,0)),pli(mn"r"(ts"r"(mod(prod(x,lf)),m),ts"r"(0,0)),pl"r"(ts"r"(mod(prod(x,lf)),0),ts"r"(0,m))),pli(ts"r"(mod(prod(x,lf)),m),0),t13,t15,t16,t19):is(prod(pl"n"(x,1),modf(pl"n"(x,1),f)),pli(ts"r"(mod(prod(x,lf)),m),0))
+t21:=tris2(cx,pli(mod(prod(pl"n"(x,1),f)),0),prod(pl"n"(x,1),modf(pl"n"(x,1),f)),pli(ts"r"(mod(prod(x,lf)),m),0),t12,t20):prop1(pl"n"(x,1),f)
+p@t21a:=[u:[t:1to(pl"n"(x,1))]cx]t21(u):prop2(pl"n"(x,1))
+t22:=isp(nat,[t:nat]prop2(t),pl"n"(x,1),<x>suc,t21a,satz4a(x)):prop2(<x>suc)
+-8288
+satz288:=<f>induction([t:nat]prop2".8288"(t),t6".8288",[t:nat][u:prop2".8288"(t)]t22".8288"(t,u),x):is(pli(mod(prod(x,f)),0),prod(x,modf(f)))
++8289
+prop1:=is(prod(x,f),0c):'prop'
+prop2:=some"l"(1to(x),[t:1to(x)]is(<t>f,0c)):'prop'
+prop3:=iff(prop1,prop2):'prop'
+x@prop4:=[u:[t:1to(x)]cx]prop3(u):'prop'
+@[f:[t:1to(1)]cx]
+t1:=satz277([t:cx][u:cx]ts(t,u),f):is(prod(1,f),<xout(1)>f)
+[p:prop1(1,f)]
+t2:=tris1(cx,<xout(1)>f,0c,prod(1,f),t1,p):is(<xout(1)>f,0c)
+t3:=somei(1to(1),[t:1to(1)]is(<t>f,0c),xout(1),t2):prop2(1,f)
+f@[p:prop2(1,f)][u:1to(1)][i:is(<u>f,0c)]
+t4:=th1"n.singlet"(u):is"e"(1to(1),u,xout(1))
+t5:=tr3is(cx,prod(1,f),<xout(1)>f,<u>f,0c,t1,isf(1to(1),cx,f,xout(1),u,symis(1to(1),u,xout(1),t4)),i):prop1(1,f)
+p@t6:=someapp(1to(1),[t:1to(1)]is(<t>f,0c),p,prop1(1,f),[t:1to(1)][u:is(<t>f,0c)]t5(t,u)):prop1(1,f)
+f@t7:=iffi(prop1(1,f),prop2(1,f),[t:prop1(1,f)]t3(t),[t:prop2(1,f)]t6(t)):prop3(1,f)
+@t8:=[u:[t:1to(1)]cx]t7(u):prop4(1)
+x@[p:prop4(x)][f:[t:1to(pl"n"(x,1))]cx]
+t9:=lessisi1"n"(x,pl"n"(x,1),satz18a(x,1)):lessis"n"(x,pl"n"(x,1))
+lf:=left(cx,pl"n"(x,1),x,t9,f):[t:1to(x)]cx
+t10:=satz278([t:cx][u:cx]ts(t,u),x,f):is(prod(pl"n"(x,1),f),ts(prod(x,lf),<xout(pl"n"(x,1))>f))
+[q:prop1(pl"n"(x,1),f)]
+t11:=tris1(cx,ts(prod(x,lf),<xout(pl"n"(x,1))>f),0c,prod(pl"n"(x,1),f),t10,q):is(ts(prod(x,lf),<xout(pl"n"(x,1))>f),0c)
+t12:=satz221c(prod(x,lf),<xout(pl"n"(x,1))>f,t11):or(is(prod(x,lf),0c),is(<xout(pl"n"(x,1))>f,0c))
+[i:is(prod(x,lf),0c)]
+t13:=th3"l.iff"(prop1(x,lf),prop2(x,lf),<lf>p,i):prop2(x,lf)
+[n:1to(x)][j:is(<n>lf,0c)]
+t14:=somei(1to(pl"n"(x,1)),[t:1to(pl"n"(x,1))]is(<t>f,0c),left1to(pl"n"(x,1),x,t9,n),j):prop2(pl"n"(x,1),f)
+i@t15:=someapp(1to(x),[t:1to(x)]is(<t>lf,0c),t13,prop2(pl"n"(x,1),f),[t:1to(x)][u:is(<t>lf,0c)]t14(t,u)):prop2(pl"n"(x,1),f)
+q@[i:is(<xout(pl"n"(x,1))>f,0c)]
+t16:=somei(1to(pl"n"(x,1)),[t:1to(pl"n"(x,1))]is(<t>f,0c),xout(pl"n"(x,1)),i):prop2(pl"n"(x,1),f)
+q@t17:=orapp(is(prod(x,lf),0c),is(<xout(pl"n"(x,1))>f,0c),prop2(pl"n"(x,1),f),t12,[t:is(prod(x,lf),0c)]t15(t),[t:is(<xout(pl"n"(x,1))>f,0c)]t16(t)):prop2(pl"n"(x,1),f)
+f@[q:prop2(pl"n"(x,1),f)][n:1to(pl"n"(x,1))][i:is(<n>f,0c)][j:is"e"(1to(pl"n"(x,1)),n,xout(pl"n"(x,1)))]
+t18:=tris1(cx,<xout(pl"n"(x,1))>f,0c,<n>f,isf(1to(pl"n"(x,1)),cx,f,n,xout(pl"n"(x,1)),j),i):is(<xout(pl"n"(x,1))>f,0c)
+t20:=satz221b(prod(x,lf),<xout(pl"n"(x,1))>f,t18):is(ts(prod(x,lf),<xout(pl"n"(x,1))>f),0c)
+i@[m:not(is"e"(1to(pl"n"(x,1)),n,xout(pl"n"(x,1))))]
+n1:=inn(pl"n"(x,1),n):nat
+[j:is"n"(n1,pl"n"(x,1))]
+t21:=isoutni(pl"n"(x,1),n1,1top(pl"n"(x,1),n),pl"n"(x,1),lessisi3(pl"n"(x,1)),j):is"e"(1to(pl"n"(x,1)),outn(pl"n"(x,1),n1,1top(pl"n"(x,1),n)),xout(pl"n"(x,1)))
+t22:=tris(1to(pl"n"(x,1)),n,outn(pl"n"(x,1),n1,1top(pl"n"(x,1),n)),xout(pl"n"(x,1)),isoutinn(pl"n"(x,1),n),t21):is"e"(1to(pl"n"(x,1)),n,xout(pl"n"(x,1)))
+m@t23:=th3"l.imp"(is"n"(n1,pl"n"(x,1)),is"e"(1to(pl"n"(x,1)),n,xout(pl"n"(x,1))),m,[t:is"n"(n1,pl"n"(x,1))]t22(t)):nis"n"(n1,pl"n"(x,1))
+t24:=ore1(less"n"(n1,pl"n"(x,1)),is"n"(n1,pl"n"(x,1)),1top(pl"n"(x,1),n),t23):less"n"(n1,pl"n"(x,1))
+t25:=satz26(x,n1,t24):lessis"n"(n1,x)
+n2:=outn(x,n1,t25):1to(x)
+t26:=isinoutn(x,n1,t25):is"n"(n1,inn(x,n2))
+t27:=isoutni(pl"n"(x,1),n1,1top(pl"n"(x,1),n),inn(x,n2),trlessis"n"(inn(x,n2),x,pl"n"(x,1),1top(x,n2),t9),t26):is"e"(1to(pl"n"(x,1)),outn(pl"n"(x,1),n1,1top(pl"n"(x,1),n)),left1to(pl"n"(x,1),x,t9,n2))
+t28:=tris(1to(pl"n"(x,1)),n,outn(pl"n"(x,1),n1,1top(pl"n"(x,1),n)),left1to(pl"n"(x,1),x,t9,n2),isoutinn(pl"n"(x,1),n),t27):is"e"(1to(pl"n"(x,1)),n,left1to(pl"n"(x,1),x,t9,n2))
+t29:=isf(1to(pl"n"(x,1)),cx,f,n,left1to(pl"n"(x,1),x,t9,n2),t28):is(<n>f,<n2>lf)
+t30:=tris1(cx,<n2>lf,0c,<n>f,t29,i):is(<n2>lf,0c)
+t31:=somei(1to(x),[t:1to(x)]is(<t>lf,0c),n2,t30):prop2(x,lf)
+t32:=th4"l.iff"(prop1(x,lf),prop2(x,lf),<lf>p,t31):prop1(x,lf)
+t34:=satz221a(prod(x,lf),<xout(pl"n"(x,1))>f,t32):is(ts(prod(x,lf),<xout(pl"n"(x,1))>f),0c)
+i@t35:=th1"l.imp"(is"e"(1to(pl"n"(x,1)),n,xout(pl"n"(x,1))),is(ts(prod(x,lf),<xout(pl"n"(x,1))>f),0c),[t:is"e"(1to(pl"n"(x,1)),n,xout(pl"n"(x,1)))]t20(t),[t:not(is"e"(1to(pl"n"(x,1)),n,xout(pl"n"(x,1))))]t34(t)):is(ts(prod(x,lf),<xout(pl"n"(x,1))>f),0c)
+t36:=tris(cx,prod(pl"n"(x,1),f),ts(prod(x,lf),<xout(pl"n"(x,1))>f),0c,t10,t35):prop1(pl"n"(x,1),f)
+q@t37:=someapp(1to(pl"n"(x,1)),[t:1to(pl"n"(x,1))]is(<t>f,0c),q,prop1(pl"n"(x,1),f),[t:1to(pl"n"(x,1))][u:is(<t>f,0c)]t36(t,u)):prop1(pl"n"(x,1),f)
+f@t38:=iffi(prop1(pl"n"(x,1),f),prop2(pl"n"(x,1),f),[t:prop1(pl"n"(x,1),f)]t17(t),[t:prop2(pl"n"(x,1),f)]t37(t)):prop3(pl"n"(x,1),f)
+p@t39:=[u:[t:1to(pl"n"(x,1))]cx]t38(u):prop4(pl"n"(x,1))
+t40:=isp(nat,[t:nat]prop4(t),pl"n"(x,1),<x>suc,t39,satz4a(x)):prop4(<x>suc)
+-8289
+satz289:=<f>induction([t:nat]prop4".8289"(t),t8".8289",[t:nat][u:prop4".8289"(t)]t40".8289"(t,u),x):iff(is(prod(x,f),0c),some"l"(1to(x),[t:1to(x)]is(<t>f,0c)))
+[i:is(prod(x,f),0c)]
+satz289a:=th3"l.iff"(prop1".8289",prop2".8289",satz289,i):some"l"(1to(x),[t:1to(x)]is(<t>f,0c))
+f@[n:1to(x)][i:is(<n>f,0c)]
++*8289
+i"c"@t41:=somei(1to(x),[t:1to(x)]is(<t>f,0c),n,i):prop2
+-8289
+i@satz289b:=th4"l.iff"(prop1".8289",prop2".8289",satz289,t41".8289"):is(prod(x,f),0c)
+@[x:complex][m:real][mi:intrl(m)][o:or(nis(x,0c),pos(m))]
++v9
+[p:pos(m)]
+t1:=posintnatrl(m,p,mi):natrl(m)
+m1:=ntofrl(m,t1):nat
+pw1:=prod(m1,[t:1to(m1)]x):cx
+-v9
+x@[y:complex][m:real][n:real][i:is(x,y)][j:is"r"(m,n)][mi1:intrl(m)][ni1:intrl(n)][ox:or(nis(x,0c),pos(m))][oy:or(nis(y,0c),pos(n))]
++*v9
+oy@[mp:pos(m)][np:pos(n)]
+m0:=m1(x,m,mi1,ox,mp):nat
+n0:=m1(y,n,ni1,oy,np):nat
+t2:=isrlent(m,t1(x,m,mi1,ox,mp),n,t1(y,n,ni1,oy,np),j):is"n"(m0,n0)
+t3:=lessisi2"n"(m0,n0,t2):lessis"n"(m0,n0)
+t4:=issmpr([t:cx][u:cx]ts(t,u),n0,[t:1to(n0)]y,m0,t2):is(prod(m0,left(cx,n0,m0,t3,[t:1to(n0)]y)),pw1(y,n,ni1,oy,np))
+t5:=fisi(1to(m0),cx,[t:1to(m0)]x,left(cx,n0,m0,t3,[t:1to(n0)]y),[t:1to(m0)]i):is"e"([t:1to(m0)]cx,[t:1to(m0)]x,left(cx,n0,m0,t3,[t:1to(n0)]y))
+t6:=isf([t:1to(m0)]cx,cx,[u:[t:1to(m0)]cx]prod(m0,u),[t:1to(m0)]x,left(cx,n0,m0,t3,[t:1to(n0)]y),t5):is(pw1(x,m,mi1,ox,mp),prod(m0,left(cx,n0,m0,t3,[t:1to(n0)]y)))
+t7:=tris(cx,pw1(x,m,mi1,ox,mp),prod(m0,left(cx,n0,m0,t3,[t:1to(n0)]y)),pw1(y,n,ni1,oy,np),t6,t4):is(pw1(x,m,mi1,ox,mp),pw1(y,n,ni1,oy,np))
+p@[p1:pos(m)]
+t8:=t7(x,x,m,m,refis(cx,x),refis(real,m),mi,mi,o,o,p,p1):is(pw1(p),pw1(p1))
+p@[n:nis(x,0c)]
+t9:=th5"l.some"(1to(m1),[t:1to(m1)]is(<t>[u:1to(m1)]x,0c),[t:1to(m1)]n):not(some"l"(1to(m1),[t:1to(m1)]is(<t>[u:1to(m1)]x,0c)))
+t10:=th3"l.imp"(is(pw1,0c),some"l"(1to(m1),[t:1to(m1)]is(<t>[u:1to(m1)]x,0c)),t9,[t:is(pw1,0c)]satz289a(m1,[u:1to(m1)]x,t)):nis(pw1,0c)
+o@[n:neg(m)]
+mi@t11:=intabs(m,mi):intrl(abs(m))
+n@t12:=satz166b(m,n):pos(abs(m))
+t13:=ori2(nis(x,0c),pos(abs(m)),t12):or(nis(x,0c),pos(abs(m)))
+t14:=ore1(nis(x,0c),pos(m),o,nnotp(m,n)):nis(x,0c)
+t15:=t10(abs(m),t11,t13,t12,t14):nis(pw1(abs(m),t11,t13,t12),0c)
+pw2:=ov(1c,pw1(abs(m),t11,t13,t12),t15):cx
+oy@[nm:neg(m)][nn:neg(n)]
+pwm:=pw1(x,abs(m),t11(x,m,mi1),t13(x,m,mi1,ox,nm),t12(x,m,mi1,ox,nm)):cx
+pwn:=pw1(y,abs(n),t11(y,n,ni1),t13(y,n,ni1,oy,nn),t12(y,n,ni1,oy,nn)):cx
+t16:=t7(abs(m),abs(n),i,isabs(m,n,j),t11(x,m,mi1),t11(y,n,ni1),t13(x,m,mi1,ox,nm),t13(y,n,ni1,oy,nn),t12(x,m,mi1,ox,nm),t12(y,n,ni1,oy,nn)):is(pwm,pwn)
+t17:=isov2(pwm,pwn,1c,t16,t15(x,m,mi1,ox,nm),t15(y,n,ni1,oy,nn)):is(pw2(x,m,mi1,ox,nm),pw2(y,n,ni1,oy,nn))
+n@[n1:neg(m)]
+t18:=t17(x,x,m,m,refis(cx,x),refis(real,m),mi,mi,o,o,n,n1):is(pw2(n),pw2(n1))
+o@pw3:=ite"l.r"(neg(m),cx,[t:neg(m)]pw2(t),[t:not(neg(m))]1c,[t:neg(m)][u:neg(m)]t18(t,u),[t:not(neg(m))][u:not(neg(m))]refis(cx,1c)):cx
+n@t19:=itet"l.r"(neg(m),cx,[t:neg(m)]pw2(t),[t:not(neg(m))]1c,[t:neg(m)][u:neg(m)]t18(t,u),[t:not(neg(m))][u:not(neg(m))]refis(cx,1c),n):is(pw3,pw2(n))
+o@[nn:not(neg(m))]
+t20:=itef"l.r"(neg(m),cx,[t:neg(m)]pw2(t),[t:not(neg(m))]1c,[t:neg(m)][u:neg(m)]t18(t,u),[t:not(neg(m))][u:not(neg(m))]refis(cx,1c),nn):is(pw3,1c)
+nm@t21:=isp(real,[t:real]neg(t),m,n,nm,j):neg(n)
+t22:=t19(x,m,mi1,ox,nm):is(pw3(x,m,mi1,ox),pw2(x,m,mi1,ox,nm))
+t23:=symis(cx,pw3(y,n,ni1,oy),pw2(y,n,ni1,oy,t21),t19(y,n,ni1,oy,t21)):is(pw2(y,n,ni1,oy,t21),pw3(y,n,ni1,oy))
+t24:=tr3is(cx,pw3(x,m,mi1,ox),pw2(x,m,mi1,ox,nm),pw2(y,n,ni1,oy,t21),pw3(y,n,ni1,oy),t22,t17(t21),t23):is(pw3(x,m,mi1,ox),pw3(y,n,ni1,oy))
+oy@[nn:not(neg(m))]
+t25:=isp(real,[t:real]not(neg(t)),m,n,nn,j):not(neg(n))
+t26:=t20(x,m,mi1,ox,nn):is(pw3(x,m,mi1,ox),1c)
+t27:=t20(y,n,ni1,oy,t25):is(pw3(y,n,ni1,oy),1c)
+t28:=tris2(cx,pw3(x,m,mi1,ox),pw3(y,n,ni1,oy),1c,t26,t27):is(pw3(x,m,mi1,ox),pw3(y,n,ni1,oy))
+oy@t29:=th1"l.imp"(neg(m),is(pw3(x,m,mi1,ox),pw3(y,n,ni1,oy)),[t:neg(m)]t24(t),[t:not(neg(m))]t28(t)):is(pw3(x,m,mi1,ox),pw3(y,n,ni1,oy))
+-v9
+o@pw:=ite"l.r"(pos(m),cx,[t:pos(m)]pw1".v9"(t),[t:not(pos(m))]pw3".v9",[t:pos(m)][u:pos(m)]t8".v9"(t,u),[t:not(pos(m))][u:not(pos(m))]refis(cx,pw3".v9")):cx
++*v9
+p@t30:=itet"l.r"(pos(m),cx,[t:pos(m)]pw1(t),[t:not(pos(m))]pw3,[t:pos(m)][u:pos(m)]t8(t,u),[t:not(pos(m))][u:not(pos(m))]refis(cx,pw3),p):is(pw,pw1(p))
+o@[n:not(pos(m))]
+t31:=itef"l.r"(pos(m),cx,[t:pos(m)]pw1(t),[t:not(pos(m))]pw3,[t:pos(m)][u:pos(m)]t8(t,u),[t:not(pos(m))][u:not(pos(m))]refis(cx,pw3),n):is(pw,pw3)
+o@[i:is"r"(m,0)]
+t32:=tris(cx,pw,pw3,1c,t31(0notp(m,i)),t20(0notn(m,i))):is(pw,1c)
+o@[n:neg(m)]
+t33:=tris(cx,pw,pw3,pw2(n),t31(nnotp(m,n)),t19(n)):is(pw,pw2(n))
+-v9
+o@[p:pos(m)]
+posexp:=t30".v9"(p):is(pw(x,m,mi,o),prod(ntofrl(m,posintnatrl(m,p,mi)),[t:1to(ntofrl(m,posintnatrl(m,p,mi)))]x))
+[n:nis(x,0c)]
+lemmapw1:=th2"e.notis"(cx,pw1".v9"(p),0c,pw,t10".v9"(p,n),posexp):nis(pw(x,m,mi,o),0c)
+o@[i:is"r"(m,0)]
+0exp:=t32".v9"(i):is(pw(x,m,mi,o),1c)
+o@[n:neg(m)]
+lemmapw2:=t14".v9"(n):nis(x,0c)
+lemmapw3:=t13".v9"(n):or(nis(x,0c),pos(abs(m)))
++*v9
+n@t34:=t30(abs(m),t11,t13(n),t12(n)):is(pw(x,abs(m),t11,t13(n)),pw1(x,abs(m),t11,t13(n),t12(n)))
+t35:=isov2(pw(x,abs(m),t11,t13(n)),pw1(x,abs(m),t11,t13(n),t12(n)),1c,t34,lemmapw1(abs(m),t11,t13(n),t12(n),t14(n)),t15(n)):is(ov(1c,pw(x,abs(m),t11,t13(n)),lemmapw1(abs(m),t11,t13(n),t12(n),t14(n))),pw2(n))
+-v9
+n@negexp:=tris2(cx,pw(x,m,mi,o),ov(1c,pw(x,abs(m),intabs(m,mi),lemmapw3),lemmapw1(x,abs(m),intabs(m,mi),lemmapw3,satz166b(m,n),lemmapw2)),pw2".v9"(n),t33".v9"(n),t35".v9"(n)):is(pw(x,m,mi,o),ov(1c,pw(x,abs(m),intabs(m,mi),lemmapw3),lemmapw1(x,abs(m),intabs(m,mi),lemmapw3,satz166b(m,n),lemmapw2)))
++*v9
+mp@t36:=isp(real,[t:real]pos(t),m,n,mp,j):pos(n)
+t37:=t30(x,m,mi1,ox,mp):is(pw(x,m,mi1,ox),pw1(x,m,mi1,ox,mp))
+t38:=symis(cx,pw(y,n,ni1,oy),pw1(y,n,ni1,oy,t36),t30(y,n,ni1,oy,t36)):is(pw1(y,n,ni1,oy,t36),pw(y,n,ni1,oy))
+t39:=tr3is(cx,pw(x,m,mi1,ox),pw1(x,m,mi1,ox,mp),pw1(y,n,ni1,oy,t36),pw(y,n,ni1,oy),t37,t7(t36),t38):is(pw(x,m,mi1,ox),pw(y,n,ni1,oy))
+oy@[np:not(pos(m))]
+t40:=isp(real,[t:real]not(pos(t)),m,n,np,j):not(pos(n))
+t41:=t31(x,m,mi1,ox,np):is(pw(x,m,mi1,ox),pw3(x,m,mi1,ox))
+t42:=symis(cx,pw(y,n,ni1,oy),pw3(y,n,ni1,oy),t31(y,n,ni1,oy,t40)):is(pw3(y,n,ni1,oy),pw(y,n,ni1,oy))
+t43:=tr3is(cx,pw(x,m,mi1,ox),pw3(x,m,mi1,ox),pw3(y,n,ni1,oy),pw(y,n,ni1,oy),t41,t29,t42):is(pw(x,m,mi1,ox),pw(y,n,ni1,oy))
+-v9
+oy@ispw12:=th1"l.imp"(pos(m),is(pw(x,m,mi1,ox),pw(y,n,ni1,oy)),[t:pos(m)]t39".v9"(t),[t:not(pos(m))]t43".v9"(t)):is(pw(x,m,mi1,ox),pw(y,n,ni1,oy))
+m@[i:is(x,y)][mi:intrl(m)][ox:or(nis(x,0c),pos(m))][oy:or(nis(y,0c),pos(m))]
+ispw1:=ispw12(x,y,m,m,i,refis(real,m),mi,mi,ox,oy):is(pw(x,m,mi,ox),pw(y,m,mi,oy))
+x@[m:real][n:real][i:is"r"(m,n)][mi:intrl(m)][ni:intrl(n)][om:or(nis(x,0c),pos(m))][on:or(nis(x,0c),pos(n))]
+ispw2:=ispw12(x,x,m,n,refis(cx,x),i,mi,ni,om,on):is(pw(x,m,mi,om),pw(x,n,ni,on))
+o@[n:nis(x,0c)]
++9290
+[p:pos(m)]
+t1:=lemmapw1(p,n):nis(pw(x,m,mi,o),0c)
+@[i:is(1c,0c)]
+t2:=tr3is(real,1rl,re(1c),re(0c),0,isre(1rl,0),iscere(1c,0c,i),reis(0,0)):is"r"(1rl,0)
+-9290
+@1not0:=th3"l.imp"(is(1c,0c),is"r"(1rl,0),pnot0(1rl,pos1),[t:is(1c,0c)]t2".9290"(t)):nis(1c,0c)
++*9290
+n@[i:is"r"(m,0)]
+t4:=th2"e.notis"(cx,1c,0c,pw(x,m,mi,o),1not0,0exp(i)):nis(pw(x,m,mi,o),0c)
+n@[nm:neg(m)]
+p0:=pw(x,abs(m),intabs(m,mi),lemmapw3(nm)):cx
+t5:=lemmapw1(x,abs(m),intabs(m,mi),lemmapw3(nm),satz166b(m,nm),lemmapw2(nm)):nis(p0,0c)
+t6:=tris(cx,ts(pw(x,m,mi,o),p0),ts(ov(1c,p0,t5),p0),1c,ists1(pw(x,m,mi,o),ov(1c,p0,t5),p0,negexp(nm)),satz229e(1c,p0,t5)):is(ts(pw(x,m,mi,o),p0),1c)
+t7:=th2"e.notis"(cx,1c,0c,ts(pw(x,m,mi,o),p0),1not0,t6):nis(ts(pw(x,m,mi,o),p0),0c)
+t8:=th3"l.imp"(is(pw(x,m,mi,o),0c),is(ts(pw(x,m,mi,o),p0),0c),t7,[t:is(pw(x,m,mi,o),0c)]satz221a(pw(x,m,mi,o),p0,t)):nis(pw(x,m,mi,o),0c)
+-9290
+n@satz290:=rapp(m,nis(pw(x,m,mi,o),0c),[t:pos(m)]t1".9290"(t),[t:is"r"(m,0)]t4".9290"(t),[t:neg(m)]t8".9290"(t)):nis(pw(x,m,mi,o),0c)
+x@lemma291:=ori2(nis(x,0c),pos(1rl),pos1):or(nis(x,0c),pos(1rl))
++9291
+1a:=ntofrl(1rl,posintnatrl(1rl,pos1,intrl1)):nat
+t1:=posexp(x,1rl,intrl1,lemma291,pos1):is(pw(x,1rl,intrl1,lemma291),prod(1a,[t:1to(1a)]x))
+t2:=tris(nat,1,ntofrl(1rl,natrl1),ntofrl(1rl,posintnatrl(1rl,pos1,intrl1)),isntrl1(1),isrlent(1rl,natrl1,1rl,posintnatrl(1rl,pos1,intrl1),refis(real,1rl))):is"n"(1,1a)
+t3:=lessisi2"n"(1,1a,t2):lessis"n"(1,1a)
+t4:=issmpr([t:cx][u:cx]ts(t,u),1a,[t:1to(1a)]x,1,t2):is(prod(1,left(cx,1a,1,t3,[t:1to(1a)]x)),prod(1a,[t:1to(1a)]x))
+t5:=satz277([t:cx][u:cx]ts(t,u),left(cx,1a,1,t3,[t:1to(1a)]x)):is(prod(1,left(cx,1a,1,t3,[t:1to(1a)]x)),x)
+t6:=tris1(cx,prod(1a,[t:1to(1a)]x),x,prod(1,left(cx,1a,1,t3,[t:1to(1a)]x)),t4,t5):is(prod(1a,[t:1to(1a)]x),x)
+-9291
+satz291:=tris(cx,pw(x,1rl,intrl1,lemma291),prod(1a".9291",[t:1to(1a".9291")]x),x,t1".9291",t6".9291"):is(pw(x,1rl,intrl1,lemma291),x)
+[y:cx][m:real][mi:intrl(m)][o:or(and(nis(x,0c),nis(y,0c)),pos(m))]
++9292
+[a:and(nis(x,0c),nis(y,0c))]
+t1:=ande1(nis(x,0c),nis(y,0c),a):nis(x,0c)
+t2:=ande2(nis(x,0c),nis(y,0c),a):nis(y,0c)
+t3:=satz221d(x,y,t1,t2):nis(ts(x,y),0c)
+-9292
+lemma292a:=th7"l.or"(and(nis(x,0c),nis(y,0c)),pos(m),nis(x,0c),o,[t:and(nis(x,0c),nis(y,0c))]t1".9292"(t)):or(nis(x,0c),pos(m))
+lemma292b:=th7"l.or"(and(nis(x,0c),nis(y,0c)),pos(m),nis(y,0c),o,[t:and(nis(x,0c),nis(y,0c))]t2".9292"(t)):or(nis(y,0c),pos(m))
+lemma292c:=th7"l.or"(and(nis(x,0c),nis(y,0c)),pos(m),nis(ts(x,y),0c),o,[t:and(nis(x,0c),nis(y,0c))]t3".9292"(t)):or(nis(ts(x,y),0c),pos(m))
++*9292
+x@[n:nat]
+nr:=rlofnt(n):real
+t4:=natintrl(nr,natrli(n)):intrl(nr)
+t5:=ori2(nis(x,0c),pos(nr),natpos(nr,natrli(n))):or(nis(x,0c),pos(nr))
+p0:=pw(x,nr,t4,t5):cx
+x@t6:=tris(cx,p0(1),pw(x,1rl,intrl1,lemma291(x)),x,ispw1(x,x,1rl,refis(cx,x),intrl1,t5(1),lemma291(x)),satz291(x)):is(p0(1),x)
+n@n0:=ntofrl(nr,posintnatrl(nr,natpos(nr,natrli(n)),t4)):nat
+t7:=tris(nat,n,ntofrl(nr,natrli(n)),n0,isntrl1(n),isrlent(nr,natrli(n),nr,posintnatrl(nr,natpos(nr,natrli(n)),t4),refis(real,nr))):is"n"(n,n0)
+t8:=lessisi2"n"(n,n0,t7):lessis"n"(n,n0)
+t9:=posexp(x,nr,t4,t5,natpos(nr,natrli(n))):is(p0,prod(n0,[t:1to(n0)]x))
+t10:=issmpr([t:cx][u:cx]ts(t,u),n0,[t:1to(n0)]x,n,t7):is(prod(n,left(cx,n0,n,t8,[t:1to(n0)]x)),prod(n0,[t:1to(n0)]x))
+t11:=tris2(cx,p0,prod(n,[t:1to(n)]x),prod(n0,[t:1to(n0)]x),t9,t10):is(p0,prod(n,[t:1to(n)]x))
+n1:=pl"n"(n,1):nat
+t12:=lessisi1"n"(n,n1,satz18a(n,1)):lessis"n"(n,n1)
+t13:=satz278([t:cx][u:cx]ts(t,u),n,[t:1to(n1)]x):is(prod(n1,[t:1to(n1)]x),ts(prod(n,left(cx,n1,n,t12,[t:1to(n1)]x)),x))
+t14:=ists1(p0,prod(n,[t:1to(n)]x),x,t11):is(ts(p0,x),ts(prod(n,[t:1to(n)]x),x))
+t15:=tris2(cx,prod(n1,[t:1to(n1)]x),ts(p0,x),ts(prod(n,[t:1to(n)]x),x),t13,t14):is(prod(n1,[t:1to(n1)]x),ts(p0,x))
+t16:=tris(cx,p0(n1),prod(n1,[t:1to(n1)]x),ts(p0,x),t11(n1),t15):is(p0(n1),ts(p0(n),x))
+y@[n:nat]
+prop1:=is(p0(ts(x,y),n),ts(p0(x,n),p0(y,n))):'prop'
+y@t17:=ists12(p0(x,1),x,p0(y,1),y,t6(x),t6(y)):is(ts(p0(x,1),p0(y,1)),ts(x,y))
+t18:=tris2(cx,p0(ts(x,y),1),ts(p0(x,1),p0(y,1)),ts(x,y),t6(ts(x,y)),t17):prop1(1)
+n@[p:prop1(n)]
+t19:=ists1(p0(ts(x,y),n),ts(p0(x,n),p0(y,n)),ts(x,y),p):is(ts(p0(ts(x,y),n),ts(x,y)),ts(ts(p0(x,n),p0(y,n)),ts(x,y)))
+t20:=tr3is(cx,ts(ts(p0(x,n),p0(y,n)),x),ts(p0(x,n),ts(p0(y,n),x)),ts(p0(x,n),ts(x,p0(y,n))),ts(ts(p0(x,n),x),p0(y,n)),assts1(p0(x,n),p0(y,n),x),ists2(ts(p0(y,n),x),ts(x,p0(y,n)),p0(x,n),comts(p0(y,n),x)),assts2(p0(x,n),x,p0(y,n))):is(ts(ts(p0(x,n),p0(y,n)),x),ts(ts(p0(x,n),x),p0(y,n)))
+t21:=tr3is(cx,ts(ts(p0(x,n),p0(y,n)),ts(x,y)),ts(ts(ts(p0(x,n),p0(y,n)),x),y),ts(ts(ts(p0(x,n),x),p0(y,n)),y),ts(ts(p0(x,n),x),ts(p0(y,n),y)),assts2(ts(p0(x,n),p0(y,n)),x,y),ists1(ts(ts(p0(x,n),p0(y,n)),x),ts(ts(p0(x,n),x),p0(y,n)),y,t20),assts1(ts(p0(x,n),x),p0(y,n),y)):is(ts(ts(p0(x,n),p0(y,n)),ts(x,y)),ts(ts(p0(x,n),x),ts(p0(y,n),y)))
+t22:=tr3is(cx,p0(ts(x,y),n1(n)),ts(p0(ts(x,y),n),ts(x,y)),ts(ts(p0(x,n),p0(y,n)),ts(x,y)),ts(ts(p0(x,n),x),ts(p0(y,n),y)),t16(ts(x,y),n),t19,t21):is(p0(ts(x,y),n1(n)),ts(ts(p0(x,n),x),ts(p0(y,n),y)))
+t23:=ists12(p0(x,n1(n)),ts(p0(x,n),x),p0(y,n1(n)),ts(p0(y,n),y),t16(x,n),t16(y,n)):is(ts(p0(x,n1(n)),p0(y,n1(n))),ts(ts(p0(x,n),x),ts(p0(y,n),y)))
+t24:=tris2(cx,p0(ts(x,y),n1(n)),ts(p0(x,n1(n)),p0(y,n1(n))),ts(ts(p0(x,n),x),ts(p0(y,n),y)),t22,t23):prop1(n1(n))
+t25:=isp(nat,[t:nat]prop1(t),n1(n),<n>suc,t24,satz4a(n)):prop1(<n>suc)
+n@t26:=induction([t:nat]prop1(t),t18,[t:nat][u:prop1(t)]t25(t,u),n):prop1
+o@prop2:=is(pw(ts(x,y),m,mi,lemma292c),ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b))):'prop'
+[p:pos(m)]
+t28:=posintnatrl(m,p,mi):natrl(m)
+m0:=ntofrl(m,t28):nat
+t29:=isrlnt1(m,t28):is"r"(m,nr(m0))
+t30:=isrlnt2(m,t28):is"r"(nr(m0),m)
+t31:=ispw2(ts(x,y),m,nr(m0),t29,mi,t4(ts(x,y),m0),lemma292c,t5(ts(x,y),m0)):is(pw(ts(x,y),m,mi,lemma292c),p0(ts(x,y),m0))
+t32:=ists12(p0(x,m0),pw(x,m,mi,lemma292a),p0(y,m0),pw(y,m,mi,lemma292b),ispw2(x,nr(m0),m,t30,t4(x,m0),mi,t5(x,m0),lemma292a),ispw2(y,nr(m0),m,t30,t4(y,m0),mi,t5(y,m0),lemma292b)):is(ts(p0(x,m0),p0(y,m0)),ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)))
+t33:=tr3is(cx,pw(ts(x,y),m,mi,lemma292c),p0(ts(x,y),m0),ts(p0(x,m0),p0(y,m0)),ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)),t31,t26(m0),t32):prop2
+o@[i:is"r"(m,0)]
+t34:=tris(cx,ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)),ts(1c,1c),1c,ists12(pw(x,m,mi,lemma292a),1c,pw(y,m,mi,lemma292b),1c,0exp(x,m,mi,lemma292a,i),0exp(y,m,mi,lemma292b,i)),satz222(1c)):is(ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)),1c)
+t35:=tris2(cx,pw(ts(x,y),m,mi,lemma292c),ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)),1c,0exp(ts(x,y),m,mi,lemma292c,i),t34):prop2
+o@[n:neg(m)]
+t36:=intabs(m,mi):intrl(abs(m))
+t37:=ori2(and(nis(x,0c),nis(y,0c)),pos(abs(m)),satz166b(m,n)):or(and(nis(x,0c),nis(y,0c)),pos(abs(m)))
+t38:=lemma292a(abs(m),t36,t37):or(nis(x,0c),pos(abs(m)))
+t39:=lemma292b(abs(m),t36,t37):or(nis(y,0c),pos(abs(m)))
+t40:=lemma292c(abs(m),t36,t37):or(nis(ts(x,y),0c),pos(abs(m)))
+t41:=lemmapw3(x,m,mi,lemma292a,n):or(nis(x,0c),pos(abs(m)))
+t42:=lemmapw3(y,m,mi,lemma292b,n):or(nis(y,0c),pos(abs(m)))
+t43:=lemmapw3(ts(x,y),m,mi,lemma292c,n):or(nis(ts(x,y),0c),pos(abs(m)))
+t44:=ispw2(ts(x,y),abs(m),abs(m),refis(real,abs(m)),t36,t36,t43,t40):is(pw(ts(x,y),abs(m),t36,t43),pw(ts(x,y),abs(m),t36,t40))
+t45:=t33(abs(m),t36,t37,satz166b(m,n)):is(pw(ts(x,y),abs(m),t36,t40),ts(pw(x,abs(m),t36,t38),pw(y,abs(m),t36,t39)))
+t46:=ists12(pw(x,abs(m),t36,t38),pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t39),pw(y,abs(m),t36,t42),ispw2(x,abs(m),abs(m),refis(real,abs(m)),t36,t36,t38,t41),ispw2(y,abs(m),abs(m),refis(real,abs(m)),t36,t36,t39,t42)):is(ts(pw(x,abs(m),t36,t38),pw(y,abs(m),t36,t39)),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)))
+t47:=tr3is(cx,pw(ts(x,y),abs(m),t36,t43),pw(ts(x,y),abs(m),t36,t40),ts(pw(x,abs(m),t36,t38),pw(y,abs(m),t36,t39)),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),t44,t45,t46):is(pw(ts(x,y),abs(m),t36,t43),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)))
+t48:=lemmapw1(x,abs(m),t36,t41,satz166b(m,n),lemmapw2(x,m,mi,lemma292a,n)):nis(pw(x,abs(m),t36,t41),0c)
+t49:=lemmapw1(y,abs(m),t36,t42,satz166b(m,n),lemmapw2(y,m,mi,lemma292b,n)):nis(pw(y,abs(m),t36,t42),0c)
+t50:=lemmapw1(ts(x,y),abs(m),t36,t43,satz166b(m,n),lemmapw2(ts(x,y),m,mi,lemma292c,n)):nis(pw(ts(x,y),abs(m),t36,t43),0c)
+t51:=satz221d(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42),t48,t49):nis(ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),0c)
+t52:=negexp(ts(x,y),m,mi,lemma292c,n):is(pw(ts(x,y),m,mi,lemma292c),ov(1c,pw(ts(x,y),abs(m),t36,t43),t50))
+t53:=isov12(1c,ts(1c,1c),pw(ts(x,y),abs(m),t36,t43),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),satz222a(1c),t47,t50,t51):is(ov(1c,pw(ts(x,y),abs(m),t36,t43),t50),ov(ts(1c,1c),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),t51))
+t54:=tris(cx,pw(ts(x,y),m,mi,lemma292c),ov(1c,pw(ts(x,y),abs(m),t36,t43),t50),ov(ts(1c,1c),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),t51),t52,t53):is(pw(ts(x,y),m,mi,lemma292c),ov(ts(1c,1c),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),t51))
+t55:=ists12(pw(x,m,mi,lemma292a),ov(1c,pw(x,abs(m),t36,t41),t48),pw(y,m,mi,lemma292b),ov(1c,pw(y,abs(m),t36,t42),t49),negexp(x,m,mi,lemma292a,n),negexp(y,m,mi,lemma292b,n)):is(ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)),ts(ov(1c,pw(x,abs(m),t36,t41),t48),ov(1c,pw(y,abs(m),t36,t42),t49)))
+t56:=satz247(1c,pw(x,abs(m),t36,t41),1c,pw(y,abs(m),t36,t42),t48,t49):is(ts(ov(1c,pw(x,abs(m),t36,t41),t48),ov(1c,pw(y,abs(m),t36,t42),t49)),ov(ts(1c,1c),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),t51))
+t57:=tris(cx,ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)),ts(ov(1c,pw(x,abs(m),t36,t41),t48),ov(1c,pw(y,abs(m),t36,t42),t49)),ov(ts(1c,1c),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),t51),t55,t56):is(ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)),ov(ts(1c,1c),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),t51))
+t58:=tris2(cx,pw(ts(x,y),m,mi,lemma292c),ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)),ov(ts(1c,1c),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),t51),t54,t57):prop2
+-9292
+o@satz292:=rapp(m,prop2".9292",[t:pos(m)]t33".9292"(t),[t:is"r"(m,0)]t35".9292"(t),[t:neg(m)]t58".9292"(t)):is(pw(ts(x,y),m,mi,lemma292c),ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)))
+@[m:real]
+lemma293:=ori1(nis(1c,0c),pos(m),1not0):or(nis(1c,0c),pos(m))
+[mi:intrl(m)]
++9293
+t1:=ori1(and(nis(1c,0c),nis(1c,0c)),pos(m),andi(nis(1c,0c),nis(1c,0c),1not0,1not0)):or(and(nis(1c,0c),nis(1c,0c)),pos(m))
+1m:=pw(1c,m,mi,lemma293):cx
+t2:=satz222(1m):is(ts(1m,1c),1m)
+t3:=ispw1(1c,ts(1c,1c),m,satz222a(1c),mi,lemma293,lemma292c(1c,1c,m,mi,t1)):is(1m,pw(ts(1c,1c),m,mi,lemma292c(1c,1c,m,mi,t1)))
+t4:=satz292(1c,1c,m,mi,t1):is(pw(ts(1c,1c),m,mi,lemma292c(1c,1c,m,mi,t1)),ts(pw(1c,m,mi,lemma292a(1c,1c,m,mi,t1)),pw(1c,m,mi,lemma292b(1c,1c,m,mi,t1))))
+t5:=ists12(pw(1c,m,mi,lemma292a(1c,1c,m,mi,t1)),1m,pw(1c,m,mi,lemma292b(1c,1c,m,mi,t1)),1m,ispw1(1c,1c,m,refis(cx,1c),mi,lemma292a(1c,1c,m,mi,t1),lemma293),ispw1(1c,1c,m,refis(cx,1c),mi,lemma292b(1c,1c,m,mi,t1),lemma293)):is(ts(pw(1c,m,mi,lemma292a(1c,1c,m,mi,t1)),pw(1c,m,mi,lemma292b(1c,1c,m,mi,t1))),ts(1m,1m))
+t6:=tr4is(cx,ts(1m,1c),1m,pw(ts(1c,1c),m,mi,lemma292c(1c,1c,m,mi,t1)),ts(pw(1c,m,mi,lemma292a(1c,1c,m,mi,t1)),pw(1c,m,mi,lemma292b(1c,1c,m,mi,t1))),ts(1m,1m),t2,t3,t4,t5):is(ts(1m,1c),ts(1m,1m))
+t7:=tris(cx,ts(1m,mn(1m,1c)),mn(ts(1m,1m),ts(1m,1c)),0c,disttm2(1m,1m,1c),satz213b(ts(1m,1m),ts(1m,1c),symis(cx,ts(1m,1c),ts(1m,1m),t6))):is(ts(1m,mn(1m,1c)),0c)
+t8:=ore2(is(1m,0c),is(mn(1m,1c),0c),satz221c(1m,mn(1m,1c),t7),satz290(1c,m,mi,lemma293,1not0)):is(mn(1m,1c),0c)
+-9293
+satz293:=satz213a(1m".9293",1c,t8".9293"):is(pw(1c,m,mi,lemma293),1c)
+x@[m:real][n:real][mi:intrl(m)][ni:intrl(n)][o:or(nis(x,0c),and(pos(m),pos(n)))]
++9294
+[a:and(pos(m),pos(n))]
+t1:=ande1(pos(m),pos(n),a):pos(m)
+t2:=ande2(pos(m),pos(n),a):pos(n)
+t3:=pospl(m,n,t1,t2):pos(pl"r"(m,n))
+-9294
+lemma294a:=th8"l.or"(nis(x,0c),and(pos(m),pos(n)),pos(m),o,[t:and(pos(m),pos(n))]t1".9294"(t)):or(nis(x,0c),pos(m))
+lemma294b:=th8"l.or"(nis(x,0c),and(pos(m),pos(n)),pos(n),o,[t:and(pos(m),pos(n))]t2".9294"(t)):or(nis(x,0c),pos(n))
+lemma294c:=th8"l.or"(nis(x,0c),and(pos(m),pos(n)),pos(pl"r"(m,n)),o,[t:and(pos(m),pos(n))]t3".9294"(t)):or(nis(x,0c),pos(pl"r"(m,n)))
++*9294
+o@prop1:=is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c)):'prop'
+a@m1:=ntofrl(m,posintnatrl(m,t1,mi)):nat
+n1:=ntofrl(n,posintnatrl(n,t2,ni)):nat
+t4:=ists12(pw(x,m,mi,lemma294a),prod(m1,[t:1to(m1)]x),pw(x,n,ni,lemma294b),prod(n1,[t:1to(n1)]x),posexp(x,m,mi,lemma294a,t1),posexp(x,n,ni,lemma294b,t2)):is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(prod(m1,[t:1to(m1)]x),prod(n1,[t:1to(n1)]x)))
+p1:=ntofrl(pl"r"(m,n),posintnatrl(pl"r"(m,n),t3,intpl(m,mi,n,ni))):nat
+t5:=posexp(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c,t3):is(pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),prod(p1,[t:1to(p1)]x))
+t6:=tris(real,pl"r"(m,n),pl"r"(rlofnt(m1),rlofnt(n1)),rlofnt(pl"n"(m1,n1)),ispl12"r"(m,rlofnt(m1),n,rlofnt(n1),isrlnt1(m,posintnatrl(m,t1,mi)),isrlnt1(n,posintnatrl(n,t2,ni))),satzr155b(m1,n1)):is"r"(pl"r"(m,n),rlofnt(pl"n"(m1,n1)))
+t7:=tris2(nat,pl"n"(m1,n1),p1,ntofrl(rlofnt(pl"n"(m1,n1)),natrli(pl"n"(m1,n1))),isntrl1(pl"n"(m1,n1)),isrlent(pl"r"(m,n),posintnatrl(pl"r"(m,n),t3,intpl(m,mi,n,ni)),rlofnt(pl"n"(m1,n1)),natrli(pl"n"(m1,n1)),t6)):is"n"(pl"n"(m1,n1),p1)
+t8:=lessisi2"n"(pl"n"(m1,n1),p1,t7):lessis"n"(pl"n"(m1,n1),p1)
+t9:=issmpr([t:cx][u:cx]ts(t,u),p1,[t:1to(p1)]x,pl"n"(m1,n1),t7):is(prod(pl"n"(m1,n1),left(cx,p1,pl"n"(m1,n1),t8,[t:1to(p1)]x)),prod(p1,[t:1to(p1)]x))
+t10:=tris2(cx,pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),prod(pl"n"(m1,n1),[t:1to(pl"n"(m1,n1))]x),prod(p1,[t:1to(p1)]x),t5,t9):is(pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),prod(pl"n"(m1,n1),[t:1to(pl"n"(m1,n1))]x))
+t11:=lessisi1"n"(m1,pl"n"(m1,n1),satz18a(m1,n1)):lessis"n"(m1,pl"n"(m1,n1))
+t12:=satz281([t:cx][u:cx]ts(t,u),assocts,m1,n1,[t:1to(pl"n"(m1,n1))]x):is(prod(pl"n"(m1,n1),[t:1to(pl"n"(m1,n1))]x),ts(prod(m1,left(cx,pl"n"(m1,n1),m1,t11,[t:1to(pl"n"(m1,n1))]x)),prod(n1,right(cx,m1,n1,[t:1to(pl"n"(m1,n1))]x))))
+t13:=tris(cx,pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),prod(pl"n"(m1,n1),[t:1to(pl"n"(m1,n1))]x),ts(prod(m1,[t:1to(m1)]x),prod(n1,[t:1to(n1)]x)),t10,t12):is(pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),ts(prod(m1,[t:1to(m1)]x),prod(n1,[t:1to(n1)]x)))
+t14:=tris2(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),ts(prod(m1,[t:1to(m1)]x),prod(n1,[t:1to(n1)]x)),t4,t13):prop1
+o@[na:not(and(pos(m),pos(n)))]
+t15:=ore1(nis(x,0c),and(pos(m),pos(n)),o,na):nis(x,0c)
+t16:=th15"l.or"(pos(m),pos(n),na):or(not(pos(m)),not(pos(n)))
+o@am:=abs(m):real
+an:=abs(n):real
+ap:=abs(pl"r"(m,n)):real
+t17:=intabs(m,mi):intrl(am)
+t18:=intabs(n,ni):intrl(an)
+t19:=intabs(pl"r"(m,n),intpl(m,mi,n,ni)):intrl(ap)
+na@[nm:neg(m)][nn:neg(n)]
+t20:=andi(pos(am),pos(an),satz166e(m,nnot0(m,nm)),satz166e(n,nnot0(n,nn))):and(pos(am),pos(an))
+t21:=ori2(nis(x,0c),and(pos(am),pos(an)),t20):or(nis(x,0c),and(pos(am),pos(an)))
+t22:=lemmapw3(x,m,mi,lemma294a,nm):or(nis(x,0c),pos(am))
+t23:=lemmapw3(x,n,ni,lemma294b,nn):or(nis(x,0c),pos(an))
+t24:=lemma294a(x,am,an,t17,t18,t21):or(nis(x,0c),pos(am))
+t25:=lemma294b(x,am,an,t17,t18,t21):or(nis(x,0c),pos(an))
+t26:=ists12(pw(x,am,t17,t22),pw(x,am,t17,t24),pw(x,an,t18,t23),pw(x,an,t18,t25),ispw1(x,x,am,refis(cx,x),t17,t22,t24),ispw1(x,x,an,refis(cx,x),t18,t23,t25)):is(ts(pw(x,am,t17,t22),pw(x,an,t18,t23)),ts(pw(x,am,t17,t24),pw(x,an,t18,t25)))
+t27:=lemma294c(x,am,an,t17,t18,t21):or(nis(x,0c),pos(pl"r"(am,an)))
+t28:=t14(x,am,an,t17,t18,t21,t20):is(ts(pw(x,am,t17,t24),pw(x,an,t18,t25)),pw(x,pl"r"(am,an),intpl(am,t17,an,t18),t27))
+t29:=tr3is(real,pl"r"(am,an),pl"r"(m0"r"(m),m0"r"(n)),m0"r"(pl"r"(m,n)),ap,ispl12"r"(am,m0"r"(m),an,m0"r"(n),absn(m,nm),absn(n,nn)),satz180a(m,n),symis(real,ap,m0"r"(pl"r"(m,n)),absn(pl"r"(m,n),negpl(m,n,nm,nn)))):is"r"(pl"r"(am,an),ap)
+t30:=lemmapw3(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c,negpl(m,n,nm,nn)):or(nis(x,0c),pos(ap))
+t31:=ispw2(x,pl"r"(am,an),ap,t29,intpl(am,t17,an,t18),t19,t27,t30):is(pw(x,pl"r"(am,an),intpl(am,t17,an,t18),t27),pw(x,ap,t19,t30))
+t32:=tr3is(cx,ts(pw(x,am,t17,t22),pw(x,an,t18,t23)),ts(pw(x,am,t17,t24),pw(x,an,t18,t25)),pw(x,pl"r"(am,an),intpl(am,t17,an,t18),t27),pw(x,ap,t19,t30),t26,t28,t31):is(ts(pw(x,am,t17,t22),pw(x,an,t18,t23)),pw(x,ap,t19,t30))
+t33:=lemmapw1(x,am,t17,t22,satz166b(m,nm),lemmapw2(x,m,mi,lemma294a,nm)):nis(pw(x,am,t17,t22),0c)
+t34:=lemmapw1(x,an,t18,t23,satz166b(n,nn),lemmapw2(x,n,ni,lemma294b,nn)):nis(pw(x,an,t18,t23),0c)
+t35:=lemmapw1(x,ap,t19,t30,satz166b(pl"r"(m,n),negpl(m,n,nm,nn)),lemmapw2(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c,negpl(m,n,nm,nn))):nis(pw(x,ap,t19,t30),0c)
+t36:=ists12(pw(x,m,mi,lemma294a),ov(1c,pw(x,am,t17,t22),t33),pw(x,n,ni,lemma294b),ov(1c,pw(x,an,t18,t23),t34),negexp(x,m,mi,lemma294a,nm),negexp(x,n,ni,lemma294b,nn)):is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(ov(1c,pw(x,am,t17,t22),t33),ov(1c,pw(x,an,t18,t23),t34)))
+t37:=satz221d(pw(x,am,t17,t22),pw(x,an,t18,t23),t33,t34):nis(ts(pw(x,am,t17,t22),pw(x,an,t18,t23)),0c)
+t38:=satz247(1c,pw(x,am,t17,t22),1c,pw(x,an,t18,t23),t33,t34):is(ts(ov(1c,pw(x,am,t17,t22),t33),ov(1c,pw(x,an,t18,t23),t34)),ov(ts(1c,1c),ts(pw(x,am,t17,t22),pw(x,an,t18,t23)),t37))
+t39:=isov12(ts(1c,1c),1c,ts(pw(x,am,t17,t22),pw(x,an,t18,t23)),pw(x,ap,t19,t30),satz222(1c),t32,t37,t35):is(ov(ts(1c,1c),ts(pw(x,am,t17,t22),pw(x,an,t18,t23)),t37),ov(1c,pw(x,ap,t19,t30),t35))
+t40:=symis(cx,pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),ov(1c,pw(x,ap,t19,t30),t35),negexp(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c,negpl(m,n,nm,nn))):is(ov(1c,pw(x,ap,t19,t30),t35),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c))
+t41:=tr4is(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(ov(1c,pw(x,am,t17,t22),t33),ov(1c,pw(x,an,t18,t23),t34)),ov(ts(1c,1c),ts(pw(x,am,t17,t22),pw(x,an,t18,t23)),t37),ov(1c,pw(x,ap,t19,t30),t35),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),t36,t38,t39,t40):prop1
+na@[pm:pos(m)][nn:neg(n)]
+t42:=lemmapw3(x,n,ni,lemma294b,nn):or(nis(x,0c),pos(an))
+t43:=lemmapw1(x,an,t18,t42,satz166b(n,nn),lemmapw2(x,n,ni,lemma294b,nn)):nis(pw(x,an,t18,t42),0c)
+t44:=ists2(pw(x,n,ni,lemma294b),ov(1c,pw(x,an,t18,t42),t43),pw(x,m,mi,lemma294a),negexp(x,n,ni,lemma294b,nn)):is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(pw(x,m,mi,lemma294a),ov(1c,pw(x,an,t18,t42),t43)))
+t45:=satz244a(pw(x,m,mi,lemma294a),1c,pw(x,an,t18,t42),t43):is(ts(pw(x,m,mi,lemma294a),ov(1c,pw(x,an,t18,t42),t43)),ov(ts(pw(x,m,mi,lemma294a),1c),pw(x,an,t18,t42),t43))
+t46:=isov1(ts(pw(x,m,mi,lemma294a),1c),pw(x,m,mi,lemma294a),pw(x,an,t18,t42),satz222(pw(x,m,mi,lemma294a)),t43):is(ov(ts(pw(x,m,mi,lemma294a),1c),pw(x,an,t18,t42),t43),ov(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43))
+t47:=tr3is(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(pw(x,m,mi,lemma294a),ov(1c,pw(x,an,t18,t42),t43)),ov(ts(pw(x,m,mi,lemma294a),1c),pw(x,an,t18,t42),t43),ov(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43),t44,t45,t46):is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ov(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43))
+[casea:more(m,an)]
+t48:=satz182d(m,an,casea):pos(mn"r"(m,an))
+t49:=satz166e(n,nnot0(n,nn)):pos(an)
+t50:=andi(pos(an),pos(mn"r"(m,an)),t49,t48):and(pos(an),pos(mn"r"(m,an)))
+t51:=ori2(nis(x,0c),and(pos(an),pos(mn"r"(m,an))),t50):or(nis(x,0c),and(pos(an),pos(mn"r"(m,an))))
+t52:=intmn(m,mi,an,t18):intrl(mn"r"(m,an))
+t53:=lemma294a(x,an,mn"r"(m,an),t18,t52,t51):or(nis(x,0c),pos(an))
+t54:=lemma294b(x,an,mn"r"(m,an),t18,t52,t51):or(nis(x,0c),pos(mn"r"(m,an)))
+t55:=lemma294c(x,an,mn"r"(m,an),t18,t52,t51):or(nis(x,0c),pos(pl"r"(an,mn"r"(m,an))))
+t56:=intpl(an,t18,mn"r"(m,an),t52):intrl(pl"r"(an,mn"r"(m,an)))
+t57:=t14(x,an,mn"r"(m,an),t18,t52,t51,t50):is(ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,pl"r"(an,mn"r"(m,an)),t56,t55))
+t58:=satz187a(m,an):is"r"(pl"r"(an,mn"r"(m,an)),m)
+t59:=ispw2(x,pl"r"(an,mn"r"(m,an)),m,t58,t56,mi,t55,lemma294a):is(pw(x,pl"r"(an,mn"r"(m,an)),t56,t55),pw(x,m,mi,lemma294a))
+t60:=tris(cx,ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,pl"r"(an,mn"r"(m,an)),t56,t55),pw(x,m,mi,lemma294a),t57,t59):is(ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,m,mi,lemma294a))
+t61:=ispw1(x,x,an,refis(cx,x),t18,t53,t42):is(pw(x,an,t18,t53),pw(x,an,t18,t42))
+t62:=isp1(cx,[t:cx]nis(t,0c),pw(x,an,t18,t42),pw(x,an,t18,t53),t43,t61):nis(pw(x,an,t18,t53),0c)
+t63:=isov12(ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,m,mi,lemma294a),pw(x,an,t18,t53),pw(x,an,t18,t42),t60,t61,t62,t43):is(ov(ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,an,t18,t53),t62),ov(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43))
+t64:=tris2(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ov(ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,an,t18,t53),t62),ov(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43),t47,t63):is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ov(ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,an,t18,t53),t62))
+t65:=satz229h(ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54),t62,refis(cx,ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)))):is(ov(ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,an,t18,t53),t62),pw(x,mn"r"(m,an),t52,t54))
+t66:=tris(real,mn"r"(m,an),mn"r"(m,m0"r"(n)),pl"r"(m,n),ismn2"r"(an,m0"r"(n),m,absn(n,nn)),ispl2"r"(m0"r"(m0"r"(n)),n,m,satz177(n))):is"r"(mn"r"(m,an),pl"r"(m,n))
+t67:=ispw2(x,mn"r"(m,an),pl"r"(m,n),t66,t52,intpl(m,mi,n,ni),t54,lemma294c):is(pw(x,mn"r"(m,an),t52,t54),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c))
+t68:=tr3is(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ov(ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,an,t18,t53),t62),pw(x,mn"r"(m,an),t52,t54),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),t64,t65,t67):prop1
+nn@[caseb:is"r"(m,an)]
+t69:=ispw2(x,m,an,caseb,mi,t18,lemma294a,t42):is(pw(x,m,mi,lemma294a),pw(x,an,t18,t42))
+t70:=satz251a(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43,t69):is(ov(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43),1c)
+t71:=tr3is(real,pl"r"(m,n),mn"r"(m,m0"r"(n)),mn"r"(m,an),0,ispl2"r"(n,m0"r"(m0"r"(n)),m,satz177a(n)),ismn2"r"(m0"r"(n),an,m,symis(real,an,m0"r"(n),absn(n,nn))),satz182e(m,an,caseb)):is"r"(pl"r"(m,n),0)
+t72:=symis(cx,pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),1c,0exp(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c,t71)):is(1c,pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c))
+t73:=tr3is(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ov(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43),1c,pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),t47,t70,t72):prop1
+nn@[casec:less(m,an)]
+t74:=satz182d(an,m,lemma2"r"(m,an,casec)):pos(mn"r"(an,m))
+t75:=andi(pos(m),pos(mn"r"(an,m)),pm,t74):and(pos(m),pos(mn"r"(an,m)))
+t76:=ori2(nis(x,0c),and(pos(m),pos(mn"r"(an,m))),t75):or(nis(x,0c),and(pos(m),pos(mn"r"(an,m))))
+t77:=intmn(an,t18,m,mi):intrl(mn"r"(an,m))
+t78:=lemma294a(x,m,mn"r"(an,m),mi,t77,t76):or(nis(x,0c),pos(m))
+t79:=lemma294b(x,m,mn"r"(an,m),mi,t77,t76):or(nis(x,0c),pos(mn"r"(an,m)))
+t80:=lemma294c(x,m,mn"r"(an,m),mi,t77,t76):or(nis(x,0c),pos(pl"r"(m,mn"r"(an,m))))
+t81:=intpl(m,mi,mn"r"(an,m),t77):intrl(pl"r"(m,mn"r"(an,m)))
+t81a:=t14(x,m,mn"r"(an,m),mi,t77,t76,t75):is(ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),pw(x,pl"r"(m,mn"r"(an,m)),t81,t80))
+t82:=satz187a(an,m):is"r"(pl"r"(m,mn"r"(an,m)),an)
+t83:=ispw2(x,pl"r"(m,mn"r"(an,m)),an,t82,t81,t18,t80,t42):is(pw(x,pl"r"(m,mn"r"(an,m)),t81,t80),pw(x,an,t18,t42))
+t84:=tris(cx,ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),pw(x,pl"r"(m,mn"r"(an,m)),t81,t80),pw(x,an,t18,t42),t81a,t83):is(ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),pw(x,an,t18,t42))
+t85:=satz290(x,m,mi,t78,t15):nis(pw(x,m,mi,t78),0c)
+t86:=satz290(x,mn"r"(an,m),t77,t79,t15):nis(pw(x,mn"r"(an,m),t77,t79),0c)
+t87:=satz221d(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79),t85,t86):nis(ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),0c)
+t88:=satz222(pw(x,m,mi,t78)):is(ts(pw(x,m,mi,t78),1c),pw(x,m,mi,t78))
+t89:=ispw1(x,x,m,refis(cx,x),mi,t78,lemma294a):is(pw(x,m,mi,t78),pw(x,m,mi,lemma294a))
+t90:=tris(cx,ts(pw(x,m,mi,t78),1c),pw(x,m,mi,t78),pw(x,m,mi,lemma294a),t88,t89):is(ts(pw(x,m,mi,t78),1c),pw(x,m,mi,lemma294a))
+t91:=isov12(ts(pw(x,m,mi,t78),1c),pw(x,m,mi,lemma294a),ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),pw(x,an,t18,t42),t90,t84,t87,t43):is(ov(ts(pw(x,m,mi,t78),1c),ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),t87),ov(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43))
+t92:=tris2(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ov(ts(pw(x,m,mi,t78),1c),ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),t87),ov(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43),t47,t91):is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ov(ts(pw(x,m,mi,t78),1c),ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),t87))
+t93:=satz246a(1c,pw(x,mn"r"(an,m),t77,t79),pw(x,m,mi,t78),t86,t85):is(ov(ts(pw(x,m,mi,t78),1c),ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),t87),ov(1c,pw(x,mn"r"(an,m),t77,t79),t86))
+t94:=satz182f(m,an,casec):neg(mn"r"(m,an))
+t94a:=tris(real,mn"r"(m,an),mn"r"(m,m0"r"(n)),pl"r"(m,n),ismn2"r"(an,m0"r"(n),m,absn(n,nn)),ispl2"r"(m0"r"(m0"r"(n)),n,m,satz177(n))):is"r"(mn"r"(m,an),pl"r"(m,n))
+t95:=tr3is(real,mn"r"(an,m),m0"r"(mn"r"(m,an)),abs(mn"r"(m,an)),ap,satz181a(an,m),symis(real,abs(mn"r"(m,an)),m0"r"(mn"r"(m,an)),absn(mn"r"(m,an),t94)),isabs(mn"r"(m,an),pl"r"(m,n),t94a)):is"r"(mn"r"(an,m),ap)
+t96:=isp(real,[t:real]neg(t),mn"r"(m,an),pl"r"(m,n),t94,t94a):neg(pl"r"(m,n))
+t97:=lemmapw3(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c,t96):or(nis(x,0c),pos(ap))
+t98:=lemmapw1(x,ap,t19,t97,satz166b(pl"r"(m,n),t96),lemmapw2(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c,t96)):nis(pw(x,ap,t19,t97),0c)
+t99:=ispw2(x,mn"r"(an,m),ap,t95,t77,t19,t79,t97):is(pw(x,mn"r"(an,m),t77,t79),pw(x,ap,t19,t97))
+t100:=isov2(pw(x,mn"r"(an,m),t77,t79),pw(x,ap,t19,t97),1c,t99,t86,t98):is(ov(1c,pw(x,mn"r"(an,m),t77,t79),t86),ov(1c,pw(x,ap,t19,t97),t98))
+t101:=symis(cx,pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),ov(1c,pw(x,ap,t19,t97),t98),negexp(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c,t96)):is(ov(1c,pw(x,ap,t19,t97),t98),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c))
+t102:=tr4is(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ov(ts(pw(x,m,mi,t78),1c),ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),t87),ov(1c,pw(x,mn"r"(an,m),t77,t79),t86),ov(1c,pw(x,ap,t19,t97),t98),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),t92,t93,t100,t101):prop1
+nn@t103:=or3app(is"r"(m,an),more(m,an),less(m,an),prop1,satz167a(m,an),[t:is"r"(m,an)]t73(t),[t:more(m,an)]t68(t),[t:less(m,an)]t102(t)):prop1
+na@[nm:neg(m)][qn:pos(n)]
+na@t104:=ori1(nis(x,0c),and(pos(n),pos(m)),t15):or(nis(x,0c),and(pos(n),pos(m)))
+t104a:=th5"l.and"(pos(m),pos(n),na):not(and(pos(n),pos(m)))
+t105:=lemma294a(x,n,m,ni,mi,t104):or(nis(x,0c),pos(n))
+t106:=lemma294b(x,n,m,ni,mi,t104):or(nis(x,0c),pos(m))
+t107:=lemma294c(x,n,m,ni,mi,t104):or(nis(x,0c),pos(pl"r"(n,m)))
+t108:=ists12(pw(x,m,mi,lemma294a),pw(x,m,mi,t106),pw(x,n,ni,lemma294b),pw(x,n,ni,t105),ispw1(x,x,m,refis(cx,x),mi,lemma294a,t106),ispw1(x,x,n,refis(cx,x),ni,lemma294b,t105)):is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(pw(x,m,mi,t106),pw(x,n,ni,t105)))
+t109:=comts(pw(x,m,mi,t106),pw(x,n,ni,t105)):is(ts(pw(x,m,mi,t106),pw(x,n,ni,t105)),ts(pw(x,n,ni,t105),pw(x,m,mi,t106)))
+qn@t110:=t103(x,n,m,ni,mi,t104,t104a,qn,nm):is(ts(pw(x,n,ni,t105),pw(x,m,mi,t106)),pw(x,pl"r"(n,m),intpl(n,ni,m,mi),t107))
+na@t111:=ispw2(x,pl"r"(n,m),pl"r"(m,n),compl"r"(n,m),intpl(n,ni,m,mi),intpl(m,mi,n,ni),t107,lemma294c):is(pw(x,pl"r"(n,m),intpl(n,ni,m,mi),t107),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c))
+qn@t112:=tr4is(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(pw(x,m,mi,t106),pw(x,n,ni,t105)),ts(pw(x,n,ni,t105),pw(x,m,mi,t106)),pw(x,pl"r"(n,m),intpl(n,ni,m,mi),t107),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),t108,t109,t110,t111):prop1
+na@[i:is"r"(m,0)]
+t113:=ists1(pw(x,m,mi,lemma294a),1c,pw(x,n,ni,lemma294b),0exp(x,m,mi,lemma294a,i)):is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(1c,pw(x,n,ni,lemma294b)))
+t114:=satz222b(pw(x,n,ni,lemma294b)):is(ts(1c,pw(x,n,ni,lemma294b)),pw(x,n,ni,lemma294b))
+t115:=symis(real,pl"r"(m,n),n,pl01"r"(m,n,i)):is"r"(n,pl"r"(m,n))
+t116:=ispw2(x,n,pl"r"(m,n),t115,ni,intpl(m,mi,n,ni),lemma294b,lemma294c):is(pw(x,n,ni,lemma294b),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c))
+t117:=tr3is(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(1c,pw(x,n,ni,lemma294b)),pw(x,n,ni,lemma294b),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),t113,t114,t116):prop1
+na@[i:is"r"(n,0)]
+t118:=t117(x,n,m,ni,mi,t104,t104a,i):is(ts(pw(x,n,ni,t105),pw(x,m,mi,t106)),pw(x,pl"r"(n,m),intpl(n,ni,m,mi),t107))
+t119:=tr4is(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(pw(x,m,mi,t106),pw(x,n,ni,t105)),ts(pw(x,n,ni,t105),pw(x,m,mi,t106)),pw(x,pl"r"(n,m),intpl(n,ni,m,mi),t107),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),t108,t109,t118,t111):prop1
+na@[pm:pos(m)]
+t120:=ore2(not(pos(m)),not(pos(n)),t16,weli(pos(m),pm)):not(pos(n))
+t121:=rapp(n,prop1,th2"l.imp"(pos(n),prop1,t120),[t:is"r"(n,0)]t119(t),[t:neg(n)]t103(pm,t)):prop1
+na@[nm:neg(m)]
+t122:=rapp(n,prop1,[t:pos(n)]t112(nm,t),[t:is"r"(n,0)]t119(t),[t:neg(n)]t41(nm,t)):prop1
+na@t123:=rapp(m,prop1,[t:pos(m)]t121(t),[t:is"r"(m,0)]t117(t),[t:neg(m)]t122(t)):prop1
+-9294
+o@satz294:=th1"l.imp"(and(pos(m),pos(n)),prop1".9294",[t:and(pos(m),pos(n))]t14".9294"(t),[t:not(and(pos(m),pos(n)))]t123".9294"(t)):is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c))
+ni@[o:nis(x,0c)]
+lemma295a:=ori1(nis(x,0c),pos(m),o):or(nis(x,0c),pos(m))
+lemma295b:=ori1(nis(x,0c),pos(n),o):or(nis(x,0c),pos(n))
+lemma295c:=ori1(nis(x,0c),pos(mn"r"(m,n)),o):or(nis(x,0c),pos(mn"r"(m,n)))
++9295
+t1:=ori1(nis(x,0c),and(pos(mn"r"(m,n)),pos(n)),o):or(nis(x,0c),and(pos(mn"r"(m,n)),pos(n)))
+t2:=intmn(m,mi,n,ni):intrl(mn"r"(m,n))
+t3:=lemma294a(x,mn"r"(m,n),n,t2,ni,t1):or(nis(x,0c),pos(mn"r"(m,n)))
+t4:=lemma294b(x,mn"r"(m,n),n,t2,ni,t1):or(nis(x,0c),pos(n))
+t5:=lemma294c(x,mn"r"(m,n),n,t2,ni,t1):or(nis(x,0c),pos(pl"r"(mn"r"(m,n),n)))
+t6:=ists12(pw(x,mn"r"(m,n),t2,lemma295c),pw(x,mn"r"(m,n),t2,t3),pw(x,n,ni,lemma295b),pw(x,n,ni,t4),ispw1(x,x,mn"r"(m,n),refis(cx,x),t2,lemma295c,t3),ispw1(x,x,n,refis(cx,x),ni,lemma295b,t4)):is(ts(pw(x,mn"r"(m,n),t2,lemma295c),pw(x,n,ni,lemma295b)),ts(pw(x,mn"r"(m,n),t2,t3),pw(x,n,ni,t4)))
+t7:=satz294(x,mn"r"(m,n),n,t2,ni,t1):is(ts(pw(x,mn"r"(m,n),t2,t3),pw(x,n,ni,t4)),pw(x,pl"r"(mn"r"(m,n),n),intpl(mn"r"(m,n),t2,n,ni),t5))
+t8:=plmn(m,n):is"r"(pl"r"(mn"r"(m,n),n),m)
+t9:=ispw2(x,pl"r"(mn"r"(m,n),n),m,t8,intpl(mn"r"(m,n),t2,n,ni),mi,t5,lemma295a):is(pw(x,pl"r"(mn"r"(m,n),n),intpl(mn"r"(m,n),t2,n,ni),t5),pw(x,m,mi,lemma295a))
+t10:=tr3is(cx,ts(pw(x,mn"r"(m,n),t2,lemma295c),pw(x,n,ni,lemma295b)),ts(pw(x,mn"r"(m,n),t2,t3),pw(x,n,ni,t4)),pw(x,pl"r"(mn"r"(m,n),n),intpl(mn"r"(m,n),t2,n,ni),t5),pw(x,m,mi,lemma295a),t6,t7,t9):is(ts(pw(x,mn"r"(m,n),t2,lemma295c),pw(x,n,ni,lemma295b)),pw(x,m,mi,lemma295a))
+t11:=satz290(x,n,ni,lemma295b,o):nis(pw(x,n,ni,lemma295b),0c)
+-9295
+satz295:=satz229k(pw(x,m,mi,lemma295a),pw(x,n,ni,lemma295b),pw(x,mn"r"(m,n),t2".9295",lemma295c),t11".9295",t10".9295"):is(ov(pw(x,m,mi,lemma295a),pw(x,n,ni,lemma295b),satz290(x,n,ni,lemma295b,o)),pw(x,mn"r"(m,n),intmn(m,mi,n,ni),lemma295c))
+m@[mi:intrl(m)][n:nis(x,0c)]
+lemma296:=ori1(nis(x,0c),pos(m),n):or(nis(x,0c),pos(m))
++9296
+t1:=intrli0(0,refis(real,0)):intrl(0)
+t2:=lemma295a(x,0,m,t1,mi,n):or(nis(x,0c),pos(0))
+t3:=lemma295b(x,0,m,t1,mi,n):or(nis(x,0c),pos(m))
+t4:=lemma295c(x,0,m,t1,mi,n):or(nis(x,0c),pos(mn"r"(0,m)))
+t5:=satz290(x,m,mi,lemma296,n):nis(pw(x,m,mi,lemma296),0c)
+t6:=satz290(x,m,mi,t3,n):nis(pw(x,m,mi,t3),0c)
+t7:=symis(cx,pw(x,0,t1,t2),1c,0exp(x,0,t1,t2,refis(real,0))):is(1c,pw(x,0,t1,t2))
+t8:=ispw1(x,x,m,refis(cx,x),mi,lemma296,t3):is(pw(x,m,mi,lemma296),pw(x,m,mi,t3))
+t9:=isov12(1c,pw(x,0,t1,t2),pw(x,m,mi,lemma296),pw(x,m,mi,t3),t7,t8,t5,t6):is(ov(1c,pw(x,m,mi,lemma296),t5),ov(pw(x,0,t1,t2),pw(x,m,mi,t3),t6))
+t10:=satz295(x,0,m,t1,mi,n):is(ov(pw(x,0,t1,t2),pw(x,m,mi,t3),t6),pw(x,mn"r"(0,m),intmn(0,t1,m,mi),t4))
+t11:=pl01(0,m0"r"(m),refis(real,0)):is"r"(mn"r"(0,m),m0"r"(m))
+t12:=lemma296(x,m0"r"(m),intm0(m,mi),n):or(nis(x,0c),pos(m0"r"(m)))
+t13:=ispw2(x,mn"r"(0,m),m0"r"(m),t11,intmn(0,t1,m,mi),intm0(m,mi),t4,t12):is(pw(x,mn"r"(0,m),intmn(0,t1,m,mi),t4),pw(x,m0"r"(m),intm0(m,mi),t12))
+t14:=tr3is(cx,ov(1c,pw(x,m,mi,lemma296),t5),ov(pw(x,0,t1,t2),pw(x,m,mi,t3),t6),pw(x,mn"r"(0,m),intmn(0,t1,m,mi),t4),pw(x,m0"r"(m),intm0(m,mi),t12),t9,t10,t13):is(ov(1c,pw(x,m,mi,lemma296),t5),pw(x,m0"r"(m),intm0(m,mi),t12))
+-9296
+satz296:=t14".9296":is(ov(1c,pw(x,m,mi,lemma296),satz290(x,m,mi,lemma296,n)),pw(x,m0"r"(m),intm0(m,mi),lemma296(m0"r"(m),intm0(m,mi),n)))
+ni@[o:or(nis(x,0c),and(pos(m),pos(n)))]
++9297
+[p:nis(x,0c)]
+t1:=satz290(x,m,mi,lemma294a(o),p):nis(pw(x,m,mi,lemma294a(o)),0c)
+o@[a:and(pos(m),pos(n))]
+t2:=ande2(pos(m),pos(n),a):pos(n)
+t3:=postspp(m,n,ande1(pos(m),pos(n),a),t2):pos(ts"r"(m,n))
+-9297
+lemma297a:=th9"l.or"(nis(x,0c),and(pos(m),pos(n)),nis(pw(x,m,mi,lemma294a(o)),0c),pos(n),o,[t:nis(x,0c)]t1".9297"(t),[t:and(pos(m),pos(n))]t2".9297"(t)):or(nis(pw(x,m,mi,lemma294a(o)),0c),pos(n))
+lemma297b:=th8"l.or"(nis(x,0c),and(pos(m),pos(n)),pos(ts"r"(m,n)),o,[t:and(pos(m),pos(n))]t3".9297"(t)):or(nis(x,0c),pos(ts"r"(m,n)))
+mi@[o:or(nis(x,0c),pos(m))][i:is(x,0c)]
++*9297
+i@t4:=ore2(nis(x,0c),pos(m),o,weli(is(x,0c),i)):pos(m)
+m1:=ntofrl(m,posintnatrl(m,t4,mi)):nat
+t5:=posexp(x,m,mi,o,t4):is(pw(x,m,mi,o),prod(m1,[t:1to(m1)]x))
+t6:=satz289b(m1,[t:1to(m1)]x,xout(m1),i):is(prod(m1,[t:1to(m1)]x),0c)
+t7:=tris(cx,pw(x,m,mi,o),prod(m1,[t:1to(m1)]x),0c,t5,t6):is(pw(x,m,mi,o),0c)
+-9297
+i@pw0:=t7".9297":is(pw(x,m,mi,o),0c)
+ni@[o:or(nis(x,0c),and(pos(m),pos(n)))]
++*9297
+ni@t8:=intts(m,mi,n,ni):intrl(ts"r"(m,n))
+o@prop1:=is(pw(pw(x,m,mi,lemma294a(o)),n,ni,lemma297a(o)),pw(x,ts"r"(m,n),t8,lemma297b(o))):'prop'
+[i:is(x,0c)]
+t9:=pw0(x,m,mi,lemma294a(o),i):is(pw(x,m,mi,lemma294a(o)),0c)
+t10:=pw0(pw(x,m,mi,lemma294a(o)),n,ni,lemma297a(o),t9):is(pw(pw(x,m,mi,lemma294a(o)),n,ni,lemma297a(o)),0c)
+t11:=pw0(x,ts"r"(m,n),t8,lemma297b(o),i):is(pw(x,ts"r"(m,n),t8,lemma297b(o)),0c)
+t12:=tris2(cx,pw(pw(x,m,mi,lemma294a(o)),n,ni,lemma297a(o)),pw(x,ts"r"(m,n),t8,lemma297b(o)),0c,t10,t11):prop1
+m@[mi:intrl(m)][p:nis(x,0c)]
+t13:=ori1(nis(x,0c),pos(m),p):or(nis(x,0c),pos(m))
+p0:=pw(x,m,mi,t13):cx
+[n:nat]
+nr:=rlofnt(n):real
+t14:=natintrl(nr,natrli(n)):intrl(nr)
+t15:=ori2(nis(p0,0c),pos(nr),natpos(nr,natrli(n))):or(nis(p0,0c),pos(nr))
+t16:=ori1(nis(x,0c),pos(ts"r"(m,nr)),p):or(nis(x,0c),pos(ts"r"(m,nr)))
+t17:=intts(m,mi,nr,t14):intrl(ts"r"(m,nr))
+prop2:=is(pw(p0,nr,t14,t15),pw(x,ts"r"(m,nr),t17,t16)):'prop'
+p@t18:=ispw1(p0,p0,1rl,refis(cx,p0),intrl1,t15(1),lemma291(p0)):is(pw(p0,1rl,t14(1),t15(1)),pw(p0,1rl,intrl1,lemma291(p0)))
+t19:=satz291(p0):is(pw(p0,1rl,intrl1,lemma291(p0)),p0)
+t20:=ispw2(x,m,ts"r"(m,1rl),satz195a(m),mi,t17(1),t13,t16(1)):is(p0,pw(x,ts"r"(m,1rl),t17(1),t16(1)))
+t21:=tr3is(cx,pw(p0,1rl,t14(1),t15(1)),pw(p0,1rl,intrl1,lemma291(p0)),p0,pw(x,ts"r"(m,1rl),t17(1),t16(1)),t18,t19,t20):prop2(1)
+n@[p2:prop2(n)]
+n1:=pl"n"(n,1):nat
+t22:=satz290(x,m,mi,t13,p):nis(p0,0c)
+t23:=ori1(nis(p0,0c),and(pos(nr),pos(1rl)),t22):or(nis(p0,0c),and(pos(nr),pos(1rl)))
+t24:=lemma294a(p0,nr,1rl,t14,intrl1,t23):or(nis(p0,0c),pos(nr))
+t25:=lemma294b(p0,nr,1rl,t14,intrl1,t23):or(nis(p0,0c),pos(1rl))
+t26:=lemma294c(p0,nr,1rl,t14,intrl1,t23):or(nis(p0,0c),pos(pl"r"(nr,1rl)))
+t27:=ispw2(p0,nr(n1),pl"r"(nr,1rl),satzr155a(n,1),t14(n1),intpl(nr,t14,1rl,intrl1),t15(n1),t26):is(pw(p0,nr(n1),t14(n1),t15(n1)),pw(p0,pl"r"(nr,1rl),intpl(nr,t14,1rl,intrl1),t26))
+t27a:=satz294(p0,nr,1rl,t14,intrl1,t23):is(ts(pw(p0,nr,t14,t24),pw(p0,1rl,intrl1,t25)),pw(p0,pl"r"(nr,1rl),intpl(nr,t14,1rl,intrl1),t26))
+t28:=tris2(cx,pw(p0,nr(n1),t14(n1),t15(n1)),ts(pw(p0,nr,t14,t24),pw(p0,1rl,intrl1,t25)),pw(p0,pl"r"(nr,1rl),intpl(nr,t14,1rl,intrl1),t26),t27,t27a):is(pw(p0,nr(n1),t14(n1),t15(n1)),ts(pw(p0,nr,t14,t24),pw(p0,1rl,intrl1,t25)))
+t29:=ori1(nis(x,0c),and(pos(ts"r"(m,nr)),pos(m)),p):or(nis(x,0c),and(pos(ts"r"(m,nr)),pos(m)))
+t30:=lemma294a(x,ts"r"(m,nr),m,t17,mi,t29):or(nis(x,0c),pos(ts"r"(m,nr)))
+t31:=lemma294b(x,ts"r"(m,nr),m,t17,mi,t29):or(nis(x,0c),pos(m))
+t32:=lemma294c(x,ts"r"(m,nr),m,t17,mi,t29):or(nis(x,0c),pos(pl"r"(ts"r"(m,nr),m)))
+t33:=tr3is(cx,pw(p0,nr,t14,t24),pw(p0,nr,t14,t15),pw(x,ts"r"(m,nr),t17,t16),pw(x,ts"r"(m,nr),t17,t30),ispw1(p0,p0,nr,refis(cx,p0),t14,t24,t15),p2,ispw1(x,x,ts"r"(m,nr),refis(cx,x),t17,t16,t30)):is(pw(p0,nr,t14,t24),pw(x,ts"r"(m,nr),t17,t30))
+t34:=tr3is(cx,pw(p0,1rl,intrl1,t25),pw(p0,1rl,intrl1,lemma291(p0)),p0,pw(x,m,mi,t31),ispw1(p0,p0,1rl,refis(cx,p0),intrl1,t25,lemma291(p0)),t19,ispw1(x,x,m,refis(cx,x),mi,t13,t31)):is(pw(p0,1rl,intrl1,t25),pw(x,m,mi,t31))
+t35:=ists12(pw(p0,nr,t14,t24),pw(x,ts"r"(m,nr),t17,t30),pw(p0,1rl,intrl1,t25),pw(x,m,mi,t31),t33,t34):is(ts(pw(p0,nr,t14,t24),pw(p0,1rl,intrl1,t25)),ts(pw(x,ts"r"(m,nr),t17,t30),pw(x,m,mi,t31)))
+t36:=satz294(x,ts"r"(m,nr),m,t17,mi,t29):is(ts(pw(x,ts"r"(m,nr),t17,t30),pw(x,m,mi,t31)),pw(x,pl"r"(ts"r"(m,nr),m),intpl(ts"r"(m,nr),t17,m,mi),t32))
+t37:=tr3is(real,pl"r"(ts"r"(m,nr),m),pl"r"(ts"r"(m,nr),ts"r"(m,1rl)),ts"r"(m,pl"r"(nr,1rl)),ts"r"(m,nr(n1)),ispl2"r"(m,ts"r"(m,1rl),ts"r"(m,nr),satz195a(m)),distpt2"r"(m,nr,1rl),ists2"r"(pl"r"(nr,1rl),nr(n1),m,satzr155b(n,1))):is"r"(pl"r"(ts"r"(m,nr),m),ts"r"(m,nr(n1)))
+t38:=ispw2(x,pl"r"(ts"r"(m,nr),m),ts"r"(m,nr(n1)),t37,intpl(ts"r"(m,nr),t17,m,mi),t17(n1),t32,t16(n1)):is(pw(x,pl"r"(ts"r"(m,nr),m),intpl(ts"r"(m,nr),t17,m,mi),t32),pw(x,ts"r"(m,nr(n1)),t17(n1),t16(n1)))
+t39:=tr4is(cx,pw(p0,nr(n1),t14(n1),t15(n1)),ts(pw(p0,nr,t14,t24),pw(p0,1rl,intrl1,t25)),ts(pw(x,ts"r"(m,nr),t17,t30),pw(x,m,mi,t31)),pw(x,pl"r"(ts"r"(m,nr),m),intpl(ts"r"(m,nr),t17,m,mi),t32),pw(x,ts"r"(m,nr(n1)),t17(n1),t16(n1)),t28,t35,t36,t38):prop2(n1)
+t40:=isp(nat,[t:nat]prop2(t),n1,<n>suc,t39,satz4a(n)):prop2(<n>suc)
+n@t41:=induction([t:nat]prop2(t),t21,[t:nat][u:prop2(t)]t40(t,u),n):prop2(n)
+o@[p:nis(x,0c)][q:pos(n)]
+t42:=posintnatrl(n,q,ni):natrl(n)
+n0:=ntofrl(n,t42):nat
+t43:=isrlnt1(n,t42):is"r"(n,rlofnt(n0))
+t44:=isrlnt2(n,t42):is"r"(rlofnt(n0),n)
+o@p1:=pw(x,m,mi,lemma294a(o)):cx
+q@t44a:=ispw2(x,m,m,refis(real,m),mi,mi,lemma294a(o),t13(mi,p)):is(p1,p0(mi,p))
+t45:=ispw12(p1,p0(mi,p),n,rlofnt(n0),t44a,t43,ni,t14(mi,p,n0),lemma297a(o),t15(mi,p,n0)):is(pw(p1,n,ni,lemma297a(o)),pw(p0(mi,p),rlofnt(n0),t14(mi,p,n0),t15(mi,p,n0)))
+t46:=t41(mi,p,n0):is(pw(p0(mi,p),rlofnt(n0),t14(mi,p,n0),t15(mi,p,n0)),pw(x,ts"r"(m,rlofnt(n0)),t17(mi,p,n0),t16(mi,p,n0)))
+t47:=ists2"r"(rlofnt(n0),n,m,t44):is"r"(ts"r"(m,rlofnt(n0)),ts"r"(m,n))
+t48:=ispw2(x,ts"r"(m,rlofnt(n0)),ts"r"(m,n),t47,t17(mi,p,n0),t8,t16(mi,p,n0),lemma297b(o)):is(pw(x,ts"r"(m,rlofnt(n0)),t17(mi,p,n0),t16(mi,p,n0)),pw(x,ts"r"(m,n),t8,lemma297b(o)))
+t49:=tr3is(cx,pw(p1,n,ni,lemma297a(o)),pw(p0(mi,p),rlofnt(n0),t14(mi,p,n0),t15(mi,p,n0)),pw(x,ts"r"(m,rlofnt(n0)),t17(mi,p,n0),t16(mi,p,n0)),pw(x,ts"r"(m,n),t8,lemma297b(o)),t45,t46,t48):prop1
+p@[i:is"r"(n,0)]
+t50:=0exp(p1,n,ni,lemma297a(o),i):is(pw(p1,n,ni,lemma297a(o)),1c)
+t51:=ts02"r"(m,n,i):is"r"(ts"r"(m,n),0)
+t52:=0exp(x,ts"r"(m,n),t8,lemma297b(o),t51):is(pw(x,ts"r"(m,n),t8,lemma297b(o)),1c)
+t53:=tris2(cx,pw(p1,n,ni,lemma297a(o)),pw(x,ts"r"(m,n),t8,lemma297b(o)),1c,t50,t52):prop1
+p@[q:neg(n)]
+an:=abs(n):real
+t54:=intabs(n,ni):intrl(an)
+t55:=ori1(nis(x,0c),and(pos(m),pos(an)),p):or(nis(x,0c),and(pos(m),pos(an)))
+p1t55:=p1(an,mi,t54,t55):cx
+t56:=satz166e(n,nnot0(n,q)):pos(an)
+t56a:=lemma294a(an,mi,t54,t55):or(nis(x,0c),pos(m))
+t57:=lemma297a(an,mi,t54,t55):or(nis(p1t55,0c),pos(an))
+t58:=lemma297b(an,mi,t54,t55):or(nis(x,0c),pos(ts"r"(m,an)))
+t59:=t49(an,mi,t54,t55,p,t56):is(pw(p1t55,an,t54,t57),pw(x,ts"r"(m,an),t8(an,mi,t54),t58))
+t60:=satz177c(an,n,absn(n,q)):is"r"(n,m0"r"(an))
+t61:=intm0(an,t54):intrl(m0"r"(an))
+t62:=satz290(x,m,mi,t56a,p):nis(p1t55,0c)
+t63:=lemma296(p1t55,an,t54,t62):or(nis(p1t55,0c),pos(an))
+t64:=satz290(p1t55,an,t54,t63,t62):nis(pw(p1t55,an,t54,t63),0c)
+t65:=lemma296(p1t55,m0"r"(an),t61,t62):or(nis(p1t55,0c),pos(m0"r"(an)))
+t66:=satz296(p1t55,an,t54,t62):is(ov(1c,pw(p1t55,an,t54,t63),t64),pw(p1t55,m0"r"(an),t61,t65))
+t67:=ispw1(x,x,m,refis(cx,x),mi,lemma294a(o),t56a):is(p1,p1t55)
+t68:=ispw12(p1,p1t55,n,m0"r"(an),t67,t60,ni,t61,lemma297a(o),t65):is(pw(p1,n,ni,lemma297a(o)),pw(p1t55,m0"r"(an),t61,t65))
+t69:=tris2(cx,pw(p1,n,ni,lemma297a(o)),ov(1c,pw(p1t55,an,t54,t63),t64),pw(p1t55,m0"r"(an),t61,t65),t68,t66):is(pw(p1,n,ni,lemma297a(o)),ov(1c,pw(p1t55,an,t54,t63),t64))
+t70:=tris(real,m0"r"(ts"r"(m,an)),ts"r"(m,m0"r"(an)),ts"r"(m,n),satz197f(m,an),ists2"r"(m0"r"(an),n,m,symis(real,n,m0"r"(an),t60))):is"r"(m0"r"(ts"r"(m,an)),ts"r"(m,n))
+t71:=intm0(ts"r"(m,an),t8(an,mi,t54)):intrl(m0"r"(ts"r"(m,an)))
+t72:=lemma296(x,ts"r"(m,an),t8(an,mi,t54),p):or(nis(x,0c),pos(ts"r"(m,an)))
+t73:=satz290(x,ts"r"(m,an),t8(an,mi,t54),t72,p):nis(pw(x,ts"r"(m,an),t8(an,mi,t54),t72),0c)
+t74:=lemma296(x,m0"r"(ts"r"(m,an)),t71,p):or(nis(x,0c),pos(m0"r"(ts"r"(m,an))))
+t75:=satz296(x,ts"r"(m,an),t8(an,mi,t54),p):is(ov(1c,pw(x,ts"r"(m,an),t8(an,mi,t54),t72),t73),pw(x,m0"r"(ts"r"(m,an)),t71,t74))
+t76:=ispw2(x,m0"r"(ts"r"(m,an)),ts"r"(m,n),t70,t71,t8,t74,lemma297b(o)):is(pw(x,m0"r"(ts"r"(m,an)),t71,t74),pw(x,ts"r"(m,n),t8,lemma297b(o)))
+t77:=ispw1(p1t55,p1t55,an,refis(cx,p1t55),t54,t63,t57):is(pw(p1t55,an,t54,t63),pw(p1t55,an,t54,t57))
+t78:=ispw1(x,x,ts"r"(m,an),refis(cx,x),t8(an,mi,t54),t58,t72):is(pw(x,ts"r"(m,an),t8(an,mi,t54),t58),pw(x,ts"r"(m,an),t8(an,mi,t54),t72))
+t79:=tr3is(cx,pw(p1t55,an,t54,t63),pw(p1t55,an,t54,t57),pw(x,ts"r"(m,an),t8(an,mi,t54),t58),pw(x,ts"r"(m,an),t8(an,mi,t54),t72),t77,t59,t78):is(pw(p1t55,an,t54,t63),pw(x,ts"r"(m,an),t8(an,mi,t54),t72))
+t80:=isov2(pw(p1t55,an,t54,t63),pw(x,ts"r"(m,an),t8(an,mi,t54),t72),1c,t79,t64,t73):is(ov(1c,pw(p1t55,an,t54,t63),t64),ov(1c,pw(x,ts"r"(m,an),t8(an,mi,t54),t72),t73))
+t81:=tr4is(cx,pw(p1,n,ni,lemma297a(o)),ov(1c,pw(p1t55,an,t54,t63),t64),ov(1c,pw(x,ts"r"(m,an),t8(an,mi,t54),t72),t73),pw(x,m0"r"(ts"r"(m,an)),t71,t74),pw(x,ts"r"(m,n),t8,lemma297b(o)),t69,t80,t75,t76):prop1
+p@t82:=rapp(n,prop1,[t:pos(n)]t49(t),[t:is"r"(n,0)]t53(t),[t:neg(n)]t81(t)):prop1
+-9297
+o@satz297:=th1"l.imp"(is(x,0c),prop1".9297",[t:is(x,0c)]t12".9297"(t),[t:nis(x,0c)]t82".9297"(t)):is(pw(pw(x,m,mi,lemma294a(o)),n,ni,lemma297a(o)),pw(x,ts"r"(m,n),intts(m,mi,n,ni),lemma297b(o)))
+@[r:real][s:real]
++10298
+t1:=tris(cx,pl(pli(r,0),pli(s,0)),pli(pl"r"(r,s),pl"r"(0,0)),pli(pl"r"(r,s),0),plis12a(r,0,s,0),isrecx2(pl"r"(0,0),0,pl"r"(r,s),pl01(0,0,refis(real,0)))):is(pl(pli(r,0),pli(s,0)),pli(pl"r"(r,s),0))
+-10298
+satz298a:=symis(cx,pl(pli(r,0),pli(s,0)),pli(pl"r"(r,s),0),t1".10298"):is(pli(pl"r"(r,s),0),pl(pli(r,0),pli(s,0)))
+satz298b:=t1".10298":is(pl(pli(r,0),pli(s,0)),pli(pl"r"(r,s),0))
++*10298
+s@t2:=tris(cx,mn(pli(r,0),pli(s,0)),pli(mn"r"(r,s),mn"r"(0,0)),pli(mn"r"(r,s),0),mnis12a(r,0,s,0),isrecx2(mn"r"(0,0),0,mn"r"(r,s),pl02(0,m0"r"(0),satz176b(0,refis(real,0))))):is(mn(pli(r,0),pli(s,0)),pli(mn"r"(r,s),0))
+-10298
+s@satz298c:=symis(cx,mn(pli(r,0),pli(s,0)),pli(mn"r"(r,s),0),t2".10298"):is(pli(mn"r"(r,s),0),mn(pli(r,0),pli(s,0)))
+satz298d:=t2".10298":is(mn(pli(r,0),pli(s,0)),pli(mn"r"(r,s),0))
++*10298
+s@t3:=pl02(ts"r"(r,s),m0"r"(ts"r"(0,0)),satz176b(ts"r"(0,0),ts01(0,0,refis(real,0)))):is"r"(mn"r"(ts"r"(r,s),ts"r"(0,0)),ts"r"(r,s))
+t4:=tris(real,pl"r"(ts"r"(r,0),ts"r"(0,s)),ts"r"(r,0),0,pl02(ts"r"(r,0),ts"r"(0,s),ts01(0,s,refis(real,0))),ts02(r,0,refis(real,0))):is"r"(pl"r"(ts"r"(r,0),ts"r"(0,s)),0)
+t5:=tris(cx,ts(pli(r,0),pli(s,0)),pli(mn"r"(ts"r"(r,s),ts"r"(0,0)),pl"r"(ts"r"(r,0),ts"r"(0,s))),pli(ts"r"(r,s),0),tsis12a(r,0,s,0),isrecx12(mn"r"(ts"r"(r,s),ts"r"(0,0)),ts"r"(r,s),pl"r"(ts"r"(r,0),ts"r"(0,s)),0,t3,t4)):is(ts(pli(r,0),pli(s,0)),pli(ts"r"(r,s),0))
+-10298
+s@satz298e:=symis(cx,ts(pli(r,0),pli(s,0)),pli(ts"r"(r,s),0),t5".10298"):is(pli(ts"r"(r,s),0),ts(pli(r,0),pli(s,0)))
+satz298f:=t5".10298":is(ts(pli(r,0),pli(s,0)),pli(ts"r"(r,s),0))
+[n:nis"r"(s,0)]
++*10298
+n@[i:is(pli(s,0),0c)]
+t6:=tr3is(real,s,re(pli(s,0)),re(0c),0,isre(s,0),iscere(pli(s,0),0c,i),reis(0,0)):is"r"(s,0)
+-10298
+n@lemma298:=th3"l.imp"(is(pli(s,0),0c),is"r"(s,0),n,[t:is(pli(s,0),0c)]t6".10298"(t)):nis(pli(s,0),0c)
++*10298
+n@t7:=tris(cx,ts(pli(s,0),pli(ov"r"(r,s,n),0)),pli(ts"r"(s,ov"r"(r,s,n)),0),pli(r,0),t5(s,ov"r"(r,s,n)),isrecx1(ts"r"(s,ov"r"(r,s,n)),r,0,satz204c(r,s,n))):is(ts(pli(s,0),pli(ov"r"(r,s,n),0)),pli(r,0))
+-10298
+n@satz298g:=satz229g(pli(r,0),pli(s,0),pli(ov"r"(r,s,n),0),lemma298,t7".10298"):is(pli(ov"r"(r,s,n),0),ov(pli(r,0),pli(s,0),lemma298))
+satz298h:=satz229h(pli(r,0),pli(s,0),pli(ov"r"(r,s,n),0),lemma298,t7".10298"):is(ov(pli(r,0),pli(s,0),lemma298),pli(ov"r"(r,s,n),0))
++*10298
+r@t8:=tris(cx,m0(pli(r,0)),pli(m0"r"(r),m0"r"(0)),pli(m0"r"(r),0),m0isa(r,0),isrecx2(m0"r"(0),0,m0"r"(r),satz176b(0,refis(real,0)))):is(m0(pli(r,0)),pli(m0"r"(r),0))
+-10298
+r@satz298j:=symis(cx,m0(pli(r,0)),pli(m0"r"(r),0),t8".10298"):is(pli(m0"r"(r),0),m0(pli(r,0)))
+satz298k:=t8".10298":is(m0(pli(r,0)),pli(m0"r"(r),0))
++*10298
+r@t9:=tris(real,mod2(pli(r,0)),ts"r"(re(pli(r,0)),re(pli(r,0))),ts"r"(r,r),pl02(ts"r"(re(pli(r,0)),re(pli(r,0))),ts"r"(im(pli(r,0)),im(pli(r,0))),ts01(im(pli(r,0)),im(pli(r,0)),imis(r,0))),ists12"r"(re(pli(r,0)),r,re(pli(r,0)),r,reis(r,0),reis(r,0))):is"r"(mod2(pli(r,0)),ts"r"(r,r))
+ar:=abs(r):real
+[p:pos(r)]
+t10:=satz196a(r,r,p,p):is"r"(ts"r"(r,r),ts"r"(ar,ar))
+r@[i:is"r"(r,0)]
+t11:=tris2(real,ts"r"(r,r),ts"r"(ar,ar),0,ts01(r,r,i),ts01(ar,ar,abs0(r,i))):is"r"(ts"r"(r,r),ts"r"(ar,ar))
+r@[n:neg(r)]
+t12:=satz196b(r,r,n,n):is"r"(ts"r"(r,r),ts"r"(ar,ar))
+r@t13:=rapp(r,is"r"(ts"r"(r,r),ts"r"(ar,ar)),[t:pos(r)]t10(t),[t:is"r"(r,0)]t11(t),[t:neg(r)]t12(t)):is"r"(ts"r"(r,r),ts"r"(ar,ar))
+t14:=tris(real,mod2(pli(r,0)),ts"r"(r,r),ts"r"(ar,ar),t9,t13):is"r"(mod2(pli(r,0)),ts"r"(ar,ar))
+t15:=th1"l.imp"(is"r"(r,0),not(neg(ar)),[t:is"r"(r,0)]0notn(ar,abs0(r,t)),[t:nis"r"(r,0)]pnotn(ar,satz166e(r,t))):not(neg(ar))
+-10298
+r@satz298l:=thsqrt3(mod2(pli(r,0)),lemma5(pli(r,0)),abs(r),t15".10298",t14".10298"):is"r"(mod(pli(r,0)),abs(r))
+satz298m:=symis(real,mod(pli(r,0)),abs(r),satz298l):is"r"(abs(r),mod(pli(r,0)))
+cofrl:=pli(r,0):complex
+s@[i:is(cofrl(r),cofrl(s))]
+isrlic:=tr3is(real,r,re(cofrl(r)),re(cofrl(s)),s,isre(r,0),iscere(cofrl(r),cofrl(s),i),reis(s,0)):is"r"(r,s)
+s@[i:is"r"(r,s)]
+isrlec:=isrecx1(r,s,0,i):is(cofrl(r),cofrl(s))
++v10
+@t1:=[t:real][u:real][v:is(cofrl(t),cofrl(u))]isrlic(t,u,v):injective(real,cx,[t:real]cofrl(t))
+-v10
+@[x:cx]
+realc:=image(real,cx,[t:real]cofrl(t),x):'prop'
+r@reali:=imagei(real,cx,[t:real]cofrl(t),r):realc(cofrl(r))
+x@[rx:realc(x)]
+rlofc:=soft(real,cx,[t:real]cofrl(t),t1".v10",x,rx):real
+[y:cx][ry:realc(y)][i:is"r"(rlofc(x,rx),rlofc(y,ry))]
+iscirl:=isinve(real,cx,[t:real]cofrl(t),t1".v10",x,rx,y,ry,i):is(x,y)
+ry@[i:is(x,y)]
+iscerl:=isinv(real,cx,[t:real]cofrl(t),t1".v10",x,rx,y,ry,i):is"r"(rlofc(x,rx),rlofc(y,ry))
+r@isrlc1:=isst1(real,cx,[t:real]cofrl(t),t1".v10",r):is"r"(r,rlofc(cofrl(r),reali(r)))
+isrlc2:=isst2(real,cx,[t:real]cofrl(t),t1".v10",r):is"r"(rlofc(cofrl(r),reali(r)),r)
+rx@iscrl1:=ists1"e"(real,cx,[t:real]cofrl(t),t1".v10",x,rx):is(x,cofrl(rlofc(x,rx)))
+iscrl2:=ists2"e"(real,cx,[t:real]cofrl(t),t1".v10",x,rx):is(cofrl(rlofc(x,rx)),x)
+@[n:nat]
+cofn:=cofrl(rlofnt(n)):complex
+[m:nat][i:is"n"(n,m)]
+isnec:=isrlec(rlofnt(n),rlofnt(m),isnterl(n,m,i)):is(cofn(n),cofn(m))
+m@[i:is(cofn(n),cofn(m))]
+isnic:=isntirl(n,m,isrlic(rlofnt(n),rlofnt(m),i)):is"n"(n,m)
++*v10
+@t2:=[t:nat][u:nat][v:is(cofn(t),cofn(u))]isnic(t,u,v):injective(nat,cx,[t:nat]cofn(t))
+-v10
+x@natc:=image(nat,cx,[t:nat]cofn(t),x):'prop'
+n@nati:=imagei(nat,cx,[t:nat]cofn(t),n):natc(cofn(n))
+x@[nx:natc(x)]
+nofc:=soft(nat,cx,[t:nat]cofn(t),t2".v10",x,nx):nat
+[y:cx][ny:natc(y)][i:is(x,y)]
+iscen:=isinv(nat,cx,[t:nat]cofn(t),t2".v10",x,nx,y,ny,i):is"n"(nofc(x,nx),nofc(y,ny))
+ny@[i:is"n"(nofc(x,nx),nofc(y,ny))]
+iscin:=isinve(nat,cx,[t:nat]cofn(t),t2".v10",x,nx,y,ny,i):is(x,y)
+n@isnc1:=isst1(nat,cx,[t:nat]cofn(t),t2".v10",n):is"n"(n,nofc(cofn(n),nati(n)))
+isnc2:=isst2(nat,cx,[t:nat]cofn(t),t2".v10",n):is"n"(nofc(cofn(n),nati(n)),n)
+nx@iscn1:=ists1"e"(nat,cx,[t:nat]cofn(t),t2".v10",x,nx):is(x,cofn(nofc(x,nx)))
+iscn2:=ists2"e"(nat,cx,[t:nat]cofn(t),t2".v10",x,nx):is(cofn(nofc(x,nx)),x)
+@natt:=ot(cx,[t:cx]natc(t)):'type'
+[nt:natt]
+cofnt:=in"e"(cx,[t:cx]natc(t),nt):cx
+natti:=inp(cx,[t:cx]natc(t),nt):natc(cofnt(nt))
+[mt:natt][i:is"e"(natt,nt,mt)]
+isntec:=isini(cx,[t:cx]natc(t),nt,mt,i):is(cofnt(nt),cofnt(mt))
+mt@[i:is(cofnt(nt),cofnt(mt))]
+isntic:=isine(cx,[t:cx]natc(t),nt,mt,i):is"e"(natt,nt,mt)
+nx@ntofc:=out(cx,[t:cx]natc(t),x,nx):natt
+ny@[i:is(x,y)]
+iscent:=isouti(cx,[t:cx]natc(t),x,nx,y,ny,i):is"e"(natt,ntofc(x,nx),ntofc(y,ny))
+ny@[i:is"e"(natt,ntofc(x,nx),ntofc(y,ny))]
+iscint:=isoute(cx,[t:cx]natc(t),x,nx,y,ny,i):is(x,y)
+nt@isntc1:=isoutin(cx,[t:cx]natc(t),nt):is"e"(natt,nt,ntofc(cofnt(nt),natti(nt)))
+isntc2:=symis(natt,nt,ntofc(cofnt(nt),natti(nt)),isntc1):is"e"(natt,ntofc(cofnt(nt),natti(nt)),nt)
+nx@iscnt1:=isinout(cx,[t:cx]natc(t),x,nx):is(x,cofnt(ntofc(x,nx)))
+iscnt2:=symis(cx,x,cofnt(ntofc(x,nx)),iscnt1):is(cofnt(ntofc(x,nx)),x)
+n@ntofn:=ntofc(cofn(n),nati(n)):natt
+m@[i:is"n"(n,m)]
+isnent:=iscent(cofn(n),nati(n),cofn(m),nati(m),isnec(n,m,i)):is"e"(natt,ntofn(n),ntofn(m))
+m@[i:is"e"(natt,ntofn(n),ntofn(m))]
+isnint:=isnic(n,m,iscint(cofn(n),nati(n),cofn(m),nati(m),i)):is"n"(n,m)
+nt@nofnt:=nofc(cofnt(nt),natti(nt)):nat
+mt@[i:is"e"(natt,nt,mt)]
+isnter:=iscen(cofnt(nt),natti(nt),cofnt(mt),natti(mt),isntec(nt,mt,i)):is"n"(nofnt(nt),nofnt(mt))
+mt@[i:is"n"(nofnt(nt),nofnt(mt))]
+isntin:=isntic(nt,mt,iscin(cofnt(nt),natti(nt),cofnt(mt),natti(mt),i)):is"e"(natt,nt,mt)
++*v10
+n@t3:=iscnt1(cofn(n),nati(n)):is(cofn(n),cofnt(ntofn(n)))
+-v10
+n@isnnt1:=tris(nat,n,nofc(cofn(n),nati(n)),nofnt(ntofn(n)),isnc1(n),iscen(cofn(n),nati(n),cofnt(ntofn(n)),natti(ntofn(n)),t3".v10")):is"n"(n,nofnt(ntofn(n)))
+isnnt2:=symis(nat,n,nofnt(ntofn(n)),isnnt1):is"n"(nofnt(ntofn(n)),n)
++*v10
+nt@t4:=iscn1(cofnt(nt),natti(nt)):is(cofnt(nt),cofn(nofnt(nt)))
+-v10
+nt@isntn1:=tris(natt,nt,ntofc(cofnt(nt),natti(nt)),ntofn(nofnt(nt)),isntc1(nt),iscent(cofnt(nt),natti(nt),cofn(nofnt(nt)),nati(nofnt(nt)),t4".v10")):is"e"(natt,nt,ntofn(nofnt(nt)))
+isntn2:=symis(natt,nt,ntofn(nofnt(nt)),isntn1):is"e"(natt,ntofn(nofnt(nt)),nt)
+@1t:=ntofn(1):natt
+suct:=[t:natt]ntofn(<nofnt(t)>suc):[t:natt]natt
++10299
+nt@[i:is"e"(natt,<nt>suct,1t)]
+t1:=isnint(<nofnt(nt)>suc,1,i):is"n"(<nofnt(nt)>suc,1)
+-10299
+nt@satz299a:=th3"l.imp"(is"e"(natt,<nt>suct,1t),is"n"(<nofnt(nt)>suc,1),<nofnt(nt)>ax3,[t:is"e"(natt,<nt>suct,1t)]t1".10299"(t)):not(is"e"(natt,<nt>suct,1t))
+@ax3t:=[t:natt]satz299a(t):[t:natt]not(is"e"(natt,<t>suct,1t))
+mt@[i:is"e"(natt,<nt>suct,<mt>suct)]
++*10299
+i"c"@t2:=isnint(<nofnt(nt)>suc,<nofnt(mt)>suc,i):is"n"(<nofnt(nt)>suc,<nofnt(mt)>suc)
+t3:=<t2><nofnt(mt)><nofnt(nt)>ax4:is"n"(nofnt(nt),nofnt(mt))
+-10299
+i@satz299b:=isntin(nt,mt,t3".10299"):is"e"(natt,nt,mt)
+@ax4t:=[t:natt][u:natt][v:is"e"(natt,<t>suct,<u>suct)]satz299b(t,u,v):[t:natt][u:natt][v:is"e"(natt,<t>suct,<u>suct)]is"e"(natt,t,u)
+[s:set(natt)]
+cond1t:=esti(natt,1t,s):'prop'
+cond2t:=all"l"(natt,[t:natt]imp(esti(natt,t,s),esti(natt,<t>suct,s))):'prop'
+[c1:cond1t][c2:cond2t]
++*10299
+c2@[n:nat]
+prop1:=esti(natt,ntofn(n),s):'prop'
+c2@t4:=c1:prop1(1)
+n@[p:prop1(n)]
+t5:=<p><ntofn(n)>c2:esti(natt,ntofn(<nofnt(ntofn(n))>suc),s)
+t6:=isp(nat,[t:nat]esti(natt,ntofn(<t>suc),s),nofnt(ntofn(n)),n,t5,isnnt2(n)):prop1(<n>suc)
+c2@[nt:natt]
+t7:=induction([t:nat]prop1(t),t4,[t:nat][u:prop1(t)]t6(t,u),nofnt(nt)):prop1(nofnt(nt))
+-10299
+c2@satz299c:=[t:natt]isp(natt,[u:natt]esti(natt,u,s),ntofn(nofnt(t)),t,t7".10299"(t),isntn2(t)):[t:natt]esti(natt,t,s)
+@ax5t:=[t:set(natt)][u:cond1t(t)][v:cond2t(t)]satz299c(t,u,v):[t:set(natt)][u:cond1t(t)][v:cond2t(t)][w:natt]esti(natt,w,t)
+ic:=pli(0,1rl):complex
++10300
+t1:=tsis12a(0,1rl,0,1rl):is(ts(ic,ic),pli(mn"r"(ts"r"(0,0),ts"r"(1rl,1rl)),pl"r"(ts"r"(0,1rl),ts"r"(1rl,0))))
+t2:=tris(real,mn"r"(ts"r"(0,0),ts"r"(1rl,1rl)),m0"r"(ts"r"(1rl,1rl)),m0"r"(1rl),pl01(ts"r"(0,0),m0"r"(ts"r"(1rl,1rl)),ts01(0,0,refis(real,0))),ism0"r"(ts"r"(1rl,1rl),1rl,satz195(1rl))):is"r"(mn"r"(ts"r"(0,0),ts"r"(1rl,1rl)),m0"r"(1rl))
+t3:=tris(real,pl"r"(ts"r"(0,1rl),ts"r"(1rl,0)),ts"r"(1rl,0),0,pl01(ts"r"(0,1rl),ts"r"(1rl,0),ts01(0,1rl,refis(real,0))),ts02(1rl,0,refis(real,0))):is"r"(pl"r"(ts"r"(0,1rl),ts"r"(1rl,0)),0)
+t4:=isrecx12(mn"r"(ts"r"(0,0),ts"r"(1rl,1rl)),m0"r"(1rl),pl"r"(ts"r"(0,1rl),ts"r"(1rl,0)),0,t2,t3):is(pli(mn"r"(ts"r"(0,0),ts"r"(1rl,1rl)),pl"r"(ts"r"(0,1rl),ts"r"(1rl,0))),cofrl(m0"r"(1rl)))
+t5:=satz298j(1rl):is(cofrl(m0"r"(1rl)),m0(1c))
+-10300
+satz2300:=tr3is(cx,ts(ic,ic),pli(mn"r"(ts"r"(0,0),ts"r"(1rl,1rl)),pl"r"(ts"r"(0,1rl),ts"r"(1rl,0))),cofrl(m0"r"(1rl)),m0(1c),t1".10300",t4".10300",t5".10300"):is(ts(ic,ic),m0(1c))
+[r:real][s:real]
++10301
+t1:=tsis12a(s,0,0,1rl):is(ts(cofrl(s),ic),pli(mn"r"(ts"r"(s,0),ts"r"(0,1rl)),pl"r"(ts"r"(s,1rl),ts"r"(0,0))))
+t2:=tris(real,mn"r"(ts"r"(s,0),ts"r"(0,1rl)),m0"r"(ts"r"(0,1rl)),0,pl01(ts"r"(s,0),m0"r"(ts"r"(0,1rl)),ts02(s,0,refis(real,0))),satz176b(ts"r"(0,1rl),ts01(0,1rl,refis(real,0)))):is"r"(mn"r"(ts"r"(s,0),ts"r"(0,1rl)),0)
+t3:=tris(real,pl"r"(ts"r"(s,1rl),ts"r"(0,0)),ts"r"(s,1rl),s,pl02(ts"r"(s,1rl),ts"r"(0,0),ts01(0,0,refis(real,0))),satz195(s)):is"r"(pl"r"(ts"r"(s,1rl),ts"r"(0,0)),s)
+t4:=isrecx12(mn"r"(ts"r"(s,0),ts"r"(0,1rl)),0,pl"r"(ts"r"(s,1rl),ts"r"(0,0)),s,t2,t3):is(pli(mn"r"(ts"r"(s,0),ts"r"(0,1rl)),pl"r"(ts"r"(s,1rl),ts"r"(0,0))),pli(0,s))
+t5:=tris(cx,ts(cofrl(s),ic),pli(mn"r"(ts"r"(s,0),ts"r"(0,1rl)),pl"r"(ts"r"(s,1rl),ts"r"(0,0))),pli(0,s),t1,t4):is(ts(cofrl(s),ic),pli(0,s))
+t6:=ispl2(ts(cofrl(s),ic),pli(0,s),cofrl(r),t5):is(pl(cofrl(r),ts(cofrl(s),ic)),pl(cofrl(r),pli(0,s)))
+t7:=plis12a(r,0,0,s):is(pl(cofrl(r),pli(0,s)),pli(pl"r"(r,0),pl"r"(0,s)))
+t8:=isrecx12(pl"r"(r,0),r,pl"r"(0,s),s,pl02(r,0,refis(real,0)),pl01(0,s,refis(real,0))):is(pli(pl"r"(r,0),pl"r"(0,s)),pli(r,s))
+-10301
+satz301a:=tr3is(cx,pl(cofrl(r),ts(cofrl(s),ic)),pl(cofrl(r),pli(0,s)),pli(pl"r"(r,0),pl"r"(0,s)),pli(r,s),t6".10301",t7".10301",t8".10301"):is"e"(cx,pl(cofrl(r),ts(cofrl(s),ic)),pli(r,s))
+satz301b:=symis(cx,pl(cofrl(r),ts(cofrl(s),ic)),pli(r,s),satz301a):is(pli(r,s),pl(cofrl(r),ts(cofrl(s),ic)))
+@[x:complex]
+satz301c:=tris(cx,x,pli(re(x),im(x)),pl(cofrl(re(x)),ts(cofrl(im(x)),ic)),ispli(x),satz301b(re(x),im(x))):is(x,pl(cofrl(re(x)),ts(cofrl(im(x)),ic)))
+satz301d:=symis(cx,x,pl(cofrl(re(x)),ts(cofrl(im(x)),ic)),satz301c):is(pl(cofrl(re(x)),ts(cofrl(im(x)),ic)),x)
+s@[t:real][u:real][i:is(pl(cofrl(r),ts(cofrl(s),ic)),pl(cofrl(t),ts(cofrl(u),ic)))]
++*10301
+i@t9:=tr3is(cx,pli(r,s),pl(cofrl(r),ts(cofrl(s),ic)),pl(cofrl(t),ts(cofrl(u),ic)),pli(t,u),satz301b(r,s),i,satz301a(t,u)):is(pli(r,s),pli(t,u))
+-10301
+i@satz301e:=tr3is(real,r,re(pli(r,s)),re(pli(t,u)),t,isre(r,s),iscere(pli(r,s),pli(t,u),t9".10301"),reis(t,u)):is"r"(r,t)
+satz301f:=tr3is(real,s,im(pli(r,s)),im(pli(t,u)),u,isim(r,s),isceim(pli(r,s),pli(t,u),t9".10301"),imis(t,u)):is"r"(s,u)
+-c
+-r
+-rp
+-rt
+-n
+-landau
+-eq
+-st
+-e
+-l
diff --git a/helm/software/lambda-delta/automath/grundlagen.aut b/helm/software/lambda-delta/automath/grundlagen.aut
new file mode 100644 (file)
index 0000000..4a856c2
--- /dev/null
@@ -0,0 +1,10713 @@
+# Landau's "Grundlagen der Analysis", formal specification in AUTOMATH
+# Copyright (C) 1977, L.S. van Benthem Jutting
+#               1992, revised by F. Wiedijk (http://www.cs.ru.nl/~freek/aut/)
+#               2008, revised by F. Guidi to remove the eta-reductions
+
++l
+@[a:'prop'][b:'prop']
+imp:=[x:a]b:'prop'
+[a1:a][i:imp(a,b)]
+mp:=<a1>i:b
+a@refimp:=[x:a]x:imp(a,a)
+b@[c:'prop'][i:imp(a,b)][j:imp(b,c)]
+trimp:=[x:a]<<x>i>j:imp(a,c)
+@con:='prim':'prop'
+a@not:=imp(con):'prop'
+wel:=not(not(a)):'prop'
+[a1:a]
+weli:=[x:not(a)]<a1>x:wel(a)
+a@[w:wel(a)]
+et:='prim':a
+a@[c1:con]
+cone:=et([x:not(a)]c1):a
++imp
+b@[i:imp(a,b)][j:imp(not(a),b)]
+th1:=et(b,[x:not(b)]<<trimp(con,i,x)>j>x):b
+b@[n:not(a)]
+th2:=trimp(con,b,n,[x:con]cone(b,x)):imp(a,b)
+b@[n:not(b)][i:imp(a,b)]
+th3:=trimp(con,i,n):not(a)
+b@[a1:a][n:not(b)]
+th4:=[x:imp(a,b)]<a1>th3(n,x):not(imp(a,b))
+b@[n:not(imp(a,b))]
+th5:=et([x:not(a)]<th2(x)>n):a
+th6:=[x:b]<[y:a]x>n:not(b)
+b@[n:not(b)][i:imp(not(a),b)]
+th7:=et(a,th3(not(a),b,n,i)):a
+-imp
+b@[i:imp(not(b),not(a))]
+cp:=[x:a]th7".imp"(b,not(a),weli(x),i):imp(a,b)
+@obvious:=imp(con,con):'prop'
+obviousi:=refimp(con):obvious
+b@ec:=imp(a,not(b)):'prop'
+[n:not(a)]
+eci1:=th2".imp"(not(b),n):ec(a,b)
+b@[n:not(b)]
+eci2:=[x:a]n:ec(a,b)
++ec
+b@[i:imp(a,not(b))]
+th1:=i:ec(a,b)
+b@[i:imp(b,not(a))]
+th2:=[x:a][y:b]<x><y>i:ec(a,b)
+-ec
+b@[e:ec(a,b)]
+comec:=th2".ec"(b,a,e):ec(b,a)
+[a1:a]
+ece1:=<a1>e:not(b)
+e@[b1:b]
+ece2:=th3".imp"(not(b),weli(b,b1),e):not(a)
++*ec
+c@[e:ec(a,b)][i:imp(c,a)]
+th3:=trimp(c,a,not(b),i,e):ec(c,b)
+e@[i:imp(c,b)]
+th4:=comec(c,a,th3(b,a,c,comec(e),i)):ec(a,c)
+-ec
+b@and:=not(ec(a,b)):'prop'
+[a1:a][b1:b]
+andi:=th4".imp"(not(b),a1,weli(b,b1)):and(a,b)
+b@[a1:and(a,b)]
+ande1:=th5".imp"(not(b),a1):a
+ande2:=et(b,th6".imp"(not(b),a1)):b
+comand:=andi(b,a,ande2,ande1):and(b,a)
++and
+b@[n:not(a)]
+th1:=weli(ec,eci1(n)):not(and)
+b@[n:not(b)]
+th2:=weli(ec,eci2(n)):not(and)
+b@[n:not(and)][a1:a]
+th3:=ece1(et(ec,n),a1):not(b)
+n@[b1:b]
+th4:=ece2(et(ec,n),b1):not(a)
+n@th5:=th3"l.imp"(and(b,a),and(a,b),n,[x:and(b,a)]comand(b,a,x)):not(and(b,a))
+c@[a1:and(a,b)][i:imp(a,c)]
+th6:=andi(c,b,<ande1(a1)>i,ande2(a1)):and(c,b)
+a1@[i:imp(b,c)]
+th7:=andi(a,c,ande1(a1),<ande2(a1)>i):and(a,c)
+-and
+b@or:=imp(not(a),b):'prop'
+[a1:a]
+ori1:=th2".imp"(not(a),b,weli(a1)):or(a,b)
+b@[b1:b]
+ori2:=[x:not(a)]b1:or(a,b)
++or
+b@[i:imp(not(a),b)]
+th1:=i:or(a,b)
+b@[i:imp(not(b),a)]
+th2:=[x:not]et(b,th3"l.imp"(not(b),a,x,i)):or(a,b)
+-or
+b@[o:or(a,b)][n:not(a)]
+ore2:=<n>o:b
+o@[n:not(b)]
+ore1:=et(th3".imp"(not(a),b,n,o)):a
+o@comor:=[x:not(b)]ore1(x):or(b,a)
++*or
+b@[n:not(a)][m:not(b)]
+th3:=th4"l.imp"(not(a),b,n,m):not(or(a,b))
+b@[n:not(or(a,b))]
+th4:=th5"l.imp"(not(a),b,n):not(a)
+th5:=th6"l.imp"(not(a),b,n):not(b)
+a@th6:=refimp(not(a)):or(a,not(a))
+-or
+c@[o:or(a,b)][i:imp(a,c)][j:imp(b,c)]
+orapp:=th1".imp"(c,i,trimp(not,b,c,o,j)):c
+c@[d:'prop']
++*or
+o@[i:imp(a,c)]
+th7:=trimp(not(c),not,b,[x:not(c)]th3"l.imp"(a,c,x,i),o):or(c,b)
+o@[i:imp(b,c)]
+th8:=trimp(not(a),b,c,o,i):or(a,c)
+d@[o:or(a,b)][i:imp(a,c)][j:imp(b,d)]
+th9:=th7(a,d,c,th8(a,b,d,o,j),i):or(c,d)
+b@[o:or(a,b)]
+th10:=o:imp(not(a),b)
+th11:=comor(o):imp(not(b),a)
+b@[o:or(not(a),b)]
+th12:=trimp(a,wel(a),b,[x:a]weli(x),o):imp(a,b)
+b@[i:imp(a,b)]
+th13:=trimp(wel(a),a,b,[x:wel(a)]et(x),i):or(not(a),b)
+b@[o:or(not(a),not(b))]
+th14:=weli(ec,th12(not(b),o)):not(and)
+b@[n:not(and)]
+th15:=th13(not(b),et(ec,n)):or(not(a),not(b))
+b@[a1:and(not(a),not(b))]
+th16:=th3(ande1(not(a),not(b),a1),ande2(not(a),not(b),a1)):not(or(a,b))
+b@[n:not(or(a,b))]
+th17:=andi(not(a),not(b),th4(n),th5(n)):and(not(a),not(b))
+-or
+b@orec:=and(or(a,b),ec(a,b)):'prop'
+[o:or(a,b)][e:ec(a,b)]
+oreci:=andi(or(a,b),ec(a,b),o,e):orec(a,b)
++orec
+b@[a1:a][n:not(b)]
+th1:=oreci(ori1(a1),eci2(n)):orec(a,b)
+b@[n:not(a)][b1:b]
+th2:=oreci(ori2(b1),eci1(n)):orec(a,b)
+-orec
+b@[o:orec(a,b)]
+orece1:=ande1(or(a,b),ec,o):or(a,b)
+orece2:=ande2(or(a,b),ec,o):ec(a,b)
+comorec:=oreci(b,a,comor(orece1),comec(orece2)):orec(b,a)
++*orec
+o@[a1:a]
+th3:=ece1(orece2,a1):not(b)
+o@[b1:b]
+th4:=ece2(orece2,b1):not(a)
+o@[n:not(a)]
+th5:=ore2(orece1,n):b
+o@[n:not(b)]
+th6:=ore1(orece1,n):a
+-orec
+b@iff:=and(imp(a,b),imp(b,a)):'prop'
+[i:imp(a,b)][j:imp(b,a)]
+iffi:=andi(imp(a,b),imp(b,a),i,j):iff(a,b)
++iff
+b@[a1:a][b1:b]
+th1:=iffi([x:a]b1,[x:b]a1):iff(a,b)
+b@[n:not(a)][m:not(b)]
+th2:=iffi(th2"l.imp"(n),th2"l.imp"(b,a,m)):iff(a,b)
+-iff
+b@[i:iff(a,b)]
+iffe1:=ande1(imp(a,b),imp(b,a),i):imp(a,b)
+iffe2:=ande2(imp(a,b),imp(b,a),i):imp(b,a)
+comiff:=iffi(b,a,iffe2,iffe1):iff(b,a)
++*iff
+i@[a1:a]
+th3:=<a1>iffe1:b
+i@[b1:b]
+th4:=<b1>iffe2:a
+i@[n:not(a)]
+th5:=th3"l.imp"(b,a,n,iffe2):not(b)
+i@[n:not(b)]
+th6:=th3"l.imp"(n,iffe1):not(a)
+b@[a1:a][n:not(b)]
+th7:=th1"l.and"(imp(a,b),imp(b,a),th4"l.imp"(a1,n)):not(iff(a,b))
+b@[n:not(a)][b1:b]
+th8:=th2"l.and"(imp(a,b),imp(b,a),th4"l.imp"(b,a,b1,n)):not(iff(a,b))
+-iff
+a@refiff:=iffi(a,refimp,refimp):iff(a,a)
+b@[i:iff(a,b)]
+symiff:=comiff(i):iff(b,a)
+c@[i:iff(a,b)][j:iff(b,c)]
+triff:=iffi(a,c,trimp(iffe1(i),iffe1(b,c,j)),trimp(c,b,a,iffe2(b,c,j),iffe2(i))):iff(a,c)
++*iff
+b@[i:iff(a,b)]
+th9:=[x:not(a)]th5(i,x):imp(not(a),not(b))
+th10:=[x:not(b)]th6(i,x):imp(not(b),not(a))
+th11:=iffi(not(a),not(b),th9,th10):iff(not(a),not(b))
+b@[i:imp(not(a),not(b))][j:imp(not(b),not(a))]
+th12:=iffi(cp(j),cp(b,a,i)):iff(a,b)
+b@[o:orec(a,b)]
+th13:=iffi(not(b),orece2(o),comor(orece1(o))):iff(a,not(b))
+th14:=th13(b,a,comorec(o)):iff(b,not(a))
+b@[i:iff(a,not(b))]
+th15:=oreci(comor(b,a,iffe2(not(b),i)),iffe1(not(b),i)):orec(a,b)
+b@[i:iff(b,not(a))]
+th16:=comorec(b,a,th15(b,a,i)):orec(a,b)
+c@[i:iff(a,b)][j:imp(a,c)]
+thimp1:=trimp(b,a,c,iffe2(i),j):imp(b,c)
+i@[j:imp(c,a)]
+thimp2:=trimp(c,a,b,j,iffe1(i)):imp(c,b)
+i@[e:ec(a,c)]
+thec1:=th3"l.ec"(c,b,e,iffe2(i)):ec(b,c)
+i@[e:ec(c,a)]
+thec2:=th4"l.ec"(c,a,b,e,iffe2(i)):ec(c,b)
+i@[a1:and(a,c)]
+thand1:=th6"l.and"(c,b,a1,iffe1(i)):and(b,c)
+i@[a1:and(c,a)]
+thand2:=th7"l.and"(c,a,b,a1,iffe1(i)):and(c,b)
+i@[o:or(a,c)]
+thor1:=th7"l.or"(c,b,o,iffe1(i)):or(b,c)
+i@[o:or(c,a)]
+thor2:=th8"l.or"(c,a,b,o,iffe1(i)):or(c,b)
+i@[o:orec(a,c)]
+thorec1:=oreci(b,c,thor1(orece1(a,c,o)),thec1(orece2(a,c,o))):orec(b,c)
+i@[o:orec(c,a)]
+thorec2:=oreci(c,b,thor2(orece1(c,a,o)),thec2(orece2(c,a,o))):orec(c,b)
+-iff
+@[sigma:'type'][p:[x:sigma]'prop']
+%suggestion by van Daalen to remove the first eta-reduction
+%all:=p:'prop' %original line
+all:=[x:sigma]<x>p:'prop'
+%end of suggestion
+[a1:all(sigma,p)][s:sigma]
+alle:=<s>a1:<s>p
++all
+p@[s:sigma][n:not(<s>p)]
+th1:=[x:all(sigma,p)]<<s>x>n:not(all(sigma,p))
+-all
+p@non:=[x:sigma]not(<x>p):[x:sigma]'prop'
+some:=not(non(p)):'prop'
+[s:sigma][sp:<s>p]
+somei:=th1".all"(non(p),s,weli(<s>p,sp)):some(sigma,p)
++some
+p@[n:not(all(sigma,p))][m:non(non(p))][s:sigma]
+t1:=et(<s>p,<s>m):<s>p
+%set etared
+m@t2:=<[x:sigma]t1(x)>n:con
+%reset etared
+n@th1:=[x:non(non(p))]t2(x):some(non(p))
+p@[s:some(non(p))][a1:all(sigma,p)][t:sigma]
+t3:=weli(<t>p,<t>a1):not(not(<t>p))
+a1@t4:=<[x:sigma]t3(x)>s:con
+s@th2:=[x:all(sigma,p)]t4(x):not(all(sigma,p))
+p@[n:not(some(sigma,p))]
+th3:=et(non(p),n):non(p)
+[s:sigma]
+th4:=<s>th3:not(<s>p)
+p@[n:non(p)]
+th5:=weli(non(p),n):not(some(sigma,p))
+-some
+p@[s:some(sigma,p)][x:'prop'][i:[y:sigma]imp(<y>p,x)]
++*some
+i@[n:not(x)][t:sigma]
+t5:=th3"l.imp"(<t>p,x,n,<t>i):not(<t>p)
+n@t6:=mp(some(sigma,p),con,s,th5([y:sigma]t5(y))):con
+-some
+i@someapp:=et(x,[y:not(x)]t6".some"(y)):x
++*some
+p@[q:[x:sigma]'prop'][s:some(sigma,p)][i:[x:sigma]imp(<x>p,<x>q)]
+th6:=someapp(s,some(q),[x:sigma][y:<x>p]somei(q,x,mp(<x>p,<x>q,y,<x>i))):some(q)
+-some
+c@or3:=or(a,or(b,c)):'prop'
+[o:or3(a,b,c)][n:not(a)]
++or3
+th1:=ore2(or(b,c),o,n):or(b,c)
+-or3
+[m:not(b)]
+or3e3:=ore2(b,c,th1".or3",m):c
+o@[n:not(b)]
++*or3
+n@th2:=th2"l.or"(c,a,[x:not(a)]or3e3(x,n)):or(c,a)
+-or3
+n@[m:not(c)]
+or3e1:=ore2(c,a,th2".or3",m):a
+o@[n:not(c)]
++*or3
+n@th3:=th2"l.or"([x:not(b)]or3e1(x,n)):or(a,b)
+-or3
+n@[m:not(a)]
+or3e2:=ore2(th3".or3",m):b
++*or3
+o@th4:=th1"l.or"(b,or(c,a),[x:not(b)]th2(x)):or3(b,c,a)
+th5:=th4(b,c,a,th4):or3(c,a,b)
+-or3
+c@[a1:a]
+or3i1:=ori1(a,or(b,c),a1):or3(a,b,c)
+c@[b1:b]
+or3i2:=ori2(a,or(b,c),ori1(b,c,b1)):or3(a,b,c)
+c@[c1:c]
+or3i3:=ori2(a,or(b,c),ori2(b,c,c1)):or3(a,b,c)
++*or3
+c@[o:or(a,b)]
+th6:=th4"or3"(c,a,b,ori2(c,or(a,b),o)):or3(a,b,c)
+c@[o:or(b,c)]
+th7:=ori2(or(b,c),o):or3(a,b,c)
+c@[o:or(c,a)]
+th8:=th4"or3"(c,a,b,th6(c,a,b,o)):or3(a,b,c)
+-or3
+d@[o:or3(a,b,c)][i:imp(a,d)][j:imp(b,d)][k:imp(c,d)]
+or3app:=orapp(or(b,c),d,o,i,[x:or(b,c)]orapp(b,c,d,x,j,k)):d
+c@and3:=and(a,and(b,c)):'prop'
+[a1:and3(a,b,c)]
+and3e1:=ande1(and(b,c),a1):a
+and3e2:=ande1(b,c,ande2(and(b,c),a1)):b
+and3e3:=ande2(b,c,ande2(and(b,c),a1)):c
+c@[a1:a][b1:b][c1:c]
+and3i:=andi(a,and(b,c),a1,andi(b,c,b1,c1)):and3(a,b,c)
++and3
+c@[a1:and3(a,b,c)]
+th1:=and3i(b,c,a,and3e2(a1),and3e3(a1),and3e1(a1)):and3(b,c,a)
+th2:=th1(b,c,a,th1):and3(c,a,b)
+th3:=andi(and3e1(a1),and3e2(a1)):and(a,b)
+th4:=ande2(and(b,c),a1):and(b,c)
+th5:=th3(c,a,b,th2):and(c,a)
+th6:=and3i(c,b,a,and3e3(a1),and3e2(a1),and3e1(a1)):and3(c,b,a)
+-and3
+c@ec3:=and3(ec,ec(b,c),ec(c,a)):'prop'
+[e:ec3(a,b,c)]
++ec3
+th1:=and3e1(ec,ec(b,c),ec(c,a),e):ec(a,b)
+th2:=and3e2(ec,ec(b,c),ec(c,a),e):ec(b,c)
+th3:=and3e3(ec,ec(b,c),ec(c,a),e):ec(c,a)
+th4:=th1"l.and3"(ec,ec(b,c),ec(c,a),e):ec3(b,c,a)
+th5:=th4(b,c,a,th4):ec3(c,a,b)
+th5a:=and3i(ec(c,b),ec(b,a),ec(a,c),comec(b,c,th2(e)),comec(a,b,th1(e)),comec(c,a,th3(e))):ec3(c,b,a)
+-ec3
+[a1:a]
+ec3e12:=ece1(th1".ec3",a1):not(b)
+ec3e13:=ece2(c,a,th3".ec3",a1):not(c)
+e@[b1:b]
+ec3e23:=ec3e12(b,c,a,th4".ec3",b1):not(c)
+ec3e21:=ec3e13(b,c,a,th4".ec3",b1):not(a)
+e@[c1:c]
+ec3e31:=ec3e12(c,a,b,th5".ec3",c1):not(a)
+ec3e32:=ec3e13(c,a,b,th5".ec3",c1):not(b)
++*ec3
+c@[e:ec(a,b)][f:ec(b,c)][g:ec(c,a)]
+th6:=and3i(ec,ec(b,c),ec(c,a),e,f,g):ec3(a,b,c)
+c@[e:ec3(a,b,c)][o:or(a,b)]
+th7:=orapp(not(c),o,[x:a]ece2(c,a,th3"ec3"(e),x),[x:b]ece1(b,c,th2"ec3"(e),x)):not(c)
+e@[o:or(b,c)]
+th8:=th7(b,c,a,th4"ec3"(e),o):not(a)
+e@[o:or(c,a)]
+th9:=th7(c,a,b,th5"ec3"(e),o):not(b)
+-ec3
+c@[n:not(a)][m:not(b)]
+ec3i1:=th6".ec3"(eci1(n),eci1(b,c,m),eci2(c,a,n)):ec3(a,b,c)
+c@[n:not(b)][m:not(c)]
+ec3i2:=th6".ec3"(eci2(n),eci1(b,c,n),eci1(c,a,m)):ec3(a,b,c)
+c@[n:not(c)][m:not(a)]
+ec3i3:=th6".ec3"(eci1(m),eci2(b,c,n),eci1(c,a,n)):ec3(a,b,c)
++*ec3
+d@[e:'prop'][f:'prop'][o1:or3(a,b,c)][p1:ec3(d,e,f)][i:imp(a,d)][j:imp(b,e)][k:imp(c,f)][d1:d]
+t1:=[x:b]mp(e,con,<x>j,ec3e12(d,e,f,p1,d1)):not(b)
+t2:=[x:c]mp(f,con,<x>k,ec3e13(d,e,f,p1,d1)):not(c)
+th10:=or3e1(o1,t1,t2):a
+k@[e1:e]
+th11:=th10(b,c,a,e,f,d,th4"l.or3"(o1),th4"ec3"(d,e,f,p1),j,k,i,e1):b
+k@[f1:f]
+th12:=th10(c,a,b,f,d,e,th5"l.or3"(o1),th5"ec3"(d,e,f,p1),k,i,j,f1):c
+-ec3
+c@orec3:=and(or3(a,b,c),ec3(a,b,c)):'prop'
+[o:orec3(a,b,c)]
+orec3e1:=ande1(or3(a,b,c),ec3(a,b,c),o):or3(a,b,c)
+orec3e2:=ande2(or3(a,b,c),ec3(a,b,c),o):ec3(a,b,c)
+c@[o:or3(a,b,c)][e:ec3(a,b,c)]
+orec3i:=andi(or3(a,b,c),ec3(a,b,c),o,e):orec3(a,b,c)
++orec3
+c@[o:orec3(a,b,c)]
+th1:=orec3i(b,c,a,th4"l.or3"(orec3e1(o)),th4"l.ec3"(orec3e2(o))):orec3(b,c,a)
+th2:=orec3i(c,a,b,th5"l.or3"(orec3e1(o)),th5"l.ec3"(orec3e2(o))):orec3(c,a,b)
+-orec3
++e
+sigma@[s:sigma][t:sigma]
+is:='prim':'prop'
+s@refis:='prim':is(s,s)
+p@[s:sigma][t:sigma][sp:<s>p][i:is(s,t)]
+isp:='prim':<t>p
+sigma@[s:sigma][t:sigma][i:is(s,t)]
+symis:=isp([x:sigma]is(x,s),s,t,refis(s),i):is(t,s)
+t@[u:sigma][i:is(s,t)][j:is(t,u)]
+tris:=isp([x:sigma]is(x,u),t,s,j,symis(i)):is(s,u)
+u@[i:is(u,s)][j:is(u,t)]
+tris1:=tris(s,u,t,symis(u,s,i),j):is(s,t)
+u@[i:is(s,u)][j:is(t,u)]
+tris2:=tris(s,u,t,i,symis(t,u,j)):is(s,t)
+sp@[i:is(t,s)]
+isp1:=isp(symis(t,s,i)):<t>p
+t@[n:not(is(s,t))]
+symnotis:=th3"l.imp"(is(t,s),is(s,t),n,[x:is(t,s)]symis(t,s,x)):not(is(t,s))
++notis
+u@[n:not(is(s,t))][i:is(s,u)]
+th1:=isp([x:sigma]not(is(x,t)),s,u,n,i):not(is(u,t))
+n@[i:is(u,s)]
+th2:=th1(symis(u,s,i)):not(is(u,t))
+n@[i:is(t,u)]
+th3:=isp([x:sigma]not(is(s,x)),t,u,n,i):not(is(s,u))
+n@[i:is(u,t)]
+th4:=th3(symis(u,t,i)):not(is(s,u))
+u@[v:sigma][n:not(is(s,t))][i:is(s,u)][j:is(t,v)]
+th5:=th3(u,t,v,th1(n,i),j):not(is(u,v))
+-notis
+u@[v:sigma][i:is(s,t)][j:is(t,u)][k:is(u,v)]
+tr3is:=tris(s,u,v,tris(i,j),k):is(s,v)
+v@[w:sigma][i:is(s,t)][j:is(t,u)][k:is(u,v)][l:is(v,w)]
+tr4is:=tris(s,v,w,tr3is(i,j,k),l):is(s,w)
+p@amone:=[x:sigma][y:sigma][u:<x>p][v:<y>p]is(x,y):'prop'
+[a1:amone(sigma,p)][s:sigma][t:sigma][sp:<s>p][tp:<t>p]
+amonee:=<tp><sp><t><s>a1:is(s,t)
+p@one:=and(amone(sigma,p),some(sigma,p)):'prop'
+[a1:amone(sigma,p)][s:some(sigma,p)]
+onei:=andi(amone(sigma,p),some(sigma,p),a1,s):one(sigma,p)
+p@[o1:one(sigma,p)]
+onee1:=ande1(amone(sigma,p),some(sigma,p),o1):amone(sigma,p)
+onee2:=ande2(amone(sigma,p),some(sigma,p),o1):some(sigma,p)
+ind:='prim':sigma
+oneax:='prim':<ind>p
++one
+[s:sigma][sp:<s>p]
+th1:=amonee(onee1,ind,s,oneax,sp):is(ind,s)
+-one
+sigma@[tau:'type'][f:[x:sigma]tau][s:sigma][t:sigma][i:is(s,t)]
+isf:=isp(sigma,[x:sigma]is(tau,<s>f,<x>f),s,t,refis(tau,<s>f),i):is(tau,<s>f,<t>f)
+f@injective:=all([x:sigma]all([y:sigma]imp(is(tau,<x>f,<y>f),is(x,y)))):'prop'
+[i:injective(f)][s:sigma][t:sigma][j:is(tau,<s>f,<t>f)]
+isfe:=<j><t><s>i:is(s,t)
+f@[t0:tau]
+image:=some([x:sigma]is(tau,t0,<x>f)):'prop'
+f@[s:sigma]
+tofs:=<s>f:tau
+imagei:=somei([x:sigma]is(tau,tofs,<x>f),s,refis(tau,tofs)):image(tofs)
++inj
+i@[ta:tau][tb:tau][j:is(tau,ta,tb)][sa:sigma][sb:sigma][ja:is(tau,ta,tofs(sa))][jb:is(tau,tb,tofs(sb))]
+t1:=tr3is(tau,tofs(sa),ta,tb,tofs(sb),symis(tau,ta,tofs(sa),ja),j,jb):is(tau,tofs(sa),tofs(sb))
+th1:=isfe(sa,sb,t1):is(sa,sb)
+i@[t0:tau]
+th2:=[x:sigma][y:sigma][u:is(tau,t0,<x>f)][v:is(tau,t0,<y>f)]th1(t0,t0,refis(tau,t0),x,y,u,v):amone([x:sigma]is(tau,t0,<x>f))
+[j:image(f,t0)]
+th3:=onei([x:sigma]is(tau,t0,<x>f),th2,j):one([x:sigma]is(tau,t0,<x>f))
+-inj
+i@[t0:tau][j:image(f,t0)]
+soft:=ind([x:sigma]is(tau,t0,<x>f),th3".inj"(t0,j)):sigma
+i@inverse:=[x:tau][u:image(f,x)]soft(x,u):[x:tau][u:image(f,x)]sigma
+j@ists1:=oneax([x:sigma]is(tau,t0,<x>f),th3".inj"(t0,j)):is(tau,t0,tofs(soft(t0,j)))
+ists2:=symis(tau,t0,tofs(soft(t0,j)),ists1):is(tau,tofs(soft(t0,j)),t0)
+i@[ta:tau][ja:image(ta)][tb:tau][jb:image(tb)][j:is(tau,ta,tb)]
+isinv:=th1".inj"(ta,tb,j,soft(ta,ja),soft(tb,jb),ists1(ta,ja),ists1(tb,jb)):is(soft(ta,ja),soft(tb,jb))
+jb@[j:is(soft(ta,ja),soft(tb,jb))]
+isinve:=tr3is(tau,ta,tofs(soft(ta,ja)),tofs(soft(tb,jb)),tb,ists1(ta,ja),isf(soft(ta,ja),soft(tb,jb),j),ists2(tb,jb)):is(tau,ta,tb)
+i@[s:sigma]
+isst1:=isfe(s,soft(tofs(s),imagei(s)),ists1(tofs(s),imagei(s))):is(s,soft(tofs(s),imagei(s)))
+isst2:=symis(s,soft(tofs(s),imagei(s)),isst1):is(soft(tofs(s),imagei(s)),s)
+f@surjective:=all(tau,[x:tau]image(x)):'prop'
+bijective:=and(injective,surjective):'prop'
+[b:bijective(f)]
++*inj
+b@t2:=ande1(injective,surjective,b):injective(f)
+t3:=ande2(injective,surjective,b):surjective(f)
+[t:tau]
+so:=soft(t2,t,<t>t3):sigma
+-inj
+b@invf:=[x:tau]so".inj"(x):[x:tau]sigma
+[s:sigma]
+thinvf1:=tris(s,soft(t2".inj",tofs(s),imagei(s)),<<s>f>invf,isst1(t2".inj",s),isinv(t2".inj",tofs(s),imagei(s),tofs(s),<tofs(s)>t3".inj",refis(tau,tofs(s)))):is(s,<<s>f>invf)
+b@[t:tau]
+thinvf2:=ists1(t2".inj",t,<t>t3".inj"):is(tau,t,<<t>invf>f)
+tau@[upsilon:'type'][f:[x:sigma]tau][g:[x:tau]upsilon]
++*inj
+g@[if:injective(sigma,tau,f)][ig:injective(tau,upsilon,g)]
+h:=[x:sigma]<<x>f>g:[x:sigma]upsilon
+[s:sigma][t:sigma][i:is(upsilon,<s>h,<t>h)]
+t4:=isfe(tau,upsilon,g,ig,<s>f,<t>f,i):is(tau,<s>f,<t>f)
+t5:=isfe(f,if,s,t,t4):is(s,t)
+ig@th4:=[x:sigma][y:sigma][v:is(upsilon,<x>h,<y>h)]t5(x,y,v):injective(sigma,upsilon,[x:sigma]<<x>f>g)
+-inj
++surj
+g@[sf:surjective(sigma,tau,f)][sg:surjective(tau,upsilon,g)]
+h:=[x:sigma]<<x>f>g:[x:sigma]upsilon
+[u:upsilon]
+t1:=<u>sg:image(tau,upsilon,g,u)
+[t:tau][i:is(upsilon,u,<t>g)]
+t2:=<t>sf:image(sigma,tau,f,t)
+[s:sigma][j:is(tau,t,<s>f)]
+t3:=tris(upsilon,u,<t>g,<s>h,i,isf(tau,upsilon,g,t,<s>f,j)):is(upsilon,u,<s>h)
+t4:=somei([x:sigma]is(upsilon,u,<x>h),s,t3):image(sigma,upsilon,h,u)
+i@t5:=someapp([x:sigma]is(tau,t,<x>f),t2,image(sigma,upsilon,h,u),[x:sigma][v:is(tau,t,<x>f)]t4(x,v)):image(sigma,upsilon,h,u)
+u@t6:=someapp(tau,[x:tau]is(upsilon,u,<x>g),t1,image(sigma,upsilon,h,u),[x:tau][v:is(upsilon,u,<x>g)]t5(x,v)):image(sigma,upsilon,h,u)
+sg@th1:=[x:upsilon]t6(x):surjective(sigma,upsilon,[x:sigma]<<x>f>g)
+-surj
++bij
+g@[bf:bijective(sigma,tau,f)][bg:bijective(tau,upsilon,g)]
+h:=[x:sigma]<<x>f>g:[x:sigma]upsilon
+t1:=th4"e.inj"(f,g,ande1(injective(f),surjective(f),bf),ande1(injective(tau,upsilon,g),surjective(tau,upsilon,g),bg)):injective(sigma,upsilon,h)
+t2:=th1"e.surj"(f,g,ande2(injective(f),surjective(f),bf),ande2(injective(tau,upsilon,g),surjective(tau,upsilon,g),bg)):surjective(sigma,upsilon,h)
+th1:=andi(injective(sigma,upsilon,h),surjective(sigma,upsilon,h),t1,t2):bijective(sigma,upsilon,[x:sigma]<<x>f>g)
+-bij
+tau@[f:[x:sigma]tau][g:[x:sigma]tau][i:is([x:sigma]tau,f,g)][s:sigma]
+fise:=isp([x:sigma]tau,[y:[x:sigma]tau]is(tau,<s>f,<s>y),f,g,refis(tau,<s>f),i):is(tau,<s>f,<s>g)
+g@[i:[x:sigma]is(tau,<x>f,<x>g)]
+fisi:='prim':is([x:sigma]tau,f,g)
++fis
+g@[i:is([x:sigma]tau,f,g)][s:sigma][t:sigma][j:is(s,t)]
+th1:=tris(tau,<s>f,<t>f,<t>g,isf(f,s,t,j),fise(i,t)):is(tau,<s>f,<t>g)
+-fis
+p@ot:='prim':'type'
+[o1:ot]
+in:='prim':sigma
+inp:='prim':<in>p
+p@otax1:='prim':injective(ot,sigma,[x:ot]in(x))
+[s:sigma][sp:<s>p]
+otax2:='prim':image(ot,sigma,[x:ot]in(x),s)
+o1@[o2:ot][i:is(ot,o1,o2)]
+isini:=isf(ot,sigma,[x:ot]in(x),o1,o2,i):is(in(o1),in(o2))
+o2@[i:is(in(o1),in(o2))]
+isine:=isfe(ot,sigma,[x:ot]in(x),otax1,o1,o2,i):is(ot,o1,o2)
+sp@out:=soft(ot,sigma,[x:ot]in(x),otax1,s,otax2):ot
+[t:sigma][tp:<t>p][i:is(s,t)]
+isouti:=isinv(ot,sigma,[x:ot]in(x),otax1,s,otax2,t,otax2(t,tp),i):is(ot,out(s,sp),out(t,tp))
+tp@[i:is(ot,out(s,sp),out(t,tp))]
+isoute:=isinve(ot,sigma,[x:ot]in(x),otax1,s,otax2,t,otax2(t,tp),i):is(s,t)
+o1@isoutin:=tris(ot,o1,soft(ot,sigma,[x:ot]in(x),otax1,in(o1),imagei(ot,sigma,[x:ot]in(x),o1)),out(in(o1),inp(o1)),isst1(ot,sigma,[x:ot]in(x),otax1,o1),isinv(ot,sigma,[x:ot]in(x),otax1,in(o1),imagei(ot,sigma,[x:ot]in(x),o1),in(o1),otax2(in(o1),inp(o1)),refis(sigma,in(o1)))):is(ot,o1,out(in(o1),inp(o1)))
+sp@isinout:=ists1(ot,sigma,[x:ot]in(x),otax1,s,otax2):is(s,in(out(s,sp)))
+tau@pairtype:='prim':'type'
+[s:sigma][t:tau]
+pair:='prim':pairtype
+tau@[p1:pairtype]
+first:='prim':sigma
+second:='prim':tau
+pairis1:='prim':is(pairtype,pair(first,second),p1)
+pairis2:=symis(pairtype,pair(first,second),p1,pairis1):is(pairtype,p1,pair(first,second))
+t@firstis1:='prim':is(sigma,first(pair),s)
+firstis2:=symis(sigma,first(pair),s,firstis1):is(sigma,s,first(pair))
+secondis1:='prim':is(tau,second(pair),t)
+secondis2:=symis(tau,second(pair),t,secondis1):is(tau,t,second(pair))
+a@[ksi:'type'][x:ksi][y:ksi]
++ite
+[z:ksi]
+prop1:=and(imp(a,is(ksi,z,x)),imp(not(a),is(ksi,z,y))):'prop'
+y@[a1:a][x1:ksi][y1:ksi][px1:prop1(x1)][py1:prop1(y1)]
+t1:=ande1(imp(a,is(ksi,x1,x)),imp(not(a),is(ksi,x1,y)),px1):imp(a,is(ksi,x1,x))
+t2:=mp(a,is(ksi,x1,x),a1,t1):is(ksi,x1,x)
+t3:=t2(y1,x1,py1,px1):is(ksi,y1,x)
+t4:=tris2(ksi,x1,y1,x,t2,t3):is(ksi,x1,y1)
+a1@t5:=[s:ksi][t:ksi][ps:prop1(s)][pt:prop1(t)]t4(s,t,ps,pt):amone(ksi,[t:ksi]prop1(t))
+t6:=[x1:a]refis(ksi,x):imp(a,is(ksi,x,x))
+t7:=th2"l.imp"(not(a),is(ksi,x,y),weli(a,a1)):imp(not(a),is(ksi,x,y))
+t8:=andi(imp(a,is(ksi,x,x)),imp(not(a),is(ksi,x,y)),t6,t7):prop1(x)
+t9:=somei(ksi,[t:ksi]prop1(t),x,t8):some(ksi,[t:ksi]prop1(t))
+t10:=onei(ksi,[t:ksi]prop1(t),t5,t9):one(ksi,[t:ksi]prop1(t))
+y@[n:not(a)][x1:ksi][y1:ksi][px1:prop1(x1)][py1:prop1(y1)]
+t11:=ande2(imp(a,is(ksi,x1,x)),imp(not(a),is(ksi,x1,y)),px1):imp(not(a),is(ksi,x1,y))
+t12:=mp(not(a),is(ksi,x1,y),n,t11):is(ksi,x1,y)
+t13:=t12(y1,x1,py1,px1):is(ksi,y1,y)
+t14:=tris2(ksi,x1,y1,y,t12,t13):is(ksi,x1,y1)
+n@t15:=[s:ksi][t:ksi][ps:prop1(s)][pt:prop1(t)]t14(s,t,ps,pt):amone(ksi,[t:ksi]prop1(t))
+t16:=[x1:not(a)]refis(ksi,y):imp(not(a),is(ksi,y,y))
+t17:=th2"l.imp"(a,is(ksi,y,x),n):imp(a,is(ksi,y,x))
+t18:=andi(imp(a,is(ksi,y,x)),imp(not(a),is(ksi,y,y)),t17,t16):prop1(y)
+t19:=somei(ksi,[t:ksi]prop1(t),y,t18):some(ksi,[t:ksi]prop1(t))
+t20:=onei(ksi,[t:ksi]prop1(t),t15,t19):one(ksi,[t:ksi]prop1(t))
+y@t21:=th1"l.imp"(a,one(ksi,[t:ksi]prop1(t)),[t:a]t10(t),[t:not(a)]t20(t)):one(ksi,[t:ksi]prop1(t))
+-ite
+ite:=ind(ksi,[t:ksi]prop1".ite"(t),t21".ite"):ksi
++*ite
+y@t22:=oneax(ksi,[t:ksi]prop1(t),t21):prop1(ite)
+t23:=ande1(imp(a,is(ksi,ite,x)),imp(not(a),is(ksi,ite,y)),t22):imp(a,is(ksi,ite,x))
+t24:=ande2(imp(a,is(ksi,ite,x)),imp(not(a),is(ksi,ite,y)),t22):imp(not(a),is(ksi,ite,y))
+-ite
+y@[a1:a]
+itet:=mp(a,is(ksi,ite,x),a1,t23".ite"):is(ksi,ite,x)
+y@[n:not(a)]
+itef:=mp(not(a),is(ksi,ite,y),n,t24".ite"):is(ksi,ite,y)
+sigma@[s0:sigma][t0:sigma]
++wissel
+[s:sigma]
+wa:=ite(is(s,s0),sigma,t0,s):sigma
+[i:is(s,s0)]
+t1:=itet(is(s,s0),sigma,t0,s,i):is(wa,t0)
+s@[n:not(is(s,s0))]
+t2:=itef(is(s,s0),sigma,t0,s,n):is(wa,s)
+s@wb:=ite(is(s,t0),sigma,s0,wa):sigma
+[i:is(s,t0)]
+t3:=itet(is(s,t0),sigma,s0,wa,i):is(wb,s0)
+s@[n:not(is(s,t0))]
+t4:=itef(is(s,t0),sigma,s0,wa,n):is(wb,wa)
+s@[i:is(s,s0)][j:is(s0,t0)]
+t5:=tris(wb,s0,t0,t3(tris(s,s0,t0,i,j)),j):is(wb,t0)
+i@[n:not(is(s0,t0))]
+t6:=tris(wb,wa,t0,t4(th2"e.notis"(s0,t0,s,n,i)),t1(i)):is(wb,t0)
+i@t7:=th1"l.imp"(is(s0,t0),is(wb,t0),[t:is(s0,t0)]t5(t),[t:not(is(s0,t0))]t6(t)):is(wb,t0)
+s@[n:not(is(s,s0))][o:not(is(s,t0))]
+t8:=tris(wb,wa,s,t4(o),t2(n)):is(wb,s)
+-wissel
+wissel:=[x:sigma]wb".wissel"(x):[x:sigma]sigma
+[s:sigma][i:is(s,s0)]
+iswissel1:=t7".wissel"(s,i):is(<s>wissel,t0)
+s@[i:is(s,t0)]
+iswissel2:=t3".wissel"(s,i):is(<s>wissel,s0)
+s@[n:not(is(s,s0))][o:not(is(s,t0))]
+iswissel3:=t8".wissel"(s,n,o):is(<s>wissel,s)
++*wissel
+s@[t:sigma][i:is(wb(s),wb(t))][n:not(is(s,t))][j:is(s,s0)]
+t9:=symnotis(s0,t,th1"e.notis"(s,t,s0,n,j)):not(is(t,s0))
+[k:is(s0,t0)]
+t10:=th3"e.notis"(t,s0,t0,t9,k):not(is(t,t0))
+t11:=tris(wb(s),wb(t),t,i,t8(t,t9,t10)):is(wb(s),t)
+t12:=<tris1(t,t0,wb(s),t11,t7(j))>t10:con
+j@t13:=[v:is(s0,t0)]t12(v):not(is(s0,t0))
+[k:is(t,t0)]
+t14:=tris(wb(s),wb(t),s0,i,t3(t,k)):is(wb(s),s0)
+t15:=t12(tris1(s0,t0,wb(s),t14,t7(j))):con
+j@t16:=[v:is(t,t0)]t15(v):not(is(t,t0))
+t17:=tris(wb(s),wb(t),t,i,t8(t,t9,t16)):is(wb(s),t)
+t18:=t15(tris1(t,t0,wb(s),t17,t7(j))):con
+n@t19:=[v:is(s,s0)]t18(v):not(is(s,s0))
+t20:=t19(t,s,symis(wb(s),wb(t),i),symnotis(s,t,n)):not(is(t,s0))
+[j:is(s,t0)]
+t21:=symnotis(t0,t,th1"e.notis"(s,t,t0,n,j)):not(is(t,t0))
+t22:=tris(wb(s),wb(t),t,i,t8(t,t20,t21)):is(wb(s),t)
+t23:=<tris1(t,s0,wb(s),t22,t3(j))>t20:con
+n@t24:=[v:is(s,t0)]t23(v):not(is(s,t0))
+t25:=t24(t,s,symis(wb(s),wb(t),i),symnotis(s,t,n)):not(is(t,t0))
+t26:=tris(wb(s),wb(t),t,i,t8(t,t20,t25)):is(wb(s),t)
+t27:=<tris1(s,t,wb(s),t8(t19,t24),t26)>n:con
+i@t28:=et(is(s,t),[v:not(is(s,t))]t27(v)):is(s,t)
+t0@th1:=[x:sigma][y:sigma][v:is(wb(x),wb(y))]t28(x,y,v):injective(sigma,sigma,wissel)
+s@[i:is(s,s0)]
+t29:=tris2(s,wb(t0),s0,i,t3(t0,refis(t0))):is(s,wb(t0))
+t30:=somei(sigma,[x:sigma]is(s,wb(x)),t0,t29):image(sigma,sigma,wissel,s)
+s@[i:is(s,t0)]
+t31:=tris2(s,wb(s0),t0,i,t7(s0,refis(s0))):is(s,wb(s0))
+t32:=somei(sigma,[x:sigma]is(s,wb(x)),s0,t31):image(sigma,sigma,wissel,s)
+s@[n:not(is(s,s0))][o:not(is(s,t0))]
+t33:=symis(wb(s),s,t8(n,o)):is(s,wb(s))
+t34:=somei(sigma,[x:sigma]is(s,wb(x)),s,t33):image(sigma,sigma,wissel,s)
+n@t35:=th1"l.imp"(is(s,t0),image(sigma,sigma,wissel,s),[v:is(s,t0)]t32(v),[v:not(is(s,t0))]t34(v)):image(sigma,sigma,wissel,s)
+s@t36:=th1"l.imp"(is(s,s0),image(sigma,sigma,wissel,s),[v:is(s,s0)]t30(v),[v:not(is(s,s0))]t35(v)):image(sigma,sigma,wissel,s)
+t0@th2:=[x:sigma]t36(x):surjective(sigma,sigma,wissel)
+th3:=andi(injective(sigma,sigma,wissel),surjective(sigma,sigma,wissel),th1,th2):bijective(sigma,sigma,wissel)
+-wissel
+tau@[f:[x:sigma]tau][s0:sigma][t0:sigma]
+changef:=[x:sigma]<<x>wissel(s0,t0)>f:[x:sigma]tau
+[s:sigma][i:is(s,s0)]
+changef1:=isf(sigma,tau,f,<s>wissel(s0,t0),t0,iswissel1(s0,t0,s,i)):is(tau,<s>changef,<t0>f)
+s@[i:is(s,t0)]
+changef2:=isf(sigma,tau,f,<s>wissel(s0,t0),s0,iswissel2(s0,t0,s,i)):is(tau,<s>changef,<s0>f)
+s@[n:not(is(s,s0))][o:not(is(s,t0))]
+changef3:=isf(sigma,tau,f,<s>wissel(s0,t0),s,iswissel3(s0,t0,s,n,o)):is(tau,<s>changef,<s>f)
++*wissel
+t0@[i:injective(f)]
+th4:=th4"e.inj"(sigma,sigma,tau,wissel(s0,t0),f,th1(s0,t0),i):injective(changef)
+t0@[s:surjective(f)]
+th5:=th1"e.surj"(sigma,sigma,tau,wissel(s0,t0),f,th2(s0,t0),s):surjective(changef)
+t0@[b:bijective(f)]
+th6:=th1"e.bij"(sigma,sigma,tau,wissel(s0,t0),f,th3(s0,t0),b):bijective(changef)
+-wissel
+-e
++r
+a@[b:[x:a]'prop']
+%suggestion by van Daalen to remove the second eta-reduction
+%imp:=b:'prop' %original line
+imp:=[x:a]<x>b:'prop'
+%end of suggestion
+[a1:a][i:imp(a,b)]
+mp:=<a1>i:<a1>b
++imp
+b@[n:not(a)]
+%set etared
+th2:=[x:a]cone(<x>b,mp"l"(a,con,x,n)):imp(a,b)
+%reset etared
+-imp
+b@ec:=[x:a]not(<x>b):'prop'
+[n:not(a)]
+eci1:=[x:a]cone(not(<x>b),mp"l"(a,con,x,n)):ec(a,b)
+b@[a1:and(a,b)]
+ande2:=<ande1(a,b,a1)>ande2"l"(a,b,a1):<ande1(a,b,a1)>b
+a@[ksi:'type']
++ite
+[x1:ksi][y1:ksi]
+is:=is"l.e"(ksi,x1,y1):'prop'
+-ite
+[x:[t:a]ksi][y:[t:not(a)]ksi][i:[t:a][u:a]is".ite"(<t>x,<u>x)][j:[t:not(a)][u:not(a)]is".ite"(<t>y,<u>y)]
++*ite
+j@[z:ksi]
+prop1:=and(imp(a,[t:a]is(z,<t>x)),imp(not(a),[t:not(a)]is(z,<t>y))):'prop'
+j@[a1:a][x1:ksi][y1:ksi][px1:prop1(x1)][py1:prop1(y1)]
+t1:=ande1"l"(imp(a,[t:a]is(x1,<t>x)),imp(not(a),[t:not(a)]is(x1,<t>y)),px1):imp(a,[t:a]is(x1,<t>x))
+t2:=mp(a,[t:a]is(x1,<t>x),a1,t1):is(x1,<a1>x)
+t3:=t2(y1,x1,py1,px1):is(y1,<a1>x)
+t4:=tris2"l.e"(ksi,x1,y1,<a1>x,t2,t3):is(x1,y1)
+a1@t5:=[s:ksi][t:ksi][ps:prop1(s)][pt:prop1(t)]t4(s,t,ps,pt):amone"l.e"(ksi,[t:ksi]prop1(t))
+t6:=<a1>i:imp(a,[t:a]is(<a1>x,<t>x))
+t7:=th2"r.imp"(not(a),[t:not(a)]is(<a1>x,<t>y),weli(a,a1)):imp(not(a),[t:not(a)]is(<a1>x,<t>y))
+t8:=andi(imp(a,[t:a]is(<a1>x,<t>x)),imp(not(a),[t:not(a)]is(<a1>x,<t>y)),t6,t7):prop1(<a1>x)
+t9:=somei(ksi,[t:ksi]prop1(t),<a1>x,t8):some(ksi,[t:ksi]prop1(t))
+t10:=onei"l.e"(ksi,[t:ksi]prop1(t),t5,t9):one"l.e"(ksi,[t:ksi]prop1(t))
+j@[n:not(a)][x1:ksi][y1:ksi][px1:prop1(x1)][py1:prop1(y1)]
+t11:=ande2"l"(imp(a,[t:a]is(x1,<t>x)),imp(not(a),[t:not(a)]is(x1,<t>y)),px1):imp(not(a),[t:not(a)]is(x1,<t>y))
+t12:=mp(not(a),[t:not(a)]is(x1,<t>y),n,t11):is(x1,<n>y)
+t13:=t12(y1,x1,py1,px1):is(y1,<n>y)
+t14:=tris2"l.e"(ksi,x1,y1,<n>y,t12,t13):is(x1,y1)
+n@t15:=[s:ksi][t:ksi][ps:prop1(s)][pt:prop1(t)]t14(s,t,ps,pt):amone"l.e"(ksi,[t:ksi]prop1(t))
+t16:=<n>j:imp(not(a),[t:not(a)]is(<n>y,<t>y))
+t17:=th2"r.imp"(a,[t:a]is(<n>y,<t>x),n):imp(a,[t:a]is(<n>y,<t>x))
+t18:=andi"l"(imp(a,[t:a]is(<n>y,<t>x)),imp(not(a),[t:not(a)]is(<n>y,<t>y)),t17,t16):prop1(<n>y)
+t19:=somei(ksi,[t:ksi]prop1(t),<n>y,t18):some(ksi,[t:ksi]prop1(t))
+t20:=onei"l.e"(ksi,[t:ksi]prop1(t),t15,t19):one"l.e"(ksi,[t:ksi]prop1(t))
+j@t21:=th1"l.imp"(a,one"l.e"(ksi,[t:ksi]prop1(t)),[t:a]t10(t),[t:not(a)]t20(t)):one"l.e"(ksi,[t:ksi]prop1(t))
+-ite
+j@ite:=ind"l.e"(ksi,[t:ksi]prop1".ite"(t),t21".ite"):ksi
++*ite
+j@t22:=oneax"l.e"(ksi,[t:ksi]prop1(t),t21):prop1(ite)
+t23:=ande1"l"(imp(a,[t:a]is(ite,<t>x)),imp(not(a),[t:not(a)]is(ite,<t>y)),t22):imp(a,[t:a]is(ite,<t>x))
+t24:=ande2"l"(imp(a,[t:a]is(ite,<t>x)),imp(not(a),[t:not(a)]is(ite,<t>y)),t22):imp(not(a),[t:not(a)]is(ite,<t>y))
+-ite
+j@[a1:a]
+itet:=mp(a,[t:a]is".ite"(ite,<t>x),a1,t23".ite"):is".ite"(ksi,ite,<a1>x)
+j@[n:not(a)]
+itef:=mp(not(a),[t:not(a)]is".ite"(ite,<t>y),n,t24".ite"):is".ite"(ksi,ite,<n>y)
+-r
++*e
++st
+sigma@set:='prim':'type'
+[s:sigma][s0:set]
+esti:='prim':'prop'
+p@setof:='prim':set
+[s:sigma][sp:<s>p]
+estii:='prim':esti(s,setof(p))
+s@[e:esti(s,setof(p))]
+estie:='prim':<s>p
+sigma@[s0:set]
+empty:=non([x:sigma]esti(x,s0)):'prop'
+nonempty:=some([x:sigma]esti(x,s0)):'prop'
+[n:[x:sigma]not(esti(x,s0))]
+emptyi:=n:empty(s0)
+s0@[e:empty(s0)][s:sigma]
+emptye:=<s>e:not(esti(s,s0))
+s0@[s:sigma][ses0:esti(s,s0)]
+nonemptyi:=somei([x:sigma]esti(x,s0),s,ses0):nonempty(s0)
+s0@[n:nonempty(s0)][x:'prop'][x1:[y:sigma][z:esti(y,s0)]x]
+nonemptyapp:=someapp([y:sigma]esti(y,s0),n,x,x1):x
+s0@[t0:set]
+incl:=all([x:sigma]imp(esti(x,s0),esti(x,t0))):'prop'
+[e:[x:sigma][y:esti(x,s0)]esti(x,t0)]
+incli:=e:incl(s0,t0)
+t0@[i:incl(s0,t0)][s:sigma][ses0:esti(s,s0)]
+incle:=<ses0><s>i:esti(s,t0)
+s0@refincl:=[x:sigma][y:esti(x,s0)]y:incl(s0,s0)
+t0@disj:=all([x:sigma]ec(esti(x,s0),esti(x,t0))):'prop'
+[n:[x:sigma][y:esti(x,s0)]not(esti(x,t0))]
+disji1:=n:disj(s0,t0)
+t0@[n:[x:sigma][y:esti(x,t0)]not(esti(x,s0))]
+disji2:=[x:sigma]th2"l.ec"(esti(x,s0),esti(x,t0),<x>n):disj(s0,t0)
+t0@[d:disj(s0,t0)][s:sigma][ses0:esti(s,s0)]
+disje1:=ece1(esti(s,s0),esti(s,t0),<s>d,ses0):not(esti(s,t0))
+s@[set0:esti(s,t0)]
+disje2:=ece2(esti(s,s0),esti(s,t0),<s>d,set0):not(esti(s,s0))
+t0@[d:disj(s0,t0)]
+symdisj:=[x:sigma][y:esti(x,t0)]disje2(d,x,y):disj(t0,s0)
++disj
+t0@[s:sigma][ses0:esti(s,s0)][set0:esti(s,t0)]
+th1:=th1"l.all"([x:sigma]ec(esti(x,s0),esti(x,t0)),s,th4"l.imp"(esti(s,s0),not(esti(s,t0)),ses0,weli(esti(s,t0),set0))):not(disj(s0,t0))
+th2:=th1(t0,s0,s,set0,ses0):not(disj(t0,s0))
+-disj
+t0@[i:is(set,s0,t0)][s:sigma][ses0:esti(s,s0)]
+issete1:=isp(set,[x:set]esti(s,x),s0,t0,ses0,i):esti(s,t0)
+s@[set0:esti(s,t0)]
+issete2:=isp1(set,[x:set]esti(s,x),t0,s0,set0,i):esti(s,s0)
++isset
+i@th1:=[x:sigma][y:esti(x,s0)]issete1(x,y):incl(s0,t0)
+th2:=[x:sigma][y:esti(x,t0)]issete2(x,y):incl(t0,s0)
+-isset
+t0@[i:incl(s0,t0)][j:incl(t0,s0)]
+isseti:='prim':is(set,s0,t0)
++*isset
+t0@[s:sigma][ses0:esti(s,s0)][n:not(esti(s,t0))]
+th3:=th3"l.imp"(is(set,s0,t0),esti(s,t0),n,[t:is(set,s0,t0)]issete1(t,s,ses0)):not(is(set,s0,t0))
+th4:=symnotis(set,s0,t0,th3):not(is(set,t0,s0))
+s@nissetprop:=and(esti(s,s0),not(esti(s,t0))):'prop'
+[n:not(nissetprop(s0,t0,s))][e:esti(s,s0)]
+t1:=et(esti(s,t0),th3"l.and"(esti(s,s0),not(esti(s,t0)),n,e)):esti(s,t0)
+t0@[n:not(is(set,s0,t0))][m:not(some([x:sigma]nissetprop(s0,t0,x)))][l:non([x:sigma]nissetprop(t0,s0,x))][s:sigma]
+t2:=th4"l.some"([x:sigma]nissetprop(s0,t0,x),m,s):not(nissetprop(s0,t0,s))
+t3:=<s>l:not(nissetprop(t0,s0,s))
+l@t4:=isseti(s0,t0,[x:sigma][y:esti(x,s0)]t1(s0,t0,x,t2(x),y),[x:sigma][y:esti(x,t0)]t1(t0,s0,x,t3(x),y)):is(set,s0,t0)
+m@t5:=th3"l.imp"(non([x:sigma]nissetprop(t0,s0,x)),is(set,s0,t0),n,[y:non([x:sigma]nissetprop(t0,s0,x))]t4(y)):some([x:sigma]nissetprop(t0,s0,x))
+n@th5:=th1"l.or"(some([x:sigma]nissetprop(s0,t0,x)),some([x:sigma]nissetprop(t0,s0,x)),[y:not(some([x:sigma]nissetprop(s0,t0,x)))]t5(y)):or(some([x:sigma]nissetprop(s0,t0,x)),some([x:sigma]nissetprop(t0,s0,x)))
+-isset
+sigma@[alpha:'type'][sa:[x:alpha]set]
+unmore:=setof([x:sigma]some(alpha,[y:alpha]esti(x,<y>sa))):set
+[s:sigma][a:alpha][seasa:esti(s,<a>sa)]
+eunmore1:=estii([x:sigma]some(alpha,[y:alpha]esti(x,<y>sa)),s,somei(alpha,[y:alpha]esti(s,<y>sa),a,seasa)):esti(s,unmore(sa))
+s@[seun:esti(s,unmore(sa))][x:'prop'][x1:[y:alpha][z:esti(s,<y>sa)]x]
+unmoreapp:=someapp(alpha,[y:alpha]esti(s,<y>sa),estie([z:sigma]some(alpha,[y:alpha]esti(z,<y>sa)),s,seun),x,x1):x
++eq
+sigma@[r:[x:sigma][y:sigma]'prop'][refr1:[x:sigma]<x><x>r][symr1:[x:sigma][y:sigma][t:<y><x>r]<x><y>r][trr1:[x:sigma][y:sigma][z:sigma][t:<y><x>r][u:<z><y>r]<z><x>r][s:sigma]
+refr:=<s>refr1:<s><s>r
+[t:sigma][tsr:<t><s>r]
+symr:=<tsr><t><s>symr1:<s><t>r
+t@[u:sigma][tsr:<t><s>r][utr:<u><t>r]
+trr:=<utr><tsr><u><t><s>trr1:<u><s>r
+u@[sur:<s><u>r][tur:<t><u>r]
+tr1r:=trr(s,u,t,symr(u,s,sur),tur):<t><s>r
+u@[usr:<u><s>r][utr:<u><t>r]
+tr2r:=trr(s,u,t,usr,symr(t,u,utr)):<t><s>r
+s@ecelt:=setof(<s>r):set
++1
+th1:=estii(<s>r,s,refr):esti(s,ecelt(s))
+t@[tsr:<t><s>r]
+th2:=estii(<s>r,t,tsr):esti(t,ecelt(s))
+t@[e:esti(t,ecelt(s))]
+th3:=estie(<s>r,t,e):<t><s>r
+tsr@[u:sigma][e:esti(u,ecelt(s))]
+t1:=th2(t,u,tr1r(t,u,s,tsr,th3(u,e))):esti(u,ecelt(t))
+tsr@th4:=isseti(ecelt(s),ecelt(t),[x:sigma][y:esti(x,ecelt(s))]t1(x,y),[x:sigma][y:esti(x,ecelt(t))]t1(t,s,symr(tsr),x,y)):is(set,ecelt(s),ecelt(t))
+t@[n:not(<t><s>r)][u:sigma][e:esti(u,ecelt(s))]
+t2:=th3"l.imp"(esti(u,ecelt(t)),<t><s>r,n,[x:esti(u,ecelt(t))]tr2r(s,t,u,th3(u,e),th3(t,u,x))):not(esti(u,ecelt(t)))
+n@th5:=[x:sigma][y:esti(x,ecelt(s))]t2(x,y):disj(ecelt(s),ecelt(t))
+s@th6:=nonemptyi(ecelt(s),s,th1):nonempty(ecelt(s))
+-1
+trr1@[s0:set][s:sigma]
+ecp:=is(set,s0,ecelt(s)):'prop'
+s0@anec:=some([x:sigma]ecp(x)):'prop'
++2
+trr1@[s:sigma]
+th1:=somei([x:sigma]ecp(ecelt(s),x),s,refis(set,ecelt(s))):anec(ecelt(s))
+-2
+[ecs0:anec(s0)]
++*2
+ecs0@[s:sigma][ses0:esti(s,s0)][t:sigma][e:ecp(s0,t)]
+t1:=issete1(s0,ecelt(t),e,s,ses0):esti(s,ecelt(t))
+t2:=th4"eq.1"(t,s,th3"eq.1"(t,s,t1)):is(set,ecelt(t),ecelt(s))
+t3:=tris(set,s0,ecelt(t),ecelt(s),e,t2):is(set,s0,ecelt(s))
+ses0@th2:=someapp([x:sigma]ecp(x),ecs0,is(set,s0,ecelt(s)),[x:sigma][y:ecp(x)]t3(x,y)):is(set,s0,ecelt(s))
+[t:sigma][tes0:esti(t,s0)]
+th3:=th3"eq.1"(s,t,issete1(s0,ecelt(s),th2,t,tes0)):<t><s>r
+t@[tsr:<t><s>r]
+th4:=issete2(s0,ecelt(s),th2,t,th2"eq.1"(s,t,tsr)):esti(t,s0)
+ecs0@[s:sigma][e:ecp(s0,s)]
+t4:=isp(set,[x:set]nonempty(x),ecelt(s),s0,th6"eq.1"(s),symis(set,s0,ecelt(s),e)):nonempty(s0)
+ecs0@th5:=someapp([x:sigma]ecp(x),ecs0,nonempty(s0),[x:sigma][y:ecp(x)]t4(x,y)):nonempty(s0)
+-2
++3
+ecs0@[t0:set][ect0:anec(t0)][s:sigma][ses0:esti(s,s0)][t:sigma][tet0:esti(t,t0)][tsr:<t><s>r]
+th1:=tr3is(set,s0,ecelt(s),ecelt(t),t0,th2"eq.2"(s0,ecs0,s,ses0),th4"eq.1"(s,t,tsr),symis(set,t0,ecelt(t),th2"eq.2"(t0,ect0,t,tet0))):is(set,s0,t0)
+tet0@[n:not(<t><s>r)]
+t1:=isp1(set,[x:set]disj(x,ecelt(t)),ecelt(s),s0,th5"eq.1"(s,t,n),th2"eq.2"(s0,ecs0,s,ses0)):disj(s0,ecelt(t))
+th2:=isp1(set,[x:set]disj(s0,x),ecelt(t),t0,t1,th2"eq.2"(t0,ect0,t,tet0)):disj(s0,t0)
+t0@[i:is(set,s0,t0)][s:sigma][ses0:esti(s,s0)]
+t2:=issete1(s0,t0,i,s,ses0):esti(s,t0)
+t3:=th1"st.disj"(s0,t0,s,ses0,t2):not(disj(s0,t0))
+i@th3:=nonemptyapp(s0,th5"eq.2"(s0,ecs0),not(disj(s0,t0)),[x:sigma][y:esti(x,s0)]t3(x,y)):not(disj(s0,t0))
+-3
+trr1@ect:=ot(set,[x:set]anec(x)):'type'
+ecs0@ectset:=out(set,[x:set]anec(x),s0,ecs0):ect
+trr1@[s:sigma]
+ectelt:=ectset(ecelt(s),th1".2"(s)):ect
+trr1@[e:ect]
+ecect:=in(set,[x:set]anec(x),e):set
++4
+th1:=inp(set,[x:set]anec(x),e):anec(ecect(e))
+th2:=th5"eq.2"(ecect(e),th1):nonempty(ecect(e))
+[x:'prop'][x1:[y:sigma][z:esti(y,ecect(e))]x]
+th3:=nonemptyapp(ecect(e),th2,x,x1):x
+s@th4:=isinout(set,[x:set]anec(x),ecelt(s),th1"eq.2"(s)):is(set,ecelt(s),ecect(ectelt(s)))
+th5:=issete1(ecelt(s),ecect(ectelt(s)),th4,s,th1"eq.1"(s)):esti(s,ecect(ectelt(s)))
+th6:=eunmore1(ect,[x:ect]ecect(x),s,ectelt(s),th5):esti(s,unmore(ect,[x:ect]ecect(x)))
+e@[s:sigma][see:esti(s,ecect(e))][t:sigma][tee:esti(t,ecect(e))]
+th7:=th3"eq.2"(ecect(e),th1,s,see,t,tee):<t><s>r
+t@[tsr:<t><s>r]
+th8:=th4"eq.2"(ecect(e),th1,s,see,t,tsr):esti(t,ecect(e))
+-4
++5
+[f:ect][i:is(ect,e,f)]
+th1:=isini(set,[x:set]anec(x),e,f,i):is(set,ecect(e),ecect(f))
+f@[i:is(set,ecect(e),ecect(f))]
+th2:=isine(set,[x:set]anec(x),e,f,i):is(ect,e,f)
+f@[s:sigma][see:esti(s,ecect(e))][t:sigma][tef:esti(t,ecect(f))][tsr:<t><s>r]
+th3:=th2(th1"eq.3"(ecect(e),th1"eq.4"(e),ecect(f),th1"eq.4"(f),s,see,t,tef,tsr)):is(ect,e,f)
+see@[i:is(ect,e,f)]
+th4:=issete1(ecect(e),ecect(f),th1(i),s,see):esti(s,ecect(f))
+tef@[i:is(ect,e,f)]
+th5:=th3"eq.2"(ecect(f),th1"eq.4"(f),s,th4(i),t,tef):<t><s>r
+trr1@[s:sigma][t:sigma][tsr:<t><s>r]
+th6:=isouti(set,[x:set]anec(x),ecelt(s),th1"eq.2"(s),ecelt(t),th1"eq.2"(t),th4"eq.1"(s,t,tsr)):is(ect,ectelt(s),ectelt(t))
+-5
+trr1@[alpha:'type'][fu:[x:sigma]alpha]
+fixfu:=[x:sigma][y:sigma][z:<y><x>r]is(alpha,<x>fu,<y>fu):'prop'
++10
+[ff:fixfu][e:ect][a1:alpha][s:sigma]
+prop1:=and(esti(s,ecect(e)),is(alpha,<s>fu,a1)):'prop'
+a1@prop2:=some([x:sigma]prop1(x)):'prop'
+e@[s:sigma][see:esti(s,ecect(e))]
+t1:=andi(esti(s,ecect(e)),is(alpha,<s>fu,<s>fu),see,refis(alpha,<s>fu)):prop1(<s>fu,s)
+t2:=somei([x:sigma]prop1(<s>fu,x),s,t1):prop2(<s>fu)
+t3:=somei(alpha,[x:alpha]prop2(x),<s>fu,t2):some(alpha,[x:alpha]prop2(x))
+e@t4:=th3"eq.4"(e,some(alpha,[x:alpha]prop2(x)),[x:sigma][y:esti(x,ecect(e))]t3(x,y)):some(alpha,[x:alpha]prop2(x))
+a1@[b1:alpha][pa1:prop2(a1)][pb1:prop2(b1)][s:sigma][pa1s:prop1(a1,s)][t:sigma][pb1t:prop1(b1,t)]
+t5:=ande1(esti(s,ecect(e)),is(alpha,<s>fu,a1),pa1s):esti(s,ecect(e))
+t6:=ande1(esti(t,ecect(e)),is(alpha,<t>fu,b1),pb1t):esti(t,ecect(e))
+t7:=th7"eq.4"(e,s,t5,t,t6):<t><s>r
+t8:=ande2(esti(s,ecect(e)),is(alpha,<s>fu,a1),pa1s):is(alpha,<s>fu,a1)
+t9:=ande2(esti(t,ecect(e)),is(alpha,<t>fu,b1),pb1t):is(alpha,<t>fu,b1)
+t10:=tr3is(alpha,a1,<s>fu,<t>fu,b1,symis(alpha,<s>fu,a1,t8),<t7><t><s>ff,t9):is(alpha,a1,b1)
+pa1s@t11:=someapp([x:sigma]prop1(b1,x),pb1,is(alpha,a1,b1),[x:sigma][y:prop1(b1,x)]t10(x,y)):is(alpha,a1,b1)
+pb1@t12:=someapp([x:sigma]prop1(a1,x),pa1,is(alpha,a1,b1),[x:sigma][y:prop1(a1,x)]t11(x,y)):is(alpha,a1,b1)
+e@t13:=[x:alpha][y:alpha][u:prop2(x)][v:prop2(y)]t12(x,y,u,v):amone(alpha,[x:alpha]prop2(x))
+t14:=onei(alpha,[x:alpha]prop2(x),t13,t4):one(alpha,[x:alpha]prop2(x))
+-10
+e".10"@indeq:=ind(alpha,[x:alpha]prop2".10"(x),t14".10"):alpha
++*10
+e@th1:=oneax(alpha,[x:alpha]prop2(x),t14):some([x:sigma]and(esti(x,ecect(e)),is(alpha,<x>fu,indeq)))
+[s:sigma][see:esti(s,ecect(e))]
+th2:=t12(<s>fu,indeq,t2(s,see),th1):is(alpha,<s>fu,indeq)
+ff@[s:sigma]
+th3:=th2(ectelt(s),s,th5"eq.4"(s)):is(alpha,<s>fu,indeq(ectelt(s)))
+-10
+alpha@[fu2:[x:sigma][y:sigma]alpha]
+fixfu2:=[x:sigma][y:sigma][z:sigma][u:sigma][v:<y><x>r][w:<u><z>r]is(alpha,<z><x>fu2,<u><y>fu2):'prop'
++11
+[ff2:fixfu2][s:sigma][t:sigma][tsr:<t><s>r][u:sigma]
+t1:=<refr(u)><tsr><u><u><t><s>ff2:is(alpha,<u><s>fu2,<u><t>fu2)
+tsr@t2:=fisi(sigma,alpha,<s>fu2,<t>fu2,[x:sigma]t1(x)):is([x:sigma]alpha,<s>fu2,<t>fu2)
+ff2@[e:ect]
+i:=indeq([x:sigma]alpha,fu2,[x:sigma][y:sigma][z:<y><x>r]t2(x,y,z),e):[x:sigma]alpha
+[s:sigma][t:sigma][tsr:<t><s>r][u:sigma][uee:esti(u,ecect(e))]
+t3:=th2"eq.10"([x:sigma]alpha,fu2,[x:sigma][y:sigma][z:<y><x>r]t2(x,y,z),e,u,uee):is([x:sigma]alpha,<u>fu2,i)
+t4:=fise(alpha,<u>fu2,i,t3,s):is(alpha,<s><u>fu2,<s>i)
+t5:=fise(alpha,<u>fu2,i,t3,t):is(alpha,<t><u>fu2,<t>i)
+t6:=<tsr><refr(u)><t><s><u><u>ff2:is(alpha,<s><u>fu2,<t><u>fu2)
+t7:=tr3is(alpha,<s>i,<s><u>fu2,<t><u>fu2,<t>i,symis(alpha,<s><u>fu2,<s>i,t4),t6,t5):is(alpha,<s>i,<t>i)
+tsr@t8:=th3"eq.4"(e,is(alpha,<s>i,<t>i),[x:sigma][y:esti(x,ecect(e))]t7(x,y)):is(alpha,<s>i,<t>i)
+-11
+e".11"@[f:ect]
+indeq2:=indeq(i".11",[x:sigma][y:sigma][z:<y><x>r]t8".11"(x,y,z),f):alpha
++*11
+f@[s:sigma][see:esti(s,ecect(e))][t:sigma][tef:esti(t,ecect(f))]
+t9:=th2"eq.10"(i,[x:sigma][y:sigma][z:<y><x>r]t8(x,y,z),f,t,tef):is(alpha,<t>i,indeq2(e,f))
+t10:=th2"eq.10"([x:sigma]alpha,fu2,[x:sigma][y:sigma][z:<y><x>r]t2(x,y,z),e,s,see):is([x:sigma]alpha,<s>fu2,i)
+t11:=fise(alpha,<s>fu2,i,t10,t):is(alpha,<t><s>fu2,<t>i)
+th1:=tris(alpha,<t><s>fu2,<t>i,indeq2,t11,t9):is(alpha,<t><s>fu2,indeq2(e,f))
+ff2@[s:sigma][t:sigma]
+th2:=th1(ectelt(s),ectelt(t),s,th5"eq.4"(s),t,th5"eq.4"(t)):is(alpha,<t><s>fu2,indeq2(ectelt(s),ectelt(t)))
+-11
++landau
++n
+@nat:='prim':'type'
+[x:nat][y:nat]
+is:=is"e"(nat,x,y):'prop'
+nis:=not(is(x,y)):'prop'
+x@[s:set(nat)]
+in:=esti(nat,x,s):'prop'
+@[p:[x:nat]'prop']
+some:=some"l"(nat,p):'prop'
+all:=all"l"(nat,p):'prop'
+one:=one"e"(nat,p):'prop'
+@1:='prim':nat
+suc:='prim':[x:nat]nat
+[x:nat][y:nat][i:is(x,y)]
+ax2:=isf(nat,nat,suc,x,y,i):is(<x>suc,<y>suc)
+@ax3:='prim':[x:nat]nis(<x>suc,1)
+ax4:='prim':[x:nat][y:nat][u:is(<x>suc,<y>suc)]is(x,y)
+[s:set(nat)]
+cond1:=in(1,s):'prop'
+cond2:=all([x:nat]imp(in(x,s),in(<x>suc,s))):'prop'
+@ax5:='prim':[s:set(nat)][u:cond1(s)][v:cond2(s)][x:nat]in(x,s)
+[p:[x:nat]'prop'][1p:<1>p][xsp:[x:nat][y:<x>p]<<x>suc>p][x:nat]
++i1
+s:=setof(nat,p):set(nat)
+t1:=estii(nat,p,1,1p):cond1(s)
+[y:nat][yes:in(y,s)]
+t2:=estie(nat,p,y,yes):<y>p
+t3:=estii(nat,p,<y>suc,<t2><y>xsp):in(<y>suc,s)
+x@t4:=<x><[y:nat][u:in(y,s)]t3(y,u)><t1><s>ax5:in(x,s)
+-i1
+induction:=estie(nat,p,x,t4".i1"):<x>p
+@[x:nat][y:nat][n:nis(x,y)]
++21
+[i:is(<x>suc,<y>suc)]
+t1:=<i><y><x>ax4:is(x,y)
+-21
+satz1:=th3"l.imp"(is(<x>suc,<y>suc),is(x,y),n,[u:is(<x>suc,<y>suc)]t1".21"(u)):nis(<x>suc,<y>suc)
++22
+x@prop1:=nis(<x>suc,x):'prop'
+@t1:=<1>ax3:prop1(1)
+x@[p:prop1(x)]
+t2:=satz1(<x>suc,x,p):prop1(<x>suc)
+-22
+x@satz2:=induction([y:nat]prop1".22"(y),t1".22",[y:nat][u:prop1".22"(y)]t2".22"(y,u),x):nis(<x>suc,x)
++23
+prop1:=or(is(x,1),some([u:nat]is(x,<u>suc))):'prop'
+@t1:=ori1(is(1,1),some([u:nat]is(1,<u>suc)),refis(nat,1)):prop1(1)
+x@t2:=somei(nat,[u:nat]is(<x>suc,<u>suc),x,refis(nat,<x>suc)):some([u:nat]is(<x>suc,<u>suc))
+t3:=ori2(is(<x>suc,1),some([u:nat]is(<x>suc,<u>suc)),t2):prop1(<x>suc)
+t4:=induction([y:nat]prop1(y),t1,[y:nat][u:prop1(y)]t3(y),x):prop1(x)
+-23
+[n:nis(x,1)]
+satz3:=ore2(is(x,1),some([u:nat]is(x,<u>suc)),t4".23",n):some([u:nat]is(x,<u>suc))
+y@[z:nat][i:is(x,<y>suc)][j:is(x,<z>suc)]
++*23
+j@t5:=<tris1(nat,<y>suc,<z>suc,x,i,j)><z><y>ax4:is(y,z)
+x@t6:=[y:nat][z:nat][u:is(x,<y>suc)][v:is(x,<z>suc)]t5(y,z,u,v):amone(nat,[u:nat]is(x,<u>suc))
+-23
+n@satz3a:=onei(nat,[u:nat]is(x,<u>suc),t6".23",satz3):one([u:nat]is(x,<u>suc))
++24
+x@[f:[y:nat]nat]
+prop1:=all([y:nat]is(<<y>suc>f,<<y>f>suc)):'prop'
+prop2:=and(is(<1>f,<x>suc),prop1):'prop'
+x@[a:[y:nat]nat][b:[y:nat]nat][pa:prop2(a)][pb:prop2(b)][y:nat]
+prop3:=is(<y>a,<y>b):'prop'
+pb@t1:=ande1(is(<1>a,<x>suc),prop1(a),pa):is(<1>a,<x>suc)
+t2:=ande1(is(<1>b,<x>suc),prop1(b),pb):is(<1>b,<x>suc)
+t3:=tris2(nat,<1>a,<1>b,<x>suc,t1,t2):prop3(1)
+y@[p:prop3(y)]
+t4:=ax2(<y>a,<y>b,p):is(<<y>a>suc,<<y>b>suc)
+t5:=ande2(is(<1>a,<x>suc),prop1(a),pa):prop1(a)
+t6:=ande2(is(<1>b,<x>suc),prop1(b),pb):prop1(b)
+t7:=<y>t5:is(<<y>suc>a,<<y>a>suc)
+t8:=<y>t6:is(<<y>suc>b,<<y>b>suc)
+t9:=tr3is(nat,<<y>suc>a,<<y>a>suc,<<y>b>suc,<<y>suc>b,t7,t4,symis"e"(nat,<<y>suc>b,<<y>b>suc,t8)):prop3(<y>suc)
+y@t10:=induction([z:nat]prop3(z),t3,[z:nat][u:prop3(z)]t9(z,u),y):prop3(y)
+pb@t11:=fisi(nat,nat,a,b,[y:nat]t10(y)):is"e"([y:nat]nat,a,b)
+x@aa:=[z:[y:nat]nat][u:[y:nat]nat][v:prop2(z)][w:prop2(u)]t11(z,u,v,w):amone([y:nat]nat,[z:[y:nat]nat]prop2(z))
+prop4:=some"l"([y:nat]nat,[z:[y:nat]nat]prop2(z)):'prop'
+@t12:=[x:nat]refis(nat,<<x>suc>suc):prop1(1,suc)
+t13:=andi(is(<1>suc,<1>suc),prop1(1,suc),refis(nat,<1>suc),t12):prop2(1,suc)
+t14:=somei([y:nat]nat,[z:[y:nat]nat]prop2(1,z),suc,t13):prop4(1)
+x@[p:prop4(x)][f:[y:nat]nat][pf:prop2(f)]
+g:=[y:nat]<<y>f>suc:[y:nat]nat
+[y:nat]
+t15:=refis(nat,<y>g):is(<y>g,<<y>f>suc)
+pf@t16:=ande1(is(<1>f,<x>suc),prop1(f),pf):is(<1>f,<x>suc)
+t17:=tris(nat,<1>g,<<1>f>suc,<<x>suc>suc,t15(1),ax2(<1>f,<x>suc,t16)):is(<1>g,<<x>suc>suc)
+y@t18:=ande2(is(<1>f,<x>suc),prop1(f),pf):prop1(f)
+t19:=<y>t18:is(<<y>suc>f,<<y>f>suc)
+t20:=tris2(nat,<<y>suc>f,<y>g,<<y>f>suc,t19,t15):is(<<y>suc>f,<y>g)
+t21:=tris(nat,<<y>suc>g,<<<y>suc>f>suc,<<y>g>suc,t15(<y>suc),ax2(<<y>suc>f,<y>g,t20)):is(<<y>suc>g,<<y>g>suc)
+pf@t22:=[y:nat]t21(y):prop1(<x>suc,g)
+t23:=andi(is(<1>g,<<x>suc>suc),prop1(<x>suc,g),t17,t22):prop2(<x>suc,g)
+t24:=somei([y:nat]nat,[z:[y:nat]nat]prop2(<x>suc,z),g,t23):prop4(<x>suc)
+p@t25:=someapp([y:nat]nat,[z:[y:nat]nat]prop2(z),p,prop4(<x>suc),[z:[y:nat]nat][u:prop2(z)]t24(z,u)):prop4(<x>suc)
+x@bb:=induction([y:nat]prop4(y),t14,[y:nat][u:prop4(y)]t25(y,u),x):prop4(x)
+-24
+x@satz4:=onei([y:nat]nat,[z:[y:nat]nat]prop2".24"(z),aa".24",bb".24"):one"e"([y:nat]nat,[z:[y:nat]nat]and(is(<1>z,<x>suc),all([y:nat]is(<<y>suc>z,<<y>z>suc))))
+plus:=ind([y:nat]nat,[z:[y:nat]nat]prop2".24"(z),satz4):[y:nat]nat
+y@pl:=<y>plus:nat
++*24
+x@t26:=oneax([y:nat]nat,[z:[y:nat]nat]prop2(z),satz4):prop2(plus)
+-24
+x@satz4a:=ande1(is(<1>plus,<x>suc),prop1".24"(plus),t26".24"):is(pl(x,1),<x>suc)
++*24
+x@t27:=ande2(is(<1>plus,<x>suc),prop1(plus),t26):prop1(plus)
+-24
+y@satz4b:=<y>t27".24":is(pl(x,<y>suc),<pl(x,y)>suc)
++*24
+@t28:=t11(1,plus(1),suc,t26(1),t13):is"e"([y:nat]nat,plus(1),suc)
+-24
+x@satz4c:=fise(nat,nat,plus(1),suc,t28".24",x):is(pl(1,x),<x>suc)
++*24
+x@t29:=t11(<x>suc,plus(<x>suc),[y:nat]<<y>plus>suc,t26(<x>suc),t23(bb,plus,t26)):is"e"([y:nat]nat,plus(<x>suc),[y:nat]<<y>plus>suc)
+-24
+y@satz4d:=fise(nat,nat,plus(<x>suc),[z:nat]<<z>plus>suc,t29".24",y):is(pl(<x>suc,y),<pl(x,y)>suc)
+x@satz4e:=symis(nat,pl(x,1),<x>suc,satz4a):is(<x>suc,pl(x,1))
+y@satz4f:=symis(nat,pl(x,<y>suc),<pl(x,y)>suc,satz4b):is(<pl(x,y)>suc,pl(x,<y>suc))
+x@satz4g:=symis(nat,pl(1,x),<x>suc,satz4c):is(<x>suc,pl(1,x))
+y@satz4h:=symis(nat,pl(<x>suc,y),<pl(x,y)>suc,satz4d):is(<pl(x,y)>suc,pl(<x>suc,y))
+z@[i:is(x,y)]
+ispl1:=isf(nat,nat,[u:nat]pl(u,z),x,y,i):is(pl(x,z),pl(y,z))
+ispl2:=isf(nat,nat,[u:nat]pl(z,u),x,y,i):is(pl(z,x),pl(z,y))
+z@[u:nat][i:is(x,y)][j:is(z,u)]
+ispl12:=tris(nat,pl(x,z),pl(y,z),pl(y,u),ispl1(i),ispl2(z,u,y,j)):is(pl(x,z),pl(y,u))
++25
+z@prop1:=is(pl(pl(x,y),z),pl(x,pl(y,z))):'prop'
+y@t1:=tr3is(nat,pl(pl(x,y),1),<pl(x,y)>suc,pl(x,<y>suc),pl(x,pl(y,1)),satz4a(pl(x,y)),satz4f,ispl2(<y>suc,pl(y,1),x,satz4e(y))):prop1(1)
+z@[p:prop1(z)]
+t2:=ax2(pl(pl(x,y),z),pl(x,pl(y,z)),p):is(<pl(pl(x,y),z)>suc,<pl(x,pl(y,z))>suc)
+t3:=tr4is(nat,pl(pl(x,y),<z>suc),<pl(pl(x,y),z)>suc,<pl(x,pl(y,z))>suc,pl(x,<pl(y,z)>suc),pl(x,pl(y,<z>suc)),satz4b(pl(x,y),z),t2,satz4f(x,pl(y,z)),ispl2(<pl(y,z)>suc,pl(y,<z>suc),x,satz4f(y,z))):prop1(<z>suc)
+-25
+z@satz5:=induction([u:nat]prop1".25"(u),t1".25",[u:nat][v:prop1".25"(u)]t3".25"(u,v),z):is(pl(pl(x,y),z),pl(x,pl(y,z)))
+asspl1:=satz5:is(pl(pl(x,y),z),pl(x,pl(y,z)))
+asspl2:=symis(nat,pl(pl(x,y),z),pl(x,pl(y,z)),satz5):is(pl(x,pl(y,z)),pl(pl(x,y),z))
++26
+y@prop1:=is(pl(x,y),pl(y,x)):'prop'
+t1:=satz4a(y):is(pl(y,1),<y>suc)
+t2:=satz4c(y):is(pl(1,y),<y>suc)
+t3:=tris2(nat,pl(1,y),pl(y,1),<y>suc,t2,t1):prop1(1,y)
+[p:prop1(x,y)]
+t4:=tris(nat,<pl(x,y)>suc,<pl(y,x)>suc,pl(y,<x>suc),ax2(pl(x,y),pl(y,x),p),satz4f(y,x)):is(<pl(x,y)>suc,pl(y,<x>suc))
+t5:=satz4d:is(pl(<x>suc,y),<pl(x,y)>suc)
+t6:=tris(nat,pl(<x>suc,y),<pl(x,y)>suc,pl(y,<x>suc),t5,t4):prop1(<x>suc,y)
+-26
+y@satz6:=induction([z:nat]prop1".26"(z,y),t3".26",[z:nat][u:prop1".26"(z,y)]t6".26"(z,y,u),x):is(pl(x,y),pl(y,x))
+compl:=satz6:is(pl(x,y),pl(y,x))
++*26
+x@t7:=tris(nat,pl(x,1),<x>suc,pl(1,x),satz4a,satz4g):prop1(1)
+y@[p:prop1(y)]
+t8:=tr3is(nat,pl(x,<y>suc),<pl(x,y)>suc,<pl(y,x)>suc,pl(<y>suc,x),satz4b,ax2(pl(x,y),pl(y,x),p),satz4h(y,x)):prop1(<y>suc)
+y@anders:=induction([z:nat]prop1(z),t7,[z:nat][u:prop1(z)]t8(z,u),y):is(pl(x,y),pl(y,x))
+-26
++27
+y@prop1:=nis(y,pl(x,y)):'prop'
+x@t1:=symnotis(nat,<x>suc,1,<x>ax3):nis(1,<x>suc)
+t2:=th4"e.notis"(nat,1,<x>suc,pl(x,1),t1,satz4a):prop1(1)
+y@[p:prop1(y)]
+t3:=satz1(y,pl(x,y),p):nis(<y>suc,<pl(x,y)>suc)
+t4:=th4"e.notis"(nat,<y>suc,<pl(x,y)>suc,pl(x,<y>suc),t3,satz4b):prop1(<y>suc)
+-27
+y@satz7:=induction([z:nat]prop1".27"(z),t2".27",[z:nat][u:prop1".27"(z)]t4".27"(z,u),y):nis(y,pl(x,y))
+z@[n:nis(y,z)]
++28
+prop1:=nis(pl(x,y),pl(x,z)):'prop'
+t1:=satz1(y,z,n):nis(<y>suc,<z>suc)
+t2:=th5"e.notis"(nat,<y>suc,<z>suc,pl(1,y),pl(1,z),t1,satz4g(y),satz4g(z)):prop1(1,y,z,n)
+[p:prop1(x,y,z,n)]
+t3:=satz1(pl(x,y),pl(x,z),p):nis(<pl(x,y)>suc,<pl(x,z)>suc)
+t4:=th5"e.notis"(nat,<pl(x,y)>suc,<pl(x,z)>suc,pl(<x>suc,y),pl(<x>suc,z),t3,satz4h,satz4h(z)):prop1(<x>suc,y,z,n)
+-28
+satz8:=induction([u:nat]prop1".28"(u,y,z,n),t2".28",[u:nat][v:prop1".28"(u,y,z,n)]t4".28"(u,y,z,n,v),x):nis(pl(x,y),pl(x,z))
+z@[i:is(pl(x,y),pl(x,z))]
+satz8a:=th7"l.imp"(is(y,z),nis(pl(x,y),pl(x,z)),weli(is(pl(x,y),pl(x,z)),i),[u:nis(y,z)]satz8(u)):is(y,z)
+z@diffprop:=is(x,pl(y,z)):'prop'
++*28
+y@[u:nat][v:nat][du:diffprop(u)][dv:diffprop(v)]
+t5:=satz8a(y,u,v,tris1(nat,pl(y,u),pl(y,v),x,du,dv)):is(u,v)
+-28
+y@satz8b:=[u:nat][v:nat][du:diffprop(u)][dv:diffprop(v)]t5".28"(u,v,du,dv):amone(nat,[z:nat]is(x,pl(y,z)))
++29
+i:=is(x,y):'prop'
+ii:=some([u:nat]diffprop(x,y,u)):'prop'
+iii:=some([v:nat]diffprop(y,x,v)):'prop'
+[one1:i][u:nat]
+t1:=tris(nat,pl(u,x),pl(x,u),pl(y,u),compl(u,x),ispl1(u,one1)):is(pl(u,x),pl(y,u))
+t2:=th3"e.notis"(nat,x,pl(u,x),pl(y,u),satz7(u,x),t1):nis(x,pl(y,u))
+one1@t3:=th5"l.some"(nat,[u:nat]diffprop(u),[u:nat]t2(u)):not(ii)
+y@t4:=th1"l.ec"(i,ii,[z:i]t3(z)):ec(i,ii)
+one1@t5:=t3(y,x,symis(nat,x,y,one1)):not(iii)
+y@t6:=th2"l.ec"(iii,i,[z:i]t5(z)):ec(iii,i)
+[two1:ii][three1:iii][u:nat][du:diffprop(x,y,u)][v:nat][dv:diffprop(y,x,v)]
+t6a:=tr4is(nat,x,pl(y,u),pl(pl(x,v),u),pl(x,pl(v,u)),pl(pl(v,u),x),du,ispl1(y,pl(x,v),u,dv),asspl1(x,v,u),compl(x,pl(v,u))):is(x,pl(pl(v,u),x))
+t7:=mp(is(x,pl(pl(v,u),x)),con,t6a,satz7(pl(v,u),x)):con
+du@t8:=someapp(nat,[v:nat]diffprop(y,x,v),three1,con,[v:nat][dv:diffprop(y,x,v)]t7(v,dv)):con
+three1@t9:=someapp(nat,[u:nat]diffprop(u),two1,con,[u:nat][du:diffprop(u)]t8(u,du)):con
+two1@t10:=[z:iii]t9(z):not(iii)
+y@t11:=th1"l.ec"(ii,iii,[z:ii]t10(z)):ec(ii,iii)
+a:=th6"l.ec3"(i,ii,iii,t4,t11,t6):ec3(i,ii,iii)
+prop1:=or3(i,ii,iii):'prop'
+x@[j:is(x,1)]
+t12:=or3i1(i(1),ii(1),iii(1),j):prop1(1)
+x@[n:nis(x,1)][u:nat][j:is(x,<u>suc)]
+t13:=tris(nat,x,<u>suc,pl(1,u),j,satz4g(u)):is(x,pl(1,u))
+t14:=somei(nat,[z:nat]diffprop(x,1,z),u,t13):ii(1)
+t15:=someapp(nat,[u1:nat]is(x,<u1>suc),satz3(x,n),ii(1),[u1:nat][z:is(x,<u1>suc)]t14(u1,z)):ii(1)
+t16:=or3i2(i(1),ii(1),iii(1),t15):prop1(1)
+n@t16a:=someapp(nat,[u:nat]is(x,<u>suc),satz3(x,n),prop1(1),[u:nat][v:is(x,<u>suc)]t16(u,v)):prop1(1)
+x@t17:=th1"l.imp"(is(x,1),prop1(1),[z:is(x,1)]t12(z),[z:nis(x,1)]t16a(z)):prop1(1)
+y@[p:prop1(y)][one1:i(y)]
+t18:=tris(nat,<y>suc,pl(y,1),pl(x,1),satz4e(y),ispl1(y,x,1,symis(nat,x,y,one1))):is(<y>suc,pl(x,1))
+t19:=somei(nat,[z:nat]diffprop(<y>suc,x,z),1,t18):iii(<y>suc)
+t20:=or3i3(i(<y>suc),ii(<y>suc),iii(<y>suc),t19):prop1(<y>suc)
+p@[two1:ii(y)][u:nat][du:diffprop(x,y,u)][j:is(u,1)]
+t21:=tr3is(nat,x,pl(y,u),pl(y,1),<y>suc,du,ispl2(u,1,y,j),satz4a(y)):is(x,<y>suc)
+t22:=or3i1(i(<y>suc),ii(<y>suc),iii(<y>suc),t21):prop1(<y>suc)
+du@[n:nis(u,1)][w:nat][j:is(u,<w>suc)]
+t23:=tris(nat,u,<w>suc,pl(1,w),j,satz4g(w)):is(u,pl(1,w))
+t24:=tr4is(nat,x,pl(y,u),pl(y,pl(1,w)),pl(pl(y,1),w),pl(<y>suc,w),du,ispl2(u,pl(1,w),y,t23),asspl2(y,1,w),ispl1(pl(y,1),<y>suc,w,satz4a(y))):is(x,pl(<y>suc,w))
+t25:=somei(nat,[z:nat]diffprop(x,<y>suc,z),w,t24):ii(<y>suc)
+n@t26:=someapp(nat,[z:nat]is(u,<z>suc),satz3(u,n),ii(<y>suc),[z:nat][v:is(u,<z>suc)]t25(z,v)):ii(<y>suc)
+t27:=or3i2(i(<y>suc),ii(<y>suc),iii(<y>suc),t26):prop1(<y>suc)
+du@t28:=th1"l.imp"(is(u,1),prop1(<y>suc),[z:is(u,1)]t22(z),[z:nis(u,1)]t27(z)):prop1(<y>suc)
+two1@t28a:=someapp(nat,[u:nat]diffprop(u),two1,prop1(<y>suc),[u:nat][du:diffprop(u)]t28(u,du)):prop1(<y>suc)
+p@[three1:iii(y)][v:nat][dv:diffprop(y,x,v)]
+t29:=tris(nat,<y>suc,<pl(x,v)>suc,pl(x,<v>suc),ax2(y,pl(x,v),dv),satz4f(x,v)):is(<y>suc,pl(x,<v>suc))
+t30:=somei(nat,[z:nat]diffprop(<y>suc,x,z),<v>suc,t29):iii(<y>suc)
+three1@t31:=someapp(nat,[v:nat]diffprop(y,x,v),three1,iii(<y>suc),[v:nat][dv:diffprop(y,x,v)]t30(v,dv)):iii(<y>suc)
+t32:=or3i3(i(<y>suc),ii(<y>suc),iii(<y>suc),t31):prop1(<y>suc)
+p@t33:=or3app(i(y),ii(y),iii(y),prop1(<y>suc),p,[z:i(y)]t20(z),[z:ii(y)]t28a(z),[z:iii(y)]t32(z)):prop1(<y>suc)
+y@b:=induction([z:nat]prop1(z),t17,[z:nat][u:prop1(z)]t33(z,u),y):or3(i,ii,iii)
+-29
+satz9:=orec3i(i".29",ii".29",iii".29",b".29",a".29"):orec3(is(x,y),some([u:nat]is(x,pl(y,u))),some([v:nat]is(y,pl(x,v))))
+satz9a:=b".29":or3(is(x,y),some([u:nat]diffprop(x,y,u)),some([v:nat]diffprop(y,x,v)))
+satz9b:=a".29":ec3(is(x,y),some([u:nat]diffprop(x,y,u)),some([v:nat]diffprop(y,x,v)))
+more:=some([u:nat]diffprop(x,y,u)):'prop'
+less:=some([v:nat]diffprop(y,x,v)):'prop'
+satz10:=satz9:orec3(is(x,y),more(x,y),less(x,y))
+satz10a:=satz9a:or3(is(x,y),more(x,y),less(x,y))
+satz10b:=satz9b:ec3(is(x,y),more(x,y),less(x,y))
+[m:more(x,y)]
+satz11:=m:less(y,x)
+y@[l:less(x,y)]
+satz12:=l:more(y,x)
+y@moreis:=or(more,is(x,y)):'prop'
+lessis:=or(less,is(x,y)):'prop'
+[m:moreis(x,y)]
+satz13:=th9"l.or"(more,is(x,y),less(y,x),is(y,x),m,[z:more]satz11(z),[z:is(x,y)]symis(nat,x,y,z)):lessis(y,x)
+y@[l:lessis(x,y)]
+satz14:=th9"l.or"(less,is(x,y),more(y,x),is(y,x),l,[z:less]satz12(z),[z:is(x,y)]symis(nat,x,y,z)):moreis(y,x)
+z@[i:is(x,y)][m:more(x,z)]
+ismore1:=isp(nat,[u:nat]more(u,z),x,y,m,i):more(y,z)
+i@[m:more(z,x)]
+ismore2:=isp(nat,[u:nat]more(z,u),x,y,m,i):more(z,y)
+i@[l:less(x,z)]
+isless1:=isp(nat,[u:nat]less(u,z),x,y,l,i):less(y,z)
+i@[l:less(z,x)]
+isless2:=isp(nat,[u:nat]less(z,u),x,y,l,i):less(z,y)
+i@[m:moreis(x,z)]
+ismoreis1:=isp(nat,[u:nat]moreis(u,z),x,y,m,i):moreis(y,z)
+i@[m:moreis(z,x)]
+ismoreis2:=isp(nat,[u:nat]moreis(z,u),x,y,m,i):moreis(z,y)
+i@[l:lessis(x,z)]
+islessis1:=isp(nat,[u:nat]lessis(u,z),x,y,l,i):lessis(y,z)
+i@[l:lessis(z,x)]
+islessis2:=isp(nat,[u:nat]lessis(z,u),x,y,l,i):lessis(z,y)
+y@[i:is(x,y)]
+moreisi2:=ori2(more(x,y),is(x,y),i):moreis(x,y)
+lessisi2:=ori2(less(x,y),is(x,y),i):lessis(x,y)
+y@[m:more(x,y)]
+moreisi1:=ori1(more(x,y),is(x,y),m):moreis(x,y)
+y@[l:less(x,y)]
+lessisi1:=ori1(less(x,y),is(x,y),l):lessis(x,y)
+z@[u:nat][i:is(x,y)][j:is(z,u)][m:more(x,z)]
+ismore12:=ismore2(z,u,y,j,ismore1(x,y,z,i,m)):more(y,u)
+j@[l:less(x,z)]
+isless12:=isless2(z,u,y,j,isless1(x,y,z,i,l)):less(y,u)
+j@[m:moreis(x,z)]
+ismoreis12:=ismoreis2(z,u,y,j,ismoreis1(x,y,z,i,m)):moreis(y,u)
+j@[l:lessis(x,z)]
+islessis12:=islessis2(z,u,y,j,islessis1(x,y,z,i,l)):lessis(y,u)
+y@[m:moreis(x,y)]
+satz10c:=th7"l.ec3"(is(x,y),more(x,y),less(x,y),satz10b,comor(more(x,y),is(x,y),m)):not(less(x,y))
+y@[l:lessis(x,y)]
+satz10d:=th9"l.ec3"(is(x,y),more(x,y),less(x,y),satz10b,l):not(more(x,y))
+y@[n:not(more(x,y))]
+satz10e:=th2"l.or3"(is(x,y),more(x,y),less(x,y),satz10a,n):lessis(x,y)
+y@[n:not(less(x,y))]
+satz10f:=comor(is(x,y),more(x,y),th3"l.or3"(is(x,y),more(x,y),less(x,y),satz10a,n)):moreis(x,y)
+y@[m:more(x,y)]
+satz10g:=th3"l.or"(less(x,y),is(x,y),ec3e23(is(x,y),more(x,y),less(x,y),satz10b,m),ec3e21(is(x,y),more(x,y),less(x,y),satz10b,m)):not(lessis(x,y))
+y@[l:less(x,y)]
+satz10h:=th3"l.or"(more(x,y),is(x,y),ec3e32(is(x,y),more(x,y),less(x,y),satz10b,l),ec3e31(is(x,y),more(x,y),less(x,y),satz10b,l)):not(moreis(x,y))
+y@[n:not(moreis(x,y))]
+satz10j:=or3e3(is(x,y),more(x,y),less(x,y),satz10a,th5"l.or"(more(x,y),is(x,y),n),th4"l.or"(more(x,y),is(x,y),n)):less(x,y)
+y@[n:not(lessis(x,y))]
+satz10k:=or3e2(is(x,y),more(x,y),less(x,y),satz10a,th4"l.or"(less(x,y),is(x,y),n),th5"l.or"(less(x,y),is(x,y),n)):more(x,y)
+z@[l:less(x,y)][k:less(y,z)]
++315
+[v:nat][dv:diffprop(y,x,v)][w:nat][dw:diffprop(z,y,w)]
+t1:=tr3is(nat,z,pl(y,w),pl(pl(x,v),w),pl(x,pl(v,w)),dw,ispl1(y,pl(x,v),w,dv),asspl1(x,v,w)):is(z,pl(x,pl(v,w)))
+t2:=somei(nat,[u:nat]diffprop(z,x,u),pl(v,w),t1):less(x,z)
+dv@t3:=someapp(nat,[w:nat]diffprop(z,y,w),k,less(x,z),[w:nat][dw:diffprop(z,y,w)]t2(w,dw)):less(x,z)
+-315
+satz15:=someapp(nat,[v:nat]diffprop(y,x,v),l,less(x,z),[v:nat][dv:diffprop(y,x,v)]t3".315"(v,dv)):less(x,z)
+trless:=satz15:less(x,z)
+z@[m:more(x,y)][n:more(y,z)]
+trmore:=satz15(z,y,x,n,m):more(x,z)
++*315
+n@anders:=satz12(z,x,satz15(z,y,x,satz11(y,z,n),satz11(m))):more(x,z)
+-315
+z@[l:lessis(x,y)][k:less(y,z)]
+satz16a:=orapp(less(x,y),is(x,y),less(x,z),l,[u:less(x,y)]trless(u,k),[u:is(x,y)]isless1(y,x,z,symis(nat,x,y,u),k)):less(x,z)
+z@[l:less(x,y)][k:lessis(y,z)]
+satz16b:=orapp(less(y,z),is(y,z),less(x,z),k,[u:less(y,z)]trless(l,u),[u:is(y,z)]isless2(y,z,x,u,l)):less(x,z)
+z@[m:moreis(x,y)][n:more(y,z)]
+satz16c:=satz16b(z,y,x,n,satz13(m)):more(x,z)
+z@[m:more(x,y)][n:moreis(y,z)]
+satz16d:=satz16a(z,y,x,satz13(y,z,n),m):more(x,z)
+z@[l:lessis(x,y)][k:lessis(y,z)]
++317
+[i:is(x,y)][j:is(y,z)]
+t1:=lessisi2(x,z,tris(nat,x,y,z,i,j)):lessis(x,z)
+i@[j:less(y,z)]
+t2:=lessisi1(x,z,satz16a(l,j)):lessis(x,z)
+i@t3:=orapp(less(y,z),is(y,z),lessis(x,z),k,[u:less(y,z)]t2(u),[u:is(y,z)]t1(u)):lessis(x,z)
+k@[j:less(x,y)]
+t4:=lessisi1(x,z,satz16b(j,k)):lessis(x,z)
+-317
+satz17:=orapp(less(x,y),is(x,y),lessis(x,z),l,[u:less(x,y)]t4".317"(u),[u:is(x,y)]t3".317"(u)):lessis(x,z)
++*317
+k@[j:less(x,y)]
+t5:=lessisi1(x,z,satz16b(j,k)):lessis(x,z)
+k@[i:is(x,y)]
+t6:=islessis1(y,x,z,symis(nat,x,y,i),k):lessis(x,z)
+k@anders:=orapp(less(x,y),is(x,y),lessis(x,z),l,[u:less(x,y)]t5(u),[u:is(x,y)]t6(u)):lessis(x,z)
+-317
+k@trlessis:=satz17:lessis(x,z)
+z@[m:moreis(x,y)][n:moreis(y,z)]
+trmoreis:=satz14(z,x,satz17(z,y,x,satz13(y,z,n),satz13(m))):moreis(x,z)
+y@satz18:=somei(nat,[u:nat]diffprop(pl(x,y),x,u),y,refis(nat,pl(x,y))):more(pl(x,y),x)
+satz18a:=satz18:less(x,pl(x,y))
+x@satz18b:=ismore1(pl(x,1),<x>suc,x,satz4a,satz18(1)):more(<x>suc,x)
+satz18c:=satz18b:less(x,<x>suc)
+z@[m:more(x,y)]
++319
+[u:nat][du:diffprop(u)]
+t1:=tris(nat,x,pl(y,u),pl(u,y),du,compl(y,u)):is(x,pl(u,y))
+t2:=tr3is(nat,pl(x,z),pl(pl(u,y),z),pl(u,pl(y,z)),pl(pl(y,z),u),ispl1(x,pl(u,y),z,t1),asspl1(u,y,z),compl(u,pl(y,z))):is(pl(x,z),pl(pl(y,z),u))
+t3:=somei(nat,[v:nat]diffprop(pl(x,z),pl(y,z),v),u,t2):more(pl(x,z),pl(y,z))
+-319
+satz19a:=someapp(nat,[u:nat]diffprop(u),m,more(pl(x,z),pl(y,z)),[u:nat][v:diffprop(u)]t3".319"(u,v)):more(pl(x,z),pl(y,z))
+z@[i:is(x,y)]
+satz19b:=ispl1(x,y,z,i):is(pl(x,z),pl(y,z))
+z@[l:less(x,y)]
+satz19c:=satz11(pl(y,z),pl(x,z),satz19a(y,x,z,satz12(x,y,l))):less(pl(x,z),pl(y,z))
++*319
+l@anders1:=satz19a(y,x,z,l):less(pl(x,z),pl(y,z))
+-319
+m@satz19d:=ismore12(pl(x,z),pl(z,x),pl(y,z),pl(z,y),compl(x,z),compl(y,z),satz19a):more(pl(z,x),pl(z,y))
+i@satz19e:=ispl2(x,y,z,i):is(pl(z,x),pl(z,y))
+l@satz19f:=isless12(pl(x,z),pl(z,x),pl(y,z),pl(z,y),compl(x,z),compl(y,z),satz19c):less(pl(z,x),pl(z,y))
++*319
+l@anders2:=satz19d(y,x,z,l):less(pl(z,x),pl(z,y))
+-319
+z@[u:nat][i:is(x,y)][m:more(z,u)]
+satz19g:=ismore2(pl(x,u),pl(y,u),pl(x,z),ispl1(x,y,u,i),satz19d(z,u,x,m)):more(pl(x,z),pl(y,u))
+satz19h:=ismore12(pl(x,z),pl(z,x),pl(y,u),pl(u,y),compl(x,z),compl(y,u),satz19g):more(pl(z,x),pl(u,y))
+i@[l:less(z,u)]
+satz19j:=isless2(pl(x,u),pl(y,u),pl(x,z),ispl1(x,y,u,i),satz19f(z,u,x,l)):less(pl(x,z),pl(y,u))
+satz19k:=isless12(pl(x,z),pl(z,x),pl(y,u),pl(u,y),compl(x,z),compl(y,u),satz19j):less(pl(z,x),pl(u,y))
+z@[m:moreis(x,y)]
++*319
+m@[n:more(x,y)]
+t4:=moreisi1(pl(x,z),pl(y,z),satz19a(n)):moreis(pl(x,z),pl(y,z))
+m@[i:is(x,y)]
+t5:=moreisi2(pl(x,z),pl(y,z),ispl1(x,y,z,i)):moreis(pl(x,z),pl(y,z))
+-319
+m@satz19l:=orapp(more(x,y),is(x,y),moreis(pl(x,z),pl(y,z)),m,[u:more(x,y)]t4".319"(u),[u:is(x,y)]t5".319"(u)):moreis(pl(x,z),pl(y,z))
+satz19m:=ismoreis12(pl(x,z),pl(z,x),pl(y,z),pl(z,y),compl(x,z),compl(y,z),satz19l):moreis(pl(z,x),pl(z,y))
+z@[l:lessis(x,y)]
+satz19n:=satz13(pl(y,z),pl(x,z),satz19l(y,x,z,satz14(l))):lessis(pl(x,z),pl(y,z))
+satz19o:=satz13(pl(z,y),pl(z,x),satz19m(y,x,z,satz14(l))):lessis(pl(z,x),pl(z,y))
++320
+z@t1:=satz10a(x,y):or3(is(x,y),more(x,y),less(x,y))
+t2:=satz10b(pl(x,z),pl(y,z)):ec3(is(pl(x,z),pl(y,z)),more(pl(x,z),pl(y,z)),less(pl(x,z),pl(y,z)))
+-320
+z@[m:more(pl(x,z),pl(y,z))]
+satz20a:=th11"l.ec3"(is(x,y),more(x,y),less(x,y),is(pl(x,z),pl(y,z)),more(pl(x,z),pl(y,z)),less(pl(x,z),pl(y,z)),t1".320",t2".320",[u:is(x,y)]satz19b(x,y,z,u),[u:more(x,y)]satz19a(x,y,z,u),[u:less(x,y)]satz19c(x,y,z,u),m):more(x,y)
+z@[i:is(pl(x,z),pl(y,z))]
+satz20b:=th10"l.ec3"(is(x,y),more(x,y),less(x,y),is(pl(x,z),pl(y,z)),more(pl(x,z),pl(y,z)),less(pl(x,z),pl(y,z)),t1".320",t2".320",[u:is(x,y)]satz19b(x,y,z,u),[u:more(x,y)]satz19a(x,y,z,u),[u:less(x,y)]satz19c(x,y,z,u),i):is(x,y)
+z@[l:less(pl(x,z),pl(y,z))]
+satz20c:=th12"l.ec3"(is(x,y),more(x,y),less(x,y),is(pl(x,z),pl(y,z)),more(pl(x,z),pl(y,z)),less(pl(x,z),pl(y,z)),t1".320",t2".320",[u:is(x,y)]satz19b(x,y,z,u),[u:more(x,y)]satz19a(x,y,z,u),[u:less(x,y)]satz19c(x,y,z,u),l):less(x,y)
++*320
+i@t3:=tr3is(nat,pl(z,x),pl(x,z),pl(y,z),pl(z,y),compl(z,x),i,compl(y,z)):is(pl(z,x),pl(z,y))
+andersb:=satz8a(z,x,y,t3):is(x,y)
+l@andersc:=satz20a(y,x,z,l):less(x,y)
+-320
+z@[m:more(pl(z,x),pl(z,y))]
+satz20d:=satz20a(ismore12(pl(z,x),pl(x,z),pl(z,y),pl(y,z),compl(z,x),compl(z,y),m)):more(x,y)
+z@[i:is(pl(z,x),pl(z,y))]
+satz20e:=satz20b(tr3is(nat,pl(x,z),pl(z,x),pl(z,y),pl(y,z),compl(x,z),i,compl(z,y))):is(x,y)
+z@[l:less(pl(z,x),pl(z,y))]
+satz20f:=satz20c(isless12(pl(z,x),pl(x,z),pl(z,y),pl(y,z),compl(z,x),compl(z,y),l)):less(x,y)
+u@[m:more(x,y)][n:more(z,u)]
++321
+t1:=satz19a(x,y,z,m):more(pl(x,z),pl(y,z))
+t2:=ismore12(pl(z,y),pl(y,z),pl(u,y),pl(y,u),compl(z,y),compl(u,y),satz19a(z,u,y,n)):more(pl(y,z),pl(y,u))
+-321
+satz21:=trmore(pl(x,z),pl(y,z),pl(y,u),t1".321",t2".321"):more(pl(x,z),pl(y,u))
++*321
+n@anders:=trmore(pl(x,z),pl(y,z),pl(y,u),satz19a(x,y,z,m),satz19d(z,u,y,n)):more(pl(x,z),pl(y,u))
+-321
+u@[l:less(x,y)][k:less(z,u)]
+satz21a:=satz21(y,x,u,z,l,k):less(pl(x,z),pl(y,u))
++*321
+k@andersa:=satz11(pl(y,u),pl(x,z),satz21(y,x,u,z,satz12(x,y,l),satz12(z,u,k))):less(pl(x,z),pl(y,u))
+-321
+u@[m:moreis(x,y)][n:more(z,u)]
+satz22a:=orapp(more(x,y),is(x,y),more(pl(x,z),pl(y,u)),m,[v:more(x,y)]satz21(v,n),[v:is(x,y)]satz19g(u,v,n)):more(pl(x,z),pl(y,u))
+u@[m:more(x,y)][n:moreis(z,u)]
+satz22b:=orapp(more(z,u),is(z,u),more(pl(x,z),pl(y,u)),n,[v:more(z,u)]satz21(m,v),[v:is(z,u)]satz19h(z,u,x,y,v,m)):more(pl(x,z),pl(y,u))
+u@[l:lessis(x,y)][k:less(z,u)]
+satz22c:=satz22a(y,x,u,z,satz14(x,y,l),k):less(pl(x,z),pl(y,u))
+u@[l:less(x,y)][k:lessis(z,u)]
+satz22d:=satz22b(y,x,u,z,l,satz14(z,u,k)):less(pl(x,z),pl(y,u))
+u@[m:moreis(x,y)][n:moreis(z,u)]
++323
+[i:is(x,y)][j:is(z,u)]
+t1:=moreisi2(pl(x,z),pl(y,u),tris(nat,pl(x,z),pl(y,z),pl(y,u),ispl1(x,y,z,i),ispl2(z,u,y,j))):moreis(pl(x,z),pl(y,u))
+i@[o:more(z,u)]
+t2:=moreisi1(pl(x,z),pl(y,u),satz22a(m,o)):moreis(pl(x,z),pl(y,u))
+i@t3:=orapp(more(z,u),is(z,u),moreis(pl(x,z),pl(y,u)),n,[v:more(z,u)]t2(v),[v:is(z,u)]t1(v)):moreis(pl(x,z),pl(y,u))
+n@[o:more(x,y)]
+t4:=moreisi1(pl(x,z),pl(y,u),satz22b(o,n)):moreis(pl(x,z),pl(y,u))
+-323
+satz23:=orapp(more(x,y),is(x,y),moreis(pl(x,z),pl(y,u)),m,[v:more(x,y)]t4".323"(v),[v:is(x,y)]t3".323"(v)):moreis(pl(x,z),pl(y,u))
++*323
+n@[o:more(x,y)]
+t5:=moreisi1(pl(x,z),pl(y,u),satz22b(o,n)):moreis(pl(x,z),pl(y,u))
+n@[i:is(x,y)]
+t6:=ismoreis2(pl(x,u),pl(y,u),pl(x,z),ispl1(u,i),satz19m(z,u,x,n)):moreis(pl(x,z),pl(y,u))
+n@anders:=orapp(more(x,y),is(x,y),moreis(pl(x,z),pl(y,u)),m,[v:more(x,y)]t5(v),[v:is(x,y)]t6(v)):moreis(pl(x,z),pl(y,u))
+-323
+u@[l:lessis(x,y)][k:lessis(z,u)]
+satz23a:=satz13(pl(y,u),pl(x,z),satz23(y,x,u,z,satz14(l),satz14(z,u,k))):lessis(pl(x,z),pl(y,u))
++324
+x@[n:nis(x,1)][u:nat][i:is(x,<u>suc)]
+t1:=tris(nat,x,<u>suc,pl(1,u),i,satz4g(u)):is(x,pl(1,u))
+t2:=ismore1(pl(1,u),x,1,symis(nat,x,pl(1,u),t1),satz18(1,u)):more(x,1)
+n@t3:=someapp(nat,[u:nat]is(x,<u>suc),satz3(x,n),more(x,1),[u:nat][v:is(x,<u>suc)]t2(u,v)):more(x,1)
+-324
+x@satz24:=th2"l.or"(more(x,1),is(x,1),[u:nis(x,1)]t3".324"(u)):moreis(x,1)
+satz24a:=satz13(x,1,satz24):lessis(1,x)
+satz24b:=t3".324"(<x>suc,<x>ax3):more(<x>suc,1)
+satz24c:=satz24b:less(1,<x>suc)
+y@[m:more(y,x)]
++325
+[u:nat][du:diffprop(y,x,u)]
+t1:=satz19m(u,1,x,satz24(u)):moreis(pl(x,u),pl(x,1))
+t2:=ismoreis1(pl(x,u),y,pl(x,1),symis(nat,y,pl(x,u),du),t1):moreis(y,pl(x,1))
+-325
+satz25:=someapp(nat,[u:nat]diffprop(y,x,u),m,moreis(y,pl(x,1)),[u:nat][v:diffprop(y,x,u)]t2".325"(u,v)):moreis(y,pl(x,1))
+satz25a:=ismoreis2(pl(x,1),<x>suc,y,satz4a,satz25):moreis(y,<x>suc)
+y@[l:less(y,x)]
+satz25b:=satz13(x,pl(y,1),satz25(y,x,l)):lessis(pl(y,1),x)
+satz25c:=islessis1(pl(y,1),<y>suc,x,satz4a(y),satz25b):lessis(<y>suc,x)
+y@[l:less(y,pl(x,1))]
++326
+[m:more(y,x)]
+t1:=satz25(m):moreis(y,pl(x,1))
+l@t2:=th3"l.imp"(more(y,x),moreis(y,pl(x,1)),satz10h(y,pl(x,1),l),[v:more(y,x)]t1(v)):not(more(y,x))
+-326
+satz26:=satz10e(y,x,t2".326"):lessis(y,x)
+y@[l:less(y,<x>suc)]
+satz26a:=satz26(isless2(<x>suc,pl(x,1),y,satz4e,l)):lessis(y,x)
+y@[m:more(pl(y,1),x)]
+satz26b:=satz14(x,y,satz26(y,x,m)):moreis(y,x)
+y@[m:more(<y>suc,x)]
+satz26c:=satz26b(ismore1(<y>suc,pl(y,1),x,satz4e(y),m)):moreis(y,x)
+@[p:[x:nat]'prop'][n:nat]
++327
+[m:nat]
+lbprop:=imp(<m>p,lessis(n,m)):'prop'
+-327
+lb:=all([x:nat]lbprop".327"(x)):'prop'
+min:=and(lb,<n>p):'prop'
+p@[s:some(p)]
++*327
+s@[n:nat]
+t1:=[x:<n>p]satz24a(n):lbprop(1,n)
+s@t2:=[x:nat]t1(x):lb(1)
+[l:[x:nat]lb(x)][y:nat][yp:<y>p]
+t3:=satz18(y,1):more(pl(y,1),y)
+t4:=satz10g(pl(y,1),y,t3):not(lessis(pl(y,1),y))
+t5:=th4"l.imp"(<y>p,lessis(pl(y,1),y),yp,t4):not(lbprop(pl(y,1),y))
+t6:=th1"l.all"(nat,[x:nat]lbprop(pl(y,1),x),y,t5):not(lb(pl(y,1)))
+t7:=mp(lb(pl(y,1)),con,<pl(y,1)>l,t6):con
+l@t8:=someapp(nat,p,s,con,[x:nat][y:<x>p]t7(x,y)):con
+s@[n:non(nat,[x:nat]and(lb(x),not(lb(pl(x,1)))))][m:nat][l:lb(m)]
+t9:=<m>n:not(and(lb(m),not(lb(pl(m,1)))))
+t10:=et(lb(pl(m,1)),th3"l.and"(lb(m),not(lb(pl(m,1))),t9,l)):lb(pl(m,1))
+t11:=isp(nat,[x:nat]lb(x),pl(m,1),<m>suc,t10,satz4a(m)):lb(<m>suc)
+n@t12:=[x:nat]induction([y:nat]lb(y),t2,[y:nat][z:lb(y)]t11(y,z),x):[x:nat]lb(x)
+s@t13:=[x:non(nat,[x:nat]and(lb(x),not(lb(pl(x,1)))))]t8(t12(x)):some([x:nat]and(lb(x),not(lb(pl(x,1)))))
+[m:nat][a:and(lb(m),not(lb(pl(m,1))))]
+t14:=ande1(lb(m),not(lb(pl(m,1))),a):lb(m)
+t15:=ande2(lb(m),not(lb(pl(m,1))),a):not(lb(pl(m,1)))
+[nmp:not(<m>p)][n:nat][np:<n>p]
+t16:=mp(<n>p,lessis(m,n),np,<n>t14):lessis(m,n)
+t17:=th3"l.imp"(is(m,n),<m>p,nmp,[x:is(m,n)]isp(nat,p,n,m,np,symis(nat,m,n,x))):not(is(m,n))
+t18:=ore1(less(m,n),is(m,n),t16,t17):less(m,n)
+t19:=satz25b(n,m,t18):lessis(pl(m,1),n)
+nmp@t20:=[x:nat][y:<x>p]t19(x,y):lb(pl(m,1))
+t21:=mp(lb(pl(m,1)),con,t20,t15):con
+a@t22:=et(<m>p,[x:not(<m>p)]t21(x)):<m>p
+t23:=andi(lb(m),<m>p,t14,t22):min(m)
+-327
+s@satz27:=th6"l.some"(nat,[x:nat]and(lb(x),not(lb(pl(x,1)))),[x:nat]min(x),t13".327",[x:nat][y:and(lb(x),not(lb(pl(x,1))))]t23".327"(x,y)):some([x:nat]min(p,x))
++*327
+p@[n:non(nat,[x:nat]min(x))][u:nat]
+t24:=[x:<u>p]satz24a(u):lbprop(1,u)
+n@t25:=[x:nat]t24(x):lb(1)
+u@[l:lb(u)]
+t26:=<u>n:not(min(u))
+t27:=th3"l.and"(lb(u),<u>p,t26,l):not(<u>p)
+[v:nat][vp:<v>p]
+t28:=th3"l.imp"(is(u,v),<u>p,t27,[x:is(u,v)]isp1(nat,p,v,u,vp,x)):nis(u,v)
+t29:=mp(<v>p,lessis(u,v),vp,<v>l):lessis(u,v)
+t30:=ore1(less(u,v),is(u,v),t29,t28):less(u,v)
+t31:=satz25c(v,u,t30):lessis(<u>suc,v)
+v@t32:=[x:<v>p]t31(x):lbprop(<u>suc,v)
+l@t33:=[x:nat]t32(x):lb(<u>suc)
+u@t34:=induction([x:nat]lb(x),t25,[x:nat][y:lb(x)]t33(x,y),u):lb(u)
+p@[s:some(p)][u:nat][up:<u>p]
+t35:=satz10g(<u>suc,u,satz18b(u)):not(lessis(<u>suc,u))
+t36:=th4"l.imp"(<u>p,lessis(<u>suc,u),up,t35):not(lbprop(<u>suc,u))
+t37:=th1"l.all"(nat,[x:nat]lbprop(<u>suc,x),u,t36):not(lb(<u>suc))
+t38:=[y:non(nat,[x:nat]min(x))]mp(lb(<u>suc),con,t34(y,<u>suc),t37):some([x:nat]min(x))
+s@anders:=someapp(nat,p,s,some([x:nat]min(x)),[x:nat][y:<x>p]t38(x,y)):some([x:nat]min(x))
+-327
++*327
+p@[n:nat][m:nat][mn:min(p,n)][mm:min(p,m)]
+t39:=ande1(lb(n),<n>p,mn):lb(n)
+t40:=ande1(lb(m),<m>p,mm):lb(m)
+t41:=ande2(lb(n),<n>p,mn):<n>p
+t42:=ande2(lb(m),<m>p,mm):<m>p
+t43:=<m>t39:lbprop(n,m)
+t44:=<n>t40:lbprop(m,n)
+t45:=mp(<m>p,lessis(n,m),t42,t43):lessis(n,m)
+t46:=mp(<n>p,lessis(m,n),t41,t44):lessis(m,n)
+t47:=ore2(more(n,m),is(n,m),satz14(m,n,t46),satz10d(n,m,t45)):is(n,m)
+p@t48:=[x:nat][y:nat][u:min(x)][v:min(y)]t47(x,y,u,v):amone(nat,[x:nat]min(p,x))
+-327
+s@satz27a:=onei(nat,[x:nat]min(p,x),t48".327",satz27):one([x:nat]min(p,x))
++428
+x@[f:[y:nat]nat]
+prop1:=all([y:nat]is(<<y>suc>f,pl(<y>f,x))):'prop'
+prop2:=and(is(<1>f,x),prop1):'prop'
+x@[a:[y:nat]nat][b:[y:nat]nat][pa:prop2(a)][pb:prop2(b)][y:nat]
+prop3:=is(<y>a,<y>b):'prop'
+pb@t1:=ande1(is(<1>a,x),prop1(a),pa):is(<1>a,x)
+t2:=ande1(is(<1>b,x),prop1(b),pb):is(<1>b,x)
+t3:=tris2(nat,<1>a,<1>b,x,t1,t2):prop3(1)
+y@[p:prop3(y)]
+t4:=ispl1(<y>a,<y>b,x,p):is(pl(<y>a,x),pl(<y>b,x))
+t5:=ande2(is(<1>a,x),prop1(a),pa):prop1(a)
+t6:=ande2(is(<1>b,x),prop1(b),pb):prop1(b)
+t7:=<y>t5:is(<<y>suc>a,pl(<y>a,x))
+t8:=<y>t6:is(<<y>suc>b,pl(<y>b,x))
+t9:=tr3is(nat,<<y>suc>a,pl(<y>a,x),pl(<y>b,x),<<y>suc>b,t7,t4,symis(nat,<<y>suc>b,pl(<y>b,x),t8)):prop3(<y>suc)
+y@t10:=induction([z:nat]prop3(z),t3,[z:nat][u:prop3(z)]t9(z,u),y):prop3(y)
+pb@t11:=fisi(nat,nat,a,b,[y:nat]t10(y)):is"e"([y:nat]nat,a,b)
+x@a1:=[z:[y:nat]nat][u:[y:nat]nat][v:prop2(z)][w:prop2(u)]t11(z,u,v,w):amone([y:nat]nat,[z:[y:nat]nat]prop2(z))
+prop4:=some"l"([y:nat]nat,[z:[y:nat]nat]prop2(z)):'prop'
+@id:=[y:nat]y:[y:nat]nat
+t12:=[x:nat]satz4e(x):prop1(1,id)
+t13:=andi(is(<1>id,1),prop1(1,id),refis(nat,1),t12):prop2(1,id)
+t14:=somei([y:nat]nat,[z:[y:nat]nat]prop2(1,z),id,t13):prop4(1)
+x@[p:prop4(x)][f:[y:nat]nat][pf:prop2(f)]
+g:=[y:nat]pl(<y>f,y):[y:nat]nat
+t15:=ande1(is(<1>f,x),prop1(f),pf):is(<1>f,x)
+t16:=tris(nat,<1>g,pl(x,1),<x>suc,ispl1(<1>f,x,1,t15),satz4a(x)):is(<1>g,<x>suc)
+[y:nat]
+t17:=ande2(is(<1>f,x),prop1(f),pf):prop1(f)
+t18:=<y>t17:is(<<y>suc>f,pl(<y>f,x))
+t19:=tris(nat,<<y>suc>g,pl(pl(<y>f,x),<y>suc),pl(<y>f,pl(x,<y>suc)),ispl1(<<y>suc>f,pl(<y>f,x),<y>suc,t18),asspl1(<y>f,x,<y>suc)):is(<<y>suc>g,pl(<y>f,pl(x,<y>suc)))
+t20:=tr3is(nat,pl(x,<y>suc),<pl(x,y)>suc,pl(<x>suc,y),pl(y,<x>suc),satz4b(x,y),satz4h(x,y),compl(<x>suc,y)):is(pl(x,<y>suc),pl(y,<x>suc))
+t21:=tr3is(nat,<<y>suc>g,pl(<y>f,pl(x,<y>suc)),pl(<y>f,pl(y,<x>suc)),pl(<y>g,<x>suc),t19,ispl2(pl(x,<y>suc),pl(y,<x>suc),<y>f,t20),asspl2(<y>f,y,<x>suc)):is(<<y>suc>g,pl(<y>g,<x>suc))
+pf@t22:=[y:nat]t21(y):prop1(<x>suc,g)
+t23:=andi(is(<1>g,<x>suc),prop1(<x>suc,g),t16,t22):prop2(<x>suc,g)
+t24:=somei([y:nat]nat,[z:[y:nat]nat]prop2(<x>suc,z),g,t23):prop4(<x>suc)
+p@t25:=someapp([y:nat]nat,[z:[y:nat]nat]prop2(z),p,prop4(<x>suc),[z:[y:nat]nat][u:prop2(z)]t24(z,u)):prop4(<x>suc)
+x@b1:=induction([y:nat]prop4(y),t14,[y:nat][u:prop4(y)]t25(y,u),x):prop4(x)
+-428
+x@satz28:=onei([y:nat]nat,[z:[y:nat]nat]prop2".428"(z),a1".428",b1".428"):one"e"([y:nat]nat,[z:[y:nat]nat]and(is(<1>z,x),all([y:nat]is(<<y>suc>z,pl(<y>z,x)))))
+times:=ind([y:nat]nat,[z:[y:nat]nat]prop2".428"(z),satz28):[y:nat]nat
+y@ts:=<y>times:nat
++*428
+x@t26:=oneax([y:nat]nat,[z:[y:nat]nat]prop2(z),satz28):prop2(times)
+-428
+x@satz28a:=ande1(is(<1>times,x),prop1".428"(times),t26".428"):is(ts(x,1),x)
++*428
+x@t27:=ande2(is(<1>times,x),prop1(times),t26):prop1(times)
+-428
+y@satz28b:=<y>t27".428":is(ts(x,<y>suc),pl(ts(x,y),x))
++*428
+@t28:=t11(1,times(1),id,t26(1),t13):is"e"([y:nat]nat,times(1),id)
+-428
+x@satz28c:=fise(nat,nat,times(1),id".428",t28".428",x):is(ts(1,x),x)
++*428
+x@t29:=t11(<x>suc,times(<x>suc),[y:nat]pl(<y>times,y),t26(<x>suc),t23(b1,times,t26)):is"e"([y:nat]nat,times(<x>suc),[y:nat]pl(<y>times,y))
+-428
+y@satz28d:=fise(nat,nat,times(<x>suc),[z:nat]pl(<z>times,z),t29".428",y):is(ts(<x>suc,y),pl(ts(x,y),y))
+x@satz28e:=symis(nat,ts(x,1),x,satz28a):is(x,ts(x,1))
+y@satz28f:=symis(nat,ts(x,<y>suc),pl(ts(x,y),x),satz28b):is(pl(ts(x,y),x),ts(x,<y>suc))
+x@satz28g:=symis(nat,ts(1,x),x,satz28c):is(x,ts(1,x))
+y@satz28h:=symis(nat,ts(<x>suc,y),pl(ts(x,y),y),satz28d):is(pl(ts(x,y),y),ts(<x>suc,y))
+z@[i:is(x,y)]
+ists1:=isf(nat,nat,[u:nat]ts(u,z),x,y,i):is(ts(x,z),ts(y,z))
+ists2:=isf(nat,nat,[u:nat]ts(z,u),x,y,i):is(ts(z,x),ts(z,y))
+z@[u:nat][i:is(x,y)][j:is(z,u)]
+ists12:=tris(nat,ts(x,z),ts(y,z),ts(y,u),ists1(i),ists2(z,u,y,j)):is(ts(x,z),ts(y,u))
++429
+y@prop1:=is(ts(x,y),ts(y,x)):'prop'
+t1:=satz28a(y):is(ts(y,1),y)
+t2:=satz28c(y):is(ts(1,y),y)
+t3:=tris2(nat,ts(1,y),ts(y,1),y,t2,t1):prop1(1,y)
+[p:prop1(x,y)]
+t4:=tris(nat,pl(ts(x,y),y),pl(ts(y,x),y),ts(y,<x>suc),ispl1(ts(x,y),ts(y,x),y,p),satz28f(y,x)):is(pl(ts(x,y),y),ts(y,<x>suc))
+t5:=satz28d:is(ts(<x>suc,y),pl(ts(x,y),y))
+t6:=tris(nat,ts(<x>suc,y),pl(ts(x,y),y),ts(y,<x>suc),t5,t4):prop1(<x>suc,y)
+-429
+y@satz29:=induction([z:nat]prop1".429"(z,y),t3".429",[z:nat][u:prop1".429"(z,y)]t6".429"(z,y,u),x):is(ts(x,y),ts(y,x))
+comts:=satz29:is(ts(x,y),ts(y,x))
++*429
+x@t7:=tris(nat,ts(x,1),x,ts(1,x),satz28a,satz28g):prop1(1)
+y@[p:prop1(y)]
+t8:=tr3is(nat,ts(x,<y>suc),pl(ts(x,y),x),pl(ts(y,x),x),ts(<y>suc,x),satz28b(x,y),ispl1(ts(x,y),ts(y,x),x,p),satz28h(y,x)):prop1(<y>suc)
+y@anders:=induction([z:nat]prop1(z),t7,[z:nat][u:prop1(z)]t8(z,u),y):is(ts(x,y),ts(y,x))
+-429
++430
+z@prop1:=is(ts(x,pl(y,z)),pl(ts(x,y),ts(x,z))):'prop'
+y@t1:=tr3is(nat,ts(x,pl(y,1)),ts(x,<y>suc),pl(ts(x,y),x),pl(ts(x,y),ts(x,1)),ists2(pl(y,1),<y>suc,x,satz4a(y)),satz28b,ispl2(x,ts(x,1),ts(x,y),satz28e(x))):prop1(1)
+z@[p:prop1(z)]
+t2:=tr3is(nat,ts(x,pl(y,<z>suc)),ts(x,<pl(y,z)>suc),pl(ts(x,pl(y,z)),x),pl(pl(ts(x,y),ts(x,z)),x),ists2(pl(y,<z>suc),<pl(y,z)>suc,x,satz4b(y,z)),satz28b(x,pl(y,z)),ispl1(ts(x,pl(y,z)),pl(ts(x,y),ts(x,z)),x,p)):is(ts(x,pl(y,<z>suc)),pl(pl(ts(x,y),ts(x,z)),x))
+t3:=tr3is(nat,ts(x,pl(y,<z>suc)),pl(pl(ts(x,y),ts(x,z)),x),pl(ts(x,y),pl(ts(x,z),x)),pl(ts(x,y),ts(x,<z>suc)),t2,asspl1(ts(x,y),ts(x,z),x),ispl2(pl(ts(x,z),x),ts(x,<z>suc),ts(x,y),satz28f(x,z))):prop1(<z>suc)
+-430
+z@satz30:=induction([u:nat]prop1".430"(u),t1".430",[u:nat][v:prop1".430"(u)]t3".430"(u,v),z):is(ts(x,pl(y,z)),pl(ts(x,y),ts(x,z)))
+disttp1:=tr3is(nat,ts(pl(x,y),z),ts(z,pl(x,y)),pl(ts(z,x),ts(z,y)),pl(ts(x,z),ts(y,z)),comts(pl(x,y),z),satz30(z,x,y),ispl12(ts(z,x),ts(x,z),ts(z,y),ts(y,z),comts(z,x),comts(z,y))):is(ts(pl(x,y),z),pl(ts(x,z),ts(y,z)))
+disttp2:=satz30:is(ts(x,pl(y,z)),pl(ts(x,y),ts(x,z)))
+distpt1:=symis(nat,ts(pl(x,y),z),pl(ts(x,z),ts(y,z)),disttp1):is(pl(ts(x,z),ts(y,z)),ts(pl(x,y),z))
+distpt2:=symis(nat,ts(x,pl(y,z)),pl(ts(x,y),ts(x,z)),disttp2):is(pl(ts(x,y),ts(x,z)),ts(x,pl(y,z)))
++431
+prop1:=is(ts(ts(x,y),z),ts(x,ts(y,z))):'prop'
+y@t1:=tris(nat,ts(ts(x,y),1),ts(x,y),ts(x,ts(y,1)),satz28a(ts(x,y)),ists2(y,ts(y,1),x,satz28e(y))):prop1(1)
+z@[p:prop1(z)]
+t2:=tr4is(nat,ts(ts(x,y),<z>suc),pl(ts(ts(x,y),z),ts(x,y)),pl(ts(x,ts(y,z)),ts(x,y)),ts(x,pl(ts(y,z),y)),ts(x,ts(y,<z>suc)),satz28b(ts(x,y),z),ispl1(ts(ts(x,y),z),ts(x,ts(y,z)),ts(x,y),p),distpt2(x,ts(y,z),y),ists2(pl(ts(y,z),y),ts(y,<z>suc),x,satz28f(y,z))):prop1(<z>suc)
+-431
+satz31:=induction([u:nat]prop1".431"(u),t1".431",[u:nat][v:prop1".431"(u)]t2".431"(u,v),z):is(ts(ts(x,y),z),ts(x,ts(y,z)))
+assts1:=satz31:is(ts(ts(x,y),z),ts(x,ts(y,z)))
+assts2:=symis(nat,ts(ts(x,y),z),ts(x,ts(y,z)),assts1):is(ts(x,ts(y,z)),ts(ts(x,y),z))
+[m:more(x,y)]
++432
+[u:nat][du:diffprop(u)]
+t1:=tris(nat,ts(x,z),ts(pl(y,u),z),pl(ts(y,z),ts(u,z)),ists1(x,pl(y,u),z,du),disttp1(y,u,z)):is(ts(x,z),pl(ts(y,z),ts(u,z)))
+t2:=somei(nat,[v:nat]diffprop(ts(x,z),ts(y,z),v),ts(u,z),t1):more(ts(x,z),ts(y,z))
+-432
+satz32a:=someapp(nat,[u:nat]diffprop(u),m,more(ts(x,z),ts(y,z)),[u:nat][v:diffprop(u)]t2".432"(u,v)):more(ts(x,z),ts(y,z))
+z@[i:is(x,y)]
+satz32b:=ists1(x,y,z,i):is(ts(x,z),ts(y,z))
+z@[l:less(x,y)]
+satz32c:=satz11(ts(y,z),ts(x,z),satz32a(y,x,z,satz12(x,y,l))):less(ts(x,z),ts(y,z))
++*432
+l@anders1:=satz32a(y,x,z,l):less(ts(x,z),ts(y,z))
+-432
+m@satz32d:=ismore12(ts(x,z),ts(z,x),ts(y,z),ts(z,y),comts(x,z),comts(y,z),satz32a):more(ts(z,x),ts(z,y))
+i@satz32e:=ists2(x,y,z,i):is(ts(z,x),ts(z,y))
+l@satz32f:=isless12(ts(x,z),ts(z,x),ts(y,z),ts(z,y),comts(x,z),comts(y,z),satz32c):less(ts(z,x),ts(z,y))
++*432
+l@anders2:=satz32d(y,x,z,l):less(ts(z,x),ts(z,y))
+-432
+z@[u:nat][i:is(x,y)][m:more(z,u)]
+satz32g:=ismore2(ts(x,u),ts(y,u),ts(x,z),ists1(x,y,u,i),satz32d(z,u,x,m)):more(ts(x,z),ts(y,u))
+satz32h:=ismore12(ts(x,z),ts(z,x),ts(y,u),ts(u,y),comts(x,z),comts(y,u),satz32g):more(ts(z,x),ts(u,y))
+i@[l:less(z,u)]
+satz32j:=isless2(ts(x,u),ts(y,u),ts(x,z),ists1(x,y,u,i),satz32f(z,u,x,l)):less(ts(x,z),ts(y,u))
+satz32k:=isless12(ts(x,z),ts(z,x),ts(y,u),ts(u,y),comts(x,z),comts(y,u),satz32j):less(ts(z,x),ts(u,y))
+z@[m:moreis(x,y)]
++*432
+m@[n:more(x,y)]
+t3:=moreisi1(ts(x,z),ts(y,z),satz32a(n)):moreis(ts(x,z),ts(y,z))
+m@[i:is(x,y)]
+t4:=moreisi2(ts(x,z),ts(y,z),ists1(x,y,z,i)):moreis(ts(x,z),ts(y,z))
+-432
+m@satz32l:=orapp(more(x,y),is(x,y),moreis(ts(x,z),ts(y,z)),m,[u:more(x,y)]t3".432"(u),[u:is(x,y)]t4".432"(u)):moreis(ts(x,z),ts(y,z))
+satz32m:=ismoreis12(ts(x,z),ts(z,x),ts(y,z),ts(z,y),comts(x,z),comts(y,z),satz32l):moreis(ts(z,x),ts(z,y))
+z@[l:lessis(x,y)]
+satz32n:=satz13(ts(y,z),ts(x,z),satz32l(y,x,z,satz14(l))):lessis(ts(x,z),ts(y,z))
+satz32o:=satz13(ts(z,y),ts(z,x),satz32m(y,x,z,satz14(l))):lessis(ts(z,x),ts(z,y))
++433
+z@t1:=satz10a(x,y):or3(is(x,y),more(x,y),less(x,y))
+t2:=satz10b(ts(x,z),ts(y,z)):ec3(is(ts(x,z),ts(y,z)),more(ts(x,z),ts(y,z)),less(ts(x,z),ts(y,z)))
+-433
+z@[m:more(ts(x,z),ts(y,z))]
+satz33a:=th11"l.ec3"(is(x,y),more(x,y),less(x,y),is(ts(x,z),ts(y,z)),more(ts(x,z),ts(y,z)),less(ts(x,z),ts(y,z)),t1".433",t2".433",[u:is(x,y)]satz32b(x,y,z,u),[u:more(x,y)]satz32a(x,y,z,u),[u:less(x,y)]satz32c(x,y,z,u),m):more(x,y)
+z@[i:is(ts(x,z),ts(y,z))]
+satz33b:=th10"l.ec3"(is(x,y),more(x,y),less(x,y),is(ts(x,z),ts(y,z)),more(ts(x,z),ts(y,z)),less(ts(x,z),ts(y,z)),t1".433",t2".433",[u:is(x,y)]satz32b(x,y,z,u),[u:more(x,y)]satz32a(x,y,z,u),[u:less(x,y)]satz32c(x,y,z,u),i):is(x,y)
+z@[l:less(ts(x,z),ts(y,z))]
+satz33c:=th12"l.ec3"(is(x,y),more(x,y),less(x,y),is(ts(x,z),ts(y,z)),more(ts(x,z),ts(y,z)),less(ts(x,z),ts(y,z)),t1".433",t2".433",[u:is(x,y)]satz32b(x,y,z,u),[u:more(x,y)]satz32a(x,y,z,u),[u:less(x,y)]satz32c(x,y,z,u),l):less(x,y)
++*433
+l@anders:=satz33a(y,x,z,l):less(x,y)
+-433
+u@[m:more(x,y)][n:more(z,u)]
++434
+t1:=satz32a(x,y,z,m):more(ts(x,z),ts(y,z))
+t2:=ismore12(ts(z,y),ts(y,z),ts(u,y),ts(y,u),comts(z,y),comts(u,y),satz32a(z,u,y,n)):more(ts(y,z),ts(y,u))
+-434
+satz34:=trmore(ts(x,z),ts(y,z),ts(y,u),t1".434",t2".434"):more(ts(x,z),ts(y,u))
++*434
+n@anders:=trmore(ts(x,z),ts(y,z),ts(y,u),satz32a(x,y,z,m),satz32d(z,u,y,n)):more(ts(x,z),ts(y,u))
+-434
+u@[l:less(x,y)][k:less(z,u)]
+satz34a:=satz34(y,x,u,z,l,k):less(ts(x,z),ts(y,u))
++*434
+k@andersa:=satz11(ts(y,u),ts(x,z),satz34(y,x,u,z,satz12(x,y,l),satz12(z,u,k))):less(ts(x,z),ts(y,u))
+-434
+u@[m:moreis(x,y)][n:more(z,u)]
+satz35a:=orapp(more(x,y),is(x,y),more(ts(x,z),ts(y,u)),m,[v:more(x,y)]satz34(v,n),[v:is(x,y)]satz32g(u,v,n)):more(ts(x,z),ts(y,u))
+u@[m:more(x,y)][n:moreis(z,u)]
+satz35b:=orapp(more(z,u),is(z,u),more(ts(x,z),ts(y,u)),n,[v:more(z,u)]satz34(m,v),[v:is(z,u)]satz32h(z,u,x,y,v,m)):more(ts(x,z),ts(y,u))
+u@[l:lessis(x,y)][k:less(z,u)]
+satz35c:=satz35a(y,x,u,z,satz14(x,y,l),k):less(ts(x,z),ts(y,u))
+u@[l:less(x,y)][k:lessis(z,u)]
+satz35d:=satz35b(y,x,u,z,l,satz14(z,u,k)):less(ts(x,z),ts(y,u))
+u@[m:moreis(x,y)][n:moreis(z,u)]
++436
+[i:is(x,y)][j:is(z,u)]
+t1:=moreisi2(ts(x,z),ts(y,u),tris(nat,ts(x,z),ts(y,z),ts(y,u),ists1(x,y,z,i),ists2(z,u,y,j))):moreis(ts(x,z),ts(y,u))
+i@[o:more(z,u)]
+t2:=moreisi1(ts(x,z),ts(y,u),satz35a(m,o)):moreis(ts(x,z),ts(y,u))
+i@t3:=orapp(more(z,u),is(z,u),moreis(ts(x,z),ts(y,u)),n,[v:more(z,u)]t2(v),[v:is(z,u)]t1(v)):moreis(ts(x,z),ts(y,u))
+n@[o:more(x,y)]
+t4:=moreisi1(ts(x,z),ts(y,u),satz35b(o,n)):moreis(ts(x,z),ts(y,u))
+-436
+satz36:=orapp(more(x,y),is(x,y),moreis(ts(x,z),ts(y,u)),m,[v:more(x,y)]t4".436"(v),[v:is(x,y)]t3".436"(v)):moreis(ts(x,z),ts(y,u))
++*436
+n@[o:more(x,y)]
+t5:=moreisi1(ts(x,z),ts(y,u),satz35b(o,n)):moreis(ts(x,z),ts(y,u))
+n@[i:is(x,y)]
+t6:=ismoreis2(ts(x,u),ts(y,u),ts(x,z),ists1(u,i),satz32m(z,u,x,n)):moreis(ts(x,z),ts(y,u))
+n@anders:=orapp(more(x,y),is(x,y),moreis(ts(x,z),ts(y,u)),m,[v:more(x,y)]t5(v),[v:is(x,y)]t6(v)):moreis(ts(x,z),ts(y,u))
+-436
+u@[l:lessis(x,y)][k:lessis(z,u)]
+satz36a:=satz13(ts(y,u),ts(x,z),satz36(y,x,u,z,satz14(l),satz14(z,u,k))):lessis(ts(x,z),ts(y,u))
+y@[m:more(x,y)]
++mn
+t1:=onei(nat,[z:nat]diffprop(x,y,z),satz8b(x,y),m):one([z:nat]diffprop(x,y,z))
+-mn
+mn:=ind(nat,[z:nat]diffprop(x,y,z),t1".mn"):nat
++*mn
+m@th1a:=oneax(nat,[z:nat]diffprop(x,y,z),t1):is(x,pl(y,mn(x,y,m)))
+th1b:=symis(nat,x,pl(y,mn(x,y,m)),th1a):is(pl(y,mn(x,y,m)),x)
+th1c:=tris(nat,x,pl(y,mn(x,y,m)),pl(mn(x,y,m),y),th1a,compl(y,mn(x,y,m))):is(x,pl(mn(x,y,m),y))
+th1d:=symis(nat,x,pl(mn(x,y,m),y),th1c):is(pl(mn(x,y,m),y),x)
+y@[z:nat][m:more(x,y)][i:is(pl(y,z),x)]
+th1e:=<th1a(m)><symis(nat,pl(y,z),x,i)><mn(x,y,m)><z>satz8b(x,y):is(z,mn(x,y,m))
+-mn
+z@[u:nat][m:more(x,z)][n:more(y,u)][i:is(x,y)][j:is(z,u)]
++*mn
+j@t2:=tr3is(nat,pl(u,mn(x,z,m)),pl(z,mn(x,z,m)),x,y,ispl1(u,z,mn(x,z,m),symis(nat,z,u,j)),th1b(x,z,m),i):is(pl(u,mn(x,z,m)),y)
+-mn
+j@ismn12:=th1e".mn"(y,u,mn(x,z,m),n,t2".mn"):is(mn(x,z,m),mn(y,u,n))
+@[n:nat]
+1to:=ot(nat,[x:nat]lessis(x,n)):'type'
+[x:nat][l:lessis(x,n)]
+outn:=out(nat,[y:nat]lessis(y,n),x,l):1to(n)
+n@[xn:1to(n)]
+inn:=in"e"(nat,[y:nat]lessis(y,n),xn):nat
+1top:=inp(nat,[y:nat]lessis(y,n),xn):lessis(inn,n)
+l@[y:nat][k:lessis(y,n)][i:is(x,y)]
+isoutni:=isouti(nat,[z:nat]lessis(z,n),x,l,y,k,i):is"e"(1to(n),outn(x,l),outn(y,k))
+k@[i:is"e"(1to(n),outn(x,l),outn(y,k))]
+isoutne:=isoute(nat,[z:nat]lessis(z,n),x,l,y,k,i):is(x,y)
+xn@[yn:1to(n)][i:is"e"(1to(n),xn,yn)]
+isinni:=isini(nat,[z:nat]lessis(z,n),xn,yn,i):is(inn(xn),inn(yn))
+yn@[i:is(inn(xn),inn(yn))]
+isinne:=isine(nat,[z:nat]lessis(z,n),xn,yn,i):is"e"(1to(n),xn,yn)
+xn@isoutinn:=isoutin(nat,[y:nat]lessis(y,n),xn):is"e"(1to(n),xn,outn(inn(xn),1top(xn)))
+l@isinoutn:=isinout(nat,[y:nat]lessis(y,n),x,l):is(x,inn(outn(x,l)))
+@1o:=outn(1,1,lessisi2(1,1,refis(nat,1))):1to(1)
+[u:1to(1)]
++singlet
+u0:=inn(1,u):nat
+t1:=1top(1,u):lessis(u0,1)
+t2:=ore2(more(u0,1),is(u0,1),satz24(u0),satz10d(u0,1,t1)):is(u0,1)
+th1:=tris(1to(1),u,outn(1,u0,t1),1o,isoutinn(1,u),isoutni(1,u0,t1,1,lessisi2(1,1,refis(nat,1)),t2)):is"e"(1to(1),u,1o)
+-singlet
+@2:=pl(1,1):nat
+[x:nat]
++pair
+[l:lessis(x,2)][n:nis(x,2)]
+t1:=satz26(1,x,ore1(less(x,2),is(x,2),l,n)):lessis(x,1)
+t2:=ore2(more(x,1),is(x,1),satz24(x),satz10d(x,1,t1)):is(x,1)
+l@th1:=th2"l.or"(is(x,1),is(x,2),[t:nis(x,2)]t2(t)):or(is(x,1),is(x,2))
+@th2:=th1"e.notis"(nat,<1>suc,1,2,<1>ax3,satz4e(1)):nis(2,1)
+-pair
+@1t:=outn(2,1,satz24a(2)):1to(2)
+2t:=outn(2,2,lessisi2(2,2,refis(nat,2))):1to(2)
++*pair
+@[u:1to(2)]
+u0:=inn(2,u):nat
+t3:=1top(2,u):lessis(u0,2)
+[i:is(u0,1)]
+t4:=isoutni(2,u0,t3,1,satz24a(2),i):is"e"(1to(2),outn(2,u0,t3),1t)
+t5:=tris(1to(2),u,outn(2,u0,t3),1t,isoutinn(2,u),t4):is"e"(1to(2),u,1t)
+u@[i:is(u0,2)]
+t6:=isoutni(2,u0,t3,2,lessisi2(2,2,refis(nat,2)),i):is"e"(1to(2),outn(2,u0,t3),2t)
+t7:=tris(1to(2),u,outn(2,u0,t3),2t,isoutinn(2,u),t6):is"e"(1to(2),u,2t)
+u@th3:=th9"l.or"(is(u0,1),is(u0,2),is"e"(1to(2),u,1t),is"e"(1to(2),u,2t),th1(u0,t3),[t:is(u0,1)]t5(t),[t:is(u0,2)]t7(t)):or(is"e"(1to(2),u,1t),is"e"(1to(2),u,2t))
+@[i:is"e"(1to(2),2t,1t)]
+t9:=isini(nat,[x:nat]lessis(x,2),2t,1t,i):is(u0(2t),u0(1t))
+t10:=tr3is(nat,2,u0(2t),u0(1t),1,isinoutn(2,2,lessisi2(2,2,refis(nat,2))),t9,symis(nat,1,u0(1t),isinoutn(2,1,satz24a(2)))):is(2,1)
+@th4:=th3"l.imp"(is"e"(1to(2),2t,1t),is(2,1),th2,[t:is"e"(1to(2),2t,1t)]t10(t)):not(is"e"(1to(2),2t,1t))
+-pair
+@[alpha:'type']
+pair1type:=[x:1to(2)]alpha:'type'
+[a:alpha][b:alpha]
+pair1:=[x:1to(2)]ite(is"e"(1to(2),x,1t),alpha,a,b):pair1type
+alpha@[p:pair1type]
+first1:=<1t>p:alpha
+second1:=<2t>p:alpha
+b@first1is1:=itet(is"e"(1to(2),1t,1t),alpha,a,b,refis(1to(2),1t)):is"e"(alpha,first1(pair1),a)
+first1is2:=symis(alpha,first1(pair1),a,first1is1):is"e"(alpha,a,first1(pair1))
+second1is1:=itef(is"e"(1to(2),2t,1t),alpha,a,b,th4".pair"):is"e"(alpha,second1(pair1),b)
+second1is2:=symis(alpha,second1(pair1),b,second1is1):is"e"(alpha,b,second1(pair1))
++*pair
+p@[q:pair1type][i:is"e"(alpha,first1(p),first1(q))][j:is"e"(alpha,second1(p),second1(q))][u:1to(2)][u1:is"e"(1to(2),u,1t)]
+t11:=isf(1to(2),alpha,p,u,1t,u1):is"e"(alpha,<u>p,first1(p))
+t12:=symis(alpha,<u>q,first1(q),isf(1to(2),alpha,q,u,1t,u1)):is"e"(alpha,first1(q),<u>q)
+t13:=tr3is(alpha,<u>p,first1(p),first1(q),<u>q,t11,i,t12):is"e"(alpha,<u>p,<u>q)
+u@[u2:is"e"(1to(2),u,2t)]
+t14:=isf(1to(2),alpha,p,u,2t,u2):is"e"(alpha,<u>p,second1(p))
+t15:=symis(alpha,<u>q,second1(q),isf(1to(2),alpha,q,u,2t,u2)):is"e"(alpha,second1(q),<u>q)
+t16:=tr3is(alpha,<u>p,second1(p),second1(q),<u>q,t14,j,t15):is"e"(alpha,<u>p,<u>q)
+u@t17:=orapp(is"e"(1to(2),u,1t),is"e"(1to(2),u,2t),is"e"(alpha,<u>p,<u>q),th3(u),[t:is"e"(1to(2),u,1t)]t13(t),[t:is"e"(1to(2),u,2t)]t16(t)):is"e"(alpha,<u>p,<u>q)
+j@th5:=fisi(1to(2),alpha,p,q,[t:1to(2)]t17(t)):is"e"(pair1type,p,q)
+p@q0:=pair1(first1,second1):pair1type
+t18:=first1is1(first1(p),second1):is"e"(alpha,first1(q0),first1(p))
+t19:=second1is1(first1,second1):is"e"(alpha,second1(q0),second1(p))
+-pair
+p@pair1is1:=th5".pair"(q0".pair",p,t18".pair",t19".pair"):is"e"(pair1type,pair1(first1,second1),p)
+pair1is2:=symis(pair1type,pair1(first1,second1),p,pair1is1):is"e"(pair1type,p,pair1(first1,second1))
+@[x:nat]
+lessisi3:=lessisi2(x,x,refis(nat,x)):lessis(x,x)
+1out:=outn(x,1,satz24a(x)):1to(x)
+xout:=outn(x,x,lessisi3(x)):1to(x)
+[y:nat][l:lessis(y,x)][u:1to(y)]
++left
+ui:=inn(y,u):nat
+t1:=1top(y,u):lessis(ui,y)
+t2:=trlessis(ui,y,x,t1,l):lessis(ui,x)
+-left
+left1to:=outn(x,ui".left",t2".left"):1to(x)
+[v:1to(y)][i:is"e"(1to(x),left1to(u),left1to(v))]
++*left
+i@t3:=isoutne(x,ui,t2,ui(v),t2(v),i):is(ui,ui(v))
+-left
+i@thleft1:=isinne(y,u,v,t3".left"):is"e"(1to(y),u,v)
+l@thleft2:=[u:1to(y)][v:1to(y)][t:is"e"(1to(x),left1to(u),left1to(v))]thleft1(u,v,t):injective(1to(y),1to(x),[t:1to(y)]left1to(t))
+y@[u:1to(y)]
++right
+ui:=inn(y,u):nat
+t4:=1top(y,u):lessis(ui,y)
+t5:=satz19o(ui,y,x,t4):lessis(pl(x,ui),pl(x,y))
+-right
+right1to:=outn(pl(x,y),pl(x,ui".right"),t5".right"):1to(pl(x,y))
+[v:1to(y)][i:is"e"(1to(pl(x,y)),right1to(u),right1to(v))]
++*right
+i@t6:=isoutne(pl(x,y),pl(x,ui(u)),t5(u),pl(x,ui(v)),t5(v),i):is(pl(x,ui(u)),pl(x,ui(v)))
+t7:=satz20e(ui(u),ui(v),x,t6):is(ui(u),ui(v))
+-right
+i@thright1:=isinne(y,u,v,t7".right"):is"e"(1to(y),u,v)
+@[alpha:'type'][x:nat][y:nat][l:lessis(y,x)][f:[t:1to(x)]alpha]
+left:=[t:1to(y)]<left1to(x,y,l,t)>f:[t:1to(y)]alpha
+y@[f:[t:1to(pl(x,y))]alpha]
+right:=[t:1to(y)]<right1to(x,y,t)>f:[t:1to(y)]alpha
+y@[i:is(y,x)][f:[t:1to(y)]alpha]
++*left
+f@t4:=lessisi2(y,x,i):lessis(y,x)
+t5:=lessisi2(x,y,symis(nat,y,x,i)):lessis(x,y)
+f1:=left(y,x,t5,f):[t:1to(x)]alpha
+f2:=left(t4,f1):[t:1to(y)]alpha
+[u:1to(y)]
+t6:=isinoutn(x,inn(y,u),trlessis(inn(y,u),y,x,1top(y,u),t4)):is(inn(y,u),inn(x,left1to(x,y,t4,u)))
+t7:=tris(1to(y),u,outn(y,inn(y,u),1top(y,u)),left1to(y,x,t5,left1to(x,y,t4,u)),isoutinn(y,u),isoutni(y,inn(y,u),1top(y,u),inn(x,left1to(x,y,t4,u)),trlessis(inn(x,left1to(x,y,t4,u)),x,y,1top(x,left1to(x,y,t4,u)),t5),t6)):is"e"(1to(y),u,left1to(y,x,t5,left1to(x,y,t4,u)))
+t8:=isf(1to(y),alpha,f,u,left1to(y,x,t5,left1to(x,y,t4,u)),t7):is"e"(alpha,<u>f,<u>f2)
+-left
+f@thleft:=fisi(1to(y),alpha,f,f2".left",[t:1to(y)]t8".left"(t)):is"e"([t:1to(y)]alpha,f,left(x,y,lessisi2(y,x,i),left(y,x,lessisi2(x,y,symis(nat,y,x,i)),f)))
+@frac:=pair1type(nat):'type'
+[x1:nat][x2:nat]
+fr:=pair1(nat,x1,x2):frac
+@[x:frac]
+num:=first1(nat,x):nat
+den:=second1(nat,x):nat
+x2@numis:=first1is1(nat,x1,x2):is(num(fr(x1,x2)),x1)
+isnum:=first1is2(nat,x1,x2):is(x1,num(fr(x1,x2)))
+denis:=second1is1(nat,x1,x2):is(den(fr(x1,x2)),x2)
+isden:=second1is2(nat,x1,x2):is(x2,den(fr(x1,x2)))
+x@1x:=num(x):nat
+2x:=den(x):nat
+fris:=pair1is1(nat,x):is"e"(frac,fr(1x,2x),x)
+isfr:=pair1is2(nat,x):is"e"(frac,x,fr(1x,2x))
+x2@[y1:nat][y2:nat]
+12isnd:=ists12(x1,num(fr(x1,x2)),y2,den(fr(y1,y2)),isnum(x1,x2),isden(y1,y2)):is(ts(x1,y2),ts(num(fr(x1,x2)),den(fr(y1,y2))))
+ndis12:=symis(nat,ts(x1,y2),ts(num(fr(x1,x2)),den(fr(y1,y2))),12isnd):is(ts(num(fr(x1,x2)),den(fr(y1,y2))),ts(x1,y2))
+x@[n1:nat][n2:nat]
+1disnd:=ists1(n1,num(fr(n1,n2)),2x,isnum(n1,n2)):is(ts(n1,2x),ts(num(fr(n1,n2)),2x))
+ndis1d:=symis(nat,ts(n1,2x),ts(num(fr(n1,n2)),2x),1disnd):is(ts(num(fr(n1,n2)),2x),ts(n1,2x))
+n2isnd:=ists2(n2,den(fr(n1,n2)),1x,isden(n1,n2)):is(ts(1x,n2),ts(1x,den(fr(n1,n2))))
+ndisn2:=symis(nat,ts(1x,n2),ts(1x,den(fr(n1,n2))),n2isnd):is(ts(1x,den(fr(n1,n2))),ts(1x,n2))
+x2@[n:nat][i:is(x1,n)]
+isn:=isf(nat,frac,[t:nat]fr(t,x2),x1,n,i):is"e"(frac,fr(x1,x2),fr(n,x2))
+n@[i:is(x2,n)]
+isd:=isf(nat,frac,[t:nat]fr(x1,t),x2,n,i):is"e"(frac,fr(x1,x2),fr(x1,n))
+y2@[i:is(x1,y1)][j:is(x2,y2)]
+isnd:=tris(frac,fr(x1,x2),fr(y1,x2),fr(y1,y2),isn(x1,x2,y1,i),isd(y1,x2,y2,j)):is"e"(frac,fr(x1,x2),fr(y1,y2))
+x@[y:frac]
+1y:=num(y):nat
+2y:=den(y):nat
+eq:=is(ts(1x,2y),ts(1y,2x)):'prop'
+y2@[i:is(ts(x1,y2),ts(y1,x2))]
+eqi12:=tr3is(nat,ts(num(fr(x1,x2)),den(fr(y1,y2))),ts(x1,y2),ts(y1,x2),ts(num(fr(y1,y2)),den(fr(x1,x2))),ndis12(x1,x2,y1,y2),i,12isnd(y1,y2,x1,x2)):eq(fr(x1,x2),fr(y1,y2))
+n2@[i:is(ts(1x,n2),ts(n1,2x))]
+eqi1:=isp(frac,[t:frac]eq(t,fr(n1,n2)),fr(1x,2x),x,eqi12(1x,2x,n1,n2,i),fris):eq(x,fr(n1,n2))
+n2@[i:is(ts(n1,2x),ts(1x,n2))]
+eqi2:=isp(frac,[t:frac]eq(fr(n1,n2),t),fr(1x,2x),x,eqi12(n1,n2,1x,2x,i),fris):eq(fr(n1,n2),x)
+x@satz37:=refis(nat,ts(1x,2x)):eq(x,x)
+refeq:=satz37:eq(x,x)
+y@[i:is"e"(frac,x,y)]
+refeq1:=isp(frac,[t:frac]eq(x,t),x,y,refeq,i):eq(x,y)
+refeq2:=isp(frac,[t:frac]eq(t,x),x,y,refeq,i):eq(y,x)
+y2@[i:is(x1,y1)][j:is(x2,y2)]
+eqnd:=refeq1(fr(x1,x2),fr(y1,y2),isnd(i,j)):eq(fr(x1,x2),fr(y1,y2))
+x2@[n:nat][i:is(x1,n)]
+eqn:=refeq1(fr(x1,x2),fr(n,x2),isn(n,i)):eq(fr(x1,x2),fr(n,x2))
+n@[i:is(x2,n)]
+eqd:=refeq1(fr(x1,x2),fr(x1,n),isd(n,i)):eq(fr(x1,x2),fr(x1,n))
+y@[e:eq(x,y)]
+satz38:=symis(nat,ts(1x,2y),ts(1y,2x),e):eq(y,x)
+symeq:=satz38:eq(y,x)
+@[a:nat][b:nat][c:nat][d:nat]
++ii1
+t1:=tris(nat,ts(b,ts(c,d)),ts(ts(b,c),d),ts(d,ts(b,c)),assts2(b,c,d),comts(ts(b,c),d)):is(ts(b,ts(c,d)),ts(d,ts(b,c)))
+-ii1
+stets:=tr4is(nat,ts(ts(a,b),ts(c,d)),ts(a,ts(b,ts(c,d))),ts(a,ts(d,ts(b,c))),ts(ts(a,d),ts(b,c)),ts(ts(a,d),ts(c,b)),assts1(a,b,ts(c,d)),ists2(ts(b,ts(c,d)),ts(d,ts(b,c)),a,t1".ii1"),assts2(a,d,ts(b,c)),ists2(ts(b,c),ts(c,b),ts(a,d),comts(b,c))):is(ts(ts(a,b),ts(c,d)),ts(ts(a,d),ts(c,b)))
++*ii1
+d@t2:=tr3is(nat,ts(b,ts(c,d)),ts(ts(c,d),b),ts(ts(d,c),b),ts(d,ts(c,b)),comts(b,ts(c,d)),ists1(ts(c,d),ts(d,c),b,comts(c,d)),assts1(d,c,b)):is(ts(b,ts(c,d)),ts(d,ts(c,b)))
+anders:=tr3is(nat,ts(ts(a,b),ts(c,d)),ts(a,ts(b,ts(c,d))),ts(a,ts(d,ts(c,b))),ts(ts(a,d),ts(c,b)),assts1(a,b,ts(c,d)),ists2(ts(b,ts(c,d)),ts(d,ts(c,b)),a,t2),assts2(a,d,ts(c,b))):is(ts(ts(a,b),ts(c,d)),ts(ts(a,d),ts(c,b)))
+-ii1
+y@[z:frac]
+1z:=num(z):nat
+2z:=den(z):nat
+[e:eq(x,y)][f:eq(y,z)]
++139
+t1:=ists12(ts(1x,2y),ts(1y,2x),ts(1y,2z),ts(1z,2y),e,f):is(ts(ts(1x,2y),ts(1y,2z)),ts(ts(1y,2x),ts(1z,2y)))
+t2:=stets(1x,2y,1y,2z):is(ts(ts(1x,2y),ts(1y,2z)),ts(ts(1x,2z),ts(1y,2y)))
+t3:=tris(nat,ts(ts(1y,2x),ts(1z,2y)),ts(ts(1y,2y),ts(1z,2x)),ts(ts(1z,2x),ts(1y,2y)),stets(1y,2x,1z,2y),comts(ts(1y,2y),ts(1z,2x))):is(ts(ts(1y,2x),ts(1z,2y)),ts(ts(1z,2x),ts(1y,2y)))
+t4:=tr3is(nat,ts(ts(1x,2z),ts(1y,2y)),ts(ts(1x,2y),ts(1y,2z)),ts(ts(1y,2x),ts(1z,2y)),ts(ts(1z,2x),ts(1y,2y)),symis(nat,ts(ts(1x,2y),ts(1y,2z)),ts(ts(1x,2z),ts(1y,2y)),t2),t1,t3):is(ts(ts(1x,2z),ts(1y,2y)),ts(ts(1z,2x),ts(1y,2y)))
+-139
+satz39:=satz33b(ts(1x,2z),ts(1z,2x),ts(1y,2y),t4".139"):eq(x,z)
++*139
+f@anders:=tr4is(nat,ts(ts(1x,2z),ts(1y,2y)),ts(ts(1x,2y),ts(1y,2z)),ts(ts(1y,2x),ts(1z,2y)),ts(ts(1y,2y),ts(1z,2x)),ts(ts(1z,2x),ts(1y,2y)),stets(1x,2z,1y,2y),ists12(ts(1x,2y),ts(1y,2x),ts(1y,2z),ts(1z,2y),e,f),stets(1y,2x,1z,2y),comts(ts(1y,2y),ts(1z,2x))):is(ts(ts(1x,2z),ts(1y,2y)),ts(ts(1z,2x),ts(1y,2y)))
+-139
+f@treq:=satz39:eq(x,z)
+z@[e:eq(z,x)][f:eq(z,y)]
+treq1:=treq(x,z,y,symeq(z,x,e),f):eq(x,y)
+z@[e:eq(x,z)][f:eq(y,z)]
+treq2:=treq(x,z,y,e,symeq(y,z,f)):eq(x,y)
+z@[u:frac][e:eq(x,y)][f:eq(y,z)][g:eq(z,u)]
+tr3eq:=treq(x,y,u,e,treq(y,z,u,f,g)):eq(x,u)
+u@[v:frac][e:eq(x,y)][f:eq(y,z)][g:eq(z,u)][h:eq(u,v)]
+tr4eq:=tr3eq(x,y,z,v,e,f,treq(z,u,v,g,h)):eq(x,v)
+x@[n:nat]
+satz40:=eqi1(ts(1x,n),ts(2x,n),tris(nat,ts(1x,ts(2x,n)),ts(1x,ts(n,2x)),ts(ts(1x,n),2x),ists2(ts(2x,n),ts(n,2x),1x,comts(2x,n)),assts2(1x,n,2x))):eq(x,fr(ts(1x,n),ts(2x,n)))
+satz40a:=symeq(x,fr(ts(1x,n),ts(2x,n)),satz40):eq(fr(ts(1x,n),ts(2x,n)),x)
+x2@[n:nat]
+satz40b:=eqi12(ts(x1,n),ts(x2,n),tris(nat,ts(x1,ts(x2,n)),ts(x1,ts(n,x2)),ts(ts(x1,n),x2),ists2(ts(x2,n),ts(n,x2),x1,comts(x2,n)),assts2(x1,n,x2))):eq(fr(x1,x2),fr(ts(x1,n),ts(x2,n)))
+satz40c:=symeq(fr(x1,x2),fr(ts(x1,n),ts(x2,n)),satz40b):eq(fr(ts(x1,n),ts(x2,n)),fr(x1,x2))
+y@moref:=more(ts(1x,2y),ts(1y,2x)):'prop'
+lessf:=less(ts(1x,2y),ts(1y,2x)):'prop'
+y2@[m:more(ts(x1,y2),ts(y1,x2))]
+morefi12:=ismore12(ts(x1,y2),ts(num(fr(x1,x2)),den(fr(y1,y2))),ts(y1,x2),ts(num(fr(y1,y2)),den(fr(x1,x2))),12isnd(x1,x2,y1,y2),12isnd(y1,y2,x1,x2),m):moref(fr(x1,x2),fr(y1,y2))
+y2@[l:less(ts(x1,y2),ts(y1,x2))]
+lessfi12:=isless12(ts(x1,y2),ts(num(fr(x1,x2)),den(fr(y1,y2))),ts(y1,x2),ts(num(fr(y1,y2)),den(fr(x1,x2))),12isnd(x1,x2,y1,y2),12isnd(y1,y2,x1,x2),l):lessf(fr(x1,x2),fr(y1,y2))
+n2@[m:more(ts(1x,n2),ts(n1,2x))]
+morefi1:=ismore12(ts(1x,n2),ts(1x,den(fr(n1,n2))),ts(n1,2x),ts(num(fr(n1,n2)),2x),n2isnd(x,n1,n2),1disnd(x,n1,n2),m):moref(x,fr(n1,n2))
+n2@[m:more(ts(n1,2x),ts(1x,n2))]
+morefi2:=ismore12(ts(n1,2x),ts(num(fr(n1,n2)),2x),ts(1x,n2),ts(1x,den(fr(n1,n2))),1disnd(x,n1,n2),n2isnd(x,n1,n2),m):moref(fr(n1,n2),x)
+n2@[l:less(ts(1x,n2),ts(n1,2x))]
+lessfi1:=isless12(ts(1x,n2),ts(1x,den(fr(n1,n2))),ts(n1,2x),ts(num(fr(n1,n2)),2x),n2isnd(x,n1,n2),1disnd(x,n1,n2),l):lessf(x,fr(n1,n2))
+n2@[l:less(ts(n1,2x),ts(1x,n2))]
+lessfi2:=isless12(ts(n1,2x),ts(num(fr(n1,n2)),2x),ts(1x,n2),ts(1x,den(fr(n1,n2))),1disnd(x,n1,n2),n2isnd(x,n1,n2),l):lessf(fr(n1,n2),x)
+y@satz41:=satz10(ts(1x,2y),ts(1y,2x)):orec3(eq(x,y),moref(x,y),lessf(x,y))
+satz41a:=satz10a(ts(1x,2y),ts(1y,2x)):or3(eq(x,y),moref(x,y),lessf(x,y))
+satz41b:=satz10b(ts(1x,2y),ts(1y,2x)):ec3(eq(x,y),moref(x,y),lessf(x,y))
+[m:moref(x,y)]
+satz42:=satz11(ts(1x,2y),ts(1y,2x),m):lessf(y,x)
+y@[l:lessf(x,y)]
+satz43:=satz12(ts(1x,2y),ts(1y,2x),l):moref(y,x)
+u@1u:=num(u):nat
+2u:=den(u):nat
+[m:moref(x,y)][e:eq(x,z)][f:eq(y,u)]
++244
+t1:=ists12(ts(1y,2u),ts(1u,2y),ts(1z,2x),ts(1x,2z),f,symeq(x,z,e)):is(ts(ts(1y,2u),ts(1z,2x)),ts(ts(1u,2y),ts(1x,2z)))
+t2:=tr3is(nat,ts(ts(1y,2x),ts(1z,2u)),ts(ts(1y,2u),ts(1z,2x)),ts(ts(1u,2y),ts(1x,2z)),ts(ts(1u,2z),ts(1x,2y)),stets(1y,2x,1z,2u),t1,stets(1u,2y,1x,2z)):is(ts(ts(1y,2x),ts(1z,2u)),ts(ts(1u,2z),ts(1x,2y)))
+t3:=ismore1(ts(ts(1u,2z),ts(1x,2y)),ts(ts(1y,2x),ts(1z,2u)),ts(ts(1u,2z),ts(1y,2x)),symis(nat,ts(ts(1y,2x),ts(1z,2u)),ts(ts(1u,2z),ts(1x,2y)),t2),satz32d(ts(1x,2y),ts(1y,2x),ts(1u,2z),m)):more(ts(ts(1y,2x),ts(1z,2u)),ts(ts(1u,2z),ts(1y,2x)))
+-244
+satz44:=satz33a(ts(1z,2u),ts(1u,2z),ts(1y,2x),ismore1(ts(ts(1y,2x),ts(1z,2u)),ts(ts(1z,2u),ts(1y,2x)),ts(ts(1u,2z),ts(1y,2x)),comts(ts(1y,2x),ts(1z,2u)),t3".244")):moref(z,u)
+u@[e:eq(x,y)][f:eq(z,u)][m:moref(x,z)]
+eqmoref12:=satz44(x,z,y,u,m,e,f):moref(y,u)
+z@[e:eq(x,y)][m:moref(x,z)]
+eqmoref1:=satz44(x,z,y,z,m,e,refeq(z)):moref(y,z)
+e@[m:moref(z,x)]
+eqmoref2:=satz44(z,x,z,y,m,refeq(z),e):moref(z,y)
+u@[l:lessf(x,y)][e:eq(x,z)][f:eq(y,u)]
+satz45:=satz42(u,z,satz44(y,x,u,z,satz43(x,y,l),f,e)):lessf(z,u)
+u@[e:eq(x,y)][f:eq(z,u)][l:lessf(x,z)]
+eqlessf12:=satz45(x,z,y,u,l,e,f):lessf(y,u)
+z@[e:eq(x,y)][l:lessf(x,z)]
+eqlessf1:=satz45(x,z,y,z,l,e,refeq(z)):lessf(y,z)
+e@[l:lessf(z,x)]
+eqlessf2:=satz45(z,x,z,y,l,refeq(z),e):lessf(z,y)
+y@moreq:=or(moref(x,y),eq(x,y)):'prop'
+lesseq:=or(lessf(x,y),eq(x,y)):'prop'
+[e:eq(x,y)]
+moreqi2:=ori2(moref(x,y),eq(x,y),e):moreq(x,y)
+lesseqi2:=ori2(lessf(x,y),eq(x,y),e):lesseq(x,y)
+y@[m:moref(x,y)]
+moreqi1:=ori1(moref(x,y),eq(x,y),m):moreq(x,y)
+y@[l:lessf(x,y)]
+lesseqi1:=ori1(lessf(x,y),eq(x,y),l):lesseq(x,y)
+y@[m:moreq(x,y)]
+satz41c:=th7"l.ec3"(eq(x,y),moref(x,y),lessf(x,y),satz41b,comor(moref(x,y),eq(x,y),m)):not(lessf(x,y))
+y@[l:lesseq(x,y)]
+satz41d:=th9"l.ec3"(eq(x,y),moref(x,y),lessf(x,y),satz41b,l):not(moref(x,y))
+y@[n:not(moref(x,y))]
+satz41e:=th2"l.or3"(eq(x,y),moref(x,y),lessf(x,y),satz41a,n):lesseq(x,y)
+y@[n:not(lessf(x,y))]
+satz41f:=comor(eq(x,y),moref(x,y),th3"l.or3"(eq(x,y),moref(x,y),lessf(x,y),satz41a,n)):moreq(x,y)
+y@[m:moref(x,y)]
+satz41g:=th3"l.or"(lessf(x,y),eq(x,y),ec3e23(eq(x,y),moref(x,y),lessf(x,y),satz41b,m),ec3e21(eq(x,y),moref(x,y),lessf(x,y),satz41b,m)):not(lesseq(x,y))
+y@[l:lessf(x,y)]
+satz41h:=th3"l.or"(moref(x,y),eq(x,y),ec3e32(eq(x,y),moref(x,y),lessf(x,y),satz41b,l),ec3e31(eq(x,y),moref(x,y),lessf(x,y),satz41b,l)):not(moreq(x,y))
+y@[n:not(moreq(x,y))]
+satz41j:=or3e3(eq(x,y),moref(x,y),lessf(x,y),satz41a,th5"l.or"(moref(x,y),eq(x,y),n),th4"l.or"(moref(x,y),eq(x,y),n)):lessf(x,y)
+y@[n:not(lesseq(x,y))]
+satz41k:=or3e2(eq(x,y),moref(x,y),lessf(x,y),satz41a,th4"l.or"(lessf(x,y),eq(x,y),n),th5"l.or"(lessf(x,y),eq(x,y),n)):moref(x,y)
+u@[m:moreq(x,y)][e:eq(x,z)][f:eq(y,u)]
++246
+[n:moref(x,y)]
+t1:=ori1(moref(z,u),eq(z,u),satz44(n,e,f)):moreq(z,u)
+f@[g:eq(x,y)]
+t2:=ori2(moref(z,u),eq(z,u),tr3eq(z,x,y,u,symeq(x,z,e),g,f)):moreq(z,u)
+-246
+satz46:=orapp(moref(x,y),eq(x,y),moreq(z,u),m,[t:moref(x,y)]t1".246"(t),[t:eq(x,y)]t2".246"(t)):moreq(z,u)
+u@[e:eq(x,y)][f:eq(z,u)][m:moreq(x,z)]
+eqmoreq12:=satz46(x,z,y,u,m,e,f):moreq(y,u)
+z@[e:eq(x,y)][m:moreq(x,z)]
+eqmoreq1:=satz46(x,z,y,z,m,e,refeq(z)):moreq(y,z)
+e@[m:moreq(z,x)]
+eqmoreq2:=satz46(z,x,z,y,m,refeq(z),e):moreq(z,y)
+u@[l:lesseq(x,y)][e:eq(x,z)][f:eq(y,u)]
++247
+[k:lessf(x,y)]
+t1:=ori1(lessf(z,u),eq(z,u),satz45(k,e,f)):lesseq(z,u)
+f@[g:eq(x,y)]
+t2:=ori2(lessf(z,u),eq(z,u),tr3eq(z,x,y,u,symeq(x,z,e),g,f)):lesseq(z,u)
+-247
+satz47:=orapp(lessf(x,y),eq(x,y),lesseq(z,u),l,[t:lessf(x,y)]t1".247"(t),[t:eq(x,y)]t2".247"(t)):lesseq(z,u)
+u@[e:eq(x,y)][f:eq(z,u)][l:lesseq(x,z)]
+eqlesseq12:=satz47(x,z,y,u,l,e,f):lesseq(y,u)
+z@[e:eq(x,y)][l:lesseq(x,z)]
+eqlesseq1:=satz47(x,z,y,z,l,e,refeq(z)):lesseq(y,z)
+e@[l:lesseq(z,x)]
+eqlesseq2:=satz47(z,x,z,y,l,refeq(z),e):lesseq(z,y)
+y@[m:moreq(x,y)]
+satz48:=th9"l.or"(moref(x,y),eq(x,y),lessf(y,x),eq(y,x),m,[t:moref(x,y)]satz42(x,y,t),[t:eq(x,y)]satz38(x,y,t)):lesseq(y,x)
+y@[l:lesseq(x,y)]
+satz49:=th9"l.or"(lessf(x,y),eq(x,y),moref(y,x),eq(y,x),l,[t:lessf(x,y)]satz43(x,y,t),[t:eq(x,y)]satz38(x,y,t)):moreq(y,x)
+z@[l:lessf(x,y)][k:lessf(y,z)]
++250
+t1:=satz34a(ts(1x,2y),ts(1y,2x),ts(1y,2z),ts(1z,2y),l,k):less(ts(ts(1x,2y),ts(1y,2z)),ts(ts(1y,2x),ts(1z,2y)))
+t2:=isless12(ts(ts(1x,2y),ts(1y,2z)),ts(ts(1x,2z),ts(1y,2y)),ts(ts(1y,2x),ts(1z,2y)),ts(ts(1z,2x),ts(1y,2y)),stets(1x,2y,1y,2z),tris(nat,ts(ts(1y,2x),ts(1z,2y)),ts(ts(1y,2y),ts(1z,2x)),ts(ts(1z,2x),ts(1y,2y)),stets(1y,2x,1z,2y),comts(ts(1y,2y),ts(1z,2x))),t1):less(ts(ts(1x,2z),ts(1y,2y)),ts(ts(1z,2x),ts(1y,2y)))
+-250
+satz50:=satz33c(ts(1x,2z),ts(1z,2x),ts(1y,2y),t2".250"):lessf(x,z)
+trlessf:=satz50:lessf(x,z)
+z@[m:moref(x,y)][n:moref(y,z)]
+trmoref:=satz43(z,x,satz50(z,y,x,satz42(y,z,n),satz42(x,y,m))):moref(x,z)
+z@[l:lesseq(x,y)][k:lessf(y,z)]
+satz51a:=orapp(lessf(x,y),eq(x,y),lessf(x,z),l,[t:lessf(x,y)]satz50(t,k),[t:eq(x,y)]eqlessf1(y,x,z,symeq(x,y,t),k)):lessf(x,z)
+z@[l:lessf(x,y)][k:lesseq(y,z)]
+satz51b:=orapp(lessf(y,z),eq(y,z),lessf(x,z),k,[t:lessf(y,z)]satz50(l,t),[t:eq(y,z)]eqlessf2(y,z,x,t,l)):lessf(x,z)
+z@[m:moreq(x,y)][n:moref(y,z)]
+satz51c:=satz43(z,x,satz51b(z,y,x,satz42(y,z,n),satz48(x,y,m))):moref(x,z)
+z@[m:moref(x,y)][n:moreq(y,z)]
+satz51d:=satz43(z,x,satz51a(z,y,x,satz48(y,z,n),satz42(x,y,m))):moref(x,z)
+z@[l:lesseq(x,y)][k:lesseq(y,z)]
++252
+[e:eq(x,y)][f:eq(y,z)]
+t1:=ori2(lessf(x,z),eq(x,z),treq(x,y,z,e,f)):lesseq(x,z)
+e@[j:lessf(y,z)]
+t2:=ori1(lessf(x,z),eq(x,z),satz51a(l,j)):lesseq(x,z)
+e@t3:=orapp(lessf(y,z),eq(y,z),lesseq(x,z),k,[t:lessf(y,z)]t2(t),[t:eq(y,z)]t1(t)):lesseq(x,z)
+k@[j:lessf(x,y)]
+t4:=ori1(lessf(x,z),eq(x,z),satz51b(j,k)):lesseq(x,z)
+-252
+satz52:=orapp(lessf(x,y),eq(x,y),lesseq(x,z),l,[t:lessf(x,y)]t4".252"(t),[t:eq(x,y)]t3".252"(t)):lesseq(x,z)
+trlesseq:=satz52:lesseq(x,z)
++*252
+k@[j:lessf(x,y)]
+t5:=ori1(lessf(x,z),eq(x,z),satz51b(j,k)):lesseq(x,z)
+k@[e:eq(x,y)]
+t6:=eqlesseq1(y,x,z,symeq(x,y,e),k):lesseq(x,z)
+k@anders:=orapp(lessf(x,y),eq(x,y),lesseq(x,z),l,[t:lessf(x,y)]t5(t),[t:eq(x,y)]t6(t)):lesseq(x,z)
+-252
+z@[m:moreq(x,y)][n:moreq(y,z)]
+trmoreq:=satz49(z,x,satz52(z,y,x,satz48(y,z,n),satz48(x,y,m))):moreq(x,z)
++253
+x@t1:=ismore1(pl(ts(1x,2x),ts(1x,2x)),ts(pl(1x,1x),2x),ts(1x,2x),distpt1(1x,1x,2x),satz18(ts(1x,2x),ts(1x,2x))):more(ts(pl(1x,1x),2x),ts(1x,2x))
+t2:=morefi2(pl(1x,1x),2x,t1):moref(fr(pl(1x,1x),2x),x)
+-253
+x@satz53:=somei(frac,[t:frac]moref(t,x),fr(pl(1x,1x),2x),t2".253"):some"l"(frac,[t:frac]moref(t,x))
++254
+t1:=isless2(pl(ts(1x,2x),ts(1x,2x)),ts(1x,pl(2x,2x)),ts(1x,2x),distpt2(1x,2x,2x),satz18a(ts(1x,2x),ts(1x,2x))):less(ts(1x,2x),ts(1x,pl(2x,2x)))
+t2:=lessfi2(1x,pl(2x,2x),t1):lessf(fr(1x,pl(2x,2x)),x)
+-254
+satz54:=somei(frac,[t:frac]lessf(t,x),fr(1x,pl(2x,2x)),t2".254"):some"l"(frac,[t:frac]lessf(t,x))
+y@[l:lessf(x,y)]
++255
+t1:=satz19f(ts(1x,2y),ts(1y,2x),ts(1x,2x),l):less(pl(ts(1x,2x),ts(1x,2y)),pl(ts(1x,2x),ts(1y,2x)))
+t2:=satz19c(ts(1x,2y),ts(1y,2x),ts(1y,2y),l):less(pl(ts(1x,2y),ts(1y,2y)),pl(ts(1y,2x),ts(1y,2y)))
+t3:=isless12(pl(ts(1x,2x),ts(1x,2y)),ts(1x,pl(2x,2y)),pl(ts(1x,2x),ts(1y,2x)),ts(pl(1x,1y),2x),distpt2(1x,2x,2y),distpt1(1x,1y,2x),t1):less(ts(1x,pl(2x,2y)),ts(pl(1x,1y),2x))
+t4:=lessfi1(pl(1x,1y),pl(2x,2y),t3):lessf(x,fr(pl(1x,1y),pl(2x,2y)))
+t5:=isless12(pl(ts(1x,2y),ts(1y,2y)),ts(pl(1x,1y),2y),pl(ts(1y,2x),ts(1y,2y)),ts(1y,pl(2x,2y)),distpt1(1x,1y,2y),distpt2(1y,2x,2y),t2):less(ts(pl(1x,1y),2y),ts(1y,pl(2x,2y)))
+t6:=lessfi2(y,pl(1x,1y),pl(2x,2y),t5):lessf(fr(pl(1x,1y),pl(2x,2y)),y)
+t7:=andi(lessf(x,fr(pl(1x,1y),pl(2x,2y))),lessf(fr(pl(1x,1y),pl(2x,2y)),y),t4,t6):and(lessf(x,fr(pl(1x,1y),pl(2x,2y))),lessf(fr(pl(1x,1y),pl(2x,2y)),y))
+-255
+satz55:=somei(frac,[t:frac]and(lessf(x,t),lessf(t,y)),fr(pl(1x,1y),pl(2x,2y)),t7".255"):some"l"(frac,[t:frac]and(lessf(x,t),lessf(t,y)))
+y@pf:=fr(pl(ts(1x,2y),ts(1y,2x)),ts(2x,2y)):frac
++ii3
+y2@t1:=ispl12(ts(num(fr(x1,x2)),den(fr(y1,y2))),ts(x1,y2),ts(num(fr(y1,y2)),den(fr(x1,x2))),ts(y1,x2),ndis12(x1,x2,y1,y2),ndis12(y1,y2,x1,x2)):is(pl(ts(num(fr(x1,x2)),den(fr(y1,y2))),ts(num(fr(y1,y2)),den(fr(x1,x2)))),pl(ts(x1,y2),ts(y1,x2)))
+t2:=ists12(den(fr(x1,x2)),x2,den(fr(y1,y2)),y2,denis(x1,x2),denis(y1,y2)):is(ts(den(fr(x1,x2)),den(fr(y1,y2))),ts(x2,y2))
+-ii3
+y2@pf12:=isnd(pl(ts(num(fr(x1,x2)),den(fr(y1,y2))),ts(num(fr(y1,y2)),den(fr(x1,x2)))),ts(den(fr(x1,x2)),den(fr(y1,y2))),pl(ts(x1,y2),ts(y1,x2)),ts(x2,y2),t1".ii3",t2".ii3"):is"e"(frac,pf(fr(x1,x2),fr(y1,y2)),fr(pl(ts(x1,y2),ts(y1,x2)),ts(x2,y2)))
++*ii3
+n2@t3:=ispl12(ts(1x,den(fr(n1,n2))),ts(1x,n2),ts(num(fr(n1,n2)),2x),ts(n1,2x),ndisn2(x,n1,n2),ndis1d(x,n1,n2)):is(pl(ts(1x,den(fr(n1,n2))),ts(num(fr(n1,n2)),2x)),pl(ts(1x,n2),ts(n1,2x)))
+t4:=ists2(den(fr(n1,n2)),n2,2x,denis(n1,n2)):is(ts(2x,den(fr(n1,n2))),ts(2x,n2))
+-ii3
+n2@pf1:=isnd(pl(ts(1x,den(fr(n1,n2))),ts(num(fr(n1,n2)),2x)),ts(2x,den(fr(n1,n2))),pl(ts(1x,n2),ts(n1,2x)),ts(2x,n2),t3".ii3",t4".ii3"):is"e"(frac,pf(x,fr(n1,n2)),fr(pl(ts(1x,n2),ts(n1,2x)),ts(2x,n2)))
++*ii3
+n2@t5:=ispl12(ts(num(fr(n1,n2)),2x),ts(n1,2x),ts(1x,den(fr(n1,n2))),ts(1x,n2),ndis1d(x,n1,n2),ndisn2(x,n1,n2)):is(pl(ts(num(fr(n1,n2)),2x),ts(1x,den(fr(n1,n2)))),pl(ts(n1,2x),ts(1x,n2)))
+t6:=ists1(den(fr(n1,n2)),n2,2x,denis(n1,n2)):is(ts(den(fr(n1,n2)),2x),ts(n2,2x))
+-ii3
+n2@pf2:=isnd(pl(ts(num(fr(n1,n2)),2x),ts(1x,den(fr(n1,n2)))),ts(den(fr(n1,n2)),2x),pl(ts(n1,2x),ts(1x,n2)),ts(n2,2x),t5".ii3",t6".ii3"):is"e"(frac,pf(fr(n1,n2),x),fr(pl(ts(n1,2x),ts(1x,n2)),ts(n2,2x)))
+y2@pfeq12a:=refeq1(pf(fr(x1,x2),fr(y1,y2)),fr(pl(ts(x1,y2),ts(y1,x2)),ts(x2,y2)),pf12):eq(pf(fr(x1,x2),fr(y1,y2)),fr(pl(ts(x1,y2),ts(y1,x2)),ts(x2,y2)))
+pfeq12b:=refeq2(pf(fr(x1,x2),fr(y1,y2)),fr(pl(ts(x1,y2),ts(y1,x2)),ts(x2,y2)),pf12):eq(fr(pl(ts(x1,y2),ts(y1,x2)),ts(x2,y2)),pf(fr(x1,x2),fr(y1,y2)))
+n2@pfeq1a:=refeq1(pf(x,fr(n1,n2)),fr(pl(ts(1x,n2),ts(n1,2x)),ts(2x,n2)),pf1):eq(pf(x,fr(n1,n2)),fr(pl(ts(1x,n2),ts(n1,2x)),ts(2x,n2)))
+pfeq1b:=refeq2(pf(x,fr(n1,n2)),fr(pl(ts(1x,n2),ts(n1,2x)),ts(2x,n2)),pf1):eq(fr(pl(ts(1x,n2),ts(n1,2x)),ts(2x,n2)),pf(x,fr(n1,n2)))
+pfeq2a:=refeq1(pf(fr(n1,n2),x),fr(pl(ts(n1,2x),ts(1x,n2)),ts(n2,2x)),pf2):eq(pf(fr(n1,n2),x),fr(pl(ts(n1,2x),ts(1x,n2)),ts(n2,2x)))
+pfeq2b:=refeq2(pf(fr(n1,n2),x),fr(pl(ts(n1,2x),ts(1x,n2)),ts(n2,2x)),pf2):eq(fr(pl(ts(n1,2x),ts(1x,n2)),ts(n2,2x)),pf(fr(n1,n2),x))
+u@[e:eq(x,y)][f:eq(z,u)]
++356
+t1:=ists1(ts(1x,2y),ts(1y,2x),ts(2z,2u),e):is(ts(ts(1x,2y),ts(2z,2u)),ts(ts(1y,2x),ts(2z,2u)))
+t2:=t1(z,u,x,y,f,e):is(ts(ts(1z,2u),ts(2x,2y)),ts(ts(1u,2z),ts(2x,2y)))
+t3:=tr3is(nat,ts(ts(1x,2z),ts(2y,2u)),ts(ts(1x,2z),ts(2u,2y)),ts(ts(1x,2y),ts(2u,2z)),ts(ts(1x,2y),ts(2z,2u)),ists2(ts(2y,2u),ts(2u,2y),ts(1x,2z),comts(2y,2u)),stets(1x,2z,2u,2y),ists2(ts(2u,2z),ts(2z,2u),ts(1x,2y),comts(2u,2z))):is(ts(ts(1x,2z),ts(2y,2u)),ts(ts(1x,2y),ts(2z,2u)))
+t4:=tr4is(nat,ts(ts(1x,2z),ts(2y,2u)),ts(ts(1x,2y),ts(2z,2u)),ts(ts(1y,2x),ts(2z,2u)),ts(ts(1y,2u),ts(2z,2x)),ts(ts(1y,2u),ts(2x,2z)),t3,t1,stets(1y,2x,2z,2u),ists2(ts(2z,2x),ts(2x,2z),ts(1y,2u),comts(2z,2x))):is(ts(ts(1x,2z),ts(2y,2u)),ts(ts(1y,2u),ts(2x,2z)))
+t5:=tr4is(nat,ts(ts(1z,2x),ts(2y,2u)),ts(ts(1z,2u),ts(2y,2x)),ts(ts(1z,2u),ts(2x,2y)),ts(ts(1u,2z),ts(2x,2y)),ts(ts(1u,2y),ts(2x,2z)),stets(1z,2x,2y,2u),ists2(ts(2y,2x),ts(2x,2y),ts(1z,2u),comts(2y,2x)),t2,stets(1u,2z,2x,2y)):is(ts(ts(1z,2x),ts(2y,2u)),ts(ts(1u,2y),ts(2x,2z)))
+t6:=ispl12(ts(ts(1x,2z),ts(2y,2u)),ts(ts(1y,2u),ts(2x,2z)),ts(ts(1z,2x),ts(2y,2u)),ts(ts(1u,2y),ts(2x,2z)),t4,t5):is(pl(ts(ts(1x,2z),ts(2y,2u)),ts(ts(1z,2x),ts(2y,2u))),pl(ts(ts(1y,2u),ts(2x,2z)),ts(ts(1u,2y),ts(2x,2z))))
+t7:=tr3is(nat,ts(pl(ts(1x,2z),ts(1z,2x)),ts(2y,2u)),pl(ts(ts(1x,2z),ts(2y,2u)),ts(ts(1z,2x),ts(2y,2u))),pl(ts(ts(1y,2u),ts(2x,2z)),ts(ts(1u,2y),ts(2x,2z))),ts(pl(ts(1y,2u),ts(1u,2y)),ts(2x,2z)),disttp1(ts(1x,2z),ts(1z,2x),ts(2y,2u)),t6,distpt1(ts(1y,2u),ts(1u,2y),ts(2x,2z))):is(ts(pl(ts(1x,2z),ts(1z,2x)),ts(2y,2u)),ts(pl(ts(1y,2u),ts(1u,2y)),ts(2x,2z)))
+-356
+satz56:=eqi12(pl(ts(1x,2z),ts(1z,2x)),ts(2x,2z),pl(ts(1y,2u),ts(1u,2y)),ts(2y,2u),t7".356"):eq(pf(x,z),pf(y,u))
+eqpf12:=satz56:eq(pf(x,z),pf(y,u))
+z@[e:eq(x,y)]
+eqpf1:=eqpf12(x,y,z,z,e,refeq(z)):eq(pf(x,z),pf(y,z))
+eqpf2:=eqpf12(z,z,x,y,refeq(z),e):eq(pf(z,x),pf(z,y))
+x2@[n:nat]
+satz57:=tr3eq(pf(fr(x1,n),fr(x2,n)),fr(pl(ts(x1,n),ts(x2,n)),ts(n,n)),fr(ts(pl(x1,x2),n),ts(n,n)),fr(pl(x1,x2),n),pfeq12a(x1,n,x2,n),eqn(pl(ts(x1,n),ts(x2,n)),ts(n,n),ts(pl(x1,x2),n),distpt1(x1,x2,n)),satz40c(pl(x1,x2),n,n)):eq(pf(fr(x1,n),fr(x2,n)),fr(pl(x1,x2),n))
+satz57a:=symeq(pf(fr(x1,n),fr(x2,n)),fr(pl(x1,x2),n),satz57):eq(fr(pl(x1,x2),n),pf(fr(x1,n),fr(x2,n)))
+y@satz58:=eqnd(pl(ts(1x,2y),ts(1y,2x)),ts(2x,2y),pl(ts(1y,2x),ts(1x,2y)),ts(2y,2x),compl(ts(1x,2y),ts(1y,2x)),comts(2x,2y)):eq(pf(x,y),pf(y,x))
+compf:=satz58:eq(pf(x,y),pf(y,x))
++359
+z@t1:=tr3is(nat,ts(ts(1y,2x),2z),ts(ts(2x,1y),2z),ts(2x,ts(1y,2z)),ts(ts(1y,2z),2x),ists1(ts(1y,2x),ts(2x,1y),2z,comts(1y,2x)),assts1(2x,1y,2z),comts(2x,ts(1y,2z))):is(ts(ts(1y,2x),2z),ts(ts(1y,2z),2x))
+t2:=ispl12(ts(ts(1x,2y),2z),ts(1x,ts(2y,2z)),ts(ts(1y,2x),2z),ts(ts(1y,2z),2x),assts1(1x,2y,2z),t1):is(pl(ts(ts(1x,2y),2z),ts(ts(1y,2x),2z)),pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)))
+t3:=tris(nat,ts(pl(ts(1x,2y),ts(1y,2x)),2z),pl(ts(ts(1x,2y),2z),ts(ts(1y,2x),2z)),pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)),disttp1(ts(1x,2y),ts(1y,2x),2z),t2):is(ts(pl(ts(1x,2y),ts(1y,2x)),2z),pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)))
+t4:=tris(nat,ts(1z,ts(2x,2y)),ts(1z,ts(2y,2x)),ts(ts(1z,2y),2x),ists2(ts(2x,2y),ts(2y,2x),1z,comts(2x,2y)),assts2(1z,2y,2x)):is(ts(1z,ts(2x,2y)),ts(ts(1z,2y),2x))
+t5:=ispl12(ts(pl(ts(1x,2y),ts(1y,2x)),2z),pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)),ts(1z,ts(2x,2y)),ts(ts(1z,2y),2x),t3,t4):is(pl(ts(pl(ts(1x,2y),ts(1y,2x)),2z),ts(1z,ts(2x,2y))),pl(pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)),ts(ts(1z,2y),2x)))
+t6:=ispl2(pl(ts(ts(1y,2z),2x),ts(ts(1z,2y),2x)),ts(pl(ts(1y,2z),ts(1z,2y)),2x),ts(1x,ts(2y,2z)),distpt1(ts(1y,2z),ts(1z,2y),2x)):is(pl(ts(1x,ts(2y,2z)),pl(ts(ts(1y,2z),2x),ts(ts(1z,2y),2x))),pl(ts(1x,ts(2y,2z)),ts(pl(ts(1y,2z),ts(1z,2y)),2x)))
+t7:=tr3is(nat,pl(ts(pl(ts(1x,2y),ts(1y,2x)),2z),ts(1z,ts(2x,2y))),pl(pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)),ts(ts(1z,2y),2x)),pl(ts(1x,ts(2y,2z)),pl(ts(ts(1y,2z),2x),ts(ts(1z,2y),2x))),pl(ts(1x,ts(2y,2z)),ts(pl(ts(1y,2z),ts(1z,2y)),2x)),t5,asspl1(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x),ts(ts(1z,2y),2x)),t6):is(pl(ts(pl(ts(1x,2y),ts(1y,2x)),2z),ts(1z,ts(2x,2y))),pl(ts(1x,ts(2y,2z)),ts(pl(ts(1y,2z),ts(1z,2y)),2x)))
+-359
+z@satz59:=tr3eq(pf(pf(x,y),z),fr(pl(ts(pl(ts(1x,2y),ts(1y,2x)),2z),ts(1z,ts(2x,2y))),ts(ts(2x,2y),2z)),fr(pl(ts(1x,ts(2y,2z)),ts(pl(ts(1y,2z),ts(1z,2y)),2x)),ts(2x,ts(2y,2z))),pf(x,pf(y,z)),pfeq2a(z,pl(ts(1x,2y),ts(1y,2x)),ts(2x,2y)),eqnd(pl(ts(pl(ts(1x,2y),ts(1y,2x)),2z),ts(1z,ts(2x,2y))),ts(ts(2x,2y),2z),pl(ts(1x,ts(2y,2z)),ts(pl(ts(1y,2z),ts(1z,2y)),2x)),ts(2x,ts(2y,2z)),t7".359",assts1(2x,2y,2z)),pfeq1b(x,pl(ts(1y,2z),ts(1z,2y)),ts(2y,2z))):eq(pf(pf(x,y),z),pf(x,pf(y,z)))
+asspf1:=satz59:eq(pf(pf(x,y),z),pf(x,pf(y,z)))
+asspf2:=symeq(pf(pf(x,y),z),pf(x,pf(y,z)),asspf1):eq(pf(x,pf(y,z)),pf(pf(x,y),z))
+c@stets1:=tr3is(nat,ts(ts(a,b),c),ts(a,ts(b,c)),ts(a,ts(c,b)),ts(ts(a,c),b),assts1(a,b,c),ists2(ts(b,c),ts(c,b),a,comts(b,c)),assts2(a,c,b)):is(ts(ts(a,b),c),ts(ts(a,c),b))
++*359
+z@t8:=tris(nat,ts(pl(ts(1x,2y),ts(1y,2x)),2z),pl(ts(ts(1x,2y),2z),ts(ts(1y,2x),2z)),pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)),disttp1(ts(1x,2y),ts(1y,2x),2z),ispl12(ts(ts(1x,2y),2z),ts(1x,ts(2y,2z)),ts(ts(1y,2x),2z),ts(ts(1y,2z),2x),assts1(1x,2y,2z),stets1(1y,2x,2z))):is(ts(pl(ts(1x,2y),ts(1y,2x)),2z),pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)))
+t9:=tris(nat,ts(1z,ts(2x,2y)),ts(ts(1z,2x),2y),ts(ts(1z,2y),2x),assts2(1z,2x,2y),stets1(1z,2x,2y)):is(ts(1z,ts(2x,2y)),ts(ts(1z,2y),2x))
+anderst7:=tr3is(nat,pl(ts(pl(ts(1x,2y),ts(1y,2x)),2z),ts(1z,ts(2x,2y))),pl(pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)),ts(ts(1z,2y),2x)),pl(ts(1x,ts(2y,2z)),pl(ts(ts(1y,2z),2x),ts(ts(1z,2y),2x))),pl(ts(1x,ts(2y,2z)),ts(pl(ts(1y,2z),ts(1z,2y)),2x)),ispl12(ts(pl(ts(1x,2y),ts(1y,2x)),2z),pl(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x)),ts(1z,ts(2x,2y)),ts(ts(1z,2y),2x),t8,t9),asspl1(ts(1x,ts(2y,2z)),ts(ts(1y,2z),2x),ts(ts(1z,2y),2x)),ispl2(pl(ts(ts(1y,2z),2x),ts(ts(1z,2y),2x)),ts(pl(ts(1y,2z),ts(1z,2y)),2x),ts(1x,ts(2y,2z)),distpt1(ts(1y,2z),ts(1z,2y),2x))):is(pl(ts(pl(ts(1x,2y),ts(1y,2x)),2z),ts(1z,ts(2x,2y))),pl(ts(1x,ts(2y,2z)),ts(pl(ts(1y,2z),ts(1z,2y)),2x)))
+-359
++360
+y@t1:=satz18(ts(1x,2y),ts(1y,2x)):more(pl(ts(1x,2y),ts(1y,2x)),ts(1x,2y))
+t2:=satz32a(pl(ts(1x,2y),ts(1y,2x)),ts(1x,2y),2x,t1):more(ts(pl(ts(1x,2y),ts(1y,2x)),2x),ts(ts(1x,2y),2x))
+t3:=tris(nat,ts(ts(1x,2y),2x),ts(1x,ts(2y,2x)),ts(1x,ts(2x,2y)),assts1(1x,2y,2x),ists2(ts(2y,2x),ts(2x,2y),1x,comts(2y,2x))):is(ts(ts(1x,2y),2x),ts(1x,ts(2x,2y)))
+t4:=ismore2(ts(ts(1x,2y),2x),ts(1x,ts(2x,2y)),ts(pl(ts(1x,2y),ts(1y,2x)),2x),t3,t2):more(ts(pl(ts(1x,2y),ts(1y,2x)),2x),ts(1x,ts(2x,2y)))
+-360
+y@satz60:=morefi2(pl(ts(1x,2y),ts(1y,2x)),ts(2x,2y),t4".360"):moref(pf(x,y),x)
+satz60a:=satz42(pf(x,y),x,satz60):lessf(x,pf(x,y))
+z@[m:moref(x,y)]
++361
+t1:=satz32a(ts(1x,2y),ts(1y,2x),2z,m):more(ts(ts(1x,2y),2z),ts(ts(1y,2x),2z))
+t2:=ismore12(ts(ts(1x,2y),2z),ts(ts(1x,2z),2y),ts(ts(1y,2x),2z),ts(ts(1y,2z),2x),stets1(1x,2y,2z),stets1(1y,2x,2z),t1):more(ts(ts(1x,2z),2y),ts(ts(1y,2z),2x))
+t3:=stets1(1z,2x,2y):is(ts(ts(1z,2x),2y),ts(ts(1z,2y),2x))
+t4:=satz19h(ts(ts(1z,2x),2y),ts(ts(1z,2y),2x),ts(ts(1x,2z),2y),ts(ts(1y,2z),2x),t3,t2):more(pl(ts(ts(1x,2z),2y),ts(ts(1z,2x),2y)),pl(ts(ts(1y,2z),2x),ts(ts(1z,2y),2x)))
+t5:=ismore12(pl(ts(ts(1x,2z),2y),ts(ts(1z,2x),2y)),ts(pl(ts(1x,2z),ts(1z,2x)),2y),pl(ts(ts(1y,2z),2x),ts(ts(1z,2y),2x)),ts(pl(ts(1y,2z),ts(1z,2y)),2x),distpt1(ts(1x,2z),ts(1z,2x),2y),distpt1(ts(1y,2z),ts(1z,2y),2x),t4):more(ts(pl(ts(1x,2z),ts(1z,2x)),2y),ts(pl(ts(1y,2z),ts(1z,2y)),2x))
+t6:=satz32a(ts(pl(ts(1x,2z),ts(1z,2x)),2y),ts(pl(ts(1y,2z),ts(1z,2y)),2x),2z,t5):more(ts(ts(pl(ts(1x,2z),ts(1z,2x)),2y),2z),ts(ts(pl(ts(1y,2z),ts(1z,2y)),2x),2z))
+t7:=ismore12(ts(ts(pl(ts(1x,2z),ts(1z,2x)),2y),2z),ts(pl(ts(1x,2z),ts(1z,2x)),ts(2y,2z)),ts(ts(pl(ts(1y,2z),ts(1z,2y)),2x),2z),ts(pl(ts(1y,2z),ts(1z,2y)),ts(2x,2z)),assts1(pl(ts(1x,2z),ts(1z,2x)),2y,2z),assts1(pl(ts(1y,2z),ts(1z,2y)),2x,2z),t6):more(ts(pl(ts(1x,2z),ts(1z,2x)),ts(2y,2z)),ts(pl(ts(1y,2z),ts(1z,2y)),ts(2x,2z)))
+-361
+satz61:=morefi12(pl(ts(1x,2z),ts(1z,2x)),ts(2x,2z),pl(ts(1y,2z),ts(1z,2y)),ts(2y,2z),t7".361"):moref(pf(x,z),pf(y,z))
+z@[m:moref(x,y)]
+satz62a:=satz61(m):moref(pf(x,z),pf(y,z))
+z@[e:eq(x,y)]
+satz62b:=eqpf1(x,y,z,e):eq(pf(x,z),pf(y,z))
+z@[l:lessf(x,y)]
+satz62c:=satz42(pf(y,z),pf(x,z),satz61(y,x,z,satz43(l))):lessf(pf(x,z),pf(y,z))
+m@satz62d:=eqmoref12(pf(x,z),pf(z,x),pf(y,z),pf(z,y),compf(x,z),compf(y,z),satz62a):moref(pf(z,x),pf(z,y))
+e@satz62e:=eqpf2(x,y,z,e):eq(pf(z,x),pf(z,y))
+l@satz62f:=eqlessf12(pf(x,z),pf(z,x),pf(y,z),pf(z,y),compf(x,z),compf(y,z),satz62c):lessf(pf(z,x),pf(z,y))
+u@[e:eq(x,y)][m:moref(z,u)]
+satz62g:=eqmoref2(pf(x,u),pf(y,u),pf(x,z),eqpf1(x,y,u,e),satz62d(z,u,x,m)):moref(pf(x,z),pf(y,u))
+satz62h:=eqmoref12(pf(x,z),pf(z,x),pf(y,u),pf(u,y),compf(x,z),compf(y,u),satz62g):moref(pf(z,x),pf(u,y))
+e@[l:lessf(z,u)]
+satz62j:=eqlessf2(pf(x,u),pf(y,u),pf(x,z),eqpf1(x,y,u,e),satz62f(z,u,x,l)):lessf(pf(x,z),pf(y,u))
+satz62k:=eqlessf12(pf(x,z),pf(z,x),pf(y,u),pf(u,y),compf(x,z),compf(y,u),satz62j):lessf(pf(z,x),pf(u,y))
++363
+z@t1:=satz41a(x,y):or3(eq(x,y),moref(x,y),lessf(x,y))
+t2:=satz41b(pf(x,z),pf(y,z)):ec3(eq(pf(x,z),pf(y,z)),moref(pf(x,z),pf(y,z)),lessf(pf(x,z),pf(y,z)))
+-363
+z@[m:moref(pf(x,z),pf(y,z))]
+satz63a:=th11"l.ec3"(eq(x,y),moref(x,y),lessf(x,y),eq(pf(x,z),pf(y,z)),moref(pf(x,z),pf(y,z)),lessf(pf(x,z),pf(y,z)),t1".363",t2".363",[u:eq(x,y)]satz62b(x,y,z,u),[u:moref(x,y)]satz62a(x,y,z,u),[u:lessf(x,y)]satz62c(x,y,z,u),m):moref(x,y)
+z@[e:eq(pf(x,z),pf(y,z))]
+satz63b:=th10"l.ec3"(eq(x,y),moref(x,y),lessf(x,y),eq(pf(x,z),pf(y,z)),moref(pf(x,z),pf(y,z)),lessf(pf(x,z),pf(y,z)),t1".363",t2".363",[u:eq(x,y)]satz62b(x,y,z,u),[u:moref(x,y)]satz62a(x,y,z,u),[u:lessf(x,y)]satz62c(x,y,z,u),e):eq(x,y)
+z@[l:lessf(pf(x,z),pf(y,z))]
+satz63c:=th12"l.ec3"(eq(x,y),moref(x,y),lessf(x,y),eq(pf(x,z),pf(y,z)),moref(pf(x,z),pf(y,z)),lessf(pf(x,z),pf(y,z)),t1".363",t2".363",[u:eq(x,y)]satz62b(x,y,z,u),[u:moref(x,y)]satz62a(x,y,z,u),[u:lessf(x,y)]satz62c(x,y,z,u),l):lessf(x,y)
+z@[m:moref(pf(z,x),pf(z,y))]
+satz63d:=satz63a(eqmoref12(pf(z,x),pf(x,z),pf(z,y),pf(y,z),compf(z,x),compf(z,y),m)):moref(x,y)
+z@[e:eq(pf(z,x),pf(z,y))]
+satz63e:=satz63b(tr3eq(pf(x,z),pf(z,x),pf(z,y),pf(y,z),compf(x,z),e,compf(z,y))):eq(x,y)
+z@[f:lessf(pf(z,x),pf(z,y))]
+satz63f:=satz63c(eqlessf12(pf(z,x),pf(x,z),pf(z,y),pf(y,z),compf(z,x),compf(z,y),f)):lessf(x,y)
+u@[m:moref(x,y)][n:moref(z,u)]
++364
+t1:=satz61(x,y,z,m):moref(pf(x,z),pf(y,z))
+t2:=eqmoref12(pf(z,y),pf(y,z),pf(u,y),pf(y,u),compf(z,y),compf(u,y),satz61(z,u,y,n)):moref(pf(y,z),pf(y,u))
+-364
+satz64:=trmoref(pf(x,z),pf(y,z),pf(y,u),t1".364",t2".364"):moref(pf(x,z),pf(y,u))
+u@[l:lessf(x,y)][k:lessf(z,u)]
+satz64a:=satz42(pf(y,u),pf(x,z),satz64(y,x,u,z,satz43(x,y,l),satz43(z,u,k))):lessf(pf(x,z),pf(y,u))
+u@[m:moreq(x,y)][n:moref(z,u)]
+satz65a:=orapp(moref(x,y),eq(x,y),moref(pf(x,z),pf(y,u)),m,[v:moref(x,y)]satz64(v,n),[v:eq(x,y)]satz62g(v,n)):moref(pf(x,z),pf(y,u))
+u@[m:moref(x,y)][n:moreq(z,u)]
+satz65b:=orapp(moref(z,u),eq(z,u),moref(pf(x,z),pf(y,u)),n,[v:moref(z,u)]satz64(m,v),[v:eq(z,u)]eqmoref2(pf(y,z),pf(y,u),pf(x,z),eqpf2(z,u,y,v),satz61(x,y,z,m))):moref(pf(x,z),pf(y,u))
+u@[l:lesseq(x,y)][k:lessf(z,u)]
+satz65c:=satz42(pf(y,u),pf(x,z),satz65a(y,x,u,z,satz49(x,y,l),satz43(z,u,k))):lessf(pf(x,z),pf(y,u))
+u@[l:lessf(x,y)][k:lesseq(z,u)]
+satz65d:=satz42(pf(y,u),pf(x,z),satz65b(y,x,u,z,satz43(x,y,l),satz49(z,u,k))):lessf(pf(x,z),pf(y,u))
+u@[m:moreq(x,y)][n:moreq(z,u)]
++366
+[e:eq(x,y)][f:eq(z,u)]
+t1:=moreqi2(pf(x,z),pf(y,u),satz56(e,f)):moreq(pf(x,z),pf(y,u))
+e@[o:moref(z,u)]
+t2:=moreqi1(pf(x,z),pf(y,u),satz65a(m,o)):moreq(pf(x,z),pf(y,u))
+e@t3:=orapp(moref(z,u),eq(z,u),moreq(pf(x,z),pf(y,u)),n,[v:moref(z,u)]t2(v),[v:eq(z,u)]t1(v)):moreq(pf(x,z),pf(y,u))
+n@[o:moref(x,y)]
+t4:=moreqi1(pf(x,z),pf(y,u),satz65b(o,n)):moreq(pf(x,z),pf(y,u))
+-366
+satz66:=orapp(moref(x,y),eq(x,y),moreq(pf(x,z),pf(y,u)),m,[v:moref(x,y)]t4".366"(v),[v:eq(x,y)]t3".366"(v)):moreq(pf(x,z),pf(y,u))
+u@[l:lesseq(x,y)][k:lesseq(z,u)]
+satz66a:=satz48(pf(y,u),pf(x,z),satz66(y,x,u,z,satz49(x,y,l),satz49(z,u,k))):lesseq(pf(x,z),pf(y,u))
+y@[l:lesseq(x,y)]
++367
+[v:frac][e:eq(pf(y,v),x)]
+t1:=eqmoref1(pf(y,v),x,y,e,satz60(y,v)):moref(x,y)
+v@t2:=th3"l.imp"(eq(pf(y,v),x),moref(x,y),satz41d(x,y,l),[t:eq(pf(y,v),x)]t1(t)):not(eq(pf(y,v),x))
+-367
+vorbemerkung67:=th5"l.some"(frac,[v:frac]eq(pf(y,v),x),[v:frac]t2".367"(v)):not(some"l"(frac,[t:frac]eq(pf(y,t),x)))
+y@[v:frac][w:frac][e:eq(pf(y,v),x)][f:eq(pf(y,w),x)]
+satz67b:=satz63e(v,w,y,treq2(pf(y,v),pf(y,w),x,e,f)):eq(v,w)
+y@[m:moref(x,y)]
++*367
+m@t3:=onei(nat,[t:nat]diffprop(ts(1x,2y),ts(1y,2x),t),satz8b(ts(1x,2y),ts(1y,2x)),m):one([t:nat]diffprop(ts(1x,2y),ts(1y,2x),t))
+vo:=ind(nat,[t:nat]diffprop(ts(1x,2y),ts(1y,2x),t),t3):nat
+t4:=oneax(nat,[t:nat]diffprop(ts(1x,2y),ts(1y,2x),t),t3):is(ts(1x,2y),pl(ts(1y,2x),vo))
+w:=fr(vo,ts(2x,2y)):frac
+t5:=treq(y,fr(ts(1y,2x),ts(2y,2x)),fr(ts(1y,2x),ts(2x,2y)),satz40(y,2x),eqd(ts(1y,2x),ts(2y,2x),ts(2x,2y),comts(2y,2x))):eq(y,fr(ts(1y,2x),ts(2x,2y)))
+t6:=tr4eq(pf(y,w),pf(fr(ts(1y,2x),ts(2x,2y)),fr(vo,ts(2x,2y))),fr(pl(ts(1y,2x),vo),ts(2x,2y)),fr(ts(1x,2y),ts(2x,2y)),x,eqpf1(y,fr(ts(1y,2x),ts(2x,2y)),w,t5),satz57(ts(1y,2x),vo,ts(2x,2y)),eqn(pl(ts(1y,2x),vo),ts(2x,2y),ts(1x,2y),symis(nat,ts(1x,2y),pl(ts(1y,2x),vo),t4)),satz40a(x,2y)):eq(pf(y,w),x)
+-367
+m@satz67a:=somei(frac,[t:frac]eq(pf(y,t),x),w".367",t6".367"):some"l"(frac,[t:frac]eq(pf(y,t),x))
+mf:=w".367":frac
+satz67c:=t6".367":eq(pf(y,mf(x,y,m)),x)
+satz67d:=symeq(pf(y,mf(x,y,m)),x,satz67c):eq(x,pf(y,mf(x,y,m)))
+y@[v:frac][m:moref(x,y)][e:eq(pf(y,v),x)]
+satz67e:=satz67b(v,mf(x,y,m),e,satz67c(m)):eq(v,mf(x,y,m))
+y@tf:=fr(ts(1x,1y),ts(2x,2y)):frac
++ii4
+y2@t1:=ists12(num(fr(x1,x2)),x1,num(fr(y1,y2)),y1,numis(x1,x2),numis(y1,y2)):is(ts(num(fr(x1,x2)),num(fr(y1,y2))),ts(x1,y1))
+t2:=ists12(den(fr(x1,x2)),x2,den(fr(y1,y2)),y2,denis(x1,x2),denis(y1,y2)):is(ts(den(fr(x1,x2)),den(fr(y1,y2))),ts(x2,y2))
+-ii4
+y2@tf12:=isnd(ts(num(fr(x1,x2)),num(fr(y1,y2))),ts(den(fr(x1,x2)),den(fr(y1,y2))),ts(x1,y1),ts(x2,y2),t1".ii4",t2".ii4"):is"e"(frac,tf(fr(x1,x2),fr(y1,y2)),fr(ts(x1,y1),ts(x2,y2)))
++*ii4
+n2@t3:=ists2(num(fr(n1,n2)),n1,1x,numis(n1,n2)):is(ts(1x,num(fr(n1,n2))),ts(1x,n1))
+t4:=ists2(den(fr(n1,n2)),n2,2x,denis(n1,n2)):is(ts(2x,den(fr(n1,n2))),ts(2x,n2))
+-ii4
+n2@tf1:=isnd(ts(1x,num(fr(n1,n2))),ts(2x,den(fr(n1,n2))),ts(1x,n1),ts(2x,n2),t3".ii4",t4".ii4"):is"e"(frac,tf(x,fr(n1,n2)),fr(ts(1x,n1),ts(2x,n2)))
++*ii4
+n2@t5:=ists1(num(fr(n1,n2)),n1,1x,numis(n1,n2)):is(ts(num(fr(n1,n2)),1x),ts(n1,1x))
+t6:=ists1(den(fr(n1,n2)),n2,2x,denis(n1,n2)):is(ts(den(fr(n1,n2)),2x),ts(n2,2x))
+-ii4
+n2@tf2:=isnd(ts(num(fr(n1,n2)),1x),ts(den(fr(n1,n2)),2x),ts(n1,1x),ts(n2,2x),t5".ii4",t6".ii4"):is"e"(frac,tf(fr(n1,n2),x),fr(ts(n1,1x),ts(n2,2x)))
+y2@tfeq12a:=refeq1(tf(fr(x1,x2),fr(y1,y2)),fr(ts(x1,y1),ts(x2,y2)),tf12):eq(tf(fr(x1,x2),fr(y1,y2)),fr(ts(x1,y1),ts(x2,y2)))
+tfeq12b:=refeq2(tf(fr(x1,x2),fr(y1,y2)),fr(ts(x1,y1),ts(x2,y2)),tf12):eq(fr(ts(x1,y1),ts(x2,y2)),tf(fr(x1,x2),fr(y1,y2)))
+n2@tfeq1a:=refeq1(tf(x,fr(n1,n2)),fr(ts(1x,n1),ts(2x,n2)),tf1):eq(tf(x,fr(n1,n2)),fr(ts(1x,n1),ts(2x,n2)))
+tfeq1b:=refeq2(tf(x,fr(n1,n2)),fr(ts(1x,n1),ts(2x,n2)),tf1):eq(fr(ts(1x,n1),ts(2x,n2)),tf(x,fr(n1,n2)))
+tfeq2a:=refeq1(tf(fr(n1,n2),x),fr(ts(n1,1x),ts(n2,2x)),tf2):eq(tf(fr(n1,n2),x),fr(ts(n1,1x),ts(n2,2x)))
+tfeq2b:=refeq2(tf(fr(n1,n2),x),fr(ts(n1,1x),ts(n2,2x)),tf2):eq(fr(ts(n1,1x),ts(n2,2x)),tf(fr(n1,n2),x))
+u@[e:eq(x,y)][f:eq(z,u)]
++468
+t1:=ists12(ts(1x,2y),ts(1y,2x),ts(1z,2u),ts(1u,2z),e,f):is(ts(ts(1x,2y),ts(1z,2u)),ts(ts(1y,2x),ts(1u,2z)))
+-468
+d@stets2:=tr3is(nat,ts(ts(a,b),ts(c,d)),ts(ts(a,b),ts(d,c)),ts(ts(a,c),ts(d,b)),ts(ts(a,c),ts(b,d)),ists2(ts(c,d),ts(d,c),ts(a,b),comts(c,d)),stets(a,b,d,c),ists2(ts(d,b),ts(b,d),ts(a,c),comts(d,b))):is(ts(ts(a,b),ts(c,d)),ts(ts(a,c),ts(b,d)))
++*468
+f@t2:=tr3is(nat,ts(ts(1x,1z),ts(2y,2u)),ts(ts(1x,2y),ts(1z,2u)),ts(ts(1y,2x),ts(1u,2z)),ts(ts(1y,1u),ts(2x,2z)),stets2(1x,1z,2y,2u),t1,stets2(1y,2x,1u,2z)):is(ts(ts(1x,1z),ts(2y,2u)),ts(ts(1y,1u),ts(2x,2z)))
+-468
+f@satz68:=eqi12(ts(1x,1z),ts(2x,2z),ts(1y,1u),ts(2y,2u),t2".468"):eq(tf(x,z),tf(y,u))
+eqtf12:=satz68:eq(tf(x,z),tf(y,u))
+z@[e:eq(x,y)]
+eqtf1:=eqtf12(x,y,z,z,e,refeq(z)):eq(tf(x,z),tf(y,z))
+eqtf2:=eqtf12(z,z,x,y,refeq(z),e):eq(tf(z,x),tf(z,y))
+y@satz69:=eqnd(ts(1x,1y),ts(2x,2y),ts(1y,1x),ts(2y,2x),comts(1x,1y),comts(2x,2y)):eq(tf(x,y),tf(y,x))
+comtf:=satz69:eq(tf(x,y),tf(y,x))
+z@satz70:=tr3eq(tf(tf(x,y),z),fr(ts(ts(1x,1y),1z),ts(ts(2x,2y),2z)),fr(ts(1x,ts(1y,1z)),ts(2x,ts(2y,2z))),tf(x,tf(y,z)),tfeq2a(z,ts(1x,1y),ts(2x,2y)),eqnd(ts(ts(1x,1y),1z),ts(ts(2x,2y),2z),ts(1x,ts(1y,1z)),ts(2x,ts(2y,2z)),assts1(1x,1y,1z),assts1(2x,2y,2z)),tfeq1b(x,ts(1y,1z),ts(2y,2z))):eq(tf(tf(x,y),z),tf(x,tf(y,z)))
+asstf1:=satz70:eq(tf(tf(x,y),z),tf(x,tf(y,z)))
+asstf2:=symeq(tf(tf(x,y),z),tf(x,tf(y,z)),asstf1):eq(tf(x,tf(y,z)),tf(tf(x,y),z))
++471
+t1:=tr3eq(tf(x,pf(y,z)),fr(ts(1x,pl(ts(1y,2z),ts(1z,2y))),ts(2x,ts(2y,2z))),fr(pl(ts(1x,ts(1y,2z)),ts(1x,ts(1z,2y))),ts(2x,ts(2y,2z))),pf(fr(ts(1x,ts(1y,2z)),ts(2x,ts(2y,2z))),fr(ts(1x,ts(1z,2y)),ts(2x,ts(2y,2z)))),tfeq1a(x,pl(ts(1y,2z),ts(1z,2y)),ts(2y,2z)),eqn(ts(1x,pl(ts(1y,2z),ts(1z,2y))),ts(2x,ts(2y,2z)),pl(ts(1x,ts(1y,2z)),ts(1x,ts(1z,2y))),disttp2(1x,ts(1y,2z),ts(1z,2y))),satz57a(ts(1x,ts(1y,2z)),ts(1x,ts(1z,2y)),ts(2x,ts(2y,2z)))):eq(tf(x,pf(y,z)),pf(fr(ts(1x,ts(1y,2z)),ts(2x,ts(2y,2z))),fr(ts(1x,ts(1z,2y)),ts(2x,ts(2y,2z)))))
+t2:=treq(fr(ts(1x,ts(1y,2z)),ts(2x,ts(2y,2z))),fr(ts(ts(1x,1y),2z),ts(ts(2x,2y),2z)),tf(x,y),eqnd(ts(1x,ts(1y,2z)),ts(2x,ts(2y,2z)),ts(ts(1x,1y),2z),ts(ts(2x,2y),2z),assts2(1x,1y,2z),assts2(2x,2y,2z)),satz40c(ts(1x,1y),ts(2x,2y),2z)):eq(fr(ts(1x,ts(1y,2z)),ts(2x,ts(2y,2z))),tf(x,y))
+t3:=treq(fr(ts(1x,ts(1z,2y)),ts(2x,ts(2y,2z))),fr(ts(1x,ts(1z,2y)),ts(2x,ts(2z,2y))),tf(x,z),eqd(ts(1x,ts(1z,2y)),ts(2x,ts(2y,2z)),ts(2x,ts(2z,2y)),ists2(ts(2y,2z),ts(2z,2y),2x,comts(2y,2z))),t2(x,z,y)):eq(fr(ts(1x,ts(1z,2y)),ts(2x,ts(2y,2z))),tf(x,z))
+-471
+satz71:=treq(tf(x,pf(y,z)),pf(fr(ts(1x,ts(1y,2z)),ts(2x,ts(2y,2z))),fr(ts(1x,ts(1z,2y)),ts(2x,ts(2y,2z)))),pf(tf(x,y),tf(x,z)),t1".471",eqpf12(fr(ts(1x,ts(1y,2z)),ts(2x,ts(2y,2z))),tf(x,y),fr(ts(1x,ts(1z,2y)),ts(2x,ts(2y,2z))),tf(x,z),t2".471",t3".471")):eq(tf(x,pf(y,z)),pf(tf(x,y),tf(x,z)))
+disttpf1:=tr3eq(tf(pf(x,y),z),tf(z,pf(x,y)),pf(tf(z,x),tf(z,y)),pf(tf(x,z),tf(y,z)),comtf(pf(x,y),z),satz71(z,x,y),eqpf12(tf(z,x),tf(x,z),tf(z,y),tf(y,z),comtf(z,x),comtf(z,y))):eq(tf(pf(x,y),z),pf(tf(x,z),tf(y,z)))
+disttpf2:=satz71:eq(tf(x,pf(y,z)),pf(tf(x,y),tf(x,z)))
+distptf1:=symeq(tf(pf(x,y),z),pf(tf(x,z),tf(y,z)),disttpf1):eq(pf(tf(x,z),tf(y,z)),tf(pf(x,y),z))
+distptf2:=symeq(tf(x,pf(y,z)),pf(tf(x,y),tf(x,z)),disttpf2):eq(pf(tf(x,y),tf(x,z)),tf(x,pf(y,z)))
+[m:moref(x,y)]
++472
+t1:=satz32a(ts(1x,2y),ts(1y,2x),ts(1z,2z),m):more(ts(ts(1x,2y),ts(1z,2z)),ts(ts(1y,2x),ts(1z,2z)))
+t2:=ismore12(ts(ts(1x,2y),ts(1z,2z)),ts(ts(1x,1z),ts(2y,2z)),ts(ts(1y,2x),ts(1z,2z)),ts(ts(1y,1z),ts(2x,2z)),stets2(1x,2y,1z,2z),stets2(1y,2x,1z,2z),t1):more(ts(ts(1x,1z),ts(2y,2z)),ts(ts(1y,1z),ts(2x,2z)))
+-472
+satz72a:=morefi12(ts(1x,1z),ts(2x,2z),ts(1y,1z),ts(2y,2z),t2".472"):moref(tf(x,z),tf(y,z))
+z@[e:eq(x,y)]
+satz72b:=satz68(x,y,z,z,e,refeq(z)):eq(tf(x,z),tf(y,z))
+z@[l:lessf(x,y)]
+satz72c:=satz42(tf(y,z),tf(x,z),satz72a(y,x,z,satz43(x,y,l))):lessf(tf(x,z),tf(y,z))
+m@satz72d:=eqmoref12(tf(x,z),tf(z,x),tf(y,z),tf(z,y),comtf(x,z),comtf(y,z),satz72a):moref(tf(z,x),tf(z,y))
+e@satz72e:=eqtf2(x,y,z,e):eq(tf(z,x),tf(z,y))
+l@satz72f:=eqlessf12(tf(x,z),tf(z,x),tf(y,z),tf(z,y),comtf(x,z),comtf(y,z),satz72c):lessf(tf(z,x),tf(z,y))
+u@[e:eq(x,y)][m:moref(z,u)]
+satz72g:=eqmoref2(tf(x,u),tf(y,u),tf(x,z),eqtf1(x,y,u,e),satz72d(z,u,x,m)):moref(tf(x,z),tf(y,u))
+satz72h:=eqmoref12(tf(x,z),tf(z,x),tf(y,u),tf(u,y),comtf(x,z),comtf(y,u),satz72g):moref(tf(z,x),tf(u,y))
+e@[l:lessf(z,u)]
+satz72j:=eqlessf2(tf(x,u),tf(y,u),tf(x,z),eqtf1(x,y,u,e),satz72f(z,u,x,l)):lessf(tf(x,z),tf(y,u))
+satz72k:=eqlessf12(tf(x,z),tf(z,x),tf(y,u),tf(u,y),comtf(x,z),comtf(y,u),satz72j):lessf(tf(z,x),tf(u,y))
++473
+z@t1:=satz41a(x,y):or3(eq(x,y),moref(x,y),lessf(x,y))
+t2:=satz41b(tf(x,z),tf(y,z)):ec3(eq(tf(x,z),tf(y,z)),moref(tf(x,z),tf(y,z)),lessf(tf(x,z),tf(y,z)))
+-473
+z@[m:moref(tf(x,z),tf(y,z))]
+satz73a:=th11"l.ec3"(eq(x,y),moref(x,y),lessf(x,y),eq(tf(x,z),tf(y,z)),moref(tf(x,z),tf(y,z)),lessf(tf(x,z),tf(y,z)),t1".473",t2".473",[u:eq(x,y)]satz72b(x,y,z,u),[u:moref(x,y)]satz72a(x,y,z,u),[u:lessf(x,y)]satz72c(x,y,z,u),m):moref(x,y)
+z@[e:eq(tf(x,z),tf(y,z))]
+satz73b:=th10"l.ec3"(eq(x,y),moref(x,y),lessf(x,y),eq(tf(x,z),tf(y,z)),moref(tf(x,z),tf(y,z)),lessf(tf(x,z),tf(y,z)),t1".473",t2".473",[u:eq(x,y)]satz72b(x,y,z,u),[u:moref(x,y)]satz72a(x,y,z,u),[u:lessf(x,y)]satz72c(x,y,z,u),e):eq(x,y)
+z@[l:lessf(tf(x,z),tf(y,z))]
+satz73c:=th12"l.ec3"(eq(x,y),moref(x,y),lessf(x,y),eq(tf(x,z),tf(y,z)),moref(tf(x,z),tf(y,z)),lessf(tf(x,z),tf(y,z)),t1".473",t2".473",[u:eq(x,y)]satz72b(x,y,z,u),[u:moref(x,y)]satz72a(x,y,z,u),[u:lessf(x,y)]satz72c(x,y,z,u),l):lessf(x,y)
+z@[m:moref(tf(z,x),tf(z,y))]
+satz73d:=satz73a(eqmoref12(tf(z,x),tf(x,z),tf(z,y),tf(y,z),comtf(z,x),comtf(z,y),m)):moref(x,y)
+z@[e:eq(tf(z,x),tf(z,y))]
+satz73e:=satz73b(tr3eq(tf(x,z),tf(z,x),tf(z,y),tf(y,z),comtf(x,z),e,comtf(z,y))):eq(x,y)
+z@[l:lessf(tf(z,x),tf(z,y))]
+satz73f:=satz73c(eqlessf12(tf(z,x),tf(x,z),tf(z,y),tf(y,z),comtf(z,x),comtf(z,y),l)):lessf(x,y)
+u@[m:moref(x,y)][n:moref(z,u)]
++474
+t1:=satz72a(x,y,z,m):moref(tf(x,z),tf(y,z))
+t2:=eqmoref12(tf(z,y),tf(y,z),tf(u,y),tf(y,u),comtf(z,y),comtf(u,y),satz72a(z,u,y,n)):moref(tf(y,z),tf(y,u))
+-474
+satz74:=trmoref(tf(x,z),tf(y,z),tf(y,u),t1".474",t2".474"):moref(tf(x,z),tf(y,u))
+u@[l:lessf(x,y)][k:lessf(z,u)]
+satz74a:=satz42(tf(y,u),tf(x,z),satz74(y,x,u,z,satz43(x,y,l),satz43(z,u,k))):lessf(tf(x,z),tf(y,u))
+u@[m:moreq(x,y)][n:moref(z,u)]
+satz75a:=orapp(moref(x,y),eq(x,y),moref(tf(x,z),tf(y,u)),m,[v:moref(x,y)]satz74(v,n),[v:eq(x,y)]satz72g(v,n)):moref(tf(x,z),tf(y,u))
+u@[m:moref(x,y)][n:moreq(z,u)]
+satz75b:=orapp(moref(z,u),eq(z,u),moref(tf(x,z),tf(y,u)),n,[v:moref(z,u)]satz74(m,v),[v:eq(z,u)]eqmoref2(tf(y,z),tf(y,u),tf(x,z),eqtf2(z,u,y,v),satz72a(m))):moref(tf(x,z),tf(y,u))
+u@[l:lesseq(x,y)][k:lessf(z,u)]
+satz75c:=satz42(tf(y,u),tf(x,z),satz75a(y,x,u,z,satz49(x,y,l),satz43(z,u,k))):lessf(tf(x,z),tf(y,u))
+u@[l:lessf(x,y)][k:lesseq(z,u)]
+satz75d:=satz42(tf(y,u),tf(x,z),satz75b(y,x,u,z,satz43(x,y,l),satz49(z,u,k))):lessf(tf(x,z),tf(y,u))
+u@[m:moreq(x,y)][n:moreq(z,u)]
++476
+[e:eq(x,y)][f:eq(z,u)]
+t1:=moreqi2(tf(x,z),tf(y,u),satz68(e,f)):moreq(tf(x,z),tf(y,u))
+e@[o:moref(z,u)]
+t2:=moreqi1(tf(x,z),tf(y,u),satz75a(m,o)):moreq(tf(x,z),tf(y,u))
+e@t3:=orapp(moref(z,u),eq(z,u),moreq(tf(x,z),tf(y,u)),n,[v:moref(z,u)]t2(v),[v:eq(z,u)]t1(v)):moreq(tf(x,z),tf(y,u))
+n@[o:moref(x,y)]
+t4:=moreqi1(tf(x,z),tf(y,u),satz75b(o,n)):moreq(tf(x,z),tf(y,u))
+-476
+satz76:=orapp(moref(x,y),eq(x,y),moreq(tf(x,z),tf(y,u)),m,[v:moref(x,y)]t4".476"(v),[v:eq(x,y)]t3".476"(v)):moreq(tf(x,z),tf(y,u))
+u@[l:lesseq(x,y)][k:lesseq(z,u)]
+satz76a:=satz48(tf(y,u),tf(x,z),satz76(y,x,u,z,satz49(x,y,l),satz49(z,u,k))):lesseq(tf(x,z),tf(y,u))
+y@[v:frac][w:frac][e:eq(tf(y,v),x)][f:eq(tf(y,w),x)]
+satz77b:=satz73e(v,w,y,treq2(tf(y,v),tf(y,w),x,e,f)):eq(v,w)
++477
+y@v:=fr(ts(1x,2y),ts(2x,1y)):frac
+t1:=tr4eq(tf(y,v),tf(v,y),fr(ts(ts(1x,2y),1y),ts(ts(2x,1y),2y)),fr(ts(1x,ts(1y,2y)),ts(2x,ts(1y,2y))),x,comtf(y,v),tfeq2a(y,ts(1x,2y),ts(2x,1y)),eqnd(ts(ts(1x,2y),1y),ts(ts(2x,1y),2y),ts(1x,ts(1y,2y)),ts(2x,ts(1y,2y)),tris(nat,ts(ts(1x,2y),1y),ts(1x,ts(2y,1y)),ts(1x,ts(1y,2y)),assts1(1x,2y,1y),ists2(ts(2y,1y),ts(1y,2y),1x,comts(2y,1y))),assts1(2x,1y,2y)),satz40a(x,ts(1y,2y))):eq(tf(y,v),x)
+-477
+y@satz77a:=somei(frac,[t:frac]eq(tf(y,t),x),v".477",t1".477"):some"l"(frac,[t:frac]eq(tf(y,t),x))
++rt
+@eq:=[x:frac][y:frac]eq"n"(x,y):[x:frac][y:frac]'prop'
+refeq:=[x:frac]refeq"n"(x):[x:frac]<x><x>eq
+symeq:=[x:frac][y:frac][t:<y><x>eq]symeq"n"(x,y,t):[x:frac][y:frac][t:<y><x>eq]<x><y>eq
+treq:=[x:frac][y:frac][z:frac][t:<y><x>eq][u:<z><y>eq]treq"n"(x,y,z,t,u):[x:frac][y:frac][z:frac][t:<y><x>eq][u:<z><y>eq]<z><x>eq
+[x:frac][s:set(frac)]
+inf:=esti(frac,x,s):'prop'
+@rat:=ect"eq"(frac,eq,refeq,symeq,treq):'type'
+[x0:rat][y0:rat]
+is:=is"e"(rat,x0,y0):'prop'
+nis:=not(is(x0,y0)):'prop'
+@[p:[x:rat]'prop']
+some:=some"l"(rat,p):'prop'
+all:=all"l"(rat,p):'prop'
+one:=one"e"(rat,p):'prop'
+x0@[s:set(rat)]
+in:=esti(rat,x0,s):'prop'
+x@ratof:=ectelt"eq"(frac,eq,refeq,symeq,treq,x):rat
+x0@class:=ecect"eq"(frac,eq,refeq,symeq,treq,x0):set(frac)
+x@inclass:=th5"eq.4"(frac,eq,refeq,symeq,treq,x):inf(x,class(ratof(x)))
+x0@[x:frac][y:frac][xix0:inf(x,class(x0))][e:eq"n"(x,y)]
+lemmaeq1:=th8"eq.4"(frac,eq,refeq,symeq,treq,x0,x,xix0,y,e):inf(y,class(x0))
+x0@[a:'prop'][a1:[x:frac][xi:inf(x,class(x0))]a]
+ratapp1:=th3"eq.4"(frac,eq,refeq,symeq,treq,x0,a,a1):a
+y0@[a:'prop'][a1:[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]a][x:frac][xix0:inf(x,class(x0))]
++ii5
+t1:=ratapp1(y0,a,[y:frac][yi:inf(y,class(y0))]<yi><xix0><y><x>a1):a
+-ii5
+a1@ratapp2:=ratapp1(x0,a,[x:frac][xi:inf(x,class(x0))]t1".ii5"(x,xi)):a
+y0@[z0:rat][a:'prop'][a1:[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]a][x:frac][xix0:inf(x,class(x0))]
++*ii5
+xix0@t2:=ratapp2(y0,z0,a,[y:frac][z:frac][yi:inf(y,class(y0))][zi:inf(z,class(z0))]<zi><yi><xix0><z><y><x>a1):a
+-ii5
+a1@ratapp3:=ratapp1(x0,a,[x:frac][xi:inf(x,class(x0))]t2".ii5"(x,xi)):a
+z0@[u0:rat][a:'prop'][a1:[x:frac][y:frac][z:frac][u:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]a][x:frac][xix0:inf(x,class(x0))]
++*ii5
+xix0@t3:=ratapp3(y0,z0,u0,a,[y:frac][z:frac][u:frac][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]<ui><zi><yi><xix0><u><z><y><x>a1):a
+-ii5
+a1@ratapp4:=ratapp1(x0,a,[x:frac][xi:inf(x,class(x0))]t3".ii5"(x,xi)):a
+y0@[x1:frac][y1:frac][x1ix0:inf(x1,class(x0))][y1iy0:inf(y1,class(y0))][e:eq"n"(x1,y1)]
+isi:=th3"eq.5"(frac,eq,refeq,symeq,treq,x0,y0,x1,x1ix0,y1,y1iy0,e):is(x0,y0)
+y1iy0@[i:is(x0,y0)]
+ise:=th5"eq.5"(frac,eq,refeq,symeq,treq,x0,y0,x1,x1ix0,y1,y1iy0,i):eq"n"(x1,y1)
+y1iy0@[n:not(eq"n"(x1,y1))]
+nisi:=th3"l.imp"(is(x0,y0),eq"n"(x1,y1),n,[t:is(x0,y0)]ise(t)):nis(x0,y0)
+y1iy0@[n:nis(x0,y0)]
+nise:=th3"l.imp"(eq"n"(x1,y1),is(x0,y0),n,[t:eq"n"(x1,y1)]isi(t)):not(eq"n"(x1,y1))
+@[alpha:'type'][f:[x:frac][y:frac]alpha]
+fixf:=fixfu2"eq"(frac,eq,refeq,symeq,treq,alpha,f):'prop'
+y0@[alpha:'type'][f:[x:frac][y:frac]alpha][ff:fixf(alpha,f)]
+indrat:=indeq2"eq"(frac,eq,refeq,symeq,treq,alpha,f,ff,x0,y0):alpha
+[x:frac][y:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))]
+isindrat:=th1"eq.11"(frac,eq,refeq,symeq,treq,alpha,f,ff,x0,y0,x,xix0,y,yiy0):is"e"(alpha,<y><x>f,indrat)
+x0@satz78:=refis(rat,x0):is(x0,x0)
+y0@[i:is(x0,y0)]
+satz79:=symis(rat,x0,y0,i):is(y0,x0)
+z0@[i:is(x0,y0)][j:is(y0,z0)]
+satz80:=tris(rat,x0,y0,z0,i,j):is(x0,z0)
+y0@more:=some"l"(frac,[x:frac]some"l"(frac,[y:frac]and3(inf(x,class(x0)),inf(y,class(y0)),moref(x,y)))):'prop'
++*ii5
+y1@propm:=and3(inf(x1,class(x0)),inf(y1,class(y0)),moref(x1,y1)):'prop'
+-ii5
+y0@[m:more(x0,y0)][x:frac][y:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][t:frac][s:some"l"(frac,[u:frac]propm".ii5"(t,u))][u:frac][p:propm".ii5"(t,u)]
++*ii5
+p@t4:=and3e1(inf(t,class(x0)),inf(u,class(y0)),moref(t,u),p):inf(t,class(x0))
+t5:=and3e2(inf(t,class(x0)),inf(u,class(y0)),moref(t,u),p):inf(u,class(y0))
+t6:=and3e3(inf(t,class(x0)),inf(u,class(y0)),moref(t,u),p):moref(t,u)
+t7:=satz44(t,u,x,y,t6,ise(x0,x0,t,x,t4,xix0,refis(rat,x0)),ise(y0,y0,u,y,t5,yiy0,refis(rat,y0))):moref(x,y)
+s@t8:=someapp(frac,[u:frac]propm(t,u),s,moref(x,y),[u:frac][v:propm(t,u)]t7(u,v)):moref(x,y)
+-ii5
+yiy0@also18:=someapp(frac,[t:frac]some"l"(frac,[u:frac]propm".ii5"(t,u)),m,moref(x,y),[t:frac][v:some"l"(frac,[u:frac]propm".ii5"(t,u))]t8".ii5"(t,v)):moref(x,y)
+y1iy0@[m:moref(x1,y1)]
++*ii5
+m@t9:=and3i(inf(x1,class(x0)),inf(y1,class(y0)),moref(x1,y1),x1ix0,y1iy0,m):propm(x1,y1)
+t10:=somei(frac,[t:frac]propm(x1,t),y1,t9):some"l"(frac,[t:frac]propm(x1,t))
+-ii5
+m@morei:=somei(frac,[u:frac]some"l"(frac,[t:frac]propm".ii5"(u,t)),x1,t10".ii5"):more(x0,y0)
+y1iy0@[m:more(x0,y0)]
+moree:=also18(m,x1,y1,x1ix0,y1iy0):moref(x1,y1)
+z0@[i:is(x0,y0)][m:more(x0,z0)]
+ismore1:=isp(rat,[t:rat]more(t,z0),x0,y0,m,i):more(y0,z0)
+i@[m:more(z0,x0)]
+ismore2:=isp(rat,[t:rat]more(z0,t),x0,y0,m,i):more(z0,y0)
+u0@[i:is(x0,y0)][j:is(z0,u0)][m:more(x0,z0)]
+ismore12:=ismore2(z0,u0,y0,j,ismore1(x0,y0,z0,i,m)):more(y0,u0)
+y0@less:=some"l"(frac,[x:frac]some"l"(frac,[y:frac]and3(inf(x,class(x0)),inf(y,class(y0)),lessf(x,y)))):'prop'
++*ii5
+y1@propl:=and3(inf(x1,class(x0)),inf(y1,class(y0)),lessf(x1,y1)):'prop'
+-ii5
+y0@[l:less(x0,y0)][x:frac][y:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][t:frac][s:some"l"(frac,[u:frac]propl".ii5"(t,u))][u:frac][p:propl".ii5"(t,u)]
++*ii5
+p@t11:=and3e1(inf(t,class(x0)),inf(u,class(y0)),lessf(t,u),p):inf(t,class(x0))
+t12:=and3e2(inf(t,class(x0)),inf(u,class(y0)),lessf(t,u),p):inf(u,class(y0))
+t13:=and3e3(inf(t,class(x0)),inf(u,class(y0)),lessf(t,u),p):lessf(t,u)
+t14:=satz45(t,u,x,y,t13,ise(x0,x0,t,x,t11,xix0,refis(rat,x0)),ise(y0,y0,u,y,t12,yiy0,refis(rat,y0))):lessf(x,y)
+s@t15:=someapp(frac,[u:frac]propl(t,u),s,lessf(x,y),[u:frac][v:propl(t,u)]t14(u,v)):lessf(x,y)
+-ii5
+yiy0@also19:=someapp(frac,[t:frac]some"l"(frac,[u:frac]propl".ii5"(t,u)),l,lessf(x,y),[t:frac][v:some"l"(frac,[u:frac]propl".ii5"(t,u))]t15".ii5"(t,v)):lessf(x,y)
+y1iy0@[l:lessf(x1,y1)]
++*ii5
+l@t16:=and3i(inf(x1,class(x0)),inf(y1,class(y0)),lessf(x1,y1),x1ix0,y1iy0,l):propl(x1,y1)
+t17:=somei(frac,[t:frac]propl(x1,t),y1,t16):some"l"(frac,[t:frac]propl(x1,t))
+-ii5
+l@lessi:=somei(frac,[u:frac]some"l"(frac,[t:frac]propl".ii5"(u,t)),x1,t17".ii5"):less(x0,y0)
+y1iy0@[l:less(x0,y0)]
+lesse:=also19(l,x1,y1,x1ix0,y1iy0):lessf(x1,y1)
+z0@[i:is(x0,y0)][l:less(x0,z0)]
+isless1:=isp(rat,[t:rat]less(t,z0),x0,y0,l,i):less(y0,z0)
+i@[l:less(z0,x0)]
+isless2:=isp(rat,[t:rat]less(z0,t),x0,y0,l,i):less(z0,y0)
+u0@[i:is(x0,y0)][j:is(z0,u0)][l:less(x0,z0)]
+isless12:=isless2(z0,u0,y0,j,isless1(x0,y0,z0,i,l)):less(y0,u0)
++581
+y1iy0@t1:=satz41a(x1,y1):or3(eq"n"(x1,y1),moref(x1,y1),lessf(x1,y1))
+[e:eq"n"(x1,y1)]
+t2:=or3i1(is(x0,y0),more(x0,y0),less(x0,y0),isi(e)):or3(is(x0,y0),more(x0,y0),less(x0,y0))
+y1iy0@[m:moref(x1,y1)]
+t3:=or3i2(is(x0,y0),more(x0,y0),less(x0,y0),morei(m)):or3(is(x0,y0),more(x0,y0),less(x0,y0))
+y1iy0@[l:lessf(x1,y1)]
+t4:=or3i3(is(x0,y0),more(x0,y0),less(x0,y0),lessi(l)):or3(is(x0,y0),more(x0,y0),less(x0,y0))
+y1iy0@t5:=or3app(eq"n"(x1,y1),moref(x1,y1),lessf(x1,y1),or3(is(x0,y0),more(x0,y0),less(x0,y0)),t1,[t:eq"n"(x1,y1)]t2(t),[t:moref(x1,y1)]t3(t),[t:lessf(x1,y1)]t4(t)):or3(is(x0,y0),more(x0,y0),less(x0,y0))
+t6:=satz41b(x1,y1):ec3(eq"n"(x1,y1),moref(x1,y1),lessf(x1,y1))
+[i:is(x0,y0)]
+t7:=th3"l.imp"(more(x0,y0),moref(x1,y1),ec3e12(eq"n"(x1,y1),moref(x1,y1),lessf(x1,y1),t6,ise(i)),[t:more(x0,y0)]moree(t)):not(more(x0,y0))
+y1iy0@[m:more(x0,y0)]
+t8:=th3"l.imp"(less(x0,y0),lessf(x1,y1),ec3e23(eq"n"(x1,y1),moref(x1,y1),lessf(x1,y1),t6,moree(m)),[t:less(x0,y0)]lesse(t)):not(less(x0,y0))
+y1iy0@[l:less(x0,y0)]
+t9:=th3"l.imp"(is(x0,y0),eq"n"(x1,y1),ec3e31(eq"n"(x1,y1),moref(x1,y1),lessf(x1,y1),t6,lesse(l)),[t:is(x0,y0)]ise(t)):nis(x0,y0)
+y1iy0@t10:=th6"l.ec3"(is(x0,y0),more(x0,y0),less(x0,y0),th1"l.ec"(is(x0,y0),more(x0,y0),[t:is(x0,y0)]t7(t)),th1"l.ec"(more(x0,y0),less(x0,y0),[t:more(x0,y0)]t8(t)),th1"l.ec"(less(x0,y0),is(x0,y0),[t:less(x0,y0)]t9(t))):ec3(is(x0,y0),more(x0,y0),less(x0,y0))
+t11:=orec3i(is(x0,y0),more(x0,y0),less(x0,y0),t5,t10):orec3(is(x0,y0),more(x0,y0),less(x0,y0))
+-581
+y0@satz81:=ratapp2(orec3(is(x0,y0),more(x0,y0),less(x0,y0)),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t11".581"(x,y,xi,yi)):orec3(is(x0,y0),more(x0,y0),less(x0,y0))
+satz81a:=orec3e1(is(x0,y0),more(x0,y0),less(x0,y0),satz81):or3(is(x0,y0),more(x0,y0),less(x0,y0))
+satz81b:=orec3e2(is(x0,y0),more(x0,y0),less(x0,y0),satz81):ec3(is(x0,y0),more(x0,y0),less(x0,y0))
+[m:more(x0,y0)]
++582
+[x:frac][y:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))]
+t1:=lessi(y0,x0,y,x,yiy0,xix0,satz42(x,y,moree(x0,y0,x,y,xix0,yiy0,m))):less(y0,x0)
+-582
+satz82:=ratapp2(less(y0,x0),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t1".582"(x,y,xi,yi)):less(y0,x0)
+y0@[l:less(x0,y0)]
++583
+[x:frac][y:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))]
+t1:=morei(y0,x0,y,x,yiy0,xix0,satz43(x,y,lesse(x0,y0,x,y,xix0,yiy0,l))):more(y0,x0)
+-583
+satz83:=ratapp2(more(y0,x0),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t1".583"(x,y,xi,yi)):more(y0,x0)
+y0@moreis:=or(more(x0,y0),is(x0,y0)):'prop'
+[m:more(x0,y0)]
+moreisi1:=ori1(more,is,m):moreis(x0,y0)
+y0@[i:is(x0,y0)]
+moreisi2:=ori2(more,is,i):moreis(x0,y0)
+y1iy0@[m:moreq(x1,y1)]
+moreisi:=orapp(moref(x1,y1),eq"n"(x1,y1),moreis,m,[t:moref(x1,y1)]moreisi1(morei(t)),[t:eq"n"(x1,y1)]moreisi2(isi(t))):moreis(x0,y0)
+y1iy0@[m:moreis(x0,y0)]
+moreise:=orapp(more,is,moreq(x1,y1),m,[t:more]moreqi1(x1,y1,moree(t)),[t:is]moreqi2(x1,y1,ise(t))):moreq(x1,y1)
+z0@[i:is(x0,y0)][m:moreis(x0,z0)]
+ismoreis1:=isp(rat,[t:rat]moreis(t,z0),x0,y0,m,i):moreis(y0,z0)
+i@[m:moreis(z0,x0)]
+ismoreis2:=isp(rat,[t:rat]moreis(z0,t),x0,y0,m,i):moreis(z0,y0)
+u0@[i:is(x0,y0)][j:is(z0,u0)][m:moreis(x0,z0)]
+ismoreis12:=ismoreis2(z0,u0,y0,j,ismoreis1(x0,y0,z0,i,m)):moreis(y0,u0)
+y0@lessis:=or(less(x0,y0),is(x0,y0)):'prop'
+[l:less(x0,y0)]
+lessisi1:=ori1(less,is,l):lessis(x0,y0)
+y0@[i:is(x0,y0)]
+lessisi2:=ori2(less,is,i):lessis(x0,y0)
+y1iy0@[l:lesseq(x1,y1)]
+lessisi:=orapp(lessf(x1,y1),eq"n"(x1,y1),lessis,l,[t:lessf(x1,y1)]lessisi1(lessi(t)),[t:eq"n"(x1,y1)]lessisi2(isi(t))):lessis(x0,y0)
+y1iy0@[l:lessis(x0,y0)]
+lessise:=orapp(less,is,lesseq(x1,y1),l,[t:less]lesseqi1(x1,y1,lesse(t)),[t:is]lesseqi2(x1,y1,ise(t))):lesseq(x1,y1)
+z0@[i:is(x0,y0)][l:lessis(x0,z0)]
+islessis1:=isp(rat,[t:rat]lessis(t,z0),x0,y0,l,i):lessis(y0,z0)
+i@[l:lessis(z0,x0)]
+islessis2:=isp(rat,[t:rat]lessis(z0,t),x0,y0,l,i):lessis(z0,y0)
+u0@[i:is(x0,y0)][j:is(z0,u0)][l:lessis(x0,z0)]
+islessis12:=islessis2(z0,u0,y0,j,islessis1(x0,y0,z0,i,l)):lessis(y0,u0)
+y0@[m:moreis(x0,y0)]
+satz81c:=th7"l.ec3"(is(x0,y0),more(x0,y0),less(x0,y0),satz81b,comor(more(x0,y0),is(x0,y0),m)):not(less(x0,y0))
+y0@[l:lessis(x0,y0)]
+satz81d:=th9"l.ec3"(is(x0,y0),more(x0,y0),less(x0,y0),satz81b,l):not(more(x0,y0))
+y0@[n:not(more(x0,y0))]
+satz81e:=th2"l.or3"(is(x0,y0),more(x0,y0),less(x0,y0),satz81a,n):lessis(x0,y0)
+y0@[n:not(less(x0,y0))]
+satz81f:=comor(is(x0,y0),more(x0,y0),th3"l.or3"(is(x0,y0),more(x0,y0),less(x0,y0),satz81a,n)):moreis(x0,y0)
+y0@[m:more(x0,y0)]
+satz81g:=th3"l.or"(less(x0,y0),is(x0,y0),ec3e23(is(x0,y0),more(x0,y0),less(x0,y0),satz81b,m),ec3e21(is(x0,y0),more(x0,y0),less(x0,y0),satz81b,m)):not(lessis(x0,y0))
+y0@[l:less(x0,y0)]
+satz81h:=th3"l.or"(more(x0,y0),is(x0,y0),ec3e32(is(x0,y0),more(x0,y0),less(x0,y0),satz81b,l),ec3e31(is(x0,y0),more(x0,y0),less(x0,y0),satz81b,l)):not(moreis(x0,y0))
+y0@[n:not(moreis(x0,y0))]
+satz81j:=or3e3(is(x0,y0),more(x0,y0),less(x0,y0),satz81a,th5"l.or"(more(x0,y0),is(x0,y0),n),th4"l.or"(more(x0,y0),is(x0,y0),n)):less(x0,y0)
+y0@[n:not(lessis(x0,y0))]
+satz81k:=or3e2(is(x0,y0),more(x0,y0),less(x0,y0),satz81a,th4"l.or"(less(x0,y0),is(x0,y0),n),th5"l.or"(less(x0,y0),is(x0,y0),n)):more(x0,y0)
+y0@[m:moreis(x0,y0)]
++584
+[x:frac][y:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))]
+t1:=lessisi(y0,x0,y,x,yiy0,xix0,satz48(x,y,moreise(x0,y0,x,y,xix0,yiy0,m))):lessis(y0,x0)
+-584
+satz84:=ratapp2(lessis(y0,x0),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t1".584"(x,y,xi,yi)):lessis(y0,x0)
+y0@[l:lessis(x0,y0)]
++585
+[x:frac][y:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))]
+t1:=moreisi(y0,x0,y,x,yiy0,xix0,satz49(x,y,lessise(x0,y0,x,y,xix0,yiy0,l))):moreis(y0,x0)
+-585
+satz85:=ratapp2(moreis(y0,x0),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t1".585"(x,y,xi,yi)):moreis(y0,x0)
+z0@[l:less(x0,y0)][k:less(y0,z0)]
++586
+[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t1:=lessi(x0,z0,x,z,xix0,ziz0,satz50(x,y,z,lesse(x0,y0,x,y,xix0,yiy0,l),lesse(y0,z0,y,z,yiy0,ziz0,k))):less(x0,z0)
+-586
+satz86:=ratapp3(less(x0,z0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t1".586"(x,y,z,xi,yi,zi)):less(x0,z0)
+trless:=satz86:less(x0,z0)
+z0@[m:more(x0,y0)][n:more(y0,z0)]
+trmore:=satz83(z0,x0,satz86(z0,y0,x0,satz82(y0,z0,n),satz82(m))):more(x0,z0)
+z0@[l:lessis(x0,y0)][k:less(y0,z0)]
++587
+[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t1:=lessi(x0,z0,x,z,xix0,ziz0,satz51a(x,y,z,lessise(x0,y0,x,y,xix0,yiy0,l),lesse(y0,z0,y,z,yiy0,ziz0,k))):less(x0,z0)
+-587
+satz87a:=ratapp3(less(x0,z0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t1".587"(x,y,z,xi,yi,zi)):less(x0,z0)
+z0@[l:less(x0,y0)][k:lessis(y0,z0)]
++*587
+k@[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t2:=lessi(x0,z0,x,z,xix0,ziz0,satz51b(x,y,z,lesse(x0,y0,x,y,xix0,yiy0,l),lessise(y0,z0,y,z,yiy0,ziz0,k))):less(x0,z0)
+-587
+k@satz87b:=ratapp3(less(x0,z0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t2".587"(x,y,z,xi,yi,zi)):less(x0,z0)
+z0@[m:moreis(x0,y0)][n:more(y0,z0)]
+satz87c:=satz83(z0,x0,satz87b(z0,y0,x0,satz82(y0,z0,n),satz84(m))):more(x0,z0)
+z0@[m:more(x0,y0)][n:moreis(y0,z0)]
+satz87d:=satz83(z0,x0,satz87a(z0,y0,x0,satz84(y0,z0,n),satz82(m))):more(x0,z0)
+z0@[l:lessis(x0,y0)][k:lessis(y0,z0)]
++588
+[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t1:=lessisi(x0,z0,x,z,xix0,ziz0,satz52(x,y,z,lessise(x0,y0,x,y,xix0,yiy0,l),lessise(y0,z0,y,z,yiy0,ziz0,k))):lessis(x0,z0)
+-588
+satz88:=ratapp3(lessis(x0,z0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t1".588"(x,y,z,xi,yi,zi)):lessis(x0,z0)
+trlessis:=satz88:lessis(x0,z0)
+z0@[m:moreis(x0,y0)][n:moreis(y0,z0)]
+trmoreis:=satz85(z0,x0,satz88(z0,y0,x0,satz84(y0,z0,n),satz84(m))):moreis(x0,z0)
++589
+x0@[x:frac][xix0:inf(x,class(x0))][z:frac][m:moref(z,x)]
+t1:=somei(rat,[t:rat]more(t,x0),ratof(z),morei(ratof(z),x0,z,x,inclass(z),xix0,m)):some([t:rat]more(t,x0))
+xix0@t2:=someapp(frac,[t:frac]moref(t,x),satz53(x),some([t:rat]more(t,x0)),[t:frac][u:moref(t,x)]t1(t,u)):some([t:rat]more(t,x0))
+-589
+x0@satz89:=ratapp1(some([t:rat]more(t,x0)),[x:frac][xi:inf(x,class(x0))]t2".589"(x,xi)):some([t:rat]more(t,x0))
++590
+z"rt.589"@[l:lessf(z,x)]
+t1:=somei(rat,[t:rat]less(t,x0),ratof(z),lessi(ratof(z),x0,z,x,inclass(z),xix0,l)):some([t:rat]less(t,x0))
+xix0"rt.589"@t2:=someapp(frac,[t:frac]lessf(t,x),satz54(x),some([t:rat]less(t,x0)),[t:frac][u:lessf(t,x)]t1(t,u)):some([t:rat]less(t,x0))
+-590
+satz90:=ratapp1(some([t:rat]less(t,x0)),[x:frac][xi:inf(x,class(x0))]t2".590"(x,xi)):some([t:rat]less(t,x0))
+y0@[l:less(x0,y0)]
++591
+[x:frac][y:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][z:frac][a:and(lessf(x,z),lessf(z,y))]
+t1:=lessi(x0,ratof(z),x,z,xix0,inclass(z),ande1(lessf(x,z),lessf(z,y),a)):less(x0,ratof(z))
+t2:=lessi(ratof(z),y0,z,y,inclass(z),yiy0,ande2(lessf(x,z),lessf(z,y),a)):less(ratof(z),y0)
+t3:=andi(less(x0,ratof(z)),less(ratof(z),y0),t1,t2):and(less(x0,ratof(z)),less(ratof(z),y0))
+t4:=somei(rat,[t:rat]and(less(x0,t),less(t,y0)),ratof(z),t3):some([t:rat]and(less(x0,t),less(t,y0)))
+yiy0@t5:=someapp(frac,[t:frac]and(lessf(x,t),lessf(t,y)),satz55(x,y,lesse(x,y,xix0,yiy0,l)),some([t:rat]and(less(x0,t),less(t,y0))),[t:frac][u:and(lessf(x,t),lessf(t,y))]t4(t,u)):some([t:rat]and(less(x0,t),less(t,y0)))
+-591
+satz91:=ratapp2(some([t:rat]and(less(x0,t),less(t,y0))),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t5".591"(x,y,xi,yi)):some([t:rat]and(less(x0,t),less(t,y0)))
+@plusfrt:=[x:frac][y:frac]ratof(pf(x,y)):[x:frac][y:frac]rat
+[x:frac][y:frac][z:frac][u:frac][e:eq"n"(x,y)][f:eq"n"(z,u)]
++*ii5
+f@t18:=isi(ratof(pf(x,z)),ratof(pf(y,u)),pf(x,z),pf(y,u),inclass(pf(x,z)),inclass(pf(y,u)),satz56(x,y,z,u,e,f)):is(<z><x>plusfrt,<u><y>plusfrt)
+-ii5
+@fplusfrt:=[x:frac][y:frac][z:frac][u:frac][v:<y><x>eq][w:<u><z>eq]t18".ii5"(x,y,z,u,v,w):fixf(rat,plusfrt)
+y0@pl:=indrat(rat,plusfrt,fplusfrt):rat
++*ii5
+y1iy0@t19:=isindrat(rat,plusfrt,fplusfrt,x1,y1,x1ix0,y1iy0):is(ratof(pf(x1,y1)),pl(x0,y0))
+-ii5
+y1iy0@picp:=isp(rat,[t:rat]inf(pf(x1,y1),class(t)),ratof(pf(x1,y1)),pl(x0,y0),inclass(pf(x1,y1)),t19".ii5"):inf(pf(x1,y1),class(pl(x0,y0)))
+z0@[i:is(x0,y0)]
+ispl1:=isf(rat,rat,[t:rat]pl(t,z0),x0,y0,i):is(pl(x0,z0),pl(y0,z0))
+ispl2:=isf(rat,rat,[t:rat]pl(z0,t),x0,y0,i):is(pl(z0,x0),pl(z0,y0))
+u0@[i:is(x0,y0)][j:is(z0,u0)]
+ispl12:=tris(rat,pl(x0,z0),pl(y0,z0),pl(y0,u0),ispl1(i),ispl2(z0,u0,y0,j)):is(pl(x0,z0),pl(y0,u0))
++592
+y1iy0@t1:=isi(pl(x0,y0),pl(y0,x0),pf(x1,y1),pf(y1,x1),picp,picp(y0,x0,y1,x1,y1iy0,x1ix0),satz58(x1,y1)):is(pl(x0,y0),pl(y0,x0))
+-592
+y0@satz92:=ratapp2(is(pl(x0,y0),pl(y0,x0)),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t1".592"(x,y,xi,yi)):is(pl(x0,y0),pl(y0,x0))
+compl:=satz92:is(pl(x0,y0),pl(y0,x0))
++593
+z0@[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t1:=picp(pl(x0,y0),z0,pf(x,y),z,picp(x0,y0,x,y,xix0,yiy0),ziz0):inf(pf(pf(x,y),z),class(pl(pl(x0,y0),z0)))
+t2:=picp(x0,pl(y0,z0),x,pf(y,z),xix0,picp(y0,z0,y,z,yiy0,ziz0)):inf(pf(x,pf(y,z)),class(pl(x0,pl(y0,z0))))
+t3:=isi(pl(pl(x0,y0),z0),pl(x0,pl(y0,z0)),pf(pf(x,y),z),pf(x,pf(y,z)),t1,t2,satz59(x,y,z)):is(pl(pl(x0,y0),z0),pl(x0,pl(y0,z0)))
+-593
+z0@satz93:=ratapp3(is(pl(pl(x0,y0),z0),pl(x0,pl(y0,z0))),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t3".593"(x,y,z,xi,yi,zi)):is(pl(pl(x0,y0),z0),pl(x0,pl(y0,z0)))
+asspl1:=satz93:is(pl(pl(x0,y0),z0),pl(x0,pl(y0,z0)))
+asspl2:=symis(rat,pl(pl(x0,y0),z0),pl(x0,pl(y0,z0)),satz93):is(pl(x0,pl(y0,z0)),pl(pl(x0,y0),z0))
++594
+y1iy0@t1:=morei(pl(x0,y0),x0,pf(x1,y1),x1,picp,x1ix0,satz60(x1,y1)):more(pl(x0,y0),x0)
+-594
+y0@satz94:=ratapp2(more(pl(x0,y0),x0),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t1".594"(x,y,xi,yi)):more(pl(x0,y0),x0)
+satz94a:=satz82(pl(x0,y0),x0,satz94):less(x0,pl(x0,y0))
+z0@[m:more(x0,y0)]
++595
+[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t1:=morei(pl(x0,z0),pl(y0,z0),pf(x,z),pf(y,z),picp(x0,z0,x,z,xix0,ziz0),picp(y0,z0,y,z,yiy0,ziz0),satz61(x,y,z,moree(x0,y0,x,y,xix0,yiy0,m))):more(pl(x0,z0),pl(y0,z0))
+-595
+satz95:=ratapp3(more(pl(x0,z0),pl(y0,z0)),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t1".595"(x,y,z,xi,yi,zi)):more(pl(x0,z0),pl(y0,z0))
+z0@[m:more(x0,y0)]
++596
+[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t1:=morei(pl(x0,z0),pl(y0,z0),pf(x,z),pf(y,z),picp(x0,z0,x,z,xix0,ziz0),picp(y0,z0,y,z,yiy0,ziz0),satz62a(x,y,z,moree(x0,y0,x,y,xix0,yiy0,m))):more(pl(x0,z0),pl(y0,z0))
+-596
+satz96a:=ratapp3(more(pl(x0,z0),pl(y0,z0)),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t1".596"(x,y,z,xi,yi,zi)):more(pl(x0,z0),pl(y0,z0))
+z0@[i:is(x0,y0)]
++*596
+i@[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t2:=isi(pl(x0,z0),pl(y0,z0),pf(x,z),pf(y,z),picp(x0,z0,x,z,xix0,ziz0),picp(y0,z0,y,z,yiy0,ziz0),satz62b(x,y,z,ise(x0,y0,x,y,xix0,yiy0,i))):is(pl(x0,z0),pl(y0,z0))
+-596
+i@satz96b:=ratapp3(is(pl(x0,z0),pl(y0,z0)),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t2".596"(x,y,z,xi,yi,zi)):is(pl(x0,z0),pl(y0,z0))
+z0@[l:less(x0,y0)]
++*596
+l@[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t3:=lessi(pl(x0,z0),pl(y0,z0),pf(x,z),pf(y,z),picp(x0,z0,x,z,xix0,ziz0),picp(y0,z0,y,z,yiy0,ziz0),satz62c(x,y,z,lesse(x0,y0,x,y,xix0,yiy0,l))):less(pl(x0,z0),pl(y0,z0))
+-596
+l@satz96c:=ratapp3(less(pl(x0,z0),pl(y0,z0)),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t3".596"(x,y,z,xi,yi,zi)):less(pl(x0,z0),pl(y0,z0))
++*596
+m@andersa:=satz95(m):more(pl(x0,z0),pl(y0,z0))
+i@andersb:=ispl1(x0,y0,z0,i):is(pl(x0,z0),pl(y0,z0))
+l@andersc:=satz82(pl(y0,z0),pl(x0,z0),satz95(y0,x0,z0,satz83(l))):less(pl(x0,z0),pl(y0,z0))
+-596
+m@satz96d:=ismore12(pl(x0,z0),pl(z0,x0),pl(y0,z0),pl(z0,y0),compl(x0,z0),compl(y0,z0),satz96a):more(pl(z0,x0),pl(z0,y0))
+i@satz96e:=ispl2(x0,y0,z0,i):is(pl(z0,x0),pl(z0,y0))
+l@satz96f:=isless12(pl(x0,z0),pl(z0,x0),pl(y0,z0),pl(z0,y0),compl(x0,z0),compl(y0,z0),satz96c):less(pl(z0,x0),pl(z0,y0))
+z0@[m:more(pl(x0,z0),pl(y0,z0))]
++597
+[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t1:=morei(x0,y0,x,y,xix0,yiy0,satz63a(x,y,z,moree(pl(x0,z0),pl(y0,z0),pf(x,z),pf(y,z),picp(x0,z0,x,z,xix0,ziz0),picp(y0,z0,y,z,yiy0,ziz0),m))):more(x0,y0)
+-597
+satz97a:=ratapp3(more(x0,y0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t1".597"(x,y,z,xi,yi,zi)):more(x0,y0)
+z0@[i:is(pl(x0,z0),pl(y0,z0))]
++*597
+i@[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t2:=isi(x0,y0,x,y,xix0,yiy0,satz63b(x,y,z,ise(pl(x0,z0),pl(y0,z0),pf(x,z),pf(y,z),picp(x0,z0,x,z,xix0,ziz0),picp(y0,z0,y,z,yiy0,ziz0),i))):is(x0,y0)
+-597
+i@satz97b:=ratapp3(is(x0,y0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t2".597"(x,y,z,xi,yi,zi)):is(x0,y0)
+z0@[l:less(pl(x0,z0),pl(y0,z0))]
++*597
+l@[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t3:=lessi(x0,y0,x,y,xix0,yiy0,satz63c(x,y,z,lesse(pl(x0,z0),pl(y0,z0),pf(x,z),pf(y,z),picp(x0,z0,x,z,xix0,ziz0),picp(y0,z0,y,z,yiy0,ziz0),l))):less(x0,y0)
+-597
+l@satz97c:=ratapp3(less(x0,y0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t3".597"(x,y,z,xi,yi,zi)):less(x0,y0)
++*597
+l@anders:=satz82(y0,x0,satz97a(y0,x0,z0,satz83(pl(x0,z0),pl(y0,z0),l))):less(x0,y0)
+-597
+u0@[m:more(x0,y0)][n:more(z0,u0)]
++598
+[x:frac][y:frac][z:frac][u:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))][uiu0:inf(u,class(u0))]
+t1:=morei(pl(x0,z0),pl(y0,u0),pf(x,z),pf(y,u),picp(x0,z0,x,z,xix0,ziz0),picp(y0,u0,y,u,yiy0,uiu0),satz64(x,y,z,u,moree(x0,y0,x,y,xix0,yiy0,m),moree(z0,u0,z,u,ziz0,uiu0,n))):more(pl(x0,z0),pl(y0,u0))
+-598
+satz98:=ratapp4(more(pl(x0,z0),pl(y0,u0)),[x:frac][y:frac][z:frac][u:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]t1".598"(x,y,z,u,xi,yi,zi,ui)):more(pl(x0,z0),pl(y0,u0))
+u0@[l:less(x0,y0)][k:less(z0,u0)]
+satz98a:=satz82(pl(y0,u0),pl(x0,z0),satz98(y0,x0,u0,z0,satz83(l),satz83(z0,u0,k))):less(pl(x0,z0),pl(y0,u0))
+u0@[m:moreis(x0,y0)][n:more(z0,u0)]
++599
+[x:frac][y:frac][z:frac][u:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))][uiu0:inf(u,class(u0))]
+t1:=morei(pl(x0,z0),pl(y0,u0),pf(x,z),pf(y,u),picp(x0,z0,x,z,xix0,ziz0),picp(y0,u0,y,u,yiy0,uiu0),satz65a(x,y,z,u,moreise(x0,y0,x,y,xix0,yiy0,m),moree(z0,u0,z,u,ziz0,uiu0,n))):more(pl(x0,z0),pl(y0,u0))
+-599
+satz99a:=ratapp4(more(pl(x0,z0),pl(y0,u0)),[x:frac][y:frac][z:frac][u:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]t1".599"(x,y,z,u,xi,yi,zi,ui)):more(pl(x0,z0),pl(y0,u0))
+u0@[m:more(x0,y0)][n:moreis(z0,u0)]
++*599
+n@[x:frac][y:frac][z:frac][u:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))][uiu0:inf(u,class(u0))]
+t2:=morei(pl(x0,z0),pl(y0,u0),pf(x,z),pf(y,u),picp(x0,z0,x,z,xix0,ziz0),picp(y0,u0,y,u,yiy0,uiu0),satz65b(x,y,z,u,moree(x0,y0,x,y,xix0,yiy0,m),moreise(z0,u0,z,u,ziz0,uiu0,n))):more(pl(x0,z0),pl(y0,u0))
+-599
+n@satz99b:=ratapp4(more(pl(x0,z0),pl(y0,u0)),[x:frac][y:frac][z:frac][u:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]t2".599"(x,y,z,u,xi,yi,zi,ui)):more(pl(x0,z0),pl(y0,u0))
+u0@[l:lessis(x0,y0)][k:less(z0,u0)]
+satz99c:=satz82(pl(y0,u0),pl(x0,z0),satz99a(y0,x0,u0,z0,satz85(l),satz83(z0,u0,k))):less(pl(x0,z0),pl(y0,u0))
+u0@[l:less(x0,y0)][k:lessis(z0,u0)]
+satz99d:=satz82(pl(y0,u0),pl(x0,z0),satz99b(y0,x0,u0,z0,satz83(l),satz85(z0,u0,k))):less(pl(x0,z0),pl(y0,u0))
+u0@[m:moreis(x0,y0)][n:moreis(z0,u0)]
++5100
+[x:frac][y:frac][z:frac][u:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))][uiu0:inf(u,class(u0))]
+t1:=moreisi(pl(x0,z0),pl(y0,u0),pf(x,z),pf(y,u),picp(x0,z0,x,z,xix0,ziz0),picp(y0,u0,y,u,yiy0,uiu0),satz66(x,y,z,u,moreise(x0,y0,x,y,xix0,yiy0,m),moreise(z0,u0,z,u,ziz0,uiu0,n))):moreis(pl(x0,z0),pl(y0,u0))
+-5100
+satz100:=ratapp4(moreis(pl(x0,z0),pl(y0,u0)),[x:frac][y:frac][z:frac][u:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]t1".5100"(x,y,z,u,xi,yi,zi,ui)):moreis(pl(x0,z0),pl(y0,u0))
+u0@[l:lessis(x0,y0)][k:lessis(z0,u0)]
+satz100a:=satz84(pl(y0,u0),pl(x0,z0),satz100(y0,x0,u0,z0,satz85(l),satz85(z0,u0,k))):lessis(pl(x0,z0),pl(y0,u0))
+y0@[l:lessis(x0,y0)]
++5101
+[v0:rat][i:is(pl(y0,v0),x0)]
+t1:=ismore1(pl(y0,v0),x0,y0,i,satz94(y0,v0)):more(x0,y0)
+v0@t2:=th3"l.imp"(is(pl(y0,v0),x0),more(x0,y0),satz81d(x0,y0,l),[t:is(pl(y0,v0),x0)]t1(t)):nis(pl(y0,v0),x0)
+-5101
+vorbemerkung101:=th5"l.some"(rat,[v:rat]is(pl(y0,v),x0),[v:rat]t2".5101"(v)):not(some([t:rat]is(pl(y0,t),x0)))
+y0@[m:more(x0,y0)]
++*5101
+m@[x:frac][y:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][v:frac][e:eq"n"(pf(y,v),x)]
+t3:=isi(pl(y0,ratof(v)),x0,pf(y,v),x,picp(y0,ratof(v),y,v,yiy0,inclass(v)),xix0,e):is(pl(y0,ratof(v)),x0)
+t4:=somei(rat,[t:rat]is(pl(y0,t),x0),ratof(v),t3):some([t:rat]is(pl(y0,t),x0))
+yiy0@t5:=someapp(frac,[t:frac]eq"n"(pf(y,t),x),satz67a(x,y,moree(x0,y0,x,y,xix0,yiy0,m)),some([t:rat]is(pl(y0,t),x0)),[t:frac][u:eq"n"(pf(y,t),x)]t4(t,u)):some([t:rat]is(pl(y0,t),x0))
+-5101
+m@satz101a:=ratapp2(some([t:rat]is(pl(y0,t),x0)),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t5".5101"(x,y,xi,yi)):some([t:rat]is(pl(y0,t),x0))
+y0@[v0:rat][w0:rat][i:is(pl(y0,v0),x0)][j:is(pl(y0,w0),x0)]
++*5101
+j@[x:frac][y:frac][v:frac][w:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][viv0:inf(v,class(v0))][wiw0:inf(w,class(w0))]
+t6:=isi(v0,w0,v,w,viv0,wiw0,satz67b(x,y,v,w,ise(pl(y0,v0),x0,pf(y,v),x,picp(y0,v0,y,v,yiy0,viv0),xix0,i),ise(pl(y0,w0),x0,pf(y,w),x,picp(y0,w0,y,w,yiy0,wiw0),xix0,j))):is(v0,w0)
+-5101
+j@satz101b:=ratapp4(v0,w0,is(v0,w0),[x:frac][y:frac][v:frac][w:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][vi:inf(v,class(v0))][wi:inf(w,class(w0))]t6".5101"(x,y,v,w,xi,yi,vi,wi)):is(v0,w0)
++*5101
+y0@t7:=[t:rat][u:rat][v:is(pl(y0,t),x0)][w:is(pl(y0,u),x0)]satz101b(t,u,v,w):amone(rat,[t:rat]is(pl(y0,t),x0))
+-5101
+m@satz101:=onei(rat,[t:rat]is(pl(y0,t),x0),t7".5101",satz101a):one([t:rat]is(pl(y0,t),x0))
+mn:=ind(rat,[t:rat]is(pl(y0,t),x0),satz101):rat
+satz101c:=oneax(rat,[t:rat]is(pl(y0,t),x0),satz101):is(pl(y0,mn(x0,y0,m)),x0)
+satz101d:=symis(rat,pl(y0,mn(x0,y0,m)),x0,satz101c):is(x0,pl(y0,mn(x0,y0,m)))
+satz101e:=tris(rat,pl(mn(x0,y0,m),y0),pl(y0,mn(x0,y0,m)),x0,compl(mn(x0,y0,m),y0),satz101c):is(pl(mn(x0,y0,m),y0),x0)
+satz101f:=symis(rat,pl(mn(x0,y0,m),y0),x0,satz101e):is(x0,pl(mn(x0,y0,m),y0))
+y0@[v0:rat][m:more(x0,y0)][i:is(pl(y0,v0),x0)]
+satz101g:=satz101b(v0,mn(x0,y0,m),i,satz101c(m)):is(v0,mn(x0,y0,m))
+@timesfrt:=[x:frac][y:frac]ratof(tf(x,y)):[x:frac][y:frac]rat
++*ii5
+f@t20:=isi(ratof(tf(x,z)),ratof(tf(y,u)),tf(x,z),tf(y,u),inclass(tf(x,z)),inclass(tf(y,u)),satz68(x,y,z,u,e,f)):is(<z><x>timesfrt,<u><y>timesfrt)
+-ii5
+@ftimesfrt:=[x:frac][y:frac][z:frac][u:frac][v:<y><x>eq][w:<u><z>eq]t20".ii5"(x,y,z,u,v,w):fixf(rat,timesfrt)
+y0@ts:=indrat(rat,timesfrt,ftimesfrt):rat
++*ii5
+y1iy0@t21:=isindrat(rat,timesfrt,ftimesfrt,x1,y1,x1ix0,y1iy0):is(ratof(tf(x1,y1)),ts(x0,y0))
+-ii5
+y1iy0@tict:=isp(rat,[t:rat]inf(tf(x1,y1),class(t)),ratof(tf(x1,y1)),ts(x0,y0),inclass(tf(x1,y1)),t21".ii5"):inf(tf(x1,y1),class(ts(x0,y0)))
+z0@[i:is(x0,y0)]
+ists1:=isf(rat,rat,[t:rat]ts(t,z0),x0,y0,i):is(ts(x0,z0),ts(y0,z0))
+ists2:=isf(rat,rat,[t:rat]ts(z0,t),x0,y0,i):is(ts(z0,x0),ts(z0,y0))
+u0@[i:is(x0,y0)][j:is(z0,u0)]
+ists12:=tris(rat,ts(x0,z0),ts(y0,z0),ts(y0,u0),ists1(i),ists2(z0,u0,y0,j)):is(ts(x0,z0),ts(y0,u0))
++5102
+y1iy0@t1:=isi(ts(x0,y0),ts(y0,x0),tf(x1,y1),tf(y1,x1),tict,tict(y0,x0,y1,x1,y1iy0,x1ix0),satz69(x1,y1)):is(ts(x0,y0),ts(y0,x0))
+-5102
+y0@satz102:=ratapp2(is(ts(x0,y0),ts(y0,x0)),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t1".5102"(x,y,xi,yi)):is(ts(x0,y0),ts(y0,x0))
+comts:=satz102:is(ts(x0,y0),ts(y0,x0))
++5103
+ziz0"rt.593"@t1:=tict(ts(x0,y0),z0,tf(x,y),z,tict(x0,y0,x,y,xix0,yiy0),ziz0):inf(tf(tf(x,y),z),class(ts(ts(x0,y0),z0)))
+t2:=tict(x0,ts(y0,z0),x,tf(y,z),xix0,tict(y0,z0,y,z,yiy0,ziz0)):inf(tf(x,tf(y,z)),class(ts(x0,ts(y0,z0))))
+t3:=isi(ts(ts(x0,y0),z0),ts(x0,ts(y0,z0)),tf(tf(x,y),z),tf(x,tf(y,z)),t1,t2,satz70(x,y,z)):is(ts(ts(x0,y0),z0),ts(x0,ts(y0,z0)))
+-5103
+z0@satz103:=ratapp3(is(ts(ts(x0,y0),z0),ts(x0,ts(y0,z0))),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t3".5103"(x,y,z,xi,yi,zi)):is(ts(ts(x0,y0),z0),ts(x0,ts(y0,z0)))
+assts1:=satz103:is(ts(ts(x0,y0),z0),ts(x0,ts(y0,z0)))
+assts2:=symis(rat,ts(ts(x0,y0),z0),ts(x0,ts(y0,z0)),satz103):is(ts(x0,ts(y0,z0)),ts(ts(x0,y0),z0))
++5104
+ziz0"rt.593"@t1:=tict(x0,pl(y0,z0),x,pf(y,z),xix0,picp(y0,z0,y,z,yiy0,ziz0)):inf(tf(x,pf(y,z)),class(ts(x0,pl(y0,z0))))
+t2:=picp(ts(x0,y0),ts(x0,z0),tf(x,y),tf(x,z),tict(x0,y0,x,y,xix0,yiy0),tict(x0,z0,x,z,xix0,ziz0)):inf(pf(tf(x,y),tf(x,z)),class(pl(ts(x0,y0),ts(x0,z0))))
+t3:=isi(ts(x0,pl(y0,z0)),pl(ts(x0,y0),ts(x0,z0)),tf(x,pf(y,z)),pf(tf(x,y),tf(x,z)),t1,t2,satz71(x,y,z)):is(ts(x0,pl(y0,z0)),pl(ts(x0,y0),ts(x0,z0)))
+-5104
+satz104:=ratapp3(is(ts(x0,pl(y0,z0)),pl(ts(x0,y0),ts(x0,z0))),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t3".5104"(x,y,z,xi,yi,zi)):is(ts(x0,pl(y0,z0)),pl(ts(x0,y0),ts(x0,z0)))
+disttp1:=tr3is(rat,ts(pl(x0,y0),z0),ts(z0,pl(x0,y0)),pl(ts(z0,x0),ts(z0,y0)),pl(ts(x0,z0),ts(y0,z0)),comts(pl(x0,y0),z0),satz104(z0,x0,y0),ispl12(ts(z0,x0),ts(x0,z0),ts(z0,y0),ts(y0,z0),comts(z0,x0),comts(z0,y0))):is(ts(pl(x0,y0),z0),pl(ts(x0,z0),ts(y0,z0)))
+disttp2:=satz104:is(ts(x0,pl(y0,z0)),pl(ts(x0,y0),ts(x0,z0)))
+distpt1:=symis(rat,ts(pl(x0,y0),z0),pl(ts(x0,z0),ts(y0,z0)),disttp1):is(pl(ts(x0,z0),ts(y0,z0)),ts(pl(x0,y0),z0))
+distpt2:=symis(rat,ts(x0,pl(y0,z0)),pl(ts(x0,y0),ts(x0,z0)),disttp2):is(pl(ts(x0,y0),ts(x0,z0)),ts(x0,pl(y0,z0)))
+[m:more(x0,y0)]
++5105
+[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t1:=morei(ts(x0,z0),ts(y0,z0),tf(x,z),tf(y,z),tict(x0,z0,x,z,xix0,ziz0),tict(y0,z0,y,z,yiy0,ziz0),satz72a(x,y,z,moree(x0,y0,x,y,xix0,yiy0,m))):more(ts(x0,z0),ts(y0,z0))
+-5105
+satz105a:=ratapp3(more(ts(x0,z0),ts(y0,z0)),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t1".5105"(x,y,z,xi,yi,zi)):more(ts(x0,z0),ts(y0,z0))
+z0@[i:is(x0,y0)]
++*5105
+i@[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t2:=isi(ts(x0,z0),ts(y0,z0),tf(x,z),tf(y,z),tict(x0,z0,x,z,xix0,ziz0),tict(y0,z0,y,z,yiy0,ziz0),satz72b(x,y,z,ise(x0,y0,x,y,xix0,yiy0,i))):is(ts(x0,z0),ts(y0,z0))
+-5105
+i@satz105b:=ratapp3(is(ts(x0,z0),ts(y0,z0)),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t2".5105"(x,y,z,xi,yi,zi)):is(ts(x0,z0),ts(y0,z0))
+z0@[l:less(x0,y0)]
++*5105
+l@[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]
+t3:=lessi(ts(x0,z0),ts(y0,z0),tf(x,z),tf(y,z),tict(x0,z0,x,z,xi,zi),tict(y0,z0,y,z,yi,zi),satz72c(x,y,z,lesse(x0,y0,x,y,xi,yi,l))):less(ts(x0,z0),ts(y0,z0))
+-5105
+l@satz105c:=ratapp3(less(ts(x0,z0),ts(y0,z0)),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t3".5105"(x,y,z,xi,yi,zi)):less(ts(x0,z0),ts(y0,z0))
++*5105
+i@andersb:=ists1(x0,y0,z0,i):is(ts(x0,z0),ts(y0,z0))
+l@andersc:=satz82(ts(y0,z0),ts(x0,z0),satz105a(y0,x0,z0,satz83(l))):less(ts(x0,z0),ts(y0,z0))
+-5105
+m@satz105d:=ismore12(ts(x0,z0),ts(z0,x0),ts(y0,z0),ts(z0,y0),comts(x0,z0),comts(y0,z0),satz105a):more(ts(z0,x0),ts(z0,y0))
+i@satz105e:=ists2(x0,y0,z0,i):is(ts(z0,x0),ts(z0,y0))
+l@satz105f:=isless12(ts(x0,z0),ts(z0,x0),ts(y0,z0),ts(z0,y0),comts(x0,z0),comts(y0,z0),satz105c):less(ts(z0,x0),ts(z0,y0))
+z0@[m:more(ts(x0,z0),ts(y0,z0))]
++5106
+[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t1:=morei(x0,y0,x,y,xix0,yiy0,satz73a(x,y,z,moree(ts(x0,z0),ts(y0,z0),tf(x,z),tf(y,z),tict(x0,z0,x,z,xix0,ziz0),tict(y0,z0,y,z,yiy0,ziz0),m))):more(x0,y0)
+-5106
+satz106a:=ratapp3(more(x0,y0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t1".5106"(x,y,z,xi,yi,zi)):more(x0,y0)
+z0@[i:is(ts(x0,z0),ts(y0,z0))]
++*5106
+i@[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t2:=isi(x0,y0,x,y,xix0,yiy0,satz73b(x,y,z,ise(ts(x0,z0),ts(y0,z0),tf(x,z),tf(y,z),tict(x0,z0,x,z,xix0,ziz0),tict(y0,z0,y,z,yiy0,ziz0),i))):is(x0,y0)
+-5106
+i@satz106b:=ratapp3(is(x0,y0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t2".5106"(x,y,z,xi,yi,zi)):is(x0,y0)
+z0@[l:less(ts(x0,z0),ts(y0,z0))]
++*5106
+l@[x:frac][y:frac][z:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))]
+t3:=lessi(x0,y0,x,y,xix0,yiy0,satz73c(x,y,z,lesse(ts(x0,z0),ts(y0,z0),tf(x,z),tf(y,z),tict(x0,z0,x,z,xix0,ziz0),tict(y0,z0,y,z,yiy0,ziz0),l))):less(x0,y0)
+-5106
+l@satz106c:=ratapp3(less(x0,y0),[x:frac][y:frac][z:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))]t3".5106"(x,y,z,xi,yi,zi)):less(x0,y0)
++*5106
+l@anders:=satz82(y0,x0,satz106a(y0,x0,z0,satz83(ts(x0,z0),ts(y0,z0),l))):less(x0,y0)
+-5106
+u0@[m:more(x0,y0)][n:more(z0,u0)]
++5107
+[x:frac][y:frac][z:frac][u:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))][uiu0:inf(u,class(u0))]
+t1:=morei(ts(x0,z0),ts(y0,u0),tf(x,z),tf(y,u),tict(x0,z0,x,z,xix0,ziz0),tict(y0,u0,y,u,yiy0,uiu0),satz74(x,y,z,u,moree(x0,y0,x,y,xix0,yiy0,m),moree(z0,u0,z,u,ziz0,uiu0,n))):more(ts(x0,z0),ts(y0,u0))
+-5107
+satz107:=ratapp4(more(ts(x0,z0),ts(y0,u0)),[x:frac][y:frac][z:frac][u:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]t1".5107"(x,y,z,u,xi,yi,zi,ui)):more(ts(x0,z0),ts(y0,u0))
+u0@[l:less(x0,y0)][k:less(z0,u0)]
+satz107a:=satz82(ts(y0,u0),ts(x0,z0),satz107(y0,x0,u0,z0,satz83(l),satz83(z0,u0,k))):less(ts(x0,z0),ts(y0,u0))
+u0@[m:moreis(x0,y0)][n:more(z0,u0)]
++5108
+[x:frac][y:frac][z:frac][u:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))][uiu0:inf(u,class(u0))]
+t1:=morei(ts(x0,z0),ts(y0,u0),tf(x,z),tf(y,u),tict(x0,z0,x,z,xix0,ziz0),tict(y0,u0,y,u,yiy0,uiu0),satz75a(x,y,z,u,moreise(x0,y0,x,y,xix0,yiy0,m),moree(z0,u0,z,u,ziz0,uiu0,n))):more(ts(x0,z0),ts(y0,u0))
+-5108
+satz108a:=ratapp4(more(ts(x0,z0),ts(y0,u0)),[x:frac][y:frac][z:frac][u:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]t1".5108"(x,y,z,u,xi,yi,zi,ui)):more(ts(x0,z0),ts(y0,u0))
+u0@[m:more(x0,y0)][n:moreis(z0,u0)]
++*5108
+n@[x:frac][y:frac][z:frac][u:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))][uiu0:inf(u,class(u0))]
+t2:=morei(ts(x0,z0),ts(y0,u0),tf(x,z),tf(y,u),tict(x0,z0,x,z,xix0,ziz0),tict(y0,u0,y,u,yiy0,uiu0),satz75b(x,y,z,u,moree(x0,y0,x,y,xix0,yiy0,m),moreise(z0,u0,z,u,ziz0,uiu0,n))):more(ts(x0,z0),ts(y0,u0))
+-5108
+n@satz108b:=ratapp4(more(ts(x0,z0),ts(y0,u0)),[x:frac][y:frac][z:frac][u:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]t2".5108"(x,y,z,u,xi,yi,zi,ui)):more(ts(x0,z0),ts(y0,u0))
+u0@[l:lessis(x0,y0)][k:less(z0,u0)]
+satz108c:=satz82(ts(y0,u0),ts(x0,z0),satz108a(y0,x0,u0,z0,satz85(l),satz83(z0,u0,k))):less(ts(x0,z0),ts(y0,u0))
+u0@[l:less(x0,y0)][k:lessis(z0,u0)]
+satz108d:=satz82(ts(y0,u0),ts(x0,z0),satz108b(y0,x0,u0,z0,satz83(l),satz85(z0,u0,k))):less(ts(x0,z0),ts(y0,u0))
+u0@[m:moreis(x0,y0)][n:moreis(z0,u0)]
++5109
+[x:frac][y:frac][z:frac][u:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][ziz0:inf(z,class(z0))][uiu0:inf(u,class(u0))]
+t1:=moreisi(ts(x0,z0),ts(y0,u0),tf(x,z),tf(y,u),tict(x0,z0,x,z,xix0,ziz0),tict(y0,u0,y,u,yiy0,uiu0),satz76(x,y,z,u,moreise(x0,y0,x,y,xix0,yiy0,m),moreise(z0,u0,z,u,ziz0,uiu0,n))):moreis(ts(x0,z0),ts(y0,u0))
+-5109
+satz109:=ratapp4(moreis(ts(x0,z0),ts(y0,u0)),[x:frac][y:frac][z:frac][u:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][zi:inf(z,class(z0))][ui:inf(u,class(u0))]t1".5109"(x,y,z,u,xi,yi,zi,ui)):moreis(ts(x0,z0),ts(y0,u0))
+u0@[l:lessis(x0,y0)][k:lessis(z0,u0)]
+satz109a:=satz84(ts(y0,u0),ts(x0,z0),satz109(y0,x0,u0,z0,satz85(l),satz85(z0,u0,k))):lessis(ts(x0,z0),ts(y0,u0))
++5110
+y1iy0@[v:frac][e:eq"n"(tf(y1,v),x1)]
+t1:=isi(ts(y0,ratof(v)),x0,tf(y1,v),x1,tict(y0,ratof(v),y1,v,y1iy0,inclass(v)),x1ix0,e):is(ts(y0,ratof(v)),x0)
+t2:=somei(rat,[t:rat]is(ts(y0,t),x0),ratof(v),t1):some([t:rat]is(ts(y0,t),x0))
+y1iy0@t3:=someapp(frac,[t:frac]eq"n"(tf(y1,t),x1),satz77a(x1,y1),some([t:rat]is(ts(y0,t),x0)),[t:frac][u:eq"n"(tf(y1,t),x1)]t2(t,u)):some([t:rat]is(ts(y0,t),x0))
+-5110
+y0@satz110a:=ratapp2(some([t:rat]is(ts(y0,t),x0)),[x:frac][y:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))]t3".5110"(x,y,xi,yi)):some([t:rat]is(ts(y0,t),x0))
+[v0:rat][w0:rat][i:is(ts(y0,v0),x0)][j:is(ts(y0,w0),x0)]
++*5110
+j@[x:frac][y:frac][v:frac][w:frac][xix0:inf(x,class(x0))][yiy0:inf(y,class(y0))][viv0:inf(v,class(v0))][wiw0:inf(w,class(w0))]
+t4:=isi(v0,w0,v,w,viv0,wiw0,satz77b(x,y,v,w,ise(ts(y0,v0),x0,tf(y,v),x,tict(y0,v0,y,v,yiy0,viv0),xix0,i),ise(ts(y0,w0),x0,tf(y,w),x,tict(y0,w0,y,w,yiy0,wiw0),xix0,j))):is(v0,w0)
+-5110
+j@satz110b:=ratapp4(v0,w0,is(v0,w0),[x:frac][y:frac][v:frac][w:frac][xi:inf(x,class(x0))][yi:inf(y,class(y0))][vi:inf(v,class(v0))][wi:inf(w,class(w0))]t4".5110"(x,y,v,w,xi,yi,vi,wi)):is(v0,w0)
++*5110
+y0@t5:=[t:rat][u:rat][v:is(ts(y0,t),x0)][w:is(ts(y0,u),x0)]satz110b(t,u,v,w):amone(rat,[t:rat]is(ts(y0,t),x0))
+-5110
+y0@satz110:=onei(rat,[t:rat]is(ts(y0,t),x0),t5".5110",satz110a):one([t:rat]is(ts(y0,t),x0))
+-rt
+@[x:nat][y:nat]
++5111
+t1:=tris(nat,ts(num(fr(x,1)),den(fr(y,1))),ts(x,1),x,ndis12(x,1,y,1),satz28a(x)):is(ts(num(fr(x,1)),den(fr(y,1))),x)
+t2:=symis(nat,ts(num(fr(x,1)),den(fr(y,1))),x,t1):is(x,ts(num(fr(x,1)),den(fr(y,1))))
+-5111
+[m:moref(fr(x,1),fr(y,1))]
+satz111a:=ismore12(ts(num(fr(x,1)),den(fr(y,1))),x,ts(num(fr(y,1)),den(fr(x,1))),y,t1".5111",t1".5111"(y,x),m):more(x,y)
+y@[e:eq(fr(x,1),fr(y,1))]
+satz111b:=tr3is(nat,x,ts(num(fr(x,1)),den(fr(y,1))),ts(num(fr(y,1)),den(fr(x,1))),y,t2".5111",e,t1".5111"(y,x)):is(x,y)
+y@[l:lessf(fr(x,1),fr(y,1))]
+satz111c:=isless12(ts(num(fr(x,1)),den(fr(y,1))),x,ts(num(fr(y,1)),den(fr(x,1))),y,t1".5111",t1".5111"(y,x),l):less(x,y)
+y@[m:more(x,y)]
+satz111d:=ismore12(x,ts(num(fr(x,1)),den(fr(y,1))),y,ts(num(fr(y,1)),den(fr(x,1))),t2".5111",t2".5111"(y,x),m):moref(fr(x,1),fr(y,1))
+y@[i:is(x,y)]
+satz111e:=tr3is(nat,ts(num(fr(x,1)),den(fr(y,1))),x,y,ts(num(fr(y,1)),den(fr(x,1))),t1".5111",i,t2".5111"(y,x)):eq(fr(x,1),fr(y,1))
+y@[l:less(x,y)]
+satz111f:=isless12(x,ts(num(fr(x,1)),den(fr(y,1))),y,ts(num(fr(y,1)),den(fr(x,1))),t2".5111",t2".5111"(y,x),l):lessf(fr(x,1),fr(y,1))
++*rt
+@[x0:rat][x:nat]
+natprop:=inf(fr(x,1),class(x0)):'prop'
+x0@natrt:=some"n"([t:nat]natprop(t)):'prop'
++*ii5
+y0@[x:nat][y:nat][npx:natprop(x0,x)][npy:natprop(y0,y)][i:is(x0,y0)]
+t22:=satz111b(x,y,ise(x0,y0,fr(x,1),fr(y,1),npx,npy,i)):is"n"(x,y)
+x0@t23:=[t:nat][u:nat][v:natprop(x0,t)][w:natprop(x0,u)]t22(x0,x0,t,u,v,w,refis(rat,x0)):amone(nat,[t:nat]natprop(x0,t))
+-ii5
+x0@[nx0:natrt(x0)]
+satz111g:=onei(nat,[t:nat]natprop(t),t23".ii5",nx0):one"n"([t:nat]natprop(x0,t))
+nofrt:=ind(nat,[t:nat]natprop(t),satz111g):nat
+inclassn:=oneax(nat,[t:nat]natprop(t),satz111g):inf(fr(nofrt,1),class(x0))
+[y0:rat][ny0:natrt(y0)][i:is(x0,y0)]
+isrten:=t22".ii5"(x0,y0,nofrt(x0,nx0),nofrt(y0,ny0),inclassn(x0,nx0),inclassn(y0,ny0),i):is"n"(nofrt(x0,nx0),nofrt(y0,ny0))
+ny0@[i:is"n"(nofrt(x0,nx0),nofrt(y0,ny0))]
+isrtin:=isi(x0,y0,fr(nofrt(x0,nx0),1),fr(nofrt(y0,ny0),1),inclassn(x0,nx0),inclassn(y0,ny0),eqn"n"(nofrt(x0,nx0),1,nofrt(y0,ny0),i)):is(x0,y0)
+@[x:nat]
+rtofn:=ratof(fr(x,1)):rat
+natrti:=somei(nat,[t:nat]natprop(rtofn,t),x,inclass(fr(x,1))):natrt(rtofn(x))
+[y:nat][i:is"n"(x,y)]
+isnert:=isf(nat,rat,[t:nat]rtofn(t),x,y,i):is(rtofn(x),rtofn(y))
+y@[i:is(rtofn(x),rtofn(y))]
+isnirt:=t22".ii5"(rtofn(x),rtofn(y),x,y,inclass(fr(x,1)),inclass(fr(y,1)),i):is"n"(x,y)
+nx0@isrtn1:=isi(x0,rtofn(nofrt(x0,nx0)),fr(nofrt(x0,nx0),1),fr(nofrt(x0,nx0),1),inclassn(x0,nx0),inclass(fr(nofrt(x0,nx0),1)),refeq"n"(fr(nofrt(x0,nx0),1))):is(x0,rtofn(nofrt(x0,nx0)))
+x@isnrt1:=t22".ii5"(rtofn(x),rtofn(x),x,nofrt(rtofn(x),natrti(x)),inclass(fr(x,1)),inclassn(rtofn(x),natrti(x)),refis(rat,rtofn(x))):is"n"(x,nofrt(rtofn(x),natrti(x)))
+-rt
+@[x:nat][y:nat]
+satz112a:=satz57(x,y,1):eq(pf(fr(x,1),fr(y,1)),fr(pl(x,y),1))
+satz112b:=treq(tf(fr(x,1),fr(y,1)),fr(ts(x,y),ts(1,1)),fr(ts(x,y),1),tfeq12a(x,1,y,1),eqd(ts(x,y),ts(1,1),1,satz28a(1))):eq(tf(fr(x,1),fr(y,1)),fr(ts(x,y),1))
++*rt
+ny0@satz112c:=lemmaeq1(pl(x0,y0),pf(fr(nofrt(x0,nx0),1),fr(nofrt(y0,ny0),1)),fr(pl"n"(nofrt(x0,nx0),nofrt(y0,ny0)),1),picp(x0,y0,fr(nofrt(x0,nx0),1),fr(nofrt(y0,ny0),1),inclassn(x0,nx0),inclassn(y0,ny0)),satz112a(nofrt(x0,nx0),nofrt(y0,ny0))):inf(fr(pl"n"(nofrt(x0,nx0),nofrt(y0,ny0)),1),class(pl(x0,y0)))
+satz112d:=somei(nat,[t:nat]natprop(pl(x0,y0),t),pl"n"(nofrt(x0,nx0),nofrt(y0,ny0)),satz112c):natrt(pl(x0,y0))
+satz112e:=lemmaeq1(ts(x0,y0),tf(fr(nofrt(x0,nx0),1),fr(nofrt(y0,ny0),1)),fr(ts"n"(nofrt(x0,nx0),nofrt(y0,ny0)),1),tict(x0,y0,fr(nofrt(x0,nx0),1),fr(nofrt(y0,ny0),1),inclassn(x0,nx0),inclassn(y0,ny0)),satz112b(nofrt(x0,nx0),nofrt(y0,ny0))):inf(fr(ts"n"(nofrt(x0,nx0),nofrt(y0,ny0)),1),class(ts(x0,y0)))
+satz112f:=somei(nat,[t:nat]natprop(ts(x0,y0),t),ts"n"(nofrt(x0,nx0),nofrt(y0,ny0)),satz112e):natrt(ts(x0,y0))
+[m:more(x0,y0)]
++5112
+t1:=satz111a(nofrt(x0,nx0),nofrt(y0,ny0),moree(x0,y0,fr(nofrt(x0,nx0),1),fr(nofrt(y0,ny0),1),inclassn(x0,nx0),inclassn(y0,ny0),m)):more"n"(nofrt(x0,nx0),nofrt(y0,ny0))
+[z:nat][d:diffprop(nofrt(x0,nx0),nofrt(y0,ny0),z)]
+t2:=tris(nat,nofrt(x0,nx0),pl"n"(nofrt(y0,ny0),z),pl"n"(nofrt(y0,ny0),nofrt(rtofn(z),natrti(z))),d,ispl2"n"(z,nofrt(rtofn(z),natrti(z)),nofrt(y0,ny0),isnrt1(z))):is"n"(nofrt(x0,nx0),pl"n"(nofrt(y0,ny0),nofrt(rtofn(z),natrti(z))))
+t3:=isi(x0,pl(y0,rtofn(z)),fr(nofrt(x0,nx0),1),fr(pl"n"(nofrt(y0,ny0),nofrt(rtofn(z),natrti(z))),1),inclassn(x0,nx0),satz112c(y0,ny0,rtofn(z),natrti(z)),eqn(nofrt(x0,nx0),1,pl"n"(nofrt(y0,ny0),nofrt(rtofn(z),natrti(z))),t2)):is(x0,pl(y0,rtofn(z)))
+t4:=satz101g(x0,y0,rtofn(z),m,symis(rat,x0,pl(y0,rtofn(z)),t3)):is(rtofn(z),mn(x0,y0,m))
+t5:=isp(rat,[t:rat]natrt(t),rtofn(z),mn(x0,y0,m),natrti(z),t4):natrt(mn(x0,y0,m))
+-5112
+satz112g:=someapp(nat,[t:nat]diffprop(nofrt(x0,nx0),nofrt(y0,ny0),t),t1".5112",natrt(mn(x0,y0,m)),[t:nat][u:diffprop(nofrt(x0,nx0),nofrt(y0,ny0),t)]t5".5112"(t,u)):natrt(mn(x0,y0,m))
+@[x:nat][y:nat]
+satz112h:=isi(pl(rtofn(x),rtofn(y)),rtofn(pl"n"(x,y)),pf(fr(x,1),fr(y,1)),fr(pl"n"(x,y),1),picp(rtofn(x),rtofn(y),fr(x,1),fr(y,1),inclass(fr(x,1)),inclass(fr(y,1))),inclass(fr(pl"n"(x,y),1)),satz112a(x,y)):is(pl(rtofn(x),rtofn(y)),rtofn(pl"n"(x,y)))
+satz112j:=isi(ts(rtofn(x),rtofn(y)),rtofn(ts"n"(x,y)),tf(fr(x,1),fr(y,1)),fr(ts"n"(x,y),1),tict(rtofn(x),rtofn(y),fr(x,1),fr(y,1),inclass(fr(x,1)),inclass(fr(y,1))),inclass(fr(ts"n"(x,y),1)),satz112b(x,y)):is(ts(rtofn(x),rtofn(y)),rtofn(ts"n"(x,y)))
++nt
+@natt:=ot(rat,[t:rat]natrt(t)):'type'
+nx0@ntofrt:=out(rat,[t:rat]natrt(t),x0,nx0):natt
+@[xt:natt][yt:natt]
+is:=is"e"(natt,xt,yt):'prop'
+nis:=not(is(xt,yt)):'prop'
+@[p:[x:natt]'prop']
+all:=all"l"(natt,p):'prop'
+some:=some"l"(natt,p):'prop'
+one:=one"e"(natt,p):'prop'
+xt@[st:set(natt)]
+in:=esti(natt,xt,st):'prop'
+xt@rtofnt:=in"e"(rat,[t:rat]natrt(t),xt):rat
+natrti:=inp(rat,[t:rat]natrt(t),xt):natrt(rtofnt(xt))
+ny0@[i:is"rt"(x0,y0)]
+isrtent:=isouti(rat,[t:rat]natrt(t),x0,nx0,y0,ny0,i):is(ntofrt(x0,nx0),ntofrt(y0,ny0))
+ny0@[i:is(ntofrt(x0,nx0),ntofrt(y0,ny0))]
+isrtint:=isoute(rat,[t:rat]natrt(t),x0,nx0,y0,ny0,i):is"rt"(x0,y0)
+yt@[i:is(xt,yt)]
+isntert:=isini(rat,[t:rat]natrt(t),xt,yt,i):is"rt"(rtofnt(xt),rtofnt(yt))
+yt@[i:is"rt"(rtofnt(xt),rtofnt(yt))]
+isntirt:=isine(rat,[t:rat]natrt(t),xt,yt,i):is(xt,yt)
+nx0@isrtnt1:=isinout(rat,[t:rat]natrt(t),x0,nx0):is"rt"(x0,rtofnt(ntofrt(x0,nx0)))
+xt@isntrt1:=isoutin(rat,[t:rat]natrt(t),xt):is(xt,ntofrt(rtofnt(xt),natrti(xt)))
+x@ntofn:=ntofrt(rtofn(x),natrti"rt"(x)):natt
+y@[i:is"n"(x,y)]
+isnent:=isrtent(rtofn(x),natrti"rt"(x),rtofn(y),natrti"rt"(y),isnert(x,y,i)):is(ntofn(x),ntofn(y))
+y@[i:is(ntofn(x),ntofn(y))]
+isnint:=isnirt(x,y,isrtint(rtofn"rt"(x),natrti"rt"(x),rtofn(y),natrti"rt"(y),i)):is"n"(x,y)
+xt@nofnt:=nofrt(rtofnt(xt),natrti(xt)):nat
+yt@[i:is(xt,yt)]
+isnten:=isrten(rtofnt(xt),natrti(xt),rtofnt(yt),natrti(yt),isntert(xt,yt,i)):is"n"(nofnt(xt),nofnt(yt))
+yt@[i:is"n"(nofnt(xt),nofnt(yt))]
+isntin:=isntirt(xt,yt,isrtin(rtofnt(xt),natrti(xt),rtofnt(yt),natrti(yt),i)):is(xt,yt)
++ii5
+x@t24:=isrtnt1(rtofn(x),natrti"rt"(x)):is"rt"(rtofn(x),rtofnt(ntofn(x)))
+t25:=isrten(rtofn(x),natrti"rt"(x),rtofnt(ntofn(x)),natrti(ntofn(x)),t24):is"n"(nofrt(rtofn(x),natrti"rt"(x)),nofnt(ntofn(x)))
+-ii5
+x@isnnt1:=tris(nat,x,nofrt(rtofn(x),natrti"rt"(x)),nofnt(ntofn(x)),isnrt1(x),t25".ii5"):is"n"(x,nofnt(ntofn(x)))
++*ii5
+xt@t26:=isrtn1(rtofnt(xt),natrti(xt)):is"rt"(rtofnt(xt),rtofn(nofnt(xt)))
+t27:=isrtent(rtofnt(xt),natrti(xt),rtofn(nofnt(xt)),natrti"rt"(nofnt(xt)),t26):is(ntofrt(rtofnt(xt),natrti(xt)),ntofn(nofnt(xt)))
+-ii5
+xt@isntn1:=tris(natt,xt,ntofrt(rtofnt(xt),natrti(xt)),ntofn(nofnt(xt)),isntrt1(xt),t27".ii5"):is(xt,ntofn(nofnt(xt)))
+x@isnnt2:=symis(nat,x,nofnt(ntofn(x)),isnnt1):is"n"(nofnt(ntofn(x)),x)
+xt@isntn2:=symis(natt,xt,ntofn(nofnt(xt)),isntn1):is(ntofn(nofnt(xt)),xt)
+@1t:=ntofn(1):natt
+suct:=[x:natt]ntofn(<nofnt(x)>suc):[x:natt]natt
++5113
+xt@[i:is(<xt>suct,1t)]
+t1:=isnint(<nofnt(xt)>suc,1,i):is"n"(<nofnt(xt)>suc,1)
+-5113
+xt@satz113a:=th3"l.imp"(is(<xt>suct,1t),is"n"(<nofnt(xt)>suc,1),<nofnt(xt)>ax3,[t:is(<xt>suct,1t)]t1".5113"(t)):nis(<xt>suct,1t)
+yt@[i:is(<xt>suct,<yt>suct)]
++*5113
+i"nt"@t2:=isnint(<nofnt(xt)>suc,<nofnt(yt)>suc,i):is"n"(<nofnt(xt)>suc,<nofnt(yt)>suc)
+-5113
+i@satz113b:=isntin(xt,yt,<t2".5113"><nofnt(yt)><nofnt(xt)>ax4):is(xt,yt)
+@[st:set(natt)]
+cond1:=in(1t,st):'prop'
+cond2:=all([x:natt]imp(in(x,st),in(<x>suct,st))):'prop'
+[c1:cond1][c2:cond2]
++*5113
+c2@[x:nat]
+prop1:=in(ntofn(x),st):'prop'
+[p:prop1(x)]
+t3:=<ntofn(x)>c2:imp(in(ntofn(x),st),in(<ntofn(x)>suct,st))
+t4:=mp(in(ntofn(x),st),in(<ntofn(x)>suct,st),p,t3):in(<ntofn(x)>suct,st)
+t5:=isp(nat,[t:nat]in(ntofn(<t>suc),st),nofnt(ntofn(x)),x,t4,isnnt2(x)):prop1(<x>suc)
+-5113
+c2@[xt:natt]
++*5113
+xt@t6:=induction([t:nat]prop1(t),c1,[t:nat][u:prop1(t)]t5(t,u),nofnt(xt)):in(ntofn(nofnt(xt)),st)
+-5113
+xt@satz113c:=isp(natt,[t:natt]in(t,st),ntofn(nofnt(xt)),xt,t6".5113",isntn2(xt)):in(xt,st)
+@ax3t:=[x:natt]satz113a(x):[x:natt]nis(<x>suct,1t)
+ax4t:=[x:natt][y:natt][u:is(<x>suct,<y>suct)]satz113b(x,y,u):[x:natt][y:natt][u:is(<x>suct,<y>suct)]is(x,y)
+ax5t:=[s:set(natt)][u:cond1(s)][v:cond2(s)][x:natt]satz113c(s,u,v,x):[s:set(natt)][u:cond1(s)][v:cond2(s)][x:natt]in(x,s)
+yt@[n:nis(xt,yt)]
++51
+t1:=th3"l.imp"(is"n"(nofnt(xt),nofnt(yt)),is(xt,yt),n,[t:is"n"(nofnt(xt),nofnt(yt))]isntin(xt,yt,t)):nis"n"(nofnt(xt),nofnt(yt))
+t2:=satz1(nofnt(xt),nofnt(yt),t1):nis"n"(<nofnt(xt)>suc,<nofnt(yt)>suc)
+-51
+satz1:=th3"l.imp"(is(<xt>suct,<yt>suct),is"n"(<nofnt(xt)>suc,<nofnt(yt)>suc),t2".51",[t:is(<xt>suct,<yt>suct)]isnint(<nofnt(xt)>suc,<nofnt(yt)>suc,t)):nis(<xt>suct,<yt>suct)
++54
+xt@x:=nofnt(xt):nat
+[ft:[x:natt]natt]
+prop1t:=all([t:natt]is(<<t>suct>ft,<<t>ft>suct)):'prop'
+prop2t:=and(is(<1t>ft,<xt>suct),prop1t):'prop'
+xt@[f:[x:nat]nat]
+prop1:=all"n"([t:nat]is"n"(<<t>suc>f,<<t>f>suc)):'prop'
+prop2:=and(is"n"(<1>f,<x>suc),prop1):'prop'
+ft@g:=[t:nat]nofnt(<ntofn(t)>ft):[x:nat]nat
+[p:prop2t]
+t1:=ande1(is(<1t>ft,<xt>suct),prop1t,p):is(<1t>ft,<xt>suct)
+t2:=tris(nat,<1>g,nofnt(<xt>suct),<x>suc,isnten(<1t>ft,<xt>suct,t1),isnnt2(<x>suc)):is"n"(<1>g,<x>suc)
+t3:=ande2(is(<1t>ft,<xt>suct),prop1t,p):prop1t
+[u:nat]
+ut:=ntofn(u):natt
+t4:=isf(nat,nat,suc,u,nofnt(ut),isnnt1(u)):is"n"(<u>suc,<nofnt(ut)>suc)
+t5:=isf(nat,nat,g,<u>suc,<nofnt(ut)>suc,t4):is"n"(<<u>suc>g,nofnt(<<ut>suct>ft))
+t6:=<ut>t3:is(<<ut>suct>ft,<<ut>ft>suct)
+t7:=isnten(<<ut>suct>ft,<<ut>ft>suct,t6):is"n"(nofnt(<<ut>suct>ft),nofnt(<<ut>ft>suct))
+t8:=isnnt2(<<u>g>suc):is"n"(nofnt(<<ut>ft>suct),<<u>g>suc)
+t9:=tr3is(nat,<<u>suc>g,nofnt(<<ut>suct>ft),nofnt(<<ut>ft>suct),<<u>g>suc,t5,t7,t8):is"n"(<<u>suc>g,<<u>g>suc)
+p@t10:=[u:nat]t9(u):prop1(g)
+t11:=andi(is"n"(<1>g,<x>suc),prop1(g),t2,t10):prop2(g)
+xt@[a:[t:natt]natt][b:[t:natt]natt][pa:prop2t(a)][pb:prop2t(b)]
+t12:=onee1([t:nat]nat,[u:[t:nat]nat]prop2(u),satz4(x)):amone([t:nat]nat,[u:[t:nat]nat]prop2(u))
+t13:=<t11(b,pb)><t11(a,pa)><g(b)><g(a)>t12:is"e"([t:nat]nat,g(a),g(b))
+[yt:natt]
+y:=nofnt(yt):nat
+t14:=fise(nat,nat,g(a),g(b),t13,y):is"n"(nofnt(<ntofn(y)>a),nofnt(<ntofn(y)>b))
+t15:=isntin(<ntofn(y)>a,<ntofn(y)>b,t14):is(<ntofn(y)>a,<ntofn(y)>b)
+t16:=tr3is(natt,<yt>a,<ntofn(y)>a,<ntofn(y)>b,<yt>b,isf(natt,natt,a,yt,ntofn(y),isntn1(yt)),t15,isf(natt,natt,b,ntofn(y),yt,isntn2(yt))):is(<yt>a,<yt>b)
+pb@t17:=fisi(natt,natt,a,b,[t:natt]t16(t)):is"e"([t:natt]natt,a,b)
+xt@t18:=[u:[t:natt]natt][v:[t:natt]natt][w:prop2t(u)][z:prop2t(v)]t17(u,v,w,z):amone([t:natt]natt,[u:[t:natt]natt]prop2t(u))
+t19:=onee2([t:nat]nat,[u:[t:nat]nat]prop2(u),satz4(x)):some"l"([t:nat]nat,[u:[t:nat]nat]prop2(u))
+f@gt:=[t:natt]ntofn(<nofnt(t)>f):[x:natt]natt
+[p:prop2]
+t20:=ande1(is"n"(<1>f,<x>suc),prop1,p):is"n"(<1>f,<x>suc)
+t21:=isf(nat,nat,f,nofnt(1t),1,isnnt2(1)):is"n"(<nofnt(1t)>f,<1>f)
+t22:=isnent(<nofnt(1t)>f,<x>suc,tris(nat,<nofnt(1t)>f,<1>f,<x>suc,t21,t20)):is(<1t>gt,<xt>suct)
+t23:=ande2(is"n"(<1>f,<x>suc),prop1,p):prop1
+[zt:natt]
+z:=nofnt(zt):nat
+t24:=isf(nat,nat,f,nofnt(<zt>suct),<z>suc,isnnt2(<z>suc)):is"n"(<nofnt(<zt>suct)>f,<<z>suc>f)
+t25:=<z>t23:is"n"(<<z>suc>f,<<z>f>suc)
+t26:=isf(nat,nat,suc,<z>f,nofnt(<zt>gt),isnnt1(<z>f)):is"n"(<<z>f>suc,<nofnt(<zt>gt)>suc)
+t27:=isnent(<nofnt(<zt>suct)>f,<nofnt(<zt>gt)>suc,tr3is(nat,<nofnt(<zt>suct)>f,<<z>suc>f,<<z>f>suc,<nofnt(<zt>gt)>suc,t24,t25,t26)):is(<<zt>suct>gt,<<zt>gt>suct)
+p@t28:=[u:natt]t27(u):prop1t(gt)
+t29:=andi(is(<1t>gt,<xt>suct),prop1t(gt),t22,t28):prop2t(gt)
+t30:=somei([t:natt]natt,[u:[t:natt]natt]prop2t(u),gt,t29):some"l"([t:natt]natt,[u:[t:natt]natt]prop2t(u))
+xt@t31:=someapp([t:nat]nat,[u:[t:nat]nat]prop2(u),t19,some"l"([t:natt]natt,[u:[t:natt]natt]prop2t(u)),[u:[t:nat]nat][v:prop2(u)]t30(u,v)):some"l"([t:natt]natt,[u:[t:natt]natt]prop2t(u))
+-54
+xt@satz4:=onei([t:natt]natt,[u:[t:natt]natt]prop2t".54"(u),t18".54",t31".54"):one"e"([t:natt]natt,[u:[t:natt]natt]and(is(<1t>u,<xt>suct),all([v:natt]is(<<v>suct>u,<<v>u>suct))))
+yt@pl:=ntofrt(pl"rt"(rtofnt(xt),rtofnt(yt)),satz112d(rtofnt(xt),natrti(xt),rtofnt(yt),natrti(yt))):natt
++*ii5
+yt@t28:=satz112c(rtofnt(xt),natrti(xt),rtofnt(yt),natrti(yt)):inf(fr(pl"n"(nofnt(xt),nofnt(yt)),1),class(pl"rt"(rtofnt(xt),rtofnt(yt))))
+t29:=isi(pl"rt"(rtofnt(xt),rtofnt(yt)),rtofn(pl"n"(nofnt(xt),nofnt(yt))),fr(pl"n"(nofnt(xt),nofnt(yt)),1),fr(pl"n"(nofnt(xt),nofnt(yt)),1),t28,inclass(fr(pl"n"(nofnt(xt),nofnt(yt)),1)),refeq"n"(fr(pl"n"(nofnt(xt),nofnt(yt)),1))):is"rt"(pl"rt"(rtofnt(xt),rtofnt(yt)),rtofn(pl"n"(nofnt(xt),nofnt(yt))))
+-ii5
+yt@isplnt:=isrtent(pl"rt"(rtofnt(xt),rtofnt(yt)),satz112d(rtofnt(xt),natrti(xt),rtofnt(yt),natrti(yt)),rtofn(pl"n"(nofnt(xt),nofnt(yt))),natrti"rt"(pl"n"(nofnt(xt),nofnt(yt))),t29".ii5"):is(pl(xt,yt),ntofn(pl"n"(nofnt(xt),nofnt(yt))))
+isntpl:=symis(natt,pl(xt,yt),ntofn(pl"n"(nofnt(xt),nofnt(yt))),isplnt):is(ntofn(pl"n"(nofnt(xt),nofnt(yt))),pl(xt,yt))
+ispln:=tris(nat,pl"n"(nofnt(xt),nofnt(yt)),nofnt(ntofn(pl"n"(nofnt(xt),nofnt(yt)))),nofnt(pl(xt,yt)),isnnt1(pl"n"(nofnt(xt),nofnt(yt))),isnten(ntofn(pl"n"(nofnt(xt),nofnt(yt))),pl(xt,yt),isntpl)):is"n"(pl"n"(nofnt(xt),nofnt(yt)),nofnt(pl(xt,yt)))
+isnpl:=symis(nat,pl"n"(nofnt(xt),nofnt(yt)),nofnt(pl(xt,yt)),ispln):is"n"(nofnt(pl(xt,yt)),pl"n"(nofnt(xt),nofnt(yt)))
+[zt:natt]
++55
+t1:=ispl1"n"(nofnt(pl(xt,yt)),pl"n"(nofnt(xt),nofnt(yt)),nofnt(zt),isnpl(xt,yt)):is"n"(pl"n"(nofnt(pl(xt,yt)),nofnt(zt)),pl"n"(pl"n"(nofnt(xt),nofnt(yt)),nofnt(zt)))
+t2:=ispl2"n"(pl"n"(nofnt(yt),nofnt(zt)),nofnt(pl(yt,zt)),nofnt(xt),ispln(yt,zt)):is"n"(pl"n"(nofnt(xt),pl"n"(nofnt(yt),nofnt(zt))),pl"n"(nofnt(xt),nofnt(pl(yt,zt))))
+t3:=tr3is(nat,pl"n"(nofnt(pl(xt,yt)),nofnt(zt)),pl"n"(pl"n"(nofnt(xt),nofnt(yt)),nofnt(zt)),pl"n"(nofnt(xt),pl"n"(nofnt(yt),nofnt(zt))),pl"n"(nofnt(xt),nofnt(pl(yt,zt))),t1,satz5(nofnt(xt),nofnt(yt),nofnt(zt)),t2):is"n"(pl"n"(nofnt(pl(xt,yt)),nofnt(zt)),pl"n"(nofnt(xt),nofnt(pl(yt,zt))))
+-55
+satz5:=tr3is(natt,pl(pl(xt,yt),zt),ntofn(pl"n"(nofnt(pl(xt,yt)),nofnt(zt))),ntofn(pl"n"(nofnt(xt),nofnt(pl(yt,zt)))),pl(xt,pl(yt,zt)),isplnt(pl(xt,yt),zt),isnent(pl"n"(nofnt(pl(xt,yt)),nofnt(zt)),pl"n"(nofnt(xt),nofnt(pl(yt,zt))),t3".55"),isntpl(xt,pl(yt,zt))):is(pl(pl(xt,yt),zt),pl(xt,pl(yt,zt)))
+diffprop:=is(xt,pl(yt,zt)):'prop'
+[d:diffprop]
+diffprope:=tris(nat,nofnt(xt),nofnt(pl(yt,zt)),pl"n"(nofnt(yt),nofnt(zt)),isnten(xt,pl(yt,zt),d),isnpl(yt,zt)):diffprop"n"(nofnt(xt),nofnt(yt),nofnt(zt))
+zt@[d:diffprop"n"(nofnt(xt),nofnt(yt),nofnt(zt))]
++*ii5
+d@t30:=tris(nat,nofnt(xt),pl"n"(nofnt(yt),nofnt(zt)),nofnt(pl(yt,zt)),d,ispln(yt,zt)):is"n"(nofnt(xt),nofnt(pl(yt,zt)))
+-ii5
+d@diffpropi:=isntin(xt,pl(yt,zt),t30".ii5"):diffprop
++59
+yt@it:=is(xt,yt):'prop'
+iit:=some([u:natt]diffprop(xt,yt,u)):'prop'
+iiit:=some([u:natt]diffprop(yt,xt,u)):'prop'
+i:=is"n"(nofnt(xt),nofnt(yt)):'prop'
+ii:=some"n"([u:nat]diffprop"n"(nofnt(xt),nofnt(yt),u)):'prop'
+iii:=some"n"([u:nat]diffprop"n"(nofnt(yt),nofnt(xt),u)):'prop'
+[one:i]
+t1:=or3i1(it,iit,iiit,isntin(xt,yt,one)):or3(it,iit,iiit)
+yt@[two:ii][v:nat][d:diffprop"n"(nofnt(xt),nofnt(yt),v)]
+t2:=isp(nat,[u:nat]diffprop"n"(nofnt(xt),nofnt(yt),u),v,nofnt(ntofn(v)),d,isnnt1(v)):diffprop"n"(nofnt(xt),nofnt(yt),nofnt(ntofn(v)))
+t3:=somei(natt,[u:natt]diffprop(xt,yt,u),ntofn(v),diffpropi(xt,yt,ntofn(v),t2)):iit
+two@t4:=someapp(nat,[u:nat]diffprop"n"(nofnt(xt),nofnt(yt),u),two,iit,[u:nat][v:diffprop"n"(nofnt(xt),nofnt(yt),u)]t3(u,v)):iit
+t5:=or3i2(it,iit,iiit,t4):or3(it,iit,iiit)
+yt@[three:iii]
+t6:=or3i3(it,iit,iiit,t4(yt,xt,three)):or3(it,iit,iiit)
+yt@t7:=or3app(i,ii,iii,or3(it,iit,iiit),satz9a(nofnt(xt),nofnt(yt)),[u:i]t1(u),[u:ii]t5(u),[u:iii]t6(u)):or3(it,iit,iiit)
+[onet:it]
+t8:=isnten(xt,yt,onet):i
+yt@[twot:iit][vt:natt][d:diffprop(xt,yt,vt)]
+t9:=somei(nat,[u:nat]diffprop"n"(nofnt(xt),nofnt(yt),u),nofnt(vt),diffprope(xt,yt,vt,d)):ii
+twot@t10:=someapp(natt,[u:natt]diffprop(xt,yt,u),twot,ii,[u:natt][v:diffprop(xt,yt,u)]t9(u,v)):ii
+yt@[threet:iiit]
+t11:=t10(yt,xt,threet):iii
+yt@t12:=satz9b(nofnt(xt),nofnt(yt)):ec3(i,ii,iii)
+onet@t13:=ec3e12(i,ii,iii,t12,t8):not(ii)
+t14:=th3"l.imp"(iit,ii,t13,[x:iit]t10(x)):not(iit)
+yt@t15:=th1"l.ec"(it,iit,[x:it]t14(x)):ec(it,iit)
+twot@t16:=ec3e23(i,ii,iii,t12,t10):not(iii)
+t17:=th3"l.imp"(iiit,iii,t16,[x:iiit]t11(x)):not(iiit)
+yt@t18:=th1"l.ec"(iit,iiit,[x:iit]t17(x)):ec(iit,iiit)
+threet@t19:=ec3e31(i,ii,iii,t12,t11):not(i)
+t20:=th3"l.imp"(it,i,t19,[x:it]t8(x)):not(it)
+yt@t21:=th1"l.ec"(iiit,it,[x:iiit]t20(x)):ec(iiit,it)
+t22:=th6"l.ec3"(it,iit,iiit,t15,t18,t21):ec3(it,iit,iiit)
+-59
+yt@satz9:=orec3i(it".59",iit".59",iiit".59",t7".59",t22".59"):orec3(is(xt,yt),some([u:natt]is(xt,pl(yt,u))),some([u:natt]is(yt,pl(xt,u))))
+more:=more"rt"(rtofnt(xt),rtofnt(yt)):'prop'
+[m:more(xt,yt)]
++*ii5
+m@t31:=moree(rtofnt(xt),rtofnt(yt),fr(nofnt(xt),1),fr(nofnt(yt),1),inclassn(rtofnt(xt),natrti(xt)),inclassn(rtofnt(yt),natrti(yt)),m):moref(fr(nofnt(xt),1),fr(nofnt(yt),1))
+-ii5
+m@moree:=satz111a(nofnt(xt),nofnt(yt),t31".ii5"):more"n"(nofnt(xt),nofnt(yt))
+yt@[m:more"n"(nofnt(xt),nofnt(yt))]
++*ii5
+m@t32:=satz111d(nofnt(xt),nofnt(yt),m):moref(fr(nofnt(xt),1),fr(nofnt(yt),1))
+-ii5
+m@morei:=morei"rt"(rtofnt(xt),rtofnt(yt),fr(nofnt(xt),1),fr(nofnt(yt),1),inclassn(rtofnt(xt),natrti(xt)),inclassn(rtofnt(yt),natrti(yt)),t32".ii5"):more(xt,yt)
+yt@less:=less"rt"(rtofnt(xt),rtofnt(yt)):'prop'
+[l:less(xt,yt)]
++*ii5
+l@t33:=lesse(rtofnt(xt),rtofnt(yt),fr(nofnt(xt),1),fr(nofnt(yt),1),inclassn(rtofnt(xt),natrti(xt)),inclassn(rtofnt(yt),natrti(yt)),l):lessf(fr(nofnt(xt),1),fr(nofnt(yt),1))
+-ii5
+l@lesse:=satz111c(nofnt(xt),nofnt(yt),t33".ii5"):less"n"(nofnt(xt),nofnt(yt))
+yt@[l:less"n"(nofnt(xt),nofnt(yt))]
++*ii5
+l@t34:=satz111f(nofnt(xt),nofnt(yt),l):lessf(fr(nofnt(xt),1),fr(nofnt(yt),1))
+-ii5
+l@lessi:=lessi"rt"(rtofnt(xt),rtofnt(yt),fr(nofnt(xt),1),fr(nofnt(yt),1),inclassn(rtofnt(xt),natrti(xt)),inclassn(rtofnt(yt),natrti(yt)),t34".ii5"):less(xt,yt)
+yt@moreis:=moreis"rt"(rtofnt(xt),rtofnt(yt)):'prop'
+[m:moreis(xt,yt)]
+moreise:=th9"l.or"(more"rt"(rtofnt(xt),rtofnt(yt)),is"rt"(rtofnt(xt),rtofnt(yt)),more"n"(nofnt(xt),nofnt(yt)),is"n"(nofnt(xt),nofnt(yt)),m,[u:more"rt"(rtofnt(xt),rtofnt(yt))]moree(xt,yt,u),[u:is"rt"(rtofnt(xt),rtofnt(yt))]isrten(rtofnt(xt),natrti(xt),rtofnt(yt),natrti(yt),u)):moreis"n"(nofnt(xt),nofnt(yt))
+yt@[m:moreis"n"(nofnt(xt),nofnt(yt))]
+moreisi:=th9"l.or"(more"n"(nofnt(xt),nofnt(yt)),is"n"(nofnt(xt),nofnt(yt)),more"rt"(rtofnt(xt),rtofnt(yt)),is"rt"(rtofnt(xt),rtofnt(yt)),m,[u:more"n"(nofnt(xt),nofnt(yt))]morei(xt,yt,u),[u:is"n"(nofnt(xt),nofnt(yt))]isrtin(rtofnt(xt),natrti(xt),rtofnt(yt),natrti(yt),u)):moreis(xt,yt)
+yt@lessis:=lessis"rt"(rtofnt(xt),rtofnt(yt)):'prop'
+[l:lessis(xt,yt)]
+lessise:=th9"l.or"(less"rt"(rtofnt(xt),rtofnt(yt)),is"rt"(rtofnt(xt),rtofnt(yt)),less"n"(nofnt(xt),nofnt(yt)),is"n"(nofnt(xt),nofnt(yt)),l,[u:less"rt"(rtofnt(xt),rtofnt(yt))]lesse(xt,yt,u),[u:is"rt"(rtofnt(xt),rtofnt(yt))]isrten(rtofnt(xt),natrti(xt),rtofnt(yt),natrti(yt),u)):lessis"n"(nofnt(xt),nofnt(yt))
+yt@[l:lessis"n"(nofnt(xt),nofnt(yt))]
+lessisi:=th9"l.or"(less"n"(nofnt(xt),nofnt(yt)),is"n"(nofnt(xt),nofnt(yt)),less"rt"(rtofnt(xt),rtofnt(yt)),is"rt"(rtofnt(xt),rtofnt(yt)),l,[u:less"n"(nofnt(xt),nofnt(yt))]lessi(xt,yt,u),[u:is"n"(nofnt(xt),nofnt(yt))]isrtin(rtofnt(xt),natrti(xt),rtofnt(yt),natrti(yt),u)):lessis(xt,yt)
+zt@[l:less(xt,yt)][k:less(yt,zt)]
++515
+t1:=satz15(nofnt(xt),nofnt(yt),nofnt(zt),lesse(xt,yt,l),lesse(yt,zt,k)):less"n"(nofnt(xt),nofnt(zt))
+-515
+satz15:=lessi(xt,zt,t1".515"):less(xt,zt)
+zt@[ut:natt][m:more(xt,yt)][n:more(zt,ut)]
++521
+t1:=satz21(nofnt(xt),nofnt(yt),nofnt(zt),nofnt(ut),moree(xt,yt,m),moree(zt,ut,n)):more"n"(pl"n"(nofnt(xt),nofnt(zt)),pl"n"(nofnt(yt),nofnt(ut)))
+t2:=ismore12"n"(pl"n"(nofnt(xt),nofnt(zt)),nofnt(pl(xt,zt)),pl"n"(nofnt(yt),nofnt(ut)),nofnt(pl(yt,ut)),ispln(xt,zt),ispln(yt,ut),t1):more"n"(nofnt(pl(xt,zt)),nofnt(pl(yt,ut)))
+-521
+satz21:=morei(pl(xt,zt),pl(yt,ut),t2".521"):more(pl(xt,zt),pl(yt,ut))
+@[p:[x:natt]'prop'][n:natt]
+lb:=all([x:natt]imp(<x>p,lessis(n,x))):'prop'
+min:=and(lb,<n>p):'prop'
+p@[s:some(p)]
++527
+q:=[x:nat]<ntofn(x)>p:[x:nat]'prop'
+[n:natt][np:<n>p]
+t1:=isp(natt,p,n,ntofn(nofnt(n)),np,isntn1(n)):<nofnt(n)>q
+t2:=somei(nat,q,nofnt(n),t1):some"n"(q)
+s@t3:=someapp(natt,p,s,some"n"(q),[u:natt][v:<u>p]t2(u,v)):some"n"(q)
+t4:=satz27(q,t3):some"n"([x:nat]min"n"(q,x))
+[m:nat][mqm:min"n"(q,m)]
+t5:=ande1(lb"n"(q,m),<m>q,mqm):lb"n"(q,m)
+[n:nat][nq:<n>q]
+t6:=mp(<n>q,lessis"n"(m,n),nq,<n>t5):lessis"n"(m,n)
+mqm@[n:natt][np:<n>p]
+t7:=t6(nofnt(n),t1(n,np)):lessis"n"(m,nofnt(n))
+t8:=islessis1"n"(m,nofnt(ntofn(m)),nofnt(n),isnnt1(m),t7):lessis"n"(nofnt(ntofn(m)),nofnt(n))
+t9:=lessisi(ntofn(m),n,t8):lessis(ntofn(m),n)
+n@t10:=[u:<n>p]t9(u):imp(<n>p,lessis(ntofn(m),n))
+mqm@t11:=[x:natt]t10(x):lb(ntofn(m))
+t12:=ande2(lb"n"(q,m),<m>q,mqm):<ntofn(m)>p
+t13:=andi(lb(ntofn(m)),<ntofn(m)>p,t11,t12):min(ntofn(m))
+t14:=somei(natt,[x:natt]min(x),ntofn(m),t13):some([x:natt]min(x))
+-527
+satz27:=someapp(nat,[x:nat]min"n"(q".527",x),t4".527",some([x:natt]min(x)),[x:nat][y:min"n"(q".527",x)]t14".527"(x,y)):some([x:natt]min(p,x))
+-nt
+@1rt:=rtofn(1):rat
+x0@[x:frac][xix0:inf(x,class(x0))]
++*ii5
+xix0@t35:=tr3eq(tf(x,fr(1,1)),fr(ts"n"(num(x),1),ts"n"(den(x),1)),fr(num(x),den(x)),x,tfeq1a(x,1,1),eqnd(ts"n"(num(x),1),ts"n"(den(x),1),num(x),den(x),satz28a(num(x)),satz28a(den(x))),refeq1(fr(num(x),den(x)),x,fris(x))):eq"n"(tf(x,fr(1,1)),x)
+t36:=isi(ts(x0,1rt),x0,tf(x,fr(1,1)),x,tict(x0,1rt,x,fr(1,1),xix0,inclass(fr(1,1))),xix0,t35):is(ts(x0,1rt),x0)
+-ii5
+x0@example1a:=ratapp1(x0,is(ts(x0,1rt),x0),[x:frac][xi:inf(x,class(x0))]t36".ii5"(x,xi)):is(ts(x0,1rt),x0)
+example1b:=symis(rat,ts(x0,1rt),x0,example1a):is(x0,ts(x0,1rt))
+example1c:=tris(rat,ts(1rt,x0),ts(x0,1rt),x0,comts(1rt,x0),example1a):is(ts(1rt,x0),x0)
+example1d:=symis(rat,ts(1rt,x0),x0,example1c):is(x0,ts(1rt,x0))
+@[x:frac]
++5114
+t1:=tr3eq(tf(fr(den(x),1),x),fr(ts"n"(den(x),num(x)),ts"n"(1,den(x))),fr(ts"n"(num(x),den(x)),ts"n"(1,den(x))),fr(num(x),1),tfeq2a(x,den(x),1),eqn(ts"n"(den(x),num(x)),ts"n"(1,den(x)),ts"n"(num(x),den(x)),comts"n"(den(x),num(x))),satz40c(num(x),1,den(x))):eq"n"(tf(fr(den(x),1),x),fr(num(x),1))
+-5114
+satz114:=isi(ts(rtofn(den(x)),ratof(x)),rtofn(num(x)),tf(fr(den(x),1),x),fr(num(x),1),tict(rtofn(den(x)),ratof(x),fr(den(x),1),x,inclass(fr(den(x),1)),inclass(x)),inclass(fr(num(x),1)),t1".5114"):is(ts(rtofn(den(x)),ratof(x)),rtofn(num(x)))
+@[x1:nat][x2:nat]
+satz114a:=tr3is(rat,ts(rtofn(x2),ratof(fr(x1,x2))),ts(rtofn(den(fr(x1,x2))),ratof(fr(x1,x2))),rtofn(num(fr(x1,x2))),rtofn(x1),ists1(rtofn(x2),rtofn(den(fr(x1,x2))),ratof(fr(x1,x2)),isnert(x2,den(fr(x1,x2)),isden(x1,x2))),satz114(fr(x1,x2)),isnert(num(fr(x1,x2)),x1,numis(x1,x2))):is(ts(rtofn(x2),ratof(fr(x1,x2))),rtofn(x1))
+x0@[y0:rat]
+ov:=ind(rat,[t:rat]is(ts(y0,t),x0),satz110(x0,y0)):rat
+satz110c:=oneax(rat,[t:rat]is(ts(y0,t),x0),satz110(x0,y0)):is(ts(y0,ov(x0,y0)),x0)
+satz110d:=symis(rat,ts(y0,ov(x0,y0)),x0,satz110c):is(x0,ts(y0,ov(x0,y0)))
+satz110e:=tris(rat,ts(ov(x0,y0),y0),ts(y0,ov(x0,y0)),x0,comts(ov(x0,y0),y0),satz110c):is(ts(ov(x0,y0),y0),x0)
+satz110f:=symis(rat,ts(ov(x0,y0),y0),x0,satz110e):is(x0,ts(ov(x0,y0),y0))
+[v0:rat][i:is(ts(y0,v0),x0)]
+satz110g:=satz110b(x0,y0,v0,ov(x0,y0),i,satz110c):is(v0,ov(x0,y0))
+x2@satz114b:=satz110b(rtofn(x1),rtofn(x2),ratof(fr(x1,x2)),ov(rtofn(x1),rtofn(x2)),satz114a,satz110c(rtofn(x1),rtofn(x2))):is(ratof(fr(x1,x2)),ov(rtofn(x1),rtofn(x2)))
+satz114c:=symis(rat,ratof(fr(x1,x2)),ov(rtofn(x1),rtofn(x2)),satz114b):is(ov(rtofn(x1),rtofn(x2)),ratof(fr(x1,x2)))
++5115
+y0@t1:=satz89(ov(y0,x0)):some([t:rat]more(t,ov(y0,x0)))
+[u0:rat][m:more(u0,ov(y0,x0))][u:frac][uiu0:inf(u,class(u0))]
+z:=num(u):nat
+v:=den(u):nat
+t2:=ismore1(u0,ov(rtofn(z),rtofn(v)),ov(y0,x0),tris(rat,u0,ratof(fr(z,v)),ov(rtofn(z),rtofn(v)),isi(u0,ratof(fr(z,v)),u,fr(z,v),uiu0,inclass(fr(z,v)),refeq1(u,fr(z,v),isfr(u))),satz114b(z,v)),m):more(ov(rtofn(z),rtofn(v)),ov(y0,x0))
+t3:=moreisi(rtofn(v),1rt,fr(v,1),fr(1,1),inclass(fr(v,1)),inclass(fr(1,1)),th9"l.or"(more"n"(v,1),is"n"(v,1),moref(fr(v,1),fr(1,1)),eq"n"(fr(v,1),fr(1,1)),satz24(v),[t:more"n"(v,1)]satz111d(v,1,t),[t:is"n"(v,1)]satz111e(v,1,t))):moreis(rtofn(v),1rt)
+t4:=tr3is(rat,ts(rtofn(z),x0),ts(x0,rtofn(z)),ts(x0,ts(ov(rtofn(z),rtofn(v)),rtofn(v))),ts(ts(x0,ov(rtofn(z),rtofn(v))),rtofn(v)),comts(rtofn(z),x0),ists2(rtofn(z),ts(ov(rtofn(z),rtofn(v)),rtofn(v)),x0,satz110f(rtofn(z),rtofn(v))),assts2(x0,ov(rtofn(z),rtofn(v)),rtofn(v))):is(ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),rtofn(v)))
+[n:more(rtofn(v),1rt)]
+t5:=ismore1(ts(ts(x0,ov(rtofn(z),rtofn(v))),rtofn(v)),ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt),symis(rat,ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),rtofn(v)),t4),satz105d(rtofn(v),1rt,ts(x0,ov(rtofn(z),rtofn(v))),n)):more(ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt))
+t6:=moreisi1(ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt),t5):moreis(ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt))
+uiu0@[i:is(rtofn(v),1rt)]
+t7:=moreisi2(ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt),tris(rat,ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),rtofn(v)),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt),t4,ists2(rtofn(v),1rt,ts(x0,ov(rtofn(z),rtofn(v))),i))):moreis(ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt))
+uiu0@t8:=orapp(more(rtofn(v),1rt),is(rtofn(v),1rt),moreis(ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt)),t3,[t:more(rtofn(v),1rt)]t6(t),[t:is(rtofn(v),1rt)]t7(t)):moreis(ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt))
+t9:=ismore12(ts(x0,ov(rtofn(z),rtofn(v))),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt),ts(x0,ov(y0,x0)),y0,example1b(ts(x0,ov(rtofn(z),rtofn(v)))),satz110c(y0,x0),satz105d(ov(rtofn(z),rtofn(v)),ov(y0,x0),x0,t2)):more(ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt),y0)
+t10:=satz87c(ts(rtofn(z),x0),ts(ts(x0,ov(rtofn(z),rtofn(v))),1rt),y0,t8,t9):more(ts(rtofn(z),x0),y0)
+t11:=somei(nat,[t:nat]more(ts(rtofn(t),x0),y0),z,t10):some"n"([t:nat]more(ts(rtofn(t),x0),y0))
+m@t12:=ratapp1(u0,some"n"([t:nat]more(ts(rtofn(t),x0),y0)),[u:frac][ui:inf(u,class(u0))]t11(u,ui)):some"n"([t:nat]more(ts(rtofn(t),x0),y0))
+-5115
+y0@satz115:=someapp(rat,[t:rat]more(t,ov(y0,x0)),t1".5115",some"n"([t:nat]more(ts(rtofn(t),x0),y0)),[t:rat][u:more(t,ov(y0,x0))]t12".5115"(t,u)):some"n"([t:nat]more(ts(rtofn(t),x0),y0))
++*5115
+uiu0@t13:=andi(natrt(rtofn(z)),more(ts(rtofn(z),x0),y0),natrti(z),t10):and(natrt(rtofn(z)),more(ts(rtofn(z),x0),y0))
+t14:=somei(rat,[t:rat]and(natrt(t),more(ts(t,x0),y0)),rtofn(z),t13):some([t:rat]and(natrt(t),more(ts(t,x0),y0)))
+m@t15:=ratapp1(u0,some([t:rat]and(natrt(t),more(ts(t,x0),y0))),[u:frac][ui:inf(u,class(u0))]t14(u,ui)):some([t:rat]and(natrt(t),more(ts(t,x0),y0)))
+-5115
+y0@satz115a:=someapp(rat,[t:rat]more(t,ov(y0,x0)),t1".5115",some([t:rat]and(natrt(t),more(ts(t,x0),y0))),[t:rat][u:more(t,ov(y0,x0))]t15".5115"(t,u)):some([t:rat]and(natrt(t),more(ts(t,x0),y0)))
+@[s:set(rat)]
+cutprop1a:=nonempty(rat,s):'prop'
+cutprop1b:=not(all([x:rat]in(x,s))):'prop'
+cutprop1:=and(cutprop1a,cutprop1b):'prop'
+[x0:rat]
+cutprop2a:=all([x:rat]imp(not(in(x,s)),less(x0,x))):'prop'
+s@cutprop2:=all([x:rat]imp(in(x,s),cutprop2a(x))):'prop'
+x0@[y0:rat]
++iii1
+ubprop:=imp(in(y0,s),moreis(x0,y0)):'prop'
+-iii1
+x0@ub:=all([x:rat]ubprop".iii1"(x0,x)):'prop'
+max:=and(ub(x0),in(x0,s)):'prop'
+s@cutprop3:=not(some([x:rat]max(s,x))):'prop'
+cutprop:=and3(cutprop1,cutprop2,cutprop3):'prop'
++*iii1
+y0@lbprop:=imp(in(y0,s),lessis(x0,y0)):'prop'
+-iii1
+x0@lb:=all([x:rat]lbprop".iii1"(x0,x)):'prop'
+min:=and(lb(x0),in(x0,s)):'prop'
+@cut:=ot(set(rat),[x:set(rat)]cutprop(x)):'type'
+[ksi:cut]
+lcl:=in"e"(set(rat),[x:set(rat)]cutprop(x),ksi):set(rat)
+[x0:rat]
+lrt:=in(x0,lcl(ksi)):'prop'
+urt:=not(in(x0,lcl(ksi))):'prop'
+ksi@clcl:=inp(set(rat),[x:set(rat)]cutprop(x),ksi):cutprop(lcl(ksi))
+clcl1:=and3e1(cutprop1(lcl),cutprop2(lcl),cutprop3(lcl),clcl):cutprop1(lcl(ksi))
+clcl2:=and3e2(cutprop1(lcl),cutprop2(lcl),cutprop3(lcl),clcl):cutprop2(lcl(ksi))
+clcl3:=and3e3(cutprop1(lcl),cutprop2(lcl),cutprop3(lcl),clcl):cutprop3(lcl(ksi))
+clcl1a:=ande1(cutprop1a(lcl),cutprop1b(lcl),clcl1):cutprop1a(lcl(ksi))
+clcl1b:=ande2(cutprop1a(lcl),cutprop1b(lcl),clcl1):cutprop1b(lcl(ksi))
+[p:'prop'][p1:[x:rat][t:lrt(ksi,x)]p]
+cutapp1a:=nonemptyapp(rat,lcl,clcl1a,p,p1):p
++*iii1
+ksi@t1:=th1"l.some"(rat,[x:rat]lrt(ksi,x),clcl1b):some([x:rat]urt(ksi,x))
+-iii1
+p@[p1:[x:rat][t:urt(ksi,x)]p]
+cutapp1b:=someapp(rat,[x:rat]urt(ksi,x),t1".iii1",p,p1):p
+ksi@[x0:rat][lx:lrt(ksi,x0)]
++*iii1
+lx@t2:=mp(lrt(ksi,x0),cutprop2a(lcl,x0),lx,<x0>clcl2):cutprop2a(lcl,x0)
+-iii1
+lx@[y0:rat][uy:urt(ksi,y0)]
+cutapp2a:=mp(urt(ksi,y0),less(x0,y0),uy,<y0>t2".iii1"):less(x0,y0)
+cutapp2b:=satz83(x0,y0,cutapp2a):more(y0,x0)
++*iii1
+lx@t3:=th4"l.some"(rat,[x:rat]max(lcl,x),clcl3,x0):not(max(lcl,x0))
+t4:=th4"l.and"(ub(lcl,x0),lrt(ksi,x0),t3,lx):not(ub(lcl,x0))
+t5:=th1"l.some"(rat,[x:rat]ubprop(lcl,x0,x),t4):some([x:rat]not(ubprop(lcl,x0,x)))
+-iii1
+lx@[p:'prop'][p1:[y:rat][t:lrt(ksi,y)][u:less(x0,y)]p][y0:rat][n:not(ubprop".iii1"(lcl,x0,y0))]
++*iii1
+n@t6:=th5"l.imp"(lrt(ksi,y0),moreis(x0,y0),n):lrt(ksi,y0)
+t7:=th6"l.imp"(lrt(ksi,y0),moreis(x0,y0),n):not(moreis(x0,y0))
+t8:=satz81j(x0,y0,t7):less(x0,y0)
+t9:=<t8><t6><y0>p1:p
+-iii1
+p1@cutapp3:=someapp(rat,[y:rat]not(ubprop".iii1"(lcl,x0,y)),t5".iii1",p,[y:rat][t:not(ubprop".iii1"(lcl,x0,y))]t9".iii1"(y,t)):p
+s@[x0:rat][i:in(x0,s)][y0:rat][n:not(in(y0,s))]
++*iii1
+n@t10:=andi(cutprop1a,cutprop1b,nonemptyi(rat,s,x0,i),th1"l.all"(rat,[x:rat]in(x,s),y0,n)):cutprop1
+-iii1
+s@[n:[x:rat]not(max(s,x))]
++*iii1
+n@t11:=th5"l.some"(rat,[x:rat]max(s,x),n):cutprop3
+-iii1
+s@[x0:rat][i:in(x0,s)][y0:rat][n:not(in(y0,s))][l:[x:rat][t:in(x,s)][y:rat][u:not(in(y,s))]less(x,y)][m:[x:rat]not(max(s,x))]
+cut1:=and3i(cutprop1,cutprop2,cutprop3,t10".iii1"(x0,i,y0,n),l,t11".iii1"(m)):cutprop(s)
++rp
+ksi@[eta:cut]
+is:=is"e"(cut,ksi,eta):'prop'
+nis:=not(is(ksi,eta)):'prop'
+[i:is(ksi,eta)]
+ise:=isini(set(rat),[x:set(rat)]cutprop(x),ksi,eta,i):is"e"(set(rat),lcl(ksi),lcl(eta))
+[x0:rat][lx:lrt(ksi,x0)]
+ise1:=issete1(rat,lcl(ksi),lcl(eta),ise,x0,lx):lrt(eta,x0)
+eta@[i:is"e"(set(rat),lcl(ksi),lcl(eta))]
+isi:=isine(set(rat),[x:set(rat)]cutprop(x),ksi,eta,i):is(ksi,eta)
+eta@[l:[x:rat][t:lrt(ksi,x)]lrt(eta,x)][k:[x:rat][t:lrt(eta,x)]lrt(ksi,x)]
+isi1:=isi(isseti(rat,lcl(ksi),lcl(eta),l,k)):is(ksi,eta)
+@[s:set(rat)][cs:cutprop(s)]
+cutof:=out(set(rat),[x:set(rat)]cutprop(x),s,cs):cut
+[x0:rat][i:in(x0,s)]
+ine:=issete1(rat,s,lcl(cutof(s,cs)),isinout(set(rat),[x:set(rat)]cutprop(x),s,cs),x0,i):lrt(cutof(s,cs),x0)
+x0@[lx:lrt(cutof(s,cs),x0)]
+ini:=issete2(rat,s,lcl(cutof(s,cs)),isinout(set(rat),[x:set(rat)]cutprop(x),s,cs),x0,lx):in(x0,s)
+s@[t:set(rat)][cs:cutprop(s)][ct:cutprop(t)][i:[x:rat][u:in(x,s)]in(x,t)][j:[x:rat][u:in(x,t)]in(x,s)]
+isi2:=isouti(set(rat),[x:set(rat)]cutprop(x),s,cs,t,ct,isseti(rat,s,t,i,j)):is(cutof(s,cs),cutof(t,ct))
+@[p:[x:cut]'prop']
+all:=all"l"(cut,p):'prop'
+some:=some"l"(cut,p):'prop'
+one:=one"e"(cut,p):'prop'
+ksi@satz116:=refis(cut,ksi):is(ksi,ksi)
+eta@[i:is(ksi,eta)]
+satz117:=symis(cut,ksi,eta,i):is(eta,ksi)
+eta@[zeta:cut][i:is(ksi,eta)][j:is(eta,zeta)]
+satz118:=tris(cut,ksi,eta,zeta,i,j):is(ksi,zeta)
++1119
+@[x0:rat][y0:rat][m:more(x0,y0)]
+t1:=ec3e23(is"rt"(x0,y0),more(x0,y0),less(x0,y0),satz81b(x0,y0),m):not(less(x0,y0))
+-1119
+ksi@[x0:rat][ux:urt(ksi,x0)][y0:rat][m:more(y0,x0)]
+satz119:=th3"l.imp"(lrt(ksi,y0),less(y0,x0),t1".1119"(y0,x0,m),[t:lrt(ksi,y0)]cutapp2a(y0,t,x0,ux)):urt(ksi,y0)
+y0@[l:less(x0,y0)]
+satz119a:=satz119(satz83(x0,y0,l)):urt(ksi,y0)
++1120
+@[x0:rat][y0:rat][l:less(x0,y0)]
+t1:=ec3e32(is"rt"(x0,y0),more(x0,y0),less(x0,y0),satz81b(x0,y0),l):not(more(x0,y0))
+-1120
+ksi@[x0:rat][lx:lrt(ksi,x0)][y0:rat][l:less(y0,x0)]
+satz120:=th7"l.imp"(lrt(ksi,y0),more(y0,x0),t1".1120"(y0,x0,l),[t:urt(ksi,y0)]cutapp2b(x0,lx,y0,t)):lrt(ksi,y0)
+y0@[m:more(x0,y0)]
+satz120a:=satz120(satz82(x0,y0,m)):lrt(ksi,y0)
+-rp
+s@[i:[x:rat][t:in(x,s)][y:rat][u:less(y,x)]in(y,s)][x0:rat][j:in(x0,s)][y0:rat][n:not(in(y0,s))]
++*iii1
+n@t12:=<y0><j><x0>i:[u:less(y0,x0)]in(y0,s)
+t13:=th3"l.imp"(less(y0,x0),in(y0,s),n,t12):not(less(y0,x0))
+t14:=satz81f(y0,x0,t13):moreis(y0,x0)
+-iii1
+n@[k:is(y0,x0)]
++*iii1
+k@t15:=isp1(rat,[x:rat]in(x,s),x0,y0,j,k):in(y0,s)
+n@t16:=th3"l.imp"(is(y0,x0),in(y0,s),n,[t:is(y0,x0)]t15(t)):nis(y0,x0)
+t17:=ore1(more(y0,x0),is(y0,x0),t14,t16):more(y0,x0)
+t18:=satz82(y0,x0,t17):less(x0,y0)
+i@t19:=[x:rat][t:in(x,s)][y:rat][u:not(in(y,s))]t18(x,t,y,u):cutprop2
+-iii1
+s@[s1:[x:rat][t:in(x,s)]some([y:rat]and(in(y,s),more(y,x)))][x0:rat][i:in(x0,s)]
++*iii1
+i@t20:=<i><x0>s1:some([y:rat]and(in(y,s),more(y,x0)))
+-iii1
+i@[y0:rat][a:and(in(y0,s),more(y0,x0))]
++*iii1
+a@t21:=ande1(in(y0,s),more(y0,x0),a):in(y0,s)
+t22:=ande2(in(y0,s),more(y0,x0),a):more(y0,x0)
+t23:=satz81g(y0,x0,t22):not(lessis(y0,x0))
+t24:=th3"l.imp"(moreis(x0,y0),lessis(y0,x0),t23,[t:moreis(x0,y0)]satz84(x0,y0,t)):not(moreis(x0,y0))
+t25:=th4"l.imp"(in(y0,s),moreis(x0,y0),t21,t24):not(ubprop(x0,y0))
+t26:=th1"l.all"(rat,[y:rat]ubprop(x0,y),y0,t25):not(ub(s,x0))
+t27:=th1"l.and"(ub(s,x0),in(x0,s),t26):not(max(s,x0))
+i@t28:=someapp(rat,[y:rat]and(in(y,s),more(y,x0)),t20,not(max(s,x0)),[y:rat][t:and(in(y,s),more(y,x0))]t27(y,t)):not(max(s,x0))
+-iii1
+x0@[n:not(in(x0,s))]
++*iii1
+n@t29:=th2"l.and"(ub(x0),in(x0,s),n):not(max(s,x0))
+x0@t30:=th1"l.imp"(in(x0,s),not(max(s,x0)),[u:in(x0,s)]t28(u),[u:not(in(x0,s))]t29(u)):not(max(s,x0))
+s1@t31:=t11([x:rat]t30(x)):cutprop3
+-iii1
+s@[x0:rat][i:in(x0,s)][y0:rat][n:not(in(y0,s))][j:[x:rat][t:in(x,s)][y:rat][u:less(y,x)]in(y,s)][s1:[x:rat][t:in(x,s)]some([y:rat]and(in(y,s),more(y,x)))]
+cut2:=and3i(cutprop1,cutprop2,cutprop3,t10".iii1"(x0,i,y0,n),t19".iii1"(j),t31".iii1"(s1)):cutprop(s)
++*rp
+eta@more:=some"rt"([x:rat]and(lrt(ksi,x),urt(eta,x))):'prop'
+[m:more(ksi,eta)][p:'prop'][p1:[x:rat][t:lrt(ksi,x)][u:urt(eta,x)]p][x0:rat][a:and(lrt(ksi,x0),urt(eta,x0))]
++iii2
+t1:=ande1(lrt(ksi,x0),urt(eta,x0),a):lrt(ksi,x0)
+t2:=ande2(lrt(ksi,x0),urt(eta,x0),a):urt(eta,x0)
+t3:=<t2><t1><x0>p1:p
+-iii2
+p1@moreapp:=someapp(rat,[x:rat]and(lrt(ksi,x),urt(eta,x)),m,p,[x:rat][t:and(lrt(ksi,x),urt(eta,x))]t3".iii2"(x,t)):p
+eta@less:=some"rt"([x:rat]and(urt(ksi,x),lrt(eta,x))):'prop'
+[l:less(ksi,eta)][p:'prop'][p1:[x:rat][t:urt(ksi,x)][u:lrt(eta,x)]p][x0:rat][a:and(urt(ksi,x0),lrt(eta,x0))]
++*iii2
+a@t4:=ande1(urt(ksi,x0),lrt(eta,x0),a):urt(ksi,x0)
+t5:=ande2(urt(ksi,x0),lrt(eta,x0),a):lrt(eta,x0)
+t6:=<t5><t4><x0>p1:p
+-iii2
+p1@lessapp:=someapp(rat,[x:rat]and(urt(ksi,x),lrt(eta,x)),l,p,[x:rat][t:and(urt(ksi,x),lrt(eta,x))]t6".iii2"(x,t)):p
+eta@[m:more(ksi,eta)]
++2121
+[x0:rat][lx:lrt(ksi,x0)][ux:urt(eta,x0)]
+t1:=andi(urt(eta,x0),lrt(ksi,x0),ux,lx):and(urt(eta,x0),lrt(ksi,x0))
+t2:=somei(rat,[x:rat]and(urt(eta,x),lrt(ksi,x)),x0,t1):less(eta,ksi)
+-2121
+satz121:=moreapp(m,less(eta,ksi),[x:rat][t:lrt(ksi,x)][u:urt(eta,x)]t2".2121"(x,t,u)):less(eta,ksi)
+eta@[l:less(ksi,eta)]
++2122
+[x0:rat][ux:urt(ksi,x0)][lx:lrt(eta,x0)]
+t1:=andi(lrt(eta,x0),urt(ksi,x0),lx,ux):and(lrt(eta,x0),urt(ksi,x0))
+t2:=somei(rat,[x:rat]and(lrt(eta,x),urt(ksi,x)),x0,t1):more(eta,ksi)
+-2122
+satz122:=lessapp(l,more(eta,ksi),[x:rat][t:urt(ksi,x)][u:lrt(eta,x)]t2".2122"(x,t,u)):more(eta,ksi)
++2123
+eta@[m:more(ksi,eta)][x0:rat][lx:lrt(ksi,x0)][ux:urt(eta,x0)]
+t1:=th3"st.isset"(rat,lcl(ksi),lcl(eta),x0,lx,ux):not(is"e"(set(rat),lcl(ksi),lcl(eta)))
+t2:=th3"l.imp"(is(ksi,eta),is"e"(set(rat),lcl(ksi),lcl(eta)),t1,[t:is(ksi,eta)]ise(ksi,eta,t)):not(is(ksi,eta))
+m@t3:=moreapp(ksi,eta,m,not(is(ksi,eta)),[x:rat][t:lrt(ksi,x)][u:urt(eta,x)]t2(x,t,u)):not(is(ksi,eta))
+eta@t4:=th2"l.ec"(is(ksi,eta),more(ksi,eta),[t:more(ksi,eta)]t3(t)):ec(is(ksi,eta),more(ksi,eta))
+[l:less(ksi,eta)][x0:rat][ux:urt(ksi,x0)][lx:lrt(eta,x0)]
+t5:=th4"st.isset"(rat,lcl(eta),lcl(ksi),x0,lx,ux):not(is"e"(set(rat),lcl(ksi),lcl(eta)))
+t6:=th3"l.imp"(is(ksi,eta),is"e"(set(rat),lcl(ksi),lcl(eta)),t5,[t:is(ksi,eta)]ise(ksi,eta,t)):not(is(ksi,eta))
+l@t7:=lessapp(ksi,eta,l,not(is(ksi,eta)),[x:rat][t:urt(ksi,x)][u:lrt(eta,x)]t6(x,t,u)):not(is(ksi,eta))
+eta@t8:=th1"l.ec"(less(ksi,eta),is(ksi,eta),[t:less(ksi,eta)]t7(t)):ec(less(ksi,eta),is(ksi,eta))
+m@[l:less(ksi,eta)][x0:rat][lx:lrt(ksi,x0)][ux:urt(eta,x0)][y0:rat][uy:urt(ksi,y0)][ly:lrt(eta,y0)]
+t9:=cutapp2a(ksi,x0,lx,y0,uy):less"rt"(x0,y0)
+t10:=cutapp2b(eta,y0,ly,x0,ux):more"rt"(x0,y0)
+t11:=mp(less"rt"(x0,y0),con,t9,ec3e23(is"rt"(x0,y0),more"rt"(x0,y0),less"rt"(x0,y0),satz81b(x0,y0),t10)):con
+ux@t12:=lessapp(ksi,eta,l,con,[x:rat][t:urt(ksi,x)][u:lrt(eta,x)]t11(x,t,u)):con
+l@t13:=moreapp(ksi,eta,m,con,[x:rat][t:lrt(ksi,x)][u:urt(eta,x)]t12(x,t,u)):con
+m@t14:=[t:less(ksi,eta)]t13(t):not(less(ksi,eta))
+eta@t15:=th1"l.ec"(more(ksi,eta),less(ksi,eta),[t:more(ksi,eta)]t14(t)):ec(more(ksi,eta),less(ksi,eta))
+a:=th6"l.ec3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),t4,t15,t8):ec3(is(ksi,eta),more(ksi,eta),less(ksi,eta))
+[i:is(ksi,eta)]
+t16:=or3i1(is(ksi,eta),more(ksi,eta),less(ksi,eta),i):or3(is(ksi,eta),more(ksi,eta),less(ksi,eta))
+eta@[n:nis(ksi,eta)]
+t17:=th3"l.imp"(is"e"(set(rat),lcl(ksi),lcl(eta)),is(ksi,eta),n,[t:is"e"(set(rat),lcl(ksi),lcl(eta))]isi(ksi,eta,t)):not(is"e"(set(rat),lcl(ksi),lcl(eta)))
+t18:=th5"st.isset"(rat,lcl(ksi),lcl(eta),t17):or(more(ksi,eta),more(eta,ksi))
+t19:=th8"l.or"(more(ksi,eta),more(eta,ksi),less(ksi,eta),t18,[t:more(eta,ksi)]satz121(eta,ksi,t)):or(more(ksi,eta),less(ksi,eta))
+t20:=th7"l.or3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),t19):or3(is(ksi,eta),more(ksi,eta),less(ksi,eta))
+eta@b:=th1"l.imp"(is(ksi,eta),or3(is(ksi,eta),more(ksi,eta),less(ksi,eta)),[t:is(ksi,eta)]t16(t),[t:nis(ksi,eta)]t20(t)):or3(is(ksi,eta),more(ksi,eta),less(ksi,eta))
+-2123
+eta@satz123:=orec3i(is(ksi,eta),more(ksi,eta),less(ksi,eta),b".2123",a".2123"):orec3(is(ksi,eta),more(ksi,eta),less(ksi,eta))
+satz123a:=orec3e1(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123):or3(is(ksi,eta),more(ksi,eta),less(ksi,eta))
+satz123b:=orec3e2(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123):ec3(is(ksi,eta),more(ksi,eta),less(ksi,eta))
+moreis:=or(more(ksi,eta),is(ksi,eta)):'prop'
+lessis:=or(less(ksi,eta),is(ksi,eta)):'prop'
+[m:moreis(ksi,eta)]
+satz124:=th9"l.or"(more(ksi,eta),is(ksi,eta),less(eta,ksi),is(eta,ksi),m,[t:more(ksi,eta)]satz121(t),[t:is(ksi,eta)]symis(cut,ksi,eta,t)):lessis(eta,ksi)
+eta@[l:lessis(ksi,eta)]
+satz125:=th9"l.or"(less(ksi,eta),is(ksi,eta),more(eta,ksi),is(eta,ksi),l,[t:less(ksi,eta)]satz122(t),[t:is(ksi,eta)]symis(cut,ksi,eta,t)):moreis(eta,ksi)
+zeta@[i:is(ksi,eta)][m:more(ksi,zeta)]
+ismore1:=isp(cut,[u:cut]more(u,zeta),ksi,eta,m,i):more(eta,zeta)
+i@[m:more(zeta,ksi)]
+ismore2:=isp(cut,[u:cut]more(zeta,u),ksi,eta,m,i):more(zeta,eta)
+i@[l:less(ksi,zeta)]
+isless1:=isp(cut,[u:cut]less(u,zeta),ksi,eta,l,i):less(eta,zeta)
+i@[l:less(zeta,ksi)]
+isless2:=isp(cut,[u:cut]less(zeta,u),ksi,eta,l,i):less(zeta,eta)
+i@[m:moreis(ksi,zeta)]
+ismoreis1:=isp(cut,[u:cut]moreis(u,zeta),ksi,eta,m,i):moreis(eta,zeta)
+i@[m:moreis(zeta,ksi)]
+ismoreis2:=isp(cut,[u:cut]moreis(zeta,u),ksi,eta,m,i):moreis(zeta,eta)
+i@[l:lessis(ksi,zeta)]
+islessis1:=isp(cut,[u:cut]lessis(u,zeta),ksi,eta,l,i):lessis(eta,zeta)
+i@[l:lessis(zeta,ksi)]
+islessis2:=isp(cut,[u:cut]lessis(zeta,u),ksi,eta,l,i):lessis(zeta,eta)
+eta@[i:is(ksi,eta)]
+moreisi2:=ori2(more(ksi,eta),is(ksi,eta),i):moreis(ksi,eta)
+lessisi2:=ori2(less(ksi,eta),is(ksi,eta),i):lessis(ksi,eta)
+eta@[m:more(ksi,eta)]
+moreisi1:=ori1(more(ksi,eta),is(ksi,eta),m):moreis(ksi,eta)
+eta@[l:less(ksi,eta)]
+lessisi1:=ori1(less(ksi,eta),is(ksi,eta),l):lessis(ksi,eta)
+zeta@[upsilon:cut][i:is(ksi,eta)][j:is(zeta,upsilon)][m:more(ksi,zeta)]
+ismore12:=ismore2(zeta,upsilon,eta,j,ismore1(ksi,eta,zeta,i,m)):more(eta,upsilon)
+j@[l:less(ksi,zeta)]
+isless12:=isless2(zeta,upsilon,eta,j,isless1(ksi,eta,zeta,i,l)):less(eta,upsilon)
+j@[m:moreis(ksi,zeta)]
+ismoreis12:=ismoreis2(zeta,upsilon,eta,j,ismoreis1(ksi,eta,zeta,i,m)):moreis(eta,upsilon)
+j@[l:lessis(ksi,zeta)]
+islessis12:=islessis2(zeta,upsilon,eta,j,islessis1(ksi,eta,zeta,i,l)):lessis(eta,upsilon)
+eta@[m:moreis(ksi,eta)]
+satz123c:=th7"l.ec3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123b,comor(more(ksi,eta),is(ksi,eta),m)):not(less(ksi,eta))
+eta@[l:lessis(ksi,eta)]
+satz123d:=th9"l.ec3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123b,l):not(more(ksi,eta))
+eta@[n:not(more(ksi,eta))]
+satz123e:=th2"l.or3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123a,n):lessis(ksi,eta)
+eta@[n:not(less(ksi,eta))]
+satz123f:=comor(is(ksi,eta),more(ksi,eta),th3"l.or3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123a,n)):moreis(ksi,eta)
+eta@[m:more(ksi,eta)]
+satz123g:=th3"l.or"(less(ksi,eta),is(ksi,eta),ec3e23(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123b,m),ec3e21(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123b,m)):not(lessis(ksi,eta))
+eta@[l:less(ksi,eta)]
+satz123h:=th3"l.or"(more(ksi,eta),is(ksi,eta),ec3e32(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123b,l),ec3e31(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123b,l)):not(moreis(ksi,eta))
+eta@[n:not(moreis(ksi,eta))]
+satz123j:=or3e3(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123a,th5"l.or"(more(ksi,eta),is(ksi,eta),n),th4"l.or"(more(ksi,eta),is(ksi,eta),n)):less(ksi,eta)
+eta@[n:not(lessis(ksi,eta))]
+satz123k:=or3e2(is(ksi,eta),more(ksi,eta),less(ksi,eta),satz123a,th4"l.or"(less(ksi,eta),is(ksi,eta),n),th5"l.or"(less(ksi,eta),is(ksi,eta),n)):more(ksi,eta)
+zeta@[l:less(ksi,eta)][k:less(eta,zeta)]
++2126
+[x0:rat][ux:urt(ksi,x0)][lx:lrt(eta,x0)][y0:rat][uy:urt(eta,y0)][ly:lrt(zeta,y0)]
+t1:=cutapp2a(eta,x0,lx,y0,uy):less"rt"(x0,y0)
+t2:=satz119a(ksi,x0,ux,y0,t1):urt(ksi,y0)
+t3:=andi(urt(ksi,y0),lrt(zeta,y0),t2,ly):and(urt(ksi,y0),lrt(zeta,y0))
+t4:=somei(rat,[x:rat]and(urt(ksi,x),lrt(zeta,x)),y0,t3):less(ksi,zeta)
+lx@t5:=lessapp(eta,zeta,k,less(ksi,zeta),[x:rat][t:urt(eta,x)][u:lrt(zeta,x)]t4(x,t,u)):less(ksi,zeta)
+-2126
+satz126:=lessapp(ksi,eta,l,less(ksi,zeta),[x:rat][t:urt(ksi,x)][u:lrt(eta,x)]t5".2126"(x,t,u)):less(ksi,zeta)
+trless:=satz126:less(ksi,zeta)
+zeta@[m:more(ksi,eta)][n:more(eta,zeta)]
+trmore:=satz122(zeta,ksi,satz126(zeta,eta,ksi,satz121(eta,zeta,n),satz121(ksi,eta,m))):more(ksi,zeta)
+zeta@[l:lessis(ksi,eta)][k:less(eta,zeta)]
+satz127a:=orapp(less(ksi,eta),is(ksi,eta),less(ksi,zeta),l,[u:less(ksi,eta)]trless(u,k),[u:is(ksi,eta)]isless1(eta,ksi,zeta,symis(cut,ksi,eta,u),k)):less(ksi,zeta)
+zeta@[l:less(ksi,eta)][k:lessis(eta,zeta)]
+satz127b:=orapp(less(eta,zeta),is(eta,zeta),less(ksi,zeta),k,[u:less(eta,zeta)]trless(l,u),[u:is(eta,zeta)]isless2(eta,zeta,ksi,u,l)):less(ksi,zeta)
+zeta@[m:moreis(ksi,eta)][n:more(eta,zeta)]
+satz127c:=satz122(zeta,ksi,satz127b(zeta,eta,ksi,satz121(eta,zeta,n),satz124(ksi,eta,m))):more(ksi,zeta)
+zeta@[m:more(ksi,eta)][n:moreis(eta,zeta)]
+satz127d:=satz122(zeta,ksi,satz127a(zeta,eta,ksi,satz124(eta,zeta,n),satz121(ksi,eta,m))):more(ksi,zeta)
+zeta@[l:lessis(ksi,eta)][k:lessis(eta,zeta)]
++2128
+[i:is(ksi,eta)][j:is(eta,zeta)]
+t1:=lessisi2(ksi,zeta,tris(cut,ksi,eta,zeta,i,j)):lessis(ksi,zeta)
+i@[j:less(eta,zeta)]
+t2:=lessisi1(ksi,zeta,satz127a(l,j)):lessis(ksi,zeta)
+i@t3:=orapp(less(eta,zeta),is(eta,zeta),lessis(ksi,zeta),k,[t:less(eta,zeta)]t2(t),[t:is(eta,zeta)]t1(t)):lessis(ksi,zeta)
+k@[j:less(ksi,eta)]
+t4:=lessisi1(ksi,zeta,satz127b(j,k)):lessis(ksi,zeta)
+-2128
+satz128:=orapp(less(ksi,eta),is(ksi,eta),lessis(ksi,zeta),l,[t:less(ksi,eta)]t4".2128"(t),[t:is(ksi,eta)]t3".2128"(t)):lessis(ksi,zeta)
+trlessis:=satz128:lessis(ksi,zeta)
+zeta@[m:moreis(ksi,eta)][n:moreis(eta,zeta)]
+trmoreis:=satz125(zeta,ksi,satz128(zeta,eta,ksi,satz124(eta,zeta,n),satz124(ksi,eta,m))):moreis(ksi,zeta)
+eta@[z0:rat][x0:rat][y0:rat]
+sumprop1:=and3(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,pl(x0,y0))):'prop'
+z0@sumprop:=some"rt"([x:rat]some"rt"([y:rat]sumprop1(z0,x,y))):'prop'
+eta@sum:=setof(rat,[z:rat]sumprop(z)):set(rat)
+x0@[lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][i:is"rt"(z0,pl(x0,y0))]
++iii3
+t1:=and3i(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,pl(x0,y0)),lx,ly,i):sumprop1(z0,x0,y0)
+t2:=somei(rat,[y:rat]sumprop1(z0,x0,y),y0,t1):some"rt"([y:rat]sumprop1(z0,x0,y))
+t3:=somei(rat,[x:rat]some"rt"([y:rat]sumprop1(z0,x,y)),x0,t2):sumprop(z0)
+-iii3
+sum1:=estii(rat,[z:rat]sumprop(z),z0,t3".iii3"):in(z0,sum)
+z0@[i:in(z0,sum)][p:'prop'][p1:[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,pl(x,y))]p]
++*iii3
+p1@t4:=estie(rat,[z:rat]sumprop(z),z0,i):sumprop(z0)
+-iii3
+p1@[x0:rat][px:some"rt"([y:rat]sumprop1(z0,x0,y))][y0:rat][py:sumprop1(z0,x0,y0)]
++*iii3
+py@t5:=and3e1(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,pl(x0,y0)),py):lrt(ksi,x0)
+t6:=and3e2(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,pl(x0,y0)),py):lrt(eta,y0)
+t7:=and3e3(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,pl(x0,y0)),py):is"rt"(z0,pl(x0,y0))
+t8:=<t7><t6><y0><t5><x0>p1:p
+px@t9:=someapp(rat,[y:rat]sumprop1(z0,x0,y),px,p,[y:rat][t:sumprop1(z0,x0,y)]t8(y,t)):p
+-iii3
+p1@sumapp:=someapp(rat,[x:rat]some"rt"([y:rat]sumprop1(z0,x,y)),t4".iii3",p,[x:rat][t:some"rt"([y:rat]sumprop1(z0,x,y))]t9".iii3"(x,t)):p
+eta@[x1:rat][ux:urt(ksi,x1)][y1:rat][uy:urt(eta,y1)]
++3129
+[z0:rat][i:in(z0,sum)][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][j:is"rt"(z0,pl(x0,y0))]
+t1:=cutapp2a(ksi,x0,lx,x1,ux):less"rt"(x0,x1)
+t2:=cutapp2a(eta,y0,ly,y1,uy):less"rt"(y0,y1)
+t3:=isless1"rt"(pl(x0,y0),z0,pl(x1,y1),symis(rat,z0,pl(x0,y0),j),satz98a(x0,x1,y0,y1,t1,t2)):less"rt"(z0,pl(x1,y1))
+t4:=ec3e31(is"rt"(z0,pl(x1,y1)),more"rt"(z0,pl(x1,y1)),less"rt"(z0,pl(x1,y1)),satz81b(z0,pl(x1,y1)),t3):nis"rt"(z0,pl(x1,y1))
+i@t5:=sumapp(ksi,eta,z0,i,nis"rt"(z0,pl(x1,y1)),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,pl(x,y))]t4(x,t,y,u,v)):nis"rt"(z0,pl(x1,y1))
+-3129
+satz129a:=th3"l.imp"(in(pl(x1,y1),sum),nis"rt"(pl(x1,y1),pl(x1,y1)),weli(is"rt"(pl(x1,y1),pl(x1,y1)),refis(rat,pl(x1,y1))),[t:in(pl(x1,y1),sum)]t5".3129"(pl(x1,y1),t)):not(in(pl(x1,y1),sum))
++*3129
+eta@[u0:rat][i:in(u0,sum)][z0:rat][l:less"rt"(z0,u0)][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][j:is"rt"(u0,pl(x0,y0))]
+t6:=isless2"rt"(u0,pl(x0,y0),z0,j,l):less"rt"(z0,pl(x0,y0))
+z1:=ov(z0,pl(x0,y0)):rat
+t7:=isless12"rt"(z0,ts(z1,pl(x0,y0)),pl(x0,y0),ts(1rt,pl(x0,y0)),satz110f(z0,pl(x0,y0)),example1d(pl(x0,y0)),t6):less"rt"(ts(z1,pl(x0,y0)),ts(1rt,pl(x0,y0)))
+t8:=satz106c(z1,1rt,pl(x0,y0),t7):less"rt"(z1,1rt)
+t9:=isless2"rt"(ts(x0,1rt),x0,ts(x0,z1),example1a(x0),satz105f(z1,1rt,x0,t8)):less"rt"(ts(x0,z1),x0)
+t10:=isless2"rt"(ts(y0,1rt),y0,ts(y0,z1),example1a(y0),satz105f(z1,1rt,y0,t8)):less"rt"(ts(y0,z1),y0)
+t11:=satz120(ksi,x0,lx,ts(x0,z1),t9):lrt(ksi,ts(x0,z1))
+t12:=satz120(eta,y0,ly,ts(y0,z1),t10):lrt(eta,ts(y0,z1))
+t13:=tris(rat,pl(ts(x0,z1),ts(y0,z1)),ts(pl(x0,y0),z1),z0,distpt1(x0,y0,z1),satz110c(z0,pl(x0,y0))):is"rt"(pl(ts(x0,z1),ts(y0,z1)),z0)
+t14:=symis(rat,pl(ts(x0,z1),ts(y0,z1)),z0,t13):is"rt"(z0,pl(ts(x0,z1),ts(y0,z1)))
+t15:=sum1(ksi,eta,z0,ts(x0,z1),t11,ts(y0,z1),t12,t14):in(z0,sum)
+l@t16:=sumapp(ksi,eta,u0,i,in(z0,sum),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(u0,pl(x,y))]t15(x,t,y,u,v)):in(z0,sum)
+eta@[z0:rat][i:in(z0,sum)][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][j:is"rt"(z0,pl(x0,y0))][x1:rat][lx1:lrt(ksi,x1)][l:less"rt"(x0,x1)]
+t17:=sum1(ksi,eta,pl(x1,y0),x1,lx1,y0,ly,refis(rat,pl(x1,y0))):in(pl(x1,y0),sum)
+t18:=satz96a(x1,x0,y0,satz83(x0,x1,l)):more"rt"(pl(x1,y0),pl(x0,y0))
+t19:=ismore2"rt"(pl(x0,y0),z0,pl(x1,y0),symis(rat,z0,pl(x0,y0),j),t18):more"rt"(pl(x1,y0),z0)
+t20:=andi(in(pl(x1,y0),sum),more"rt"(pl(x1,y0),z0),t17,t19):and(in(pl(x1,y0),sum),more"rt"(pl(x1,y0),z0))
+t21:=somei(rat,[y:rat]and(in(y,sum),more"rt"(y,z0)),pl(x1,y0),t20):some"rt"([y:rat]and(in(y,sum),more"rt"(y,z0)))
+j@t22:=cutapp3(ksi,x0,lx,some"rt"([y:rat]and(in(y,sum),more"rt"(y,z0))),[x:rat][t:lrt(ksi,x)][u:less"rt"(x0,x)]t21(x,t,u)):some"rt"([y:rat]and(in(y,sum),more"rt"(y,z0)))
+i@t23:=sumapp(ksi,eta,z0,i,some"rt"([y:rat]and(in(y,sum),more"rt"(y,z0))),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,pl(x,y))]t22(x,t,y,u,v)):some"rt"([y:rat]and(in(y,sum),more"rt"(y,z0)))
+eta@[x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][x1:rat][ux:urt(ksi,x1)][y1:rat][uy:urt(eta,y1)]
+t24:=cut2(sum,pl(x0,y0),sum1(ksi,eta,pl(x0,y0),x0,lx,y0,ly,refis(rat,pl(x0,y0))),pl(x1,y1),satz129a(x1,ux,y1,uy),[x:rat][t:in(x,sum)][y:rat][u:less"rt"(y,x)]t16(x,t,y,u),[x:rat][t:in(x,sum)]t23(x,t)):cutprop(sum)
+ux@t25:=cutapp1b(eta,cutprop(sum),[y:rat][t:urt(eta,y)]t24(y,t)):cutprop(sum)
+ly@t26:=cutapp1b(ksi,cutprop(sum),[x:rat][t:urt(ksi,x)]t25(x,t)):cutprop(sum)
+lx@t27:=cutapp1a(eta,cutprop(sum),[y:rat][t:lrt(eta,y)]t26(y,t)):cutprop(sum)
+-3129
+eta@satz129:=cutapp1a(ksi,cutprop(sum),[x:rat][t:lrt(ksi,x)]t27".3129"(x,t)):cutprop(sum)
+pl:=cutof(sum,satz129):cut
+[z0:rat][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][i:is"rt"(z0,pl"rt"(x0,y0))]
+lrtpl:=ine(sum,satz129,z0,sum1(z0,x0,lx,y0,ly,i)):lrt(pl(ksi,eta),z0)
+eta@[z0:rat][x0:rat][ux:urt(ksi,x0)][y0:rat][uy:urt(eta,y0)][i:is"rt"(z0,pl"rt"(x0,y0))]
++*iii3
+i@t10:=isp1(rat,[x:rat]not(in(x,sum)),pl"rt"(x0,y0),z0,satz129a(x0,ux,y0,uy),i):not(in(z0,sum))
+-iii3
+i@urtpl:=th3"l.imp"(lrt(pl(ksi,eta),z0),in(z0,sum),t10".iii3",[t:lrt(pl(ksi,eta),z0)]ini(sum,satz129,z0,t)):urt(pl(ksi,eta),z0)
+eta@[z0:rat][lz:lrt(pl(ksi,eta),z0)][p:'prop'][p1:[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,pl"rt"(x,y))]p]
++*iii3
+p1@t11:=ini(sum,satz129,z0,lz):in(z0,sum)
+-iii3
+p1@plapp:=sumapp(z0,t11".iii3",p,p1):p
+zeta@[i:is(ksi,eta)]
+ispl1:=isf(cut,cut,[u:cut]pl(u,zeta),ksi,eta,i):is(pl(ksi,zeta),pl(eta,zeta))
+ispl2:=isf(cut,cut,[u:cut]pl(zeta,u),ksi,eta,i):is(pl(zeta,ksi),pl(zeta,eta))
+upsilon@[i:is(ksi,eta)][j:is(zeta,upsilon)]
+ispl12:=tris(cut,pl(ksi,zeta),pl(eta,zeta),pl(eta,upsilon),ispl1(i),ispl2(zeta,upsilon,eta,j)):is(pl(ksi,zeta),pl(eta,upsilon))
++3130
+eta@[z0:rat][lz:lrt(pl(ksi,eta),z0)][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][i:is"rt"(z0,pl"rt"(x0,y0))]
+t1:=tris(rat,z0,pl"rt"(x0,y0),pl"rt"(y0,x0),i,compl(x0,y0)):is"rt"(z0,pl"rt"(y0,x0))
+t2:=lrtpl(eta,ksi,z0,y0,ly,x0,lx,t1):lrt(pl(eta,ksi),z0)
+lz@t3:=plapp(ksi,eta,z0,lz,lrt(pl(eta,ksi),z0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,pl"rt"(x,y))]t2(x,t,y,u,v)):lrt(pl(eta,ksi),z0)
+-3130
+eta@satz130:=isi1(pl(ksi,eta),pl(eta,ksi),[x:rat][t:lrt(pl(ksi,eta),x)]t3".3130"(x,t),[x:rat][t:lrt(pl(eta,ksi),x)]t3".3130"(eta,ksi,x,t)):is(pl(ksi,eta),pl(eta,ksi))
+compl:=satz130:is(pl(ksi,eta),pl(eta,ksi))
++3131
+zeta@[u0:rat][lu:lrt(pl(pl(ksi,eta),zeta),u0)][v0:rat][lv:lrt(pl(ksi,eta),v0)][z0:rat][lz:lrt(zeta,z0)][i:is"rt"(u0,pl"rt"(v0,z0))][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][j:is"rt"(v0,pl"rt"(x0,y0))]
+t1:=tr3is(rat,u0,pl"rt"(v0,z0),pl"rt"(pl"rt"(x0,y0),z0),pl"rt"(x0,pl"rt"(y0,z0)),i,ispl1"rt"(v0,pl"rt"(x0,y0),z0,j),asspl1(x0,y0,z0)):is"rt"(u0,pl"rt"(x0,pl"rt"(y0,z0)))
+t2:=lrtpl(eta,zeta,pl"rt"(y0,z0),y0,ly,z0,lz,refis(rat,pl"rt"(y0,z0))):lrt(pl(eta,zeta),pl"rt"(y0,z0))
+t3:=lrtpl(ksi,pl(eta,zeta),u0,x0,lx,pl"rt"(y0,z0),t2,t1):lrt(pl(ksi,pl(eta,zeta)),u0)
+i@t4:=plapp(ksi,eta,v0,lv,lrt(pl(ksi,pl(eta,zeta)),u0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(v0,pl"rt"(x,y))]t3(x,t,y,u,v)):lrt(pl(ksi,pl(eta,zeta)),u0)
+lu@t5:=plapp(pl(ksi,eta),zeta,u0,lu,lrt(pl(ksi,pl(eta,zeta)),u0),[x:rat][t:lrt(pl(ksi,eta),x)][y:rat][u:lrt(zeta,y)][v:is"rt"(u0,pl"rt"(x,y))]t4(x,t,y,u,v)):lrt(pl(ksi,pl(eta,zeta)),u0)
+u0@[lu:lrt(pl(ksi,pl(eta,zeta)),u0)][x0:rat][lx:lrt(ksi,x0)][v0:rat][lv:lrt(pl(eta,zeta),v0)][i:is"rt"(u0,pl"rt"(x0,v0))][y0:rat][ly:lrt(eta,y0)][z0:rat][lz:lrt(zeta,z0)][j:is"rt"(v0,pl"rt"(y0,z0))]
+t6:=tr3is(rat,u0,pl"rt"(x0,v0),pl"rt"(x0,pl"rt"(y0,z0)),pl"rt"(pl"rt"(x0,y0),z0),i,ispl2"rt"(v0,pl"rt"(y0,z0),x0,j),asspl2(x0,y0,z0)):is"rt"(u0,pl"rt"(pl"rt"(x0,y0),z0))
+t7:=lrtpl(ksi,eta,pl"rt"(x0,y0),x0,lx,y0,ly,refis(rat,pl"rt"(x0,y0))):lrt(pl(ksi,eta),pl"rt"(x0,y0))
+t8:=lrtpl(pl(ksi,eta),zeta,u0,pl"rt"(x0,y0),t7,z0,lz,t6):lrt(pl(pl(ksi,eta),zeta),u0)
+i@t9:=plapp(eta,zeta,v0,lv,lrt(pl(pl(ksi,eta),zeta),u0),[x:rat][t:lrt(eta,x)][y:rat][u:lrt(zeta,y)][v:is"rt"(v0,pl"rt"(x,y))]t8(x,t,y,u,v)):lrt(pl(pl(ksi,eta),zeta),u0)
+lu@t10:=plapp(ksi,pl(eta,zeta),u0,lu,lrt(pl(pl(ksi,eta),zeta),u0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(pl(eta,zeta),y)][v:is"rt"(u0,pl"rt"(x,y))]t9(x,t,y,u,v)):lrt(pl(pl(ksi,eta),zeta),u0)
+-3131
+zeta@satz131:=isi1(pl(pl(ksi,eta),zeta),pl(ksi,pl(eta,zeta)),[x:rat][t:lrt(pl(pl(ksi,eta),zeta),x)]t5".3131"(x,t),[x:rat][t:lrt(pl(ksi,pl(eta,zeta)),x)]t10".3131"(x,t)):is(pl(pl(ksi,eta),zeta),pl(ksi,pl(eta,zeta)))
+asspl1:=satz131:is(pl(pl(ksi,eta),zeta),pl(ksi,pl(eta,zeta)))
+asspl2:=symis(cut,pl(pl(ksi,eta),zeta),pl(ksi,pl(eta,zeta)),satz131):is(pl(ksi,pl(eta,zeta)),pl(pl(ksi,eta),zeta))
+ksi@[a0:rat]
++3132
+[x0:rat][y0:rat]
+prop1:=and(lrt(ksi,x0),urt(ksi,y0)):'prop'
+[p:prop1]
+t1:=cutapp2b(x0,ande1(lrt(ksi,x0),urt(ksi,y0),p),y0,ande2(lrt(ksi,x0),urt(ksi,y0),p)):more"rt"(y0,x0)
+prop2:=is"rt"(mn(y0,x0,t1),a0):'prop'
+y0@prop3:=and(prop1,[t:prop1]prop2(t)):'prop'
+a0@prop4:=some"rt"([x:rat]some"rt"([y:rat]prop3(x,y))):'prop'
+x0@[lx:lrt(ksi,x0)][y0:rat][uy:urt(ksi,y0)]
+t2:=cutapp2b(x0,lx,y0,uy):more"rt"(y0,x0)
+[n:nat][m:more"rt"(ts(rtofn(n),a0),mn(y0,x0,t2))]
+t3:=satz96d(ts(rtofn(n),a0),mn(y0,x0,t2),x0,m):more"rt"(pl"rt"(x0,ts(rtofn(n),a0)),pl"rt"(x0,mn(y0,x0,t2)))
+t4:=ismore2"rt"(pl"rt"(x0,mn(y0,x0,t2)),y0,pl"rt"(x0,ts(rtofn(n),a0)),satz101c(y0,x0,t2),t3):more"rt"(pl"rt"(x0,ts(rtofn(n),a0)),y0)
+t5:=satz119(y0,uy,pl"rt"(x0,ts(rtofn(n),a0)),t4):urt(pl"rt"(x0,ts(rtofn(n),a0)))
+t6:=somei(nat,[x:nat]urt(pl"rt"(x0,ts(rtofn(x),a0))),n,t5):some"n"([x:nat]urt(pl"rt"(x0,ts(rtofn(x),a0))))
+uy@t7:=someapp(nat,[x:nat]more"rt"(ts(rtofn(x),a0),mn(y0,x0,t2)),satz115(a0,mn(y0,x0,t2)),some"n"([x:nat]urt(pl"rt"(x0,ts(rtofn(x),a0)))),[x:nat][t:more"rt"(ts(rtofn(x),a0),mn(y0,x0,t2))]t6(x,t)):some"n"([x:nat]urt(pl"rt"(x0,ts(rtofn(x),a0))))
+[u:nat][m:min"n"([x:nat]urt(pl"rt"(x0,ts(rtofn(x),a0))),u)]
+t8:=ande1(lb"n"([x:nat]urt(pl"rt"(x0,ts(rtofn(x),a0))),u),urt(pl"rt"(x0,ts(rtofn(u),a0))),m):lb"n"([x:nat]urt(pl"rt"(x0,ts(rtofn(x),a0))),u)
+t9:=ande2(lb"n"([x:nat]urt(pl"rt"(x0,ts(rtofn(x),a0))),u),urt(pl"rt"(x0,ts(rtofn(u),a0))),m):urt(pl"rt"(x0,ts(rtofn(u),a0)))
+[i:is"n"(u,1)]
+u0:=pl"rt"(x0,a0):rat
+t10:=tr3is(rat,ts(rtofn(u),a0),ts(1rt,a0),ts(a0,1rt),a0,ists1(rtofn(u),1rt,a0,isnert(u,1,i)),comts(1rt,a0),example1a(a0)):is"rt"(ts(rtofn(u),a0),a0)
+t11:=isp(rat,[x:rat]urt(pl"rt"(x0,x)),ts(rtofn(u),a0),a0,t9,t10):urt(ksi,u0)
+t12:=andi(lrt(ksi,x0),urt(ksi,u0),lx,t11):prop1(x0,u0)
+[p:prop1(x0,u0)]
+t13:=symis(rat,a0,mn(u0,x0,t1(x0,u0,p)),satz101g(u0,x0,a0,t1(x0,u0,p),refis(rat,u0))):prop2(x0,u0,p)
+i@t14:=andi(prop1(x0,u0),[t:prop1(x0,u0)]prop2(x0,u0,t),t12,[t:prop1(x0,u0)]t13(t)):prop3(x0,u0)
+t15:=somei(rat,[y:rat]prop3(x0,y),u0,t14):some"rt"([y:rat]prop3(x0,y))
+t16:=somei(rat,[x:rat]some"rt"([y:rat]prop3(x,y)),x0,t15):prop4
+m@[o:more"n"(u,1)]
+t17:=morei(rtofn(u),1rt,fr(u,1),fr(1,1),inclass(fr(u,1)),inclass(fr(1,1)),satz111d(u,1,o)):more"rt"(rtofn(u),1rt)
+um10:=mn(rtofn(u),1rt,t17):rat
+t18:=satz112g(rtofn(u),natrti(u),1rt,natrti(1),t17):natrt(um10)
+um1:=nofrt(um10,t18):nat
+v0:=pl"rt"(x0,ts(um10,a0)):rat
+w0:=pl"rt"(x0,ts(rtofn(u),a0)):rat
+t19:=isless2"rt"(pl"rt"(um10,1rt),rtofn(u),um10,satz101e(rtofn(u),1rt,t17),satz94a(um10,1rt)):less"rt"(um10,rtofn(u))
+t20:=lesse(um10,rtofn(u),fr(um1,1),fr(u,1),inclassn(um10,t18),inclass(fr(u,1)),t19):lessf(fr(um1,1),fr(u,1))
+t21:=satz111c(um1,u,t20):less"n"(um1,u)
+t22:=th3"l.imp"(lessis"n"(u,um1),moreis"n"(um1,u),satz10h(um1,u,t21),[t:lessis"n"(u,um1)]satz14(u,um1,t)):not(lessis"n"(u,um1))
+t23:=et(lrt(pl"rt"(x0,ts(rtofn(um1),a0))),th3"l.imp"(urt(pl"rt"(x0,ts(rtofn(um1),a0))),lessis"n"(u,um1),t22,<um1>t8)):lrt(pl"rt"(x0,ts(rtofn(um1),a0)))
+t24:=isp1(rat,[x:rat]lrt(pl"rt"(x0,ts(x,a0))),rtofn(um1),um10,t23,isrtn1(um10,t18)):lrt(ksi,v0)
+t25:=andi(lrt(ksi,v0),urt(ksi,w0),t24,t9):prop1(v0,w0)
+t26:=tr3is(rat,pl"rt"(ts(um10,a0),a0),pl"rt"(ts(um10,a0),ts(1rt,a0)),ts(pl"rt"(um10,1rt),a0),ts(rtofn(u),a0),ispl2"rt"(a0,ts(1rt,a0),ts(um10,a0),example1d(a0)),distpt1(um10,1rt,a0),ists1(pl"rt"(um10,1rt),rtofn(u),a0,satz101e(rtofn(u),1rt,t17))):is"rt"(pl"rt"(ts(um10,a0),a0),ts(rtofn(u),a0))
+t27:=tris(rat,pl"rt"(v0,a0),pl"rt"(x0,pl"rt"(ts(um10,a0),a0)),w0,asspl1"rt"(x0,ts(um10,a0),a0),ispl2"rt"(pl"rt"(ts(um10,a0),a0),ts(rtofn(u),a0),x0,t26)):is"rt"(pl"rt"(v0,a0),w0)
+[p:prop1(v0,w0)]
+t28:=symis(rat,a0,mn(w0,v0,t1(v0,w0,p)),satz101g(w0,v0,a0,t1(v0,w0,p),t27)):prop2(v0,w0,p)
+o@t29:=andi(prop1(v0,w0),[t:prop1(v0,w0)]prop2(v0,w0,t),t25,[t:prop1(v0,w0)]t28(t)):prop3(v0,w0)
+t30:=somei(rat,[y:rat]prop3(v0,y),w0,t29):some"rt"([y:rat]prop3(v0,y))
+t31:=somei(rat,[x:rat]some"rt"([y:rat]prop3(x,y)),v0,t30):prop4
+m@t32:=orapp(more"n"(u,1),is"n"(u,1),prop4,satz24(u),[t:more"n"(u,1)]t31(t),[t:is"n"(u,1)]t16(t)):prop4
+uy@t34:=someapp(nat,[x:nat]min"n"([y:nat]urt(pl"rt"(x0,ts(rtofn(y),a0))),x),satz27([y:nat]urt(pl"rt"(x0,ts(rtofn(y),a0))),t7),prop4,[x:nat][t:min"n"([y:nat]urt(pl"rt"(x0,ts(rtofn(y),a0))),x)]t32(x,t)):prop4
+lx@t35:=cutapp1b(prop4,[y:rat][t:urt(ksi,y)]t34(y,t)):prop4
+-3132
+satz132:=cutapp1a(prop4".3132",[x:rat][t:lrt(ksi,x)]t35".3132"(x,t)):some"rt"([x:rat]some"rt"([y:rat]and(and(lrt(ksi,x),urt(ksi,y)),[t:and(lrt(ksi,x),urt(ksi,y))]is"rt"(mn(y,x,cutapp2b(x,ande1(lrt(ksi,x),urt(ksi,y),t),y,ande2(lrt(ksi,x),urt(ksi,y),t))),a0))))
+ksi@[p:'prop'][a0:rat][p1:[x:rat][t:lrt(ksi,x)][y:rat][u:urt(ksi,y)][v:is"rt"(mn(y,x,cutapp2b(x,t,y,u)),a0)]p]
++*3132
+p1@[x0:rat][s:some"rt"([y:rat]prop3(a0,x0,y))][y0:rat][p3:prop3(a0,x0,y0)]
+t36:=ande1(prop1(a0,x0,y0),[t:prop1(a0,x0,y0)]prop2(a0,x0,y0,t),p3):prop1(a0,x0,y0)
+t37:=ande2"l.r"(prop1(a0,x0,y0),[t:prop1(a0,x0,y0)]prop2(a0,x0,y0,t),p3):prop2(a0,x0,y0,t36)
+t38:=ande1(lrt(ksi,x0),urt(ksi,y0),t36):lrt(ksi,x0)
+t39:=ande2(lrt(ksi,x0),urt(ksi,y0),t36):urt(ksi,y0)
+t40:=satz101g(y0,x0,mn(y0,x0,cutapp2b(x0,t38,y0,t39)),t1(a0,x0,y0,t36),satz101c(y0,x0,cutapp2b(x0,t38,y0,t39))):is"rt"(mn(y0,x0,cutapp2b(x0,t38,y0,t39)),mn(y0,x0,t1(a0,x0,y0,t36)))
+t41:=tris(rat,mn(y0,x0,cutapp2b(x0,t38,y0,t39)),mn(y0,x0,t1(a0,x0,y0,t36)),a0,t40,t37):is"rt"(mn(y0,x0,cutapp2b(x0,t38,y0,t39)),a0)
+t42:=<t41><t39><y0><t38><x0>p1:p
+s@t43:=someapp(rat,[y:rat]prop3(a0,x0,y),s,p,[y:rat][t:prop3(a0,x0,y)]t42(y,t)):p
+-3132
+p1@satz132app:=someapp(rat,[x:rat]some"rt"([y:rat]prop3".3132"(a0,x,y)),satz132(a0),p,[x:rat][t:some"rt"([y:rat]prop3".3132"(a0,x,y))]t43".3132"(x,t)):p
++3133
+eta@[y0:rat][ly:lrt(eta,y0)][x0:rat][lx:lrt(ksi,x0)][u0:rat][uu:urt(ksi,u0)][i:is"rt"(mn(u0,x0,cutapp2b(x0,lx,u0,uu)),y0)]
+t1:=tris(rat,u0,pl"rt"(x0,mn(u0,x0,cutapp2b(x0,lx,u0,uu))),pl"rt"(x0,y0),satz101d(u0,x0,cutapp2b(x0,lx,u0,uu)),ispl2"rt"(mn(u0,x0,cutapp2b(x0,lx,u0,uu)),y0,x0,i)):is"rt"(u0,pl"rt"(x0,y0))
+t2:=lrtpl(ksi,eta,u0,x0,lx,y0,ly,t1):lrt(pl(ksi,eta),u0)
+t3:=andi(lrt(pl(ksi,eta),u0),urt(ksi,u0),t2,uu):and(lrt(pl(ksi,eta),u0),urt(ksi,u0))
+t4:=somei(rat,[x:rat]and(lrt(pl(ksi,eta),x),urt(ksi,x)),u0,t3):more(pl(ksi,eta),ksi)
+ly@t5:=satz132app(ksi,more(pl(ksi,eta),ksi),y0,[x:rat][t:lrt(ksi,x)][y:rat][u:urt(ksi,y)][v:is"rt"(mn(y,x,cutapp2b(x,t,y,u)),y0)]t4(x,t,y,u,v)):more(pl(ksi,eta),ksi)
+-3133
+eta@satz133:=cutapp1a(eta,more(pl(ksi,eta),ksi),[x:rat][t:lrt(eta,x)]t5".3133"(x,t)):more(pl(ksi,eta),ksi)
+satz133a:=satz121(pl(ksi,eta),ksi,satz133):less(ksi,pl(ksi,eta))
+zeta@[m:more(ksi,eta)]
++3134
+[y0:rat][ly:lrt(ksi,y0)][uy:urt(eta,y0)][x0:rat][lx:lrt(ksi,x0)][l:less"rt"(y0,x0)]
+t1:=satz119a(eta,y0,uy,x0,l):urt(eta,x0)
+t2:=satz83(y0,x0,l):more"rt"(x0,y0)
+[u0:rat][lu:lrt(zeta,u0)][z0:rat][uz:urt(zeta,z0)][i:is"rt"(mn(z0,u0,cutapp2b(zeta,u0,lu,z0,uz)),mn(x0,y0,t2))]
+t3:=tris(rat,z0,pl"rt"(mn(z0,u0,cutapp2b(zeta,u0,lu,z0,uz)),u0),pl"rt"(mn(x0,y0,t2),u0),satz101f(z0,u0,cutapp2b(zeta,u0,lu,z0,uz)),ispl1"rt"(mn(z0,u0,cutapp2b(zeta,u0,lu,z0,uz)),mn(x0,y0,t2),u0,i)):is"rt"(z0,pl"rt"(mn(x0,y0,t2),u0))
+t4:=tr3is(rat,pl"rt"(y0,z0),pl"rt"(y0,pl"rt"(mn(x0,y0,t2),u0)),pl"rt"(pl"rt"(y0,mn(x0,y0,t2)),u0),pl"rt"(x0,u0),ispl2"rt"(z0,pl"rt"(mn(x0,y0,t2),u0),y0,t3),asspl2"rt"(y0,mn(x0,y0,t2),u0),ispl1"rt"(pl"rt"(y0,mn(x0,y0,t2)),x0,u0,satz101c(x0,y0,t2))):is"rt"(pl"rt"(y0,z0),pl"rt"(x0,u0))
+t5:=lrtpl(ksi,zeta,pl"rt"(y0,z0),x0,lx,u0,lu,t4):lrt(pl(ksi,zeta),pl"rt"(y0,z0))
+t6:=urtpl(eta,zeta,pl"rt"(y0,z0),y0,uy,z0,uz,refis(rat,pl"rt"(y0,z0))):urt(pl(eta,zeta),pl"rt"(y0,z0))
+t7:=andi(lrt(pl(ksi,zeta),pl"rt"(y0,z0)),urt(pl(eta,zeta),pl"rt"(y0,z0)),t5,t6):and(lrt(pl(ksi,zeta),pl"rt"(y0,z0)),urt(pl(eta,zeta),pl"rt"(y0,z0)))
+t8:=somei(rat,[x:rat]and(lrt(pl(ksi,zeta),x),urt(pl(eta,zeta),x)),pl"rt"(y0,z0),t7):more(pl(ksi,zeta),pl(eta,zeta))
+l@t9:=satz132app(zeta,more(pl(ksi,zeta),pl(eta,zeta)),mn(x0,y0,t2),[x:rat][t:lrt(zeta,x)][y:rat][u:urt(zeta,y)][v:is"rt"(mn(y,x,cutapp2b(zeta,x,t,y,u)),mn(x0,y0,t2))]t8(x,t,y,u,v)):more(pl(ksi,zeta),pl(eta,zeta))
+uy@t10:=cutapp3(ksi,y0,ly,more(pl(ksi,zeta),pl(eta,zeta)),[x:rat][t:lrt(ksi,x)][u:less"rt"(y0,x)]t9(x,t,u)):more(pl(ksi,zeta),pl(eta,zeta))
+-3134
+satz134:=moreapp(ksi,eta,m,more(pl(ksi,zeta),pl(eta,zeta)),[x:rat][t:lrt(ksi,x)][u:urt(eta,x)]t10".3134"(x,t,u)):more(pl(ksi,zeta),pl(eta,zeta))
+zeta@[m:more(ksi,eta)]
+satz135a:=satz134(m):more(pl(ksi,zeta),pl(eta,zeta))
+zeta@[i:is(ksi,eta)]
+satz135b:=ispl1(ksi,eta,zeta,i):is(pl(ksi,zeta),pl(eta,zeta))
+zeta@[l:less(ksi,eta)]
+satz135c:=satz121(pl(eta,zeta),pl(ksi,zeta),satz134(eta,ksi,zeta,satz122(ksi,eta,l))):less(pl(ksi,zeta),pl(eta,zeta))
+m@satz135d:=ismore12(pl(ksi,zeta),pl(zeta,ksi),pl(eta,zeta),pl(zeta,eta),compl(ksi,zeta),compl(eta,zeta),satz135a):more(pl(zeta,ksi),pl(zeta,eta))
+i@satz135e:=ispl2(ksi,eta,zeta,i):is(pl(zeta,ksi),pl(zeta,eta))
+l@satz135f:=isless12(pl(ksi,zeta),pl(zeta,ksi),pl(eta,zeta),pl(zeta,eta),compl(ksi,zeta),compl(eta,zeta),satz135c):less(pl(zeta,ksi),pl(zeta,eta))
+upsilon@[i:is(ksi,eta)][m:more(zeta,upsilon)]
+satz135g:=ismore2(pl(ksi,upsilon),pl(eta,upsilon),pl(ksi,zeta),ispl1(ksi,eta,upsilon,i),satz135d(zeta,upsilon,ksi,m)):more(pl(ksi,zeta),pl(eta,upsilon))
+satz135h:=ismore12(pl(ksi,zeta),pl(zeta,ksi),pl(eta,upsilon),pl(upsilon,eta),compl(ksi,zeta),compl(eta,upsilon),satz135g):more(pl(zeta,ksi),pl(upsilon,eta))
+i@[l:less(zeta,upsilon)]
+satz135j:=isless2(pl(ksi,upsilon),pl(eta,upsilon),pl(ksi,zeta),ispl1(ksi,eta,upsilon,i),satz135f(zeta,upsilon,ksi,l)):less(pl(ksi,zeta),pl(eta,upsilon))
+satz135k:=isless12(pl(ksi,zeta),pl(zeta,ksi),pl(eta,upsilon),pl(upsilon,eta),compl(ksi,zeta),compl(eta,upsilon),satz135j):less(pl(zeta,ksi),pl(upsilon,eta))
++3136
+zeta@t1:=satz123a(ksi,eta):or3(is(ksi,eta),more(ksi,eta),less(ksi,eta))
+t2:=satz123b(pl(ksi,zeta),pl(eta,zeta)):ec3(is(pl(ksi,zeta),pl(eta,zeta)),more(pl(ksi,zeta),pl(eta,zeta)),less(pl(ksi,zeta),pl(eta,zeta)))
+-3136
+zeta@[m:more(pl(ksi,zeta),pl(eta,zeta))]
+satz136a:=th11"l.ec3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),is(pl(ksi,zeta),pl(eta,zeta)),more(pl(ksi,zeta),pl(eta,zeta)),less(pl(ksi,zeta),pl(eta,zeta)),t1".3136",t2".3136",[u:is(ksi,eta)]satz135b(ksi,eta,zeta,u),[u:more(ksi,eta)]satz135a(ksi,eta,zeta,u),[u:less(ksi,eta)]satz135c(ksi,eta,zeta,u),m):more(ksi,eta)
+zeta@[i:is(pl(ksi,zeta),pl(eta,zeta))]
+satz136b:=th10"l.ec3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),is(pl(ksi,zeta),pl(eta,zeta)),more(pl(ksi,zeta),pl(eta,zeta)),less(pl(ksi,zeta),pl(eta,zeta)),t1".3136",t2".3136",[u:is(ksi,eta)]satz135b(ksi,eta,zeta,u),[u:more(ksi,eta)]satz135a(ksi,eta,zeta,u),[u:less(ksi,eta)]satz135c(ksi,eta,zeta,u),i):is(ksi,eta)
+zeta@[l:less(pl(ksi,zeta),pl(eta,zeta))]
+satz136c:=th12"l.ec3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),is(pl(ksi,zeta),pl(eta,zeta)),more(pl(ksi,zeta),pl(eta,zeta)),less(pl(ksi,zeta),pl(eta,zeta)),t1".3136",t2".3136",[u:is(ksi,eta)]satz135b(ksi,eta,zeta,u),[u:more(ksi,eta)]satz135a(ksi,eta,zeta,u),[u:less(ksi,eta)]satz135c(ksi,eta,zeta,u),l):less(ksi,eta)
+zeta@[m:more(pl(zeta,ksi),pl(zeta,eta))]
+satz136d:=satz136a(ismore12(pl(zeta,ksi),pl(ksi,zeta),pl(zeta,eta),pl(eta,zeta),compl(zeta,ksi),compl(zeta,eta),m)):more(ksi,eta)
+zeta@[i:is(pl(zeta,ksi),pl(zeta,eta))]
+satz136e:=satz136b(tr3is(cut,pl(ksi,zeta),pl(zeta,ksi),pl(zeta,eta),pl(eta,zeta),compl(ksi,zeta),i,compl(zeta,eta))):is(ksi,eta)
+zeta@[l:less(pl(zeta,ksi),pl(zeta,eta))]
+satz136f:=satz136c(isless12(pl(zeta,ksi),pl(ksi,zeta),pl(zeta,eta),pl(eta,zeta),compl(zeta,ksi),compl(zeta,eta),l)):less(ksi,eta)
+upsilon@[m:more(ksi,eta)][n:more(zeta,upsilon)]
++3137
+t1:=satz134(ksi,eta,zeta,m):more(pl(ksi,zeta),pl(eta,zeta))
+t2:=ismore12(pl(zeta,eta),pl(eta,zeta),pl(upsilon,eta),pl(eta,upsilon),compl(zeta,eta),compl(upsilon,eta),satz134(zeta,upsilon,eta,n)):more(pl(eta,zeta),pl(eta,upsilon))
+-3137
+satz137:=trmore(pl(ksi,zeta),pl(eta,zeta),pl(eta,upsilon),t1".3137",t2".3137"):more(pl(ksi,zeta),pl(eta,upsilon))
+upsilon@[l:less(ksi,eta)][k:less(zeta,upsilon)]
+satz137a:=satz121(pl(eta,upsilon),pl(ksi,zeta),satz137(eta,ksi,upsilon,zeta,satz122(ksi,eta,l),satz122(zeta,upsilon,k))):less(pl(ksi,zeta),pl(eta,upsilon))
+upsilon@[m:moreis(ksi,eta)][n:more(zeta,upsilon)]
+satz138a:=orapp(more(ksi,eta),is(ksi,eta),more(pl(ksi,zeta),pl(eta,upsilon)),m,[t:more(ksi,eta)]satz137(t,n),[t:is(ksi,eta)]satz135g(t,n)):more(pl(ksi,zeta),pl(eta,upsilon))
+upsilon@[m:more(ksi,eta)][n:moreis(zeta,upsilon)]
+satz138b:=orapp(more(zeta,upsilon),is(zeta,upsilon),more(pl(ksi,zeta),pl(eta,upsilon)),n,[t:more(zeta,upsilon)]satz137(m,t),[t:is(zeta,upsilon)]satz135h(zeta,upsilon,ksi,eta,t,m)):more(pl(ksi,zeta),pl(eta,upsilon))
+upsilon@[l:lessis(ksi,eta)][k:less(zeta,upsilon)]
+satz138c:=satz121(pl(eta,upsilon),pl(ksi,zeta),satz138a(eta,ksi,upsilon,zeta,satz125(ksi,eta,l),satz122(zeta,upsilon,k))):less(pl(ksi,zeta),pl(eta,upsilon))
+upsilon@[l:less(ksi,eta)][k:lessis(zeta,upsilon)]
+satz138d:=satz121(pl(eta,upsilon),pl(ksi,zeta),satz138b(eta,ksi,upsilon,zeta,satz122(ksi,eta,l),satz125(zeta,upsilon,k))):less(pl(ksi,zeta),pl(eta,upsilon))
+upsilon@[m:moreis(ksi,eta)][n:moreis(zeta,upsilon)]
++3139
+[i:is(ksi,eta)][j:is(zeta,upsilon)]
+t1:=moreisi2(pl(ksi,zeta),pl(eta,upsilon),ispl12(ksi,eta,zeta,upsilon,i,j)):moreis(pl(ksi,zeta),pl(eta,upsilon))
+i@[o:more(zeta,upsilon)]
+t2:=moreisi1(pl(ksi,zeta),pl(eta,upsilon),satz138a(m,o)):moreis(pl(ksi,zeta),pl(eta,upsilon))
+i@t3:=orapp(more(zeta,upsilon),is(zeta,upsilon),moreis(pl(ksi,zeta),pl(eta,upsilon)),n,[t:more(zeta,upsilon)]t2(t),[t:is(zeta,upsilon)]t1(t)):moreis(pl(ksi,zeta),pl(eta,upsilon))
+n@[o:more(ksi,eta)]
+t4:=moreisi1(pl(ksi,zeta),pl(eta,upsilon),satz138b(o,n)):moreis(pl(ksi,zeta),pl(eta,upsilon))
+-3139
+satz139:=orapp(more(ksi,eta),is(ksi,eta),moreis(pl(ksi,zeta),pl(eta,upsilon)),m,[t:more(ksi,eta)]t4".3139"(t),[t:is(ksi,eta)]t3".3139"(t)):moreis(pl(ksi,zeta),pl(eta,upsilon))
+upsilon@[l:lessis(ksi,eta)][k:lessis(zeta,upsilon)]
+satz139a:=satz124(pl(eta,upsilon),pl(ksi,zeta),satz139(eta,ksi,upsilon,zeta,satz125(ksi,eta,l),satz125(zeta,upsilon,k))):lessis(pl(ksi,zeta),pl(eta,upsilon))
+eta@[l:lessis(ksi,eta)]
++3140
+[phi:cut][i:is(pl(eta,phi),ksi)]
+t1:=ismore1(pl(eta,phi),ksi,eta,i,satz133(eta,phi)):more(ksi,eta)
+phi@t2:=th3"l.imp"(is(pl(eta,phi),ksi),more(ksi,eta),satz123d(ksi,eta,l),[t:is(pl(eta,phi),ksi)]t1(t)):nis(pl(eta,phi),ksi)
+-3140
+vorbemerkung140:=th5"l.some"(cut,[a:cut]is(pl(eta,a),ksi),[a:cut]t2".3140"(a)):not(some([a:cut]is(pl(eta,a),ksi)))
+eta@[phi:cut][psi:cut]
++*3140
+psi@[m:more(phi,psi)]
+t3:=satz135d(phi,psi,eta,m):more(pl(eta,phi),pl(eta,psi))
+t4:=ec3e21(is(pl(eta,phi),pl(eta,psi)),more(pl(eta,phi),pl(eta,psi)),less(pl(eta,phi),pl(eta,psi)),satz123b(pl(eta,phi),pl(eta,psi)),t3):nis(pl(eta,phi),pl(eta,psi))
+psi@[l:less(phi,psi)]
+t5:=satz135f(phi,psi,eta,l):less(pl(eta,phi),pl(eta,psi))
+t6:=ec3e31(is(pl(eta,phi),pl(eta,psi)),more(pl(eta,phi),pl(eta,psi)),less(pl(eta,phi),pl(eta,psi)),satz123b(pl(eta,phi),pl(eta,psi)),t5):nis(pl(eta,phi),pl(eta,psi))
+psi@[n:nis(phi,psi)]
+t7:=th1"l.or3"(is(phi,psi),more(phi,psi),less(phi,psi),satz123a(phi,psi),n):or(more(phi,psi),less(phi,psi))
+t8:=orapp(more(phi,psi),less(phi,psi),nis(pl(eta,phi),pl(eta,psi)),t7,[t:more(phi,psi)]t4(t),[t:less(phi,psi)]t6(t)):nis(pl(eta,phi),pl(eta,psi))
+-3140
+psi@[i:is(pl(eta,phi),ksi)][j:is(pl(eta,psi),ksi)]
+satz140b:=th7"l.imp"(is(phi,psi),nis(pl(eta,phi),pl(eta,psi)),weli(is(pl(eta,phi),pl(eta,psi)),tris2(cut,pl(eta,phi),pl(eta,psi),ksi,i,j)),[t:nis(phi,psi)]t8".3140"(t)):is(phi,psi)
+eta@[z0:rat][x0:rat][y0:rat]
+diffprop1:=and(more"rt"(x0,y0),[t:more"rt"(x0,y0)]is"rt"(z0,mn(x0,y0,t))):'prop'
+diffprop2:=and3(lrt(ksi,x0),urt(eta,y0),diffprop1(z0,x0,y0)):'prop'
+z0@diffprop:=some"rt"([x:rat]some"rt"([y:rat]diffprop2(z0,x,y))):'prop'
+eta@diff:=setof(rat,[z:rat]diffprop(z)):set(rat)
+x0@[lx:lrt(ksi,x0)][y0:rat][uy:urt(eta,y0)][m:more"rt"(x0,y0)][i:is"rt"(z0,mn(x0,y0,m))]
++*iii3
+i@[m1:more"rt"(x0,y0)]
+t11a:=tris(rat,z0,mn(x0,y0,m),mn(x0,y0,m1),i,satz101g(x0,y0,mn(x0,y0,m),m1,satz101c(x0,y0,m))):is"rt"(z0,mn(x0,y0,m1))
+i@t12:=andi(more"rt"(x0,y0),[t:more"rt"(x0,y0)]is"rt"(z0,mn(x0,y0,t)),m,[t:more"rt"(x0,y0)]t11a(t)):diffprop1(z0,x0,y0)
+t13:=and3i(lrt(ksi,x0),urt(eta,y0),diffprop1(z0,x0,y0),lx,uy,t12):diffprop2(z0,x0,y0)
+t14:=somei(rat,[y:rat]diffprop2(z0,x0,y),y0,t13):some"rt"([y:rat]diffprop2(z0,x0,y))
+t15:=somei(rat,[x:rat]some"rt"([y:rat]diffprop2(z0,x,y)),x0,t14):diffprop(z0)
+-iii3
+i@diff1:=estii(rat,[z:rat]diffprop(z),z0,t15".iii3"):in(z0,diff)
+z0@[i:in(z0,diff)][p:'prop'][p1:[x:rat][t:lrt(ksi,x)][y:rat][u:urt(eta,y)][v:more"rt"(x,y)][w:is"rt"(z0,mn(x,y,v))]p]
++*iii3
+p1@t16:=estie(rat,[z:rat]diffprop(z),z0,i):diffprop(z0)
+-iii3
+p1@[x0:rat][px:some"rt"([y:rat]diffprop2(z0,x0,y))][y0:rat][py:diffprop2(z0,x0,y0)]
++*iii3
+py@t17:=and3e1(lrt(ksi,x0),urt(eta,y0),diffprop1(z0,x0,y0),py):lrt(ksi,x0)
+t18:=and3e2(lrt(ksi,x0),urt(eta,y0),diffprop1(z0,x0,y0),py):urt(eta,y0)
+t19:=and3e3(lrt(ksi,x0),urt(eta,y0),diffprop1(z0,x0,y0),py):diffprop1(z0,x0,y0)
+t20:=ande1(more"rt"(x0,y0),[t:more"rt"(x0,y0)]is"rt"(z0,mn(x0,y0,t)),t19):more"rt"(x0,y0)
+t21:=ande2"l.r"(more"rt"(x0,y0),[t:more"rt"(x0,y0)]is"rt"(z0,mn(x0,y0,t)),t19):is"rt"(z0,mn(x0,y0,t20))
+t22:=<t21><t20><t18><y0><t17><x0>p1:p
+px@t23:=someapp(rat,[y:rat]diffprop2(z0,x0,y),px,p,[y:rat][t:diffprop2(z0,x0,y)]t22(y,t)):p
+-iii3
+p1@diffapp:=someapp(rat,[x:rat]some"rt"([y:rat]diffprop2(z0,x,y)),t16".iii3",p,[x:rat][t:some"rt"([y:rat]diffprop2(z0,x,y))]t23".iii3"(x,t)):p
+eta@[m:more(ksi,eta)]
++*3140
+m"rp"@[y0:rat][ly:lrt(ksi,y0)][uy:urt(eta,y0)][x0:rat][lx:lrt(ksi,x0)][l:less"rt"(y0,x0)]
+t9:=t2"rp.3134"(eta,m,y0,ly,uy,x0,lx,l):more"rt"(x0,y0)
+t10:=diff1(mn(x0,y0,t9),x0,lx,y0,uy,t9,refis(rat,mn(x0,y0,t9))):in(mn(x0,y0,t9),diff)
+m"rp"@[x1:rat][ux:urt(ksi,x1)][z0:rat][i:in(z0,diff)][x0:rat][lx:lrt(ksi,x0)][y0:rat][uy:urt(eta,y0)][n:more"rt"(x0,y0)][j:is"rt"(z0,mn(x0,y0,n))]
+t11:=isless12"rt"(mn(x0,y0,n),z0,pl"rt"(mn(x0,y0,n),y0),x0,symis(rat,z0,mn(x0,y0,n),j),satz101e(x0,y0,n),satz94a(mn(x0,y0,n),y0)):less"rt"(z0,x0)
+t12:=trless"rt"(z0,x0,x1,t11,cutapp2a(ksi,x0,lx,x1,ux)):less"rt"(z0,x1)
+t13:=ec3e31(is"rt"(z0,x1),more"rt"(z0,x1),less"rt"(z0,x1),satz81b(z0,x1),t12):nis"rt"(z0,x1)
+i@t14:=diffapp(z0,i,nis"rt"(z0,x1),[x:rat][t:lrt(ksi,x)][y:rat][u:urt(eta,y)][v:more"rt"(x,y)][w:is"rt"(z0,mn(x,y,v))]t13(x,t,y,u,v,w)):nis"rt"(z0,x1)
+ux@t15:=th3"l.imp"(in(x1,diff),nis"rt"(x1,x1),weli(is"rt"(x1,x1),refis(rat,x1)),[t:in(x1,diff)]t14(x1,t)):not(in(x1,diff))
+m"rp"@[z0:rat][i:in(z0,diff)][u0:rat][l:less"rt"(u0,z0)][x0:rat][lx:lrt(ksi,x0)][y0:rat][uy:urt(eta,y0)][n:more"rt"(x0,y0)][j:is"rt"(z0,mn(x0,y0,n))]
+t16:=tris(rat,pl"rt"(z0,y0),pl"rt"(mn(x0,y0,n),y0),x0,ispl1"rt"(z0,mn(x0,y0,n),y0,j),satz101e(x0,y0,n)):is"rt"(pl"rt"(z0,y0),x0)
+x2:=pl"rt"(u0,y0):rat
+t17:=isless2"rt"(pl"rt"(z0,y0),x0,x2,t16,satz96c(u0,z0,y0,l)):less"rt"(x2,x0)
+t18:=satz120(ksi,x0,lx,x2,t17):lrt(ksi,x2)
+t19:=ismore1"rt"(pl"rt"(y0,u0),pl"rt"(u0,y0),y0,compl"rt"(y0,u0),satz94(y0,u0)):more"rt"(x2,y0)
+t20:=satz101g(x2,y0,u0,t19,compl"rt"(y0,u0)):is"rt"(u0,mn(x2,y0,t19))
+t21:=diff1(u0,x2,t18,y0,uy,t19,t20):in(u0,diff)
+l@t22:=diffapp(z0,i,in(u0,diff),[x:rat][t:lrt(ksi,x)][y:rat][u:urt(eta,y)][v:more"rt"(x,y)][w:is"rt"(z0,mn(x,y,v))]t21(x,t,y,u,v,w)):in(u0,diff)
+m"rp"@[z0:rat][i:in(z0,diff)][x0:rat][lx:lrt(ksi,x0)][y0:rat][uy:urt(eta,y0)][n:more"rt"(x0,y0)][j:is"rt"(z0,mn(x0,y0,n))][x3:rat][lx3:lrt(ksi,x3)][l:less"rt"(x0,x3)]
+t23:=satz83(x0,x3,l):more"rt"(x3,x0)
+t24:=trmore"rt"(x3,x0,y0,t23,n):more"rt"(x3,y0)
+t25:=ismore12"rt"(x3,pl"rt"(mn(x3,y0,t24),y0),x0,pl"rt"(mn(x0,y0,n),y0),satz101f(x3,y0,t24),satz101f(x0,y0,n),t23):more"rt"(pl"rt"(mn(x3,y0,t24),y0),pl"rt"(mn(x0,y0,n),y0))
+t26:=satz97a(mn(x3,y0,t24),mn(x0,y0,n),y0,t25):more"rt"(mn(x3,y0,t24),mn(x0,y0,n))
+t27:=ismore2"rt"(mn(x0,y0,n),z0,mn(x3,y0,t24),symis(rat,z0,mn(x0,y0,n),j),t26):more"rt"(mn(x3,y0,t24),z0)
+t28:=diff1(mn(x3,y0,t24),x3,lx3,y0,uy,t24,refis(rat,mn(x3,y0,t24))):in(mn(x3,y0,t24),diff)
+t29:=andi(in(mn(x3,y0,t24),diff),more"rt"(mn(x3,y0,t24),z0),t28,t27):and(in(mn(x3,y0,t24),diff),more"rt"(mn(x3,y0,t24),z0))
+t30:=somei(rat,[x:rat]and(in(x,diff),more"rt"(x,z0)),mn(x3,y0,t24),t29):some"rt"([x:rat]and(in(x,diff),more"rt"(x,z0)))
+j@t31:=cutapp3(ksi,x0,lx,some"rt"([x:rat]and(in(x,diff),more"rt"(x,z0))),[y:rat][t:lrt(ksi,y)][u:less"rt"(x0,y)]t30(y,t,u)):some"rt"([x:rat]and(in(x,diff),more"rt"(x,z0)))
+i@t32:=diffapp(z0,i,some"rt"([x:rat]and(in(x,diff),more"rt"(x,z0))),[x:rat][t:lrt(ksi,x)][y:rat][u:urt(eta,y)][v:more"rt"(x,y)][w:is"rt"(z0,mn(x,y,v))]t31(x,t,y,u,v,w)):some"rt"([x:rat]and(in(x,diff),more"rt"(x,z0)))
+m"rp"@[y0:rat][ly:lrt(ksi,y0)][uy:urt(eta,y0)][x0:rat][lx:lrt(ksi,x0)][l:less"rt"(y0,x0)][x1:rat][ux1:urt(ksi,x1)]
+t33:=cut2(diff,mn(x0,y0,t9(y0,ly,uy,x0,lx,l)),t10(y0,ly,uy,x0,lx,l),x1,t15(x1,ux1),[x:rat][t:in(x,diff)][y:rat][u:less"rt"(y,x)]t22(x,t,y,u),[x:rat][t:in(x,diff)]t32(x,t)):cutprop(diff)
+l@t34:=cutapp1b(ksi,cutprop(diff),[x:rat][t:urt(ksi,x)]t33(x,t)):cutprop(diff)
+uy@t35:=cutapp3(ksi,y0,ly,cutprop(diff),[x:rat][t:lrt(ksi,x)][u:less"rt"(y0,x)]t34(x,t,u)):cutprop(diff)
+-3140
+m@satz140h:=moreapp(ksi,eta,m,cutprop(diff),[x:rat][u:lrt(ksi,x)][v:urt(eta,x)]t35".3140"(x,u,v)):cutprop(diff)
++*3140
+m"rp"@chi:=cutof(diff,satz140h):cut
+[z0:rat][lz:lrt(pl(eta,chi),z0)][y1:rat][ly:lrt(eta,y1)][u0:rat][lu:lrt(chi,u0)][i:is"rt"(z0,pl"rt"(y1,u0))][x0:rat][lx:lrt(ksi,x0)][y0:rat][uy:urt(eta,y0)][o:more"rt"(x0,y0)][j:is"rt"(u0,mn(x0,y0,o))]
+t36:=cutapp2b(eta,y1,ly,y0,uy):more"rt"(y0,y1)
+t37:=tr3is(rat,pl"rt"(pl"rt"(mn(x0,y0,o),y1),mn(y0,y1,t36)),pl"rt"(mn(x0,y0,o),pl"rt"(y1,mn(y0,y1,t36))),pl"rt"(mn(x0,y0,o),y0),x0,asspl1"rt"(mn(x0,y0,o),y1,mn(y0,y1,t36)),ispl2"rt"(pl"rt"(y1,mn(y0,y1,t36)),y0,mn(x0,y0,o),satz101c(y0,y1,t36)),satz101e(x0,y0,o)):is"rt"(pl"rt"(pl"rt"(mn(x0,y0,o),y1),mn(y0,y1,t36)),x0)
+t38:=isless2"rt"(pl"rt"(pl"rt"(mn(x0,y0,o),y1),mn(y0,y1,t36)),x0,pl"rt"(mn(x0,y0,o),y1),t37,satz94a(pl"rt"(mn(x0,y0,o),y1),mn(y0,y1,t36))):less"rt"(pl"rt"(mn(x0,y0,o),y1),x0)
+t39:=tr3is(rat,z0,pl"rt"(y1,u0),pl"rt"(u0,y1),pl"rt"(mn(x0,y0,o),y1),i,compl"rt"(y1,u0),ispl1"rt"(u0,mn(x0,y0,o),y1,j)):is"rt"(z0,pl"rt"(mn(x0,y0,o),y1))
+t40:=isless1"rt"(pl"rt"(mn(x0,y0,o),y1),z0,x0,symis(rat,z0,pl"rt"(mn(x0,y0,o),y1),t39),t38):less"rt"(z0,x0)
+t41:=satz120(ksi,x0,lx,z0,t40):lrt(ksi,z0)
+i@t42:=diffapp(u0,ini(diff,satz140h,u0,lu),lrt(ksi,z0),[x:rat][t:lrt(ksi,x)][y:rat][u:urt(eta,y)][v:more"rt"(x,y)][w:is"rt"(u0,mn(x,y,v))]t41(x,t,y,u,v,w)):lrt(ksi,z0)
+lz@a:=plapp(eta,chi,z0,lz,lrt(ksi,z0),[x:rat][t:lrt(eta,x)][y:rat][u:lrt(chi,y)][v:is"rt"(z0,pl"rt"(x,y))]t42(x,t,y,u,v)):lrt(ksi,z0)
+m"rp"@[y0:rat][ly:lrt(ksi,y0)][uy:urt(eta,y0)][x0:rat][lx:lrt(ksi,x0)][l:less"rt"(y0,x0)]
+t43:=satz83(y0,x0,l):more"rt"(x0,y0)
+[y1:rat][ly1:lrt(eta,y1)][y2:rat][uy2:urt(eta,y2)]
+t44:=cutapp2b(eta,y1,ly1,y2,uy2):more"rt"(y2,y1)
+[i:is"rt"(mn(y2,y1,t44),mn(x0,y0,t43))]
+t45:=cutapp2b(eta,y1,ly1,y0,uy):more"rt"(y0,y1)
+t46:=tris(rat,y2,pl"rt"(mn(y2,y1,t44),y1),pl"rt"(mn(x0,y0,t43),y1),satz101f(y2,y1,t44),ispl1"rt"(mn(y2,y1,t44),mn(x0,y0,t43),y1,i)):is"rt"(y2,pl"rt"(mn(x0,y0,t43),y1))
+t47:=tr4is(rat,pl"rt"(y2,mn(y0,y1,t45)),pl"rt"(pl"rt"(mn(x0,y0,t43),y1),mn(y0,y1,t45)),pl"rt"(mn(x0,y0,t43),pl"rt"(y1,mn(y0,y1,t45))),pl"rt"(mn(x0,y0,t43),y0),x0,ispl1"rt"(y2,pl"rt"(mn(x0,y0,t43),y1),mn(y0,y1,t45),t46),asspl1"rt"(mn(x0,y0,t43),y1,mn(y0,y1,t45)),ispl2"rt"(pl"rt"(y1,mn(y0,y1,t45)),y0,mn(x0,y0,t43),satz101c(y0,y1,t45)),satz101e(x0,y0,t43)):is"rt"(pl"rt"(y2,mn(y0,y1,t45)),x0)
+t48:=ismore1"rt"(pl"rt"(y2,mn(y0,y1,t45)),x0,y2,t47,satz94(y2,mn(y0,y1,t45))):more"rt"(x0,y2)
+t49:=satz101g(x0,y2,mn(y0,y1,t45),t48,t47):is"rt"(mn(y0,y1,t45),mn(x0,y2,t48))
+t50:=tris(rat,y0,pl"rt"(mn(y0,y1,t45),y1),pl"rt"(mn(x0,y2,t48),y1),satz101f(y0,y1,t45),ispl1"rt"(mn(y0,y1,t45),mn(x0,y2,t48),y1,t49)):is"rt"(y0,pl"rt"(mn(x0,y2,t48),y1))
+t51:=ine(diff,satz140h,mn(x0,y2,t48),diff1(mn(x0,y2,t48),x0,lx,y2,uy2,t48,refis(rat,mn(x0,y2,t48)))):lrt(chi,mn(x0,y2,t48))
+t52:=lrtpl(eta,chi,y0,y1,ly1,mn(x0,y2,t48),t51,tris(rat,y0,pl"rt"(mn(x0,y2,t48),y1),pl"rt"(y1,mn(x0,y2,t48)),t50,compl"rt"(mn(x0,y2,t48),y1))):lrt(pl(eta,chi),y0)
+l@t53:=satz132app(eta,lrt(pl(eta,chi),y0),mn(x0,y0,t43),[x:rat][t:lrt(eta,x)][y:rat][u:urt(eta,y)][v:is"rt"(mn(y,x,cutapp2b(eta,x,t,y,u)),mn(x0,y0,t43))]t52(x,t,y,u,v)):lrt(pl(eta,chi),y0)
+uy@t54:=cutapp3(ksi,y0,ly,lrt(pl(eta,chi),y0),[x:rat][t:lrt(ksi,x)][u:less"rt"(y0,x)]t53(x,t,u)):lrt(pl(eta,chi),y0)
+ly@[ly0:lrt(eta,y0)][y1:rat][ly1:lrt(ksi,y1)][uy1:urt(eta,y1)]
+t55:=t54(y1,ly1,uy1):lrt(pl(eta,chi),y1)
+t56:=satz120(pl(eta,chi),y1,t55,y0,cutapp2a(eta,y0,ly0,y1,uy1)):lrt(pl(eta,chi),y0)
+ly0@t57:=moreapp(ksi,eta,m,lrt(pl(eta,chi),y0),[x:rat][t:lrt(ksi,x)][u:urt(eta,x)]t56(x,t,u)):lrt(pl(eta,chi),y0)
+ly@b:=th1"l.imp"(lrt(eta,y0),lrt(pl(eta,chi),y0),[t:lrt(eta,y0)]t57(t),[t:urt(eta,y0)]t54(t)):lrt(pl(eta,chi),y0)
+m"rp"@t58:=isi1(pl(eta,chi),ksi,[x:rat][t:lrt(pl(eta,chi),x)]a(x,t),[x:rat][t:lrt(ksi,x)]b(x,t)):is(pl(eta,chi),ksi)
+-3140
+m@satz140a:=somei(cut,[a:cut]is(pl(eta,a),ksi),chi".3140",t58".3140"):some([a:cut]is(pl(eta,a),ksi))
++*3140
+eta@t59:=[c:cut][d:cut][t:is(pl(eta,c),ksi)][u:is(pl(eta,d),ksi)]satz140b(c,d,t,u):amone(cut,[c:cut]is(pl(eta,c),ksi))
+-3140
+m@satz140:=onei(cut,[a:cut]is(pl(eta,a),ksi),t59".3140",satz140a):one([a:cut]is(pl(eta,a),ksi))
+mn:=ind(cut,[a:cut]is(pl(eta,a),ksi),satz140):cut
+satz140c:=oneax(cut,[a:cut]is(pl(eta,a),ksi),satz140):is(pl(eta,mn(ksi,eta,m)),ksi)
+satz140d:=symis(cut,pl(eta,mn(ksi,eta,m)),ksi,satz140c):is(ksi,pl(eta,mn(ksi,eta,m)))
+satz140e:=tris(cut,pl(mn(ksi,eta,m),eta),pl(eta,mn(ksi,eta,m)),ksi,compl(mn(ksi,eta,m),eta),satz140c):is(pl(mn(ksi,eta,m),eta),ksi)
+satz140f:=symis(cut,pl(mn(ksi,eta,m),eta),ksi,satz140e):is(ksi,pl(mn(ksi,eta,m),eta))
+eta@[phi:cut][m:more(ksi,eta)][i:is(pl(eta,phi),ksi)]
+satz140g:=satz140b(phi,mn(ksi,eta,m),i,satz140c(m)):is(phi,mn(ksi,eta,m))
+upsilon@[m:more(ksi,zeta)][n:more(eta,upsilon)][i:is(ksi,eta)][j:is(zeta,upsilon)]
++*3140
+j"rp"@t60:=tr3is(cut,pl(upsilon,mn(ksi,zeta,m)),pl(zeta,mn(ksi,zeta,m)),ksi,eta,ispl1(upsilon,zeta,mn(ksi,zeta,m),symis(cut,zeta,upsilon,j)),satz140c(ksi,zeta,m),i):is(pl(upsilon,mn(ksi,zeta,m)),eta)
+-3140
+j@ismn12:=satz140g(eta,upsilon,mn(ksi,zeta,m),n,t60".3140"):is(mn(ksi,zeta,m),mn(eta,upsilon,n))
+zeta@[m:more(ksi,zeta)][n:more(eta,zeta)][i:is(ksi,eta)]
+ismn1:=ismn12(zeta,m,n,i,refis(cut,zeta)):is(mn(ksi,zeta,m),mn(eta,zeta,n))
+zeta@[m:more(zeta,ksi)][n:more(zeta,eta)][i:is(ksi,eta)]
+ismn2:=ismn12(zeta,zeta,ksi,eta,m,n,refis(cut,zeta),i):is(mn(zeta,ksi,m),mn(zeta,eta,n))
+eta@[z0:rat][x0:rat][y0:rat]
+prodprop1:=and3(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,ts(x0,y0))):'prop'
+z0@prodprop:=some"rt"([x:rat]some"rt"([y:rat]prodprop1(z0,x,y))):'prop'
+eta@prod:=setof(rat,[z:rat]prodprop(z)):set(rat)
+x0@[lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][i:is"rt"(z0,ts(x0,y0))]
++iii4
+t1:=and3i(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,ts(x0,y0)),lx,ly,i):prodprop1(z0,x0,y0)
+t2:=somei(rat,[y:rat]prodprop1(z0,x0,y),y0,t1):some"rt"([y:rat]prodprop1(z0,x0,y))
+t3:=somei(rat,[x:rat]some"rt"([y:rat]prodprop1(z0,x,y)),x0,t2):prodprop(z0)
+-iii4
+prod1:=estii(rat,[z:rat]prodprop(z),z0,t3".iii4"):in(z0,prod)
+z0@[i:in(z0,prod)][p:'prop'][p1:[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,ts(x,y))]p]
++*iii4
+p1@t4:=estie(rat,[z:rat]prodprop(z),z0,i):prodprop(z0)
+-iii4
+p1@[x0:rat][px:some"rt"([y:rat]prodprop1(z0,x0,y))][y0:rat][py:prodprop1(z0,x0,y0)]
++*iii4
+py@t5:=and3e1(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,ts(x0,y0)),py):lrt(ksi,x0)
+t6:=and3e2(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,ts(x0,y0)),py):lrt(eta,y0)
+t7:=and3e3(lrt(ksi,x0),lrt(eta,y0),is"rt"(z0,ts(x0,y0)),py):is"rt"(z0,ts(x0,y0))
+t8:=<t7><t6><y0><t5><x0>p1:p
+px@t9:=someapp(rat,[y:rat]prodprop1(z0,x0,y),px,p,[y:rat][t:prodprop1(z0,x0,y)]t8(y,t)):p
+-iii4
+p1@prodapp:=someapp(rat,[x:rat]some"rt"([y:rat]prodprop1(z0,x,y)),t4".iii4",p,[x:rat][t:some"rt"([y:rat]prodprop1(z0,x,y))]t9".iii4"(x,t)):p
+eta@[x1:rat][ux:urt(ksi,x1)][y1:rat][uy:urt(eta,y1)]
++4141
+[z0:rat][i:in(z0,prod)][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][j:is"rt"(z0,ts(x0,y0))]
+t1:=cutapp2a(ksi,x0,lx,x1,ux):less"rt"(x0,x1)
+t2:=cutapp2a(eta,y0,ly,y1,uy):less"rt"(y0,y1)
+t3:=isless1"rt"(ts(x0,y0),z0,ts(x1,y1),symis(rat,z0,ts(x0,y0),j),satz107a(x0,x1,y0,y1,t1,t2)):less"rt"(z0,ts(x1,y1))
+t4:=ec3e31(is"rt"(z0,ts(x1,y1)),more"rt"(z0,ts(x1,y1)),less"rt"(z0,ts(x1,y1)),satz81b(z0,ts(x1,y1)),t3):nis"rt"(z0,ts(x1,y1))
+i@t5:=prodapp(ksi,eta,z0,i,nis"rt"(z0,ts(x1,y1)),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,ts(x,y))]t4(x,t,y,u,v)):nis"rt"(z0,ts(x1,y1))
+-4141
+satz141a:=th3"l.imp"(in(ts(x1,y1),prod),nis"rt"(ts(x1,y1),ts(x1,y1)),weli(is"rt"(ts(x1,y1),ts(x1,y1)),refis(rat,ts(x1,y1))),[t:in(ts(x1,y1),prod)]t5".4141"(ts(x1,y1),t)):not(in(ts(x1,y1),prod))
+-rp
+@[x0:rat][y0:rat]
++4141
+v0:=ts(ov(1rt,y0),x0):rat
+t6:=tr3is(rat,ts(y0,v0),ts(ts(y0,ov(1rt,y0)),x0),ts(1rt,x0),x0,assts2(y0,ov(1rt,y0),x0),ists1(ts(y0,ov(1rt,y0)),1rt,x0,satz110c(1rt,y0)),example1c(x0)):is(ts(y0,v0),x0)
+-4141
+satz141b:=satz110g(x0,y0,v0".4141",t6".4141"):is(ts(ov(1rt,y0),x0),ov(x0,y0))
+satz141c:=symis(rat,ts(ov(1rt,y0),x0),ov(x0,y0),satz141b):is"rt"(ov(x0,y0),ts(ov(1rt,y0),x0))
++*rp
++*4141
+eta@[u0:rat][i:in(u0,prod)][z0:rat][l:less"rt"(z0,u0)][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][j:is"rt"(u0,ts(x0,y0))]
+t7:=isless2"rt"(u0,ts(x0,y0),z0,j,l):less"rt"(z0,ts(x0,y0))
+t8:=tr3is(rat,ts(ov(1rt,x0),ts(x0,y0)),ts(ts(ov(1rt,x0),x0),y0),ts(1rt,y0),y0,assts2(ov(1rt,x0),x0,y0),ists1(ts(ov(1rt,x0),x0),1rt,y0,satz110e(1rt,x0)),example1c(y0)):is"rt"(ts(ov(1rt,x0),ts(x0,y0)),y0)
+t9:=isless12"rt"(ts(ov(1rt,x0),z0),ov(z0,x0),ts(ov(1rt,x0),ts(x0,y0)),y0,satz141b(z0,x0),t8,satz105f(z0,ts(x0,y0),ov(1rt,x0),t7)):less"rt"(ov(z0,x0),y0)
+t10:=satz120(eta,y0,ly,ov(z0,x0),t9):lrt(eta,ov(z0,x0))
+t11:=prod1(z0,x0,lx,ov(z0,x0),t10,satz110d(z0,x0)):in(z0,prod)
+l@t12:=prodapp(u0,i,in(z0,prod),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(u0,ts(x,y))]t11(x,t,y,u,v)):in(z0,prod)
+eta@[z0:rat][i:in(z0,prod)][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][j:is"rt"(z0,ts(x0,y0))][x1:rat][lx1:lrt(ksi,x1)][l:less"rt"(x0,x1)]
+t13:=prod1(ts(x1,y0),x1,lx1,y0,ly,refis(rat,ts(x1,y0))):in(ts(x1,y0),prod)
+t14:=satz105a(x1,x0,y0,satz83(x0,x1,l)):more"rt"(ts(x1,y0),ts(x0,y0))
+t15:=ismore2"rt"(ts(x0,y0),z0,ts(x1,y0),symis(rat,z0,ts(x0,y0),j),t14):more"rt"(ts(x1,y0),z0)
+t16:=andi(in(ts(x1,y0),prod),more"rt"(ts(x1,y0),z0),t13,t15):and(in(ts(x1,y0),prod),more"rt"(ts(x1,y0),z0))
+t17:=somei(rat,[y:rat]and(in(y,prod),more"rt"(y,z0)),ts(x1,y0),t16):some"rt"([y:rat]and(in(y,prod),more"rt"(y,z0)))
+j@t18:=cutapp3(ksi,x0,lx,some"rt"([y:rat]and(in(y,prod),more"rt"(y,z0))),[x:rat][t:lrt(ksi,x)][u:less"rt"(x0,x)]t17(x,t,u)):some"rt"([y:rat]and(in(y,prod),more"rt"(y,z0)))
+i@t19:=prodapp(z0,i,some"rt"([y:rat]and(in(y,prod),more"rt"(y,z0))),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,ts(x,y))]t18(x,t,y,u,v)):some"rt"([y:rat]and(in(y,prod),more"rt"(y,z0)))
+eta@[x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][x1:rat][ux:urt(ksi,x1)][y1:rat][uy:urt(eta,y1)]
+t20:=cut2(prod,ts(x0,y0),prod1(ts(x0,y0),x0,lx,y0,ly,refis(rat,ts(x0,y0))),ts(x1,y1),satz141a(x1,ux,y1,uy),[x:rat][t:in(x,prod)][y:rat][u:less"rt"(y,x)]t12(x,t,y,u),[x:rat][t:in(x,prod)]t19(x,t)):cutprop(prod)
+ux@t21:=cutapp1b(eta,cutprop(prod),[y:rat][t:urt(eta,y)]t20(y,t)):cutprop(prod)
+ly@t22:=cutapp1b(ksi,cutprop(prod),[x:rat][t:urt(ksi,x)]t21(x,t)):cutprop(prod)
+lx@t23:=cutapp1a(eta,cutprop(prod),[y:rat][t:lrt(eta,y)]t22(y,t)):cutprop(prod)
+-4141
+eta@satz141:=cutapp1a(ksi,cutprop(prod),[x:rat][t:lrt(ksi,x)]t23".4141"(x,t)):cutprop(prod)
+ts:=cutof(prod,satz141):cut
+[z0:rat][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][i:is"rt"(z0,ts"rt"(x0,y0))]
+lrtts:=ine(prod,satz141,z0,prod1(z0,x0,lx,y0,ly,i)):lrt(ts(ksi,eta),z0)
+eta@[z0:rat][x0:rat][ux:urt(ksi,x0)][y0:rat][uy:urt(eta,y0)][i:is"rt"(z0,ts"rt"(x0,y0))]
++*iii4
+i@t10:=isp1(rat,[x:rat]not(in(x,prod)),ts"rt"(x0,y0),z0,satz141a(x0,ux,y0,uy),i):not(in(z0,prod))
+-iii4
+i@urtts:=th3"l.imp"(lrt(ts(ksi,eta),z0),in(z0,prod),t10".iii4",[t:lrt(ts(ksi,eta),z0)]ini(prod,satz141,z0,t)):urt(ts(ksi,eta),z0)
+eta@[z0:rat][lz:lrt(ts(ksi,eta),z0)][p:'prop'][p1:[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,ts"rt"(x,y))]p]
++*iii4
+p1@t11:=ini(prod,satz141,z0,lz):in(z0,prod)
+-iii4
+p1@tsapp:=prodapp(z0,t11".iii4",p,p1):p
+zeta@[i:is(ksi,eta)]
+ists1:=isf(cut,cut,[u:cut]ts(u,zeta),ksi,eta,i):is(ts(ksi,zeta),ts(eta,zeta))
+ists2:=isf(cut,cut,[u:cut]ts(zeta,u),ksi,eta,i):is(ts(zeta,ksi),ts(zeta,eta))
+upsilon@[i:is(ksi,eta)][j:is(zeta,upsilon)]
+ists12:=tris(cut,ts(ksi,zeta),ts(eta,zeta),ts(eta,upsilon),ists1(i),ists2(zeta,upsilon,eta,j)):is(ts(ksi,zeta),ts(eta,upsilon))
++4142
+eta@[z0:rat][lz:lrt(ts(ksi,eta),z0)][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][i:is"rt"(z0,ts"rt"(x0,y0))]
+t1:=tris(rat,z0,ts"rt"(x0,y0),ts"rt"(y0,x0),i,comts(x0,y0)):is"rt"(z0,ts"rt"(y0,x0))
+t2:=lrtts(eta,ksi,z0,y0,ly,x0,lx,t1):lrt(ts(eta,ksi),z0)
+lz@t3:=tsapp(ksi,eta,z0,lz,lrt(ts(eta,ksi),z0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(z0,ts"rt"(x,y))]t2(x,t,y,u,v)):lrt(ts(eta,ksi),z0)
+-4142
+eta@satz142:=isi1(ts(ksi,eta),ts(eta,ksi),[x:rat][t:lrt(ts(ksi,eta),x)]t3".4142"(x,t),[x:rat][t:lrt(ts(eta,ksi),x)]t3".4142"(eta,ksi,x,t)):is(ts(ksi,eta),ts(eta,ksi))
+comts:=satz142:is(ts(ksi,eta),ts(eta,ksi))
++4143
+zeta@[u0:rat][lu:lrt(ts(ts(ksi,eta),zeta),u0)][v0:rat][lv:lrt(ts(ksi,eta),v0)][z0:rat][lz:lrt(zeta,z0)][i:is"rt"(u0,ts"rt"(v0,z0))][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][j:is"rt"(v0,ts"rt"(x0,y0))]
+t1:=tr3is(rat,u0,ts"rt"(v0,z0),ts"rt"(ts"rt"(x0,y0),z0),ts"rt"(x0,ts"rt"(y0,z0)),i,ists1"rt"(v0,ts"rt"(x0,y0),z0,j),assts1(x0,y0,z0)):is"rt"(u0,ts"rt"(x0,ts"rt"(y0,z0)))
+t2:=lrtts(eta,zeta,ts"rt"(y0,z0),y0,ly,z0,lz,refis(rat,ts"rt"(y0,z0))):lrt(ts(eta,zeta),ts"rt"(y0,z0))
+t3:=lrtts(ksi,ts(eta,zeta),u0,x0,lx,ts"rt"(y0,z0),t2,t1):lrt(ts(ksi,ts(eta,zeta)),u0)
+i@t4:=tsapp(ksi,eta,v0,lv,lrt(ts(ksi,ts(eta,zeta)),u0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(v0,ts"rt"(x,y))]t3(x,t,y,u,v)):lrt(ts(ksi,ts(eta,zeta)),u0)
+lu@t5:=tsapp(ts(ksi,eta),zeta,u0,lu,lrt(ts(ksi,ts(eta,zeta)),u0),[x:rat][t:lrt(ts(ksi,eta),x)][y:rat][u:lrt(zeta,y)][v:is"rt"(u0,ts"rt"(x,y))]t4(x,t,y,u,v)):lrt(ts(ksi,ts(eta,zeta)),u0)
+u0@[lu:lrt(ts(ksi,ts(eta,zeta)),u0)][x0:rat][lx:lrt(ksi,x0)][v0:rat][lv:lrt(ts(eta,zeta),v0)][i:is"rt"(u0,ts"rt"(x0,v0))][y0:rat][ly:lrt(eta,y0)][z0:rat][lz:lrt(zeta,z0)][j:is"rt"(v0,ts"rt"(y0,z0))]
+t6:=tr3is(rat,u0,ts"rt"(x0,v0),ts"rt"(x0,ts"rt"(y0,z0)),ts"rt"(ts"rt"(x0,y0),z0),i,ists2"rt"(v0,ts"rt"(y0,z0),x0,j),assts2(x0,y0,z0)):is"rt"(u0,ts"rt"(ts"rt"(x0,y0),z0))
+t7:=lrtts(ksi,eta,ts"rt"(x0,y0),x0,lx,y0,ly,refis(rat,ts"rt"(x0,y0))):lrt(ts(ksi,eta),ts"rt"(x0,y0))
+t8:=lrtts(ts(ksi,eta),zeta,u0,ts"rt"(x0,y0),t7,z0,lz,t6):lrt(ts(ts(ksi,eta),zeta),u0)
+i@t9:=tsapp(eta,zeta,v0,lv,lrt(ts(ts(ksi,eta),zeta),u0),[x:rat][t:lrt(eta,x)][y:rat][u:lrt(zeta,y)][v:is"rt"(v0,ts"rt"(x,y))]t8(x,t,y,u,v)):lrt(ts(ts(ksi,eta),zeta),u0)
+lu@t10:=tsapp(ksi,ts(eta,zeta),u0,lu,lrt(ts(ts(ksi,eta),zeta),u0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(ts(eta,zeta),y)][v:is"rt"(u0,ts"rt"(x,y))]t9(x,t,y,u,v)):lrt(ts(ts(ksi,eta),zeta),u0)
+-4143
+zeta@satz143:=isi1(ts(ts(ksi,eta),zeta),ts(ksi,ts(eta,zeta)),[x:rat][t:lrt(ts(ts(ksi,eta),zeta),x)]t5".4143"(x,t),[x:rat][t:lrt(ts(ksi,ts(eta,zeta)),x)]t10".4143"(x,t)):is(ts(ts(ksi,eta),zeta),ts(ksi,ts(eta,zeta)))
+assts1:=satz143:is(ts(ts(ksi,eta),zeta),ts(ksi,ts(eta,zeta)))
+assts2:=symis(cut,ts(ts(ksi,eta),zeta),ts(ksi,ts(eta,zeta)),satz143):is(ts(ksi,ts(eta,zeta)),ts(ts(ksi,eta),zeta))
++4144
+[u0:rat][lu:lrt(ts(ksi,pl(eta,zeta)),u0)][x0:rat][lx:lrt(ksi,x0)][v0:rat][lv:lrt(pl(eta,zeta),v0)][i:is"rt"(u0,ts"rt"(x0,v0))][y0:rat][ly:lrt(eta,y0)][z0:rat][lz:lrt(zeta,z0)][j:is"rt"(v0,pl"rt"(y0,z0))]
+t1:=tr3is(rat,u0,ts"rt"(x0,v0),ts"rt"(x0,pl"rt"(y0,z0)),pl"rt"(ts"rt"(x0,y0),ts"rt"(x0,z0)),i,ists2"rt"(v0,pl"rt"(y0,z0),x0,j),disttp2(x0,y0,z0)):is"rt"(u0,pl"rt"(ts"rt"(x0,y0),ts"rt"(x0,z0)))
+t2:=lrtts(ksi,eta,ts"rt"(x0,y0),x0,lx,y0,ly,refis(rat,ts"rt"(x0,y0))):lrt(ts(ksi,eta),ts"rt"(x0,y0))
+t3:=lrtts(ksi,zeta,ts"rt"(x0,z0),x0,lx,z0,lz,refis(rat,ts"rt"(x0,z0))):lrt(ts(ksi,zeta),ts"rt"(x0,z0))
+t4:=lrtpl(ts(ksi,eta),ts(ksi,zeta),u0,ts"rt"(x0,y0),t2,ts"rt"(x0,z0),t3,t1):lrt(pl(ts(ksi,eta),ts(ksi,zeta)),u0)
+i@t5:=plapp(eta,zeta,v0,lv,lrt(pl(ts(ksi,eta),ts(ksi,zeta)),u0),[x:rat][t:lrt(eta,x)][y:rat][u:lrt(zeta,y)][v:is"rt"(v0,pl"rt"(x,y))]t4(x,t,y,u,v)):lrt(pl(ts(ksi,eta),ts(ksi,zeta)),u0)
+lu@t6:=tsapp(ksi,pl(eta,zeta),u0,lu,lrt(pl(ts(ksi,eta),ts(ksi,zeta)),u0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(pl(eta,zeta),y)][v:is"rt"(u0,ts"rt"(x,y))]t5(x,t,y,u,v)):lrt(pl(ts(ksi,eta),ts(ksi,zeta)),u0)
+u0@[lu:lrt(pl(ts(ksi,eta),ts(ksi,zeta)),u0)][v0:rat][lv:lrt(ts(ksi,eta),v0)][w0:rat][lw:lrt(ts(ksi,zeta),w0)][i:is"rt"(u0,pl"rt"(v0,w0))][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(eta,y0)][j:is"rt"(v0,ts"rt"(x0,y0))][x1:rat][lx1:lrt(ksi,x1)][z0:rat][lz:lrt(zeta,z0)][k:is"rt"(w0,ts"rt"(x1,z0))]
+t7:=tris(rat,u0,pl"rt"(v0,w0),pl"rt"(ts"rt"(x0,y0),ts"rt"(x1,z0)),i,ispl12"rt"(v0,ts"rt"(x0,y0),w0,ts"rt"(x1,z0),j,k)):is"rt"(u0,pl"rt"(ts"rt"(x0,y0),ts"rt"(x1,z0)))
+x2:=ite(moreis"rt"(x0,x1),rat,x0,x1):rat
+[m:moreis"rt"(x0,x1)]
+t8:=itet(moreis"rt"(x0,x1),rat,x0,x1,m):is"rt"(x2,x0)
+t9:=isp1(rat,[t:rat]lrt(ksi,t),x0,x2,lx,t8):lrt(ksi,x2)
+t10:=lessisi2"rt"(x0,x2,symis(rat,x2,x0,t8)):lessis"rt"(x0,x2)
+t11:=satz88(x1,x0,x2,satz84(x0,x1,m),t10):lessis"rt"(x1,x2)
+k@[n:not(moreis"rt"(x0,x1))]
+t12:=itef(moreis"rt"(x0,x1),rat,x0,x1,n):is"rt"(x2,x1)
+t13:=isp1(rat,[t:rat]lrt(ksi,t),x1,x2,lx1,t12):lrt(ksi,x2)
+t14:=lessisi2"rt"(x1,x2,symis(rat,x2,x1,t12)):lessis"rt"(x1,x2)
+t15:=lessisi1"rt"(x0,x2,satz87b(x0,x1,x2,satz81j(x0,x1,n),t14)):lessis"rt"(x0,x2)
+k@t16:=th1"l.imp"(moreis"rt"(x0,x1),lrt(ksi,x2),[t:moreis"rt"(x0,x1)]t9(t),[t:not(moreis"rt"(x0,x1))]t13(t)):lrt(ksi,x2)
+t17:=th1"l.imp"(moreis"rt"(x0,x1),lessis"rt"(x0,x2),[t:moreis"rt"(x0,x1)]t10(t),[t:not(moreis"rt"(x0,x1))]t15(t)):lessis"rt"(x0,x2)
+t18:=th1"l.imp"(moreis"rt"(x0,x1),lessis"rt"(x1,x2),[t:moreis"rt"(x0,x1)]t11(t),[t:not(moreis"rt"(x0,x1))]t14(t)):lessis"rt"(x1,x2)
+t19:=lrtpl(eta,zeta,pl"rt"(y0,z0),y0,ly,z0,lz,refis(rat,pl"rt"(y0,z0))):lrt(pl(eta,zeta),pl"rt"(y0,z0))
+t20:=lrtts(ksi,pl(eta,zeta),ts"rt"(x2,pl"rt"(y0,z0)),x2,t16,pl"rt"(y0,z0),t19,refis(rat,ts"rt"(x2,pl"rt"(y0,z0)))):lrt(ts(ksi,pl(eta,zeta)),ts"rt"(x2,pl"rt"(y0,z0)))
+t21:=satz109a(x0,x2,y0,y0,t17,lessisi2"rt"(y0,y0,refis(rat,y0))):lessis"rt"(ts"rt"(x0,y0),ts"rt"(x2,y0))
+t22:=satz109a(x1,x2,z0,z0,t18,lessisi2"rt"(z0,z0,refis(rat,z0))):lessis"rt"(ts"rt"(x1,z0),ts"rt"(x2,z0))
+t23:=islessis12"rt"(pl"rt"(ts"rt"(x0,y0),ts"rt"(x1,z0)),u0,pl"rt"(ts"rt"(x2,y0),ts"rt"(x2,z0)),ts"rt"(x2,pl"rt"(y0,z0)),symis(rat,u0,pl"rt"(ts"rt"(x0,y0),ts"rt"(x1,z0)),t7),distpt2(x2,y0,z0),satz100a(ts"rt"(x0,y0),ts"rt"(x2,y0),ts"rt"(x1,z0),ts"rt"(x2,z0),t21,t22)):lessis"rt"(u0,ts"rt"(x2,pl"rt"(y0,z0)))
+t24:=orapp(less"rt"(u0,ts"rt"(x2,pl"rt"(y0,z0))),is"rt"(u0,ts"rt"(x2,pl"rt"(y0,z0))),lrt(ts(ksi,pl(eta,zeta)),u0),t23,[t:less"rt"(u0,ts"rt"(x2,pl"rt"(y0,z0)))]satz120(ts(ksi,pl(eta,zeta)),ts"rt"(x2,pl"rt"(y0,z0)),t20,u0,t),[t:is"rt"(u0,ts"rt"(x2,pl"rt"(y0,z0)))]isp1(rat,[u:rat]lrt(ts(ksi,pl(eta,zeta)),u),ts"rt"(x2,pl"rt"(y0,z0)),u0,t20,t)):lrt(ts(ksi,pl(eta,zeta)),u0)
+j@t25:=tsapp(ksi,zeta,w0,lw,lrt(ts(ksi,pl(eta,zeta)),u0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(zeta,y)][v:is"rt"(w0,ts"rt"(x,y))]t24(x,t,y,u,v)):lrt(ts(ksi,pl(eta,zeta)),u0)
+i@t26:=tsapp(ksi,eta,v0,lv,lrt(ts(ksi,pl(eta,zeta)),u0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(eta,y)][v:is"rt"(v0,ts"rt"(x,y))]t25(x,t,y,u,v)):lrt(ts(ksi,pl(eta,zeta)),u0)
+lu@t27:=plapp(ts(ksi,eta),ts(ksi,zeta),u0,lu,lrt(ts(ksi,pl(eta,zeta)),u0),[x:rat][t:lrt(ts(ksi,eta),x)][y:rat][u:lrt(ts(ksi,zeta),y)][v:is"rt"(u0,pl"rt"(x,y))]t26(x,t,y,u,v)):lrt(ts(ksi,pl(eta,zeta)),u0)
+-4144
+satz144:=isi1(ts(ksi,pl(eta,zeta)),pl(ts(ksi,eta),ts(ksi,zeta)),[x:rat][t:lrt(ts(ksi,pl(eta,zeta)),x)]t6".4144"(x,t),[x:rat][t:lrt(pl(ts(ksi,eta),ts(ksi,zeta)),x)]t27".4144"(x,t)):is(ts(ksi,pl(eta,zeta)),pl(ts(ksi,eta),ts(ksi,zeta)))
+disttp1:=tr3is(cut,ts(pl(ksi,eta),zeta),ts(zeta,pl(ksi,eta)),pl(ts(zeta,ksi),ts(zeta,eta)),pl(ts(ksi,zeta),ts(eta,zeta)),comts(pl(ksi,eta),zeta),satz144(zeta,ksi,eta),ispl12(ts(zeta,ksi),ts(ksi,zeta),ts(zeta,eta),ts(eta,zeta),comts(zeta,ksi),comts(zeta,eta))):is(ts(pl(ksi,eta),zeta),pl(ts(ksi,zeta),ts(eta,zeta)))
+disttp2:=satz144:is(ts(ksi,pl(eta,zeta)),pl(ts(ksi,eta),ts(ksi,zeta)))
+distpt1:=symis(cut,ts(pl(ksi,eta),zeta),pl(ts(ksi,zeta),ts(eta,zeta)),disttp1):is(pl(ts(ksi,zeta),ts(eta,zeta)),ts(pl(ksi,eta),zeta))
+distpt2:=symis(cut,ts(ksi,pl(eta,zeta)),pl(ts(ksi,eta),ts(ksi,zeta)),disttp2):is(pl(ts(ksi,eta),ts(ksi,zeta)),ts(ksi,pl(eta,zeta)))
+[m:more(ksi,eta)]
++4145
+phi:=mn(ksi,eta,m):cut
+t1:=satz140d(ksi,eta,m):is(ksi,pl(eta,phi))
+t2:=tris(cut,ts(ksi,zeta),ts(pl(eta,phi),zeta),pl(ts(eta,zeta),ts(phi,zeta)),ists1(ksi,pl(eta,phi),zeta,t1),disttp1(eta,phi,zeta)):is(ts(ksi,zeta),pl(ts(eta,zeta),ts(phi,zeta)))
+-4145
+satz145a:=ismore1(pl(ts(eta,zeta),ts(phi".4145",zeta)),ts(ksi,zeta),ts(eta,zeta),symis(cut,ts(ksi,zeta),pl(ts(eta,zeta),ts(phi".4145",zeta)),t2".4145"),satz133(ts(eta,zeta),ts(phi".4145",zeta))):more(ts(ksi,zeta),ts(eta,zeta))
+zeta@[i:is(ksi,eta)]
+satz145b:=ists1(ksi,eta,zeta,i):is(ts(ksi,zeta),ts(eta,zeta))
+zeta@[l:less(ksi,eta)]
+satz145c:=satz121(ts(eta,zeta),ts(ksi,zeta),satz145a(eta,ksi,zeta,satz122(ksi,eta,l))):less(ts(ksi,zeta),ts(eta,zeta))
+m@satz145d:=ismore12(ts(ksi,zeta),ts(zeta,ksi),ts(eta,zeta),ts(zeta,eta),comts(ksi,zeta),comts(eta,zeta),satz145a):more(ts(zeta,ksi),ts(zeta,eta))
+i@satz145e:=ists2(ksi,eta,zeta,i):is(ts(zeta,ksi),ts(zeta,eta))
+l@satz145f:=isless12(ts(ksi,zeta),ts(zeta,ksi),ts(eta,zeta),ts(zeta,eta),comts(ksi,zeta),comts(eta,zeta),satz145c):less(ts(zeta,ksi),ts(zeta,eta))
+upsilon@[i:is(ksi,eta)][m:more(zeta,upsilon)]
+satz145g:=ismore2(ts(ksi,upsilon),ts(eta,upsilon),ts(ksi,zeta),ists1(ksi,eta,upsilon,i),satz145d(zeta,upsilon,ksi,m)):more(ts(ksi,zeta),ts(eta,upsilon))
+satz145h:=ismore12(ts(ksi,zeta),ts(zeta,ksi),ts(eta,upsilon),ts(upsilon,eta),comts(ksi,zeta),comts(eta,upsilon),satz145g):more(ts(zeta,ksi),ts(upsilon,eta))
+i@[l:less(zeta,upsilon)]
+satz145j:=isless2(ts(ksi,upsilon),ts(eta,upsilon),ts(ksi,zeta),ists1(ksi,eta,upsilon,i),satz145f(zeta,upsilon,ksi,l)):less(ts(ksi,zeta),ts(eta,upsilon))
+satz145k:=isless12(ts(ksi,zeta),ts(zeta,ksi),ts(eta,upsilon),ts(upsilon,eta),comts(ksi,zeta),comts(eta,upsilon),satz145j):less(ts(zeta,ksi),ts(upsilon,eta))
++4146
+zeta@t1:=satz123a(ksi,eta):or3(is(ksi,eta),more(ksi,eta),less(ksi,eta))
+t2:=satz123b(ts(ksi,zeta),ts(eta,zeta)):ec3(is(ts(ksi,zeta),ts(eta,zeta)),more(ts(ksi,zeta),ts(eta,zeta)),less(ts(ksi,zeta),ts(eta,zeta)))
+-4146
+zeta@[m:more(ts(ksi,zeta),ts(eta,zeta))]
+satz146a:=th11"l.ec3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),is(ts(ksi,zeta),ts(eta,zeta)),more(ts(ksi,zeta),ts(eta,zeta)),less(ts(ksi,zeta),ts(eta,zeta)),t1".4146",t2".4146",[u:is(ksi,eta)]satz145b(ksi,eta,zeta,u),[u:more(ksi,eta)]satz145a(ksi,eta,zeta,u),[u:less(ksi,eta)]satz145c(ksi,eta,zeta,u),m):more(ksi,eta)
+zeta@[i:is(ts(ksi,zeta),ts(eta,zeta))]
+satz146b:=th10"l.ec3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),is(ts(ksi,zeta),ts(eta,zeta)),more(ts(ksi,zeta),ts(eta,zeta)),less(ts(ksi,zeta),ts(eta,zeta)),t1".4146",t2".4146",[u:is(ksi,eta)]satz145b(ksi,eta,zeta,u),[u:more(ksi,eta)]satz145a(ksi,eta,zeta,u),[u:less(ksi,eta)]satz145c(ksi,eta,zeta,u),i):is(ksi,eta)
+zeta@[l:less(ts(ksi,zeta),ts(eta,zeta))]
+satz146c:=th12"l.ec3"(is(ksi,eta),more(ksi,eta),less(ksi,eta),is(ts(ksi,zeta),ts(eta,zeta)),more(ts(ksi,zeta),ts(eta,zeta)),less(ts(ksi,zeta),ts(eta,zeta)),t1".4146",t2".4146",[u:is(ksi,eta)]satz145b(ksi,eta,zeta,u),[u:more(ksi,eta)]satz145a(ksi,eta,zeta,u),[u:less(ksi,eta)]satz145c(ksi,eta,zeta,u),l):less(ksi,eta)
+zeta@[m:more(ts(zeta,ksi),ts(zeta,eta))]
+satz146d:=satz146a(ismore12(ts(zeta,ksi),ts(ksi,zeta),ts(zeta,eta),ts(eta,zeta),comts(zeta,ksi),comts(zeta,eta),m)):more(ksi,eta)
+zeta@[i:is(ts(zeta,ksi),ts(zeta,eta))]
+satz146e:=satz146b(tr3is(cut,ts(ksi,zeta),ts(zeta,ksi),ts(zeta,eta),ts(eta,zeta),comts(ksi,zeta),i,comts(zeta,eta))):is(ksi,eta)
+zeta@[l:less(ts(zeta,ksi),ts(zeta,eta))]
+satz146f:=satz146c(isless12(ts(zeta,ksi),ts(ksi,zeta),ts(zeta,eta),ts(eta,zeta),comts(zeta,ksi),comts(zeta,eta),l)):less(ksi,eta)
+upsilon@[m:more(ksi,eta)][n:more(zeta,upsilon)]
++4147
+t1:=satz145a(ksi,eta,zeta,m):more(ts(ksi,zeta),ts(eta,zeta))
+t2:=ismore12(ts(zeta,eta),ts(eta,zeta),ts(upsilon,eta),ts(eta,upsilon),comts(zeta,eta),comts(upsilon,eta),satz145a(zeta,upsilon,eta,n)):more(ts(eta,zeta),ts(eta,upsilon))
+-4147
+satz147:=trmore(ts(ksi,zeta),ts(eta,zeta),ts(eta,upsilon),t1".4147",t2".4147"):more(ts(ksi,zeta),ts(eta,upsilon))
+upsilon@[l:less(ksi,eta)][k:less(zeta,upsilon)]
+satz147a:=satz121(ts(eta,upsilon),ts(ksi,zeta),satz147(eta,ksi,upsilon,zeta,satz122(ksi,eta,l),satz122(zeta,upsilon,k))):less(ts(ksi,zeta),ts(eta,upsilon))
+upsilon@[m:moreis(ksi,eta)][n:more(zeta,upsilon)]
+satz148a:=orapp(more(ksi,eta),is(ksi,eta),more(ts(ksi,zeta),ts(eta,upsilon)),m,[t:more(ksi,eta)]satz147(t,n),[t:is(ksi,eta)]satz145g(t,n)):more(ts(ksi,zeta),ts(eta,upsilon))
+upsilon@[m:more(ksi,eta)][n:moreis(zeta,upsilon)]
+satz148b:=orapp(more(zeta,upsilon),is(zeta,upsilon),more(ts(ksi,zeta),ts(eta,upsilon)),n,[t:more(zeta,upsilon)]satz147(m,t),[t:is(zeta,upsilon)]satz145h(zeta,upsilon,ksi,eta,t,m)):more(ts(ksi,zeta),ts(eta,upsilon))
+upsilon@[l:lessis(ksi,eta)][k:less(zeta,upsilon)]
+satz148c:=satz121(ts(eta,upsilon),ts(ksi,zeta),satz148a(eta,ksi,upsilon,zeta,satz125(ksi,eta,l),satz122(zeta,upsilon,k))):less(ts(ksi,zeta),ts(eta,upsilon))
+upsilon@[l:less(ksi,eta)][k:lessis(zeta,upsilon)]
+satz148d:=satz121(ts(eta,upsilon),ts(ksi,zeta),satz148b(eta,ksi,upsilon,zeta,satz122(ksi,eta,l),satz125(zeta,upsilon,k))):less(ts(ksi,zeta),ts(eta,upsilon))
+upsilon@[m:moreis(ksi,eta)][n:moreis(zeta,upsilon)]
++4149
+[i:is(ksi,eta)][j:is(zeta,upsilon)]
+t1:=moreisi2(ts(ksi,zeta),ts(eta,upsilon),ists12(ksi,eta,zeta,upsilon,i,j)):moreis(ts(ksi,zeta),ts(eta,upsilon))
+i@[o:more(zeta,upsilon)]
+t2:=moreisi1(ts(ksi,zeta),ts(eta,upsilon),satz148a(m,o)):moreis(ts(ksi,zeta),ts(eta,upsilon))
+i@t3:=orapp(more(zeta,upsilon),is(zeta,upsilon),moreis(ts(ksi,zeta),ts(eta,upsilon)),n,[t:more(zeta,upsilon)]t2(t),[t:is(zeta,upsilon)]t1(t)):moreis(ts(ksi,zeta),ts(eta,upsilon))
+n@[o:more(ksi,eta)]
+t4:=moreisi1(ts(ksi,zeta),ts(eta,upsilon),satz148b(o,n)):moreis(ts(ksi,zeta),ts(eta,upsilon))
+-4149
+satz149:=orapp(more(ksi,eta),is(ksi,eta),moreis(ts(ksi,zeta),ts(eta,upsilon)),m,[t:more(ksi,eta)]t4".4149"(t),[t:is(ksi,eta)]t3".4149"(t)):moreis(ts(ksi,zeta),ts(eta,upsilon))
+upsilon@[l:lessis(ksi,eta)][k:lessis(zeta,upsilon)]
+satz149a:=satz124(ts(eta,upsilon),ts(ksi,zeta),satz149(eta,ksi,upsilon,zeta,satz125(ksi,eta,l),satz125(zeta,upsilon,k))):lessis(ts(ksi,zeta),ts(eta,upsilon))
+-rp
+@[r0:rat]
+ratset:=setof(rat,[x:rat]less(x,r0)):set(rat)
++4150
+t1:=satz90(r0):some([x:rat]less(x,r0))
+[x0:rat][l:less(x0,r0)]
+t2:=estii(rat,[x:rat]less(x,r0),x0,l):in(x0,ratset)
+r0@t3:=ec3e13(is(r0,r0),more(r0,r0),less(r0,r0),satz81b(r0,r0),refis(rat,r0)):not(less(r0,r0))
+t4:=th3"l.imp"(in(r0,ratset),less(r0,r0),t3,[t:in(r0,ratset)]estie(rat,[x:rat]less(x,r0),r0,t)):not(in(r0,ratset))
+x0@[i:in(x0,ratset)]
+t5:=estie(rat,[x:rat]less(x,r0),x0,i):less(x0,r0)
+[x1:rat][k:less(x1,x0)]
+t6:=t2(x1,trless(x1,x0,r0,k,t5)):in(x1,ratset)
+i@t7:=satz91(x0,r0,t5):some([x:rat]and(less(x0,x),less(x,r0)))
+[x1:rat][a:and(less(x0,x1),less(x1,r0))]
+t8:=ande1(less(x0,x1),less(x1,r0),a):less(x0,x1)
+t9:=ande2(less(x0,x1),less(x1,r0),a):less(x1,r0)
+t10:=andi(in(x1,ratset),more(x1,x0),t2(x1,t9),satz83(x0,x1,t8)):and(in(x1,ratset),more(x1,x0))
+i@t11:=th6"l.some"(rat,[x:rat]and(less(x0,x),less(x,r0)),[x:rat]and(in(x,ratset),more(x,x0)),t7,[x:rat][t:and(less(x0,x),less(x,r0))]t10(x,t)):some([x:rat]and(in(x,ratset),more(x,x0)))
+l@t12:=cut2(ratset,x0,t2,r0,t4,[x:rat][t:in(x,ratset)][y:rat][u:less(y,x)]t6(x,t,y,u),[x:rat][t:in(x,ratset)]t11(x,t)):cutprop(ratset)
+-4150
+satz150:=someapp(rat,[x:rat]less(x,r0),t1".4150",cutprop(ratset),[x:rat][t:less(x,r0)]t12".4150"(x,t)):cutprop(ratset)
++*rp
+r0@rpofrt:=cutof(ratset,satz150):cut
+[x0:rat][l:less"rt"(x0,r0)]
+lrtrpofrt:=ine(ratset,satz150,x0,t2"rt.4150"(x0,l)):lrt(rpofrt,x0)
+r0@[x0:rat][lx:lrt(rpofrt,x0)]
+lrtrpofrte:=t5"rt.4150"(x0,ini(ratset,satz150,x0,lx)):less"rt"(x0,r0)
+r0@[x0:rat][m:moreis"rt"(x0,r0)]
++*iii4
+m@t12:=satz81c(x0,r0,m):not(less"rt"(x0,r0))
+-iii4
+m@urtrpofrt:=th3"l.imp"(lrt(rpofrt,x0),less"rt"(x0,r0),t12".iii4",[t:lrt(rpofrt,x0)]lrtrpofrte(x0,t)):urt(rpofrt,x0)
+@1rp:=rpofrt(1rt):cut
++4151
+ksi@[z0:rat][lz:lrt(ts(ksi,1rp),z0)][x0:rat][lx:lrt(ksi,x0)][y0:rat][ly:lrt(1rp,y0)][i:is"rt"(z0,ts"rt"(x0,y0))]
+t1:=lrtrpofrte(1rt,y0,ly):less"rt"(y0,1rt)
+t2:=isless12"rt"(ts"rt"(x0,y0),z0,ts"rt"(x0,1rt),x0,symis(rat,z0,ts"rt"(x0,y0),i),example1a(x0),satz105f(y0,1rt,x0,t1)):less"rt"(z0,x0)
+t3:=satz120(ksi,x0,lx,z0,t2):lrt(ksi,z0)
+lz@t4:=tsapp(ksi,1rp,z0,lz,lrt(ksi,z0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(1rp,y)][v:is"rt"(z0,ts"rt"(x,y))]t3(x,t,y,u,v)):lrt(ksi,z0)
+ksi@[x0:rat][lx:lrt(ksi,x0)][x1:rat][lx1:lrt(ksi,x1)][l:less"rt"(x0,x1)]
+y1:=ts"rt"(ov(1rt,x1),x0):rat
+t5:=isless2"rt"(ts"rt"(ov(1rt,x1),x1),1rt,y1,satz110e(1rt,x1),satz105f(x0,x1,ov(1rt,x1),l)):less"rt"(y1,1rt)
+t6:=lrtrpofrt(1rt,y1,t5):lrt(1rp,y1)
+t7:=tr3is(rat,ts"rt"(x1,y1),ts"rt"(ts"rt"(x1,ov(1rt,x1)),x0),ts"rt"(1rt,x0),x0,assts2"rt"(x1,ov(1rt,x1),x0),ists1"rt"(ts"rt"(x1,ov(1rt,x1)),1rt,x0,satz110c(1rt,x1)),example1c(x0)):is"rt"(ts"rt"(x1,y1),x0)
+t8:=lrtts(ksi,1rp,x0,x1,lx1,y1,t6,symis(rat,ts"rt"(x1,y1),x0,t7)):lrt(ts(ksi,1rp),x0)
+lx@t9:=cutapp3(ksi,x0,lx,lrt(ts(ksi,1rp),x0),[y:rat][t:lrt(ksi,y)][u:less"rt"(x0,y)]t8(y,t,u)):lrt(ts(ksi,1rp),x0)
+-4151
+ksi@satz151:=isi1(ts(ksi,1rp),ksi,[x:rat][t:lrt(ts(ksi,1rp),x)]t4".4151"(x,t),[x:rat][t:lrt(ksi,x)]t9".4151"(x,t)):is(ts(ksi,1rp),ksi)
+satz151a:=symis(cut,ts(ksi,1rp),ksi,satz151):is(ksi,ts(ksi,1rp))
+satz151b:=tris(cut,ts(1rp,ksi),ts(ksi,1rp),ksi,comts(1rp,ksi),satz151):is(ts(1rp,ksi),ksi)
+satz151c:=symis(cut,ts(1rp,ksi),ksi,satz151b):is(ksi,ts(1rp,ksi))
++4152
+[x0:rat][y0:rat]
+invprop1:=and(urt(ksi,y0),less"rt"(y0,x0)):'prop'
+ksi@[z0:rat][x0:rat]
+invprop2:=and3(urt(ksi,x0),some"rt"([x:rat]invprop1(x0,x)),is"rt"(z0,ov(1rt,x0))):'prop'
+z0@invprop:=some"rt"([x:rat]invprop2(z0,x)):'prop'
+ksi@inv:=setof(rat,[z:rat]invprop(z)):set(rat)
+x0@[ux:urt(ksi,x0)][y0:rat][uy:urt(ksi,y0)][l:less"rt"(y0,x0)][i:is"rt"(z0,ov(1rt,x0))]
+t1:=andi(urt(ksi,y0),less"rt"(y0,x0),uy,l):invprop1(x0,y0)
+t2:=somei(rat,[x:rat]invprop1(x0,x),y0,t1):some"rt"([x:rat]invprop1(x0,x))
+t3:=and3i(urt(ksi,x0),some"rt"([x:rat]invprop1(x0,x)),is"rt"(z0,ov(1rt,x0)),ux,t2,i):invprop2(z0,x0)
+t4:=somei(rat,[x:rat]invprop2(z0,x),x0,t3):invprop(z0)
+inv1:=estii(rat,[z:rat]invprop(z),z0,t4):in(z0,inv)
+z0@[i:in(z0,inv)][p:'prop'][p1:[x:rat][t:urt(ksi,x)][y:rat][u:urt(ksi,y)][v:less"rt"(y,x)][w:is"rt"(z0,ov(1rt,x))]p]
+t5:=estie(rat,[x:rat]invprop(x),z0,i):invprop(z0)
+[x0:rat][px:invprop2(z0,x0)]
+t6:=and3e1(urt(ksi,x0),some"rt"([x:rat]invprop1(x0,x)),is"rt"(z0,ov(1rt,x0)),px):urt(ksi,x0)
+t7:=and3e2(urt(ksi,x0),some"rt"([x:rat]invprop1(x0,x)),is"rt"(z0,ov(1rt,x0)),px):some"rt"([x:rat]invprop1(x0,x))
+t8:=and3e3(urt(ksi,x0),some"rt"([x:rat]invprop1(x0,x)),is"rt"(z0,ov(1rt,x0)),px):is"rt"(z0,ov(1rt,x0))
+[y0:rat][py:invprop1(x0,y0)]
+t9:=ande1(urt(ksi,y0),less"rt"(y0,x0),py):urt(ksi,y0)
+t10:=ande2(urt(ksi,y0),less"rt"(y0,x0),py):less"rt"(y0,x0)
+t11:=<t8><t10><t9><y0><t6><x0>p1:p
+px@t12:=someapp(rat,[x:rat]invprop1(x0,x),t7,p,[x:rat][t:invprop1(x0,x)]t11(x,t)):p
+p1@invapp:=someapp(rat,[x:rat]invprop2(z0,x),t5,p,[x:rat][t:invprop2(z0,x)]t12(x,t)):p
+ksi@[x0:rat][ux:urt(ksi,x0)]
+2x0:=pl"rt"(x0,x0):rat
+t13:=satz94a(x0,x0):less"rt"(x0,2x0)
+t14:=satz119a(ksi,x0,ux,2x0,t13):urt(ksi,2x0)
+t15:=inv1(ov(1rt,2x0),2x0,t14,x0,ux,t13,refis(rat,ov(1rt,2x0))):in(ov(1rt,2x0),inv)
+ksi@[x1:rat][lx:lrt(ksi,x1)][x0:rat][ux:urt(ksi,x0)]
+t16:=th3"l.imp"(is"rt"(x0,x1),lrt(ksi,x0),ux,[t:is"rt"(x0,x1)]isp1(rat,[x:rat]lrt(ksi,x),x1,x0,lx,t)):nis"rt"(x0,x1)
+t17:=satz110e(1rt,x0):is"rt"(ts"rt"(ov(1rt,x0),x0),1rt)
+t18:=satz110e(1rt,x1):is"rt"(ts"rt"(ov(1rt,x1),x1),1rt)
+[i:is"rt"(ov(1rt,x0),ov(1rt,x1))]
+t19:=tris(rat,ts"rt"(ov(1rt,x0),x1),ts"rt"(ov(1rt,x1),x1),1rt,ists1"rt"(ov(1rt,x0),ov(1rt,x1),x1,i),t18):is"rt"(ts"rt"(ov(1rt,x0),x1),1rt)
+t20:=satz110b(1rt,ov(1rt,x0),x0,x1,t17,t19):is"rt"(x0,x1)
+ux@t21:=th3"l.imp"(is"rt"(ov(1rt,x0),ov(1rt,x1)),is"rt"(x0,x1),t16,[t:is"rt"(ov(1rt,x0),ov(1rt,x1))]t20(t)):nis"rt"(ov(1rt,x0),ov(1rt,x1))
+lx@[i:in(ov(1rt,x1),inv)]
+t22:=invapp(ov(1rt,x1),i,con,[x:rat][t:urt(ksi,x)][y:rat][u:urt(ksi,y)][v:less"rt"(y,x)][w:is"rt"(ov(1rt,x1),ov(1rt,x))]<symis(rat,ov(1rt,x1),ov(1rt,x),w)>t21(x,t)):con
+lx@t23:=[t:in(ov(1rt,x1),inv)]t22(t):not(in(ov(1rt,x1),inv))
+ksi@[z0:rat][i:in(z0,inv)][u0:rat][l:less"rt"(u0,z0)][x0:rat][ux:urt(ksi,x0)][j:is"rt"(z0,ov(1rt,x0))]
+t24:=isless2"rt"(z0,ov(1rt,x0),u0,j,l):less"rt"(u0,ov(1rt,x0))
+t25:=tris(rat,ts"rt"(ov(1rt,x0),x0),1rt,ts"rt"(u0,ov(1rt,u0)),satz110e(1rt,x0),satz110d(1rt,u0)):is"rt"(ts"rt"(ov(1rt,x0),x0),ts"rt"(u0,ov(1rt,u0)))
+t26:=isless2"rt"(ts"rt"(ov(1rt,x0),x0),ts"rt"(u0,ov(1rt,u0)),ts"rt"(u0,x0),t25,satz105c(u0,ov(1rt,x0),x0,t24)):less"rt"(ts"rt"(u0,x0),ts"rt"(u0,ov(1rt,u0)))
+t27:=isless12"rt"(ts"rt"(u0,x0),ts"rt"(x0,u0),ts"rt"(u0,ov(1rt,u0)),ts"rt"(ov(1rt,u0),u0),comts"rt"(u0,x0),comts"rt"(u0,ov(1rt,u0)),t26):less"rt"(ts"rt"(x0,u0),ts"rt"(ov(1rt,u0),u0))
+t28:=satz106c(x0,ov(1rt,u0),u0,t27):less"rt"(x0,ov(1rt,u0))
+t29:=satz119a(x0,ux,ov(1rt,u0),t28):urt(ksi,ov(1rt,u0))
+t30:=satz110e(1rt,u0):is"rt"(ts"rt"(ov(1rt,u0),u0),1rt)
+t31:=satz110g(1rt,ov(1rt,u0),u0,t30):is"rt"(u0,ov(1rt,ov(1rt,u0)))
+t32:=inv1(u0,ov(1rt,u0),t29,x0,ux,t28,t31):in(u0,inv)
+l@t33:=invapp(z0,i,in(u0,inv),[x:rat][t:urt(ksi,x)][y:rat][u:urt(ksi,y)][v:less"rt"(y,x)][w:is"rt"(z0,ov(1rt,x))]t32(x,t,w)):in(u0,inv)
+i@[x0:rat][ux:urt(ksi,x0)][x1:rat][ux1:urt(ksi,x1)][l:less"rt"(x1,x0)][j:is"rt"(z0,ov(1rt,x0))]
+t34:=satz91(x1,x0,l):some"rt"([x:rat]and(less"rt"(x1,x),less"rt"(x,x0)))
+[x2:rat][a:and(less"rt"(x1,x2),less"rt"(x2,x0))]
+t35:=ande1(less"rt"(x1,x2),less"rt"(x2,x0),a):less"rt"(x1,x2)
+t36:=satz119a(ksi,x1,ux1,x2,t35):urt(ksi,x2)
+t37:=inv1(ov(1rt,x2),x2,t36,x1,ux1,t35,refis(rat,ov(1rt,x2))):in(ov(1rt,x2),inv)
+t38:=ande2(less"rt"(x1,x2),less"rt"(x2,x0),a):less"rt"(x2,x0)
+t39:=tris(rat,ts"rt"(x0,ov(1rt,x0)),1rt,ts"rt"(x2,ov(1rt,x2)),satz110c(1rt,x0),satz110d(1rt,x2)):is"rt"(ts"rt"(x0,ov(1rt,x0)),ts"rt"(x2,ov(1rt,x2)))
+t40:=isless2"rt"(ts"rt"(x0,ov(1rt,x0)),ts"rt"(x2,ov(1rt,x2)),ts"rt"(x2,ov(1rt,x0)),t39,satz105c(x2,x0,ov(1rt,x0),t38)):less"rt"(ts"rt"(x2,ov(1rt,x0)),ts"rt"(x2,ov(1rt,x2)))
+t41:=isless12"rt"(ts"rt"(x2,ov(1rt,x0)),ts"rt"(ov(1rt,x0),x2),ts"rt"(x2,ov(1rt,x2)),ts"rt"(ov(1rt,x2),x2),comts"rt"(x2,ov(1rt,x0)),comts"rt"(x2,ov(1rt,x2)),t40):less"rt"(ts"rt"(ov(1rt,x0),x2),ts"rt"(ov(1rt,x2),x2))
+t42:=satz106c(ov(1rt,x0),ov(1rt,x2),x2,t41):less"rt"(ov(1rt,x0),ov(1rt,x2))
+t43:=ismore2"rt"(ov(1rt,x0),z0,ov(1rt,x2),symis(rat,z0,ov(1rt,x0),j),satz83(ov(1rt,x0),ov(1rt,x2),t42)):more"rt"(ov(1rt,x2),z0)
+t44:=andi(in(ov(1rt,x2),inv),more"rt"(ov(1rt,x2),z0),t37,t43):and(in(ov(1rt,x2),inv),more"rt"(ov(1rt,x2),z0))
+t45:=somei(rat,[x:rat]and(in(x,inv),more"rt"(x,z0)),ov(1rt,x2),t44):some"rt"([x:rat]and(in(x,inv),more"rt"(x,z0)))
+j@t46:=someapp(rat,[x:rat]and(less"rt"(x1,x),less"rt"(x,x0)),t34,some"rt"([x:rat]and(in(x,inv),more"rt"(x,z0))),[x:rat][t:and(less"rt"(x1,x),less"rt"(x,x0))]t45(x,t)):some"rt"([x:rat]and(in(x,inv),more"rt"(x,z0)))
+i@t47:=invapp(z0,i,some"rt"([x:rat]and(in(x,inv),more"rt"(x,z0))),[x:rat][t:urt(ksi,x)][y:rat][u:urt(ksi,y)][v:less"rt"(y,x)][w:is"rt"(z0,ov(1rt,x))]t46(x,t,y,u,v,w)):some"rt"([x:rat]and(in(x,inv),more"rt"(x,z0)))
+ksi@[x0:rat][lx:lrt(ksi,x0)][y0:rat][uy:urt(ksi,y0)]
+t48:=cut2(inv,ov(1rt,pl"rt"(y0,y0)),t15(y0,uy),ov(1rt,x0),t23(x0,lx),[x:rat][t:in(x,inv)][y:rat][u:less"rt"(y,x)]t33(x,t,y,u),[x:rat][t:in(x,inv)]t47(x,t)):cutprop(inv)
+lx@t49:=cutapp1b(ksi,cutprop(inv),[x:rat][t:urt(ksi,x)]t48(x,t)):cutprop(inv)
+ksi@t50:=cutapp1a(ksi,cutprop(inv),[x:rat][t:lrt(ksi,x)]t49(x,t)):cutprop(inv)
+chi:=cutof(inv,t50):cut
+[z0:rat][lz:lrt(ts(ksi,chi),z0)][x0:rat][lx:lrt(ksi,x0)][u0:rat][lu:lrt(chi,u0)][i:is"rt"(z0,ts"rt"(x0,u0))][x1:rat][ux:urt(ksi,x1)][j:is"rt"(u0,ov(1rt,x1))]
+t51:=tris(rat,z0,ts"rt"(x0,u0),ts"rt"(x0,ov(1rt,x1)),i,ists2"rt"(u0,ov(1rt,x1),x0,j)):is"rt"(z0,ts"rt"(x0,ov(1rt,x1)))
+t52:=cutapp2a(ksi,x0,lx,x1,ux):less"rt"(x0,x1)
+t53:=isless12"rt"(ts"rt"(x0,ov(1rt,x1)),z0,ts"rt"(x1,ov(1rt,x1)),1rt,symis(rat,z0,ts"rt"(x0,ov(1rt,x1)),t51),satz110c(1rt,x1),satz105c(x0,x1,ov(1rt,x1),t52)):less"rt"(z0,1rt)
+t54:=lrtrpofrt(1rt,z0,t53):lrt(1rp,z0)
+i@r1:=ini(inv,t50,u0,lu):in(u0,inv)
+r2:=invapp(u0,r1,lrt(1rp,z0),[x:rat][t:urt(ksi,x)][y:rat][u:urt(ksi,y)][v:less"rt"(y,x)][w:is"rt"(u0,ov(1rt,x))]t54(x,t,w)):lrt(1rp,z0)
+lz@r3:=tsapp(ksi,chi,z0,lz,lrt(1rp,z0),[x:rat][t:lrt(ksi,x)][y:rat][u:lrt(chi,y)][v:is"rt"(z0,ts"rt"(x,y))]r2(x,t,y,u,v)):lrt(1rp,z0)
+ksi@[u0:rat][lu:lrt(1rp,u0)]
+t55:=lrtrpofrte(1rt,u0,lu):less"rt"(u0,1rt)
+t56:=satz83(u0,1rt,t55):more"rt"(1rt,u0)
+[x0:rat][lx:lrt(ksi,x0)][x1:rat][lx1:lrt(ksi,x1)][x2:rat][ux2:urt(ksi,x2)]
+t57:=cutapp2b(x1,lx1,x2,ux2):more"rt"(x2,x1)
+[i:is"rt"(mn"rt"(x2,x1,t57),ts"rt"(mn"rt"(1rt,u0,t56),x0))]
+t58:=cutapp2a(x0,lx,x2,ux2):less"rt"(x0,x2)
+t59:=satz105f(x0,x2,mn"rt"(1rt,u0,t56),t58):less"rt"(ts"rt"(mn"rt"(1rt,u0,t56),x0),ts"rt"(mn"rt"(1rt,u0,t56),x2))
+t60:=isless1"rt"(ts"rt"(mn"rt"(1rt,u0,t56),x0),mn"rt"(x2,x1,t57),ts"rt"(mn"rt"(1rt,u0,t56),x2),symis(rat,mn"rt"(x2,x1,t57),ts"rt"(mn"rt"(1rt,u0,t56),x0),i),t59):less"rt"(mn"rt"(x2,x1,t57),ts"rt"(mn"rt"(1rt,u0,t56),x2))
+t61:=tr4is(rat,pl"rt"(ts"rt"(mn"rt"(1rt,u0,t56),x2),ts"rt"(u0,x2)),ts"rt"(pl"rt"(mn"rt"(1rt,u0,t56),u0),x2),ts"rt"(1rt,x2),x2,pl"rt"(mn"rt"(x2,x1,t57),x1),distpt1"rt"(mn"rt"(1rt,u0,t56),u0,x2),ists1"rt"(pl"rt"(mn"rt"(1rt,u0,t56),u0),1rt,x2,satz101e(1rt,u0,t56)),example1c(x2),satz101f(x2,x1,t57)):is"rt"(pl"rt"(ts"rt"(mn"rt"(1rt,u0,t56),x2),ts"rt"(u0,x2)),pl"rt"(mn"rt"(x2,x1,t57),x1))
+t62:=satz96c(mn"rt"(x2,x1,t57),ts"rt"(mn"rt"(1rt,u0,t56),x2),ts"rt"(u0,x2),t60):less"rt"(pl"rt"(mn"rt"(x2,x1,t57),ts"rt"(u0,x2)),pl"rt"(ts"rt"(mn"rt"(1rt,u0,t56),x2),ts"rt"(u0,x2)))
+t63:=isless2"rt"(pl"rt"(ts"rt"(mn"rt"(1rt,u0,t56),x2),ts"rt"(u0,x2)),pl"rt"(mn"rt"(x2,x1,t57),x1),pl"rt"(mn"rt"(x2,x1,t57),ts"rt"(u0,x2)),t61,t62):less"rt"(pl"rt"(mn"rt"(x2,x1,t57),ts"rt"(u0,x2)),pl"rt"(mn"rt"(x2,x1,t57),x1))
+t64:=isless12"rt"(pl"rt"(mn"rt"(x2,x1,t57),ts"rt"(u0,x2)),pl"rt"(ts"rt"(u0,x2),mn"rt"(x2,x1,t57)),pl"rt"(mn"rt"(x2,x1,t57),x1),pl"rt"(x1,mn"rt"(x2,x1,t57)),compl"rt"(mn"rt"(x2,x1,t57),ts"rt"(u0,x2)),compl"rt"(mn"rt"(x2,x1,t57),x1),t63):less"rt"(pl"rt"(ts"rt"(u0,x2),mn"rt"(x2,x1,t57)),pl"rt"(x1,mn"rt"(x2,x1,t57)))
+t65:=satz97c(ts"rt"(u0,x2),x1,mn"rt"(x2,x1,t57),t64):less"rt"(ts"rt"(u0,x2),x1)
+t66:=tr3is(rat,ts"rt"(ov(1rt,u0),ts"rt"(u0,x2)),ts"rt"(ts"rt"(ov(1rt,u0),u0),x2),ts"rt"(1rt,x2),x2,assts2"rt"(ov(1rt,u0),u0,x2),ists1"rt"(ts"rt"(ov(1rt,u0),u0),1rt,x2,satz110e(1rt,u0)),example1c(x2)):is"rt"(ts"rt"(ov(1rt,u0),ts"rt"(u0,x2)),x2)
+t67:=isless12"rt"(ts"rt"(ov(1rt,u0),ts"rt"(u0,x2)),x2,ts"rt"(ov(1rt,u0),x1),ov(x1,u0),t66,satz141b(x1,u0),satz105f(ts"rt"(u0,x2),x1,ov(1rt,u0),t65)):less"rt"(x2,ov(x1,u0))
+t68:=satz119a(x2,ux2,ov(x1,u0),t67):urt(ksi,ov(x1,u0))
+t69:=satz110e(x1,u0):is"rt"(ts"rt"(ov(x1,u0),u0),x1)
+t70:=tr3is(rat,u0,ov(x1,ov(x1,u0)),ts"rt"(ov(1rt,ov(x1,u0)),x1),ts"rt"(x1,ov(1rt,ov(x1,u0))),satz110g(x1,ov(x1,u0),u0,t69),satz141c(x1,ov(x1,u0)),comts"rt"(ov(1rt,ov(x1,u0)),x1)):is"rt"(u0,ts"rt"(x1,ov(1rt,ov(x1,u0))))
+t71:=inv1(ov(1rt,ov(x1,u0)),ov(x1,u0),t68,x2,ux2,t67,refis(rat,ov(1rt,ov(x1,u0)))):in(ov(1rt,ov(x1,u0)),inv)
+t72:=ine(inv,t50,ov(1rt,ov(x1,u0)),t71):lrt(chi,ov(1rt,ov(x1,u0)))
+t73:=lrtts(ksi,chi,u0,x1,lx1,ov(1rt,ov(x1,u0)),t72,t70):lrt(ts(ksi,chi),u0)
+lx@t74:=satz132app(ksi,lrt(ts(ksi,chi),u0),ts"rt"(mn"rt"(1rt,u0,t56),x0),[x:rat][t:lrt(ksi,x)][y:rat][u:urt(ksi,y)][v:is"rt"(mn"rt"(y,x,cutapp2b(x,t,y,u)),ts"rt"(mn"rt"(1rt,u0,t56),x0))]t73(x,t,y,u,v)):lrt(ts(ksi,chi),u0)
+lu@t75:=cutapp1a(ksi,lrt(ts(ksi,chi),u0),[x:rat][t:lrt(ksi,x)]t74(x,t)):lrt(ts(ksi,chi),u0)
+ksi@t76:=isi1(ts(ksi,chi),1rp,[x:rat][t:lrt(ts(ksi,chi),x)]r3(x,t),[x:rat][t:lrt(1rp,x)]t75(x,t)):is(ts(ksi,chi),1rp)
+-4152
+satz152:=somei(cut,[t:cut]is(ts(ksi,t),1rp),chi".4152",t76".4152"):some([c:cut]is(ts(ksi,c),1rp))
+eta@[phi:cut][psi:cut]
++4153
+[m:more(phi,psi)]
+t1:=satz145d(phi,psi,eta,m):more(ts(eta,phi),ts(eta,psi))
+t2:=ec3e21(is(ts(eta,phi),ts(eta,psi)),more(ts(eta,phi),ts(eta,psi)),less(ts(eta,phi),ts(eta,psi)),satz123b(ts(eta,phi),ts(eta,psi)),t1):nis(ts(eta,phi),ts(eta,psi))
+psi@[l:less(phi,psi)]
+t3:=satz145f(phi,psi,eta,l):less(ts(eta,phi),ts(eta,psi))
+t4:=ec3e31(is(ts(eta,phi),ts(eta,psi)),more(ts(eta,phi),ts(eta,psi)),less(ts(eta,phi),ts(eta,psi)),satz123b(ts(eta,phi),ts(eta,psi)),t3):nis(ts(eta,phi),ts(eta,psi))
+psi@[n:nis(phi,psi)]
+t5:=th1"l.or3"(is(phi,psi),more(phi,psi),less(phi,psi),satz123a(phi,psi),n):or(more(phi,psi),less(phi,psi))
+t6:=orapp(more(phi,psi),less(phi,psi),nis(ts(eta,phi),ts(eta,psi)),t5,[t:more(phi,psi)]t2(t),[t:less(phi,psi)]t4(t)):nis(ts(eta,phi),ts(eta,psi))
+-4153
+[i:is(ts(eta,phi),ksi)][j:is(ts(eta,psi),ksi)]
+satz153b:=th7"l.imp"(is(phi,psi),nis(ts(eta,phi),ts(eta,psi)),weli(is(ts(eta,phi),ts(eta,psi)),tris2(cut,ts(eta,phi),ts(eta,psi),ksi,i,j)),[t:nis(phi,psi)]t6".4153"(t)):is(phi,psi)
++*4153
+eta@[tau:cut][i:is(ts(eta,tau),1rp)]
+chi:=ts(tau,ksi):cut
+t7:=tr3is(cut,ts(eta,chi),ts(ts(eta,tau),ksi),ts(1rp,ksi),ksi,assts2(eta,tau,ksi),ists1(ts(eta,tau),1rp,ksi,i),satz151b(ksi)):is(ts(eta,chi),ksi)
+t8:=somei(cut,[c:cut]is(ts(eta,c),ksi),chi,t7):some([c:cut]is(ts(eta,c),ksi))
+-4153
+eta@satz153a:=someapp(cut,[c:cut]is(ts(eta,c),1rp),satz152(eta),some([c:cut]is(ts(eta,c),ksi)),[c:cut][t:is(ts(eta,c),1rp)]t8".4153"(c,t)):some([c:cut]is(ts(eta,c),ksi))
++*4153
+eta@t9:=[c:cut][d:cut][t:is(ts(eta,c),ksi)][u:is(ts(eta,d),ksi)]satz153b(c,d,t,u):amone(cut,[c:cut]is(ts(eta,c),ksi))
+-4153
+eta@satz153:=onei(cut,[c:cut]is(ts(eta,c),ksi),t9".4153",satz153a):one([c:cut]is(ts(eta,c),ksi))
+ov:=ind(cut,[a:cut]is(ts(eta,a),ksi),satz153):cut
+satz153c:=oneax(cut,[a:cut]is(ts(eta,a),ksi),satz153):is(ts(eta,ov(ksi,eta)),ksi)
+satz153d:=symis(cut,ts(eta,ov(ksi,eta)),ksi,satz153c):is(ksi,ts(eta,ov(ksi,eta)))
+satz153e:=tris(cut,ts(ov(ksi,eta),eta),ts(eta,ov(ksi,eta)),ksi,comts(ov(ksi,eta),eta),satz153c):is(ts(ov(ksi,eta),eta),ksi)
+satz153f:=symis(cut,ts(ov(ksi,eta),eta),ksi,satz153e):is(ksi,ts(ov(ksi,eta),eta))
+[phi:cut][i:is(ts(eta,phi),ksi)]
+satz153g:=satz153b(phi,ov(ksi,eta),i,satz153c):is(phi,ov(ksi,eta))
+@[ksi:cut]
+ratrp:=image(rat,cut,[x:rat]rpofrt(x),ksi):'prop'
+@[x0:rat]
+ratrpi:=imagei(rat,cut,[x:rat]rpofrt(x),x0):ratrp(rpofrt(x0))
+@[x:nat]
+rpofnt:=rpofrt(rtofn(x)):cut
+ksi@natrp:=image(nat,cut,[x:nat]rpofnt(x),ksi):'prop'
+x@natrpi:=imagei(nat,cut,[y:nat]rpofnt(y),x):natrp(rpofnt(x))
+ksi@[n:natrp(ksi)]
++iii5
+[x:nat][i:is(ksi,rpofnt(x))]
+t1:=somei(rat,[y:rat]is(ksi,rpofrt(y)),rtofn(x),i):ratrp(ksi)
+-iii5
+lemmaiii5:=someapp(nat,[x:nat]is(ksi,rpofnt(x)),n,ratrp(ksi),[x:nat][t:is(ksi,rpofnt(x))]t1".iii5"(x,t)):ratrp(ksi)
+@[x0:rat][y0:rat][m:more"rt"(x0,y0)]
++5154
+t1:=lrtrpofrt(x0,y0,satz82(x0,y0,m)):lrt(rpofrt(x0),y0)
+t2:=urtrpofrt(y0,y0,moreisi2"rt"(y0,y0,refis(rat,y0))):urt(rpofrt(y0),y0)
+t3:=andi(lrt(rpofrt(x0),y0),urt(rpofrt(y0),y0),t1,t2):and(lrt(rpofrt(x0),y0),urt(rpofrt(y0),y0))
+-5154
+satz154a:=somei(rat,[x:rat]and(lrt(rpofrt(x0),x),urt(rpofrt(y0),x)),y0,t3".5154"):more(rpofrt(x0),rpofrt(y0))
+y0@[i:is"rt"(x0,y0)]
+satz154b:=isf(rat,cut,[x:rat]rpofrt(x),x0,y0,i):is(rpofrt(x0),rpofrt(y0))
+y0@[l:less"rt"(x0,y0)]
+satz154c:=satz121(rpofrt(y0),rpofrt(x0),satz154a(y0,x0,satz83(x0,y0,l))):less(rpofrt(x0),rpofrt(y0))
++*5154
+y0@t4:=satz81a(x0,y0):or3(is"rt"(x0,y0),more"rt"(x0,y0),less"rt"(x0,y0))
+t5:=satz123b(rpofrt(x0),rpofrt(y0)):ec3(is(rpofrt(x0),rpofrt(y0)),more(rpofrt(x0),rpofrt(y0)),less(rpofrt(x0),rpofrt(y0)))
+-5154
+y0@[m:more(rpofrt(x0),rpofrt(y0))]
+satz154d:=th11"l.ec3"(is"rt"(x0,y0),more"rt"(x0,y0),less"rt"(x0,y0),is(rpofrt(x0),rpofrt(y0)),more(rpofrt(x0),rpofrt(y0)),less(rpofrt(x0),rpofrt(y0)),t4".5154",t5".5154",[u:is"rt"(x0,y0)]satz154b(u),[u:more"rt"(x0,y0)]satz154a(u),[u:less"rt"(x0,y0)]satz154c(u),m):more"rt"(x0,y0)
+y0@[i:is(rpofrt(x0),rpofrt(y0))]
+satz154e:=th10"l.ec3"(is"rt"(x0,y0),more"rt"(x0,y0),less"rt"(x0,y0),is(rpofrt(x0),rpofrt(y0)),more(rpofrt(x0),rpofrt(y0)),less(rpofrt(x0),rpofrt(y0)),t4".5154",t5".5154",[u:is"rt"(x0,y0)]satz154b(u),[u:more"rt"(x0,y0)]satz154a(u),[u:less"rt"(x0,y0)]satz154c(u),i):is"rt"(x0,y0)
+y0@[l:less(rpofrt(x0),rpofrt(y0))]
+satz154f:=th12"l.ec3"(is"rt"(x0,y0),more"rt"(x0,y0),less"rt"(x0,y0),is(rpofrt(x0),rpofrt(y0)),more(rpofrt(x0),rpofrt(y0)),less(rpofrt(x0),rpofrt(y0)),t4".5154",t5".5154",[u:is"rt"(x0,y0)]satz154b(u),[u:more"rt"(x0,y0)]satz154a(u),[u:less"rt"(x0,y0)]satz154c(u),l):less"rt"(x0,y0)
++*iii5
+@t2:=[x:rat][y:rat][t:is(rpofrt(x),rpofrt(y))]satz154e(x,y,t):injective(rat,cut,[x:rat]rpofrt(x))
+-iii5
+y0@[i:is"rt"(x0,y0)]
+isrterp:=satz154b(x0,y0,i):is(rpofrt(x0),rpofrt(y0))
+y0@[i:is(rpofrt(x0),rpofrt(y0))]
+isrtirp:=satz154e(x0,y0,i):is"rt"(x0,y0)
+ksi@[rtksi:ratrp(ksi)]
+rtofrp:=soft(rat,cut,[x:rat]rpofrt(x),t2".iii5",ksi,rtksi):rat
+[eta:cut][rteta:ratrp(eta)][i:is(ksi,eta)]
+isrpert:=isinv(rat,cut,[x:rat]rpofrt(x),t2".iii5",ksi,rtksi,eta,rteta,i):is"rt"(rtofrp(ksi,rtksi),rtofrp(eta,rteta))
+rteta@[i:is"rt"(rtofrp(ksi,rtksi),rtofrp(eta,rteta))]
+isrpirt:=isinve(rat,cut,[x:rat]rpofrt(x),t2".iii5",ksi,rtksi,eta,rteta,i):is(ksi,eta)
+x0@isrtrp1:=isst1(rat,cut,[x:rat]rpofrt(x),t2".iii5",x0):is"rt"(x0,rtofrp(rpofrt(x0),ratrpi(x0)))
+isrtrp2:=isst2(rat,cut,[x:rat]rpofrt(x),t2".iii5",x0):is"rt"(rtofrp(rpofrt(x0),ratrpi(x0)),x0)
+rtksi@isrprt1:=ists1"e"(rat,cut,[x:rat]rpofrt(x),t2".iii5",ksi,rtksi):is(ksi,rpofrt(rtofrp(ksi,rtksi)))
+isrprt2:=ists2"e"(rat,cut,[x:rat]rpofrt(x),t2".iii5",ksi,rtksi):is(rpofrt(rtofrp(ksi,rtksi)),ksi)
+@[x:nat][y:nat][i:is"n"(x,y)]
+isnterp:=isf(nat,cut,[z:nat]rpofnt(z),x,y,i):is(rpofnt(x),rpofnt(y))
+y@[i:is(rpofnt(x),rpofnt(y))]
+isntirp:=isnirt(x,y,isrtirp(rtofn(x),rtofn(y),i)):is"n"(x,y)
++*iii5
+@t3:=[x:nat][y:nat][t:is(rpofnt(x),rpofnt(y))]isntirp(x,y,t):injective(nat,cut,[x:nat]rpofnt(x))
+-iii5
+ksi@[ntksi:natrp(ksi)]
+ntofrp:=soft(nat,cut,[x:nat]rpofnt(x),t3".iii5",ksi,ntksi):nat
+[eta:cut][nteta:natrp(eta)][i:is(ksi,eta)]
+isrpent:=isinv(nat,cut,[x:nat]rpofnt(x),t3".iii5",ksi,ntksi,eta,nteta,i):is"n"(ntofrp(ksi,ntksi),ntofrp(eta,nteta))
+nteta@[i:is"n"(ntofrp(ksi,ntksi),ntofrp(eta,nteta))]
+isrpint:=isinve(nat,cut,[x:nat]rpofnt(x),t3".iii5",ksi,ntksi,eta,nteta,i):is(ksi,eta)
+x@isntrp1:=isst1(nat,cut,[y:nat]rpofnt(y),t3".iii5",x):is"n"(x,ntofrp(rpofnt(x),natrpi(x)))
+isntrp2:=isst2(nat,cut,[y:nat]rpofnt(y),t3".iii5",x):is"n"(ntofrp(rpofnt(x),natrpi(x)),x)
+ntksi@isrpnt1:=ists1"e"(nat,cut,[x:nat]rpofnt(x),t3".iii5",ksi,ntksi):is(ksi,rpofnt(ntofrp(ksi,ntksi)))
+isrpnt2:=ists2"e"(nat,cut,[x:nat]rpofnt(x),t3".iii5",ksi,ntksi):is(rpofnt(ntofrp(ksi,ntksi)),ksi)
+@[x0:rat][y0:rat]
++5155
+[z0:rat][lz:lrt(pl(rpofrt(x0),rpofrt(y0)),z0)][u0:rat][lu:lrt(rpofrt(x0),u0)][v0:rat][lv:lrt(rpofrt(y0),v0)][i:is"rt"(z0,pl"rt"(u0,v0))]
+t1:=lrtrpofrte(x0,u0,lu):less"rt"(u0,x0)
+t2:=lrtrpofrte(y0,v0,lv):less"rt"(v0,y0)
+t3:=satz98a(u0,x0,v0,y0,t1,t2):less"rt"(pl"rt"(u0,v0),pl"rt"(x0,y0))
+t4:=isless1"rt"(pl"rt"(u0,v0),z0,pl"rt"(x0,y0),symis(rat,z0,pl"rt"(u0,v0),i),t3):less"rt"(z0,pl"rt"(x0,y0))
+t5:=lrtrpofrt(pl"rt"(x0,y0),z0,t4):lrt(rpofrt(pl"rt"(x0,y0)),z0)
+lz@t6:=plapp(rpofrt(x0),rpofrt(y0),z0,lz,lrt(rpofrt(pl"rt"(x0,y0)),z0),[x:rat][t:lrt(rpofrt(x0),x)][y:rat][u:lrt(rpofrt(y0),y)][v:is"rt"(z0,pl"rt"(x,y))]t5(x,t,y,u,v)):lrt(rpofrt(pl"rt"(x0,y0)),z0)
+y0@[u0:rat][lu:lrt(rpofrt(pl"rt"(x0,y0)),u0)]
+t7:=lrtrpofrte(pl"rt"(x0,y0),u0,lu):less"rt"(u0,pl"rt"(x0,y0))
+u01:=ov"rt"(u0,pl"rt"(x0,y0)):rat
+t8:=isless12"rt"(u0,ts"rt"(u01,pl"rt"(x0,y0)),pl"rt"(x0,y0),ts"rt"(1rt,pl"rt"(x0,y0)),satz110f(u0,pl"rt"(x0,y0)),example1d(pl"rt"(x0,y0)),t7):less"rt"(ts"rt"(u01,pl"rt"(x0,y0)),ts"rt"(1rt,pl"rt"(x0,y0)))
+t9:=satz106c(u01,1rt,pl"rt"(x0,y0),t8):less"rt"(u01,1rt)
+t10:=tris(rat,u0,ts"rt"(pl"rt"(x0,y0),u01),pl"rt"(ts"rt"(x0,u01),ts"rt"(y0,u01)),satz110d(u0,pl"rt"(x0,y0)),disttp1"rt"(x0,y0,u01)):is"rt"(u0,pl"rt"(ts"rt"(x0,u01),ts"rt"(y0,u01)))
+y0@[l:less"rt"(y0,1rt)]
+t11:=isless12"rt"(ts"rt"(y0,x0),ts"rt"(x0,y0),ts"rt"(1rt,x0),x0,comts"rt"(y0,x0),example1c(x0),satz105c(y0,1rt,x0,l)):less"rt"(ts"rt"(x0,y0),x0)
+t12:=lrtrpofrt(x0,ts"rt"(x0,y0),t11):lrt(rpofrt(x0),ts"rt"(x0,y0))
+lu@t13:=lrtpl(rpofrt(x0),rpofrt(y0),u0,ts"rt"(x0,u01),t12(x0,u01,t9),ts"rt"(y0,u01),t12(y0,u01,t9),t10):lrt(pl(rpofrt(x0),rpofrt(y0)),u0)
+-5155
+satz155a:=isi1(rpofrt(pl"rt"(x0,y0)),pl(rpofrt(x0),rpofrt(y0)),[x:rat][t:lrt(rpofrt(pl"rt"(x0,y0)),x)]t13".5155"(x,t),[x:rat][t:lrt(pl(rpofrt(x0),rpofrt(y0)),x)]t6".5155"(x,t)):is(rpofrt(pl"rt"(x0,y0)),pl(rpofrt(x0),rpofrt(y0)))
+[m:more"rt"(x0,y0)]
++*5155
+m@t14:=satz101f(x0,y0,m):is"rt"(x0,pl"rt"(mn"rt"(x0,y0,m),y0))
+t15:=tris(cut,rpofrt(x0),rpofrt(pl"rt"(mn"rt"(x0,y0,m),y0)),pl(rpofrt(mn"rt"(x0,y0,m)),rpofrt(y0)),isrterp(x0,pl"rt"(mn"rt"(x0,y0,m),y0),t14),satz155a(mn"rt"(x0,y0,m),y0)):is(rpofrt(x0),pl(rpofrt(mn"rt"(x0,y0,m)),rpofrt(y0)))
+t16:=tris2(cut,pl(rpofrt(y0),rpofrt(mn"rt"(x0,y0,m))),rpofrt(x0),pl(rpofrt(mn"rt"(x0,y0,m)),rpofrt(y0)),compl(rpofrt(y0),rpofrt(mn"rt"(x0,y0,m))),t15):is(pl(rpofrt(y0),rpofrt(mn"rt"(x0,y0,m))),rpofrt(x0))
+-5155
+m@satz155b:=satz140g(rpofrt(x0),rpofrt(y0),rpofrt(mn"rt"(x0,y0,m)),satz154a(x0,y0,m),t16".5155"):is(rpofrt(mn"rt"(x0,y0,m)),mn(rpofrt(x0),rpofrt(y0),satz154a(x0,y0,m)))
++*5155
+y0@[z0:rat][lz:lrt(ts(rpofrt(x0),rpofrt(y0)),z0)][u0:rat][lu:lrt(rpofrt(x0),u0)][v0:rat][lv:lrt(rpofrt(y0),v0)][i:is"rt"(z0,ts"rt"(u0,v0))]
+t17:=lrtrpofrte(x0,u0,lu):less"rt"(u0,x0)
+t18:=lrtrpofrte(y0,v0,lv):less"rt"(v0,y0)
+t19:=satz107a(u0,x0,v0,y0,t17,t18):less"rt"(ts"rt"(u0,v0),ts"rt"(x0,y0))
+t20:=isless1"rt"(ts"rt"(u0,v0),z0,ts"rt"(x0,y0),symis(rat,z0,ts"rt"(u0,v0),i),t19):less"rt"(z0,ts"rt"(x0,y0))
+t21:=lrtrpofrt(ts"rt"(x0,y0),z0,t20):lrt(rpofrt(ts"rt"(x0,y0)),z0)
+lz@t22:=tsapp(rpofrt(x0),rpofrt(y0),z0,lz,lrt(rpofrt(ts"rt"(x0,y0)),z0),[x:rat][t:lrt(rpofrt(x0),x)][y:rat][u:lrt(rpofrt(y0),y)][v:is"rt"(z0,ts"rt"(x,y))]t21(x,t,y,u,v)):lrt(rpofrt(ts"rt"(x0,y0)),z0)
+y0@[u0:rat][lu:lrt(rpofrt(ts"rt"(x0,y0)),u0)]
+t23:=lrtrpofrte(ts"rt"(x0,y0),u0,lu):less"rt"(u0,ts"rt"(x0,y0))
+[u1:rat][a:and(less"rt"(u0,u1),less"rt"(u1,ts"rt"(x0,y0)))]
+t24:=ande1(less"rt"(u0,u1),less"rt"(u1,ts"rt"(x0,y0)),a):less"rt"(u0,u1)
+t25:=ande2(less"rt"(u0,u1),less"rt"(u1,ts"rt"(x0,y0)),a):less"rt"(u1,ts"rt"(x0,y0))
+t26:=isless12"rt"(u0,ts"rt"(ov"rt"(u0,u1),u1),u1,ts"rt"(1rt,u1),satz110f(u0,u1),example1d(u1),t24):less"rt"(ts"rt"(ov"rt"(u0,u1),u1),ts"rt"(1rt,u1))
+t27:=satz106c(ov"rt"(u0,u1),1rt,u1,t26):less"rt"(ov"rt"(u0,u1),1rt)
+t28:=isless1"rt"(u1,ts"rt"(ov"rt"(u1,y0),y0),ts"rt"(x0,y0),satz110f(u1,y0),t25):less"rt"(ts"rt"(ov"rt"(u1,y0),y0),ts"rt"(x0,y0))
+t29:=satz106c(ov"rt"(u1,y0),x0,y0,t28):less"rt"(ov"rt"(u1,y0),x0)
+t30:=tr3is(rat,u0,ts"rt"(u1,ov"rt"(u0,u1)),ts"rt"(ts"rt"(ov"rt"(u1,y0),y0),ov"rt"(u0,u1)),ts"rt"(ov"rt"(u1,y0),ts"rt"(y0,ov"rt"(u0,u1))),satz110d(u0,u1),ists1"rt"(u1,ts"rt"(ov"rt"(u1,y0),y0),ov"rt"(u0,u1),satz110f(u1,y0)),assts1"rt"(ov"rt"(u1,y0),y0,ov"rt"(u0,u1))):is"rt"(u0,ts"rt"(ov"rt"(u1,y0),ts"rt"(y0,ov"rt"(u0,u1))))
+t31:=lrtts(rpofrt(x0),rpofrt(y0),u0,ov"rt"(u1,y0),lrtrpofrt(x0,ov"rt"(u1,y0),t29),ts"rt"(y0,ov"rt"(u0,u1)),t12(y0,ov"rt"(u0,u1),t27),t30):lrt(ts(rpofrt(x0),rpofrt(y0)),u0)
+lu@t32:=someapp(rat,[x:rat]and(less"rt"(u0,x),less"rt"(x,ts"rt"(x0,y0))),satz91(u0,ts"rt"(x0,y0),t23),lrt(ts(rpofrt(x0),rpofrt(y0)),u0),[x:rat][t:and(less"rt"(u0,x),less"rt"(x,ts"rt"(x0,y0)))]t31(x,t)):lrt(ts(rpofrt(x0),rpofrt(y0)),u0)
+-5155
+y0@satz155c:=isi1(rpofrt(ts"rt"(x0,y0)),ts(rpofrt(x0),rpofrt(y0)),[x:rat][t:lrt(rpofrt(ts"rt"(x0,y0)),x)]t32".5155"(x,t),[x:rat][t:lrt(ts(rpofrt(x0),rpofrt(y0)),x)]t22".5155"(x,t)):is(rpofrt(ts"rt"(x0,y0)),ts(rpofrt(x0),rpofrt(y0)))
++*5155
+y0@t33:=satz110f(x0,y0):is"rt"(x0,ts"rt"(ov"rt"(x0,y0),y0))
+t34:=tris(cut,rpofrt(x0),rpofrt(ts"rt"(ov"rt"(x0,y0),y0)),ts(rpofrt(ov"rt"(x0,y0)),rpofrt(y0)),isrterp(x0,ts"rt"(ov"rt"(x0,y0),y0),t33),satz155c(ov"rt"(x0,y0),y0)):is(rpofrt(x0),ts(rpofrt(ov"rt"(x0,y0)),rpofrt(y0)))
+t35:=tris2(cut,ts(rpofrt(y0),rpofrt(ov"rt"(x0,y0))),rpofrt(x0),ts(rpofrt(ov"rt"(x0,y0)),rpofrt(y0)),comts(rpofrt(y0),rpofrt(ov"rt"(x0,y0))),t34):is(ts(rpofrt(y0),rpofrt(ov"rt"(x0,y0))),rpofrt(x0))
+-5155
+y0@satz155d:=satz153g(rpofrt(x0),rpofrt(y0),rpofrt(ov"rt"(x0,y0)),t35".5155"):is(rpofrt(ov"rt"(x0,y0)),ov(rpofrt(x0),rpofrt(y0)))
+@[x:nat][y:nat]
+satz155e:=tris(cut,rpofnt(pl"n"(x,y)),rpofrt(pl"rt"(rtofn(x),rtofn(y))),pl(rpofnt(x),rpofnt(y)),isrterp(rtofn(pl"n"(x,y)),pl"rt"(rtofn(x),rtofn(y)),symis(rat,pl"rt"(rtofn(x),rtofn(y)),rtofn(pl"n"(x,y)),satz112h(x,y))),satz155a(rtofn(x),rtofn(y))):is(rpofnt(pl"n"(x,y)),pl(rpofnt(x),rpofnt(y)))
+satz155f:=tris(cut,rpofnt(ts"n"(x,y)),rpofrt(ts"rt"(rtofn(x),rtofn(y))),ts(rpofnt(x),rpofnt(y)),isrterp(rtofn(ts"n"(x,y)),ts"rt"(rtofn(x),rtofn(y)),symis(rat,ts"rt"(rtofn(x),rtofn(y)),rtofn(ts"n"(x,y)),satz112j(x,y))),satz155c(rtofn(x),rtofn(y))):is(rpofnt(ts"n"(x,y)),ts(rpofnt(x),rpofnt(y)))
++nt
+@natt:=ot(cut,[t:cut]natrp(t)):'type'
+[ksi:cut][nksi:natrp(ksi)]
+nttofrp:=out(cut,[t:cut]natrp(t),ksi,nksi):natt
+@[xt:natt][yt:natt]
+is:=is"e"(natt,xt,yt):'prop'
+nis:=not(is(xt,yt)):'prop'
+@[p:[x:natt]'prop']
+all:=all"l"(natt,p):'prop'
+some:=some"l"(natt,p):'prop'
+one:=one"e"(natt,p):'prop'
+xt@[st:set(natt)]
+in:=esti(natt,xt,st):'prop'
+xt@rpofntt:=in"e"(cut,[t:cut]natrp(t),xt):cut
+natrpi:=inp(cut,[t:cut]natrp(t),xt):natrp(rpofntt(xt))
+nksi@[eta:cut][neta:natrp(eta)][i:is"rp"(ksi,eta)]
+isrpentt:=isouti(cut,[t:cut]natrp(t),ksi,nksi,eta,neta,i):is(nttofrp(ksi,nksi),nttofrp(eta,neta))
+neta@[i:is(nttofrp(ksi,nksi),nttofrp(eta,neta))]
+isrpintt:=isoute(cut,[t:cut]natrp(t),ksi,nksi,eta,neta,i):is"rp"(ksi,eta)
+yt@[i:is(xt,yt)]
+isntterp:=isini(cut,[t:cut]natrp(t),xt,yt,i):is"rp"(rpofntt(xt),rpofntt(yt))
+yt@[i:is"rp"(rpofntt(xt),rpofntt(yt))]
+isnttirp:=isine(cut,[t:cut]natrp(t),xt,yt,i):is(xt,yt)
+nksi@isrpntt1:=isinout(cut,[t:cut]natrp(t),ksi,nksi):is"rp"(ksi,rpofntt(nttofrp(ksi,nksi)))
+xt@isnttrp1:=isoutin(cut,[t:cut]natrp(t),xt):is(xt,nttofrp(rpofntt(xt),natrpi(xt)))
+@[x:nat]
+nttofnt:=nttofrp(rpofnt(x),natrpi"rp"(x)):natt
+[y:nat][i:is"n"(x,y)]
+isntentt:=isrpentt(rpofnt(x),natrpi"rp"(x),rpofnt(y),natrpi"rp"(y),isnterp(x,y,i)):is(nttofnt(x),nttofnt(y))
+y@[i:is(nttofnt(x),nttofnt(y))]
+isntintt:=isntirp(x,y,isrpintt(rpofnt(x),natrpi"rp"(x),rpofnt(y),natrpi"rp"(y),i)):is"n"(x,y)
+xt@ntofntt:=ntofrp(rpofntt(xt),natrpi(xt)):nat
+yt@[i:is(xt,yt)]
+isnttent:=isrpent(rpofntt(xt),natrpi(xt),rpofntt(yt),natrpi(yt),isntterp(xt,yt,i)):is"n"(ntofntt(xt),ntofntt(yt))
+yt@[i:is"n"(ntofntt(xt),ntofntt(yt))]
+isnttint:=isnttirp(xt,yt,isrpint(rpofntt(xt),natrpi(xt),rpofntt(yt),natrpi(yt),i)):is(xt,yt)
++iii5
+x@t5:=isrpntt1(rpofnt(x),natrpi"rp"(x)):is"rp"(rpofnt(x),rpofntt(nttofnt(x)))
+t6:=isrpent(rpofnt(x),natrpi"rp"(x),rpofntt(nttofnt(x)),natrpi(nttofnt(x)),t5):is"n"(ntofrp(rpofnt(x),natrpi"rp"(x)),ntofntt(nttofnt(x)))
+-iii5
+x@isntntt1:=tris(nat,x,ntofrp(rpofnt(x),natrpi"rp"(x)),ntofntt(nttofnt(x)),isntrp1(x),t6".iii5"):is"n"(x,ntofntt(nttofnt(x)))
++*iii5
+xt@t7:=isrpnt1(rpofntt(xt),natrpi(xt)):is"rp"(rpofntt(xt),rpofnt(ntofntt(xt)))
+t8:=isrpentt(rpofntt(xt),natrpi(xt),rpofnt(ntofntt(xt)),natrpi"rp"(ntofntt(xt)),t7):is(nttofrp(rpofntt(xt),natrpi(xt)),nttofnt(ntofntt(xt)))
+-iii5
+xt@isnttnt1:=tris(natt,xt,nttofrp(rpofntt(xt),natrpi(xt)),nttofnt(ntofntt(xt)),isnttrp1(xt),t8".iii5"):is(xt,nttofnt(ntofntt(xt)))
+x@isntntt2:=symis(nat,x,ntofntt(nttofnt(x)),isntntt1):is"n"(ntofntt(nttofnt(x)),x)
+xt@isnttnt2:=symis(natt,xt,nttofnt(ntofntt(xt)),isnttnt1):is(nttofnt(ntofntt(xt)),xt)
+@1t:=nttofnt(1):natt
+suct:=[x:natt]nttofnt(<ntofntt(x)>suc):[x:natt]natt
++5156
+xt@[j:is(<xt>suct,1t)]
+t1:=isntintt(<ntofntt(xt)>suc,1,j):is"n"(<ntofntt(xt)>suc,1)
+-5156
+xt@satz156a:=th3"l.imp"(is(<xt>suct,1t),is"n"(<ntofntt(xt)>suc,1),<ntofntt(xt)>ax3,[t:is(<xt>suct,1t)]t1".5156"(t)):nis(<xt>suct,1t)
+yt@[i:is(<xt>suct,<yt>suct)]
++*5156
+i@t2:=isntintt(<ntofntt(xt)>suc,<ntofntt(yt)>suc,i):is"n"(<ntofntt(xt)>suc,<ntofntt(yt)>suc)
+-5156
+i@satz156b:=isnttint(xt,yt,<t2".5156"><ntofntt(yt)><ntofntt(xt)>ax4):is(xt,yt)
+@[st:set(natt)]
+cond1:=in(1t,st):'prop'
+cond2:=all([x:natt]imp(in(x,st),in(<x>suct,st))):'prop'
+[c1:cond1][c2:cond2]
++*5156
+c2@[x:nat]
+prop1:=in(nttofnt(x),st):'prop'
+[p:prop1(x)]
+t3:=<p><nttofnt(x)>c2:in(<nttofnt(x)>suct,st)
+t4:=isp(nat,[t:nat]in(nttofnt(<t>suc),st),ntofntt(nttofnt(x)),x,t3,isntntt2(x)):prop1(<x>suc)
+-5156
+c2@[xt:natt]
++*5156
+xt@t5:=induction([t:nat]prop1(t),c1,[t:nat][u:prop1(t)]t4(t,u),ntofntt(xt)):in(nttofnt(ntofntt(xt)),st)
+-5156
+xt@satz156c:=isp(natt,[t:natt]in(t,st),nttofnt(ntofntt(xt)),xt,t5".5156",isnttnt2(xt)):in(xt,st)
+@ax3t:=[x:natt]satz156a(x):[x:natt]nis(<x>suct,1t)
+ax4t:=[x:natt][y:natt][u:is(<x>suct,<y>suct)]satz156b(x,y,u):[x:natt][y:natt][u:is(<x>suct,<y>suct)]is(x,y)
+ax5t:=[s:set(natt)][u:cond1(s)][v:cond2(s)][x:natt]satz156c(s,u,v,x):[s:set(natt)][u:cond1(s)][v:cond2(s)][x:natt]in(x,s)
+-nt
++rtt
+@ratt:=ot(cut,[t:cut]ratrp(t)):'type'
+[ksi:cut][rtksi:ratrp(ksi)]
+rttofrp:=out(cut,[t:cut]ratrp(t),ksi,rtksi):ratt
+@[x0t:ratt][y0t:ratt]
+is:=is"e"(ratt,x0t,y0t):'prop'
+nis:=not(is(x0t,y0t)):'prop'
+@[p:[x:ratt]'prop']
+all:=all"l"(ratt,p):'prop'
+some:=some"l"(ratt,p):'prop'
+one:=one"e"(ratt,p):'prop'
+x0t@rpofrtt:=in"e"(cut,[t:cut]ratrp(t),x0t):cut
+ratrpi:=inp(cut,[t:cut]ratrp(t),x0t):ratrp(rpofrtt(x0t))
+rtksi@[eta:cut][rteta:ratrp(eta)][i:is"rp"(ksi,eta)]
+isrpertt:=isouti(cut,[t:cut]ratrp(t),ksi,rtksi,eta,rteta,i):is(rttofrp(ksi,rtksi),rttofrp(eta,rteta))
+rteta@[i:is(rttofrp(ksi,rtksi),rttofrp(eta,rteta))]
+isrpirtt:=isoute(cut,[t:cut]ratrp(t),ksi,rtksi,eta,rteta,i):is"rp"(ksi,eta)
+y0t@[i:is(x0t,y0t)]
+isrtterp:=isini(cut,[t:cut]ratrp(t),x0t,y0t,i):is"rp"(rpofrtt(x0t),rpofrtt(y0t))
+y0t@[i:is"rp"(rpofrtt(x0t),rpofrtt(y0t))]
+isrttirp:=isine(cut,[t:cut]ratrp(t),x0t,y0t,i):is(x0t,y0t)
+rtksi@isrprtt1:=isinout(cut,[t:cut]ratrp(t),ksi,rtksi):is"rp"(ksi,rpofrtt(rttofrp(ksi,rtksi)))
+x0t@isrttrp1:=isoutin(cut,[t:cut]ratrp(t),x0t):is(x0t,rttofrp(rpofrtt(x0t),ratrpi(x0t)))
+@[x0:rat]
+rttofrt:=rttofrp(rpofrt(x0),ratrpi"rp"(x0)):ratt
+[y0:rat][i:is"rt"(x0,y0)]
+isrtertt:=isrpertt(rpofrt(x0),ratrpi"rp"(x0),rpofrt(y0),ratrpi"rp"(y0),isrterp(x0,y0,i)):is(rttofrt(x0),rttofrt(y0))
+y0@[i:is(rttofrt(x0),rttofrt(y0))]
+isrtirtt:=isrtirp(x0,y0,isrpirtt(rpofrt(x0),ratrpi"rp"(x0),rpofrt(y0),ratrpi"rp"(y0),i)):is"rt"(x0,y0)
+x0t@rtofrtt:=rtofrp(rpofrtt(x0t),ratrpi(x0t)):rat
+y0t@[i:is(x0t,y0t)]
+isrttert:=isrpert(rpofrtt(x0t),ratrpi(x0t),rpofrtt(y0t),ratrpi(y0t),isrtterp(x0t,y0t,i)):is"rt"(rtofrtt(x0t),rtofrtt(y0t))
+y0t@[i:is"rt"(rtofrtt(x0t),rtofrtt(y0t))]
+isrttirt:=isrttirp(x0t,y0t,isrpirt(rpofrtt(x0t),ratrpi(x0t),rpofrtt(y0t),ratrpi(y0t),i)):is(x0t,y0t)
++iii5
+x0@t9:=isrprtt1(rpofrt(x0),ratrpi"rp"(x0)):is"rp"(rpofrt(x0),rpofrtt(rttofrt(x0)))
+t10:=isrpert(rpofrt(x0),ratrpi"rp"(x0),rpofrtt(rttofrt(x0)),ratrpi(rttofrt(x0)),t9):is"rt"(rtofrp(rpofrt(x0),ratrpi"rp"(x0)),rtofrtt(rttofrt(x0)))
+-iii5
+x0@isrtrtt1:=tris(rat,x0,rtofrp(rpofrt(x0),ratrpi"rp"(x0)),rtofrtt(rttofrt(x0)),isrtrp1(x0),t10".iii5"):is"rt"(x0,rtofrtt(rttofrt(x0)))
++*iii5
+x0t@t11:=isrprt1(rpofrtt(x0t),ratrpi(x0t)):is"rp"(rpofrtt(x0t),rpofrt(rtofrtt(x0t)))
+t12:=isrpertt(rpofrtt(x0t),ratrpi(x0t),rpofrt(rtofrtt(x0t)),ratrpi"rp"(rtofrtt(x0t)),t11):is(rttofrp(rpofrtt(x0t),ratrpi(x0t)),rttofrt(rtofrtt(x0t)))
+-iii5
+x0t@isrttrt1:=tris(ratt,x0t,rttofrp(rpofrtt(x0t),ratrpi(x0t)),rttofrt(rtofrtt(x0t)),isrttrp1(x0t),t12".iii5"):is(x0t,rttofrt(rtofrtt(x0t)))
+-rtt
+@[ksi:cut]
+example2:=satz153c(1rp,ksi):is(ts(ksi,ov(1rp,ksi)),1rp)
+[rtksi:ratrp(ksi)]
++5157
+x01:=rtofrp(ksi,rtksi):rat
+ksi@s1:=setof(rat,[x:rat]urt(ksi,x)):set(rat)
+rtksi@[y0:rat][i:in(y0,s1)]
+t1:=estie(rat,[x:rat]urt(ksi,x),y0,i):urt(ksi,y0)
+[m:more"rt"(x01,y0)]
+t2:=lrtrpofrt(x01,y0,satz82(x01,y0,m)):lrt(rpofrt(x01),y0)
+t3:=isp(cut,[x:cut]lrt(x,y0),rpofrt(x01),ksi,t2,isrprt2(ksi,rtksi)):lrt(ksi,y0)
+i@t4:=th3"l.imp"(more"rt"(x01,y0),lrt(ksi,y0),t1,[t:more"rt"(x01,y0)]t3(t)):not(more"rt"(x01,y0))
+t5:=satz81e(x01,y0,t4):lessis"rt"(x01,y0)
+rtksi@t6:=[x:rat][t:in(x,s1)]t5(x,t):lb(s1,x01)
+t7:=urtrpofrt(x01,x01,moreisi2"rt"(x01,x01,refis(rat,x01))):urt(rpofrt(x01),x01)
+t8:=isp(cut,[x:cut]urt(x,x01),rpofrt(x01),ksi,t7,isrprt2(ksi,rtksi)):urt(ksi,x01)
+t9:=estii(rat,[x:rat]urt(ksi,x),x01,t8):in(x01,s1)
+t10:=andi(lb(s1,x01),in(x01,s1),t6,t9):min(s1,x01)
+-5157
+satz157a:=t10".5157":min(setof(rat,[x:rat]urt(ksi,x)),rtofrp(ksi,rtksi))
+satz157b:=somei(rat,[x:rat]min(s1".5157",x),x01".5157",t10".5157"):some"rt"([x:rat]min(setof(rat,[y:rat]urt(ksi,y)),x))
+ksi@[x0:rat][m:min(setof(rat,[x:rat]urt(ksi,x)),x0)]
++*5157
+m"rp"@t11:=ande1(lb(s1,x0),in(x0,s1),m):lb(s1,x0)
+t12:=ande2(lb(s1,x0),in(x0,s1),m):in(x0,s1)
+t13:=estie(rat,[x:rat]urt(ksi,x),x0,t12):urt(ksi,x0)
+[y0:rat][ly:lrt(ksi,y0)]
+t14:=cutapp2a(ksi,y0,ly,x0,t13):less"rt"(y0,x0)
+t15:=lrtrpofrt(x0,y0,t14):lrt(rpofrt(x0),y0)
+y0@[uy:urt(ksi,y0)]
+t17:=estii(rat,[x:rat]urt(ksi,x),y0,uy):in(y0,s1)
+t18:=satz85(x0,y0,<t17><y0>t11):moreis"rt"(y0,x0)
+t19:=urtrpofrt(x0,y0,t18):urt(rpofrt(x0),y0)
+y0@t20:=cp(lrt(rpofrt(x0),y0),lrt(ksi,y0),[t:urt(ksi,y0)]t19(t)):imp(lrt(rpofrt(x0),y0),lrt(ksi,y0))
+-5157
+m@satz157c:=isi1(ksi,rpofrt(x0),[x:rat][t:lrt(ksi,x)]t15".5157"(x,t),[x:rat]t20".5157"(x)):is(ksi,rpofrt(x0))
+ksi@[s:some"rt"([x:rat]min(setof(rat,[y:rat]urt(ksi,y)),x))]
++*5157
+s@[x0:rat][m:min(s1,x0)]
+t21:=somei(rat,[x:rat]is(ksi,rpofrt(x)),x0,satz157c(x0,m)):ratrp(ksi)
+-5157
+s@satz157d:=someapp(rat,[x:rat]min(s1".5157",x),s,ratrp(ksi),[x:rat][t:min(s1".5157",x)]t21".5157"(x,t)):ratrp(ksi)
+ksi@[x0:rat][lx:lrt(ksi,x0)]
++5158
+x0@xr:=rpofrt(x0):cut
+lx@t1:=urtrpofrt(x0,x0,moreisi2"rt"(x0,x0,refis(rat,x0))):urt(xr,x0)
+t2:=andi(urt(xr,x0),lrt(ksi,x0),t1,lx):and(urt(xr,x0),lrt(ksi,x0))
+-5158
+satz158a:=somei(rat,[x:rat]and(urt(rpofrt(x0),x),lrt(ksi,x)),x0,t2".5158"):less(rpofrt(x0),ksi)
+x0@[ux:urt(ksi,x0)]
++*5158
+ux@s1:=setof(rat,[x:rat]urt(ksi,x)):set(rat)
+[m:min(s1,x0)]
+t3:=symis(cut,ksi,xr,satz157c(ksi,x0,m)):is(xr,ksi)
+t4:=moreisi2(xr,ksi,t3):moreis(xr,ksi)
+ux@[n:not(min(s1,x0))]
+t5:=estii(rat,[x:rat]urt(ksi,x),x0,ux):in(x0,s1)
+t6:=th4"l.and"(lb(s1,x0),in(x0,s1),n,t5):not(lb(s1,x0))
+t7:=th1"l.some"(rat,[x:rat]imp(in(x,s1),lessis"rt"(x0,x)),t6):some"rt"([x:rat]not(imp(in(x,s1),lessis"rt"(x0,x))))
+[y0:rat][o:not(imp(in(y0,s1),lessis"rt"(x0,y0)))]
+t8:=th5"l.imp"(in(y0,s1),lessis"rt"(x0,y0),o):in(y0,s1)
+t9:=estie(rat,[x:rat]urt(ksi,x),y0,t8):urt(ksi,y0)
+t10:=th6"l.imp"(in(y0,s1),lessis"rt"(x0,y0),o):not(lessis"rt"(x0,y0))
+t11:=satz82(x0,y0,satz81k(x0,y0,t10)):less"rt"(y0,x0)
+t12:=lrtrpofrt(x0,y0,t11):lrt(xr,y0)
+t13:=andi(lrt(xr,y0),urt(ksi,y0),t12,t9):and(lrt(xr,y0),urt(ksi,y0))
+t14:=somei(rat,[x:rat]and(lrt(xr,x),urt(ksi,x)),y0,t13):more(xr,ksi)
+n@t15:=someapp(rat,[x:rat]not(imp(in(x,s1),lessis"rt"(x0,x))),t7,more(xr,ksi),[x:rat][t:not(imp(in(x,s1),lessis"rt"(x0,x)))]t14(x,t)):more(xr,ksi)
+t16:=moreisi1(xr,ksi,t15):moreis(xr,ksi)
+-5158
+ux@satz158b:=th1"l.imp"(min(s1".5158",x0),moreis(rpofrt(x0),ksi),[t:min(s1".5158",x0)]t4".5158"(t),[t:not(min(s1".5158",x0))]t16".5158"(t)):moreis(rpofrt(x0),ksi)
+x0@[l:less(rpofrt(x0),ksi)]
++*5158
+l@t17:=satz123h(xr,ksi,l):not(moreis(xr,ksi))
+t18:=th3"l.imp"(urt(ksi,x0),moreis(xr,ksi),t17,[t:urt(ksi,x0)]satz158b(t)):not(urt(ksi,x0))
+-5158
+l@satz158c:=et(lrt(ksi,x0),t18".5158"):lrt(ksi,x0)
+x0@[m:moreis(rpofrt(x0),ksi)]
++*5158
+m"rp"@t19:=satz123c(xr,ksi,m):not(less(xr,ksi))
+-5158
+m@satz158d:=th3"l.imp"(lrt(ksi,x0),less(rpofrt(x0),ksi),t19".5158",[t:lrt(ksi,x0)]satz158a(t)):urt(ksi,x0)
+ksi@[eta:cut][l:less(ksi,eta)]
++5159
+[x0:rat]
+xr:=rpofrt(x0):cut
+[ux:urt(ksi,x0)][lx:lrt(eta,x0)][z0:rat]
+zr:=rpofrt(z0):cut
+[lz:lrt(eta,z0)][k:less"rt"(x0,z0)]
+t1:=satz127a(ksi,xr,zr,satz124(xr,ksi,satz158b(ksi,x0,ux)),satz154c(x0,z0,k)):less(ksi,zr)
+t2:=andi(less(ksi,zr),less(zr,eta),t1,satz158a(eta,z0,lz)):and(less(ksi,zr),less(zr,eta))
+t3:=somei(rat,[x:rat]and(less(ksi,rpofrt(x)),less(rpofrt(x),eta)),z0,t2):some"rt"([x:rat]and(less(ksi,rpofrt(x)),less(rpofrt(x),eta)))
+lx@t4:=cutapp3(eta,x0,lx,some"rt"([x:rat]and(less(ksi,rpofrt(x)),less(rpofrt(x),eta))),[x:rat][t:lrt(eta,x)][u:less"rt"(x0,x)]t3(x,t,u)):some"rt"([x:rat]and(less(ksi,rpofrt(x)),less(rpofrt(x),eta)))
+-5159
+satz159:=lessapp(ksi,eta,l,some"rt"([x:rat]and(less(ksi,rpofrt(x)),less(rpofrt(x),eta))),[x:rat][t:urt(ksi,x)][u:lrt(eta,x)]t4".5159"(x,t,u)):some"rt"([x:rat]and(less(ksi,rpofrt(x)),less(rpofrt(x),eta)))
++*5159
+x0@[a:and(less(ksi,xr),less(xr,eta))]
+t5:=andi(ratrp(xr),and(less(ksi,xr),less(xr,eta)),ratrpi(x0),a):and3(ratrp(xr),less(ksi,xr),less(xr,eta))
+t6:=somei(cut,[c:cut]and3(ratrp(c),less(ksi,c),less(c,eta)),xr,t5):some([c:cut]and3(ratrp(c),less(ksi,c),less(c,eta)))
+-5159
+l@satz159a:=someapp(rat,[x:rat]and(less(ksi,rpofrt(x)),less(rpofrt(x),eta)),satz159,some([a:cut]and3(ratrp(a),less(ksi,a),less(a,eta))),[x:rat][t:and(less(ksi,rpofrt(x)),less(rpofrt(x),eta))]t6".5159"(x,t)):some([a:cut]and3(ratrp(a),less(ksi,a),less(a,eta)))
+[p:'prop'][p1:[x:rat][t:less(ksi,rpofrt(x))][u:less(rpofrt(x),eta)]p]
++*5159
+p1@[y0:rat]
+yr:=rpofrt(y0):cut
+[a:and(less(ksi,yr),less(yr,eta))]
+t7:=ande1(less(ksi,yr),less(yr,eta),a):less(ksi,yr)
+t8:=ande2(less(ksi,yr),less(yr,eta),a):less(yr,eta)
+t9:=<t8><t7><y0>p1:p
+-5159
+p1@satz159app:=someapp(rat,[x:rat]and(less(ksi,rpofrt(x)),less(rpofrt(x),eta)),satz159,p,[x:rat][t:and(less(ksi,rpofrt(x)),less(rpofrt(x),eta))]t9".5159"(x,t)):p
+eta@[z0:rat][m:more(rpofrt(z0),ts(ksi,eta))]
++5160
+zr:=rpofrt(z0):cut
+nm:=mn(zr,ts(ksi,eta),m):cut
+dn:=pl(pl(ksi,eta),1rp):cut
+fr:=ov(nm,dn):cut
+zeta:=ite(less(fr,1rp),cut,fr,1rp):cut
+[l:less(fr,1rp)]
+t1:=itet(less(fr,1rp),cut,fr,1rp,l):is(zeta,fr)
+t2:=lessisi2(zeta,fr,t1):lessis(zeta,fr)
+t3:=lessisi1(zeta,1rp,satz127a(zeta,fr,1rp,t2,l)):lessis(zeta,1rp)
+m@[n:not(less(fr,1rp))]
+t4:=itef(less(fr,1rp),cut,fr,1rp,n):is(zeta,1rp)
+t5:=lessisi2(zeta,1rp,t4):lessis(zeta,1rp)
+t6:=trlessis(zeta,1rp,fr,t5,satz124(fr,1rp,satz123f(fr,1rp,n))):lessis(zeta,fr)
+m@t7:=th1"l.imp"(less(fr,1rp),lessis(zeta,1rp),[t:less(fr,1rp)]t3(t),[t:not(less(fr,1rp))]t5(t)):lessis(zeta,1rp)
+t8:=th1"l.imp"(less(fr,1rp),lessis(zeta,fr),[t:less(fr,1rp)]t2(t),[t:not(less(fr,1rp))]t6(t)):lessis(zeta,fr)
+[z1:rat]
+zr1:=rpofrt(z1):cut
+[l1:less(ksi,zr1)][l2:less(zr1,pl(ksi,zeta))][z2:rat]
+zr2:=rpofrt(z2):cut
+[l3:less(eta,zr2)][l4:less(zr2,pl(eta,zeta))]
+t9:=isless2(ts(pl(ksi,zeta),pl(eta,zeta)),pl(ts(pl(ksi,zeta),eta),ts(pl(ksi,zeta),zeta)),ts(zr1,zr2),disttp2(pl(ksi,zeta),eta,zeta),satz147a(zr1,pl(ksi,zeta),zr2,pl(eta,zeta),l2,l4)):less(ts(zr1,zr2),pl(ts(pl(ksi,zeta),eta),ts(pl(ksi,zeta),zeta)))
+t10:=lessisi2(ts(pl(ksi,zeta),eta),pl(ts(ksi,eta),ts(eta,zeta)),tris(cut,ts(pl(ksi,zeta),eta),pl(ts(ksi,eta),ts(zeta,eta)),pl(ts(ksi,eta),ts(eta,zeta)),disttp1(ksi,zeta,eta),ispl2(ts(zeta,eta),ts(eta,zeta),ts(ksi,eta),comts(zeta,eta)))):lessis(ts(pl(ksi,zeta),eta),pl(ts(ksi,eta),ts(eta,zeta)))
+t11:=satz149a(pl(ksi,zeta),pl(ksi,1rp),zeta,zeta,satz139a(ksi,ksi,zeta,1rp,lessisi2(ksi,ksi,refis(cut,ksi)),t7),lessisi2(zeta,zeta,refis(cut,zeta))):lessis(ts(pl(ksi,zeta),zeta),ts(pl(ksi,1rp),zeta))
+t12:=satz139a(ts(pl(ksi,zeta),eta),pl(ts(ksi,eta),ts(eta,zeta)),ts(pl(ksi,zeta),zeta),ts(pl(ksi,1rp),zeta),t10,t11):lessis(pl(ts(pl(ksi,zeta),eta),ts(pl(ksi,zeta),zeta)),pl(pl(ts(ksi,eta),ts(eta,zeta)),ts(pl(ksi,1rp),zeta)))
+t13:=satz127b(ts(zr1,zr2),pl(ts(pl(ksi,zeta),eta),ts(pl(ksi,zeta),zeta)),pl(pl(ts(ksi,eta),ts(eta,zeta)),ts(pl(ksi,1rp),zeta)),t9,t12):less(ts(zr1,zr2),pl(pl(ts(ksi,eta),ts(eta,zeta)),ts(pl(ksi,1rp),zeta)))
+t14:=tris(cut,pl(eta,pl(ksi,1rp)),pl(pl(eta,ksi),1rp),pl(pl(ksi,eta),1rp),asspl2(eta,ksi,1rp),ispl1(pl(eta,ksi),pl(ksi,eta),1rp,compl(eta,ksi))):is(pl(eta,pl(ksi,1rp)),dn)
+t15:=tris(cut,pl(ts(eta,zeta),ts(pl(ksi,1rp),zeta)),ts(pl(eta,pl(ksi,1rp)),zeta),ts(dn,zeta),distpt1(eta,pl(ksi,1rp),zeta),ists1(pl(eta,pl(ksi,1rp)),dn,zeta,t14)):is(pl(ts(eta,zeta),ts(pl(ksi,1rp),zeta)),ts(dn,zeta))
+t16:=tris(cut,pl(pl(ts(ksi,eta),ts(eta,zeta)),ts(pl(ksi,1rp),zeta)),pl(ts(ksi,eta),pl(ts(eta,zeta),ts(pl(ksi,1rp),zeta))),pl(ts(ksi,eta),ts(dn,zeta)),asspl1(ts(ksi,eta),ts(eta,zeta),ts(pl(ksi,1rp),zeta)),ispl2(pl(ts(eta,zeta),ts(pl(ksi,1rp),zeta)),ts(dn,zeta),ts(ksi,eta),t15)):is(pl(pl(ts(ksi,eta),ts(eta,zeta)),ts(pl(ksi,1rp),zeta)),pl(ts(ksi,eta),ts(dn,zeta)))
+t17:=isless2(pl(pl(ts(ksi,eta),ts(eta,zeta)),ts(pl(ksi,1rp),zeta)),pl(ts(ksi,eta),ts(dn,zeta)),ts(zr1,zr2),t16,t13):less(ts(zr1,zr2),pl(ts(ksi,eta),ts(dn,zeta)))
+t18:=islessis12(ts(zeta,dn),ts(dn,zeta),ts(fr,dn),nm,comts(zeta,dn),satz153e(nm,dn),satz149a(zeta,fr,dn,dn,t8,lessisi2(dn,dn,refis(cut,dn)))):lessis(ts(dn,zeta),nm)
+t19:=satz139a(ts(ksi,eta),ts(ksi,eta),ts(dn,zeta),nm,lessisi2(ts(ksi,eta),ts(ksi,eta),refis(cut,ts(ksi,eta))),t18):lessis(pl(ts(ksi,eta),ts(dn,zeta)),pl(ts(ksi,eta),nm))
+t20:=satz127b(ts(zr1,zr2),pl(ts(ksi,eta),ts(dn,zeta)),pl(ts(ksi,eta),nm),t17,t19):less(ts(zr1,zr2),pl(ts(ksi,eta),nm))
+t21:=isless2(pl(ts(ksi,eta),nm),zr,ts(zr1,zr2),satz140c(zr,ts(ksi,eta),m),t20):less(ts(zr1,zr2),zr)
+t22:=satz154f(ts"rt"(z1,z2),z0,isless1(ts(zr1,zr2),rpofrt(ts"rt"(z1,z2)),zr,symis(cut,rpofrt(ts"rt"(z1,z2)),ts(zr1,zr2),satz155c(z1,z2)),t21)):less"rt"(ts"rt"(z1,z2),z0)
+x0:=ov"rt"(z0,z2):rat
+xr:=rpofrt(x0):cut
+y0:=z2:rat
+yr:=rpofrt(y0):cut
+t23:=satz110e(z0,z2):is"rt"(ts"rt"(x0,y0),z0)
+t24:=ismore1"rt"(z0,ts"rt"(x0,z2),ts"rt"(z1,z2),symis(rat,ts"rt"(x0,z2),z0,t23),satz83(ts"rt"(z1,z2),z0,t22)):more"rt"(ts"rt"(x0,z2),ts"rt"(z1,z2))
+t25:=satz106a(x0,z1,z2,t24):more"rt"(x0,z1)
+t26:=trmore(xr,zr1,ksi,satz154a(x0,z1,t25),satz122(ksi,zr1,l1)):more(xr,ksi)
+t27:=satz122(eta,yr,l3):more(yr,eta)
+z0@[u0:rat]
+ur:=rpofrt(u0):cut
+[v0:rat]
+vr:=rpofrt(v0):cut
+prop1:=and3(more(ur,ksi),more(vr,eta),is"rt"(ts"rt"(u0,v0),z0)):'prop'
+z0@prop2:=some"rt"([x:rat]some"rt"([y:rat]prop1(x,y))):'prop'
+l4@t28:=and3i(more(xr,ksi),more(yr,eta),is"rt"(ts"rt"(x0,y0),z0),t26,t27,t23):prop1(x0,y0)
+t29:=somei(rat,[y:rat]prop1(x0,y),y0,t28):some"rt"([y:rat]prop1(x0,y))
+t30:=somei(rat,[x:rat]some"rt"([y:rat]prop1(x,y)),x0,t29):prop2
+l2@t31:=satz159app(eta,pl(eta,zeta),satz133a(eta,zeta),prop2,[x:rat][t:less(eta,rpofrt(x))][u:less(rpofrt(x),pl(eta,zeta))]t30(x,t,u)):prop2
+-5160
+satz160:=satz159app(ksi,pl(ksi,zeta".5160"),satz133a(ksi,zeta".5160"),prop2".5160",[x:rat][t:less(ksi,rpofrt(x))][u:less(rpofrt(x),pl(ksi,zeta".5160"))]t31".5160"(x,t,u)):some"rt"([x:rat]some"rt"([y:rat]and3(more(rpofrt(x),ksi),more(rpofrt(y),eta),is"rt"(ts"rt"(x,y),z0))))
+[p:'prop'][p1:[x:rat][t:more(rpofrt(x),ksi)][y:rat][u:more(rpofrt(y),eta)][v:is"rt"(ts"rt"(x,y),z0)]p]
++*5160
+p1@[x1:rat]
+xr1:=rpofrt(x1):cut
+[px:some"rt"([y:rat]prop1(x1,y))][y1:rat]
+yr1:=rpofrt(y1):cut
+[py:prop1(x1,y1)]
+t32:=and3e1(more(xr1,ksi),more(yr1,eta),is"rt"(ts"rt"(x1,y1),z0),py):more(xr1,ksi)
+t33:=and3e2(more(xr1,ksi),more(yr1,eta),is"rt"(ts"rt"(x1,y1),z0),py):more(yr1,eta)
+t34:=and3e3(more(xr1,ksi),more(yr1,eta),is"rt"(ts"rt"(x1,y1),z0),py):is"rt"(ts"rt"(x1,y1),z0)
+t35:=<t34><t33><y1><t32><x1>p1:p
+px@t36:=someapp(rat,[y:rat]prop1(x1,y),px,p,[y:rat][v:prop1(x1,y)]t35(y,v)):p
+-5160
+p1@satz160app:=someapp(rat,[x:rat]some"rt"([y:rat]prop1".5160"(x,y)),satz160,p,[x:rat][t:some"rt"([y:rat]prop1".5160"(x,y))]t36".5160"(x,t)):p
++5161
+@[ksi:cut][eta:cut]
+min:=ite(less(ksi,eta),cut,ksi,eta):cut
+max:=ite(more(ksi,eta),cut,ksi,eta):cut
+[u0:rat]
+ur:=rpofrt(u0):cut
+[lu:lrt(min,u0)]
+t1:=satz158a(min,u0,lu):less(ur,min)
+[l:less(ksi,eta)]
+t2:=isless2(min,ksi,ur,itet(less(ksi,eta),cut,ksi,eta,l),t1):less(ur,ksi)
+t3:=trless(ur,ksi,eta,t2,l):less(ur,eta)
+lu@[n:not(less(ksi,eta))]
+t4:=isless2(min,eta,ur,itef(less(ksi,eta),cut,ksi,eta,n),t1):less(ur,eta)
+t5:=satz127b(ur,eta,ksi,t4,satz124(ksi,eta,satz123f(ksi,eta,n))):less(ur,ksi)
+lu@t6:=th1"l.imp"(less(ksi,eta),less(ur,ksi),[t:less(ksi,eta)]t2(t),[t:not(less(ksi,eta))]t5(t)):less(ur,ksi)
+t7:=th1"l.imp"(less(ksi,eta),less(ur,eta),[t:less(ksi,eta)]t3(t),[t:not(less(ksi,eta))]t4(t)):less(ur,eta)
+u0@[uu:urt(max,u0)]
+t8:=satz158b(max,u0,uu):moreis(ur,max)
+[m:more(ksi,eta)]
+t9:=ismoreis2(max,ksi,ur,itet(more(ksi,eta),cut,ksi,eta,m),t8):moreis(ur,ksi)
+t10:=trmoreis(ur,ksi,eta,t9,moreisi1(ksi,eta,m)):moreis(ur,eta)
+uu@[n:not(more(ksi,eta))]
+t11:=ismoreis2(max,eta,ur,itef(more(ksi,eta),cut,ksi,eta,n),t8):moreis(ur,eta)
+t12:=trmoreis(ur,eta,ksi,t11,satz125(ksi,eta,satz123e(ksi,eta,n))):moreis(ur,ksi)
+uu@t13:=th1"l.imp"(more(ksi,eta),moreis(ur,ksi),[t:more(ksi,eta)]t9(t),[t:not(more(ksi,eta))]t12(t)):moreis(ur,ksi)
+t14:=th1"l.imp"(more(ksi,eta),moreis(ur,eta),[t:more(ksi,eta)]t10(t),[t:not(more(ksi,eta))]t11(t)):moreis(ur,eta)
+-5161
+@[zeta:cut]
++*5161
+zeta@[ksi1:cut][ksi2:cut][m:more(ksi1,ksi2)]
+t15:=satz147(ksi1,ksi2,ksi1,ksi2,m,m):more(ts(ksi1,ksi1),ts(ksi2,ksi2))
+ksi2@sq1:=ts(ksi1,ksi1):cut
+sq2:=ts(ksi2,ksi2):cut
+m@t16:=ec3e21(is(sq1,sq2),more(sq1,sq2),less(sq1,sq2),satz123b(sq1,sq2),t15):nis(sq1,sq2)
+ksi2@[i:is(sq1,zeta)][j:is(sq2,zeta)]
+t17:=tris2(cut,sq1,sq2,zeta,i,j):is(sq1,sq2)
+t18:=[t:more(ksi1,ksi2)]<t17>t16(t):not(more(ksi1,ksi2))
+t19:=[t:less(ksi1,ksi2)]<symis(cut,sq1,sq2,t17)>t16(ksi2,ksi1,satz122(ksi1,ksi2,t)):not(less(ksi1,ksi2))
+t20:=or3e1(is(ksi1,ksi2),more(ksi1,ksi2),less(ksi1,ksi2),satz123a(ksi1,ksi2),t18,t19):is(ksi1,ksi2)
+zeta@t21:=[a:cut][b:cut][t:is(ts(a,a),zeta)][u:is(ts(b,b),zeta)]t20(a,b,t,u):amone(cut,[a:cut]is(ts(a,a),zeta))
+sqrtset:=setof(rat,[x:rat]less(ts(rpofrt(x),rpofrt(x)),zeta)):set(rat)
+[x0:rat]
+xr:=rpofrt(x0):cut
+[lx:lrt(min(1rp,zeta),x0)]
+t22:=t6(1rp,zeta,x0,lx):less(xr,1rp)
+t23:=t7(1rp,zeta,x0,lx):less(xr,zeta)
+t24:=isless1(xr,ts(xr,1rp),zeta,satz151a(xr),t23):less(ts(xr,1rp),zeta)
+t25:=trless(ts(xr,xr),ts(xr,1rp),zeta,satz148c(xr,xr,xr,1rp,lessisi2(xr,xr,refis(cut,xr)),t22),t24):less(ts(xr,xr),zeta)
+t26:=estii(rat,[x:rat]less(ts(rpofrt(x),rpofrt(x)),zeta),x0,t25):in(x0,sqrtset)
+x0@[ux:urt(max(1rp,zeta),x0)]
+t27:=t13(1rp,zeta,x0,ux):moreis(xr,1rp)
+t28:=t14(1rp,zeta,x0,ux):moreis(xr,zeta)
+t29:=ismoreis1(xr,ts(xr,1rp),zeta,satz151a(xr),t28):moreis(ts(xr,1rp),zeta)
+t30:=trmoreis(ts(xr,xr),ts(xr,1rp),zeta,satz149(xr,xr,xr,1rp,moreisi2(xr,xr,refis(cut,xr)),t27),t29):moreis(ts(xr,xr),zeta)
+t31:=satz123c(ts(xr,xr),zeta,t30):not(less(ts(xr,xr),zeta))
+t32:=th3"l.imp"(in(x0,sqrtset),less(ts(xr,xr),zeta),t31,[t:in(x0,sqrtset)]estie(rat,[x:rat]less(ts(rpofrt(x),rpofrt(x)),zeta),x0,t)):not(in(x0,sqrtset))
+x0@[i:in(x0,sqrtset)][y0:rat]
+yr:=rpofrt(y0):cut
+[l:less"rt"(y0,x0)]
+i@t33:=estie(rat,[x:rat]less(ts(rpofrt(x),rpofrt(x)),zeta),x0,i):less(ts(xr,xr),zeta)
+l@t34:=satz154c(y0,x0,l):less(yr,xr)
+t35:=trless(ts(yr,yr),ts(xr,xr),zeta,satz147a(yr,xr,yr,xr,t34,t34),t33):less(ts(yr,yr),zeta)
+t36:=estii(rat,[x:rat]less(ts(rpofrt(x),rpofrt(x)),zeta),y0,t35):in(y0,sqrtset)
+i@t37:=satz122(ts(xr,xr),zeta,t33):more(zeta,ts(xr,xr))
+nm:=mn(zeta,ts(xr,xr),t37):cut
+dn:=pl(xr,pl(xr,1rp)):cut
+fr:=ov(nm,dn):cut
+[z0:rat]
+zr:=rpofrt(z0):cut
+[lz:lrt(min(1rp,fr),z0)]
+t38:=t6(1rp,fr,z0,lz):less(zr,1rp)
+t39:=t7(1rp,fr,z0,lz):less(zr,fr)
+t40:=satz94(x0,z0):more"rt"(pl"rt"(x0,z0),x0)
+t41:=tris(cut,ts(rpofrt(pl"rt"(x0,z0)),rpofrt(pl"rt"(x0,z0))),ts(pl(xr,zr),pl(xr,zr)),pl(ts(pl(xr,zr),xr),ts(pl(xr,zr),zr)),ists12(rpofrt(pl"rt"(x0,z0)),pl(xr,zr),rpofrt(pl"rt"(x0,z0)),pl(xr,zr),satz155a(x0,z0),satz155a(x0,z0)),disttp2(pl(xr,zr),xr,zr)):is(ts(rpofrt(pl"rt"(x0,z0)),rpofrt(pl"rt"(x0,z0))),pl(ts(pl(xr,zr),xr),ts(pl(xr,zr),zr)))
+t42:=symis(cut,ts(rpofrt(pl"rt"(x0,z0)),rpofrt(pl"rt"(x0,z0))),pl(ts(pl(xr,zr),xr),ts(pl(xr,zr),zr)),t41):is(pl(ts(pl(xr,zr),xr),ts(pl(xr,zr),zr)),ts(rpofrt(pl"rt"(x0,z0)),rpofrt(pl"rt"(x0,z0))))
+t43:=lessisi2(ts(pl(xr,zr),xr),pl(ts(xr,xr),ts(xr,zr)),tris(cut,ts(pl(xr,zr),xr),pl(ts(xr,xr),ts(zr,xr)),pl(ts(xr,xr),ts(xr,zr)),disttp1(xr,zr,xr),ispl2(ts(zr,xr),ts(xr,zr),ts(xr,xr),comts(zr,xr)))):lessis(ts(pl(xr,zr),xr),pl(ts(xr,xr),ts(xr,zr)))
+t44:=satz145c(pl(xr,zr),pl(xr,1rp),zr,satz138c(xr,xr,zr,1rp,lessisi2(xr,xr,refis(cut,xr)),t38)):less(ts(pl(xr,zr),zr),ts(pl(xr,1rp),zr))
+t45:=satz138c(ts(pl(xr,zr),xr),pl(ts(xr,xr),ts(xr,zr)),ts(pl(xr,zr),zr),ts(pl(xr,1rp),zr),t43,t44):less(pl(ts(pl(xr,zr),xr),ts(pl(xr,zr),zr)),pl(pl(ts(xr,xr),ts(xr,zr)),ts(pl(xr,1rp),zr)))
+t46:=tris(cut,pl(pl(ts(xr,xr),ts(xr,zr)),ts(pl(xr,1rp),zr)),pl(ts(xr,xr),pl(ts(xr,zr),ts(pl(xr,1rp),zr))),pl(ts(xr,xr),ts(dn,zr)),asspl1(ts(xr,xr),ts(xr,zr),ts(pl(xr,1rp),zr)),ispl2(pl(ts(xr,zr),ts(pl(xr,1rp),zr)),ts(dn,zr),ts(xr,xr),distpt1(xr,pl(xr,1rp),zr))):is(pl(pl(ts(xr,xr),ts(xr,zr)),ts(pl(xr,1rp),zr)),pl(ts(xr,xr),ts(dn,zr)))
+t47:=isless12(pl(ts(pl(xr,zr),xr),ts(pl(xr,zr),zr)),ts(rpofrt(pl"rt"(x0,z0)),rpofrt(pl"rt"(x0,z0))),pl(pl(ts(xr,xr),ts(xr,zr)),ts(pl(xr,1rp),zr)),pl(ts(xr,xr),ts(dn,zr)),t42,t46,t45):less(ts(rpofrt(pl"rt"(x0,z0)),rpofrt(pl"rt"(x0,z0))),pl(ts(xr,xr),ts(dn,zr)))
+t48:=isless2(ts(dn,fr),nm,ts(dn,zr),satz153c(nm,dn),satz148c(dn,dn,zr,fr,lessisi2(dn,dn,refis(cut,dn)),t39)):less(ts(dn,zr),nm)
+t49:=satz138c(ts(xr,xr),ts(xr,xr),ts(dn,zr),nm,lessisi2(ts(xr,xr),ts(xr,xr),refis(cut,ts(xr,xr))),t48):less(pl(ts(xr,xr),ts(dn,zr)),pl(ts(xr,xr),nm))
+t50:=isless2(pl(ts(xr,xr),nm),zeta,pl(ts(xr,xr),ts(dn,zr)),satz140c(zeta,ts(xr,xr),t37),t49):less(pl(ts(xr,xr),ts(dn,zr)),zeta)
+t51:=trless(ts(rpofrt(pl"rt"(x0,z0)),rpofrt(pl"rt"(x0,z0))),pl(ts(xr,xr),ts(dn,zr)),zeta,t47,t50):less(ts(rpofrt(pl"rt"(x0,z0)),rpofrt(pl"rt"(x0,z0))),zeta)
+t52:=estii(rat,[x:rat]less(ts(rpofrt(x),rpofrt(x)),zeta),pl"rt"(x0,z0),t51):in(pl"rt"(x0,z0),sqrtset)
+t53:=andi(in(pl"rt"(x0,z0),sqrtset),more"rt"(pl"rt"(x0,z0),x0),t52,t40):and(in(pl"rt"(x0,z0),sqrtset),more"rt"(pl"rt"(x0,z0),x0))
+t54:=somei(rat,[y:rat]and(in(y,sqrtset),more"rt"(y,x0)),pl"rt"(x0,z0),t53):some"rt"([y:rat]and(in(y,sqrtset),more"rt"(y,x0)))
+i@t55:=cutapp1a(min(1rp,fr),some"rt"([y:rat]and(in(y,sqrtset),more"rt"(y,x0))),[x:rat][t:lrt(min(1rp,fr),x)]t54(x,t)):some"rt"([y:rat]and(in(y,sqrtset),more"rt"(y,x0)))
+x0@[lx:lrt(min(1rp,zeta),x0)][y0:rat][uy:urt(max(1rp,zeta),y0)]
+t56:=cut2(sqrtset,x0,t26(lx),y0,t32(y0,uy),[x:rat][t:in(x,sqrtset)][y:rat][u:less"rt"(y,x)]t36(x,t,y,u),[x:rat][t:in(x,sqrtset)]t55(x,t)):cutprop(sqrtset)
+lx@t57:=cutapp1b(max(1rp,zeta),cutprop(sqrtset),[y:rat][t:urt(max(1rp,zeta),y)]t56(y,t)):cutprop(sqrtset)
+zeta@t58:=cutapp1a(min(1rp,zeta),cutprop(sqrtset),[x:rat][t:lrt(min(1rp,zeta),x)]t57(x,t)):cutprop(sqrtset)
+rtc:=cutof(sqrtset,t58):cut
+@[x0:rat][y0:rat][l:lessis"rt"(x0,y0)]
+t59:=th9"l.or"(less"rt"(x0,y0),is"rt"(x0,y0),less(rpofrt(x0),rpofrt(y0)),is(rpofrt(x0),rpofrt(y0)),l,[t:less"rt"(x0,y0)]satz154c(x0,y0,t),[t:is"rt"(x0,y0)]satz154b(x0,y0,t)):lessis(rpofrt(x0),rpofrt(y0))
+y0@[m:moreis"rt"(x0,y0)]
+t60:=satz125(rpofrt(y0),rpofrt(x0),t59(y0,x0,satz84(x0,y0,m))):moreis(rpofrt(x0),rpofrt(y0))
+zeta@[m:more(ts(rtc,rtc),zeta)]
+t61:=satz121(ts(rtc,rtc),zeta,m):less(zeta,ts(rtc,rtc))
+[z1:rat]
+zr1:=rpofrt(z1):cut
+[l1:less(zeta,zr1)][l2:less(zr1,ts(rtc,rtc))]
+t62:=satz158c(ts(rtc,rtc),z1,l2):lrt(ts(rtc,rtc),z1)
+[x1:rat]
+xr1:=rpofrt(x1):cut
+[lx1:lrt(rtc,x1)][x2:rat]
+xr2:=rpofrt(x2):cut
+[lx2:lrt(rtc,x2)][i:is"rt"(z1,ts"rt"(x1,x2))]
+xm:=ite(more"rt"(x1,x2),rat,x1,x2):rat
+xrm:=rpofrt(xm):cut
+[o:more"rt"(x1,x2)]
+t63:=symis(rat,xm,x1,itet(more"rt"(x1,x2),rat,x1,x2,o)):is"rt"(x1,xm)
+t64:=isp(rat,[x:rat]lrt(rtc,x),x1,xm,lx1,t63):lrt(rtc,xm)
+t65:=lessisi2"rt"(x1,xm,t63):lessis"rt"(x1,xm)
+t66:=lessisi1"rt"(x2,xm,satz87b(x2,x1,xm,satz82(x1,x2,o),t65)):lessis"rt"(x2,xm)
+i@[n:not(more"rt"(x1,x2))]
+t67:=symis(rat,xm,x2,itef(more"rt"(x1,x2),rat,x1,x2,n)):is"rt"(x2,xm)
+t68:=isp(rat,[x:rat]lrt(rtc,x),x2,xm,lx2,t67):lrt(rtc,xm)
+t69:=lessisi2"rt"(x2,xm,t67):lessis"rt"(x2,xm)
+t70:=satz88(x1,x2,xm,satz81e(x1,x2,n),t69):lessis"rt"(x1,xm)
+i@t71:=th1"l.imp"(more"rt"(x1,x2),lrt(rtc,xm),[t:more"rt"(x1,x2)]t64(t),[t:not(more"rt"(x1,x2))]t68(t)):lrt(rtc,xm)
+t72:=th1"l.imp"(more"rt"(x1,x2),lessis"rt"(x1,xm),[t:more"rt"(x1,x2)]t65(t),[t:not(more"rt"(x1,x2))]t70(t)):lessis"rt"(x1,xm)
+t73:=th1"l.imp"(more"rt"(x1,x2),lessis"rt"(x2,xm),[t:more"rt"(x1,x2)]t66(t),[t:not(more"rt"(x1,x2))]t69(t)):lessis"rt"(x2,xm)
+t74:=ini(sqrtset,t58,xm,t71):in(xm,sqrtset)
+t75:=t59(x1,xm,t72):lessis(xr1,xrm)
+t76:=t59(x2,xm,t73):lessis(xr2,xrm)
+t77:=tris(cut,zr1,rpofrt(ts"rt"(x1,x2)),ts(xr1,xr2),satz154b(z1,ts"rt"(x1,x2),i),satz155c(x1,x2)):is(zr1,ts(xr1,xr2))
+t78:=islessis1(ts(xr1,xr2),zr1,ts(xrm,xrm),symis(cut,zr1,ts(xr1,xr2),t77),satz149a(xr1,xrm,xr2,xrm,t75,t76)):lessis(zr1,ts(xrm,xrm))
+t79:=estie(rat,[x:rat]less(ts(rpofrt(x),rpofrt(x)),zeta),xm,t74):less(ts(xrm,xrm),zeta)
+t80:=satz127a(zr1,ts(xrm,xrm),zeta,t78,t79):less(zr1,zeta)
+t81:=<t80>ec3e23(is(zr1,zeta),more(zr1,zeta),less(zr1,zeta),satz123b(zr1,zeta),satz122(zeta,zr1,l1)):con
+t82:=tsapp(rtc,rtc,z1,t62,con,[x:rat][t:lrt(rtc,x)][y:rat][u:lrt(rtc,y)][v:is"rt"(z1,ts"rt"(x,y))]t81(x,t,y,u,v)):con
+l2@t82a:=tsapp(rtc,rtc,z1,t62,con,[x:rat][t:lrt(rtc,x)][y:rat][u:lrt(rtc,y)][v:is"rt"(z1,ts"rt"(x,y))]t82(x,t,y,u,v)):con
+m@t83:=satz159app(zeta,ts(rtc,rtc),t61,con,[x:rat][t:less(zeta,rpofrt(x))][u:less(rpofrt(x),ts(rtc,rtc))]t82a(x,t,u)):con
+zeta@[l:less(ts(rtc,rtc),zeta)][z2:rat]
+zr2:=rpofrt(z2):cut
+[l3:less(ts(rtc,rtc),zr2)][l4:less(zr2,zeta)]
+t84:=satz122(ts(rtc,rtc),zr2,l3):more(zr2,ts(rtc,rtc))
+[y1:rat]
+yr1:=rpofrt(y1):cut
+[m1:more(yr1,rtc)][y2:rat]
+yr2:=rpofrt(y2):cut
+[m2:more(yr2,rtc)][i:is"rt"(ts"rt"(y1,y2),z2)]
+ym:=ite(less"rt"(y1,y2),rat,y1,y2):rat
+yrm:=rpofrt(ym):cut
+[k:less"rt"(y1,y2)]
+t85:=symis(rat,ym,y1,itet(less"rt"(y1,y2),rat,y1,y2,k)):is"rt"(y1,ym)
+t86:=satz154b(y1,ym,t85):is(yr1,yrm)
+t87:=ismore1(yr1,yrm,rtc,t86,m1):more(yrm,rtc)
+t88:=moreisi2(yr1,yrm,t86):moreis(yr1,yrm)
+t89:=moreisi1(yr2,yrm,satz127d(yr2,yr1,yrm,satz122(yr1,yr2,satz154c(y1,y2,k)),t88)):moreis(yr2,yrm)
+i@[n:not(less"rt"(y1,y2))]
+t90:=symis(rat,ym,y2,itef(less"rt"(y1,y2),rat,y1,y2,n)):is"rt"(y2,ym)
+t91:=satz154b(y2,ym,t90):is(yr2,yrm)
+t92:=ismore1(yr2,yrm,rtc,t91,m2):more(yrm,rtc)
+t93:=moreisi2(yr2,yrm,t91):moreis(yr2,yrm)
+t94:=trmoreis(yr1,yr2,yrm,t60(y1,y2,satz81f(y1,y2,n)),t93):moreis(yr1,yrm)
+i@t95:=th1"l.imp"(less"rt"(y1,y2),more(yrm,rtc),[t:less"rt"(y1,y2)]t87(t),[t:not(less"rt"(y1,y2))]t92(t)):more(yrm,rtc)
+t96:=th1"l.imp"(less"rt"(y1,y2),moreis(yr1,yrm),[t:less"rt"(y1,y2)]t88(t),[t:not(less"rt"(y1,y2))]t94(t)):moreis(yr1,yrm)
+t97:=th1"l.imp"(less"rt"(y1,y2),moreis(yr2,yrm),[t:less"rt"(y1,y2)]t89(t),[t:not(less"rt"(y1,y2))]t93(t)):moreis(yr2,yrm)
+t98:=satz158d(rtc,ym,moreisi1(yrm,rtc,t95)):urt(rtc,ym)
+t99:=th3"l.imp"(in(ym,sqrtset),lrt(rtc,ym),t98,[t:in(ym,sqrtset)]ine(sqrtset,t58,ym,t)):not(in(ym,sqrtset))
+t100:=th3"l.imp"(less(ts(yrm,yrm),zeta),in(ym,sqrtset),t99,[t:less(ts(yrm,yrm),zeta)]estii(rat,[x:rat]less(ts(rpofrt(x),rpofrt(x)),zeta),ym,t)):not(less(ts(yrm,yrm),zeta))
+t101:=satz123f(ts(yrm,yrm),zeta,t100):moreis(ts(yrm,yrm),zeta)
+t101a:=satz149(yr1,yrm,yr2,yrm,t96,t97):moreis(ts(yr1,yr2),ts(yrm,yrm))
+t102:=ismoreis1(ts(yr1,yr2),zr2,ts(yrm,yrm),tris(cut,ts(yr1,yr2),rpofrt(ts"rt"(y1,y2)),zr2,symis(cut,rpofrt(ts"rt"(y1,y2)),ts(yr1,yr2),satz155c(y1,y2)),satz154b(ts"rt"(y1,y2),z2,i)),t101a):moreis(zr2,ts(yrm,yrm))
+t103:=trmoreis(zr2,ts(yrm,yrm),zeta,t102,t101):moreis(zr2,zeta)
+t104:=<l4>satz123c(zr2,zeta,t103):con
+l4@t105:=satz160app(rtc,rtc,z2,t84,con,[x:rat][t:more(rpofrt(x),rtc)][y:rat][u:more(rpofrt(y),rtc)][v:is"rt"(ts"rt"(x,y),z2)]t104(x,t,y,u,v)):con
+l@t106:=satz159app(ts(rtc,rtc),zeta,l,con,[x:rat][t:less(ts(rtc,rtc),rpofrt(x))][u:less(rpofrt(x),zeta)]t105(x,t,u)):con
+zeta@t107:=or3e1(is(ts(rtc,rtc),zeta),more(ts(rtc,rtc),zeta),less(ts(rtc,rtc),zeta),satz123a(ts(rtc,rtc),zeta),[t:more(ts(rtc,rtc),zeta)]t83(t),[t:less(ts(rtc,rtc),zeta)]t106(t)):is(ts(rtc,rtc),zeta)
+t108:=somei(cut,[a:cut]is(ts(a,a),zeta),rtc,t107):some([a:cut]is(ts(a,a),zeta))
+-5161
+zeta@satz161:=onei(cut,[a:cut]is(ts(a,a),zeta),t21".5161",t108".5161"):one([a:cut]is(ts(a,a),zeta))
+@[ksi:cut]
+irratrp:=not(ratrp(ksi)):'prop'
+-rp
+-rt
++5162
+@[v:nat]
+t1:=tris(nat,pl(v,v),pl(ts(1,v),v),ts(<1>suc,v),ispl1(v,ts(1,v),v,satz28g(v)),satz28h(1,v)):is(pl(v,v),ts(<1>suc,v))
+t2:=isless2(pl(v,v),ts(<1>suc,v),v,t1,satz18a(v,v)):less(v,ts(<1>suc,v))
+[w:nat][l:less(ts(v,v),ts(w,w))]
+t3:=satz10j(v,w,th3"l.imp"(moreis(v,w),moreis(ts(v,v),ts(w,w)),satz10h(ts(v,v),ts(w,w),l),[t:moreis(v,w)]satz36(v,w,v,w,t,t))):less(v,w)
+w@t4:=tris(nat,ts(pl(v,w),v),pl(ts(v,v),ts(w,v)),pl(ts(v,v),ts(v,w)),disttp1(v,w,v),ispl2(ts(w,v),ts(v,w),ts(v,v),comts(w,v))):is(ts(pl(v,w),v),pl(ts(v,v),ts(v,w)))
+t5:=tr3is(nat,ts(pl(v,w),pl(v,w)),pl(ts(pl(v,w),v),ts(pl(v,w),w)),pl(pl(ts(v,v),ts(v,w)),pl(ts(v,w),ts(w,w))),pl(pl(pl(ts(v,v),ts(v,w)),ts(v,w)),ts(w,w)),disttp2(pl(v,w),v,w),ispl12(ts(pl(v,w),v),pl(ts(v,v),ts(v,w)),ts(pl(v,w),w),pl(ts(v,w),ts(w,w)),t4,disttp1(v,w,w)),asspl2(pl(ts(v,v),ts(v,w)),ts(v,w),ts(w,w))):is(ts(pl(v,w),pl(v,w)),pl(pl(pl(ts(v,v),ts(v,w)),ts(v,w)),ts(w,w)))
+t6:=tris(nat,pl(pl(ts(v,v),ts(v,w)),ts(v,w)),pl(ts(v,v),pl(ts(v,w),ts(v,w))),pl(ts(v,v),ts(<1>suc,ts(v,w))),asspl1(ts(v,v),ts(v,w),ts(v,w)),ispl2(pl(ts(v,w),ts(v,w)),ts(<1>suc,ts(v,w)),ts(v,v),t1(ts(v,w)))):is(pl(pl(ts(v,v),ts(v,w)),ts(v,w)),pl(ts(v,v),ts(<1>suc,ts(v,w))))
+nun:=tris(nat,ts(pl(v,w),pl(v,w)),pl(pl(pl(ts(v,v),ts(v,w)),ts(v,w)),ts(w,w)),pl(pl(ts(v,v),ts(<1>suc,ts(v,w))),ts(w,w)),t5,ispl1(pl(pl(ts(v,v),ts(v,w)),ts(v,w)),pl(ts(v,v),ts(<1>suc,ts(v,w))),ts(w,w),t6)):is(ts(pl(v,w),pl(v,w)),pl(pl(ts(v,v),ts(<1>suc,ts(v,w))),ts(w,w)))
+nun1:=symis(nat,ts(pl(v,w),pl(v,w)),pl(pl(ts(v,v),ts(<1>suc,ts(v,w))),ts(w,w)),nun):is(pl(pl(ts(v,v),ts(<1>suc,ts(v,w))),ts(w,w)),ts(pl(v,w),pl(v,w)))
+prop1:=eq(tf(fr(w,v),fr(w,v)),fr(<1>suc,1)):'prop'
+v@prop2:=some([t:nat]prop1(t)):'prop'
+@prop3:=some([u:nat]prop2(u)):'prop'
+[p:prop3]
+y:=ind(nat,[t:nat]min([u:nat]prop2(u),t),satz27a([u:nat]prop2(u),p)):nat
+t7:=oneax(nat,[t:nat]min([u:nat]prop2(u),t),satz27a([u:nat]prop2(u),p)):min([u:nat]prop2(u),y)
+t8:=ande1(lb([u:nat]prop2(u),y),prop2(y),t7):lb([u:nat]prop2(u),y)
+t9:=ande2(lb([u:nat]prop2(u),y),prop2(y),t7):prop2(y)
+[x:nat][q:prop1(y,x)]
+t10:=treq1(fr(<1>suc,1),fr(ts(x,x),ts(y,y)),tf(fr(x,y),fr(x,y)),q,tfeq12a(x,y,x,y)):eq(fr(<1>suc,1),fr(ts(x,x),ts(y,y)))
+t11:=tr4is(nat,ts(<1>suc,ts(y,y)),ts(num(fr(<1>suc,1)),den(fr(ts(x,x),ts(y,y)))),ts(num(fr(ts(x,x),ts(y,y))),den(fr(<1>suc,1))),ts(ts(x,x),1),ts(x,x),12isnd(<1>suc,1,ts(x,x),ts(y,y)),t10,ndis12(ts(x,x),ts(y,y),<1>suc,1),satz28a(ts(x,x))):is(ts(<1>suc,ts(y,y)),ts(x,x))
+t12:=isless2(ts(<1>suc,ts(y,y)),ts(x,x),ts(y,y),t11,t2(ts(y,y))):less(ts(y,y),ts(x,x))
+t13:=isless1(ts(ts(<1>suc,y),y),ts(x,x),ts(ts(<1>suc,y),ts(<1>suc,y)),tris(nat,ts(ts(<1>suc,y),y),ts(<1>suc,ts(y,y)),ts(x,x),assts1(<1>suc,y,y),t11),satz35c(ts(<1>suc,y),ts(<1>suc,y),y,ts(<1>suc,y),lessisi2(ts(<1>suc,y),ts(<1>suc,y),refis(nat,ts(<1>suc,y))),t2(y))):less(ts(x,x),ts(ts(<1>suc,y),ts(<1>suc,y)))
+t14:=t3(y,x,t12):less(y,x)
+t15:=t3(x,ts(<1>suc,y),t13):less(x,ts(<1>suc,y))
+[u:nat][i:is(x,pl(y,u))]
+t16:=isless12(x,pl(y,u),ts(<1>suc,y),pl(y,y),i,symis(nat,pl(y,y),ts(<1>suc,y),t1(y)),t15):less(pl(y,u),pl(y,y))
+t17:=satz20f(u,y,y,t16):less(u,y)
+[t:nat][j:is(y,pl(u,t))]
+t18:=symis(nat,y,pl(u,t),j):is(pl(u,t),y)
+t19:=tris(nat,ts(x,x),ts(pl(y,u),pl(y,u)),pl(pl(ts(y,y),ts(<1>suc,ts(y,u))),ts(u,u)),ists12(x,pl(y,u),x,pl(y,u),i,i),nun(y,u)):is(ts(x,x),pl(pl(ts(y,y),ts(<1>suc,ts(y,u))),ts(u,u)))
+t20:=tris(nat,pl(ts(x,x),ts(t,t)),pl(pl(pl(ts(y,y),ts(<1>suc,ts(y,u))),ts(u,u)),ts(t,t)),pl(pl(ts(y,y),ts(<1>suc,ts(y,u))),pl(ts(u,u),ts(t,t))),ispl1(ts(x,x),pl(pl(ts(y,y),ts(<1>suc,ts(y,u))),ts(u,u)),ts(t,t),t19),asspl1(pl(ts(y,y),ts(<1>suc,ts(y,u))),ts(u,u),ts(t,t))):is(pl(ts(x,x),ts(t,t)),pl(pl(ts(y,y),ts(<1>suc,ts(y,u))),pl(ts(u,u),ts(t,t))))
+t21:=tr3is(nat,ts(y,u),ts(u,y),ts(u,pl(u,t)),pl(ts(u,u),ts(u,t)),comts(y,u),ists2(y,pl(u,t),u,j),disttp2(u,u,t)):is(ts(y,u),pl(ts(u,u),ts(u,t)))
+t22:=tris(nat,ts(<1>suc,ts(y,u)),ts(<1>suc,pl(ts(u,u),ts(u,t))),pl(ts(<1>suc,ts(u,u)),ts(<1>suc,ts(u,t))),ists2(ts(y,u),pl(ts(u,u),ts(u,t)),<1>suc,t21),disttp2(<1>suc,ts(u,u),ts(u,t))):is(ts(<1>suc,ts(y,u)),pl(ts(<1>suc,ts(u,u)),ts(<1>suc,ts(u,t))))
+t23:=tris(nat,pl(ts(y,y),ts(<1>suc,ts(y,u))),pl(ts(y,y),pl(ts(<1>suc,ts(u,u)),ts(<1>suc,ts(u,t)))),pl(pl(ts(y,y),ts(<1>suc,ts(u,u))),ts(<1>suc,ts(u,t))),ispl2(ts(<1>suc,ts(y,u)),pl(ts(<1>suc,ts(u,u)),ts(<1>suc,ts(u,t))),ts(y,y),t22),asspl2(ts(y,y),ts(<1>suc,ts(u,u)),ts(<1>suc,ts(u,t)))):is(pl(ts(y,y),ts(<1>suc,ts(y,u))),pl(pl(ts(y,y),ts(<1>suc,ts(u,u))),ts(<1>suc,ts(u,t))))
+t24:=tr3is(nat,pl(ts(x,x),ts(t,t)),pl(pl(ts(y,y),ts(<1>suc,ts(y,u))),pl(ts(u,u),ts(t,t))),pl(pl(pl(ts(y,y),ts(<1>suc,ts(u,u))),ts(<1>suc,ts(u,t))),pl(ts(u,u),ts(t,t))),pl(pl(ts(y,y),ts(<1>suc,ts(u,u))),pl(ts(<1>suc,ts(u,t)),pl(ts(u,u),ts(t,t)))),t20,ispl1(pl(ts(y,y),ts(<1>suc,ts(y,u))),pl(pl(ts(y,y),ts(<1>suc,ts(u,u))),ts(<1>suc,ts(u,t))),pl(ts(u,u),ts(t,t)),t23),asspl1(pl(ts(y,y),ts(<1>suc,ts(u,u))),ts(<1>suc,ts(u,t)),pl(ts(u,u),ts(t,t)))):is(pl(ts(x,x),ts(t,t)),pl(pl(ts(y,y),ts(<1>suc,ts(u,u))),pl(ts(<1>suc,ts(u,t)),pl(ts(u,u),ts(t,t)))))
+t25:=tr4is(nat,pl(ts(<1>suc,ts(u,t)),pl(ts(u,u),ts(t,t))),pl(pl(ts(<1>suc,ts(u,t)),ts(u,u)),ts(t,t)),pl(pl(ts(u,u),ts(<1>suc,ts(u,t))),ts(t,t)),ts(pl(u,t),pl(u,t)),ts(y,y),asspl2(ts(<1>suc,ts(u,t)),ts(u,u),ts(t,t)),ispl1(pl(ts(<1>suc,ts(u,t)),ts(u,u)),pl(ts(u,u),ts(<1>suc,ts(u,t))),ts(t,t),compl(ts(<1>suc,ts(u,t)),ts(u,u))),nun1(u,t),ists12(pl(u,t),y,pl(u,t),y,t18,t18)):is(pl(ts(<1>suc,ts(u,t)),pl(ts(u,u),ts(t,t))),ts(y,y))
+t26:=tr4is(nat,pl(ts(x,x),ts(t,t)),pl(pl(ts(y,y),ts(<1>suc,ts(u,u))),pl(ts(<1>suc,ts(u,t)),pl(ts(u,u),ts(t,t)))),pl(pl(ts(y,y),ts(<1>suc,ts(u,u))),ts(y,y)),pl(ts(y,y),pl(ts(y,y),ts(<1>suc,ts(u,u)))),pl(pl(ts(y,y),ts(y,y)),ts(<1>suc,ts(u,u))),t24,ispl2(pl(ts(<1>suc,ts(u,t)),pl(ts(u,u),ts(t,t))),ts(y,y),pl(ts(y,y),ts(<1>suc,ts(u,u))),t25),compl(pl(ts(y,y),ts(<1>suc,ts(u,u))),ts(y,y)),asspl2(ts(y,y),ts(y,y),ts(<1>suc,ts(u,u)))):is(pl(ts(x,x),ts(t,t)),pl(pl(ts(y,y),ts(y,y)),ts(<1>suc,ts(u,u))))
+t27:=tris(nat,pl(ts(y,y),ts(y,y)),ts(<1>suc,ts(y,y)),ts(x,x),t1(ts(y,y)),t11):is(pl(ts(y,y),ts(y,y)),ts(x,x))
+t28:=tris(nat,pl(ts(x,x),ts(t,t)),pl(pl(ts(y,y),ts(y,y)),ts(<1>suc,ts(u,u))),pl(ts(x,x),ts(<1>suc,ts(u,u))),t26,ispl1(pl(ts(y,y),ts(y,y)),ts(x,x),ts(<1>suc,ts(u,u)),t27)):is(pl(ts(x,x),ts(t,t)),pl(ts(x,x),ts(<1>suc,ts(u,u))))
+t29:=satz20e(ts(t,t),ts(<1>suc,ts(u,u)),ts(x,x),t28):is(ts(t,t),ts(<1>suc,ts(u,u)))
+t30:=tr4is(nat,ts(num(fr(<1>suc,1)),den(fr(ts(t,t),ts(u,u)))),ts(<1>suc,ts(u,u)),ts(t,t),ts(ts(t,t),1),ts(num(fr(ts(t,t),ts(u,u))),den(fr(<1>suc,1))),ndis12(<1>suc,1,ts(t,t),ts(u,u)),symis(nat,ts(t,t),ts(<1>suc,ts(u,u)),t29),satz28e(ts(t,t)),12isnd(ts(t,t),ts(u,u),<1>suc,1)):eq(fr(<1>suc,1),fr(ts(t,t),ts(u,u)))
+t31:=treq2(tf(fr(t,u),fr(t,u)),fr(<1>suc,1),fr(ts(t,t),ts(u,u)),tfeq12a(t,u,t,u),t30):prop1(u,t)
+t32:=somei(nat,[v:nat]prop1(u,v),t,t31):prop2(u)
+t33:=<t32><u>t8:lessis(y,u)
+t34:=<t33>satz10g(y,u,satz12(u,y,t17)):con
+i@t35:=someapp(nat,[v:nat]diffprop(y,u,v),t17,con,[v:nat][w:diffprop(y,u,v)]t34(v,w)):con
+q@t36:=someapp(nat,[v:nat]diffprop(x,y,v),t14,con,[v:nat][w:diffprop(x,y,v)]t35(v,w)):con
+p@t37:=someapp(nat,[v:nat]prop1(y,v),t9,con,[v:nat][w:prop1(y,v)]t36(v,w)):con
+-5162
++*rt
++5162
+@[x0:rat][i:is(ts(x0,x0),rtofn(<1>suc))][x:frac][xix0:inf(x,class(x0))]
+t38:=ise(ts(x0,x0),rtofn(<1>suc),tf(x,x),fr(<1>suc,1),tict(x0,x0,x,x,xix0,xix0),inclass(fr(<1>suc,1)),i):eq"n"(tf(x,x),fr(<1>suc,1))
+t39:=refeq1(fr(num(x),den(x)),x,fris(x)):eq"n"(fr(num(x),den(x)),x)
+t40:=eqtf12(fr(num(x),den(x)),x,fr(num(x),den(x)),x,t39,t39):eq"n"(tf(fr(num(x),den(x)),fr(num(x),den(x))),tf(x,x))
+t41:=treq"n"(tf(fr(num(x),den(x)),fr(num(x),den(x))),tf(x,x),fr(<1>suc,1),t40,t38):prop1"n.5162"(den(x),num(x))
+t42:=somei(nat,[t:nat]prop1"n.5162"(den(x),t),num(x),t41):prop2"n.5162"(den(x))
+t43:=somei(nat,[t:nat]prop2"n.5162"(t),den(x),t42):prop3"n.5162"
+t44:=t37"n.5162"(t43):con
+i@t45:=ratapp1(x0,con,[x:frac][t:inf(x,class(x0))]t44(x,t)):con
+-5162
++*rp
++5162
+@ksi:=ind(cut,[a:cut]is(ts(a,a),rpofnt(<1>suc)),satz161(rpofnt(<1>suc))):cut
+t46:=oneax(cut,[a:cut]is(ts(a,a),rpofnt(<1>suc)),satz161(rpofnt(<1>suc))):is(ts(ksi,ksi),rpofnt(<1>suc))
+[r:ratrp(ksi)]
+x0:=rtofrp(ksi,r):rat
+t47:=tr3is(cut,rpofrt(ts"rt"(x0,x0)),ts(rpofrt(x0),rpofrt(x0)),ts(ksi,ksi),rpofnt(<1>suc),satz155c(x0,x0),ists12(rpofrt(x0),ksi,rpofrt(x0),ksi,isrprt2(ksi,r),isrprt2(ksi,r)),t46):is(rpofrt(ts"rt"(x0,x0)),rpofnt(<1>suc))
+t48:=isrtirp(ts"rt"(x0,x0),rtofn(<1>suc),t47):is"rt"(ts"rt"(x0,x0),rtofn(<1>suc))
+t49:=t45"rt.5162"(x0,t48):con
+-5162
+@satz162:=somei(cut,[a:cut]irratrp(a),ksi".5162",[t:ratrp(ksi".5162")]t49".5162"(t)):some([a:cut]irratrp(a))
+[zeta:cut]
+sqrt:=ind(cut,[a:cut]is(ts(a,a),zeta),satz161(zeta)):cut
+thsqrt1:=oneax(cut,[a:cut]is(ts(a,a),zeta),satz161(zeta)):is(ts(sqrt(zeta),sqrt(zeta)),zeta)
+[ksi:cut][i:is(ts(ksi,ksi),zeta)]
+thsqrt2:=t20".5161"(zeta,ksi,sqrt,i,thsqrt1):is(ksi,sqrt)
+@[ksi:cut][eta:cut][i:is(ksi,eta)]
+issqrt:=isf(cut,cut,[t:cut]sqrt(t),ksi,eta,i):is(sqrt(ksi),sqrt(eta))
+@[ksi:cut][nx:natrp(ksi)][eta:cut][ny:natrp(eta)]
++iiia
+x:=ntofrp(ksi,nx):nat
+y:=ntofrp(eta,ny):nat
+t1:=isrpnt1(ksi,nx):is(ksi,rpofnt(x))
+t2:=isrpnt1(eta,ny):is(eta,rpofnt(y))
+t3:=ispl12(ksi,rpofnt(x),eta,rpofnt(y),t1,t2):is(pl(ksi,eta),pl(rpofnt(x),rpofnt(y)))
+x0:=rtofn(x):rat
+y0:=rtofn(y):rat
+t4:=natrti(x):natrt(x0)
+t5:=natrti(y):natrt(y0)
+t6:=symis(cut,rpofrt(pl"rt"(x0,y0)),pl(rpofnt(x),rpofnt(y)),satz155a(x0,y0)):is(pl(rpofnt(x),rpofnt(y)),rpofrt(pl"rt"(x0,y0)))
+t7:=satz112d(x0,t4,y0,t5):natrt(pl"rt"(x0,y0))
+xpy:=nofrt(pl"rt"(x0,y0),t7):nat
+t8:=isrtn1(pl"rt"(x0,y0),t7):is"rt"(pl"rt"(x0,y0),rtofn(xpy))
+t9:=isrterp(pl"rt"(x0,y0),rtofn(xpy),t8):is(rpofrt(pl"rt"(x0,y0)),rpofnt(xpy))
+t10:=tr3is(cut,pl(ksi,eta),pl(rpofnt(x),rpofnt(y)),rpofrt(pl"rt"(x0,y0)),rpofnt(xpy),t3,t6,t9):is(pl(ksi,eta),rpofnt(xpy))
+-iiia
+natpl:=somei(nat,[t:nat]is(pl(ksi,eta),rpofnt(t)),xpy".iiia",t10".iiia"):natrp(pl(ksi,eta))
++*iiia
+ny@t11:=ists12(ksi,rpofnt(x),eta,rpofnt(y),t1,t2):is(ts(ksi,eta),ts(rpofnt(x),rpofnt(y)))
+t12:=symis(cut,rpofrt(ts"rt"(x0,y0)),ts(rpofnt(x),rpofnt(y)),satz155c(x0,y0)):is(ts(rpofnt(x),rpofnt(y)),rpofrt(ts"rt"(x0,y0)))
+t13:=satz112f(x0,t4,y0,t5):natrt(ts"rt"(x0,y0))
+xty:=nofrt(ts"rt"(x0,y0),t13):nat
+t14:=isrtn1(ts"rt"(x0,y0),t13):is"rt"(ts"rt"(x0,y0),rtofn(xty))
+t15:=isrterp(ts"rt"(x0,y0),rtofn(xty),t14):is(rpofrt(ts"rt"(x0,y0)),rpofnt(xty))
+t16:=tr3is(cut,ts(ksi,eta),ts(rpofnt(x),rpofnt(y)),rpofrt(ts"rt"(x0,y0)),rpofnt(xty),t11,t12,t15):is(ts(ksi,eta),rpofnt(xty))
+-iiia
+ny@natts:=somei(nat,[t:nat]is(ts(ksi,eta),rpofnt(t)),xty".iiia",t16".iiia"):natrp(ts(ksi,eta))
+[m:more(ksi,eta)]
++*iiia
+m@t17:=ismore12(ksi,rpofnt(x),eta,rpofnt(y),t1,t2,m):more(rpofnt(x),rpofnt(y))
+t18:=satz154d(x0,y0,t17):more"rt"(x0,y0)
+t20:=ismn12(ksi,rpofnt(x),eta,rpofnt(y),m,satz154a(x0,y0,t18),t1,t2):is(mn(ksi,eta,m),mn(rpofnt(x),rpofnt(y),satz154a(x0,y0,t18)))
+t21:=symis(cut,rpofrt(mn"rt"(x0,y0,t18)),mn(rpofnt(x),rpofnt(y),satz154a(x0,y0,t18)),satz155b(x0,y0,t18)):is(mn(rpofnt(x),rpofnt(y),satz154a(x0,y0,t18)),rpofrt(mn"rt"(x0,y0,t18)))
+t22:=satz112g(x0,t4,y0,t5,t18):natrt(mn"rt"(x0,y0,t18))
+xmy:=nofrt(mn"rt"(x0,y0,t18),t22):nat
+t23:=isrtn1(mn"rt"(x0,y0,t18),t22):is"rt"(mn"rt"(x0,y0,t18),rtofn(xmy))
+t24:=isrterp(mn"rt"(x0,y0,t18),rtofn(xmy),t23):is(rpofrt(mn"rt"(x0,y0,t18)),rpofnt(xmy))
+t25:=tr3is(cut,mn(ksi,eta,m),mn(rpofnt(x),rpofnt(y),satz154a(x0,y0,t18)),rpofrt(mn"rt"(x0,y0,t18)),rpofnt(xmy),t20,t21,t24):is(mn(ksi,eta,m),rpofnt(xmy))
+-iiia
+m@natmn:=somei(nat,[t:nat]is(mn(ksi,eta,m),rpofnt(t)),xmy".iiia",t25".iiia"):natrp(mn(ksi,eta,m))
+@[p:cut][q:cut][r:cut]
+3pl13:=tr3is(cut,pl(p,pl(q,r)),pl(pl(q,r),p),pl(pl(r,q),p),pl(r,pl(q,p)),compl(p,pl(q,r)),ispl1(pl(q,r),pl(r,q),p,compl(q,r)),asspl1(r,q,p)):is(pl(p,pl(q,r)),pl(r,pl(q,p)))
+[s:cut]
+4pl24:=tr3is(cut,pl(pl(p,q),pl(r,s)),pl(p,pl(q,pl(r,s))),pl(p,pl(s,pl(r,q))),pl(pl(p,s),pl(r,q)),asspl1(p,q,pl(r,s)),ispl2(pl(q,pl(r,s)),pl(s,pl(r,q)),p,3pl13(q,r,s)),asspl2(p,s,pl(r,q))):is(pl(pl(p,q),pl(r,s)),pl(pl(p,s),pl(r,q)))
+r@3pl12:=tr3is(cut,pl(p,pl(q,r)),pl(pl(p,q),r),pl(pl(q,p),r),pl(q,pl(p,r)),asspl2(p,q,r),ispl1(pl(p,q),pl(q,p),r,compl(p,q)),asspl1(q,p,r)):is(pl(p,pl(q,r)),pl(q,pl(p,r)))
+s@4pl23:=tr3is(cut,pl(pl(p,q),pl(r,s)),pl(p,pl(q,pl(r,s))),pl(p,pl(r,pl(q,s))),pl(pl(p,r),pl(q,s)),asspl1(p,q,pl(r,s)),ispl2(pl(q,pl(r,s)),pl(r,pl(q,s)),p,3pl12(q,r,s)),asspl2(p,r,pl(q,s))):is(pl(pl(p,q),pl(r,s)),pl(pl(p,r),pl(q,s)))
+r@3pl23:=tr3is(cut,pl(pl(p,q),r),pl(p,pl(q,r)),pl(p,pl(r,q)),pl(pl(p,r),q),asspl1(p,q,r),ispl2(pl(q,r),pl(r,q),p,compl(q,r)),asspl2(p,r,q)):is(pl(pl(p,q),r),pl(pl(p,r),q))
+p@a2isapa:=tris(cut,ts(p,pl(1rp,1rp)),pl(ts(p,1rp),ts(p,1rp)),pl(p,p),disttp2(p,1rp,1rp),ispl12(ts(p,1rp),p,ts(p,1rp),p,satz151(p),satz151(p))):is(ts(p,pl(1rp,1rp)),pl(p,p))
+@dif:=pair1type(cut):'type'
+[a1:cut][a2:cut]
+df:=pair1(cut,a1,a2):dif
+@[a:dif]
+stm:=first1(cut,a):cut
+std:=second1(cut,a):cut
+a2@stmis:=first1is1(cut,a1,a2):is(stm(df(a1,a2)),a1)
+isstm:=first1is2(cut,a1,a2):is(a1,stm(df(a1,a2)))
+stdis:=second1is1(cut,a1,a2):is(std(df(a1,a2)),a2)
+isstd:=second1is2(cut,a1,a2):is(a2,std(df(a1,a2)))
+a@1a:=stm(a):cut
+2a:=std(a):cut
+dfis:=pair1is1(cut,a):is"e"(dif,df(1a,2a),a)
+isdf:=pair1is2(cut,a):is"e"(dif,a,df(1a,2a))
+a2@[b1:cut][b2:cut]
+12issmsd:=ispl12(a1,stm(df(a1,a2)),b2,std(df(b1,b2)),isstm(a1,a2),isstd(b1,b2)):is(pl(a1,b2),pl(stm(df(a1,a2)),std(df(b1,b2))))
+smsdis12:=symis(cut,pl(a1,b2),pl(stm(df(a1,a2)),std(df(b1,b2))),12issmsd):is(pl(stm(df(a1,a2)),std(df(b1,b2))),pl(a1,b2))
+a@[r1:cut][r2:cut]
+1sdissmsd:=ispl1(r1,stm(df(r1,r2)),2a,isstm(r1,r2)):is(pl(r1,2a),pl(stm(df(r1,r2)),2a))
+smsdis1sd:=symis(cut,pl(r1,2a),pl(stm(df(r1,r2)),2a),1sdissmsd):is(pl(stm(df(r1,r2)),2a),pl(r1,2a))
+sm2issmsd:=ispl2(r2,std(df(r1,r2)),1a,isstd(r1,r2)):is(pl(1a,r2),pl(1a,std(df(r1,r2))))
+smsdissm2:=symis(cut,pl(1a,r2),pl(1a,std(df(r1,r2))),sm2issmsd):is(pl(1a,std(df(r1,r2))),pl(1a,r2))
+a2@[r:cut][i:is(a1,r)]
+issm:=isf(cut,dif,[t:cut]df(t,a2),a1,r,i):is"e"(dif,df(a1,a2),df(r,a2))
+r@[i:is(a2,r)]
+issd:=isf(cut,dif,[t:cut]df(a1,t),a2,r,i):is"e"(dif,df(a1,a2),df(a1,r))
+b2@[i:is(a1,b1)][j:is(a2,b2)]
+issmsd:=tris(dif,df(a1,a2),df(b1,a2),df(b1,b2),issm(a1,a2,b1,i),issd(b1,a2,b2,j)):is"e"(dif,df(a1,a2),df(b1,b2))
+a@[b:dif]
+1b:=stm(b):cut
+2b:=std(b):cut
+eq:=is(pl(1a,2b),pl(1b,2a)):'prop'
+b2@[i:is(pl(a1,b2),pl(b1,a2))]
+eqi12:=tr3is(cut,pl(stm(df(a1,a2)),std(df(b1,b2))),pl(a1,b2),pl(b1,a2),pl(stm(df(b1,b2)),std(df(a1,a2))),smsdis12(a1,a2,b1,b2),i,12issmsd(b1,b2,a1,a2)):eq(df(a1,a2),df(b1,b2))
+r2@[i:is(pl(1a,r2),pl(r1,2a))]
+eqi1:=isp(dif,[x:dif]eq(x,df(r1,r2)),df(1a,2a),a,eqi12(1a,2a,r1,r2,i),dfis):eq(a,df(r1,r2))
+r2@[i:is(pl(r1,2a),pl(1a,r2))]
+eqi2:=isp(dif,[x:dif]eq(df(r1,r2),x),df(1a,2a),a,eqi12(r1,r2,1a,2a,i),dfis):eq(df(r1,r2),a)
+b2@[e:eq(df(a1,a2),df(b1,b2))]
+eqe12:=tr3is(cut,pl(a1,b2),pl(stm(df(a1,a2)),std(df(b1,b2))),pl(stm(df(b1,b2)),std(df(a1,a2))),pl(b1,a2),12issmsd(a1,a2,b1,b2),e,smsdis12(b1,b2,a1,a2)):is(pl(a1,b2),pl(b1,a2))
+a@satzd163:=refis(cut,pl(1a,2a)):eq(a,a)
+refeq:=satzd163:eq(a,a)
+b@[i:is"e"(dif,a,b)]
+refeq1:=isp(dif,[x:dif]eq(a,x),a,b,refeq,i):eq(a,b)
+refeq2:=isp(dif,[x:dif]eq(x,a),a,b,refeq,i):eq(b,a)
+b2@[i:is(a1,b1)][j:is(a2,b2)]
+eqsmsd:=refeq1(df(a1,a2),df(b1,b2),issmsd(i,j)):eq(df(a1,a2),df(b1,b2))
+r@[i:is(a1,r)]
+eqsm:=refeq1(df(a1,a2),df(r,a2),issm(i)):eq(df(a1,a2),df(r,a2))
+r@[i:is(a2,r)]
+eqsd:=refeq1(df(a1,a2),df(a1,r),issd(i)):eq(df(a1,a2),df(a1,r))
+b@[e:eq(a,b)]
+satzd164:=symis(cut,pl(1a,2b),pl(1b,2a),e):eq(b,a)
+symeq:=satzd164:eq(b,a)
+b@[c:dif]
+1c:=stm(c):cut
+2c:=std(c):cut
+[e:eq(a,b)][f:eq(b,c)]
++1d165
+t1:=ispl12(pl(1a,2b),pl(1b,2a),pl(1b,2c),pl(1c,2b),e,f):is(pl(pl(1a,2b),pl(1b,2c)),pl(pl(1b,2a),pl(1c,2b)))
+t2:=tr4is(cut,pl(pl(1a,2c),pl(1b,2b)),pl(pl(1a,2b),pl(1b,2c)),pl(pl(1b,2a),pl(1c,2b)),pl(pl(1c,2b),pl(1b,2a)),pl(pl(1c,2a),pl(1b,2b)),4pl24(1a,2c,1b,2b),t1,compl(pl(1b,2a),pl(1c,2b)),4pl24(1c,2b,1b,2a)):is(pl(pl(1a,2c),pl(1b,2b)),pl(pl(1c,2a),pl(1b,2b)))
+-1d165
+satzd165:=satz136b(pl(1a,2c),pl(1c,2a),pl(1b,2b),t2".1d165"):eq(a,c)
+treq:=satzd165:eq(a,c)
+c@[e:eq(c,a)][f:eq(c,b)]
+treq1:=treq(a,c,b,symeq(c,a,e),f):eq(a,b)
+c@[e:eq(a,c)][f:eq(b,c)]
+treq2:=treq(a,c,b,e,symeq(b,c,f)):eq(a,b)
+c@[d:dif][e1:eq(a,b)][e2:eq(b,c)][e3:eq(c,d)]
+tr3eq:=treq(a,b,d,e1,treq(b,c,d,e2,e3)):eq(a,d)
+d@[e:dif][e1:eq(a,b)][e2:eq(b,c)][e3:eq(c,d)][e4:eq(d,e)]
+tr4eq:=tr3eq(a,b,c,e,e1,e2,treq(c,d,e,e3,e4)):eq(a,e)
+a@posd:=more(1a,2a):'prop'
+zero:=is(1a,2a):'prop'
+negd:=less(1a,2a):'prop'
+a2@[m:more(a1,a2)]
+posdi:=ismore12(a1,stm(df(a1,a2)),a2,std(df(a1,a2)),isstm(a1,a2),isstd(a1,a2),m):posd(df(a1,a2))
+a2@[i:is(a1,a2)]
+zeroi:=tr3is(cut,stm(df(a1,a2)),a1,a2,std(df(a1,a2)),stmis(a1,a2),i,isstd(a1,a2)):zero(df(a1,a2))
+a2@[l:less(a1,a2)]
+negdi:=isless12(a1,stm(df(a1,a2)),a2,std(df(a1,a2)),isstm(a1,a2),isstd(a1,a2),l):negd(df(a1,a2))
+a@axrde:=satz123b(1a,2a):ec3(zero(a),posd(a),negd(a))
+axrdo:=satz123a(1a,2a):or3(zero(a),posd(a),negd(a))
+axrd:=orec3i(zero(a),posd(a),negd(a),axrdo,axrde):orec3(zero(a),posd(a),negd(a))
+[p:'prop'][p1:[t:posd(a)]p][p2:[t:zero(a)]p][p3:[t:negd(a)]p]
+rappd:=or3app(zero(a),posd(a),negd(a),p,axrdo,p2,p1,p3):p
+a@[p:posd(a)]
+pnot0d:=ec3e21(zero(a),posd(a),negd(a),axrde,p):not(zero(a))
+pnotnd:=ec3e23(zero(a),posd(a),negd(a),axrde,p):not(negd(a))
+a@[z:zero(a)]
+0notpd:=ec3e12(zero(a),posd(a),negd(a),axrde,z):not(posd(a))
+0notnd:=ec3e13(zero(a),posd(a),negd(a),axrde,z):not(negd(a))
+a@[n:negd(a)]
+nnotpd:=ec3e32(zero(a),posd(a),negd(a),axrde,n):not(posd(a))
+nnot0d:=ec3e31(zero(a),posd(a),negd(a),axrde,n):not(zero(a))
+b@[e:eq(a,b)][p:posd(a)]
++iv1d
+t1:=ismore12(pl(1a,2b),pl(1b,2a),pl(2a,2b),pl(2b,2a),e,compl(2a,2b),satz135a(1a,2a,2b,p)):more(pl(1b,2a),pl(2b,2a))
+-iv1d
+eqposd:=satz136a(1b,2b,2a,t1".iv1d"):posd(b)
+e@[z:zero(a)]
++*iv1d
+z@t2:=tr3is(cut,pl(1b,2a),pl(1a,2b),pl(2a,2b),pl(2b,2a),symeq(a,b,e),ispl1(1a,2a,2b,z),compl(2a,2b)):is(pl(1b,2a),pl(2b,2a))
+-iv1d
+z@eqzero:=satz136b(1b,2b,2a,t2".iv1d"):zero(b)
+e@[n:negd(a)]
++*iv1d
+n@t3:=isless12(pl(1a,2b),pl(1b,2a),pl(2a,2b),pl(2b,2a),e,compl(2a,2b),satz135c(1a,2a,2b,n)):less(pl(1b,2a),pl(2b,2a))
+-iv1d
+n@eqnegd:=satz136c(1b,2b,2a,t3".iv1d"):negd(b)
+b@[z:zero(a)][y:zero(b)]
+zeroeq:=tris(cut,pl(1a,2b),pl(2a,1b),pl(1b,2a),ispl12(1a,2a,2b,1b,z,symis(cut,1b,2b,y)),compl(2a,1b)):eq(a,b)
+@[r:cut]
+pdofrp:=df(pl(r,1rp),1rp):dif
+ndofrp:=df(1rp,pl(r,1rp)):dif
+[s:cut][i:is(r,s)]
+isrpepd:=refeq1(pdofrp(r),pdofrp(s),isf(cut,dif,[x:cut]pdofrp(x),r,s,i)):eq(pdofrp(r),pdofrp(s))
+isrpend:=refeq1(ndofrp(r),ndofrp(s),isf(cut,dif,[x:cut]ndofrp(x),r,s,i)):eq(ndofrp(r),ndofrp(s))
+s@[e:eq(pdofrp(r),pdofrp(s))]
++*iv1d
+e@t4:=satz136b(pl(r,1rp),pl(s,1rp),1rp,eqe12(pl(r,1rp),1rp,pl(s,1rp),1rp,e)):is(pl(r,1rp),pl(s,1rp))
+-iv1d
+e@isrpipd:=satz136b(r,s,1rp,t4".iv1d"):is(r,s)
+s@[e:eq(ndofrp(r),ndofrp(s))]
++*iv1d
+e@t5:=satz136e(pl(s,1rp),pl(r,1rp),1rp,eqe12(1rp,pl(r,1rp),1rp,pl(s,1rp),e)):is(pl(s,1rp),pl(r,1rp))
+-iv1d
+e@isrpind:=symis(cut,s,r,satz136b(s,r,1rp,t5".iv1d")):is(r,s)
+r@posdirp:=posdi(pl(r,1rp),1rp,ismore1(pl(1rp,r),pl(r,1rp),1rp,compl(1rp,r),satz133(1rp,r))):posd(pdofrp(r))
+negdirp:=negdi(1rp,pl(r,1rp),isless2(pl(1rp,r),pl(r,1rp),1rp,compl(1rp,r),satz133a(1rp,r))):negd(ndofrp(r))
+a@[p:posd(a)]
+rpofpd:=mn(1a,2a,p):cut
++*iv1d
+p@t6:=tr4is(cut,pl(1a,1rp),pl(pl(rpofpd,2a),1rp),pl(rpofpd,pl(2a,1rp)),pl(rpofpd,pl(1rp,2a)),pl(pl(rpofpd,1rp),2a),ispl1(1a,pl(rpofpd,2a),1rp,satz140f(1a,2a,p)),asspl1(rpofpd,2a,1rp),ispl2(pl(2a,1rp),pl(1rp,2a),rpofpd,compl(2a,1rp)),asspl2(rpofpd,1rp,2a)):is(pl(1a,1rp),pl(pl(rpofpd,1rp),2a))
+-iv1d
+p@eqpdrp1:=eqi1(a,pl(rpofpd,1rp),1rp,t6".iv1d"):eq(a,pdofrp(rpofpd(a,p)))
+eqpdrp2:=symeq(a,pdofrp(rpofpd(a,p)),eqpdrp1):eq(pdofrp(rpofpd(a,p)),a)
+a@[n:negd(a)]
+rpofnd:=mn(2a,1a,satz122(1a,2a,n)):cut
++*iv1d
+n@t7:=tr3is(cut,pl(1a,pl(rpofnd,1rp)),pl(pl(1a,rpofnd),1rp),pl(2a,1rp),pl(1rp,2a),asspl2(1a,rpofnd,1rp),ispl1(pl(1a,rpofnd),2a,1rp,satz140c(2a,1a,satz122(1a,2a,n))),compl(2a,1rp)):is(pl(1a,pl(rpofnd,1rp)),pl(1rp,2a))
+-iv1d
+n@eqndrp1:=eqi1(a,1rp,pl(rpofnd,1rp),t7".iv1d"):eq(a,ndofrp(rpofnd(a,n)))
+eqndrp2:=symeq(a,ndofrp(rpofnd(a,n)),eqndrp1):eq(ndofrp(rpofnd(a,n)),a)
+@[h:dif][p:posd(h)][k:dif][q:posd(k)][e:eq(h,k)]
++*iv1d
+e@t8:=tr3eq(pdofrp(rpofpd(h,p)),h,k,pdofrp(rpofpd(k,q)),eqpdrp2(h,p),e,eqpdrp1(k,q)):eq(pdofrp(rpofpd(h,p)),pdofrp(rpofpd(k,q)))
+-iv1d
+e@eqpderp:=isrpipd(rpofpd(h,p),rpofpd(k,q),t8".iv1d"):is(rpofpd(h,p),rpofpd(k,q))
+q@[i:is(rpofpd(h,p),rpofpd(k,q))]
++*iv1d
+i@t9:=isrpepd(rpofpd(h,p),rpofpd(k,q),i):eq(pdofrp(rpofpd(h,p)),pdofrp(rpofpd(k,q)))
+-iv1d
+i@eqpdirp:=tr3eq(h,pdofrp(rpofpd(h,p)),pdofrp(rpofpd(k,q)),k,eqpdrp1(h,p),t9".iv1d",eqpdrp2(k,q)):eq(h,k)
+h@[n:negd(h)][k:dif][o:negd(k)][e:eq(h,k)]
++*iv1d
+e@t10:=tr3eq(ndofrp(rpofnd(h,n)),h,k,ndofrp(rpofnd(k,o)),eqndrp2(h,n),e,eqndrp1(k,o)):eq(ndofrp(rpofnd(h,n)),ndofrp(rpofnd(k,o)))
+-iv1d
+e@eqnderp:=isrpind(rpofnd(h,n),rpofnd(k,o),t10".iv1d"):is(rpofnd(h,n),rpofnd(k,o))
+o@[i:is(rpofnd(h,n),rpofnd(k,o))]
++*iv1d
+i@t11:=isrpend(rpofnd(h,n),rpofnd(k,o),i):eq(ndofrp(rpofnd(h,n)),ndofrp(rpofnd(k,o)))
+-iv1d
+i@eqndirp:=tr3eq(h,ndofrp(rpofnd(h,n)),ndofrp(rpofnd(k,o)),k,eqndrp1(h,n),t11".iv1d",eqndrp2(k,o)):eq(h,k)
+@[r:cut]
++*iv1d
+r@t12:=eqpdrp1(pdofrp(r),posdirp(r)):eq(pdofrp(r),pdofrp(rpofpd(pdofrp(r),posdirp(r))))
+-iv1d
+r@isrppd1:=isrpipd(r,rpofpd(pdofrp(r),posdirp(r)),t12".iv1d"):is(r,rpofpd(pdofrp(r),posdirp(r)))
+isrppd2:=symis(cut,r,rpofpd(pdofrp(r),posdirp(r)),isrppd1):is(rpofpd(pdofrp(r),posdirp(r)),r)
++*iv1d
+r@t13:=eqndrp1(ndofrp(r),negdirp(r)):eq(ndofrp(r),ndofrp(rpofnd(ndofrp(r),negdirp(r))))
+-iv1d
+r@isrpnd1:=isrpind(r,rpofnd(ndofrp(r),negdirp(r)),t13".iv1d"):is(r,rpofnd(ndofrp(r),negdirp(r)))
+isrpnd2:=symis(cut,r,rpofnd(ndofrp(r),negdirp(r)),isrpnd1):is(rpofnd(ndofrp(r),negdirp(r)),r)
+a2@[r:cut]
+lemmad1:=eqi12(a1,a2,pl(a1,r),pl(a2,r),tris(cut,pl(a1,pl(a2,r)),pl(a1,pl(r,a2)),pl(pl(a1,r),a2),ispl2(pl(a2,r),pl(r,a2),a1,compl(a2,r)),asspl2(a1,r,a2))):eq(df(a1,a2),df(pl(a1,r),pl(a2,r)))
+lemmad2:=symeq(df(a1,a2),df(pl(a1,r),pl(a2,r)),lemmad1):eq(df(pl(a1,r),pl(a2,r)),df(a1,a2))
+a@[r:cut]
+lemmad3:=treq(a,df(1a,2a),df(pl(1a,r),pl(2a,r)),refeq1(a,df(1a,2a),isdf),lemmad1(1a,2a,r)):eq(a,df(pl(1a,r),pl(2a,r)))
+lemmad4:=symeq(a,df(pl(1a,r),pl(2a,r)),lemmad3):eq(df(pl(1a,r),pl(2a,r)),a)
+a@absd:=ite(negd(a),dif,df(2a,1a),a):dif
+[n:negd(a)]
+absnd:=refeq1(absd(a),df(2a,1a),itet(negd(a),dif,df(2a,1a),a,n)):eq(absd(a),df(2a,1a))
+a@[n:not(negd(a))]
+absnnd:=refeq1(absd(a),a,itef(negd(a),dif,df(2a,1a),a,n)):eq(absd(a),a)
+a2@[l:less(a1,a2)]
+absdeql:=treq(absd(df(a1,a2)),df(std(df(a1,a2)),stm(df(a1,a2))),df(a2,a1),absnd(df(a1,a2),negdi(a1,a2,l)),eqsmsd(std(df(a1,a2)),stm(df(a1,a2)),a2,a1,stdis(a1,a2),stmis(a1,a2))):eq(absd(df(a1,a2)),df(a2,a1))
+a2@[m:moreis(a1,a2)]
+absdeqm:=absnnd(df(a1,a2),th3"l.imp"(negd(df(a1,a2)),less(a1,a2),satz123c(a1,a2,m),[t:negd(df(a1,a2))]isless12(stm(df(a1,a2)),a1,std(df(a1,a2)),a2,stmis(a1,a2),stdis(a1,a2),t))):eq(absd(df(a1,a2)),df(a1,a2))
+b@[e:eq(a,b)]
++iv2d
+[n:negd(a)]
+t1:=tr3is(cut,pl(2a,1b),pl(1b,2a),pl(1a,2b),pl(2b,1a),compl(2a,1b),symeq(a,b,e),compl(1a,2b)):is(pl(2a,1b),pl(2b,1a))
+t2:=tr3eq(absd(a),df(2a,1a),df(2b,1b),absd(b),absnd(a,n),eqi12(2a,1a,2b,1b,t1),symeq(absd(b),df(2b,1b),absnd(b,eqnegd(a,b,e,n)))):eq(absd(a),absd(b))
+e@[n:not(negd(a))]
+t3:=tr3eq(absd(a),a,b,absd(b),absnnd(a,n),e,symeq(absd(b),b,absnnd(b,th3"l.imp"(negd(b),negd(a),n,[t:negd(b)]eqnegd(b,a,symeq(a,b,e),t))))):eq(absd(a),absd(b))
+-iv2d
+eqabsd:=th1"l.imp"(negd(a),eq(absd(a),absd(b)),[t:negd(a)]t2".iv2d"(t),[t:not(negd(a))]t3".iv2d"(t)):eq(absd(a),absd(b))
+a@[p:posd(a)]
+satzd166a:=eqposd(a,absd(a),symeq(absd(a),a,absnnd(a,pnotnd(a,p))),p):posd(absd(a))
+a@[n:negd(a)]
++2d166
+t1:=posdi(2a,1a,satz122(1a,2a,n)):posd(df(2a,1a))
+-2d166
+satzd166b:=eqposd(df(2a,1a),absd(a),symeq(absd(a),df(2a,1a),absnd(a,n)),t1".2d166"):posd(absd(a))
+b@[p:posd(a)][q:posd(b)][e:eq(absd(a),absd(b))]
+satzd166c:=tr3eq(a,absd(a),absd(b),b,symeq(absd(a),a,absnnd(a,pnotnd(a,p))),e,absnnd(b,pnotnd(b,q))):eq(a,b)
+b@[n:negd(a)][o:negd(b)][e:eq(absd(a),absd(b))]
++*2d166
+e@t2:=tr3eq(df(2a,1a),absd(a),absd(b),df(2b,1b),symeq(absd(a),df(2a,1a),absnd(a,n)),e,absnd(b,o)):eq(df(2a,1a),df(2b,1b))
+-2d166
+e@satzd166d:=tr3is(cut,pl(1a,2b),pl(2b,1a),pl(2a,1b),pl(1b,2a),compl(1a,2b),symis(cut,pl(2a,1b),pl(2b,1a),eqe12(2a,1a,2b,1b,t2".2d166")),compl(2a,1b)):eq(a,b)
+a@[n:not(zero(a))]
+satzd166e:=rappd(a,posd(absd(a)),[t:posd(a)]satzd166a(a,t),th2"l.imp"(zero(a),posd(absd(a)),n),[t:negd(a)]satzd166b(a,t)):posd(absd(a))
+a@[z:zero(a)]
+satzd166f:=eqzero(a,absd(a),symeq(absd(a),a,absnnd(a,0notnd(a,z))),z):zero(absd(a))
+b@mored:=more(pl(1a,2b),pl(1b,2a)):'prop'
+b2@[m:more(pl(a1,b2),pl(b1,a2))]
+moredi12:=ismore12(pl(a1,b2),pl(stm(df(a1,a2)),std(df(b1,b2))),pl(b1,a2),pl(stm(df(b1,b2)),std(df(a1,a2))),12issmsd(a1,a2,b1,b2),12issmsd(b1,b2,a1,a2),m):mored(df(a1,a2),df(b1,b2))
+r2@[m:more(pl(1a,r2),pl(r1,2a))]
+moredi1:=ismore12(pl(1a,r2),pl(1a,std(df(r1,r2))),pl(r1,2a),pl(stm(df(r1,r2)),2a),sm2issmsd(a,r1,r2),1sdissmsd(a,r1,r2),m):mored(a,df(r1,r2))
+r2@[m:more(pl(r1,2a),pl(1a,r2))]
+moredi2:=ismore12(pl(r1,2a),pl(stm(df(r1,r2)),2a),pl(1a,r2),pl(1a,std(df(r1,r2))),1sdissmsd(a,r1,r2),sm2issmsd(a,r1,r2),m):mored(df(r1,r2),a)
+b2@[m:mored(df(a1,a2),df(b1,b2))]
+morede12:=ismore12(pl(stm(df(a1,a2)),std(df(b1,b2))),pl(a1,b2),pl(stm(df(b1,b2)),std(df(a1,a2))),pl(b1,a2),smsdis12(a1,a2,b1,b2),smsdis12(b1,b2,a1,a2),m):more(pl(a1,b2),pl(b1,a2))
+b@lessd:=less(pl(1a,2b),pl(1b,2a)):'prop'
+[m:mored(a,b)]
+lemmad5:=satz121(pl(1a,2b),pl(1b,2a),m):lessd(b,a)
+b@[l:lessd(a,b)]
+lemmad6:=satz122(pl(1a,2b),pl(1b,2a),l):mored(b,a)
+b2@[l:less(pl(a1,b2),pl(b1,a2))]
+lessdi12:=lemmad5(df(b1,b2),df(a1,a2),moredi12(b1,b2,a1,a2,satz122(pl(a1,b2),pl(b1,a2),l))):lessd(df(a1,a2),df(b1,b2))
+r2@[l:less(pl(1a,r2),pl(r1,2a))]
+lessdi1:=lemmad5(df(r1,r2),a,moredi2(a,r1,r2,satz122(pl(1a,r2),pl(r1,2a),l))):lessd(a,df(r1,r2))
+r2@[l:less(pl(r1,2a),pl(1a,r2))]
+lessdi2:=lemmad5(a,df(r1,r2),moredi1(a,r1,r2,satz122(pl(r1,2a),pl(1a,r2),l))):lessd(df(r1,r2),a)
+b2@[l:lessd(df(a1,a2),df(b1,b2))]
+lessde12:=satz121(pl(b1,a2),pl(a1,b2),morede12(b1,b2,a1,a2,lemmad6(df(a1,a2),df(b1,b2),l))):less(pl(a1,b2),pl(b1,a2))
+b@satzd167:=satz123(pl(1a,2b),pl(1b,2a)):orec3(eq(a,b),mored(a,b),lessd(a,b))
+satzd167a:=satz123a(pl(1a,2b),pl(1b,2a)):or3(eq(a,b),mored(a,b),lessd(a,b))
+satzd167b:=satz123b(pl(1a,2b),pl(1b,2a)):ec3(eq(a,b),mored(a,b),lessd(a,b))
+d@1d:=stm(d):cut
+2d:=std(d):cut
+[e:eq(a,b)][f:eq(c,d)][m:mored(a,c)]
++*iv2d
+m@t4:=tr4is(cut,pl(pl(1b,2d),pl(1c,2a)),pl(pl(1b,2a),pl(1c,2d)),pl(pl(1a,2b),pl(1d,2c)),pl(pl(1a,2c),pl(1d,2b)),pl(pl(1d,2b),pl(1a,2c)),4pl24(1b,2d,1c,2a),ispl12(pl(1b,2a),pl(1a,2b),pl(1c,2d),pl(1d,2c),symeq(a,b,e),f),4pl24(1a,2b,1d,2c),compl(pl(1a,2c),pl(1d,2b))):is(pl(pl(1b,2d),pl(1c,2a)),pl(pl(1d,2b),pl(1a,2c)))
+t5:=ismore2(pl(pl(1b,2d),pl(1c,2a)),pl(pl(1d,2b),pl(1a,2c)),pl(pl(1b,2d),pl(1a,2c)),t4,satz135d(pl(1a,2c),pl(1c,2a),pl(1b,2d),m)):more(pl(pl(1b,2d),pl(1a,2c)),pl(pl(1d,2b),pl(1a,2c)))
+-iv2d
+m@eqmored12:=satz136a(pl(1b,2d),pl(1d,2b),pl(1a,2c),t5".iv2d"):mored(b,d)
+f@[l:lessd(a,c)]
+eqlessd12:=lemmad5(d,b,eqmored12(c,d,a,b,f,e,lemmad6(a,c,l))):lessd(b,d)
+c@[e:eq(a,b)][m:mored(a,c)]
+eqmored1:=eqmored12(a,b,c,c,e,refeq(c),m):mored(b,c)
+e@[m:mored(c,a)]
+eqmored2:=eqmored12(c,c,a,b,refeq(c),e,m):mored(c,b)
+e@[l:lessd(a,c)]
+eqlessd1:=eqlessd12(a,b,c,c,e,refeq(c),l):lessd(b,c)
+e@[l:lessd(c,a)]
+eqlessd2:=eqlessd12(c,c,a,b,refeq(c),e,l):lessd(c,b)
+b@moreq:=or(mored(a,b),eq(a,b)):'prop'
+lesseq:=or(lessd(a,b),eq(a,b)):'prop'
+[m:moreq(a,b)]
+satzd168a:=th9"l.or"(mored(a,b),eq(a,b),lessd(b,a),eq(b,a),m,[t:mored(a,b)]lemmad5(a,b,t),[t:eq(a,b)]symeq(a,b,t)):lesseq(b,a)
+b@[l:lesseq(a,b)]
+satzd168b:=th9"l.or"(lessd(a,b),eq(a,b),mored(b,a),eq(b,a),l,[t:lessd(a,b)]lemmad6(a,b,t),[t:eq(a,b)]symeq(a,b,t)):moreq(b,a)
+c@[e:eq(a,b)][m:moreq(a,c)]
+eqmoreq1:=th9"l.or"(mored(a,c),eq(a,c),mored(b,c),eq(b,c),m,[t:mored(a,c)]eqmored1(a,b,c,e,t),[t:eq(a,c)]treq1(b,c,a,e,t)):moreq(b,c)
+e@[m:moreq(c,a)]
+eqmoreq2:=th9"l.or"(mored(c,a),eq(c,a),mored(c,b),eq(c,b),m,[t:mored(c,a)]eqmored2(a,b,c,e,t),[t:eq(c,a)]treq(c,a,b,t,e)):moreq(c,b)
+e@[l:lesseq(a,c)]
+eqlesseq1:=satzd168a(c,b,eqmoreq2(a,b,c,e,satzd168b(a,c,l))):lesseq(b,c)
+e@[l:lesseq(c,a)]
+eqlesseq2:=satzd168a(b,c,eqmoreq1(a,b,c,e,satzd168b(c,a,l))):lesseq(c,b)
+d@[e:eq(a,b)][f:eq(c,d)][m:moreq(a,c)]
+eqmoreq12:=eqmoreq1(a,b,d,e,eqmoreq2(c,d,a,f,m)):moreq(b,d)
+f@[l:lesseq(a,c)]
+eqlesseq12:=eqlesseq1(a,b,d,e,eqlesseq2(c,d,a,f,l)):lesseq(b,d)
+b@[m:mored(a,b)]
+moreqi1:=ori1(mored(a,b),eq(a,b),m):moreq(a,b)
+b@[l:lessd(a,b)]
+lesseqi1:=ori1(lessd(a,b),eq(a,b),l):lesseq(a,b)
+b@[e:eq(a,b)]
+moreqi2:=ori2(mored(a,b),eq(a,b),e):moreq(a,b)
+lesseqi2:=ori2(lessd(a,b),eq(a,b),e):lesseq(a,b)
+b@[m:moreq(a,b)]
+satzd167c:=th7"l.ec3"(eq(a,b),mored(a,b),lessd(a,b),satzd167b,comor(mored(a,b),eq(a,b),m)):not(lessd(a,b))
+b@[l:lesseq(a,b)]
+satzd167d:=th9"l.ec3"(eq(a,b),mored(a,b),lessd(a,b),satzd167b,l):not(mored(a,b))
+b@[n:not(mored(a,b))]
+satzd167e:=th2"l.or3"(eq(a,b),mored(a,b),lessd(a,b),satzd167a,n):lesseq(a,b)
+b@[n:not(lessd(a,b))]
+satzd167f:=comor(eq(a,b),mored(a,b),th3"l.or3"(eq(a,b),mored(a,b),lessd(a,b),satzd167a,n)):moreq(a,b)
+b@[m:mored(a,b)]
+satzd167g:=th3"l.imp"(lesseq(a,b),not(mored(a,b)),weli(mored(a,b),m),[t:lesseq(a,b)]satzd167d(t)):not(lesseq(a,b))
+b@[l:lessd(a,b)]
+satzd167h:=th3"l.imp"(moreq(a,b),not(lessd(a,b)),weli(lessd(a,b),l),[t:moreq(a,b)]satzd167c(t)):not(moreq(a,b))
+b@[n:not(moreq(a,b))]
+satzd167j:=or3e3(eq(a,b),mored(a,b),lessd(a,b),satzd167a,th5"l.or"(mored(a,b),eq(a,b),n),th4"l.or"(mored(a,b),eq(a,b),n)):lessd(a,b)
+b@[n:not(lesseq(a,b))]
+satzd167k:=or3e2(eq(a,b),mored(a,b),lessd(a,b),satzd167a,th4"l.or"(lessd(a,b),eq(a,b),n),th5"l.or"(lessd(a,b),eq(a,b),n)):mored(a,b)
+b@[z:zero(b)][p:posd(a)]
+satzd169a:=ismore12(pl(1a,1b),pl(1a,2b),pl(2a,1b),pl(1b,2a),ispl2(1b,2b,1a,z),compl(2a,1b),satz135a(1a,2a,1b,p)):mored(a,b)
+z@[m:mored(a,b)]
+satzd169b:=satz136d(1a,2a,2b,ismore12(pl(1a,2b),pl(2b,1a),pl(1b,2a),pl(2b,2a),compl(1a,2b),ispl1(1b,2b,2a,z),m)):posd(a)
+z@[n:negd(a)]
+satzd169c:=isless12(pl(1a,1b),pl(1a,2b),pl(2a,1b),pl(1b,2a),ispl2(1b,2b,1a,z),compl(2a,1b),satz135c(1a,2a,1b,n)):lessd(a,b)
+z@[l:lessd(a,b)]
+satzd169d:=satz136f(1a,2a,2b,isless12(pl(1a,2b),pl(2b,1a),pl(1b,2a),pl(2b,2a),compl(1a,2b),ispl1(1b,2b,2a,z),l)):negd(a)
++2d170
+z@[p:posd(a)]
+t1:=moreqi1(absd(a),b,satzd169a(absd(a),b,z,satzd166a(a,p))):moreq(absd(a),b)
+z@[y:zero(a)]
+t2:=moreqi2(absd(a),b,treq(absd(a),a,b,absnnd(a,0notnd(a,y)),zeroeq(a,b,y,z))):moreq(absd(a),b)
+z@[n:negd(a)]
+t3:=moreqi1(absd(a),b,satzd169a(absd(a),b,z,satzd166b(a,n))):moreq(absd(a),b)
+-2d170
+z@satzd170:=rappd(a,moreq(absd(a),b),[t:posd(a)]t1".2d170"(t),[t:zero(a)]t2".2d170"(t),[t:negd(a)]t3".2d170"(t)):moreq(absd(a),b)
+c@[l:lessd(a,b)][k:lessd(b,c)]
++2d171
+t1:=satz137a(pl(1a,2b),pl(1b,2a),pl(1b,2c),pl(1c,2b),l,k):less(pl(pl(1a,2b),pl(1b,2c)),pl(pl(1b,2a),pl(1c,2b)))
+t2:=isless12(pl(pl(1a,2b),pl(1b,2c)),pl(pl(1a,2c),pl(1b,2b)),pl(pl(1b,2a),pl(1c,2b)),pl(pl(1c,2a),pl(1b,2b)),4pl24(1a,2b,1b,2c),tris(cut,pl(pl(1b,2a),pl(1c,2b)),pl(pl(1b,2b),pl(1c,2a)),pl(pl(1c,2a),pl(1b,2b)),4pl24(1b,2a,1c,2b),compl(pl(1b,2b),pl(1c,2a))),t1):less(pl(pl(1a,2c),pl(1b,2b)),pl(pl(1c,2a),pl(1b,2b)))
+-2d171
+satzd171:=satz136c(pl(1a,2c),pl(1c,2a),pl(1b,2b),t2".2d171"):lessd(a,c)
+trlessd:=satzd171:lessd(a,c)
+c@[m:mored(a,b)][n:mored(b,c)]
+trmored:=lemmad6(c,a,trlessd(c,b,a,lemmad5(b,c,n),lemmad5(a,b,m))):mored(a,c)
+c@[l:lesseq(a,b)][k:lessd(b,c)]
+satzd172a:=orapp(lessd(a,b),eq(a,b),lessd(a,c),l,[t:lessd(a,b)]trlessd(t,k),[t:eq(a,b)]eqlessd1(b,a,c,symeq(a,b,t),k)):lessd(a,c)
+c@[l:lessd(a,b)][k:lesseq(b,c)]
+satzd172b:=orapp(lessd(b,c),eq(b,c),lessd(a,c),k,[t:lessd(b,c)]trlessd(l,t),[t:eq(b,c)]eqlessd2(b,c,a,t,l)):lessd(a,c)
+c@[m:moreq(a,b)][n:mored(b,c)]
+satzd172c:=lemmad6(c,a,satzd172b(c,b,a,lemmad5(b,c,n),satzd168a(a,b,m))):mored(a,c)
+c@[m:mored(a,b)][n:moreq(b,c)]
+satzd172d:=lemmad6(c,a,satzd172a(c,b,a,satzd168a(b,c,n),lemmad5(a,b,m))):mored(a,c)
+c@[l:lesseq(a,b)][k:lesseq(b,c)]
++2d173
+[j:lessd(a,b)]
+t1:=lesseqi1(a,c,satzd172b(j,k)):lesseq(a,c)
+k@[e:eq(a,b)]
+t2:=eqlesseq1(b,a,c,symeq(a,b,e),k):lesseq(a,c)
+-2d173
+satzd173:=orapp(lessd(a,b),eq(a,b),lesseq(a,c),l,[t:lessd(a,b)]t1".2d173"(t),[t:eq(a,b)]t2".2d173"(t)):lesseq(a,c)
+trlesseq:=satzd173:lesseq(a,c)
+c@[m:moreq(a,b)][n:moreq(b,c)]
+trmoreq:=satzd168b(c,a,trlesseq(c,b,a,satzd168a(b,c,n),satzd168a(a,b,m))):moreq(a,c)
+a@ratd:=[t:not(zero(a))]ratrp(rpofpd(absd(a),satzd166e(a,t))):'prop'
+irratd:=not(ratd(a)):'prop'
+b@[e:eq(a,b)][r:ratd(a)]
++*iv2d
+r@[n:not(zero(b))]
+t6:=th3"l.imp"(zero(a),zero(b),n,[t:zero(a)]eqzero(a,b,e,t)):not(zero(a))
+t7:=eqpderp(absd(a),satzd166e(a,t6),absd(b),satzd166e(b,n),eqabsd(a,b,e)):is(rpofpd(absd(a),satzd166e(a,t6)),rpofpd(absd(b),satzd166e(b,n)))
+t8:=isp(cut,[t:cut]ratrp(t),rpofpd(absd(a),satzd166e(a,t6)),rpofpd(absd(b),satzd166e(b,n)),<t6>r,t7):ratrp(rpofpd(absd(b),satzd166e(b,n)))
+-iv2d
+r@eqratd:=[t:not(zero(b))]t8".iv2d"(t):ratd(b)
+e@[i:irratd(a)]
+eqirratd:=th3"l.imp"(ratd(b),ratd(a),i,[t:ratd(b)]eqratd(b,a,symeq(a,b,e),t)):irratd(b)
+a@[z:zero(a)]
+ratdi0:=th2"l.r.imp"(not(zero(a)),[t:not(zero(a))]ratrp(rpofpd(absd(a),satzd166e(a,t))),weli(zero(a),z)):ratd(a)
+@[r:cut][i:irratrp(r)][x0:rat]
++*iv2d
+x0@[s:ratrp(pl(r,rpofrt(x0)))][y0:rat][j:is(pl(r,rpofrt(x0)),rpofrt(y0))]
+t9:=tris(cut,pl(rpofrt(x0),r),pl(r,rpofrt(x0)),rpofrt(y0),compl(rpofrt(x0),r),j):is(pl(rpofrt(x0),r),rpofrt(y0))
+t10:=ismore1(pl(rpofrt(x0),r),rpofrt(y0),rpofrt(x0),t9,satz133(rpofrt(x0),r)):more(rpofrt(y0),rpofrt(x0))
+t11:=satz154d(y0,x0,t10):more"rt"(y0,x0)
+t12:=satz155b(y0,x0,t11):is(rpofrt(mn"rt"(y0,x0,t11)),mn(rpofrt(y0),rpofrt(x0),satz154a(y0,x0,t11)))
+t13:=satz140g(rpofrt(y0),rpofrt(x0),r,satz154a(y0,x0,t11),t9):is(r,mn(rpofrt(y0),rpofrt(x0),satz154a(y0,x0,t11)))
+t14:=tris2(cut,r,rpofrt(mn"rt"(y0,x0,t11)),mn(rpofrt(y0),rpofrt(x0),satz154a(y0,x0,t11)),t13,t12):is(r,rpofrt(mn"rt"(y0,x0,t11)))
+t15:=somei(rat,[x:rat]is(r,rpofrt(x)),mn"rt"(y0,x0,t11),t14):ratrp(r)
+s@t16:=someapp(rat,[x:rat]is(pl(r,rpofrt(x0)),rpofrt(x)),s,con,[x:rat][t:is(pl(r,rpofrt(x0)),rpofrt(x))]<t15(x,t)>i):con
+-iv2d
+x0@remark1:=[t:ratrp(pl(r,rpofrt(x0)))]t16".iv2d"(t):irratrp(pl(r,rpofrt(x0)))
++*iv2d
+r@rp:=pdofrp(r):dif
+rn:=ndofrp(r):dif
+t17:=posdirp(r):posd(rp)
+t18:=pnot0d(rp,t17):not(zero(rp))
+t19:=nnot0d(rn,negdirp(r)):not(zero(rn))
+[n:not(zero(rp))]
+t20:=tris2(cut,r,rpofpd(absd(rp),satzd166e(rp,n)),rpofpd(rp,t17),isrppd1(r),eqpderp(absd(rp),satzd166e(rp,n),rp,t17,absnnd(rp,pnotnd(rp,t17)))):is(r,rpofpd(absd(rp),satzd166e(rp,n)))
+r@t21:=treq(absd(rn),df(std(rn),stm(rn)),rp,absnd(rn,negdirp(r)),eqsmsd(std(rn),stm(rn),pl(r,1rp),1rp,stdis(1rp,pl(r,1rp)),stmis(1rp,pl(r,1rp)))):eq(absd(rn),rp)
+[n:not(zero(rn))]
+t22:=tris2(cut,r,rpofpd(absd(rn),satzd166e(rn,n)),rpofpd(rp,t17),isrppd1(r),eqpderp(absd(rn),satzd166e(rn,n),rp,t17,t21)):is(r,rpofpd(absd(rn),satzd166e(rn,n)))
+r@[s:cut][i:is(r,s)][rr:ratrp(r)]
+t23:=isp(cut,[x:cut]ratrp(x),r,s,rr,i):ratrp(s)
+i@[rs:ratrp(s)]
+t24:=isp1(cut,[x:cut]ratrp(x),s,r,rs,i):ratrp(r)
+-iv2d
+r@[rr:ratrp(r)]
+remark2a:=[t:not(zero(pdofrp(r)))]t23".iv2d"(rpofpd(absd(pdofrp(r)),satzd166e(pdofrp(r),t)),t20".iv2d"(t),rr):ratd(pdofrp(r))
+remark2b:=t17".iv2d":posd(pdofrp(r))
+remark3a:=[t:not(zero(ndofrp(r)))]t23".iv2d"(rpofpd(absd(ndofrp(r)),satzd166e(ndofrp(r),t)),t22".iv2d"(t),rr):ratd(ndofrp(r))
+remark3b:=negdirp(r):negd(ndofrp(r))
+r@[i:irratrp(r)]
+remark4a:=th3"l.imp"(ratd(pdofrp(r)),ratrp(r),i,[t:ratd(pdofrp(r))]t24".iv2d"(rpofpd(absd(pdofrp(r)),satzd166e(pdofrp(r),t18".iv2d")),t20".iv2d"(t18".iv2d"),<t18".iv2d">t)):irratd(pdofrp(r))
+remark4b:=t17".iv2d":posd(pdofrp(r))
+remark5a:=th3"l.imp"(ratd(ndofrp(r)),ratrp(r),i,[t:ratd(ndofrp(r))]t24".iv2d"(rpofpd(absd(ndofrp(r)),satzd166e(ndofrp(r),t19".iv2d")),t22".iv2d"(t19".iv2d"),<t19".iv2d">t)):irratd(ndofrp(r))
+remark5b:=negdirp(r):negd(ndofrp(r))
+a@natd:=and(posd(a),[t:posd(a)]natrp(rpofpd(a,t))):'prop'
+[n:natd(a)]
+natposd:=ande1(posd(a),[t:posd(a)]natrp(rpofpd(a,t)),n):posd(a)
+natderp:=ande2"l.r"(posd(a),[t:posd(a)]natrp(rpofpd(a,t)),n):natrp(rpofpd(a,natposd(a,n)))
+b@[e:eq(a,b)][n:natd(a)]
++*iv2d
+n"rp"@t25:=eqposd(a,b,e,natposd(a,n)):posd(b)
+[p:posd(b)]
+t26:=eqpderp(a,natposd(a,n),b,p,e):is(rpofpd(a,natposd(a,n)),rpofpd(b,p))
+t27:=isp(cut,[t:cut]natrp(t),rpofpd(a,natposd(a,n)),rpofpd(b,p),natderp(a,n),t26):natrp(rpofpd(b,p))
+-iv2d
+n@eqnatd:=andi(posd(b),[t:posd(b)]natrp(rpofpd(b,t)),t25".iv2d",[t:posd(b)]t27".iv2d"(t)):natd(b)
+@[x:nat]
+pdofnt:=pdofrp(rpofnt(x)):dif
++*iv2d
+x@t28:=posdirp(rpofnt(x)):posd(pdofnt(x))
+[p:posd(pdofnt(x))]
+t29:=isrppd1(rpofnt(x)):is(rpofnt(x),rpofpd(pdofnt(x),t28))
+t30:=eqpderp(pdofnt(x),t28,pdofnt(x),p,refeq(pdofnt(x))):is(rpofpd(pdofnt(x),t28),rpofpd(pdofnt(x),p))
+t31:=tris(cut,rpofnt(x),rpofpd(pdofnt(x),t28),rpofpd(pdofnt(x),p),t29,t30):is(rpofnt(x),rpofpd(pdofnt(x),p))
+t32:=isp(cut,[t:cut]natrp(t),rpofnt(x),rpofpd(pdofnt(x),p),natrpi(x),t31):natrp(rpofpd(pdofnt(x),p))
+-iv2d
+x@natdi:=andi(posd(pdofnt(x)),[t:posd(pdofnt(x))]natrp(rpofpd(pdofnt(x),t)),t28".iv2d",[t:posd(pdofnt(x))]t32".iv2d"(t)):natd(pdofnt(x))
+a@intd:=or(zero(a),natd(absd(a))):'prop'
+b@[e:eq(a,b)][i:intd(a)]
++*iv2d
+i"rp"@[z:zero(a)]
+t33:=eqzero(a,b,e,z):zero(b)
+i"rp"@[n:natd(absd(a))]
+t34:=eqnatd(absd(a),absd(b),eqabsd(a,b,e),n):natd(absd(b))
+-iv2d
+i@eqintd:=th9"l.or"(zero(a),natd(absd(a)),zero(b),natd(absd(b)),i,[t:zero(a)]t33".iv2d"(t),[t:natd(absd(a))]t34".iv2d"(t)):intd(b)
+a@[n:natd(a)]
++*iv2d
+n"rp"@t34a:=symeq(absd(a),a,absnnd(a,pnotnd(a,natposd(a,n)))):eq(a,absd(a))
+t35:=eqnatd(a,absd(a),t34a,n):natd(absd(a))
+-iv2d
+n@natintd:=ori2(zero(a),natd(absd(a)),t35".iv2d"):intd(a)
+a@[p:posd(a)][i:intd(a)]
++*iv2d
+i"rp"@t36:=ore2(zero(a),natd(absd(a)),i,pnot0d(a,p)):natd(absd(a))
+-iv2d
+i@posintnatd:=eqnatd(absd(a),a,absnnd(a,pnotnd(a,p)),t36".iv2d"):natd(a)
+a@[z:zero(a)]
+intdi0:=ori1(zero(a),natd(absd(a)),z):intd(a)
+r@[n:natrp(r)]
++*iv2d
+n"rp"@t37:=posdirp(r):posd(pdofrp(r))
+[p:posd(pdofrp(r))]
+t38:=tris(cut,r,rpofpd(pdofrp(r),t37),rpofpd(pdofrp(r),p),isrppd1(r),eqpderp(pdofrp(r),t37,pdofrp(r),p,refeq(pdofrp(r)))):is(r,rpofpd(pdofrp(r),p))
+t39:=isp(cut,[t:cut]natrp(t),r,rpofpd(pdofrp(r),p),n,t38):natrp(rpofpd(pdofrp(r),p))
+-iv2d
+n@remark6a:=andi(posd(pdofrp(r)),[t:posd(pdofrp(r))]natrp(rpofpd(pdofrp(r),t)),t37".iv2d",[t:posd(pdofrp(r))]t39".iv2d"(t)):natd(pdofrp(r))
+remark6:=natintd(pdofrp(r),remark6a):intd(pdofrp(r))
++*iv2d
+n"rp"@t40:=absdeql(1rp,pl(r,1rp),isless2(pl(1rp,r),pl(r,1rp),1rp,compl(1rp,r),satz133a(1rp,r))):eq(absd(ndofrp(r)),pdofrp(r))
+t41:=eqnatd(pdofrp(r),absd(ndofrp(r)),symeq(absd(ndofrp(r)),pdofrp(r),t40),remark6a):natd(absd(ndofrp(r)))
+-iv2d
+n@remark7:=ori2(zero(ndofrp(r)),natd(absd(ndofrp(r))),t41".iv2d"):intd(ndofrp(r))
+a@[i:intd(a)]
++2d174
+[n:not(zero(a))]
+t1:=ore2(zero(a),natd(absd(a)),i,n):natd(absd(a))
+t2:=ande2(posd(absd(a)),[t:posd(absd(a))]natrp(rpofpd(absd(a),t)),t1):[t:posd(absd(a))]natrp(rpofpd(absd(a),t))
+t3:=lemmaiii5(rpofpd(absd(a),satzd166e(a,n)),<satzd166e(a,n)>t2):ratrp(rpofpd(absd(a),satzd166e(a,n)))
+-2d174
+satzd174:=[t:not(zero(a))]t3".2d174"(t):ratd(a)
+b@pd:=df(pl(1a,1b),pl(2a,2b)):dif
+b2@pd12:=issmsd(pl(stm(df(a1,a2)),stm(df(b1,b2))),pl(std(df(a1,a2)),std(df(b1,b2))),pl(a1,b1),pl(a2,b2),ispl12(stm(df(a1,a2)),a1,stm(df(b1,b2)),b1,stmis(a1,a2),stmis(b1,b2)),ispl12(std(df(a1,a2)),a2,std(df(b1,b2)),b2,stdis(a1,a2),stdis(b1,b2))):is"e"(dif,pd(df(a1,a2),df(b1,b2)),df(pl(a1,b1),pl(a2,b2)))
+r2@pd1:=issmsd(pl(1a,stm(df(r1,r2))),pl(2a,std(df(r1,r2))),pl(1a,r1),pl(2a,r2),ispl2(stm(df(r1,r2)),r1,1a,stmis(r1,r2)),ispl2(std(df(r1,r2)),r2,2a,stdis(r1,r2))):is"e"(dif,pd(a,df(r1,r2)),df(pl(1a,r1),pl(2a,r2)))
+pd2:=issmsd(pl(stm(df(r1,r2)),1a),pl(std(df(r1,r2)),2a),pl(r1,1a),pl(r2,2a),ispl1(stm(df(r1,r2)),r1,1a,stmis(r1,r2)),ispl1(std(df(r1,r2)),r2,2a,stdis(r1,r2))):is"e"(dif,pd(df(r1,r2),a),df(pl(r1,1a),pl(r2,2a)))
+b2@pdeq12a:=refeq1(pd(df(a1,a2),df(b1,b2)),df(pl(a1,b1),pl(a2,b2)),pd12):eq(pd(df(a1,a2),df(b1,b2)),df(pl(a1,b1),pl(a2,b2)))
+pdeq12b:=refeq2(pd(df(a1,a2),df(b1,b2)),df(pl(a1,b1),pl(a2,b2)),pd12):eq(df(pl(a1,b1),pl(a2,b2)),pd(df(a1,a2),df(b1,b2)))
+r2@pdeq1a:=refeq1(pd(a,df(r1,r2)),df(pl(1a,r1),pl(2a,r2)),pd1):eq(pd(a,df(r1,r2)),df(pl(1a,r1),pl(2a,r2)))
+pdeq1b:=refeq2(pd(a,df(r1,r2)),df(pl(1a,r1),pl(2a,r2)),pd1):eq(df(pl(1a,r1),pl(2a,r2)),pd(a,df(r1,r2)))
+pdeq2a:=refeq1(pd(df(r1,r2),a),df(pl(r1,1a),pl(r2,2a)),pd2):eq(pd(df(r1,r2),a),df(pl(r1,1a),pl(r2,2a)))
+pdeq2b:=refeq2(pd(df(r1,r2),a),df(pl(r1,1a),pl(r2,2a)),pd2):eq(df(pl(r1,1a),pl(r2,2a)),pd(df(r1,r2),a))
+b@satzd175:=eqsmsd(pl(1a,1b),pl(2a,2b),pl(1b,1a),pl(2b,2a),compl(1a,1b),compl(2a,2b)):eq(pd(a,b),pd(b,a))
+compd:=satzd175:eq(pd(a,b),pd(b,a))
+c@[e:eq(a,b)]
++iv3d
+t1:=tr3is(cut,pl(pl(1a,1c),pl(2b,2c)),pl(pl(1a,2b),pl(1c,2c)),pl(pl(1b,2a),pl(1c,2c)),pl(pl(1b,1c),pl(2a,2c)),4pl23(1a,1c,2b,2c),ispl1(pl(1a,2b),pl(1b,2a),pl(1c,2c),e),4pl23(1b,2a,1c,2c)):is(pl(pl(1a,1c),pl(2b,2c)),pl(pl(1b,1c),pl(2a,2c)))
+-iv3d
+eqpd1:=eqi12(pl(1a,1c),pl(2a,2c),pl(1b,1c),pl(2b,2c),t1".iv3d"):eq(pd(a,c),pd(b,c))
+eqpd2:=tr3eq(pd(c,a),pd(a,c),pd(b,c),pd(c,b),compd(c,a),eqpd1,compd(b,c)):eq(pd(c,a),pd(c,b))
+d@[e:eq(a,b)][f:eq(c,d)]
+eqpd12:=treq(pd(a,c),pd(b,c),pd(b,d),eqpd1(a,b,c,e),eqpd2(c,d,b,f)):eq(pd(a,c),pd(b,d))
+b@[z:zero(a)]
++*iv3d
+z@t2:=tr4is(cut,pl(pl(1a,1b),2b),pl(1a,pl(1b,2b)),pl(2a,pl(2b,1b)),pl(pl(2a,2b),1b),pl(1b,pl(2a,2b)),asspl1(1a,1b,2b),ispl12(1a,2a,pl(1b,2b),pl(2b,1b),z,compl(1b,2b)),asspl2(2a,2b,1b),compl(pl(2a,2b),1b)):is(pl(pl(1a,1b),2b),pl(1b,pl(2a,2b)))
+-iv3d
+z@pd01:=eqi2(b,pl(1a,1b),pl(2a,2b),t2".iv3d"):eq(pd(a,b),b)
+b@[z:zero(b)]
+pd02:=treq(pd(a,b),pd(b,a),a,compd(a,b),pd01(b,a,z)):eq(pd(a,b),a)
+b@[p:posd(a)][q:posd(b)]
+ppd:=posdi(pl(1a,1b),pl(2a,2b),satz137(1a,2a,1b,2b,p,q)):posd(pd(a,b))
+b@[n:negd(a)][o:negd(b)]
+npd:=negdi(pl(1a,1b),pl(2a,2b),satz137a(1a,2a,1b,2b,n,o)):negd(pd(a,b))
+a@m0d:=df(2a,1a):dif
+a2@m0deqa:=eqsmsd(std(df(a1,a2)),stm(df(a1,a2)),a2,a1,stdis(a1,a2),stmis(a1,a2)):eq(m0d(df(a1,a2)),df(a2,a1))
+m0deqb:=symeq(m0d(df(a1,a2)),df(a2,a1),m0deqa):eq(df(a2,a1),m0d(df(a1,a2)))
+b@[e:eq(a,b)]
++*iv3d
+e@t3:=tr3is(cut,pl(2a,1b),pl(1b,2a),pl(1a,2b),pl(2b,1a),compl(2a,1b),symeq(a,b,e),compl(1a,2b)):is(pl(2a,1b),pl(2b,1a))
+-iv3d
+e@eqm0d:=eqi12(2a,1a,2b,1b,t3".iv3d"):eq(m0d(a),m0d(b))
+a@[p:posd(a)]
+satzd176a:=negdi(2a,1a,satz121(1a,2a,p)):negd(m0d(a))
+a@[z:zero(a)]
+satzd176b:=zeroi(2a,1a,symis(cut,1a,2a,z)):zero(m0d(a))
+a@[n:negd(a)]
+satzd176c:=posdi(2a,1a,satz122(1a,2a,n)):posd(m0d(a))
+a@[n:negd(m0d(a))]
+satzd176d:=satz122(2a,1a,isless12(stm(m0d(a)),2a,std(m0d(a)),1a,stmis(2a,1a),stdis(2a,1a),n)):posd(a)
+a@[z:zero(m0d(a))]
+satzd176e:=symis(cut,2a,1a,tr3is(cut,2a,stm(df(2a,1a)),std(df(2a,1a)),1a,isstm(2a,1a),z,stdis(2a,1a))):zero(a)
+a@[p:posd(m0d(a))]
+satzd176f:=satz121(2a,1a,ismore12(stm(m0d(a)),2a,std(m0d(a)),1a,stmis(2a,1a),stdis(2a,1a),p)):negd(a)
+a@[z:zero(a)]
+m0d0:=zeroeq(m0d(a),a,satzd176b(a,z),z):eq(m0d(a),a)
++3d177
+a@t1:=tris(dif,m0d(m0d(a)),df(1a,2a),a,issmsd(std(m0d(a)),stm(m0d(a)),1a,2a,stdis(2a,1a),stmis(2a,1a)),dfis(a)):is"e"(dif,m0d(m0d(a)),a)
+-3d177
+a@satzd177:=refeq1(m0d(m0d(a)),a,t1".3d177"):eq(m0d(m0d(a)),a)
+satzd177a:=symeq(m0d(m0d(a)),a,satzd177):eq(a,m0d(m0d(a)))
+b@[e:eq(a,m0d(b))]
+satzd177b:=treq(m0d(a),m0d(m0d(b)),b,eqm0d(a,m0d(b),e),satzd177(b)):eq(m0d(a),b)
+satzd177c:=symeq(m0d(a),b,satzd177b):eq(b,m0d(a))
+b@[e:eq(m0d(a),b)]
+satzd177d:=satzd177c(b,a,symeq(m0d(a),b,e)):eq(a,m0d(b))
+satzd177e:=symeq(a,m0d(b),satzd177d):eq(m0d(b),a)
++3d178
+a@[p:posd(a)]
+t1:=tr3eq(absd(m0d(a)),m0d(m0d(a)),a,absd(a),absnd(m0d(a),satzd176a(a,p)),satzd177(a),symeq(absd(a),a,absnnd(a,pnotnd(a,p)))):eq(absd(m0d(a)),absd(a))
+a@[z:zero(a)]
+t2:=tr3eq(absd(m0d(a)),m0d(a),a,absd(a),absnnd(m0d(a),0notnd(m0d(a),satzd176b(a,z))),m0d0(a,z),symeq(absd(a),a,absnnd(a,0notnd(a,z)))):eq(absd(m0d(a)),absd(a))
+a@[n:negd(a)]
+t3:=treq(absd(m0d(a)),m0d(a),absd(a),absnnd(m0d(a),pnotnd(m0d(a),satzd176c(a,n))),symeq(absd(a),m0d(a),absnd(a,n))):eq(absd(m0d(a)),absd(a))
+-3d178
+a@satzd178:=rappd(a,eq(absd(m0d(a)),absd(a)),[t:posd(a)]t1".3d178"(t),[t:zero(a)]t2".3d178"(t),[t:negd(a)]t3".3d178"(t)):eq(absd(m0d(a)),absd(a))
+satzd178a:=symeq(absd(m0d(a)),absd(a),satzd178):eq(absd(a),absd(m0d(a)))
++3d179
+t1:=pdeq1b(a,2a,1a):eq(df(pl(1a,2a),pl(2a,1a)),pd(a,m0d(a)))
+t2:=zeroi(pl(1a,2a),pl(2a,1a),compl(1a,2a)):zero(df(pl(1a,2a),pl(2a,1a)))
+-3d179
+satzd179:=eqzero(df(pl(1a,2a),pl(2a,1a)),pd(a,m0d(a)),t1".3d179",t2".3d179"):zero(pd(a,m0d(a)))
+satzd179a:=eqzero(pd(a,m0d(a)),pd(m0d(a),a),compd(a,m0d(a)),satzd179):zero(pd(m0d(a),a))
+b@satzd180:=treq(m0d(pd(a,b)),df(pl(2a,2b),pl(1a,1b)),pd(m0d(a),m0d(b)),m0deqa(pl(1a,1b),pl(2a,2b)),pdeq12b(2a,1a,2b,1b)):eq(m0d(pd(a,b)),pd(m0d(a),m0d(b)))
+satzd180a:=symeq(m0d(pd(a,b)),pd(m0d(a),m0d(b)),satzd180):eq(pd(m0d(a),m0d(b)),m0d(pd(a,b)))
+md:=pd(a,m0d(b)):dif
+b2@mdeq12a:=treq(md(df(a1,a2),df(b1,b2)),pd(df(a1,a2),df(b2,b1)),df(pl(a1,b2),pl(a2,b1)),eqpd2(m0d(df(b1,b2)),df(b2,b1),df(a1,a2),m0deqa(b1,b2)),pdeq12a(a1,a2,b2,b1)):eq(md(df(a1,a2),df(b1,b2)),df(pl(a1,b2),pl(a2,b1)))
+mdeq12b:=symeq(md(df(a1,a2),df(b1,b2)),df(pl(a1,b2),pl(a2,b1)),mdeq12a):eq(df(pl(a1,b2),pl(a2,b1)),md(df(a1,a2),df(b1,b2)))
+r2@mdeq1a:=treq(md(a,df(r1,r2)),pd(a,df(r2,r1)),df(pl(1a,r2),pl(2a,r1)),eqpd2(m0d(df(r1,r2)),df(r2,r1),a,m0deqa(r1,r2)),pdeq1a(a,r2,r1)):eq(md(a,df(r1,r2)),df(pl(1a,r2),pl(2a,r1)))
+mdeq1b:=symeq(md(a,df(r1,r2)),df(pl(1a,r2),pl(2a,r1)),mdeq1a):eq(df(pl(1a,r2),pl(2a,r1)),md(a,df(r1,r2)))
+mdeq2a:=pdeq12a(r1,r2,2a,1a):eq(md(df(r1,r2),a),df(pl(r1,2a),pl(r2,1a)))
+mdeq2b:=pdeq12b(r1,r2,2a,1a):eq(df(pl(r1,2a),pl(r2,1a)),md(df(r1,r2),a))
+c@[e:eq(a,b)]
+eqmd1:=eqpd1(a,b,m0d(c),e):eq(md(a,c),md(b,c))
+eqmd2:=eqpd2(m0d(a),m0d(b),c,eqm0d(a,b,e)):eq(md(c,a),md(c,b))
+d@[e:eq(a,b)][f:eq(c,d)]
+eqmd12:=treq(md(a,c),md(b,c),md(b,d),eqmd1(a,b,c,e),eqmd2(c,d,b,f)):eq(md(a,c),md(b,d))
+b@satzd181:=tr3eq(m0d(md(a,b)),pd(m0d(a),m0d(m0d(b))),pd(m0d(a),b),md(b,a),satzd180(a,m0d(b)),eqpd2(m0d(m0d(b)),b,m0d(a),satzd177(b)),compd(m0d(a),b)):eq(m0d(md(a,b)),md(b,a))
+satzd181a:=symeq(m0d(md(b,a)),md(a,b),satzd181(b,a)):eq(md(a,b),m0d(md(b,a)))
++3d182
+t1:=treq(md(a,b),df(pl(1a,2b),pl(2a,1b)),df(pl(1a,2b),pl(1b,2a)),pdeq1a(a,2b,1b),eqsd(pl(1a,2b),pl(2a,1b),pl(1b,2a),compl(2a,1b))):eq(md(a,b),df(pl(1a,2b),pl(1b,2a)))
+t2:=symeq(md(a,b),df(pl(1a,2b),pl(1b,2a)),t1):eq(df(pl(1a,2b),pl(1b,2a)),md(a,b))
+t3:=stmis(pl(1a,2b),pl(1b,2a)):is(stm(df(pl(1a,2b),pl(1b,2a))),pl(1a,2b))
+t4:=stdis(pl(1a,2b),pl(1b,2a)):is(std(df(pl(1a,2b),pl(1b,2a))),pl(1b,2a))
+-3d182
+[p:posd(md(a,b))]
++*3d182
+p@t5:=eqposd(md(a,b),df(pl(1a,2b),pl(1b,2a)),t1,p):posd(df(pl(1a,2b),pl(1b,2a)))
+-3d182
+p@satzd182a:=ismore12(stm(df(pl(1a,2b),pl(1b,2a))),pl(1a,2b),std(df(pl(1a,2b),pl(1b,2a))),pl(1b,2a),t3".3d182",t4".3d182",t5".3d182"):mored(a,b)
+b@[z:zero(md(a,b))]
++*3d182
+z@t6:=eqzero(md(a,b),df(pl(1a,2b),pl(1b,2a)),t1,z):zero(df(pl(1a,2b),pl(1b,2a)))
+-3d182
+z@satzd182b:=tr3is(cut,pl(1a,2b),stm(df(pl(1a,2b),pl(1b,2a))),std(df(pl(1a,2b),pl(1b,2a))),pl(1b,2a),isstm(pl(1a,2b),pl(1b,2a)),t6".3d182",t4".3d182"):eq(a,b)
+b@[n:negd(md(a,b))]
++*3d182
+n@t7:=eqnegd(md(a,b),df(pl(1a,2b),pl(1b,2a)),t1,n):negd(df(pl(1a,2b),pl(1b,2a)))
+-3d182
+n@satzd182c:=isless12(stm(df(pl(1a,2b),pl(1b,2a))),pl(1a,2b),std(df(pl(1a,2b),pl(1b,2a))),pl(1b,2a),t3".3d182",t4".3d182",t7".3d182"):lessd(a,b)
+b@[m:mored(a,b)]
++*3d182
+m@t8:=posdi(pl(1a,2b),pl(1b,2a),m):posd(df(pl(1a,2b),pl(1b,2a)))
+-3d182
+m@satzd182d:=eqposd(df(pl(1a,2b),pl(1b,2a)),md(a,b),t2".3d182",t8".3d182"):posd(md(a,b))
+b@[e:eq(a,b)]
++*3d182
+e@t9:=zeroi(pl(1a,2b),pl(1b,2a),e):zero(df(pl(1a,2b),pl(1b,2a)))
+-3d182
+e@satzd182e:=eqzero(df(pl(1a,2b),pl(1b,2a)),md(a,b),t2".3d182",t9".3d182"):zero(md(a,b))
+b@[l:lessd(a,b)]
++*3d182
+l@t10:=negdi(pl(1a,2b),pl(1b,2a),l):negd(df(pl(1a,2b),pl(1b,2a)))
+-3d182
+l@satzd182f:=eqnegd(df(pl(1a,2b),pl(1b,2a)),md(a,b),t2".3d182",t10".3d182"):negd(md(a,b))
++3d183
+b@t1:=tris(cut,pl(1a,2b),pl(2b,1a),pl(stm(m0d(b)),std(m0d(a))),compl(1a,2b),12issmsd(2b,1b,2a,1a)):is(pl(1a,2b),pl(stm(m0d(b)),std(m0d(a))))
+t2:=t1(b,a):is(pl(1b,2a),pl(stm(m0d(a)),std(m0d(b))))
+-3d183
+b@[m:mored(a,b)]
+satzd183a:=isless12(pl(1b,2a),pl(stm(m0d(a)),std(m0d(b))),pl(1a,2b),pl(stm(m0d(b)),std(m0d(a))),t2".3d183",t1".3d183",lemmad5(a,b,m)):lessd(m0d(a),m0d(b))
+b@[e:eq(a,b)]
+staz183b:=eqm0d(a,b,e):eq(m0d(a),m0d(b))
+b@[l:lessd(a,b)]
+satzd183c:=ismore12(pl(1b,2a),pl(stm(m0d(a)),std(m0d(b))),pl(1a,2b),pl(stm(m0d(b)),std(m0d(a))),t2".3d183",t1".3d183",lemmad6(a,b,l)):mored(m0d(a),m0d(b))
+b@[l:lessd(m0d(a),m0d(b))]
+satzd183d:=eqmored12(m0d(m0d(a)),a,m0d(m0d(b)),b,satzd177(a),satzd177(b),satzd183c(m0d(a),m0d(b),l)):mored(a,b)
+b@[e:eq(m0d(a),m0d(b))]
+satzd183e:=tr3eq(a,m0d(m0d(a)),m0d(m0d(b)),b,satzd177a(a),eqm0d(m0d(a),m0d(b),e),satzd177(b)):eq(a,b)
+b@[m:mored(m0d(a),m0d(b))]
+satzd183f:=eqlessd12(m0d(m0d(a)),a,m0d(m0d(b)),b,satzd177(a),satzd177(b),satzd183a(m0d(a),m0d(b),m)):lessd(a,b)
++3d184
+a@t1:=tr3eq(a,df(pl(1a,pl(1rp,1rp)),pl(2a,pl(1rp,1rp))),df(pl(pl(1a,1rp),1rp),pl(1rp,pl(2a,1rp))),md(pdofrp(1a),pdofrp(2a)),lemmad3(a,pl(1rp,1rp)),eqsmsd(pl(1a,pl(1rp,1rp)),pl(2a,pl(1rp,1rp)),pl(pl(1a,1rp),1rp),pl(1rp,pl(2a,1rp)),asspl2(1a,1rp,1rp),3pl12(2a,1rp,1rp)),mdeq12b(pl(1a,1rp),1rp,pl(2a,1rp),1rp)):eq(a,md(pdofrp(1a),pdofrp(2a)))
+t2:=and3i(posd(pdofrp(1a)),posd(pdofrp(2a)),eq(a,md(pdofrp(1a),pdofrp(2a))),posdirp(1a),posdirp(2a),t1):and3(posd(pdofrp(1a)),posd(pdofrp(2a)),eq(a,md(pdofrp(1a),pdofrp(2a))))
+t3:=somei(dif,[x:dif]and3(posd(pdofrp(1a)),posd(x),eq(a,md(pdofrp(1a),x))),pdofrp(2a),t2):some"l"(dif,[x:dif]and3(posd(pdofrp(1a)),posd(x),eq(a,md(pdofrp(1a),x))))
+-3d184
+a@satzd184:=somei(dif,[x:dif]some"l"(dif,[y:dif]and3(posd(x),posd(y),eq(a,md(x,y)))),pdofrp(1a),t3".3d184"):some"l"(dif,[x:dif]some"l"(dif,[y:dif]and3(posd(x),posd(y),eq(a,md(x,y)))))
+c@asspd1:=tr3eq(pd(pd(a,b),c),df(pl(pl(1a,1b),1c),pl(pl(2a,2b),2c)),df(pl(1a,pl(1b,1c)),pl(2a,pl(2b,2c))),pd(a,pd(b,c)),pdeq2a(c,pl(1a,1b),pl(2a,2b)),eqsmsd(pl(pl(1a,1b),1c),pl(pl(2a,2b),2c),pl(1a,pl(1b,1c)),pl(2a,pl(2b,2c)),asspl1(1a,1b,1c),asspl1(2a,2b,2c)),pdeq1b(a,pl(1b,1c),pl(2b,2c))):eq(pd(pd(a,b),c),pd(a,pd(b,c)))
+asspd2:=symeq(pd(pd(a,b),c),pd(a,pd(b,c)),asspd1):eq(pd(a,pd(b,c)),pd(pd(a,b),c))
+3pd23:=tr3eq(pd(pd(a,b),c),pd(a,pd(b,c)),pd(a,pd(c,b)),pd(pd(a,c),b),asspd1(a,b,c),eqpd2(pd(b,c),pd(c,b),a,compd(b,c)),asspd2(a,c,b)):eq(pd(pd(a,b),c),pd(pd(a,c),b))
+d@4pd23:=tr3eq(pd(pd(a,b),pd(c,d)),pd(pd(pd(a,b),c),d),pd(pd(pd(a,c),b),d),pd(pd(a,c),pd(b,d)),asspd2(pd(a,b),c,d),eqpd1(pd(pd(a,b),c),pd(pd(a,c),b),d,3pd23),asspd1(pd(a,c),b,d)):eq(pd(pd(a,b),pd(c,d)),pd(pd(a,c),pd(b,d)))
+b@pdmd:=treq(pd(md(a,b),b),pd(a,pd(m0d(b),b)),a,asspd1(a,m0d(b),b),pd02(a,pd(m0d(b),b),satzd179a(b))):eq(pd(md(a,b),b),a)
+mdpd:=treq(md(pd(a,b),b),pd(a,pd(b,m0d(b))),a,asspd1(a,b,m0d(b)),pd02(a,pd(b,m0d(b)),satzd179(b))):eq(md(pd(a,b),b),a)
+d@satzd185:=treq(pd(md(a,b),md(c,d)),pd(pd(a,c),pd(m0d(b),m0d(d))),md(pd(a,c),pd(b,d)),4pd23(a,m0d(b),c,m0d(d)),eqpd2(pd(m0d(b),m0d(d)),m0d(pd(b,d)),pd(a,c),satzd180a(b,d))):eq(pd(md(a,b),md(c,d)),md(pd(a,c),pd(b,d)))
+c@satzd186:=asspd1:eq(pd(pd(a,b),c),pd(a,pd(b,c)))
+b@satzd187a:=treq(pd(b,md(a,b)),pd(md(a,b),b),a,compd(b,md(a,b)),pdmd):eq(pd(b,md(a,b)),a)
+[x:dif][e:eq(pd(b,x),a)]
+satzd187c:=treq(md(a,b),md(pd(x,b),b),x,eqmd1(a,pd(x,b),b,treq1(a,pd(x,b),pd(b,x),e,compd(b,x))),mdpd(x,b)):eq(md(a,b),x)
+satzd187d:=symeq(md(a,b),x,satzd187c):eq(x,md(a,b))
+x@[e:eq(pd(x,b),a)]
+satzd187e:=satzd187c(treq(pd(b,x),pd(x,b),a,compd(b,x),e)):eq(md(a,b),x)
+satzd187f:=symeq(md(a,b),x,satzd187e):eq(x,md(a,b))
++3d188
+c@t1:=tr3eq(md(pd(a,c),pd(b,c)),pd(pd(a,c),pd(m0d(b),m0d(c))),pd(md(a,b),md(c,c)),md(a,b),eqpd2(m0d(pd(b,c)),pd(m0d(b),m0d(c)),pd(a,c),satzd180(b,c)),4pd23(a,c,m0d(b),m0d(c)),pd02(md(a,b),md(c,c),satzd179(c))):eq(md(pd(a,c),pd(b,c)),md(a,b))
+t2:=symeq(md(pd(a,c),pd(b,c)),md(a,b),t1):eq(md(a,b),md(pd(a,c),pd(b,c)))
+-3d188
+c@[m:mored(pd(a,c),pd(b,c))]
++*3d188
+m@t3:=eqposd(md(pd(a,c),pd(b,c)),md(a,b),t1,satzd182d(pd(a,c),pd(b,c),m)):posd(md(a,b))
+-3d188
+m@satzd188a:=satzd182a(a,b,t3".3d188"):mored(a,b)
+c@[e:eq(pd(a,c),pd(b,c))]
++*3d188
+e@t4:=eqzero(md(pd(a,c),pd(b,c)),md(a,b),t1,satzd182e(pd(a,c),pd(b,c),e)):zero(md(a,b))
+-3d188
+e@satzd188b:=satzd182b(a,b,t4".3d188"):eq(a,b)
+c@[l:lessd(pd(a,c),pd(b,c))]
++*3d188
+l@t5:=eqnegd(md(pd(a,c),pd(b,c)),md(a,b),t1,satzd182f(pd(a,c),pd(b,c),l)):negd(md(a,b))
+-3d188
+l@satzd188c:=satzd182c(a,b,t5".3d188"):lessd(a,b)
+c@[m:mored(a,b)]
++*3d188
+m@t6:=eqposd(md(a,b),md(pd(a,c),pd(b,c)),t2,satzd182d(a,b,m)):posd(md(pd(a,c),pd(b,c)))
+-3d188
+m@satzd188d:=satzd182a(pd(a,c),pd(b,c),t6".3d188"):mored(pd(a,c),pd(b,c))
+c@[e:eq(a,b)]
+satzd188e:=eqpd1(a,b,c,e):eq(pd(a,c),pd(b,c))
+c@[l:lessd(a,b)]
++*3d188
+l@t7:=eqnegd(md(a,b),md(pd(a,c),pd(b,c)),t2,satzd182f(a,b,l)):negd(md(pd(a,c),pd(b,c)))
+-3d188
+l@satzd188f:=satzd182c(pd(a,c),pd(b,c),t7".3d188"):lessd(pd(a,c),pd(b,c))
+c@[m:mored(pd(c,a),pd(c,b))]
+satzd188g:=satzd188a(eqmored12(pd(c,a),pd(a,c),pd(c,b),pd(b,c),compd(c,a),compd(c,b),m)):mored(a,b)
+c@[e:eq(pd(c,a),pd(c,b))]
+satzd188h:=satzd188b(tr3eq(pd(a,c),pd(c,a),pd(c,b),pd(b,c),compd(a,c),e,compd(c,b))):eq(a,b)
+[l:lessd(pd(c,a),pd(c,b))]
+satzd188j:=satzd188c(eqlessd12(pd(c,a),pd(a,c),pd(c,b),pd(b,c),compd(c,a),compd(c,b),l)):lessd(a,b)
+c@[m:mored(a,b)]
+satzd188k:=eqmored12(pd(a,c),pd(c,a),pd(b,c),pd(c,b),compd(a,c),compd(b,c),satzd188d(m)):mored(pd(c,a),pd(c,b))
+c@[e:eq(a,b)]
+satzd188l:=eqpd2(a,b,c,e):eq(pd(c,a),pd(c,b))
+c@[l:lessd(a,b)]
+satzd188m:=eqlessd12(pd(a,c),pd(c,a),pd(b,c),pd(c,b),compd(a,c),compd(b,c),satzd188f(l)):lessd(pd(c,a),pd(c,b))
+d@[e:eq(a,b)][m:mored(c,d)]
+satzd188n:=eqmored2(pd(a,d),pd(b,d),pd(a,c),eqpd1(a,b,d,e),satzd188k(c,d,a,m)):mored(pd(a,c),pd(b,d))
+satzd188o:=eqmored12(pd(a,c),pd(c,a),pd(b,d),pd(d,b),compd(a,c),compd(b,d),satzd188n):mored(pd(c,a),pd(d,b))
+e@[l:lessd(c,d)]
+satzd188p:=eqlessd2(pd(a,d),pd(b,d),pd(a,c),eqpd1(a,b,d,e),satzd188m(c,d,a,l)):lessd(pd(a,c),pd(b,d))
+satzd188q:=eqlessd12(pd(a,c),pd(c,a),pd(b,d),pd(d,b),compd(a,c),compd(b,d),satzd188p):lessd(pd(c,a),pd(d,b))
+d@[m:mored(a,b)][n:mored(c,d)]
+satzd189:=trmored(pd(a,c),pd(b,c),pd(b,d),satzd188d(a,b,c,m),satzd188k(c,d,b,n)):mored(pd(a,c),pd(b,d))
+d@[l:lessd(a,b)][k:lessd(c,d)]
+satzd189a:=lemmad5(pd(b,d),pd(a,c),satzd189(b,a,d,c,lemmad6(a,b,l),lemmad6(c,d,k))):lessd(pd(a,c),pd(b,d))
+d@[m:moreq(a,b)][n:mored(c,d)]
+satzd190a:=orapp(mored(a,b),eq(a,b),mored(pd(a,c),pd(b,d)),m,[t:mored(a,b)]satzd189(t,n),[t:eq(a,b)]satzd188n(t,n)):mored(pd(a,c),pd(b,d))
+d@[m:mored(a,b)][n:moreq(c,d)]
+satzd190b:=eqmored12(pd(c,a),pd(a,c),pd(d,b),pd(b,d),compd(c,a),compd(d,b),satzd190a(c,d,a,b,n,m)):mored(pd(a,c),pd(b,d))
+d@[l:lesseq(a,b)][k:lessd(c,d)]
+satzd190c:=lemmad5(pd(b,d),pd(a,c),satzd190a(b,a,d,c,satzd168b(a,b,l),lemmad6(c,d,k))):lessd(pd(a,c),pd(b,d))
+d@[l:lessd(a,b)][k:lesseq(c,d)]
+satzd190d:=lemmad5(pd(b,d),pd(a,c),satzd190b(b,a,d,c,lemmad6(a,b,l),satzd168b(c,d,k))):lessd(pd(a,c),pd(b,d))
+d@[m:moreq(a,b)][n:moreq(c,d)]
++3d191
+[e:eq(a,b)][f:eq(c,d)]
+t1:=moreqi2(pd(a,c),pd(b,d),eqpd12(a,b,c,d,e,f)):moreq(pd(a,c),pd(b,d))
+e@[o:mored(c,d)]
+t2:=moreqi1(pd(a,c),pd(b,d),satzd190a(m,o)):moreq(pd(a,c),pd(b,d))
+e@t3:=orapp(mored(c,d),eq(c,d),moreq(pd(a,c),pd(b,d)),n,[t:mored(c,d)]t2(t),[t:eq(c,d)]t1(t)):moreq(pd(a,c),pd(b,d))
+n@[o:mored(a,b)]
+t4:=moreqi1(pd(a,c),pd(b,d),satzd190b(o,n)):moreq(pd(a,c),pd(b,d))
+-3d191
+satzd191:=orapp(mored(a,b),eq(a,b),moreq(pd(a,c),pd(b,d)),m,[t:mored(a,b)]t4".3d191"(t),[t:eq(a,b)]t3".3d191"(t)):moreq(pd(a,c),pd(b,d))
+d@[l:lesseq(a,b)][k:lesseq(c,d)]
+satzd191a:=satzd168a(pd(b,d),pd(a,c),satzd191(b,a,d,c,satzd168b(a,b,l),satzd168b(c,d,k))):lesseq(pd(a,c),pd(b,d))
+b@td:=df(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,2b),ts(2a,1b))):dif
++iv4d
+a2@[r:cut]
+t1:=ists1(stm(df(a1,a2)),a1,r,stmis(a1,a2)):is(ts(stm(df(a1,a2)),r),ts(a1,r))
+t2:=ists2(stm(df(a1,a2)),a1,r,stmis(a1,a2)):is(ts(r,stm(df(a1,a2))),ts(r,a1))
+t3:=ists1(std(df(a1,a2)),a2,r,stdis(a1,a2)):is(ts(std(df(a1,a2)),r),ts(a2,r))
+t4:=ists2(std(df(a1,a2)),a2,r,stdis(a1,a2)):is(ts(r,std(df(a1,a2))),ts(r,a2))
+[s:cut]
+t5:=ispl12(ts(stm(df(a1,a2)),r),ts(a1,r),ts(std(df(a1,a2)),s),ts(a2,s),t1(r),t3(s)):is(pl(ts(stm(df(a1,a2)),r),ts(std(df(a1,a2)),s)),pl(ts(a1,r),ts(a2,s)))
+t6:=ispl12(ts(r,stm(df(a1,a2))),ts(r,a1),ts(s,std(df(a1,a2))),ts(s,a2),t2(r),t4(s)):is(pl(ts(r,stm(df(a1,a2))),ts(s,std(df(a1,a2)))),pl(ts(r,a1),ts(s,a2)))
+t7:=ispl12(ts(std(df(a1,a2)),r),ts(a2,r),ts(stm(df(a1,a2)),s),ts(a1,s),t3(r),t1(s)):is(pl(ts(std(df(a1,a2)),r),ts(stm(df(a1,a2)),s)),pl(ts(a2,r),ts(a1,s)))
+t8:=ispl12(ts(r,std(df(a1,a2))),ts(r,a2),ts(s,stm(df(a1,a2))),ts(s,a1),t4(r),t2(s)):is(pl(ts(r,std(df(a1,a2))),ts(s,stm(df(a1,a2)))),pl(ts(r,a2),ts(s,a1)))
+b2@t9:=tris(cut,pl(ts(stm(df(a1,a2)),stm(df(b1,b2))),ts(std(df(a1,a2)),std(df(b1,b2)))),pl(ts(a1,stm(df(b1,b2))),ts(a2,std(df(b1,b2)))),pl(ts(a1,b1),ts(a2,b2)),t5(a1,a2,stm(df(b1,b2)),std(df(b1,b2))),t6(b1,b2,a1,a2)):is(pl(ts(stm(df(a1,a2)),stm(df(b1,b2))),ts(std(df(a1,a2)),std(df(b1,b2)))),pl(ts(a1,b1),ts(a2,b2)))
+t10:=tris(cut,pl(ts(stm(df(a1,a2)),std(df(b1,b2))),ts(std(df(a1,a2)),stm(df(b1,b2)))),pl(ts(a1,std(df(b1,b2))),ts(a2,stm(df(b1,b2)))),pl(ts(a1,b2),ts(a2,b1)),t5(a1,a2,std(df(b1,b2)),stm(df(b1,b2))),t8(b1,b2,a1,a2)):is(pl(ts(stm(df(a1,a2)),std(df(b1,b2))),ts(std(df(a1,a2)),stm(df(b1,b2)))),pl(ts(a1,b2),ts(a2,b1)))
+-iv4d
+b2@td12:=issmsd(pl(ts(stm(df(a1,a2)),stm(df(b1,b2))),ts(std(df(a1,a2)),std(df(b1,b2)))),pl(ts(stm(df(a1,a2)),std(df(b1,b2))),ts(std(df(a1,a2)),stm(df(b1,b2)))),pl(ts(a1,b1),ts(a2,b2)),pl(ts(a1,b2),ts(a2,b1)),t9".iv4d",t10".iv4d"):is"e"(dif,td(df(a1,a2),df(b1,b2)),df(pl(ts(a1,b1),ts(a2,b2)),pl(ts(a1,b2),ts(a2,b1))))
+r2@td1:=issmsd(pl(ts(1a,stm(df(r1,r2))),ts(2a,std(df(r1,r2)))),pl(ts(1a,std(df(r1,r2))),ts(2a,stm(df(r1,r2)))),pl(ts(1a,r1),ts(2a,r2)),pl(ts(1a,r2),ts(2a,r1)),t6".iv4d"(r1,r2,1a,2a),t8".iv4d"(r1,r2,1a,2a)):is"e"(dif,td(a,df(r1,r2)),df(pl(ts(1a,r1),ts(2a,r2)),pl(ts(1a,r2),ts(2a,r1))))
+td2:=issmsd(pl(ts(stm(df(r1,r2)),1a),ts(std(df(r1,r2)),2a)),pl(ts(stm(df(r1,r2)),2a),ts(std(df(r1,r2)),1a)),pl(ts(r1,1a),ts(r2,2a)),pl(ts(r1,2a),ts(r2,1a)),t5".iv4d"(r1,r2,1a,2a),t5".iv4d"(r1,r2,2a,1a)):is"e"(dif,td(df(r1,r2),a),df(pl(ts(r1,1a),ts(r2,2a)),pl(ts(r1,2a),ts(r2,1a))))
+b2@tdeq12a:=refeq1(td(df(a1,a2),df(b1,b2)),df(pl(ts(a1,b1),ts(a2,b2)),pl(ts(a1,b2),ts(a2,b1))),td12):eq(td(df(a1,a2),df(b1,b2)),df(pl(ts(a1,b1),ts(a2,b2)),pl(ts(a1,b2),ts(a2,b1))))
+tdeq12b:=refeq2(td(df(a1,a2),df(b1,b2)),df(pl(ts(a1,b1),ts(a2,b2)),pl(ts(a1,b2),ts(a2,b1))),td12):eq(df(pl(ts(a1,b1),ts(a2,b2)),pl(ts(a1,b2),ts(a2,b1))),td(df(a1,a2),df(b1,b2)))
+r2@tdeq1a:=refeq1(td(a,df(r1,r2)),df(pl(ts(1a,r1),ts(2a,r2)),pl(ts(1a,r2),ts(2a,r1))),td1):eq(td(a,df(r1,r2)),df(pl(ts(1a,r1),ts(2a,r2)),pl(ts(1a,r2),ts(2a,r1))))
+tdeq1b:=refeq2(td(a,df(r1,r2)),df(pl(ts(1a,r1),ts(2a,r2)),pl(ts(1a,r2),ts(2a,r1))),td1):eq(df(pl(ts(1a,r1),ts(2a,r2)),pl(ts(1a,r2),ts(2a,r1))),td(a,df(r1,r2)))
+tdeq2a:=refeq1(td(df(r1,r2),a),df(pl(ts(r1,1a),ts(r2,2a)),pl(ts(r1,2a),ts(r2,1a))),td2):eq(td(df(r1,r2),a),df(pl(ts(r1,1a),ts(r2,2a)),pl(ts(r1,2a),ts(r2,1a))))
+tdeq2b:=refeq2(td(df(r1,r2),a),df(pl(ts(r1,1a),ts(r2,2a)),pl(ts(r1,2a),ts(r2,1a))),td2):eq(df(pl(ts(r1,1a),ts(r2,2a)),pl(ts(r1,2a),ts(r2,1a))),td(df(r1,r2),a))
++4d194
+b@t1:=ispl12(ts(1a,1b),ts(1b,1a),ts(2a,2b),ts(2b,2a),comts(1a,1b),comts(2a,2b)):is(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1b,1a),ts(2b,2a)))
+t2:=tris(cut,pl(ts(1a,2b),ts(2a,1b)),pl(ts(2a,1b),ts(1a,2b)),pl(ts(1b,2a),ts(2b,1a)),compl(ts(1a,2b),ts(2a,1b)),ispl12(ts(2a,1b),ts(1b,2a),ts(1a,2b),ts(2b,1a),comts(2a,1b),comts(1a,2b))):is(pl(ts(1a,2b),ts(2a,1b)),pl(ts(1b,2a),ts(2b,1a)))
+-4d194
+b@satzd194:=eqsmsd(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,2b),ts(2a,1b)),pl(ts(1b,1a),ts(2b,2a)),pl(ts(1b,2a),ts(2b,1a)),t1".4d194",t2".4d194"):eq(td(a,b),td(b,a))
+comtd:=satzd194:eq(td(a,b),td(b,a))
+c@[e:eq(a,b)]
++*iv4d
+e@[r:cut]
+t11:=tr3is(cut,pl(ts(1a,r),ts(2b,r)),ts(pl(1a,2b),r),ts(pl(1b,2a),r),pl(ts(1b,r),ts(2a,r)),distpt1(1a,2b,r),ists1(pl(1a,2b),pl(1b,2a),r,e),disttp1(1b,2a,r)):is(pl(ts(1a,r),ts(2b,r)),pl(ts(1b,r),ts(2a,r)))
+e@t12:=tr3is(cut,pl(pl(ts(1a,1c),ts(2a,2c)),pl(ts(1b,2c),ts(2b,1c))),pl(pl(ts(1a,1c),ts(2b,1c)),pl(ts(1b,2c),ts(2a,2c))),pl(pl(ts(1b,1c),ts(2a,1c)),pl(ts(1a,2c),ts(2b,2c))),pl(pl(ts(1b,1c),ts(2b,2c)),pl(ts(1a,2c),ts(2a,1c))),4pl24(ts(1a,1c),ts(2a,2c),ts(1b,2c),ts(2b,1c)),ispl12(pl(ts(1a,1c),ts(2b,1c)),pl(ts(1b,1c),ts(2a,1c)),pl(ts(1b,2c),ts(2a,2c)),pl(ts(1a,2c),ts(2b,2c)),t11(1c),t11(b,a,c,symeq(a,b,e),2c)),4pl24(ts(1b,1c),ts(2a,1c),ts(1a,2c),ts(2b,2c))):is(pl(pl(ts(1a,1c),ts(2a,2c)),pl(ts(1b,2c),ts(2b,1c))),pl(pl(ts(1b,1c),ts(2b,2c)),pl(ts(1a,2c),ts(2a,1c))))
+-iv4d
+e@eqtd1:=eqi12(pl(ts(1a,1c),ts(2a,2c)),pl(ts(1a,2c),ts(2a,1c)),pl(ts(1b,1c),ts(2b,2c)),pl(ts(1b,2c),ts(2b,1c)),t12".iv4d"):eq(td(a,c),td(b,c))
+eqtd2:=tr3eq(td(c,a),td(a,c),td(b,c),td(c,b),comtd(c,a),eqtd1,comtd(b,c)):eq(td(c,a),td(c,b))
+d@[e:eq(a,b)][f:eq(c,d)]
+eqtd12:=treq(td(a,c),td(b,c),td(b,d),eqtd1(a,b,c,e),eqtd2(c,d,b,f)):eq(td(a,c),td(b,d))
+b@[z:zero(a)]
++4d192
+t1:=tris(cut,pl(ts(1a,1b),ts(2a,2b)),pl(ts(2a,1b),ts(1a,2b)),pl(ts(1a,2b),ts(2a,1b)),ispl12(ts(1a,1b),ts(2a,1b),ts(2a,2b),ts(1a,2b),ists1(1a,2a,1b,z),ists1(2a,1a,2b,symis(cut,1a,2a,z))),compl(ts(2a,1b),ts(1a,2b))):is(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,2b),ts(2a,1b)))
+-4d192
+satzd192a:=zeroi(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,2b),ts(2a,1b)),t1".4d192"):zero(td(a,b))
+b@[z:zero(b)]
+satzd192b:=eqzero(td(b,a),td(a,b),comtd(b,a),satzd192a(b,a,z)):zero(td(a,b))
+b@[z:zero(a)]
+td01:=satzd192a(z):zero(td(a,b))
+b@[z:zero(b)]
+td02:=satzd192b(z):zero(td(a,b))
+b@satzd197a:=tr3eq(td(m0d(a),b),df(pl(ts(2a,1b),ts(1a,2b)),pl(ts(2a,2b),ts(1a,1b))),df(pl(ts(1a,2b),ts(2a,1b)),pl(ts(1a,1b),ts(2a,2b))),m0d(td(a,b)),tdeq2a(b,2a,1a),eqsmsd(pl(ts(2a,1b),ts(1a,2b)),pl(ts(2a,2b),ts(1a,1b)),pl(ts(1a,2b),ts(2a,1b)),pl(ts(1a,1b),ts(2a,2b)),compl(ts(2a,1b),ts(1a,2b)),compl(ts(2a,2b),ts(1a,1b))),m0deqb(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,2b),ts(2a,1b)))):eq(td(m0d(a),b),m0d(td(a,b)))
+satzd197b:=tr3eq(td(a,m0d(b)),td(m0d(b),a),m0d(td(b,a)),m0d(td(a,b)),comtd(a,m0d(b)),satzd197a(b,a),eqm0d(td(b,a),td(a,b),comtd(b,a))):eq(td(a,m0d(b)),m0d(td(a,b)))
+satzd197c:=treq2(td(m0d(a),b),td(a,m0d(b)),m0d(td(a,b)),satzd197a,satzd197b):eq(td(m0d(a),b),td(a,m0d(b)))
+satzd197d:=symeq(td(m0d(a),b),td(a,m0d(b)),satzd197c):eq(td(a,m0d(b)),td(m0d(a),b))
+satzd197e:=symeq(td(m0d(a),b),m0d(td(a,b)),satzd197a):eq(m0d(td(a,b)),td(m0d(a),b))
+satzd197f:=symeq(td(a,m0d(b)),m0d(td(a,b)),satzd197b):eq(m0d(td(a,b)),td(a,m0d(b)))
+satzd198:=treq(td(m0d(a),m0d(b)),td(a,m0d(m0d(b))),td(a,b),satzd197c(a,m0d(b)),eqtd2(m0d(m0d(b)),b,a,satzd177(b))):eq(td(m0d(a),m0d(b)),td(a,b))
+satzd198a:=symeq(td(m0d(a),m0d(b)),td(a,b),satzd198):eq(td(a,b),td(m0d(a),m0d(b)))
+[p:posd(a)][q:posd(b)]
++*iv4d
+q@[r:cut]
+t13:=tris(cut,pl(ts(r,mn(1b,2b,q)),ts(r,2b)),ts(r,pl(mn(1b,2b,q),2b)),ts(r,1b),distpt2(r,mn(1b,2b,q),2b),ists2(pl(mn(1b,2b,q),2b),1b,r,satz140e(1b,2b,q))):is(pl(ts(r,mn(1b,2b,q)),ts(r,2b)),ts(r,1b))
+[s:cut]
+t14:=tris(cut,pl(ts(r,mn(1b,2b,q)),pl(ts(r,2b),s)),pl(pl(ts(r,mn(1b,2b,q)),ts(r,2b)),s),pl(ts(r,1b),s),asspl2(ts(r,mn(1b,2b,q)),ts(r,2b),s),ispl1(pl(ts(r,mn(1b,2b,q)),ts(r,2b)),ts(r,1b),s,t13)):is(pl(ts(r,mn(1b,2b,q)),pl(ts(r,2b),s)),pl(ts(r,1b),s))
+t15:=tris(cut,pl(ts(r,mn(1b,2b,q)),pl(ts(r,2b),s)),pl(ts(r,1b),s),pl(s,ts(r,1b)),t14,compl(ts(r,1b),s)):is(pl(ts(r,mn(1b,2b,q)),pl(ts(r,2b),s)),pl(s,ts(r,1b)))
+q@t16:=satz135h(pl(ts(1a,2b),ts(2a,2b)),pl(ts(2a,2b),ts(1a,2b)),ts(1a,mn(1b,2b,q)),ts(2a,mn(1b,2b,q)),compl(ts(1a,2b),ts(2a,2b)),satz145a(1a,2a,mn(1b,2b,q),p)):more(pl(ts(1a,mn(1b,2b,q)),pl(ts(1a,2b),ts(2a,2b))),pl(ts(2a,mn(1b,2b,q)),pl(ts(2a,2b),ts(1a,2b))))
+t17:=ismore12(pl(ts(1a,mn(1b,2b,q)),pl(ts(1a,2b),ts(2a,2b))),pl(ts(1a,1b),ts(2a,2b)),pl(ts(2a,mn(1b,2b,q)),pl(ts(2a,2b),ts(1a,2b))),pl(ts(1a,2b),ts(2a,1b)),t14(1a,ts(2a,2b)),t15(2a,ts(1a,2b)),t16):more(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,2b),ts(2a,1b)))
+-iv4d
+q@ptdpp:=posdi(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,2b),ts(2a,1b)),t17".iv4d"):posd(td(a,b))
+b@[p:posd(a)][n:negd(b)]
++*iv4d
+n@t18:=eqposd(td(a,m0d(b)),m0d(td(a,b)),satzd197b(a,b),ptdpp(a,m0d(b),p,satzd176c(b,n))):posd(m0d(td(a,b)))
+-iv4d
+n@ntdpn:=satzd176f(td(a,b),t18".iv4d"):negd(td(a,b))
+b@[n:negd(a)][p:posd(b)]
+ntdnp:=eqnegd(td(b,a),td(a,b),comtd(b,a),ntdpn(b,a,p,n)):negd(td(a,b))
+b@[n:negd(a)][o:negd(b)]
+ptdnn:=eqposd(td(m0d(a),m0d(b)),td(a,b),satzd198(a,b),ptdpp(m0d(a),m0d(b),satzd176c(a,n),satzd176c(b,o))):posd(td(a,b))
+b@[n:not(zero(a))][o:not(zero(b))]
++*4d192
+o@[p:posd(a)][q:posd(b)]
+t2:=pnot0d(td(a,b),ptdpp(a,b,p,q)):not(zero(td(a,b)))
+p@[m:negd(b)]
+t3:=nnot0d(td(a,b),ntdpn(a,b,p,m)):not(zero(td(a,b)))
+p@t4:=rappd(b,not(zero(td(a,b))),[t:posd(b)]t2(t),th2"l.imp"(zero(b),not(zero(td(a,b))),o),[t:negd(b)]t3(t)):not(zero(td(a,b)))
+o@[m:negd(a)][p:posd(b)]
+t5:=nnot0d(td(a,b),ntdnp(a,b,m,p)):not(zero(td(a,b)))
+m@[l:negd(b)]
+t6:=pnot0d(td(a,b),ptdnn(a,b,m,l)):not(zero(td(a,b)))
+m@t7:=rappd(b,not(zero(td(a,b))),[t:posd(b)]t5(t),th2"l.imp"(zero(b),not(zero(td(a,b))),o),[t:negd(b)]t6(t)):not(zero(td(a,b)))
+-4d192
+o@satzd192d:=rappd(a,not(zero(td(a,b))),[t:posd(a)]t4".4d192"(t),th2"l.imp"(zero(a),not(zero(td(a,b))),n),[t:negd(a)]t7".4d192"(t)):not(zero(td(a,b)))
+b@[z:zero(td(a,b))]
++*4d192
+z@[n:not(zero(a))]
+t8:=et(zero(b),th3"l.imp"(not(zero(b)),not(zero(td(a,b))),weli(zero(td(a,b)),z),[t:not(zero(b))]satzd192d(n,t))):zero(b)
+-4d192
+z@satzd192c:=[t:not(zero(a))]t8".4d192"(t):or(zero(a),zero(b))
++4d193
+b@[p:posd(a)][q:posd(b)]
+t1:=treq2(absd(td(a,b)),td(absd(a),absd(b)),td(a,b),absnnd(td(a,b),pnotnd(td(a,b),ptdpp(a,b,p,q))),eqtd12(absd(a),a,absd(b),b,absnnd(a,pnotnd(a,p)),absnnd(b,pnotnd(b,q)))):eq(absd(td(a,b)),td(absd(a),absd(b)))
+p@[n:negd(b)]
+t2:=treq(absd(td(a,b)),m0d(td(a,b)),td(a,m0d(b)),absnd(td(a,b),ntdpn(a,b,p,n)),satzd197f(a,b)):eq(absd(td(a,b)),td(a,m0d(b)))
+t3:=treq2(absd(td(a,b)),td(absd(a),absd(b)),td(a,m0d(b)),t2,eqtd12(absd(a),a,absd(b),m0d(b),absnnd(a,pnotnd(a,p)),absnd(b,n))):eq(absd(td(a,b)),td(absd(a),absd(b)))
+b@[z:zero(a)]
+t4:=zeroeq(absd(td(a,b)),td(absd(a),absd(b)),satzd166f(td(a,b),td01(a,b,z)),td01(absd(a),absd(b),satzd166f(a,z))):eq(absd(td(a,b)),td(absd(a),absd(b)))
+b@[z:zero(b)]
+t5:=zeroeq(absd(td(a,b)),td(absd(a),absd(b)),satzd166f(td(a,b),td02(a,b,z)),td02(absd(a),absd(b),satzd166f(b,z))):eq(absd(td(a,b)),td(absd(a),absd(b)))
+b@[n:negd(a)][p:posd(b)]
+t6:=tr3eq(absd(td(a,b)),absd(td(b,a)),td(absd(b),absd(a)),td(absd(a),absd(b)),eqabsd(td(a,b),td(b,a),comtd(a,b)),t3(b,a,p,n),comtd(absd(b),absd(a))):eq(absd(td(a,b)),td(absd(a),absd(b)))
+n@[o:negd(b)]
+t7:=treq(td(absd(a),absd(b)),td(m0d(a),m0d(b)),td(a,b),eqtd12(absd(a),m0d(a),absd(b),m0d(b),absnd(a,n),absnd(b,o)),satzd198(a,b)):eq(td(absd(a),absd(b)),td(a,b))
+t8:=treq2(absd(td(a,b)),td(absd(a),absd(b)),td(a,b),absnnd(td(a,b),pnotnd(td(a,b),ptdnn(a,b,n,o))),t7):eq(absd(td(a,b)),td(absd(a),absd(b)))
+b@[p:posd(a)]
+t9:=rappd(b,eq(absd(td(a,b)),td(absd(a),absd(b))),[t:posd(b)]t1(p,t),[t:zero(b)]t5(t),[t:negd(b)]t3(p,t)):eq(absd(td(a,b)),td(absd(a),absd(b)))
+b@[n:negd(a)]
+t10:=rappd(b,eq(absd(td(a,b)),td(absd(a),absd(b))),[t:posd(b)]t6(n,t),[t:zero(b)]t5(t),[t:negd(b)]t8(n,t)):eq(absd(td(a,b)),td(absd(a),absd(b)))
+-4d193
+b@satzd193:=rappd(a,eq(absd(td(a,b)),td(absd(a),absd(b))),[t:posd(a)]t9".4d193"(t),[t:zero(a)]t4".4d193"(t),[t:negd(a)]t10".4d193"(t)):eq(absd(td(a,b)),td(absd(a),absd(b)))
+satzd103a:=symeq(absd(td(a,b)),td(absd(a),absd(b)),satzd193):eq(td(absd(a),absd(b)),absd(td(a,b)))
+@1df:=pdofrp(1rp):dif
++4d195
+a@t1:=tris(cut,pl(pl(ts(1a,pl(1rp,1rp)),ts(2a,1rp)),2a),pl(ts(1a,pl(1rp,1rp)),pl(ts(2a,1rp),2a)),pl(pl(1a,1a),pl(2a,2a)),asspl1(ts(1a,pl(1rp,1rp)),ts(2a,1rp),2a),ispl12(ts(1a,pl(1rp,1rp)),pl(1a,1a),pl(ts(2a,1rp),2a),pl(2a,2a),a2isapa(1a),ispl1(ts(2a,1rp),2a,2a,satz151(2a)))):is(pl(pl(ts(1a,pl(1rp,1rp)),ts(2a,1rp)),2a),pl(pl(1a,1a),pl(2a,2a)))
+t2:=tris(cut,pl(1a,pl(ts(1a,1rp),ts(2a,pl(1rp,1rp)))),pl(pl(1a,ts(1a,1rp)),ts(2a,pl(1rp,1rp))),pl(pl(1a,1a),pl(2a,2a)),asspl2(1a,ts(1a,1rp),ts(2a,pl(1rp,1rp))),ispl12(pl(1a,ts(1a,1rp)),pl(1a,1a),ts(2a,pl(1rp,1rp)),pl(2a,2a),ispl2(ts(1a,1rp),1a,1a,satz151(1a)),a2isapa(2a))):is(pl(1a,pl(ts(1a,1rp),ts(2a,pl(1rp,1rp)))),pl(pl(1a,1a),pl(2a,2a)))
+t3:=tris2(cut,pl(pl(ts(1a,pl(1rp,1rp)),ts(2a,1rp)),2a),pl(1a,pl(ts(1a,1rp),ts(2a,pl(1rp,1rp)))),pl(pl(1a,1a),pl(2a,2a)),t1,t2):is(pl(pl(ts(1a,pl(1rp,1rp)),ts(2a,1rp)),2a),pl(1a,pl(ts(1a,1rp),ts(2a,pl(1rp,1rp)))))
+-4d195
+a@satzd195:=treq(td(a,1df),df(pl(ts(1a,pl(1rp,1rp)),ts(2a,1rp)),pl(ts(1a,1rp),ts(2a,pl(1rp,1rp)))),a,tdeq1a(a,pl(1rp,1rp),1rp),eqi2(a,pl(ts(1a,pl(1rp,1rp)),ts(2a,1rp)),pl(ts(1a,1rp),ts(2a,pl(1rp,1rp))),t3".4d195")):eq(td(a,1df),a)
+satzd195a:=symeq(td(a,1df),a,satzd195):eq(a,td(a,1df))
+satzd195b:=treq(td(1df,a),td(a,1df),a,comtd(1df,a),satzd195):eq(td(1df,a),a)
+satzd195c:=symeq(td(1df,a),a,satzd195b):eq(a,td(1df,a))
+b@[p:posd(a)][q:posd(b)]
+satzd196a:=symeq(td(absd(a),absd(b)),td(a,b),eqtd12(absd(a),a,absd(b),b,absnnd(a,pnotnd(a,p)),absnnd(b,pnotnd(b,q)))):eq(td(a,b),td(absd(a),absd(b)))
+b@[n:negd(a)][o:negd(b)]
+satzd196b:=treq2(td(a,b),td(absd(a),absd(b)),td(m0d(a),m0d(b)),satzd198a(a,b),eqtd12(absd(a),m0d(a),absd(b),m0d(b),absnd(a,n),absnd(b,o))):eq(td(a,b),td(absd(a),absd(b)))
+b@[p:posd(a)][n:negd(b)]
+satzd196c:=treq1(td(a,b),m0d(td(absd(a),absd(b))),td(absd(a),m0d(absd(b))),eqtd12(absd(a),a,m0d(absd(b)),b,absnnd(a,pnotnd(a,p)),satzd177b(absd(b),b,absnd(b,n))),satzd197b(absd(a),absd(b))):eq(td(a,b),m0d(td(absd(a),absd(b))))
+b@[n:negd(a)][p:posd(b)]
+satzd196d:=tr3eq(td(a,b),td(b,a),m0d(td(absd(b),absd(a))),m0d(td(absd(a),absd(b))),comtd(a,b),satzd196c(b,a,p,n),eqm0d(td(absd(b),absd(a)),td(absd(a),absd(b)),comtd(absd(b),absd(a)))):eq(td(a,b),m0d(td(absd(a),absd(b))))
++4d196
+b@p1p2:=and(posd(a),posd(b)):'prop'
+p1n2:=and(posd(a),negd(b)):'prop'
+n1p2:=and(negd(a),posd(b)):'prop'
+n1n2:=and(negd(a),negd(b)):'prop'
+-4d196
+b@[n:not(zero(a))][o:not(zero(b))][e:eq(td(a,b),td(absd(a),absd(b)))]
++*4d196
+o@t1:=ptdpp(absd(a),absd(b),satzd166e(a,n),satzd166e(b,o)):posd(td(absd(a),absd(b)))
+e@t2:=pnotnd(td(a,b),eqposd(td(absd(a),absd(b)),td(a,b),symeq(td(a,b),td(absd(a),absd(b)),e),t1)):not(negd(td(a,b)))
+[p:posd(a)]
+t3:=th3"l.imp"(negd(b),negd(td(a,b)),t2,[t:negd(b)]ntdpn(a,b,p,t)):not(negd(b))
+t4:=or3e2(zero(b),posd(b),negd(b),axrdo(b),t3,o):posd(b)
+t5:=andi(posd(a),posd(b),p,t4):p1p2
+t6:=ori1(p1p2,n1n2,t5):or(p1p2,n1n2)
+e@[m:negd(a)]
+t7:=th3"l.imp"(posd(b),negd(td(a,b)),t2,[t:posd(b)]ntdnp(a,b,m,t)):not(posd(b))
+t8:=or3e3(zero(b),posd(b),negd(b),axrdo(b),o,t7):negd(b)
+t9:=andi(negd(a),negd(b),m,t8):n1n2
+t10:=ori2(p1p2,n1n2,t9):or(p1p2,n1n2)
+-4d196
+e@satzd196e:=rappd(a,or(p1p2".4d196",n1n2".4d196"),[t:posd(a)]t6".4d196"(t),th2"l.imp"(zero(a),or(p1p2".4d196",n1n2".4d196"),n),[t:negd(a)]t10".4d196"(t)):or(and(posd(a),posd(b)),and(negd(a),negd(b)))
+o@[e:eq(td(a,b),m0d(td(absd(a),absd(b))))]
++*4d196
+o@t11:=satzd176a(td(absd(a),absd(b)),t1):negd(m0d(td(absd(a),absd(b))))
+e@t12:=nnotpd(td(a,b),eqnegd(m0d(td(absd(a),absd(b))),td(a,b),symeq(td(a,b),m0d(td(absd(a),absd(b))),e),t11)):not(posd(td(a,b)))
+[p:posd(a)]
+t13:=th3"l.imp"(posd(b),posd(td(a,b)),t12,[t:posd(b)]ptdpp(a,b,p,t)):not(posd(b))
+t14:=or3e3(zero(b),posd(b),negd(b),axrdo(b),o,t13):negd(b)
+t15:=andi(posd(a),negd(b),p,t14):p1n2
+t16:=ori1(p1n2,n1p2,t15):or(p1n2,n1p2)
+e@[m:negd(a)]
+t17:=th3"l.imp"(negd(b),posd(td(a,b)),t12,[t:negd(b)]ptdnn(a,b,m,t)):not(negd(b))
+t18:=or3e2(zero(b),posd(b),negd(b),axrdo(b),t17,o):posd(b)
+t19:=andi(negd(a),posd(b),m,t18):n1p2
+t20:=ori2(p1n2,n1p2,t19):or(p1n2,n1p2)
+-4d196
+e@satzd196f:=rappd(a,or(p1n2".4d196",n1p2".4d196"),[t:posd(a)]t16".4d196"(t),th2"l.imp"(zero(a),or(p1n2".4d196",n1p2".4d196"),n),[t:negd(a)]t20".4d196"(t)):or(and(posd(a),negd(b)),and(negd(a),posd(b)))
++4d199
+@[p:cut][q:cut][r:cut][s:cut][t:cut][u:cut]
+t1:=tris(cut,ts(pl(ts(p,r),ts(q,s)),t),pl(ts(ts(p,r),t),ts(ts(q,s),t)),pl(ts(p,ts(r,t)),ts(q,ts(s,t))),disttp1(ts(p,r),ts(q,s),t),ispl12(ts(ts(p,r),t),ts(p,ts(r,t)),ts(ts(q,s),t),ts(q,ts(s,t)),assts1(p,r,t),assts1(q,s,t))):is(ts(pl(ts(p,r),ts(q,s)),t),pl(ts(p,ts(r,t)),ts(q,ts(s,t))))
+t2:=tris(cut,pl(ts(q,ts(s,t)),ts(q,ts(r,u))),pl(ts(q,ts(r,u)),ts(q,ts(s,t))),ts(q,pl(ts(r,u),ts(s,t))),compl(ts(q,ts(s,t)),ts(q,ts(r,u))),distpt2(q,ts(r,u),ts(s,t))):is(pl(ts(q,ts(s,t)),ts(q,ts(r,u))),ts(q,pl(ts(r,u),ts(s,t))))
+t3:=tr3is(cut,pl(ts(pl(ts(p,r),ts(q,s)),t),ts(pl(ts(p,s),ts(q,r)),u)),pl(pl(ts(p,ts(r,t)),ts(q,ts(s,t))),pl(ts(p,ts(s,u)),ts(q,ts(r,u)))),pl(pl(ts(p,ts(r,t)),ts(p,ts(s,u))),pl(ts(q,ts(s,t)),ts(q,ts(r,u)))),pl(ts(p,pl(ts(r,t),ts(s,u))),ts(q,pl(ts(r,u),ts(s,t)))),ispl12(ts(pl(ts(p,r),ts(q,s)),t),pl(ts(p,ts(r,t)),ts(q,ts(s,t))),ts(pl(ts(p,s),ts(q,r)),u),pl(ts(p,ts(s,u)),ts(q,ts(r,u))),t1,t1(p,q,s,r,u,t)),4pl23(ts(p,ts(r,t)),ts(q,ts(s,t)),ts(p,ts(s,u)),ts(q,ts(r,u))),ispl12(pl(ts(p,ts(r,t)),ts(p,ts(s,u))),ts(p,pl(ts(r,t),ts(s,u))),pl(ts(q,ts(s,t)),ts(q,ts(r,u))),ts(q,pl(ts(r,u),ts(s,t))),distpt2(p,ts(r,t),ts(s,u)),t2)):is(pl(ts(pl(ts(p,r),ts(q,s)),t),ts(pl(ts(p,s),ts(q,r)),u)),pl(ts(p,pl(ts(r,t),ts(s,u))),ts(q,pl(ts(r,u),ts(s,t)))))
+-4d199
+c@satzd199:=tr3eq(td(td(a,b),c),df(pl(ts(pl(ts(1a,1b),ts(2a,2b)),1c),ts(pl(ts(1a,2b),ts(2a,1b)),2c)),pl(ts(pl(ts(1a,1b),ts(2a,2b)),2c),ts(pl(ts(1a,2b),ts(2a,1b)),1c))),df(pl(ts(1a,pl(ts(1b,1c),ts(2b,2c))),ts(2a,pl(ts(1b,2c),ts(2b,1c)))),pl(ts(1a,pl(ts(1b,2c),ts(2b,1c))),ts(2a,pl(ts(1b,1c),ts(2b,2c))))),td(a,td(b,c)),tdeq2a(c,pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,2b),ts(2a,1b))),eqsmsd(pl(ts(pl(ts(1a,1b),ts(2a,2b)),1c),ts(pl(ts(1a,2b),ts(2a,1b)),2c)),pl(ts(pl(ts(1a,1b),ts(2a,2b)),2c),ts(pl(ts(1a,2b),ts(2a,1b)),1c)),pl(ts(1a,pl(ts(1b,1c),ts(2b,2c))),ts(2a,pl(ts(1b,2c),ts(2b,1c)))),pl(ts(1a,pl(ts(1b,2c),ts(2b,1c))),ts(2a,pl(ts(1b,1c),ts(2b,2c)))),t3".4d199"(1a,2a,1b,2b,1c,2c),t3".4d199"(1a,2a,1b,2b,2c,1c)),tdeq1b(a,pl(ts(1b,1c),ts(2b,2c)),pl(ts(1b,2c),ts(2b,1c)))):eq(td(td(a,b),c),td(a,td(b,c)))
+asstd1:=satzd199:eq(td(td(a,b),c),td(a,td(b,c)))
+asstd2:=symeq(td(td(a,b),c),td(a,td(b,c)),satzd199):eq(td(a,td(b,c)),td(td(a,b),c))
++4d201
+@[p:cut][q:cut][r:cut][s:cut][t:cut][u:cut]
+t1:=tris(cut,pl(ts(p,pl(r,t)),ts(q,pl(s,u))),pl(pl(ts(p,r),ts(p,t)),pl(ts(q,s),ts(q,u))),pl(pl(ts(p,r),ts(q,s)),pl(ts(p,t),ts(q,u))),ispl12(ts(p,pl(r,t)),pl(ts(p,r),ts(p,t)),ts(q,pl(s,u)),pl(ts(q,s),ts(q,u)),disttp2(p,r,t),disttp2(q,s,u)),4pl23(ts(p,r),ts(p,t),ts(q,s),ts(q,u))):is(pl(ts(p,pl(r,t)),ts(q,pl(s,u))),pl(pl(ts(p,r),ts(q,s)),pl(ts(p,t),ts(q,u))))
+-4d201
+satzd201:=tr3eq(td(a,pd(b,c)),df(pl(ts(1a,pl(1b,1c)),ts(2a,pl(2b,2c))),pl(ts(1a,pl(2b,2c)),ts(2a,pl(1b,1c)))),df(pl(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,1c),ts(2a,2c))),pl(pl(ts(1a,2b),ts(2a,1b)),pl(ts(1a,2c),ts(2a,1c)))),pd(td(a,b),td(a,c)),tdeq1a(a,pl(1b,1c),pl(2b,2c)),eqsmsd(pl(ts(1a,pl(1b,1c)),ts(2a,pl(2b,2c))),pl(ts(1a,pl(2b,2c)),ts(2a,pl(1b,1c))),pl(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,1c),ts(2a,2c))),pl(pl(ts(1a,2b),ts(2a,1b)),pl(ts(1a,2c),ts(2a,1c))),t1".4d201"(1a,2a,1b,2b,1c,2c),t1".4d201"(1a,2a,2b,1b,2c,1c)),pdeq12b(pl(ts(1a,1b),ts(2a,2b)),pl(ts(1a,2b),ts(2a,1b)),pl(ts(1a,1c),ts(2a,2c)),pl(ts(1a,2c),ts(2a,1c)))):eq(td(a,pd(b,c)),pd(td(a,b),td(a,c)))
+disttpd1:=tr3eq(td(pd(a,b),c),td(c,pd(a,b)),pd(td(c,a),td(c,b)),pd(td(a,c),td(b,c)),comtd(pd(a,b),c),satzd201(c,a,b),eqpd12(td(c,a),td(a,c),td(c,b),td(b,c),comtd(c,a),comtd(c,b))):eq(td(pd(a,b),c),pd(td(a,c),td(b,c)))
+disttpd2:=satzd201:eq(td(a,pd(b,c)),pd(td(a,b),td(a,c)))
+distptd1:=symeq(td(pd(a,b),c),pd(td(a,c),td(b,c)),disttpd1):eq(pd(td(a,c),td(b,c)),td(pd(a,b),c))
+distptd2:=symeq(td(a,pd(b,c)),pd(td(a,b),td(a,c)),disttpd2):eq(pd(td(a,b),td(a,c)),td(a,pd(b,c)))
+satzd202:=treq(td(a,md(b,c)),pd(td(a,b),td(a,m0d(c))),md(td(a,b),td(a,c)),disttpd2(a,b,m0d(c)),eqpd2(td(a,m0d(c)),m0d(td(a,c)),td(a,b),satzd197b(a,c))):eq(td(a,md(b,c)),md(td(a,b),td(a,c)))
+disttmd1:=treq(td(md(a,b),c),pd(td(a,c),td(m0d(b),c)),md(td(a,c),td(b,c)),disttpd1(a,m0d(b),c),eqpd2(td(m0d(b),c),m0d(td(b,c)),td(a,c),satzd197a(b,c))):eq(td(md(a,b),c),md(td(a,c),td(b,c)))
+disttmd2:=satzd202:eq(td(a,md(b,c)),md(td(a,b),td(a,c)))
+distmtd1:=symeq(td(md(a,b),c),md(td(a,c),td(b,c)),disttmd1):eq(md(td(a,c),td(b,c)),td(md(a,b),c))
+distmtd2:=symeq(td(a,md(b,c)),md(td(a,b),td(a,c)),disttmd2):eq(md(td(a,b),td(a,c)),td(a,md(b,c)))
+satzd200:=satzd202:eq(td(a,md(b,c)),md(td(a,b),td(a,c)))
+[m:mored(a,b)]
++4d203
+t1:=satzd182d(a,b,m):posd(md(a,b))
+-4d203
+[p:posd(c)]
++*4d203
+p@t2:=eqposd(td(md(a,b),c),md(td(a,c),td(b,c)),disttmd1(a,b,c),ptdpp(md(a,b),c,t1,p)):posd(md(td(a,c),td(b,c)))
+-4d203
+p@satzd203a:=satzd182a(td(a,c),td(b,c),t2".4d203"):mored(td(a,c),td(b,c))
+m@[z:zero(c)]
+satzd203b:=zeroeq(td(a,c),td(b,c),td02(a,c,z),td02(b,c,z)):eq(td(a,c),td(b,c))
+m@[n:negd(c)]
++*4d203
+n@t3:=eqnegd(td(md(a,b),c),md(td(a,c),td(b,c)),disttmd1(a,b,c),ntdpn(md(a,b),c,t1,n)):negd(md(td(a,c),td(b,c)))
+-4d203
+n@satzd203c:=satzd182c(td(a,c),td(b,c),t3".4d203"):lessd(td(a,c),td(b,c))
+p@satzd203d:=eqmored12(td(a,c),td(c,a),td(b,c),td(c,b),comtd(a,c),comtd(b,c),satzd203a):mored(td(c,a),td(c,b))
+z@satzd203e:=zeroeq(td(c,a),td(c,b),td01(c,a,z),td01(c,b,z)):eq(td(c,a),td(c,b))
+n@satzd203f:=eqlessd12(td(a,c),td(c,a),td(b,c),td(c,b),comtd(a,c),comtd(b,c),satzd203c):lessd(td(c,a),td(c,b))
+c@[l:lessd(a,b)][p:posd(c)]
+satzd203g:=lemmad5(td(b,c),td(a,c),satzd203a(b,a,c,lemmad6(a,b,l),p)):lessd(td(a,c),td(b,c))
+l@[z:zero(c)]
+satzd203h:=zeroeq(td(a,c),td(b,c),td02(a,c,z),td02(b,c,z)):eq(td(a,c),td(b,c))
+l@[n:negd(c)]
+satzd203j:=lemmad6(td(b,c),td(a,c),satzd203c(b,a,c,lemmad6(a,b,l),n)):mored(td(a,c),td(b,c))
+p@satzd203k:=lemmad5(td(c,b),td(c,a),satzd203d(b,a,c,lemmad6(a,b,l),p)):lessd(td(c,a),td(c,b))
+z@satzd203l:=zeroeq(td(c,a),td(c,b),td01(c,a,z),td01(c,b,z)):eq(td(c,a),td(c,b))
+n@satzd203m:=lemmad6(td(c,b),td(c,a),satzd203f(b,a,c,lemmad6(a,b,l),n)):mored(td(c,a),td(c,b))
++*iv4d
+@[p:cut][q:cut]
+t19:=tris(cut,ts(q,pl(p,1rp)),pl(ts(q,p),ts(q,1rp)),pl(ts(q,p),q),disttp2(q,p,1rp),ispl2(ts(q,1rp),q,ts(q,p),satz151(q))):is(ts(q,pl(p,1rp)),pl(ts(q,p),q))
+[r:cut]
+t20:=tris(cut,pl(ts(q,pl(p,1rp)),ts(r,1rp)),pl(pl(ts(q,p),q),r),pl(ts(q,p),pl(q,r)),ispl12(ts(q,pl(p,1rp)),pl(ts(q,p),q),ts(r,1rp),r,t19,satz151(r)),asspl1(ts(q,p),q,r)):is(pl(ts(q,pl(p,1rp)),ts(r,1rp)),pl(ts(q,p),pl(q,r)))
+t21:=tr3is(cut,pl(ts(r,1rp),ts(q,pl(p,1rp))),pl(ts(q,pl(p,1rp)),ts(r,1rp)),pl(ts(q,p),pl(q,r)),pl(ts(q,p),pl(r,q)),compl(ts(r,1rp),ts(q,pl(p,1rp))),t20,ispl2(pl(q,r),pl(r,q),ts(q,p),compl(q,r))):is(pl(ts(r,1rp),ts(q,pl(p,1rp))),pl(ts(q,p),pl(r,q)))
+a@[p:posd(a)]
+arp:=rpofpd(a,p):cut
+arpi:=ov(1rp,arp):cut
+ai:=pdofrp(arpi):dif
+t22:=tr3eq(td(a,ai),df(pl(ts(1a,pl(arpi,1rp)),ts(2a,1rp)),pl(ts(1a,1rp),ts(2a,pl(arpi,1rp)))),df(pl(ts(1a,arpi),pl(1a,2a)),pl(ts(2a,arpi),pl(1a,2a))),df(ts(1a,arpi),ts(2a,arpi)),tdeq1a(a,pl(arpi,1rp),1rp),eqsmsd(pl(ts(1a,pl(arpi,1rp)),ts(2a,1rp)),pl(ts(1a,1rp),ts(2a,pl(arpi,1rp))),pl(ts(1a,arpi),pl(1a,2a)),pl(ts(2a,arpi),pl(1a,2a)),t20(arpi,1a,2a),t21(arpi,2a,1a)),lemmad2(ts(1a,arpi),ts(2a,arpi),pl(1a,2a))):eq(td(a,ai),df(ts(1a,arpi),ts(2a,arpi)))
+t23:=tr3is(cut,ts(1a,arpi),ts(pl(2a,arp),arpi),pl(ts(2a,arpi),ts(arp,arpi)),pl(ts(2a,arpi),1rp),ists1(1a,pl(2a,arp),arpi,satz140d(1a,2a,p)),disttp1(2a,arp,arpi),ispl2(ts(arp,arpi),1rp,ts(2a,arpi),satz153c(1rp,arp))):is(ts(1a,arpi),pl(ts(2a,arpi),1rp))
+t24:=tr3is(cut,pl(ts(1a,arpi),1rp),pl(pl(ts(2a,arpi),1rp),1rp),pl(ts(2a,arpi),pl(1rp,1rp)),pl(pl(1rp,1rp),ts(2a,arpi)),ispl1(ts(1a,arpi),pl(ts(2a,arpi),1rp),1rp,t23),asspl1(ts(2a,arpi),1rp,1rp),compl(ts(2a,arpi),pl(1rp,1rp))):is(pl(ts(1a,arpi),1rp),pl(pl(1rp,1rp),ts(2a,arpi)))
+t25:=eqi12(ts(1a,arpi),ts(2a,arpi),pl(1rp,1rp),1rp,t24):eq(df(ts(1a,arpi),ts(2a,arpi)),1df)
+t26:=treq(td(a,ai),df(ts(1a,arpi),ts(2a,arpi)),1df,t22,t25):eq(td(a,ai),1df)
+t27:=somei(dif,[x:dif]eq(td(a,x),1df),ai,t26):some"l"(dif,[x:dif]eq(td(a,x),1df))
+a@[n:negd(a)]
+t28:=satzd176c(a,n):posd(m0d(a))
+[h:dif][e:eq(td(m0d(a),h),1df)]
+t29:=treq(td(a,m0d(h)),td(m0d(a),h),1df,satzd197d(a,h),e):eq(td(a,m0d(h)),1df)
+t30:=somei(dif,[x:dif]eq(td(a,x),1df),m0d(h),t29):some"l"(dif,[x:dif]eq(td(a,x),1df))
+n@t31:=someapp(dif,[x:dif]eq(td(m0d(a),x),1df),t27(m0d(a),t28),some"l"(dif,[x:dif]eq(td(a,x),1df)),[x:dif][t:eq(td(m0d(a),x),1df)]t30(x,t)):some"l"(dif,[x:dif]eq(td(a,x),1df))
+-iv4d
+a@[n:not(zero(a))]
+lemmad7:=rappd(a,some"l"(dif,[x:dif]eq(td(a,x),1df)),[t:posd(a)]t27".iv4d"(t),th2"l.imp"(zero(a),some"l"(dif,[x:dif]eq(td(a,x),1df)),n),[t:negd(a)]t31".iv4d"(t)):some"l"(dif,[x:dif]eq(td(a,x),1df))
+b@[n:not(zero(b))][h:dif][k:dif][e:eq(td(b,h),a)][f:eq(td(b,k),a)]
++4d204
+t1:=treq2(td(b,h),td(b,k),a,e,f):eq(td(b,h),td(b,k))
+t2:=eqzero(md(td(b,h),td(b,k)),td(b,md(h,k)),distmtd2(b,h,k),satzd182e(td(b,h),td(b,k),t1)):zero(td(b,md(h,k)))
+t3:=ore2(zero(b),zero(md(h,k)),satzd192c(b,md(h,k),t2),n):zero(md(h,k))
+-4d204
+satzd204b:=satzd182b(h,k,t3".4d204"):eq(h,k)
++*4d204
+n@[h:dif][e:eq(td(b,h),1df)]
+t4:=tr3eq(td(b,td(h,a)),td(td(b,h),a),td(1df,a),a,asstd2(b,h,a),eqtd1(td(b,h),1df,a,e),satzd195b(a)):eq(td(b,td(h,a)),a)
+t5:=somei(dif,[x:dif]eq(td(b,x),a),td(h,a),t4):some"l"(dif,[x:dif]eq(td(b,x),a))
+-4d204
+n@satzd204a:=someapp(dif,[x:dif]eq(td(b,x),1df),lemmad7(b,n),some"l"(dif,[x:dif]eq(td(b,x),a)),[x:dif][t:eq(td(b,x),1df)]t5".4d204"(x,t)):some"l"(dif,[x:dif]eq(td(b,x),a))
+@[r:cut][s:cut][m:more(r,s)]
++iv5d
+t1:=ismore12(pl(r,pl(1rp,1rp)),pl(pl(r,1rp),1rp),pl(s,pl(1rp,1rp)),pl(pl(s,1rp),1rp),asspl2(r,1rp,1rp),asspl2(s,1rp,1rp),satz134(r,s,pl(1rp,1rp),m)):more(pl(pl(r,1rp),1rp),pl(pl(s,1rp),1rp))
+-iv5d
+morerpepd:=moredi12(pl(r,1rp),1rp,pl(s,1rp),1rp,t1".iv5d"):mored(pdofrp(r),pdofrp(s))
+s@[m:mored(pdofrp(r),pdofrp(s))]
++*iv5d
+m@t2:=morede12(pl(r,1rp),1rp,pl(s,1rp),1rp,m):more(pl(pl(r,1rp),1rp),pl(pl(s,1rp),1rp))
+-iv5d
+m@morerpipd:=satz136a(r,s,pl(1rp,1rp),ismore12(pl(pl(r,1rp),1rp),pl(r,pl(1rp,1rp)),pl(pl(s,1rp),1rp),pl(s,pl(1rp,1rp)),asspl1(r,1rp,1rp),asspl1(s,1rp,1rp),t2".iv5d")):more(r,s)
+s@[l:less(r,s)]
+lessrpepd:=lemmad5(pdofrp(s),pdofrp(r),morerpepd(s,r,satz122(r,s,l))):lessd(pdofrp(r),pdofrp(s))
+s@[l:lessd(pdofrp(r),pdofrp(s))]
+lessrpipd:=satz121(s,r,morerpipd(s,r,lemmad6(pdofrp(r),pdofrp(s),l))):less(r,s)
++*iv5d
+@i:=1rp:cut
+2:=pl(i,i):cut
+r@rp1:=pl(r,i):cut
+s@sp1:=pl(s,i):cut
+rps:=pl(r,s):cut
+rs:=ts(r,s):cut
+t3:=tris(cut,pl(pl(rp1,sp1),i),pl(pl(rps,2),i),pl(pl(rps,i),2),ispl1(pl(rp1,sp1),pl(rps,2),i,4pl23(r,i,s,i)),3pl23(rps,2,i)):is(pl(pl(rp1,sp1),i),pl(pl(rps,i),2))
+t4:=treq(pd(pdofrp(r),pdofrp(s)),df(pl(rp1,sp1),2),pdofrp(rps),pdeq12a(rp1,i,sp1,i),eqi12(pl(rp1,sp1),2,pl(rps,i),i,t3)):eq(pd(pdofrp(r),pdofrp(s)),pdofrp(rps))
+-iv5d
+s@lemmad8:=t4".iv5d":eq(pd(pdofrp(r),pdofrp(s)),pdofrp(pl(r,s)))
++*iv5d
+s@t5:=tris(cut,ts(r,sp1),pl(rs,ts(r,i)),pl(rs,r),disttp2(r,s,i),ispl2(ts(r,i),r,rs,satz151(r))):is(ts(r,sp1),pl(rs,r))
+t6:=tr4is(cut,ts(rp1,sp1),pl(ts(r,sp1),ts(i,sp1)),pl(pl(rs,r),sp1),pl(pl(pl(rs,r),s),i),pl(pl(rs,rps),i),disttp1(r,i,sp1),ispl12(ts(r,sp1),pl(rs,r),ts(i,sp1),sp1,t5,satz151b(sp1)),asspl2(pl(rs,r),s,i),ispl1(pl(pl(rs,r),s),pl(rs,rps),i,asspl1(rs,r,s))):is(ts(rp1,sp1),pl(pl(rs,rps),i))
+t7:=tr3is(cut,pl(ts(rp1,sp1),ts(i,i)),pl(pl(pl(rs,rps),i),i),pl(pl(rs,rps),2),pl(rs,pl(rps,2)),ispl12(ts(rp1,sp1),pl(pl(rs,rps),i),ts(i,i),i,t6,satz151(i)),asspl1(pl(rs,rps),i,i),asspl1(rs,rps,2)):is(pl(ts(rp1,sp1),ts(i,i)),pl(rs,pl(rps,2)))
+t8:=tris(cut,pl(ts(rp1,i),ts(i,sp1)),pl(rp1,sp1),pl(rps,2),ispl12(ts(rp1,i),rp1,ts(i,sp1),sp1,satz151(rp1),satz151b(sp1)),4pl23(r,i,s,i)):is(pl(ts(rp1,i),ts(i,sp1)),pl(rps,2))
+t9:=tris(cut,pl(pl(rs,i),pl(ts(rp1,i),ts(i,sp1))),pl(pl(rs,i),pl(rps,2)),pl(pl(rs,pl(rps,2)),i),ispl2(pl(ts(rp1,i),ts(i,sp1)),pl(rps,2),pl(rs,i),t8),3pl23(rs,i,pl(rps,2))):is(pl(pl(rs,i),pl(ts(rp1,i),ts(i,sp1))),pl(pl(rs,pl(rps,2)),i))
+t10:=tris2(cut,pl(pl(ts(rp1,sp1),ts(i,i)),i),pl(pl(rs,i),pl(ts(rp1,i),ts(i,sp1))),pl(pl(rs,pl(rps,2)),i),ispl1(pl(ts(rp1,sp1),ts(i,i)),pl(rs,pl(rps,2)),i,t7),t9):is(pl(pl(ts(rp1,sp1),ts(i,i)),i),pl(pl(rs,i),pl(ts(rp1,i),ts(i,sp1))))
+t11:=treq(td(pdofrp(r),pdofrp(s)),df(pl(ts(rp1,sp1),ts(i,i)),pl(ts(rp1,i),ts(i,sp1))),pdofrp(rs),tdeq12a(rp1,i,sp1,i),eqi12(pl(ts(rp1,sp1),ts(i,i)),pl(ts(rp1,i),ts(i,sp1)),pl(rs,i),i,t10)):eq(td(pdofrp(r),pdofrp(s)),pdofrp(rs))
+-iv5d
+s@lemmad9:=t11".iv5d":eq(td(pdofrp(r),pdofrp(s)),pdofrp(ts(r,s)))
+@[r:cut][s0:set(cut)]
+in:=esti(cut,r,s0):'prop'
+@[s0:set(cut)][t0:set(cut)][p0:all([x:cut]or(in(x,s0),in(x,t0)))][p1a:nonempty(cut,s0)][p1b:nonempty(cut,t0)][p2:all([x:cut][t:in(x,s0)]all([y:cut][u:in(y,t0)]less(x,y)))]
++5p205
+t0@[r:cut]
+prop1:=all([x:cut][t:less(x,r)]in(x,s0)):'prop'
+prop2:=all([x:cut][t:more(x,r)]in(x,t0)):'prop'
+prop3:=and(prop1,prop2):'prop'
+p2@[r1:cut][r2:cut][pr1:prop3(r1)][pr2:prop3(r2)]
+t1:=ande2(prop1(r1),prop2(r1),pr1):prop2(r1)
+t2:=ande1(prop1(r2),prop2(r2),pr2):prop1(r2)
+[l:less(r1,r2)][x0:rat]
+rx:=rpofrt(x0):cut
+[l1:less(r1,rx)][l2:less(rx,r2)]
+t3:=<l2><rx>t2:in(rx,s0)
+t4:=<satz122(r1,rx,l1)><rx>t1:in(rx,t0)
+t5:=<refis(cut,rx)>ec3e31(is(rx,rx),more(rx,rx),less(rx,rx),satz123b(rx,rx),<t4><rx><t3><rx>p2):con
+l@t6:=satz159app(r1,r2,l,con,[x:rat][t:less(r1,rpofrt(x))][u:less(rpofrt(x),r2)]t5(x,t,u)):con
+pr2@t7:=[t:less(r1,r2)]t6(t):not(less(r1,r2))
+t8:=[t:more(r1,r2)]t6(r2,r1,pr2,pr1,satz121(r1,r2,t)):not(more(r1,r2))
+t9:=or3e1(is(r1,r2),more(r1,r2),less(r1,r2),satz123a(r1,r2),t8,t7):is(r1,r2)
+p2@t10:=[x:cut][y:cut][t:prop3(x)][u:prop3(y)]t9(x,y,t,u):amone(cut,[x:cut]prop3(x))
+[x0:rat]
+schnittprop:=some([y:cut]and(in(y,s0),lrt(y,x0))):'prop'
+p2@schnittset:=setof(rat,[x:rat]schnittprop(x)):set(rat)
+[r:cut][i:in(r,s0)][x0:rat][lx:lrt(r,x0)]
+t11:=andi(in(r,s0),lrt(r,x0),i,lx):and(in(r,s0),lrt(r,x0))
+t12:=somei(cut,[y:cut]and(in(y,s0),lrt(y,x0)),r,t11):schnittprop(x0)
+t13:=estii(rat,[x:rat]schnittprop(x),x0,t12):in"rt"(x0,schnittset)
+r@[i:in(r,t0)][x0:rat][ux:urt(r,x0)][s:cut][j:in(s,s0)]
+t14:=satz122(s,r,<i><r><j><s>p2):more(r,s)
+t15:=satz158b(r,x0,ux):moreis(rpofrt(x0),r)
+t16:=moreisi1(rpofrt(x0),s,satz127c(rpofrt(x0),r,s,t15,t14)):moreis(rpofrt(x0),s)
+t17:=satz158d(s,x0,t16):urt(s,x0)
+s@t18:=weli(ec(in(s,s0),lrt(s,x0)),[t:in(s,s0)]t17(t)):not(and(in(s,s0),lrt(s,x0)))
+ux@t19:=th5"l.some"(cut,[y:cut]and(in(y,s0),lrt(y,x0)),[y:cut]t18(y)):not(schnittprop(x0))
+t20:=th3"l.imp"(in"rt"(x0,schnittset),schnittprop(x0),t19,[t:in"rt"(x0,schnittset)]estie(rat,[x:rat]schnittprop(x),x0,t)):not(in"rt"(x0,schnittset))
+p2@[x0:rat][i:in"rt"(x0,schnittset)][y0:rat][l:less"rt"(y0,x0)]
+i@t21:=estie(rat,[x:rat]schnittprop(x),x0,i):schnittprop(x0)
+l@[r:cut][a:and(in(r,s0),lrt(r,x0))]
+t22:=ande1(in(r,s0),lrt(r,x0),a):in(r,s0)
+t23:=ande2(in(r,s0),lrt(r,x0),a):lrt(r,x0)
+t24:=satz120(r,x0,t23,y0,l):lrt(r,y0)
+t25:=andi(in(r,s0),lrt(r,y0),t22,t24):and(in(r,s0),lrt(r,y0))
+t26:=somei(cut,[y:cut]and(in(y,s0),lrt(y,y0)),r,t25):schnittprop(y0)
+l@t27:=someapp(cut,[y:cut]and(in(y,s0),lrt(y,x0)),t21,schnittprop(y0),[y:cut][r:and(in(y,s0),lrt(y,x0))]t26(y,r)):schnittprop(y0)
+t28:=estii(rat,[x:rat]schnittprop(x),y0,t27):in"rt"(y0,schnittset)
+i@[r:cut][a:and(in(r,s0),lrt(r,x0))]
+t29:=ande1(in(r,s0),lrt(r,x0),a):in(r,s0)
+t30:=ande2(in(r,s0),lrt(r,x0),a):lrt(r,x0)
+[y0:rat][ly:lrt(r,y0)][l:less"rt"(x0,y0)]
+t31:=andi(in(r,s0),lrt(r,y0),t29,ly):and(in(r,s0),lrt(r,y0))
+t32:=somei(cut,[y:cut]and(in(y,s0),lrt(y,y0)),r,t31):schnittprop(y0)
+t33:=estii(rat,[x:rat]schnittprop(x),y0,t32):in"rt"(y0,schnittset)
+t34:=satz83(x0,y0,l):more"rt"(y0,x0)
+t35:=andi(in"rt"(y0,schnittset),more"rt"(y0,x0),t33,t34):and(in"rt"(y0,schnittset),more"rt"(y0,x0))
+t36:=somei(rat,[y:rat]and(in"rt"(y,schnittset),more"rt"(y,x0)),y0,t35):some"rt"([y:rat]and(in"rt"(y,schnittset),more"rt"(y,x0)))
+a@t37:=cutapp3(r,x0,t30,some"rt"([y:rat]and(in"rt"(y,schnittset),more"rt"(y,x0))),[y:rat][t:lrt(r,y)][u:less"rt"(x0,y)]t36(y,t,u)):some"rt"([y:rat]and(in"rt"(y,schnittset),more"rt"(y,x0)))
+i@t38:=someapp(cut,[y:cut]and(in(y,s0),lrt(y,x0)),t21,some"rt"([y:rat]and(in"rt"(y,schnittset),more"rt"(y,x0))),[y:cut][t:and(in(y,s0),lrt(y,x0))]t37(y,t)):some"rt"([y:rat]and(in"rt"(y,schnittset),more"rt"(y,x0)))
+p2@[r:cut][i:in(r,s0)][x0:rat][lx:lrt(r,x0)][s:cut][j:in(s,t0)][y0:rat][uy:urt(s,y0)]
+t39:=cut2(schnittset,x0,t13(r,i,x0,lx),y0,t20(s,j,y0,uy),[x:rat][t:in"rt"(x,schnittset)][y:rat][u:less"rt"(y,x)]t28(x,t,y,u),[x:rat][t:in"rt"(x,schnittset)]t38(x,t)):cutprop(schnittset)
+j@t40:=cutapp1b(s,cutprop(schnittset),[x:rat][t:urt(s,x)]t39(x,t)):cutprop(schnittset)
+lx@t41:=nonemptyapp(cut,t0,p1b,cutprop(schnittset),[y:cut][t:in(y,t0)]t40(y,t)):cutprop(schnittset)
+i@t42:=cutapp1a(r,cutprop(schnittset),[x:rat][t:lrt(r,x)]t41(x,t)):cutprop(schnittset)
+p2@t43:=nonemptyapp(cut,s0,p1a,cutprop(schnittset),[y:cut][t:in(y,s0)]t42(y,t)):cutprop(schnittset)
+snt:=cutof(schnittset,t43):cut
+[r:cut][l:less(r,snt)][x0:rat][ux:urt(r,x0)][lx:lrt(snt,x0)]
+t44:=ini(schnittset,t43,x0,lx):in"rt"(x0,schnittset)
+t45:=estie(rat,[x:rat]schnittprop(x),x0,t44):schnittprop(x0)
+[s:cut][a:and(in(s,s0),lrt(s,x0))]
+t46:=ande1(in(s,s0),lrt(s,x0),a):in(s,s0)
+t47:=ande2(in(s,s0),lrt(s,x0),a):lrt(s,x0)
+t48:=andi(urt(r,x0),lrt(s,x0),ux,t47):and(urt(r,x0),lrt(s,x0))
+t49:=somei(rat,[x:rat]and(urt(r,x),lrt(s,x)),x0,t48):less(r,s)
+t50:=ec3e23(is(s,r),more(s,r),less(s,r),satz123b(s,r),satz122(r,s,t49)):not(less(s,r))
+t51:=th3"l.imp"(in(r,t0),less(s,r),t50,<r><t46><s>p2):not(in(r,t0))
+t52:=ore1(in(r,s0),in(r,t0),<r>p0,t51):in(r,s0)
+lx@t53:=someapp(cut,[y:cut]and(in(y,s0),lrt(y,x0)),t45,in(r,s0),[y:cut][t:and(in(y,s0),lrt(y,x0))]t52(y,t)):in(r,s0)
+l@t54:=lessapp(r,snt,l,in(r,s0),[x:rat][t:urt(r,x)][u:lrt(snt,x)]t53(x,t,u)):in(r,s0)
+r@[m:more(r,snt)][x0:rat][lx:lrt(r,x0)][ux:urt(snt,x0)][i:in(r,s0)]
+t55:=andi(in(r,s0),lrt(r,x0),i,lx):and(in(r,s0),lrt(r,x0))
+t56:=somei(cut,[y:cut]and(in(y,s0),lrt(y,x0)),r,t55):schnittprop(x0)
+t57:=estii(rat,[x:rat]schnittprop(x),x0,t56):in"rt"(x0,schnittset)
+t58:=ine(schnittset,t43,x0,t57):lrt(snt,x0)
+ux@t59:=th3"l.imp"(in(r,s0),lrt(snt,x0),ux,[t:in(r,s0)]t58(t)):not(in(r,s0))
+t60:=ore2(in(r,s0),in(r,t0),<r>p0,t59):in(r,t0)
+m@t61:=moreapp(r,snt,m,in(r,t0),[x:rat][t:lrt(r,x)][u:urt(snt,x)]t60(x,t,u)):in(r,t0)
+p2@t62:=andi(prop1(snt),prop2(snt),[x:cut][t:less(x,snt)]t54(x,t),[x:cut][t:more(x,snt)]t61(x,t)):prop3(snt)
+t63:=somei(cut,[x:cut]prop3(x),snt,t62):some([x:cut]prop3(x))
+-5p205
+satzp205:=onei(cut,[x:cut]prop3".5p205"(x),t10".5p205",t63".5p205"):one([x:cut]and(all([y:cut][t:less(y,x)]in(y,s0)),all([y:cut][t:more(y,x)]in(y,t0))))
+schnitt:=ind(cut,[x:cut]prop3".5p205"(x),satzp205):cut
+satzp205a:=ande1(prop1".5p205"(schnitt),prop2".5p205"(schnitt),oneax(cut,[x:cut]prop3".5p205"(x),satzp205)):all([x:cut][t:less(x,schnitt)]in(x,s0))
+satzp205b:=ande2(prop1".5p205"(schnitt),prop2".5p205"(schnitt),oneax(cut,[x:cut]prop3".5p205"(x),satzp205)):all([x:cut][t:more(x,schnitt)]in(x,t0))
+@[r:cut][s:cut]
++ivad
+@i:=1rp:cut
+r@r1:=pl(r,i):cut
+s@s1:=pl(s,i):cut
+rps:=pl(r,s):cut
+@2:=pl(i,i):cut
+s@t1:=pdeq12a(r1,i,s1,i):eq(pd(pdofrp(r),pdofrp(s)),df(pl(r1,s1),2))
+t2:=tris(cut,pl(r1,s1),pl(rps,2),pl(pl(rps,i),i),4pl23(r,i,s,i),asspl2(rps,i,i)):is(pl(r1,s1),pl(pl(rps,i),i))
+t3:=ispl1(pl(r1,s1),pl(pl(rps,i),i),i,t2):is(pl(pl(r1,s1),i),pl(pl(pl(rps,i),i),i))
+t4:=tris(cut,pl(pl(r1,s1),i),pl(pl(pl(rps,i),i),i),pl(pl(rps,i),2),t3,asspl1(pl(rps,i),i,i)):is(pl(pl(r1,s1),i),pl(pl(rps,i),2))
+t5:=eqi12(pl(r1,s1),2,pl(rps,i),i,t4):eq(df(pl(r1,s1),2),pdofrp(rps))
+-ivad
+lemmaivad1:=treq(pd(pdofrp(r),pdofrp(s)),df(pl(pl(r,1rp),pl(s,1rp)),pl(1rp,1rp)),pdofrp(pl(r,s)),t1".ivad",t5".ivad"):eq(pd(pdofrp(r),pdofrp(s)),pdofrp(pl(r,s)))
++*ivad
+s@rs:=ts(r,s):cut
+t6:=tdeq12a(r1,i,s1,i):eq(td(pdofrp(r),pdofrp(s)),df(pl(ts(r1,s1),ts(i,i)),pl(ts(r1,i),ts(i,s1))))
+t7:=tris(cut,ts(r1,s),pl(rs,ts(i,s)),pl(rs,s),disttp1(r,i,s),ispl2(ts(i,s),s,rs,satz151b(s))):is(ts(r1,s),pl(rs,s))
+t8:=tr3is(cut,ts(r1,s1),pl(ts(r1,s),ts(r1,i)),pl(pl(rs,s),r1),pl(pl(rs,i),rps),disttp2(r1,s,i),ispl12(ts(r1,s),pl(rs,s),ts(r1,i),r1,t7,satz151(r1)),4pl24(rs,s,r,i)):is(ts(r1,s1),pl(pl(rs,i),rps))
+t9:=tris(cut,pl(ts(r1,s1),ts(i,i)),pl(pl(pl(rs,i),rps),i),pl(pl(rs,i),pl(rps,i)),ispl12(ts(r1,s1),pl(pl(rs,i),rps),ts(i,i),i,t8,satz151(i)),asspl1(pl(rs,i),rps,i)):is(pl(ts(r1,s1),ts(i,i)),pl(pl(rs,i),pl(rps,i)))
+t10:=tris(cut,pl(pl(ts(r1,s1),ts(i,i)),i),pl(pl(pl(rs,i),pl(rps,i)),i),pl(pl(rs,i),pl(pl(rps,i),i)),ispl1(pl(ts(r1,s1),ts(i,i)),pl(pl(rs,i),pl(rps,i)),i,t9),asspl1(pl(rs,i),pl(rps,i),i)):is(pl(pl(ts(r1,s1),ts(i,i)),i),pl(pl(rs,i),pl(pl(rps,i),i)))
+t11:=tr3is(cut,pl(pl(rps,i),i),pl(rps,2),pl(r1,s1),pl(ts(r1,i),ts(i,s1)),asspl1(rps,i,i),4pl23(r,s,i,i),ispl12(r1,ts(r1,i),s1,ts(i,s1),satz151a(r1),satz151c(s1))):is(pl(pl(rps,i),i),pl(ts(r1,i),ts(i,s1)))
+t12:=tris(cut,pl(pl(ts(r1,s1),ts(i,i)),i),pl(pl(rs,i),pl(pl(rps,i),i)),pl(pl(rs,i),pl(ts(r1,i),ts(i,s1))),t10,ispl2(pl(pl(rps,i),i),pl(ts(r1,i),ts(i,s1)),pl(rs,i),t11)):is(pl(pl(ts(r1,s1),ts(i,i)),i),pl(pl(rs,i),pl(ts(r1,i),ts(i,s1))))
+t13:=eqi12(pl(ts(r1,s1),ts(i,i)),pl(ts(r1,i),ts(i,s1)),pl(rs,i),i,t12):eq(df(pl(ts(r1,s1),ts(i,i)),pl(ts(r1,i),ts(i,s1))),pdofrp(rs))
+-ivad
+s@lemmaivad2:=treq(td(pdofrp(r),pdofrp(s)),df(pl(ts(pl(r,1rp),pl(s,1rp)),ts(1rp,1rp)),pl(ts(pl(r,1rp),1rp),ts(1rp,pl(s,1rp)))),pdofrp(ts(r,s)),t6".ivad",t13".ivad"):eq(td(pdofrp(r),pdofrp(s)),pdofrp(ts(r,s)))
+[m:mored(pdofrp(r),pdofrp(s))]
++*ivad
+m@t14:=morede12(r1,i,s1,i,m):more(pl(r1,i),pl(s1,i))
+t15:=satz136a(r1,s1,i,t14):more(r1,s1)
+-ivad
+m@lemmaivad3:=satz136a(r,s,1rp,t15".ivad"):more(r,s)
+@[c:dif][a:dif][b:dif][n:not(negd(a))][o:not(negd(b))][e:eq(td(a,a),c)][f:eq(td(b,b),c)]
++d161
+t1:=treq2(td(a,a),td(b,b),c,e,f):eq(td(a,a),td(b,b))
+t2:=treq(pd(md(td(a,a),td(a,b)),td(b,a)),pd(md(td(a,a),td(a,b)),td(a,b)),td(a,a),eqpd2(td(b,a),td(a,b),md(td(a,a),td(a,b)),comtd(b,a)),pdmd(td(a,a),td(a,b))):eq(pd(md(td(a,a),td(a,b)),td(b,a)),td(a,a))
+t3:=tr4eq(td(pd(a,b),md(a,b)),pd(td(a,md(a,b)),td(b,md(a,b))),pd(md(td(a,a),td(a,b)),md(td(b,a),td(b,b))),md(pd(md(td(a,a),td(a,b)),td(b,a)),td(b,b)),md(td(a,a),td(b,b)),disttpd1(a,b,md(a,b)),eqpd12(td(a,md(a,b)),md(td(a,a),td(a,b)),td(b,md(a,b)),md(td(b,a),td(b,b)),disttmd2(a,a,b),disttmd2(b,a,b)),asspd2(md(td(a,a),td(a,b)),td(b,a),m0d(td(b,b))),eqmd1(pd(md(td(a,a),td(a,b)),td(b,a)),td(a,a),td(b,b),t2)):eq(td(pd(a,b),md(a,b)),md(td(a,a),td(b,b)))
+t4:=eqzero(md(td(a,a),td(b,b)),td(pd(a,b),md(a,b)),symeq(td(pd(a,b),md(a,b)),md(td(a,a),td(b,b)),t3),satzd182e(td(a,a),td(b,b),t1)):zero(td(pd(a,b),md(a,b)))
+t5:=satzd192c(pd(a,b),md(a,b),t4):or(zero(pd(a,b)),zero(md(a,b)))
+[z:zero(a)]
+t6:=eqzero(td(a,a),td(b,b),t1,td01(a,a,z)):zero(td(b,b))
+t7:=th1"l.imp"(zero(b),zero(b),refimp(zero(b)),satzd192c(b,b,t6)):zero(b)
+t8:=zeroeq(a,b,z,t7):eq(a,b)
+f@[p:not(zero(a))]
+t9:=or3e2(zero(a),posd(a),negd(a),axrdo(a),n,p):posd(a)
+t10:=th3"l.imp"(zero(b),zero(a),p,[t:zero(b)]t7(b,a,o,n,f,e,t)):not(zero(b))
+t11:=t9(b,a,o,n,f,e,t10):posd(b)
+t12:=pnot0d(pd(a,b),ppd(a,b,t9,t11)):not(zero(pd(a,b)))
+t13:=ore2(zero(pd(a,b)),zero(md(a,b)),t5,t12):zero(md(a,b))
+t14:=satzd182b(a,b,t13):eq(a,b)
+-d161
+satzd161b:=th1"l.imp"(zero(a),eq(a,b),[t:zero(a)]t8".d161"(t),[t:not(zero(a))]t14".d161"(t)):eq(a,b)
+c@[n:not(negd(c))]
++*d161
+n@[z:zero(c)]
+t15:=zeroeq(td(c,c),c,td01(c,c,z),z):eq(td(c,c),c)
+t16:=andi(not(negd(c)),eq(td(c,c),c),n,t15):and(not(negd(c)),eq(td(c,c),c))
+t17:=somei(dif,[x:dif]and(not(negd(x)),eq(td(x,x),c)),c,t16):some"l"(dif,[x:dif]and(not(negd(x)),eq(td(x,x),c)))
+n@[o:not(zero(c))]
+t18:=or3e2(zero(c),posd(c),negd(c),axrdo(c),n,o):posd(c)
+crp:=rpofpd(c,t18):cut
+srp:=sqrt(crp):cut
+s:=pdofrp(srp):dif
+t19:=tr3eq(td(s,s),pdofrp(ts(srp,srp)),pdofrp(crp),c,lemmaivad2(srp,srp),isrpepd(ts(srp,srp),crp,thsqrt1(crp)),eqpdrp2(c,t18)):eq(td(s,s),c)
+t20:=andi(not(negd(s)),eq(td(s,s),c),pnotnd(s,posdirp(srp)),t19):and(not(negd(s)),eq(td(s,s),c))
+t21:=somei(dif,[x:dif]and(not(negd(x)),eq(td(x,x),c)),s,t20):some"l"(dif,[x:dif]and(not(negd(x)),eq(td(x,x),c)))
+-d161
+n@satzd161a:=th1"l.imp"(zero(c),some"l"(dif,[x:dif]and(not(negd(x)),eq(td(x,x),c))),[t:zero(c)]t17".d161"(t),[t:not(zero(c))]t21".d161"(t)):some"l"(dif,[x:dif]and(not(negd(x)),eq(td(x,x),c)))
+@[a:dif][i:intd(a)]
++intd
+[z:zero(a)]
+t1:=ori1(zero(absd(a)),natd(absd(absd(a))),satzd166f(a,z)):intd(absd(a))
+i@[n:natd(absd(a))]
+t2:=natintd(absd(a),n):intd(absd(a))
+-intd
+intabsd:=orapp(zero(a),natd(absd(a)),intd(absd(a)),i,[t:zero(a)]t1".intd"(t),[t:natd(absd(a))]t2".intd"(t)):intd(absd(a))
++*intd
+n@t4:=eqnatd(absd(a),absd(m0d(a)),satzd178a(a),n):natd(absd(m0d(a)))
+-intd
+i@intm0d:=th9"l.or"(zero(a),natd(absd(a)),zero(m0d(a)),natd(absd(m0d(a))),i,[t:zero(a)]satzd176b(a,t),[t:natd(absd(a))]t4".intd"(t)):intd(m0d(a))
+a@[b:dif][i:intd(a)][j:intd(b)]
++*intd
+j@[z:zero(a)]
+t5:=symeq(pd(a,b),b,pd01(a,b,z)):eq(b,pd(a,b))
+t6:=eqintd(b,pd(a,b),t5,j):intd(pd(a,b))
+j@[z:zero(b)]
+t7:=symeq(pd(a,b),a,pd02(a,b,z)):eq(a,pd(a,b))
+t8:=eqintd(a,pd(a,b),t7,i):intd(pd(a,b))
+a@[i:intd(a)][p:posd(a)]
+t9:=<p>ande2(posd(a),[t:posd(a)]natrp(rpofpd(a,t)),posintnatd(a,p,i)):natrp(rpofpd(a,p))
+j@[pp:posd(pd(a,b))]
+apb1:=rpofpd(pd(a,b),pp):cut
+[p:posd(a)]
+a1:=rpofpd(a,p):cut
+[q:posd(b)]
+b1:=rpofpd(b,q):cut
+t10:=natpl(a1,t9(a,i,p),b1,t9(b,j,q)):natrp(pl(a1,b1))
+t11:=eqpd12(a,pdofrp(a1),b,pdofrp(b1),eqpdrp1(a,p),eqpdrp1(b,q)):eq(pd(a,b),pd(pdofrp(a1),pdofrp(b1)))
+t12:=treq(pd(a,b),pd(pdofrp(a1),pdofrp(b1)),pdofrp(pl(a1,b1)),t11,lemmaivad1(a1,b1)):eq(pd(a,b),pdofrp(pl(a1,b1)))
+t13:=tris(cut,apb1,rpofpd(pdofrp(pl(a1,b1)),posdirp(pl(a1,b1))),pl(a1,b1),eqpderp(pd(a,b),pp,pdofrp(pl(a1,b1)),posdirp(pl(a1,b1)),t12),isrppd2(pl(a1,b1))):is(apb1,pl(a1,b1))
+t14:=isp1(cut,[t:cut]natrp(t),pl(a1,b1),apb1,t10,t13):natrp(apb1)
+t15:=andi(posd(pd(a,b)),[t:posd(pd(a,b))]natrp(apb1(t)),pp,[t:posd(pd(a,b))]t14(t,p,q)):natd(pd(a,b))
+t16:=natintd(pd(a,b),t15):intd(pd(a,b))
+p@[n:negd(b)]
+t17:=satzd176c(b,n):posd(m0d(b))
+b2:=rpofpd(m0d(b),t17):cut
+t18:=eqpd2(b,m0d(m0d(b)),a,satzd177a(b)):eq(pd(a,b),md(a,m0d(b)))
+t19:=eqposd(pd(a,b),md(a,m0d(b)),t18,pp):posd(md(a,m0d(b)))
+t20:=satzd182a(a,m0d(b),t19):mored(a,m0d(b))
+t21:=eqmored12(a,pdofrp(a1),m0d(b),pdofrp(b2),eqpdrp1(a,p),eqpdrp1(m0d(b),t17),t20):mored(pdofrp(a1),pdofrp(b2))
+t22:=lemmaivad3(a1,b2,t21):more(a1,b2)
+t23:=natmn(a1,t9(a,i,p),b2,t9(m0d(b),intm0d(b,j),t17),t22):natrp(mn(a1,b2,t22))
+t24:=eqpd12(m0d(b),pdofrp(b2),pd(a,b),pdofrp(apb1),eqpdrp1(m0d(b),t17),eqpdrp1(pd(a,b),pp)):eq(pd(m0d(b),pd(a,b)),pd(pdofrp(b2),pdofrp(apb1)))
+t25:=tr4eq(a,md(pd(a,b),b),pd(m0d(b),pd(a,b)),pd(pdofrp(b2),pdofrp(apb1)),pdofrp(pl(b2,apb1)),symeq(md(pd(a,b),b),a,mdpd(a,b)),compd(pd(a,b),m0d(b)),t24,lemmaivad1(b2,apb1)):eq(a,pdofrp(pl(b2,apb1)))
+t26:=tris2(cut,pl(b2,apb1),a1,rpofpd(pdofrp(pl(b2,apb1)),posdirp(pl(b2,apb1))),isrppd1(pl(b2,apb1)),eqpderp(a,p,pdofrp(pl(b2,apb1)),posdirp(pl(b2,apb1)),t25)):is(pl(b2,apb1),a1)
+t27:=satz140g(a1,b2,apb1,t22,t26):is(apb1,mn(a1,b2,t22))
+t28:=isp1(cut,[t:cut]natrp(t),mn(a1,b2,t22),apb1,t23,t27):natrp(apb1)
+t29:=andi(posd(pd(a,b)),[t:posd(pd(a,b))]natrp(apb1(t)),pp,[t:posd(pd(a,b))]t28(t,p,n)):natd(pd(a,b))
+t30:=natintd(pd(a,b),t29):intd(pd(a,b))
+p@t31:=rappd(b,intd(pd(a,b)),[t:posd(b)]t16(t),[t:zero(b)]t8(t),[t:negd(b)]t30(t)):intd(pd(a,b))
+pp@[n:negd(a)]
+t31a:=th3"l.imp"(negd(b),negd(pd(a,b)),pnotnd(pd(a,b),pp),[t:negd(b)]npd(a,b,n,t)):not(negd(b))
+t32:=th3"l.imp"(zero(b),negd(pd(a,b)),pnotnd(pd(a,b),pp),[t:zero(b)]eqnegd(a,pd(a,b),symeq(pd(a,b),a,pd02(a,b,t)),n)):not(zero(b))
+t33:=or3e2(zero(b),posd(b),negd(b),axrdo(b),t31a,t32):posd(b)
+t34:=eqposd(pd(a,b),pd(b,a),compd(a,b),pp):posd(pd(b,a))
+t35:=t30(b,a,j,i,t34,t33,n):intd(pd(b,a))
+t36:=eqintd(pd(b,a),pd(a,b),compd(b,a),t35):intd(pd(a,b))
+pp@t37:=rappd(a,intd(pd(a,b)),[t:posd(a)]t31(t),[t:zero(a)]t6(t),[t:negd(a)]t36(t)):intd(pd(a,b))
+j@[0p:zero(pd(a,b))]
+t38:=intdi0(pd(a,b),0p):intd(pd(a,b))
+j@[np:negd(pd(a,b))]
+t39:=satzd176c(pd(a,b),np):posd(m0d(pd(a,b)))
+t40:=eqposd(m0d(pd(a,b)),pd(m0d(a),m0d(b)),satzd180(a,b),t39):posd(pd(m0d(a),m0d(b)))
+t41:=t37(m0d(a),m0d(b),intm0d(a,i),intm0d(b,j),t40):intd(pd(m0d(a),m0d(b)))
+t42:=eqintd(pd(m0d(a),m0d(b)),m0d(pd(a,b)),satzd180a(a,b),t41):intd(m0d(pd(a,b)))
+t43:=intm0d(m0d(pd(a,b)),t42):intd(m0d(m0d(pd(a,b))))
+t44:=eqintd(m0d(m0d(pd(a,b))),pd(a,b),satzd177(pd(a,b)),t43):intd(pd(a,b))
+-intd
+j@intpd:=rappd(pd(a,b),intd(pd(a,b)),[t:posd(pd(a,b))]t37".intd"(t),[t:zero(pd(a,b))]t38".intd"(t),[t:negd(pd(a,b))]t44".intd"(t)):intd(pd(a,b))
+intmd:=intpd(a,m0d(b),i,intm0d(b,j)):intd(md(a,b))
++*intd
+j@[n:not(zero(td(a,b)))]
+t45:=th3"l.imp"(zero(a),zero(td(a,b)),n,[t:zero(a)]td01(a,b,t)):not(zero(a))
+t46:=th3"l.imp"(zero(b),zero(td(a,b)),n,[t:zero(b)]td02(a,b,t)):not(zero(b))
+t47:=satzd166e(a,t45):posd(absd(a))
+a3:=rpofpd(absd(a),t47):cut
+t48:=satzd166e(b,t46):posd(absd(b))
+b3:=rpofpd(absd(b),t48):cut
+t49:=natts(a3,t9(absd(a),intabsd(a,i),t47),b3,t9(absd(b),intabsd(b,j),t48)):natrp(ts(a3,b3))
+t50:=satzd166e(td(a,b),n):posd(absd(td(a,b)))
+[p:posd(absd(td(a,b)))]
+atb3:=rpofpd(absd(td(a,b)),p):cut
+t51:=eqtd12(absd(a),pdofrp(a3),absd(b),pdofrp(b3),eqpdrp1(absd(a),t47),eqpdrp1(absd(b),t48)):eq(td(absd(a),absd(b)),td(pdofrp(a3),pdofrp(b3)))
+t52:=tr3eq(absd(td(a,b)),td(absd(a),absd(b)),td(pdofrp(a3),pdofrp(b3)),pdofrp(ts(a3,b3)),satzd193(a,b),t51,lemmaivad2(a3,b3)):eq(absd(td(a,b)),pdofrp(ts(a3,b3)))
+t53:=tris2(cut,atb3,ts(a3,b3),rpofpd(pdofrp(ts(a3,b3)),posdirp(ts(a3,b3))),eqpderp(absd(td(a,b)),p,pdofrp(ts(a3,b3)),posdirp(ts(a3,b3)),t52),isrppd1(ts(a3,b3))):is(atb3,ts(a3,b3))
+t54:=isp1(cut,[t:cut]natrp(t),ts(a3,b3),atb3,t49,t53):natrp(atb3)
+n@t55:=andi(posd(absd(td(a,b))),[t:posd(absd(td(a,b)))]natrp(atb3(t)),t50,[t:posd(absd(td(a,b)))]t54(t)):natd(absd(td(a,b)))
+-intd
+j@inttd:=[t:not(zero(td(a,b)))]t55".intd"(t):intd(td(a,b))
++r
+@eq:=[x:dif][y:dif]eq"rp"(x,y):[x:dif][y:dif]'prop'
+refeq:=[x:dif]refeq"rp"(x):[x:dif]<x><x>eq
+symeq:=[x:dif][y:dif][t:<y><x>eq]symeq"rp"(x,y,t):[x:dif][y:dif][t:<y><x>eq]<x><y>eq
+treq:=[x:dif][y:dif][z:dif][t:<y><x>eq][u:<z><y>eq]treq"rp"(x,y,z,t,u):[x:dif][y:dif][z:dif][t:<y><x>eq][u:<z><y>eq]<z><x>eq
+[a:dif][s:set(dif)]
+inn:=esti(dif,a,s):'prop'
+@real:=ect"eq"(dif,eq,refeq,symeq,treq):'type'
+[r:real][s:real]
+is:=is"e"(real,r,s):'prop'
+nis:=not(is(r,s)):'prop'
+@[p:[x:real]'prop']
+some:=some"l"(real,p):'prop'
+all:=all"l"(real,p):'prop'
+one:=one"e"(real,p):'prop'
+r@[s0:set(real)]
+in:=esti(real,r,s0):'prop'
+a@realof:=ectelt"eq"(dif,eq,refeq,symeq,treq,a):real
+r@class:=ecect"eq"(dif,eq,refeq,symeq,treq,r):set(dif)
+a@innclass:=th5"eq.4"(dif,eq,refeq,symeq,treq,a):inn(a,class(realof(a)))
+r@[a:dif][b:dif][e:eq"rp"(a,b)][air:inn(a,class(r))]
+eqinn:=th8"eq.4"(dif,eq,refeq,symeq,treq,r,a,air,b,e):inn(b,class(r))
+r@[p:'prop'][p1:[x:dif][xi:inn(x,class(r))]p]
+realapp1:=th3"eq.4"(dif,eq,refeq,symeq,treq,r,p,p1):p
+r@[s:real][p:'prop'][p1:[x:dif][y:dif][xi:inn(x,class(r))][yi:inn(y,class(s))]p]
++ivr1
+[a:dif][air:inn(a,class(r))]
+t1:=realapp1(s,p,[y:dif]<air><y><a>p1):p
+-ivr1
+realapp2:=realapp1(r,p,[x:dif][xi:inn(x,class(r))]t1".ivr1"(x,xi)):p
+s@[t:real][p:'prop'][p1:[x:dif][y:dif][z:dif][xi:inn(x,class(r))][yi:inn(y,class(s))][zi:inn(z,class(t))]p]
++*ivr1
+p1@[a:dif][air:inn(a,class(r))]
+t2:=realapp2(s,t,p,[y:dif][z:dif]<air><z><y><a>p1):p
+-ivr1
+p1@realapp3:=realapp1(r,p,[x:dif][xi:inn(x,class(r))]t2".ivr1"(x,xi)):p
+t@[u:real][p:'prop'][p1:[x:dif][y:dif][z:dif][v:dif][xi:inn(x,class(r))][yi:inn(y,class(s))][zi:inn(z,class(t))][vi:inn(v,class(u))]p]
++*ivr1
+p1@[a:dif][air:inn(a,class(r))]
+t3:=realapp3(s,t,u,p,[y:dif][z:dif][v:dif]<air><v><z><y><a>p1):p
+-ivr1
+p1@realapp4:=realapp1(r,p,[x:dif][xi:inn(x,class(r))]t3".ivr1"(x,xi)):p
+s@[a1:dif][b1:dif][a1ir:inn(a1,class(r))][b1is:inn(b1,class(s))][e:eq"rp"(a1,b1)]
+isin:=th3"eq.5"(dif,eq,refeq,symeq,treq,r,s,a1,a1ir,b1,b1is,e):is(r,s)
+b1is@[i:is(r,s)]
+isex:=th5"eq.5"(dif,eq,refeq,symeq,treq,r,s,a1,a1ir,b1,b1is,i):eq"rp"(a1,b1)
+b1is@[n:not(eq"rp"(a1,b1))]
+nisin:=th3"l.imp"(is(r,s),eq"rp"(a1,b1),n,[t:is(r,s)]isex(t)):nis(r,s)
+b1is@[n:nis(r,s)]
+nisex:=th3"l.imp"(eq"rp"(a1,b1),is(r,s),n,[t:eq"rp"(a1,b1)]isin(t)):not(eq"rp"(a1,b1))
+@[alpha:'type'][f:[x:dif]alpha]
+fixf:=fixfu"eq"(dif,eq,refeq,symeq,treq,alpha,f):'prop'
+[ff:fixf(alpha,f)][r0:real]
+indreal:=indeq"eq"(dif,eq,refeq,symeq,treq,alpha,f,ff,r0):alpha
+[a:dif][air:inn(a,class(r0))]
+isindreal:=th2"eq.10"(dif,eq,refeq,symeq,treq,alpha,f,ff,r0,a,air):is"e"(alpha,<a>f,indreal)
+alpha@[g:[x:dif][y:dif]alpha]
+fixf2:=fixfu2"eq"(dif,eq,refeq,symeq,treq,alpha,g):'prop'
+[ff2:fixf2(alpha,g)][r0:real][s0:real]
+indreal2:=indeq2"eq"(dif,eq,refeq,symeq,treq,alpha,g,ff2,r0,s0):alpha
+[a:dif][b:dif][air:inn(a,class(r0))][bis:inn(b,class(s0))]
+isindreal2:=th1"eq.11"(dif,eq,refeq,symeq,treq,alpha,g,ff2,r0,s0,a,air,b,bis):is"e"(alpha,<b><a>g,indreal2)
+@0:=realof(df(1rp,1rp)):real
+r@[a0:dif][a0ir:inn(a0,class(r))][z:zero(a0)]
+0in:=isin(r,0,a0,df(1rp,1rp),a0ir,innclass(df(1rp,1rp)),zeroeq(a0,df(1rp,1rp),z,zeroi(1rp,1rp,refis(cut,1rp)))):is(r,0)
+a0ir@[i:is(r,0)]
+0ex:=eqzero(df(1rp,1rp),a0,isex(0,r,df(1rp,1rp),a0,innclass(df(1rp,1rp)),a0ir,symis(real,r,0,i)),tris(cut,stm(df(1rp,1rp)),1rp,std(df(1rp,1rp)),stmis(1rp,1rp),isstd(1rp,1rp))):zero(a0)
++*ivr1
+a0@propp:=and(inn(a0,class(r)),posd(a0)):'prop'
+-ivr1
+r@pos:=some"l"(dif,[x:dif]propp".ivr1"(x)):'prop'
+a0ir@[p:posd(a0)]
++*ivr1
+p@t4:=andi(inn(a0,class(r)),posd(a0),a0ir,p):propp(a0)
+-ivr1
+p@posin:=somei(dif,[x:dif]propp".ivr1"(x),a0,t4".ivr1"):pos(r)
+a0ir@[p:pos(r)]
++*ivr1
+p@[a:dif][q1:propp(a)]
+t5:=ande1(inn(a,class(r)),posd(a),q1):inn(a,class(r))
+t6:=ande2(inn(a,class(r)),posd(a),q1):posd(a)
+t7:=eqposd(a,a0,isex(r,r,a,a0,t5,a0ir,refis(real,r)),t6):posd(a0)
+-ivr1
+p@posex:=someapp(dif,[x:dif]propp".ivr1"(x),p,posd(a0),[x:dif][t:propp".ivr1"(x)]t7".ivr1"(x,t)):posd(a0)
++*ivr1
+a0@propn:=and(inn(a0,class(r)),negd(a0)):'prop'
+-ivr1
+r@neg:=some"l"(dif,[x:dif]propn".ivr1"(x)):'prop'
+a0ir@[n:negd(a0)]
++*ivr1
+n@t8:=andi(inn(a0,class(r)),negd(a0),a0ir,n):propn(a0)
+-ivr1
+n@negin:=somei(dif,[x:dif]propn".ivr1"(x),a0,t8".ivr1"):neg(r)
+a0ir@[n:neg(r)]
++*ivr1
+n@[a:dif][pl:propn(a)]
+t9:=ande1(inn(a,class(r)),negd(a),pl):inn(a,class(r))
+t10:=ande2(inn(a,class(r)),negd(a),pl):negd(a)
+t11:=eqnegd(a,a0,isex(r,r,a,a0,t9,a0ir,refis(real,r)),t10):negd(a0)
+-ivr1
+n@negex:=someapp(dif,[x:dif]propn".ivr1"(x),n,negd(a0),[x:dif][t:propn".ivr1"(x)]t11".ivr1"(x,t)):negd(a0)
++*ivr1
+a0ir@[p:posd(a0)]
+t12:=or3i2(is(r,0),pos(r),neg(r),posin(p)):or3(is(r,0),pos(r),neg(r))
+a0ir@[z:zero(a0)]
+t13:=or3i1(is(r,0),pos(r),neg(r),0in(z)):or3(is(r,0),pos(r),neg(r))
+a0ir@[n:negd(a0)]
+t14:=or3i3(is(r,0),pos(r),neg(r),negin(n)):or3(is(r,0),pos(r),neg(r))
+a0ir@t15:=rappd(a0,or3(is(r,0),pos(r),neg(r)),[t:posd(a0)]t12(t),[t:zero(a0)]t13(t),[t:negd(a0)]t14(t)):or3(is(r,0),pos(r),neg(r))
+-ivr1
+r@axrlo:=realapp1(r,or3(is(r,0),pos(r),neg(r)),[x:dif][xi:inn(x,class(r))]t15".ivr1"(x,xi)):or3(is(r,0),pos(r),neg(r))
++*ivr1
+a0ir@[i:is(r,0)]
+t16:=th3"l.imp"(pos(r),posd(a0),0notpd(a0,0ex(i)),[t:pos(r)]posex(t)):not(pos(r))
+a0ir@[p:pos(r)]
+t17:=th3"l.imp"(neg(r),negd(a0),pnotnd(a0,posex(p)),[t:neg(r)]negex(t)):not(neg(r))
+a0ir@[n:neg(r)]
+t18:=th3"l.imp"(is(r,0),zero(a0),nnot0d(a0,negex(n)),[t:is(r,0)]0ex(t)):not(is(r,0))
+a0ir@t19:=th6"l.ec3"(is(r,0),pos(r),neg(r),[t:is(r,0)]t16(t),[t:pos(r)]t17(t),[t:neg(r)]t18(t)):ec3(is(r,0),pos(r),neg(r))
+-ivr1
+r@axrle:=realapp1(r,ec3(is(r,0),pos(r),neg(r)),[x:dif][xi:inn(x,class(r))]t19".ivr1"(x,xi)):ec3(is(r,0),pos(r),neg(r))
+axrl:=orec3i(is(r,0),pos(r),neg(r),axrlo,axrle):orec3(is(r,0),pos(r),neg(r))
+[p:'prop'][p1:[t:pos(r)]p][p2:[t:is(r,0)]p][p3:[t:neg(r)]p]
+rapp:=or3app(is(r,0),pos(r),neg(r),p,axrlo,p2,p1,p3):p
+r@[p:pos(r)]
+pnotn:=ec3e23(is(r,0),pos(r),neg(r),axrle,p):not(neg(r))
+pnot0:=ec3e21(is(r,0),pos(r),neg(r),axrle,p):nis(r,0)
+r@[i:is(r,0)]
+0notp:=ec3e12(is(r,0),pos(r),neg(r),axrle,i):not(pos(r))
+0notn:=ec3e13(is(r,0),pos(r),neg(r),axrle,i):not(neg(r))
+r@[n:neg(r)]
+nnotp:=ec3e32(is(r,0),pos(r),neg(r),axrle,n):not(pos(r))
+nnot0:=ec3e31(is(r,0),pos(r),neg(r),axrle,n):nis(r,0)
+s@[i:is(r,s)][p:pos(r)]
+ispos:=isp(real,[x:real]pos(x),r,s,p,i):pos(s)
+i@[n:neg(r)]
+isneg:=isp(real,[x:real]neg(x),r,s,n,i):neg(s)
+@[r0:cut]
+pofrp:=realof(pdofrp(r0)):real
+nofrp:=realof(ndofrp(r0)):real
+[s0:cut][i:is"rp"(r0,s0)]
+isrpep:=isf(cut,real,[x:cut]pofrp(x),r0,s0,i):is(pofrp(r0),pofrp(s0))
+isrpen:=isf(cut,real,[x:cut]nofrp(x),r0,s0,i):is(nofrp(r0),nofrp(s0))
+s0@[i:is(pofrp(r0),pofrp(s0))]
++*ivr1
+i"r"@t20:=isex(pofrp(r0),pofrp(s0),pdofrp(r0),pdofrp(s0),innclass(pdofrp(r0)),innclass(pdofrp(s0)),i):eq"rp"(pdofrp(r0),pdofrp(s0))
+-ivr1
+i@isrpip:=isrpipd(r0,s0,t20".ivr1"):is"rp"(r0,s0)
+s0@[i:is(nofrp(r0),nofrp(s0))]
++*ivr1
+i"r"@t21:=isex(nofrp(r0),nofrp(s0),ndofrp(r0),ndofrp(s0),innclass(ndofrp(r0)),innclass(ndofrp(s0)),i):eq"rp"(ndofrp(r0),ndofrp(s0))
+-ivr1
+i@isrpin:=isrpind(r0,s0,t21".ivr1"):is"rp"(r0,s0)
+r0@posi:=posin(pofrp(r0),pdofrp(r0),innclass(pdofrp(r0)),posdirp(r0)):pos(pofrp(r0))
+negi:=negin(nofrp(r0),ndofrp(r0),innclass(ndofrp(r0)),negdirp(r0)):neg(nofrp(r0))
+s@[r0:cut][s0:cut][i:is(r,pofrp(r0))][j:is(s,pofrp(s0))][k:is(r,s)]
++*ivr1
+k@t22:=isrpip(r0,s0,tr3is(real,pofrp(r0),r,s,pofrp(s0),symis(real,r,pofrp(r0),i),k,j)):is"rp"(r0,s0)
+r@t23:=[x:cut][y:cut][t:is(r,pofrp(x))][u:is(r,pofrp(y))]t22(r,r,x,y,t,u,refis(real,r)):amone(cut,[x:cut]is(r,pofrp(x)))
+a0ir@[p1:pos(r)]
+t24:=posex(p1):posd(a0)
+pr:=rpofpd(a0,t24):cut
+t25:=isin(r,pofrp(pr),a0,pdofrp(pr),a0ir,innclass(pdofrp(pr)),eqpdrp1(a0,t24)):is(r,pofrp(pr))
+t26:=somei(cut,[x:cut]is(r,pofrp(x)),pr,t25):some"rp"([x:cut]is(r,pofrp(x)))
+-ivr1
+r@[p:pos(r)]
++*ivr1
+p"r"@t27:=realapp1(some"rp"([x:cut]is(r,pofrp(x))),[x:dif][t:inn(x,class(r))]t26(x,t,p)):some"rp"([x:cut]is(r,pofrp(x)))
+t28:=onei(cut,[x:cut]is(r,pofrp(x)),t23,t27):one"rp"([x:cut]is(r,pofrp(x)))
+-ivr1
+p@rpofp:=ind(cut,[x:cut]is(r,pofrp(x)),t28".ivr1"):cut
+isprp1:=oneax(cut,[x:cut]is(r,pofrp(x)),t28".ivr1"):is(r,pofrp(rpofp(r,p)))
+isprp2:=symis(real,r,pofrp(rpofp(r,p)),isprp1):is(pofrp(rpofp(r,p)),r)
+@[r1:real][p:pos(r1)][s1:real][q:pos(s1)][i:is(r1,s1)]
+isperp:=t22".ivr1"(r1,s1,rpofp(r1,p),rpofp(s1,q),isprp1(r1,p),isprp1(s1,q),i):is"rp"(rpofp(r1,p),rpofp(s1,q))
+q@[i:is"rp"(rpofp(r1,p),rpofp(s1,q))]
+ispirp:=tr3is(real,r1,pofrp(rpofp(r1,p)),pofrp(rpofp(s1,q)),s1,isprp1(r1,p),isrpep(rpofp(r1,p),rpofp(s1,q),i),isprp2(s1,q)):is(r1,s1)
+@[r0:cut]
+isrpp1:=t22".ivr1"(pofrp(r0),pofrp(r0),r0,rpofp(pofrp(r0),posi(r0)),refis(real,pofrp(r0)),isprp1(pofrp(r0),posi(r0)),refis(real,pofrp(r0))):is"rp"(r0,rpofp(pofrp(r0),posi(r0)))
+isrpp2:=symis(cut,r0,rpofp(pofrp(r0),posi(r0)),isrpp1):is"rp"(rpofp(pofrp(r0),posi(r0)),r0)
+s@[r0:cut][s0:cut][i:is(r,nofrp(r0))][j:is(s,nofrp(s0))][k:is(r,s)]
++*ivr1
+k@t29:=isrpin(r0,s0,tr3is(real,nofrp(r0),r,s,nofrp(s0),symis(real,r,nofrp(r0),i),k,j)):is"rp"(r0,s0)
+r@t30:=[x:cut][y:cut][t:is(r,nofrp(x))][u:is(r,nofrp(y))]t29(r,r,x,y,t,u,refis(real,r)):amone(cut,[x:cut]is(r,nofrp(x)))
+a0ir@[n1:neg(r)]
+t31:=negex(n1):negd(a0)
+nr:=rpofnd(a0,t31):cut
+t32:=isin(r,nofrp(nr),a0,ndofrp(nr),a0ir,innclass(ndofrp(nr)),eqndrp1(a0,t31)):is(r,nofrp(nr))
+t33:=somei(cut,[x:cut]is(r,nofrp(x)),nr,t32):some"rp"([x:cut]is(r,nofrp(x)))
+-ivr1
+r@[n:neg(r)]
++*ivr1
+n"r"@t34:=realapp1(some"rp"([x:cut]is(r,nofrp(x))),[x:dif][t:inn(x,class(r))]t33(x,t,n)):some"rp"([x:cut]is(r,nofrp(x)))
+t35:=onei(cut,[x:cut]is(r,nofrp(x)),t30,t34):one"rp"([x:cut]is(r,nofrp(x)))
+-ivr1
+n@rpofn:=ind(cut,[x:cut]is(r,nofrp(x)),t35".ivr1"):cut
+isnrp1:=oneax(cut,[x:cut]is(r,nofrp(x)),t35".ivr1"):is(r,nofrp(rpofn(r,n)))
+isnrp2:=symis(real,r,nofrp(rpofn(r,n)),isnrp1):is(nofrp(rpofn(r,n)),r)
+@[r1:real][n:neg(r1)][s1:real][m:neg(s1)][i:is(r1,s1)]
+isnerp:=t29".ivr1"(r1,s1,rpofn(r1,n),rpofn(s1,m),isnrp1(r1,n),isnrp1(s1,m),i):is"rp"(rpofn(r1,n),rpofn(s1,m))
+m@[i:is"rp"(rpofn(r1,n),rpofn(s1,m))]
+isnirp:=tr3is(real,r1,nofrp(rpofn(r1,n)),nofrp(rpofn(s1,m)),s1,isnrp1(r1,n),isrpen(rpofn(r1,n),rpofn(s1,m),i),isnrp2(s1,m)):is(r1,s1)
+@[r0:cut]
+isrpn1:=t29".ivr1"(nofrp(r0),nofrp(r0),r0,rpofn(nofrp(r0),negi(r0)),refis(real,nofrp(r0)),isnrp1(nofrp(r0),negi(r0)),refis(real,nofrp(r0))):is"rp"(r0,rpofn(nofrp(r0),negi(r0)))
+isrpn2:=symis(cut,r0,rpofn(nofrp(r0),negi(r0)),isrpn1):is"rp"(rpofn(nofrp(r0),negi(r0)),r0)
+r@satz163:=refis(real,r):is(r,r)
+s@[i:is(r,s)]
+satz164:=symis(real,r,s,i):is(s,r)
+t@[i:is(r,s)][j:is(s,t)]
+satz165:=tris(real,r,s,t,i,j):is(r,t)
+@absdr:=[x:dif]realof(absd(x)):[x:dif]real
++ivr2
+[a:dif][b:dif][e:eq"rp"(a,b)]
+t1:=isin(realof(absd(a)),realof(absd(b)),absd(a),absd(b),innclass(absd(a)),innclass(absd(b)),eqabsd(a,b,e)):is(<a>absdr,<b>absdr)
+-ivr2
+fabsdr:=[x:dif][y:dif][t:<y><x>eq]t1".ivr2"(x,y,t):fixf(real,absdr)
+r@abs:=indreal(real,absdr,fabsdr,r):real
++*ivr2
+a0ir@t2:=isindreal(real,absdr,fabsdr,r,a0,a0ir):is(realof(absd(a0)),abs(r))
+-ivr2
+a0ir@aica:=isp(real,[x:real]inn(absd(a0),class(x)),realof(absd(a0)),abs(r),innclass(absd(a0)),t2".ivr2"):inn(absd(a0),class(abs(r)))
+s@[i:is(r,s)]
+isabs:=isf(real,real,[x:real]abs(x),r,s,i):is(abs(r),abs(s))
++2r166
+a0ir@[p:pos(r)]
+t1:=satzd166a(a0,posex(p)):posd(absd(a0))
+t2:=posin(abs(r),absd(a0),aica,t1):pos(abs(r))
+-2r166
+r@[p:pos(r)]
+satz166a:=realapp1(pos(abs(r)),[x:dif][t:inn(x,class(r))]t2".2r166"(x,t,p)):pos(abs(r))
++*2r166
+a0ir@[n:neg(r)]
+t3:=satzd166b(a0,negex(n)):posd(absd(a0))
+t4:=posin(abs(r),absd(a0),aica,t3):pos(abs(r))
+-2r166
+r@[n:neg(r)]
+satz166b:=realapp1(pos(abs(r)),[x:dif][t:inn(x,class(r))]t4".2r166"(x,t,n)):pos(abs(r))
++*2r166
+b1is@[p:pos(r)][q:pos(s)][i:is(abs(r),abs(s))]
+t5:=satzd166c(a1,b1,posex(r,a1,a1ir,p),posex(s,b1,b1is,q),isex(abs(r),abs(s),absd(a1),absd(b1),aica(r,a1,a1ir),aica(s,b1,b1is),i)):eq"rp"(a1,b1)
+t6:=isin(t5):is(r,s)
+-2r166
+s@[p:pos(r)][q:pos(s)][i:is(abs(r),abs(s))]
+satz166c:=realapp2(is(r,s),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t6".2r166"(x,y,t,u,p,q,i)):is(r,s)
++*2r166
+b1is@[n:neg(r)][o:neg(s)][i:is(abs(r),abs(s))]
+t7:=satzd166d(a1,b1,negex(r,a1,a1ir,n),negex(s,b1,b1is,o),isex(abs(r),abs(s),absd(a1),absd(b1),aica(r,a1,a1ir),aica(s,b1,b1is),i)):eq"rp"(a1,b1)
+t8:=isin(t7):is(r,s)
+-2r166
+s@[n:neg(r)][o:neg(s)][i:is(abs(r),abs(s))]
+satz166d:=realapp2(is(r,s),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t8".2r166"(x,y,t,u,n,o,i)):is(r,s)
+r@[n:nis(r,0)]
+satz166e:=rapp(r,pos(abs(r)),[t:pos(r)]satz166a(t),th2"l.imp"(is(r,0),pos(abs(r)),n),[t:neg(r)]satz166b(t)):pos(abs(r))
++*2r166
+a0ir@[i:is(r,0)]
+t9:=satzd166f(a0,0ex(i)):zero(absd(a0))
+t10:=0in(abs(r),absd(a0),aica,t9):is(abs(r),0)
+-2r166
+r@[i:is(r,0)]
+satz166f:=realapp1(is(abs(r),0),[x:dif][t:inn(x,class(r))]t10".2r166"(x,t,i)):is(abs(r),0)
+s@more:=some"l"(dif,[x:dif]some"l"(dif,[y:dif]and3(inn(x,class(r)),inn(y,class(s)),mored(x,y)))):'prop'
++*ivr2
+b1@propm:=and3(inn(a1,class(r)),inn(b1,class(s)),mored(a1,b1)):'prop'
+-ivr2
+b1is@[m:mored(a1,b1)]
++*ivr2
+m@t3:=and3i(inn(a1,class(r)),inn(b1,class(s)),mored(a1,b1),a1ir,b1is,m):propm(a1,b1)
+t4:=somei(dif,[x:dif]propm(a1,x),b1,t3):some"l"(dif,[x:dif]propm(a1,x))
+-ivr2
+m@morein:=somei(dif,[x:dif]some"l"(dif,[y:dif]propm".ivr2"(x,y)),a1,t4".ivr2"):more(r,s)
+b1is@[m:more(r,s)]
++*ivr2
+m@[a:dif][sa:some"l"(dif,[x:dif]propm(a,x))][b:dif][p2:propm(a,b)]
+t5:=and3e1(inn(a,class(r)),inn(b,class(s)),mored(a,b),p2):inn(a,class(r))
+t6:=and3e2(inn(a,class(r)),inn(b,class(s)),mored(a,b),p2):inn(b,class(s))
+t7:=and3e3(inn(a,class(r)),inn(b,class(s)),mored(a,b),p2):mored(a,b)
+t8:=eqmored12(a,a1,b,b1,isex(r,r,a,a1,t5,a1ir,refis(real,r)),isex(s,s,b,b1,t6,b1is,refis(real,s)),t7):mored(a1,b1)
+sa@t9:=someapp(dif,[x:dif]propm(a,x),sa,mored(a1,b1),[x:dif][t:propm(a,x)]t8(x,t)):mored(a1,b1)
+-ivr2
+m@moreex:=someapp(dif,[x:dif]some"l"(dif,[y:dif]propm".ivr2"(x,y)),m,mored(a1,b1),[x:dif][t:some"l"(dif,[y:dif]propm".ivr2"(x,y))]t9".ivr2"(x,t)):mored(a1,b1)
+s@less:=some"l"(dif,[x:dif]some"l"(dif,[y:dif]and3(inn(x,class(r)),inn(y,class(s)),lessd(x,y)))):'prop'
++*ivr2
+b1@propl:=and3(inn(a1,class(r)),inn(b1,class(s)),lessd(a1,b1)):'prop'
+-ivr2
+b1is@[l:lessd(a1,b1)]
++*ivr2
+l@t10:=and3i(inn(a1,class(r)),inn(b1,class(s)),lessd(a1,b1),a1ir,b1is,l):propl(a1,b1)
+t11:=somei(dif,[x:dif]propl(a1,x),b1,t10):some"l"(dif,[x:dif]propl(a1,x))
+-ivr2
+l@lessin:=somei(dif,[x:dif]some"l"(dif,[y:dif]propl".ivr2"(x,y)),a1,t11".ivr2"):less(r,s)
+b1is@[l:less(r,s)]
++*ivr2
+l@[a:dif][sa:some"l"(dif,[x:dif]propl(a,x))][b:dif][p2:propl(a,b)]
+t12:=and3e1(inn(a,class(r)),inn(b,class(s)),lessd(a,b),p2):inn(a,class(r))
+t13:=and3e2(inn(a,class(r)),inn(b,class(s)),lessd(a,b),p2):inn(b,class(s))
+t14:=and3e3(inn(a,class(r)),inn(b,class(s)),lessd(a,b),p2):lessd(a,b)
+t15:=eqlessd12(a,a1,b,b1,isex(r,r,a,a1,t12,a1ir,refis(real,r)),isex(s,s,b,b1,t13,b1is,refis(real,s)),t14):lessd(a1,b1)
+sa@t16:=someapp(dif,[x:dif]propl(a,x),sa,lessd(a1,b1),[x:dif][t:propl(a,x)]t15(x,t)):lessd(a1,b1)
+-ivr2
+l@lessex:=someapp(dif,[x:dif]some"l"(dif,[y:dif]propl".ivr2"(x,y)),l,lessd(a1,b1),[x:dif][t:some"l"(dif,[y:dif]propl".ivr2"(x,y))]t16".ivr2"(x,t)):lessd(a1,b1)
+t@[i:is(r,s)][m:more(r,t)]
+ismore1:=isp(real,[x:real]more(x,t),r,s,m,i):more(s,t)
+i@[m:more(t,r)]
+ismore2:=isp(real,[x:real]more(t,x),r,s,m,i):more(t,s)
+i@[l:less(r,t)]
+isless1:=isp(real,[x:real]less(x,t),r,s,l,i):less(s,t)
+i@[l:less(t,r)]
+isless2:=isp(real,[x:real]less(t,x),r,s,l,i):less(t,s)
+u@[i:is(r,s)][j:is(t,u)][m:more(r,t)]
+ismore12:=ismore2(t,u,s,j,ismore1(r,s,t,i,m)):more(s,u)
+j@[l:less(r,t)]
+isless12:=isless2(t,u,s,j,isless1(r,s,t,i,l)):less(s,u)
++*ivr2
+b1is@[m:more(r,s)]
+t17:=lemmad5(a1,b1,moreex(m)):lessd(b1,a1)
+t18:=lessin(s,r,b1,a1,b1is,a1ir,t17):less(s,r)
+-ivr2
+s@[m:more(r,s)]
+lemma1:=realapp2(less(s,r),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t18".ivr2"(x,y,t,u,m)):less(s,r)
++*ivr2
+b1is@[l:less(r,s)]
+t19:=lemmad6(a1,b1,lessex(l)):mored(b1,a1)
+t20:=morein(s,r,b1,a1,b1is,a1ir,t19):more(s,r)
+-ivr2
+s@[l:less(r,s)]
+lemma2:=realapp2(more(s,r),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t20".ivr2"(x,y,t,u,l)):more(s,r)
++2r167
+b1is@t1:=satzd167a(a1,b1):or3(eq"rp"(a1,b1),mored(a1,b1),lessd(a1,b1))
+[e:eq"rp"(a1,b1)]
+t2:=or3i1(is(r,s),more(r,s),less(r,s),isin(e)):or3(is(r,s),more(r,s),less(r,s))
+b1is@[m:mored(a1,b1)]
+t3:=or3i2(is(r,s),more(r,s),less(r,s),morein(m)):or3(is(r,s),more(r,s),less(r,s))
+b1is@[l:lessd(a1,b1)]
+t4:=or3i3(is(r,s),more(r,s),less(r,s),lessin(l)):or3(is(r,s),more(r,s),less(r,s))
+b1is@t5:=or3app(eq"rp"(a1,b1),mored(a1,b1),lessd(a1,b1),or3(is(r,s),more(r,s),less(r,s)),t1,[t:eq"rp"(a1,b1)]t2(t),[t:mored(a1,b1)]t3(t),[t:lessd(a1,b1)]t4(t)):or3(is(r,s),more(r,s),less(r,s))
+t6:=satzd167b(a1,b1):ec3(eq"rp"(a1,b1),mored(a1,b1),lessd(a1,b1))
+[i:is(r,s)]
+t7:=th3"l.imp"(more(r,s),mored(a1,b1),ec3e12(eq"rp"(a1,b1),mored(a1,b1),lessd(a1,b1),t6,isex(i)),[t:more(r,s)]moreex(t)):not(more(r,s))
+b1is@[m:more(r,s)]
+t8:=th3"l.imp"(less(r,s),lessd(a1,b1),ec3e23(eq"rp"(a1,b1),mored(a1,b1),lessd(a1,b1),t6,moreex(m)),[t:less(r,s)]lessex(t)):not(less(r,s))
+b1is@[l:less(r,s)]
+t9:=th3"l.imp"(is(r,s),eq"rp"(a1,b1),ec3e31(eq"rp"(a1,b1),mored(a1,b1),lessd(a1,b1),t6,lessex(l)),[t:is(r,s)]isex(t)):not(is(r,s))
+b1is@t10:=th6"l.ec3"(is(r,s),more(r,s),less(r,s),th1"l.ec"(is(r,s),more(r,s),[t:is(r,s)]t7(t)),th1"l.ec"(more(r,s),less(r,s),[t:more(r,s)]t8(t)),th1"l.ec"(less(r,s),is(r,s),[t:less(r,s)]t9(t))):ec3(is(r,s),more(r,s),less(r,s))
+t11:=orec3i(is(r,s),more(r,s),less(r,s),t5,t10):orec3(is(r,s),more(r,s),less(r,s))
+-2r167
+s@satz167:=realapp2(orec3(is(r,s),more(r,s),less(r,s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t11".2r167"(x,y,t,u)):orec3(is(r,s),more(r,s),less(r,s))
+satz167a:=orec3e1(is(r,s),more(r,s),less(r,s),satz167):or3(is(r,s),more(r,s),less(r,s))
+satz167b:=orec3e2(is(r,s),more(r,s),less(r,s),satz167):ec3(is(r,s),more(r,s),less(r,s))
+moreis:=or(more(r,s),is(r,s)):'prop'
+lessis:=or(less(r,s),is(r,s)):'prop'
+[m:moreis(r,s)]
+satz168a:=th9"l.or"(more(r,s),is(r,s),less(s,r),is(s,r),m,[t:more(r,s)]lemma1(t),[t:is(r,s)]symis(real,r,s,t)):lessis(s,r)
+s@[l:lessis(r,s)]
+satz168b:=th9"l.or"(less(r,s),is(r,s),more(s,r),is(s,r),l,[t:less(r,s)]lemma2(t),[t:is(r,s)]symis(real,r,s,t)):moreis(s,r)
+t@[i:is(r,s)][m:moreis(r,t)]
+ismoreis1:=isp(real,[x:real]moreis(x,t),r,s,m,i):moreis(s,t)
+i@[m:moreis(t,r)]
+ismoreis2:=isp(real,[x:real]moreis(t,x),r,s,m,i):moreis(t,s)
+i@[l:lessis(r,t)]
+islessis1:=isp(real,[x:real]lessis(x,t),r,s,l,i):lessis(s,t)
+i@[l:lessis(t,r)]
+islessis2:=isp(real,[x:real]lessis(t,x),r,s,l,i):lessis(t,s)
+u@[i:is(r,s)][j:is(t,u)][m:moreis(r,t)]
+ismoreis12:=ismoreis2(t,u,s,j,ismoreis1(r,s,t,i,m)):moreis(s,u)
+j@[l:lessis(r,t)]
+islessis12:=islessis2(t,u,s,j,islessis1(r,s,t,i,l)):lessis(s,u)
+s@[m:more(r,s)]
+moreisi1:=ori1(more(r,s),is(r,s),m):moreis(r,s)
+s@[l:less(r,s)]
+lessisi1:=ori1(less(r,s),is(r,s),l):lessis(r,s)
+s@[i:is(r,s)]
+moreisi2:=ori2(more(r,s),is(r,s),i):moreis(r,s)
+lessisi2:=ori2(less(r,s),is(r,s),i):lessis(r,s)
+b1is@[m:moreq(a1,b1)]
+moreisin:=orapp(mored(a1,b1),eq"rp"(a1,b1),moreis(r,s),m,[t:mored(a1,b1)]moreisi1(morein(t)),[t:eq"rp"(a1,b1)]moreisi2(isin(t))):moreis(r,s)
+b1is@[m:moreis(r,s)]
+moreisex:=orapp(more(r,s),is(r,s),moreq(a1,b1),m,[t:more(r,s)]moreqi1(a1,b1,moreex(t)),[t:is(r,s)]moreqi2(a1,b1,isex(t))):moreq(a1,b1)
+b1is@[l:lesseq(a1,b1)]
+lessisin:=orapp(lessd(a1,b1),eq"rp"(a1,b1),lessis(r,s),l,[t:lessd(a1,b1)]lessisi1(lessin(t)),[t:eq"rp"(a1,b1)]lessisi2(isin(t))):lessis(r,s)
+b1is@[l:lessis(r,s)]
+lessisex:=orapp(less(r,s),is(r,s),lesseq(a1,b1),l,[t:less(r,s)]lesseqi1(a1,b1,lessex(t)),[t:is(r,s)]lesseqi2(a1,b1,isex(t))):lesseq(a1,b1)
+s@[m:moreis(r,s)]
+satz167c:=th7"l.ec3"(is(r,s),more(r,s),less(r,s),satz167b,comor(more(r,s),is(r,s),m)):not(less(r,s))
+s@[l:lessis(r,s)]
+satz167d:=th9"l.ec3"(is(r,s),more(r,s),less(r,s),satz167b,l):not(more(r,s))
+s@[n:not(more(r,s))]
+satz167e:=th2"l.or3"(is(r,s),more(r,s),less(r,s),satz167a,n):lessis(r,s)
+s@[n:not(less(r,s))]
+s@[n:not(less(r,s))]
+satz167f:=comor(is(r,s),more(r,s),th3"l.or3"(is(r,s),more(r,s),less(r,s),satz167a,n)):moreis(r,s)
+s@[m:more(r,s)]
+satz167g:=th3"l.imp"(lessis(r,s),not(more(r,s)),weli(more(r,s),m),[t:lessis(r,s)]satz167d(t)):not(lessis(r,s))
+s@[l:less(r,s)]
+satz167h:=th3"l.imp"(moreis(r,s),not(less(r,s)),weli(less(r,s),l),[t:moreis(r,s)]satz167c(t)):not(moreis(r,s))
+s@[n:not(moreis(r,s))]
+satz167j:=or3e3(is(r,s),more(r,s),less(r,s),satz167a,th5"l.or"(more(r,s),is(r,s),n),th4"l.or"(more(r,s),is(r,s),n)):less(r,s)
+s@[n:not(lessis(r,s))]
+satz167k:=or3e2(is(r,s),more(r,s),less(r,s),satz167a,th4"l.or"(less(r,s),is(r,s),n),th5"l.or"(less(r,s),is(r,s),n)):more(r,s)
+r@[p:pos(r)]
++2r169
+[a:dif][b:dif][air:inn(a,class(r))][bi0:inn(b,class(0))]
+t1:=satzd169a(a,b,0ex(0,b,bi0,refis(real,0)),posex(a,air,p)):mored(a,b)
+t2:=morein(r,0,a,b,air,bi0,t1):more(r,0)
+-2r169
+satz169a:=realapp2(r,0,more(r,0),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(0))]t2".2r169"(x,y,t,u)):more(r,0)
+r@[m:more(r,0)]
++*2r169
+m@[a:dif][b:dif][air:inn(a,class(r))][bi0:inn(b,class(0))]
+t3:=satzd169b(a,b,0ex(0,b,bi0,refis(real,0)),moreex(r,0,a,b,air,bi0,m)):posd(a)
+t4:=posin(r,a,air,t3):pos(r)
+-2r169
+m@satz169b:=realapp2(r,0,pos(r),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(0))]t4".2r169"(x,y,t,u)):pos(r)
+r@[n:neg(r)]
++*2r169
+n@[a:dif][b:dif][air:inn(a,class(r))][bi0:inn(b,class(0))]
+t5:=satzd169c(a,b,0ex(0,b,bi0,refis(real,0)),negex(a,air,n)):lessd(a,b)
+t6:=lessin(r,0,a,b,air,bi0,t5):less(r,0)
+-2r169
+n@satz169c:=realapp2(r,0,less(r,0),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(0))]t6".2r169"(x,y,t,u)):less(r,0)
+r@[l:less(r,0)]
++*2r169
+l@[a:dif][b:dif][air:inn(a,class(r))][bi0:inn(b,class(0))]
+t7:=satzd169d(a,b,0ex(0,b,bi0,refis(real,0)),lessex(r,0,a,b,air,bi0,l)):negd(a)
+t8:=negin(r,a,air,t7):neg(r)
+-2r169
+l@satz169d:=realapp2(r,0,neg(r),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(0))]t8".2r169"(x,y,t,u)):neg(r)
++2r170
+r@[a:dif][b:dif][air:inn(a,class(r))][bi0:inn(b,class(0))]
+t1:=satzd170(a,b,0ex(0,b,bi0,refis(real,0))):moreq(absd(a),b)
+t2:=moreisin(abs(r),0,absd(a),b,aica(r,a,air),bi0,t1):moreis(abs(r),0)
+-2r170
+r@satz170:=realapp2(r,0,moreis(abs(r),0),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(0))]t2".2r170"(x,y,t,u)):moreis(abs(r),0)
+satz170a:=th3"l.imp"(neg(abs(r)),less(abs(r),0),satz167c(abs(r),0,satz170),[t:neg(abs(r))]satz169c(abs(r),t)):not(neg(abs(r)))
+t@[l:less(r,s)][k:less(s,t)]
++2r171
+[a:dif][b:dif][c:dif][air:inn(a,class(r))][bis:inn(b,class(s))][cit:inn(c,class(t))]
+t1:=satzd171(a,b,c,lessex(r,s,a,b,air,bis,l),lessex(s,t,b,c,bis,cit,k)):lessd(a,c)
+t2:=lessin(r,t,a,c,air,cit,t1):less(r,t)
+-2r171
+satz171:=realapp3(r,s,t,less(r,t),[x:dif][y:dif][z:dif][w:inn(x,class(r))][u:inn(y,class(s))][v:inn(z,class(t))]t2".2r171"(x,y,z,w,u,v)):less(r,t)
+trless:=satz171:less(r,t)
+t@[m:more(r,s)][n:more(s,t)]
+trmore:=lemma2(t,r,trless(t,s,r,lemma1(s,t,n),lemma1(r,s,m))):more(r,t)
+t@[a2:dif][b2:dif][c2:dif][a2ir:inn(a2,class(r))][b2is:inn(b2,class(s))][c2it:inn(c2,class(t))]
++2r172
+[l:lessis(r,s)][k:less(s,t)]
+t1:=satzd172a(a2,b2,c2,lessisex(a2,b2,a2ir,b2is,l),lessex(s,t,b2,c2,b2is,c2it,k)):lessd(a2,c2)
+t2:=lessin(r,t,a2,c2,a2ir,c2it,t1):less(r,t)
+-2r172
+t@[l:lessis(r,s)][k:less(s,t)]
+satz172a:=realapp3(less(r,t),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t2".2r172"(x,y,z,u,v,w,l,k)):less(r,t)
++*2r172
+c2it@[l:less(r,s)][k:lessis(s,t)]
+t3:=satzd172b(a2,b2,c2,lessex(a2,b2,a2ir,b2is,l),lessisex(s,t,b2,c2,b2is,c2it,k)):lessd(a2,c2)
+t4:=lessin(r,t,a2,c2,a2ir,c2it,t3):less(r,t)
+-2r172
+t@[l:less(r,s)][k:lessis(s,t)]
+satz172b:=realapp3(less(r,t),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t4".2r172"(x,y,z,u,v,w,l,k)):less(r,t)
+t@[m:moreis(r,s)][n:more(s,t)]
+satz172c:=lemma2(t,r,satz172b(t,s,r,lemma1(s,t,n),satz168a(m))):more(r,t)
+t@[m:more(r,s)][n:moreis(s,t)]
+satz172d:=lemma2(t,r,satz172a(t,s,r,satz168a(s,t,n),lemma1(m))):more(r,t)
++2r173
+c2it@[l:lessis(r,s)][k:lessis(s,t)]
+t1:=satzd173(a2,b2,c2,lessisex(a2,b2,a2ir,b2is,l),lessisex(s,t,b2,c2,b2is,c2it,k)):lesseq(a2,c2)
+t2:=lessisin(r,t,a2,c2,a2ir,c2it,t1):lessis(r,t)
+-2r173
+t@[l:lessis(r,s)][k:lessis(s,t)]
+satz173:=realapp3(lessis(r,t),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t2".2r173"(x,y,z,u,v,w,l,k)):lessis(r,t)
+trlessis:=satz173:lessis(r,t)
+t@[m:moreis(r,s)][n:moreis(s,t)]
+trmoreis:=satz168b(t,r,trlessis(t,s,r,satz168a(s,t,n),satz168a(m))):moreis(r,t)
+r@ratrl:=some"l"(dif,[x:dif]and(inn(x,class(r)),ratd(x))):'prop'
+a0ir@[r1:ratd(a0)]
++*ivr2
+r1@t21:=andi(inn(a0,class(r)),ratd(a0),a0ir,r1):and(inn(a0,class(r)),ratd(a0))
+-ivr2
+r1@ratrlin:=somei(dif,[x:dif]and(inn(x,class(r)),ratd(x)),a0,t21".ivr2"):ratrl(r)
+a0ir@[rr:ratrl(r)]
++*ivr2
+rr@[a:dif][b:and(inn(a,class(r)),ratd(a))]
+t22:=ande1(inn(a,class(r)),ratd(a),b):inn(a,class(r))
+t23:=ande2(inn(a,class(r)),ratd(a),b):ratd(a)
+t24:=eqratd(a,a0,isex(r,r,a,a0,t22,a0ir,refis(real,r)),t23):ratd(a0)
+-ivr2
+rr@ratrlex:=someapp(dif,[x:dif]and(inn(x,class(r)),ratd(x)),rr,ratd(a0),[x:dif][t:and(inn(x,class(r)),ratd(x))]t24".ivr2"(x,t)):ratd(a0)
+r@irratrl:=not(ratrl(r)):'prop'
+@[r0:cut][rr:ratrp(r0)]
+remark2:=ratrlin(pofrp(r0),pdofrp(r0),innclass(pdofrp(r0)),remark2a(r0,rr)):ratrl(pofrp(r0))
+remark3:=ratrlin(nofrp(r0),ndofrp(r0),innclass(ndofrp(r0)),remark3a(r0,rr)):ratrl(nofrp(r0))
+r0@[ir:irratrp(r0)]
+remark4:=th3"l.imp"(ratrl(pofrp(r0)),ratd(pdofrp(r0)),remark4a(r0,ir),[t:ratrl(pofrp(r0))]ratrlex(pofrp(r0),pdofrp(r0),innclass(pdofrp(r0)),t)):irratrl(pofrp(r0))
+remark5:=th3"l.imp"(ratrl(nofrp(r0)),ratd(ndofrp(r0)),remark5a(r0,ir),[t:ratrl(nofrp(r0))]ratrlex(nofrp(r0),ndofrp(r0),innclass(ndofrp(r0)),t)):irratrl(nofrp(r0))
+r@natrl:=some"l"(dif,[x:dif]and(inn(x,class(r)),natd(x))):'prop'
+a0ir@[n:natd(a0)]
++*ivr2
+n@t25:=andi(inn(a0,class(r)),natd(a0),a0ir,n):and(inn(a0,class(r)),natd(a0))
+-ivr2
+n@natrlin:=somei(dif,[x:dif]and(inn(x,class(r)),natd(x)),a0,t25".ivr2"):natrl(r)
+a0ir@[n:natrl(r)]
++*ivr2
+n@[a:dif][b:and(inn(a,class(r)),natd(a))]
+t26:=ande1(inn(a,class(r)),natd(a),b):inn(a,class(r))
+t27:=ande2(inn(a,class(r)),natd(a),b):natd(a)
+t28:=eqnatd(a,a0,isex(r,r,a,a0,t26,a0ir,refis(real,r)),t27):natd(a0)
+-ivr2
+n@natrlex:=someapp(dif,[x:dif]and(inn(x,class(r)),natd(x)),n,natd(a0),[x:dif][t:and(inn(x,class(r)),natd(x))]t28".ivr2"(x,t)):natd(a0)
++*ivr2
+a0ir@[n:natrl(r)]
+t29:=natposd(a0,natrlex(n)):posd(a0)
+t30:=posin(t29):pos(r)
+-ivr2
+r@[n:natrl(r)]
+natpos:=realapp1(pos(r),[x:dif][t:inn(x,class(r))]t30".ivr2"(x,t,n)):pos(r)
+@[x:nat]
+rlofnt:=realof(pdofnt(x)):real
+natrli:=natrlin(rlofnt(x),pdofnt(x),innclass(pdofnt(x)),natdi(x)):natrl(rlofnt(x))
+[y:nat][i:is"n"(x,y)]
+isnterl:=isf(nat,real,[u:nat]rlofnt(u),x,y,i):is(rlofnt(x),rlofnt(y))
+y@[i:is(rlofnt(x),rlofnt(y))]
+isntirl:=isntirp(x,y,isrpip(rpofnt(x),rpofnt(y),i)):is"n"(x,y)
++*ivr2
+@t31:=[x:nat][y:nat][t:is(rlofnt(x),rlofnt(y))]isntirl(x,y,t):injective(nat,real,[x:nat]rlofnt(x))
+a0ir@[n:natrl(r)]
+t32:=natposd(a0,natrlex(n)):posd(a0)
+ap:=rpofpd(a0,t32):cut
+t33:=natderp(a0,natrlex(n)):natrp(ap)
+x0:=ntofrp(ap,t33):nat
+t34:=isrpepd(ap,rpofnt(x0),isrpnt1(ap,t33)):eq"rp"(pdofrp(ap),pdofnt(x0))
+t35:=treq"rp"(a0,pdofrp(ap),pdofnt(x0),eqpdrp1(a0,t32),t34):eq"rp"(a0,pdofnt(x0))
+t36:=isin(r,rlofnt(x0),a0,pdofnt(x0),a0ir,innclass(pdofnt(x0)),t35):is(r,rlofnt(x0))
+t37:=somei(nat,[x:nat]is(r,rlofnt(x)),x0,t36):image(nat,real,[x:nat]rlofnt(x),r)
+-ivr2
+r@[n:natrl(r)]
+natimage:=realapp1(image(nat,real,[x:nat]rlofnt(x),r),[x:dif][t:inn(x,class(r))]t37".ivr2"(x,t,n)):image(nat,real,[x:nat]rlofnt(x),r)
+r@[i:image(nat,real,[x:nat]rlofnt(x),r)]
++*ivr2
+i"r"@[x:nat][j:is(r,rlofnt(x))]
+t38:=isp1(real,[u:real]natrl(u),rlofnt(x),r,natrli(x),j):natrl(r)
+-ivr2
+i@imagenat:=someapp(nat,[u:nat]is(r,rlofnt(u)),i,natrl(r),[u:nat][v:is(r,rlofnt(u))]t38".ivr2"(u,v)):natrl(r)
+r@[n:natrl(r)]
+ntofrl:=soft(nat,real,[x:nat]rlofnt(x),t31".ivr2",r,natimage(r,n)):nat
+@[r1:real][n:natrl(r1)][s1:real][m:natrl(s1)][i:is(r1,s1)]
+isrlent:=isinv(nat,real,[x:nat]rlofnt(x),t31".ivr2",r1,natimage(r1,n),s1,natimage(s1,m),i):is"n"(ntofrl(r1,n),ntofrl(s1,m))
+m@[i:is"n"(ntofrl(r1,n),ntofrl(s1,m))]
+isrlint:=isinve(nat,real,[x:nat]rlofnt(x),t31".ivr2",r1,natimage(r1,n),s1,natimage(s1,m),i):is(r1,s1)
+r@[n:natrl(r)]
+isrlnt1:=ists1"e"(nat,real,[x:nat]rlofnt(x),t31".ivr2",r,natimage(r,n)):is(r,rlofnt(ntofrl(r,n)))
+isrlnt2:=symis(real,r,rlofnt(ntofrl(r,n)),isrlnt1):is(rlofnt(ntofrl(r,n)),r)
+@[x:nat]
++*ivr2
+x"r"@xn:=soft(nat,real,[u:nat]rlofnt(u),t31,rlofnt(x),imagei(nat,real,[u:nat]rlofnt(u),x)):nat
+t39:=isinv(nat,real,[u:nat]rlofnt(u),t31,rlofnt(x),imagei(nat,real,[u:nat]rlofnt(u),x),rlofnt(x),natimage(rlofnt(x),natrli(x)),refis(real,rlofnt(x))):is"n"(xn,ntofrl(rlofnt(x),natrli(x)))
+-ivr2
+x@isntrl1:=tris(nat,x,xn".ivr2",ntofrl(rlofnt(x),natrli(x)),isst1(nat,real,[u:nat]rlofnt(u),t31".ivr2",x),t39".ivr2"):is"n"(x,ntofrl(rlofnt(x),natrli(x)))
+isntrl2:=symis(nat,x,ntofrl(rlofnt(x),natrli(x)),isntrl1):is"n"(ntofrl(rlofnt(x),natrli(x)),x)
+r@intrl:=some"l"(dif,[x:dif]and(inn(x,class(r)),intd(x))):'prop'
+a0ir@[i:intd(a0)]
++*ivr2
+i@t40:=andi(inn(a0,class(r)),intd(a0),a0ir,i):and(inn(a0,class(r)),intd(a0))
+-ivr2
+i@intrlin:=somei(dif,[x:dif]and(inn(x,class(r)),intd(x)),a0,t40".ivr2"):intrl(r)
+a0ir@[i:intrl(r)]
++*ivr2
+i@[a:dif][b:and(inn(a,class(r)),intd(a))]
+t41:=ande1(inn(a,class(r)),intd(a),b):inn(a,class(r))
+t42:=ande2(inn(a,class(r)),intd(a),b):intd(a)
+t43:=eqintd(a,a0,isex(r,r,a,a0,t41,a0ir,refis(real,r)),t42):intd(a0)
+-ivr2
+i@intrlex:=someapp(dif,[x:dif]and(inn(x,class(r)),intd(x)),i,intd(a0),[x:dif][t:and(inn(x,class(r)),intd(x))]t43".ivr2"(x,t)):intd(a0)
++*ivr2
+a0ir@[n:natrl(r)]
+t44:=natintd(a0,natrlex(n)):intd(a0)
+t45:=intrlin(t44):intrl(r)
+-ivr2
+r@[n:natrl(r)]
+natintrl:=realapp1(intrl(r),[x:dif][t:inn(x,class(r))]t45".ivr2"(x,t,n)):intrl(r)
++*ivr2
+a0ir@[p:pos(r)][i:intrl(r)]
+t46:=posintnatd(a0,posex(p),intrlex(i)):natd(a0)
+t47:=natrlin(t46):natrl(r)
+-ivr2
+r@[p:pos(r)][i:intrl(r)]
+posintnatrl:=realapp1(natrl(r),[x:dif][t:inn(x,class(r))]t47".ivr2"(x,t,p,i)):natrl(r)
++*ivr2
+a0ir@[i2:is(r,0)]
+t48:=intdi0(a0,0ex(i2)):intd(a0)
+t49:=intrlin(t48):intrl(r)
+-ivr2
+r@[i:is(r,0)]
+intrli0:=realapp1(intrl(r),[x:dif][t:inn(x,class(r))]t49".ivr2"(x,t,i)):intrl(r)
+r0@[n:natrp(r0)]
+remark6:=intrlin(pofrp(r0),pdofrp(r0),innclass(pdofrp(r0)),remark6"rp"(r0,n)):intrl(pofrp(r0))
+remark7:=intrlin(nofrp(r0),ndofrp(r0),innclass(ndofrp(r0)),remark7"rp"(r0,n)):intrl(nofrp(r0))
++2r174
+a0ir@[i:intrl(r)]
+t1:=satzd174(a0,intrlex(i)):ratd(a0)
+t2:=ratrlin(t1):ratrl(r)
+-2r174
+r@[i:intrl(r)]
+satz174:=realapp1(ratrl(r),[x:dif][t:inn(x,class(r))]t2".2r174"(x,t,i)):ratrl(r)
+@plusdr:=[x:dif][y:dif]realof(pd(x,y)):[x:dif][y:dif]real
++ivr3
+[a:dif][b:dif][c:dif][d:dif][e:eq"rp"(a,b)][f:eq"rp"(c,d)]
+t1:=isin(realof(pd(a,c)),realof(pd(b,d)),pd(a,c),pd(b,d),innclass(pd(a,c)),innclass(pd(b,d)),eqpd12(a,b,c,d,e,f)):is(<c><a>plusdr,<d><b>plusdr)
+-ivr3
+fplusdr:=[x:dif][y:dif][z:dif][v:dif][t:<y><x>eq][u:<v><z>eq]t1".ivr3"(x,y,z,v,t,u):fixf2(real,plusdr)
+s@pl:=indreal2(real,plusdr,fplusdr,r,s):real
++*ivr3
+b1is@t2:=isindreal2(real,plusdr,fplusdr,r,s,a1,b1,a1ir,b1is):is(realof(pd(a1,b1)),pl(r,s))
+-ivr3
+b1is@picp:=isp(real,[x:real]inn(pd(a1,b1),class(x)),realof(pd(a1,b1)),pl(r,s),innclass(pd(a1,b1)),t2".ivr3"):inn(pd(a1,b1),class(pl(r,s)))
+t@[i:is(r,s)]
+ispl1:=isf(real,real,[x:real]pl(x,t),r,s,i):is(pl(r,t),pl(s,t))
+ispl2:=isf(real,real,[x:real]pl(t,x),r,s,i):is(pl(t,r),pl(t,s))
+u@[i:is(r,s)][j:is(t,u)]
+ispl12:=tris(real,pl(r,t),pl(s,t),pl(s,u),ispl1(i),ispl2(t,u,s,j)):is(pl(r,t),pl(s,u))
++3r175
+b1is@t1:=satzd175(a1,b1):eq"rp"(pd(a1,b1),pd(b1,a1))
+t2:=isin(pl(r,s),pl(s,r),pd(a1,b1),pd(b1,a1),picp,picp(s,r,b1,a1,b1is,a1ir),t1):is(pl(r,s),pl(s,r))
+-3r175
+s@satz175:=realapp2(is(pl(r,s),pl(s,r)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t2".3r175"(x,y,t,u)):is(pl(r,s),pl(s,r))
+compl:=satz175:is(pl(r,s),pl(s,r))
++*ivr3
+b1is@[i:is(r,0)]
+t3:=pd01(a1,b1,0ex(r,a1,a1ir,i)):eq"rp"(pd(a1,b1),b1)
+t4:=isin(pl(r,s),s,pd(a1,b1),b1,picp,b1is,t3):is(pl(r,s),s)
+-ivr3
+s@[i:is(r,0)]
+pl01:=realapp2(is(pl(r,s),s),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t4".ivr3"(x,y,t,u,i)):is(pl(r,s),s)
+s@[i:is(s,0)]
+pl02:=tris(real,pl(r,s),pl(s,r),r,compl,pl01(s,r,i)):is(pl(r,s),r)
++*ivr3
+b1is@[p:pos(r)][q:pos(s)]
+t5:=ppd(a1,b1,posex(r,a1,a1ir,p),posex(s,b1,b1is,q)):posd(pd(a1,b1))
+t6:=posin(pl(r,s),pd(a1,b1),picp,t5):pos(pl(r,s))
+-ivr3
+s@[p:pos(r)][q:pos(s)]
+pospl:=realapp2(pos(pl(r,s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t6".ivr3"(x,y,t,u,p,q)):pos(pl(r,s))
++*ivr3
+b1is@[n:neg(r)][o:neg(s)]
+t7:=npd(a1,b1,negex(r,a1,a1ir,n),negex(s,b1,b1is,o)):negd(pd(a1,b1))
+t8:=negin(pl(r,s),pd(a1,b1),picp,t7):neg(pl(r,s))
+-ivr3
+s@[n:neg(r)][o:neg(s)]
+negpl:=realapp2(neg(pl(r,s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t8".ivr3"(x,y,t,u,n,o)):neg(pl(r,s))
+@m0dr:=[x:dif]realof(m0d(x)):[x:dif]real
++*ivr3
+@[a:dif][b:dif][e:eq"rp"(a,b)]
+t5a:=isin(realof(m0d(a)),realof(m0d(b)),m0d(a),m0d(b),innclass(m0d(a)),innclass(m0d(b)),eqm0d(a,b,e)):is(<a>m0dr,<b>m0dr)
+-ivr3
+@fm0dr:=[x:dif][y:dif][t:<y><x>eq]t5a".ivr3"(x,y,t):fixf(real,m0dr)
+r@m0:=indreal(real,m0dr,fm0dr,r):real
++*ivr3
+a0ir@t6a:=isindreal(real,m0dr,fm0dr,r,a0,a0ir):is(realof(m0d(a0)),m0(r))
+-ivr3
+a0ir@micm0:=isp(real,[x:real]inn(m0d(a0),class(x)),realof(m0d(a0)),m0(r),innclass(m0d(a0)),t6a".ivr3"):inn(m0d(a0),class(m0(r)))
+s@[i:is(r,s)]
+ism0:=isf(real,real,[x:real]m0(x),r,s,i):is(m0(r),m0(s))
++*ivr3
+a0ir@[n:neg(r)]
+t7a:=absnd(a0,negex(n)):eq"rp"(absd(a0),m0d(a0))
+t8a:=isin(abs(r),m0(r),absd(a0),m0d(a0),aica,micm0,t7a):is(abs(r),m0(r))
+-ivr3
+r@[n:neg(r)]
+absn:=realapp1(is(abs(r),m0(r)),[x:dif][t:inn(x,class(r))]t8a".ivr3"(x,t,n)):is(abs(r),m0(r))
++*ivr3
+a0ir@[nn:not(neg(r))]
+t9:=absnnd(a0,th3"l.imp"(negd(a0),neg(r),nn,[t:negd(a0)]negin(t))):eq"rp"(absd(a0),a0)
+t10:=isin(abs(r),r,absd(a0),a0,aica,a0ir,t9):is(abs(r),r)
+-ivr3
+r@[nn:not(neg(r))]
+absnn:=realapp1(is(abs(r),r),[x:dif][t:inn(x,class(r))]t10".ivr3"(x,t,nn)):is(abs(r),r)
+r@[p:pos(r)]
+absp:=absnn(r,pnotn(r,p)):is(abs(r),r)
+r@[i:is(r,0)]
+abs0:=tris(real,abs(r),r,0,absnn(r,0notn(r,i)),i):is(abs(r),0)
++3r176
+a0ir@[p:pos(r)]
+t1:=satzd176a(a0,posex(p)):negd(m0d(a0))
+t2:=negin(m0(r),m0d(a0),micm0,t1):neg(m0(r))
+-3r176
+r@[p:pos(r)]
+satz176a:=realapp1(neg(m0(r)),[x:dif][t:inn(x,class(r))]t2".3r176"(x,t,p)):neg(m0(r))
++*3r176
+a0ir@[i:is(r,0)]
+t3:=satzd176b(a0,0ex(i)):zero(m0d(a0))
+t4:=0in(m0(r),m0d(a0),micm0,t3):is(m0(r),0)
+-3r176
+r@[i:is(r,0)]
+satz176b:=realapp1(is(m0(r),0),[x:dif][t:inn(x,class(r))]t4".3r176"(x,t,i)):is(m0(r),0)
++*3r176
+a0ir@[n:neg(r)]
+t5:=satzd176c(a0,negex(n)):posd(m0d(a0))
+t6:=posin(m0(r),m0d(a0),micm0,t5):pos(m0(r))
+-3r176
+r@[n:neg(r)]
+satz176c:=realapp1(pos(m0(r)),[x:dif][t:inn(x,class(r))]t6".3r176"(x,t,n)):pos(m0(r))
++*3r176
+a0ir@[n:neg(m0(r))]
+t7:=satzd176d(a0,negex(m0(r),m0d(a0),micm0,n)):posd(a0)
+t8:=posin(t7):pos(r)
+-3r176
+r@[n:neg(m0(r))]
+satz176d:=realapp1(pos(r),[x:dif][t:inn(x,class(r))]t8".3r176"(x,t,n)):pos(r)
++*3r176
+a0ir@[i:is(m0(r),0)]
+t9:=satzd176e(a0,0ex(m0(r),m0d(a0),micm0,i)):zero(a0)
+t10:=0in(t9):is(r,0)
+-3r176
+r@[i:is(m0(r),0)]
+satz176e:=realapp1(is(r,0),[x:dif][t:inn(x,class(r))]t10".3r176"(x,t,i)):is(r,0)
++*3r176
+a0ir@[p:pos(m0(r))]
+t11:=satzd176f(a0,posex(m0(r),m0d(a0),micm0,p)):negd(a0)
+t12:=negin(t11):neg(r)
+-3r176
+r@[p:pos(m0(r))]
+satz176f:=realapp1(neg(r),[x:dif][t:inn(x,class(r))]t12".3r176"(x,t,p)):neg(r)
++3r177
+a0ir@t1:=isin(m0(m0(r)),r,m0d(m0d(a0)),a0,micm0(m0(r),m0d(a0),micm0),a0ir,satzd177(a0)):is(m0(m0(r)),r)
+-3r177
+r@satz177:=realapp1(is(m0(m0(r)),r),[x:dif][t:inn(x,class(r))]t1".3r177"(x,t)):is(m0(m0(r)),r)
+satz177a:=symis(real,m0(m0(r)),r,satz177):is(r,m0(m0(r)))
+s@[i:is(r,m0(s))]
+satz177b:=tris(real,m0(r),m0(m0(s)),s,ism0(r,m0(s),i),satz177(s)):is(m0(r),s)
+satz177c:=symis(real,m0(r),s,satz177b):is(s,m0(r))
+s@[i:is(m0(r),s)]
+satz177d:=satz177c(s,r,symis(real,m0(r),s,i)):is(r,m0(s))
+satz177e:=symis(real,r,m0(s),satz177d):is(m0(s),r)
++3r178
+a0ir@t1:=isin(abs(m0(r)),abs(r),absd(m0d(a0)),absd(a0),aica(m0(r),m0d(a0),micm0),aica,satzd178(a0)):is(abs(m0(r)),abs(r))
+-3r178
+r@satz178:=realapp1(is(abs(m0(r)),abs(r)),[x:dif][t:inn(x,class(r))]t1".3r178"(x,t)):is(abs(m0(r)),abs(r))
+satz178a:=symis(real,abs(m0(r)),abs(r),satz178):is(abs(r),abs(m0(r)))
++3r179
+a0ir@t1:=0in(pl(r,m0(r)),pd(a0,m0d(a0)),picp(r,m0(r),a0,m0d(a0),a0ir,micm0),satzd179(a0)):is(pl(r,m0(r)),0)
+-3r179
+satz179:=realapp1(is(pl(r,m0(r)),0),[x:dif][t:inn(x,class(r))]t1".3r179"(x,t)):is(pl(r,m0(r)),0)
+satz179a:=tris(real,pl(m0(r),r),pl(r,m0(r)),0,compl(m0(r),r),satz179):is(pl(m0(r),r),0)
++3r180
+b1is@t1:=isin(m0(pl(r,s)),pl(m0(r),m0(s)),m0d(pd(a1,b1)),pd(m0d(a1),m0d(b1)),micm0(pl(r,s),pd(a1,b1),picp),picp(m0(r),m0(s),m0d(a1),m0d(b1),micm0(r,a1,a1ir),micm0(s,b1,b1is)),satzd180(a1,b1)):is(m0(pl(r,s)),pl(m0(r),m0(s)))
+-3r180
+s@satz180:=realapp2(is(m0(pl(r,s)),pl(m0(r),m0(s))),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t1".3r180"(x,y,t,u)):is(m0(pl(r,s)),pl(m0(r),m0(s)))
+satz180a:=symis(real,m0(pl(r,s)),pl(m0(r),m0(s)),satz180):is(pl(m0(r),m0(s)),m0(pl(r,s)))
+mn:=pl(r,m0(s)):real
+b1is@micmn:=picp(r,m0(s),a1,m0d(b1),a1ir,micm0(s,b1,b1is)):inn(md(a1,b1),class(mn(r,s)))
+t@[i:is(r,s)]
+ismn1:=ispl1(r,s,m0(t),i):is(mn(r,t),mn(s,t))
+ismn2:=ispl2(m0(r),m0(s),t,ism0(r,s,i)):is(mn(t,r),mn(t,s))
+u@[i:is(r,s)][j:is(t,u)]
+ismn12:=ispl12(r,s,m0(t),m0(u),i,ism0(t,u,j)):is(mn(r,t),mn(s,u))
+s@satz181:=tr3is(real,m0(mn(r,s)),pl(m0(r),m0(m0(s))),pl(m0(r),s),mn(s,r),satz180(r,m0(s)),ispl2(m0(m0(s)),s,m0(r),satz177(s)),compl(m0(r),s)):is(m0(mn(r,s)),mn(s,r))
+satz181a:=symis(real,m0(mn(s,r)),mn(r,s),satz181(s,r)):is(mn(r,s),m0(mn(s,r)))
++3r182
+b1is@[p:pos(mn(r,s))]
+t1:=satzd182a(a1,b1,posex(mn(r,s),md(a1,b1),micmn,p)):mored(a1,b1)
+t2:=morein(t1):more(r,s)
+-3r182
+[p:pos(mn(r,s))]
+satz182a:=realapp2(more(r,s),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t2".3r182"(x,y,t,u,p)):more(r,s)
++*3r182
+b1is@[i:is(mn(r,s),0)]
+t3:=satzd182b(a1,b1,0ex(mn(r,s),md(a1,b1),micmn,i)):eq"rp"(a1,b1)
+t4:=isin(t3):is(r,s)
+-3r182
+s@[i:is(mn(r,s),0)]
+satz182b:=realapp2(is(r,s),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t4".3r182"(x,y,t,u,i)):is(r,s)
++*3r182
+b1is@[n:neg(mn(r,s))]
+t5:=satzd182c(a1,b1,negex(mn(r,s),md(a1,b1),micmn,n)):lessd(a1,b1)
+t6:=lessin(t5):less(r,s)
+-3r182
+s@[n:neg(mn(r,s))]
+satz182c:=realapp2(less(r,s),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t6".3r182"(x,y,t,u,n)):less(r,s)
++*3r182
+b1is@[m:more(r,s)]
+t7:=satzd182d(a1,b1,moreex(m)):posd(md(a1,b1))
+t8:=posin(mn(r,s),md(a1,b1),micmn,t7):pos(mn(r,s))
+-3r182
+s@[m:more(r,s)]
+satz182d:=realapp2(pos(mn(r,s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t8".3r182"(x,y,t,u,m)):pos(mn(r,s))
++*3r182
+b1is@[i:is(r,s)]
+t9:=satzd182e(a1,b1,isex(i)):zero(md(a1,b1))
+t10:=0in(mn(r,s),md(a1,b1),micmn,t9):is(mn(r,s),0)
+-3r182
+s@[i:is(r,s)]
+satz182e:=realapp2(is(mn(r,s),0),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t10".3r182"(x,y,t,u,i)):is(mn(r,s),0)
++*3r182
+b1is@[l:less(r,s)]
+t11:=satzd182f(a1,b1,lessex(l)):negd(md(a1,b1))
+t12:=negin(mn(r,s),md(a1,b1),micmn,t11):neg(mn(r,s))
+-3r182
+s@[l:less(r,s)]
+satz182f:=realapp2(neg(mn(r,s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t12".3r182"(x,y,t,u,l)):neg(mn(r,s))
++3r183
+b1is@[m:more(r,s)]
+t1:=satzd183a(a1,b1,moreex(m)):lessd(m0d(a1),m0d(b1))
+t2:=lessin(m0(r),m0(s),m0d(a1),m0d(b1),micm0(r,a1,a1ir),micm0(s,b1,b1is),t1):less(m0(r),m0(s))
+-3r183
+s@[m:more(r,s)]
+satz183a:=realapp2(less(m0(r),m0(s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t2".3r183"(x,y,t,u,m)):less(m0(r),m0(s))
+s@[i:is(r,s)]
+satz183b:=ism0(r,s,i):is(m0(r),m0(s))
++*3r183
+b1is@[l:less(r,s)]
+t3:=satzd183c(a1,b1,lessex(l)):mored(m0d(a1),m0d(b1))
+t4:=morein(m0(r),m0(s),m0d(a1),m0d(b1),micm0(r,a1,a1ir),micm0(s,b1,b1is),t3):more(m0(r),m0(s))
+-3r183
+s@[l:less(r,s)]
+satz183c:=realapp2(more(m0(r),m0(s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t4".3r183"(x,y,t,u,l)):more(m0(r),m0(s))
+s@[l:less(m0(r),m0(s))]
+satz183d:=ismore12(m0(m0(r)),r,m0(m0(s)),s,satz177(r),satz177(s),satz183c(m0(r),m0(s),l)):more(r,s)
+s@[i:is(m0(r),m0(s))]
+satz183e:=tr3is(real,r,m0(m0(r)),m0(m0(s)),s,satz177a(r),ism0(m0(r),m0(s),i),satz177(s)):is(r,s)
+s@[m:more(m0(r),m0(s))]
+satz183f:=isless12(m0(m0(r)),r,m0(m0(s)),s,satz177(r),satz177(s),satz183a(m0(r),m0(s),m)):less(r,s)
++3r184
+t@prop1:=and3(pos(s),pos(t),is(r,mn(s,t))):'prop'
+s@prop2:=some([x:real]prop1(x)):'prop'
+r@prop3:=some([x:real]prop2(x)):'prop'
+a0ir@[a:dif][b:dif]
+prop1d:=and3(posd(a),posd(b),eq"rp"(a0,md(a,b))):'prop'
+a@prop2d:=some"l"(dif,[x:dif]prop1d(x)):'prop'
+[p2:prop2d(a)][b:dif][p1:prop1d(a,b)]
+t1:=and3e1(posd(a),posd(b),eq"rp"(a0,md(a,b)),p1):posd(a)
+t2:=and3e2(posd(a),posd(b),eq"rp"(a0,md(a,b)),p1):posd(b)
+t3:=and3e3(posd(a),posd(b),eq"rp"(a0,md(a,b)),p1):eq"rp"(a0,md(a,b))
+p2@ra:=realof(a):real
+p1@rb:=realof(b):real
+t4:=innclass(a):inn(a,class(ra))
+t5:=innclass(b):inn(b,class(rb))
+t6:=isin(r,mn(ra,rb),a0,md(a,b),a0ir,micmn(ra,rb,a,b,t4,t5),t3):is(r,mn(ra,rb))
+t7:=and3i(pos(ra),pos(rb),is(r,mn(ra,rb)),posin(ra,a,t4,t1),posin(rb,b,t5,t2),t6):prop1(ra,rb)
+t8:=somei(real,[x:real]prop1(ra,x),rb,t7):prop2(ra)
+p2@t9:=someapp(dif,[x:dif]prop1d(a,x),p2,prop2(ra),[x:dif][t:prop1d(a,x)]t8(x,t)):prop2(ra)
+t10:=somei(real,[x:real]prop2(x),ra,t9):prop3
+a0ir@t11:=someapp(dif,[x:dif]prop2d(x),satzd184(a0),prop3,[x:dif][t:prop2d(x)]t10(x,t)):prop3
+-3r184
+r@satz184:=realapp1(prop3".3r184",[x:dif][t:inn(x,class(r))]t11".3r184"(x,t)):some([x:real]some([y:real]and3(pos(x),pos(y),is(r,mn(x,y)))))
+u@[a3:dif][b3:dif][c3:dif][d3:dif][a3ir:inn(a3,class(r))][b3is:inn(b3,class(s))][c3it:inn(c3,class(t))][d3iu:inn(d3,class(u))]
++3r185
+t1:=satzd185(a3,b3,c3,d3):eq"rp"(pd(md(a3,b3),md(c3,d3)),md(pd(a3,c3),pd(b3,d3)))
+t2:=isin(pl(mn(r,s),mn(t,u)),mn(pl(r,t),pl(s,u)),pd(md(a3,b3),md(c3,d3)),md(pd(a3,c3),pd(b3,d3)),picp(mn(r,s),mn(t,u),md(a3,b3),md(c3,d3),micmn(r,s,a3,b3,a3ir,b3is),micmn(t,u,c3,d3,c3it,d3iu)),micmn(pl(r,t),pl(s,u),pd(a3,c3),pd(b3,d3),picp(r,t,a3,c3,a3ir,c3it),picp(s,u,b3,d3,b3is,d3iu)),t1):is(pl(mn(r,s),mn(t,u)),mn(pl(r,t),pl(s,u)))
+-3r185
+u@satz185:=realapp4(is(pl(mn(r,s),mn(t,u)),mn(pl(r,t),pl(s,u))),[x:dif][y:dif][z:dif][v:dif][xi:inn(x,class(r))][yi:inn(y,class(s))][zi:inn(z,class(t))][vi:inn(v,class(u))]t2".3r185"(x,y,z,v,xi,yi,zi,vi)):is(pl(mn(r,s),mn(t,u)),mn(pl(r,t),pl(s,u)))
++3r186
+c2it@t1:=satzd186(a2,b2,c2):eq"rp"(pd(pd(a2,b2),c2),pd(a2,pd(b2,c2)))
+t2:=isin(pl(pl(r,s),t),pl(r,pl(s,t)),pd(pd(a2,b2),c2),pd(a2,pd(b2,c2)),picp(pl(r,s),t,pd(a2,b2),c2,picp(r,s,a2,b2,a2ir,b2is),c2it),picp(r,pl(s,t),a2,pd(b2,c2),a2ir,picp(s,t,b2,c2,b2is,c2it)),t1):is(pl(pl(r,s),t),pl(r,pl(s,t)))
+-3r186
+t@satz186:=realapp3(is(pl(pl(r,s),t),pl(r,pl(s,t))),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t2".3r186"(x,y,z,u,v,w)):is(pl(pl(r,s),t),pl(r,pl(s,t)))
+asspl1:=satz186:is(pl(pl(r,s),t),pl(r,pl(s,t)))
+asspl2:=symis(real,pl(pl(r,s),t),pl(r,pl(s,t)),satz186):is(pl(r,pl(s,t)),pl(pl(r,s),t))
+s@plmn:=tris(real,pl(mn(r,s),s),pl(r,pl(m0(s),s)),r,asspl1(r,m0(s),s),pl02(r,pl(m0(s),s),satz179a(s))):is(pl(mn(r,s),s),r)
+mnpl:=tris(real,mn(pl(r,s),s),pl(r,pl(s,m0(s))),r,asspl1(r,s,m0(s)),pl02(r,pl(s,m0(s)),satz179(s))):is(mn(pl(r,s),s),r)
+satz187a:=tris(real,pl(s,mn(r,s)),pl(mn(r,s),s),r,compl(s,mn(r,s)),plmn):is(pl(s,mn(r,s)),r)
+satz187b:=somei(real,[x:real]is(pl(s,x),r),mn(r,s),satz187a):some([x:real]is(pl(s,x),r))
+[x:real][i:is(pl(s,x),r)]
+satz187c:=tris(real,mn(r,s),mn(pl(x,s),s),x,ismn1(r,pl(x,s),s,tris1(real,r,pl(x,s),pl(s,x),i,compl(s,x))),mnpl(x,s)):is(mn(r,s),x)
+satz187d:=symis(real,mn(r,s),x,satz187c):is(x,mn(r,s))
+x@[i:is(pl(x,s),r)]
+satz187e:=satz187c(tris(real,pl(s,x),pl(x,s),r,compl(s,x),i)):is(mn(r,s),x)
+satz187f:=symis(real,mn(r,s),x,satz187e):is(x,mn(r,s))
++3r187
+s@[x:real][y:real][i:is(pl(s,x),r)][j:is(pl(s,y),r)]
+t1:=tris1(real,x,y,mn(r,s),satz187c(x,i),satz187c(y,j)):is(x,y)
+s@t2:=[x:real][y:real][t:is(pl(s,x),r)][u:is(pl(s,y),r)]t1(x,y,t,u):amone(real,[x:real]is(pl(s,x),r))
+-3r187
+s@satz187:=onei(real,[x:real]is(pl(s,x),r),t2".3r187",satz187b):one([x:real]is(pl(s,x),r))
++3r188
+c2it@[m:more(pl(r,t),pl(s,t))]
+t1:=satzd188a(a2,b2,c2,moreex(pl(r,t),pl(s,t),pd(a2,c2),pd(b2,c2),picp(r,t,a2,c2,a2ir,c2it),picp(s,t,b2,c2,b2is,c2it),m)):mored(a2,b2)
+t2:=morein(r,s,a2,b2,a2ir,b2is,t1):more(r,s)
+-3r188
+t@[m:more(pl(r,t),pl(s,t))]
+satz188a:=realapp3(more(r,s),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t2".3r188"(x,y,z,u,v,w,m)):more(r,s)
++*3r188
+c2it@[i:is(pl(r,t),pl(s,t))]
+t3:=satzd188b(a2,b2,c2,isex(pl(r,t),pl(s,t),pd(a2,c2),pd(b2,c2),picp(r,t,a2,c2,a2ir,c2it),picp(s,t,b2,c2,b2is,c2it),i)):eq"rp"(a2,b2)
+t4:=isin(r,s,a2,b2,a2ir,b2is,t3):is(r,s)
+-3r188
+t@[i:is(pl(r,t),pl(s,t))]
+satz188b:=realapp3(is(r,s),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t4".3r188"(x,y,z,u,v,w,i)):is(r,s)
++*3r188
+c2it@[l:less(pl(r,t),pl(s,t))]
+t5:=satzd188c(a2,b2,c2,lessex(pl(r,t),pl(s,t),pd(a2,c2),pd(b2,c2),picp(r,t,a2,c2,a2ir,c2it),picp(s,t,b2,c2,b2is,c2it),l)):lessd(a2,b2)
+t6:=lessin(r,s,a2,b2,a2ir,b2is,t5):less(r,s)
+-3r188
+t@[l:less(pl(r,t),pl(s,t))]
+satz188c:=realapp3(less(r,s),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t6".3r188"(x,y,z,u,v,w,l)):less(r,s)
++*3r188
+c2it@[m:more(r,s)]
+t7:=satzd188d(a2,b2,c2,moreex(r,s,a2,b2,a2ir,b2is,m)):mored(pd(a2,c2),pd(b2,c2))
+t8:=morein(pl(r,t),pl(s,t),pd(a2,c2),pd(b2,c2),picp(r,t,a2,c2,a2ir,c2it),picp(s,t,b2,c2,b2is,c2it),t7):more(pl(r,t),pl(s,t))
+-3r188
+t@[m:more(r,s)]
+satz188d:=realapp3(more(pl(r,t),pl(s,t)),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t8".3r188"(x,y,z,u,v,w,m)):more(pl(r,t),pl(s,t))
+t@[i:is(r,s)]
+satz188e:=ispl1(r,s,t,i):is(pl(r,t),pl(s,t))
++*3r188
+c2it@[l:less(r,s)]
+t9:=satzd188f(a2,b2,c2,lessex(r,s,a2,b2,a2ir,b2is,l)):lessd(pd(a2,c2),pd(b2,c2))
+t10:=lessin(pl(r,t),pl(s,t),pd(a2,c2),pd(b2,c2),picp(r,t,a2,c2,a2ir,c2it),picp(s,t,b2,c2,b2is,c2it),t9):less(pl(r,t),pl(s,t))
+-3r188
+t@[l:less(r,s)]
+satz188f:=realapp3(less(pl(r,t),pl(s,t)),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t10".3r188"(x,y,z,u,v,w,l)):less(pl(r,t),pl(s,t))
+t@[m:more(pl(t,r),pl(t,s))]
+satz188g:=satz188a(ismore12(pl(t,r),pl(r,t),pl(t,s),pl(s,t),compl(t,r),compl(t,s),m)):more(r,s)
+t@[i:is(pl(t,r),pl(t,s))]
+satz188h:=satz188b(tr3is(real,pl(r,t),pl(t,r),pl(t,s),pl(s,t),compl(r,t),i,compl(t,s))):is(r,s)
+t@[l:less(pl(t,r),pl(t,s))]
+satz188j:=satz188c(isless12(pl(t,r),pl(r,t),pl(t,s),pl(s,t),compl(t,r),compl(t,s),l)):less(r,s)
+t@[m:more(r,s)]
+satz188k:=ismore12(pl(r,t),pl(t,r),pl(s,t),pl(t,s),compl(r,t),compl(s,t),satz188d(m)):more(pl(t,r),pl(t,s))
+t@[i:is(r,s)]
+satz188l:=ispl2(r,s,t,i):is(pl(t,r),pl(t,s))
+t@[l:less(r,s)]
+satz188m:=isless12(pl(r,t),pl(t,r),pl(s,t),pl(t,s),compl(r,t),compl(s,t),satz188f(l)):less(pl(t,r),pl(t,s))
+u@[i:is(r,s)][m:more(t,u)]
+satz188n:=ismore2(pl(r,u),pl(s,u),pl(r,t),ispl1(r,s,u,i),satz188k(t,u,r,m)):more(pl(r,t),pl(s,u))
+satz188o:=ismore12(pl(r,t),pl(t,r),pl(s,u),pl(u,s),compl(r,t),compl(s,u),satz188n):more(pl(t,r),pl(u,s))
+i@[l:less(t,u)]
+satz188p:=isless2(pl(r,u),pl(s,u),pl(r,t),ispl1(r,s,u,i),satz188m(t,u,r,l)):less(pl(r,t),pl(s,u))
+satz188q:=isless12(pl(r,t),pl(t,r),pl(s,u),pl(u,s),compl(r,t),compl(s,u),satz188p):less(pl(t,r),pl(u,s))
+u@[m:more(r,s)][n:more(t,u)]
+satz189:=trmore(pl(r,t),pl(s,t),pl(s,u),satz188d(m),satz188k(t,u,s,n)):more(pl(r,t),pl(s,u))
+u@[l:less(r,s)][k:less(t,u)]
+satz189a:=lemma1(pl(s,u),pl(r,t),satz189(s,r,u,t,lemma2(r,s,l),lemma2(t,u,k))):less(pl(r,t),pl(s,u))
+u@[m:moreis(r,s)][n:more(t,u)]
+satz190a:=orapp(more(r,s),is(r,s),more(pl(r,t),pl(s,u)),m,[v:more(r,s)]satz189(v,n),[v:is(r,s)]satz188n(v,n)):more(pl(r,t),pl(s,u))
+u@[m:more(r,s)][n:moreis(t,u)]
+satz190b:=ismore12(pl(t,r),pl(r,t),pl(u,s),pl(s,u),compl(t,r),compl(u,s),satz190a(t,u,r,s,n,m)):more(pl(r,t),pl(s,u))
+u@[l:lessis(r,s)][k:less(t,u)]
+satz190c:=lemma1(pl(s,u),pl(r,t),satz190a(s,r,u,t,satz168b(l),lemma2(t,u,k))):less(pl(r,t),pl(s,u))
+u@[l:less(r,s)][k:lessis(t,u)]
+satz190d:=lemma1(pl(s,u),pl(r,t),satz190b(s,r,u,t,lemma2(l),satz168b(t,u,k))):less(pl(r,t),pl(s,u))
++3r191
+d3iu@[m:moreis(r,s)][n:moreis(t,u)]
+t1:=satzd191(a3,b3,c3,d3,moreisex(r,s,a3,b3,a3ir,b3is,m),moreisex(t,u,c3,d3,c3it,d3iu,n)):moreq(pd(a3,c3),pd(b3,d3))
+t2:=moreisin(pl(r,t),pl(s,u),pd(a3,c3),pd(b3,d3),picp(r,t,a3,c3,a3ir,c3it),picp(s,u,b3,d3,b3is,d3iu),t1):moreis(pl(r,t),pl(s,u))
+-3r191
+u@[m:moreis(r,s)][n:moreis(t,u)]
+satz191:=realapp4(moreis(pl(r,t),pl(s,u)),[x:dif][y:dif][z:dif][v:dif][xi:inn(x,class(r))][yi:inn(y,class(s))][zi:inn(z,class(t))][vi:inn(v,class(u))]t2".3r191"(x,y,z,v,xi,yi,zi,vi,m,n)):moreis(pl(r,t),pl(s,u))
+u@[l:lessis(r,s)][k:lessis(t,u)]
+satz191a:=satz168a(pl(s,u),pl(r,t),satz191(s,r,u,t,satz168b(l),satz168b(t,u,k))):lessis(pl(r,t),pl(s,u))
+@timesdr:=[x:dif][y:dif]realof(td(x,y)):[x:dif][y:dif]real
++ivr4
+[a:dif][b:dif][c:dif][d:dif][e:eq"rp"(a,b)][f:eq"rp"(c,d)]
+t1:=isin(realof(td(a,c)),realof(td(b,d)),td(a,c),td(b,d),innclass(td(a,c)),innclass(td(b,d)),eqtd12(a,b,c,d,e,f)):is(<c><a>timesdr,<d><b>timesdr)
+-ivr4
+ftimesdr:=[x:dif][y:dif][z:dif][v:dif][t:<y><x>eq][u:<v><z>eq]t1".ivr4"(x,y,z,v,t,u):fixf2(real,timesdr)
+s@ts:=indreal2(real,timesdr,ftimesdr,r,s):real
++*ivr4
+b1is@t2:=isindreal2(real,timesdr,ftimesdr,r,s,a1,b1,a1ir,b1is):is(realof(td(a1,b1)),ts(r,s))
+-ivr4
+b1is@tict:=isp(real,[x:real]inn(td(a1,b1),class(x)),realof(td(a1,b1)),ts(r,s),innclass(td(a1,b1)),t2".ivr4"):inn(td(a1,b1),class(ts(r,s)))
+t@[i:is(r,s)]
+ists1:=isf(real,real,[x:real]ts(x,t),r,s,i):is(ts(r,t),ts(s,t))
+ists2:=isf(real,real,[x:real]ts(t,x),r,s,i):is(ts(t,r),ts(t,s))
+u@[i:is(r,s)][j:is(t,u)]
+ists12:=tris(real,ts(r,t),ts(s,t),ts(s,u),ists1(i),ists2(t,u,s,j)):is(ts(r,t),ts(s,u))
++4r192
+b1is@[i:is(r,0)]
+t1:=satzd192a(a1,b1,0ex(r,a1,a1ir,i)):zero(td(a1,b1))
+t2:=0in(ts(r,s),td(a1,b1),tict,t1):is(ts(r,s),0)
+-4r192
+s@[i:is(r,0)]
+satz192a:=realapp2(is(ts(r,s),0),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t2".4r192"(x,y,t,u,i)):is(ts(r,s),0)
++*4r192
+b1is@[i:is(s,0)]
+t3:=satzd192b(a1,b1,0ex(s,b1,b1is,i)):zero(td(a1,b1))
+t4:=0in(ts(r,s),td(a1,b1),tict,t3):is(ts(r,s),0)
+-4r192
+s@[i:is(s,0)]
+satz192b:=realapp2(is(ts(r,s),0),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t4".4r192"(x,y,t,u,i)):is(ts(r,s),0)
++*4r192
+b1is@[i:is(ts(r,s),0)]
+t5:=satzd192c(a1,b1,0ex(ts(r,s),td(a1,b1),tict,i)):or(zero(a1),zero(b1))
+t6:=th9"l.or"(zero(a1),zero(b1),is(r,0),is(s,0),t5,[t:zero(a1)]0in(r,a1,a1ir,t),[t:zero(b1)]0in(s,b1,b1is,t)):or(is(r,0),is(s,0))
+-4r192
+s@[i:is(ts(r,s),0)]
+satz192c:=realapp2(or(is(r,0),is(s,0)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t6".4r192"(x,y,t,u,i)):or(is(r,0),is(s,0))
+s@[n:nis(r,0)][o:nis(s,0)]
+satz192d:=th3"l.imp"(is(ts(r,s),0),or(is(r,0),is(s,0)),th3"l.or"(is(r,0),is(s,0),n,o),[t:is(ts(r,s),0)]satz192c(t)):nis(ts(r,s),0)
+s@[i:is(r,0)]
+ts01:=satz192a(i):is(ts(r,s),0)
+s@[i:is(s,0)]
+ts02:=satz192b(i):is(ts(r,s),0)
++4r193
+b1is@t1:=satzd193(a1,b1):eq"rp"(absd(td(a1,b1)),td(absd(a1),absd(b1)))
+t2:=isin(abs(ts(r,s)),ts(abs(r),abs(s)),absd(td(a1,b1)),td(absd(a1),absd(b1)),aica(ts(r,s),td(a1,b1),tict),tict(abs(r),abs(s),absd(a1),absd(b1),aica(r,a1,a1ir),aica(s,b1,b1is)),t1):is(abs(ts(r,s)),ts(abs(r),abs(s)))
+-4r193
+s@satz193:=realapp2(is(abs(ts(r,s)),ts(abs(r),abs(s))),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t2".4r193"(x,y,t,u)):is(abs(ts(r,s)),ts(abs(r),abs(s)))
+satz193a:=symis(real,abs(ts(r,s)),ts(abs(r),abs(s)),satz193):is(ts(abs(r),abs(s)),abs(ts(r,s)))
++4r194
+b1is@t1:=satzd194(a1,b1):eq"rp"(td(a1,b1),td(b1,a1))
+t2:=isin(ts(r,s),ts(s,r),td(a1,b1),td(b1,a1),tict,tict(s,r,b1,a1,b1is,a1ir),t1):is(ts(r,s),ts(s,r))
+-4r194
+satz194:=realapp2(is(ts(r,s),ts(s,r)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t2".4r194"(x,y,t,u)):is(ts(r,s),ts(s,r))
+comts:=satz194:is(ts(r,s),ts(s,r))
+@1rl:=realof(1df):real
+pos1:=posin(1rl,1df,innclass(1df),posdirp(1rp)):pos(1rl)
+natrl1:=natrli(1):natrl(1rl)
+intrl1:=natintrl(1rl,natrl1):intrl(1rl)
++4r195
+a0ir@t1:=satzd195(a0):eq"rp"(td(a0,1df),a0)
+t2:=isin(ts(r,1rl),r,td(a0,1df),a0,tict(r,1rl,a0,1df,a0ir,innclass(1df)),a0ir,t1):is(ts(r,1rl),r)
+-4r195
+r@satz195:=realapp1(is(ts(r,1rl),r),[x:dif][t:inn(x,class(r))]t2".4r195"(x,t)):is(ts(r,1rl),r)
+satz195a:=symis(real,ts(r,1rl),r,satz195):is(r,ts(r,1rl))
+satz195b:=tris(real,ts(1rl,r),ts(r,1rl),r,comts(1rl,r),satz195):is(ts(1rl,r),r)
+satz195c:=symis(real,ts(1rl,r),r,satz195b):is(r,ts(1rl,r))
+s@[p:pos(r)][q:pos(s)]
+satz196a:=symis(real,ts(abs(r),abs(s)),ts(r,s),ists12(abs(r),r,abs(s),s,absp(r,p),absp(s,q))):is(ts(r,s),ts(abs(r),abs(s)))
++4r196
+b1is@[n:neg(r)][o:neg(s)]
+t1:=satzd196b(a1,b1,negex(r,a1,a1ir,n),negex(s,b1,b1is,o)):eq"rp"(td(a1,b1),td(absd(a1),absd(b1)))
+t2:=isin(ts(r,s),ts(abs(r),abs(s)),td(a1,b1),td(absd(a1),absd(b1)),tict,tict(abs(r),abs(s),absd(a1),absd(b1),aica(r,a1,a1ir),aica(s,b1,b1is)),t1):is(ts(r,s),ts(abs(r),abs(s)))
+-4r196
+s@[n:neg(r)][o:neg(s)]
+satz196b:=realapp2(is(ts(r,s),ts(abs(r),abs(s))),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t2".4r196"(x,y,t,u,n,o)):is(ts(r,s),ts(abs(r),abs(s)))
++*4r196
+b1is@[p:pos(r)][n:neg(s)]
+t1a:=satzd196c(a1,b1,posex(r,a1,a1ir,p),negex(s,b1,b1is,n)):eq"rp"(td(a1,b1),m0d(td(absd(a1),absd(b1))))
+t2a:=isin(ts(r,s),m0(ts(abs(r),abs(s))),td(a1,b1),m0d(td(absd(a1),absd(b1))),tict,micm0(ts(abs(r),abs(s)),td(absd(a1),absd(b1)),tict(abs(r),abs(s),absd(a1),absd(b1),aica(r,a1,a1ir),aica(s,b1,b1is))),t1a):is(ts(r,s),m0(ts(abs(r),abs(s))))
+-4r196
+s@[p:pos(r)][n:neg(s)]
+satz196c:=realapp2(is(ts(r,s),m0(ts(abs(r),abs(s)))),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t2a".4r196"(x,y,t,u,p,n)):is(ts(r,s),m0(ts(abs(r),abs(s))))
+s@[n:neg(r)][p:pos(s)]
+satz196d:=tr3is(real,ts(r,s),ts(s,r),m0(ts(abs(s),abs(r))),m0(ts(abs(r),abs(s))),comts(r,s),satz196c(s,r,p,n),ism0(ts(abs(s),abs(r)),ts(abs(r),abs(s)),comts(abs(s),abs(r)))):is(ts(r,s),m0(ts(abs(r),abs(s))))
++*4r196
+a0ir@[n:not(is(r,0))]
+t3:=th3"l.imp"(zero(a0),is(r,0),n,[t:zero(a0)]0in(t)):not(zero(a0))
+b1is@[n:not(is(r,0))][o:not(is(s,0))][i:is(ts(r,s),ts(abs(r),abs(s)))]
+t4:=satzd196e(a1,b1,t3(r,a1,a1ir,n),t3(s,b1,b1is,o),isex(ts(r,s),ts(abs(r),abs(s)),td(a1,b1),td(absd(a1),absd(b1)),tict,tict(abs(r),abs(s),absd(a1),absd(b1),aica(r,a1,a1ir),aica(s,b1,b1is)),i)):or(and(posd(a1),posd(b1)),and(negd(a1),negd(b1)))
+[a:and(posd(a1),posd(b1))]
+t5:=andi(pos(r),pos(s),posin(r,a1,a1ir,ande1(posd(a1),posd(b1),a)),posin(s,b1,b1is,ande2(posd(a1),posd(b1),a))):and(pos(r),pos(s))
+i@[a:and(negd(a1),negd(b1))]
+t6:=andi(neg(r),neg(s),negin(r,a1,a1ir,ande1(negd(a1),negd(b1),a)),negin(s,b1,b1is,ande2(negd(a1),negd(b1),a))):and(neg(r),neg(s))
+i@t7:=th9"l.or"(and(posd(a1),posd(b1)),and(negd(a1),negd(b1)),and(pos(r),pos(s)),and(neg(r),neg(s)),t4,[t:and(posd(a1),posd(b1))]t5(t),[t:and(negd(a1),negd(b1))]t6(t)):or(and(pos(r),pos(s)),and(neg(r),neg(s)))
+-4r196
+s@[n:not(is(r,0))][o:not(is(s,0))][i:is(ts(r,s),ts(abs(r),abs(s)))]
+satz196e:=realapp2(or(and(pos(r),pos(s)),and(neg(r),neg(s))),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t7".4r196"(x,y,t,u,n,o,i)):or(and(pos(r),pos(s)),and(neg(r),neg(s)))
++*4r196
+o@[i:is(ts(r,s),m0(ts(abs(r),abs(s))))]
+t8:=satzd196f(a1,b1,t3(r,a1,a1ir,n),t3(s,b1,b1is,o),isex(ts(r,s),m0(ts(abs(r),abs(s))),td(a1,b1),m0d(td(absd(a1),absd(b1))),tict,micm0(ts(abs(r),abs(s)),td(absd(a1),absd(b1)),tict(abs(r),abs(s),absd(a1),absd(b1),aica(r,a1,a1ir),aica(s,b1,b1is))),i)):or(and(posd(a1),negd(b1)),and(negd(a1),posd(b1)))
+[a:and(posd(a1),negd(b1))]
+t9:=andi(pos(r),neg(s),posin(r,a1,a1ir,ande1(posd(a1),negd(b1),a)),negin(s,b1,b1is,ande2(posd(a1),negd(b1),a))):and(pos(r),neg(s))
+i@[a:and(negd(a1),posd(b1))]
+t10:=andi(neg(r),pos(s),negin(r,a1,a1ir,ande1(negd(a1),posd(b1),a)),posin(s,b1,b1is,ande2(negd(a1),posd(b1),a))):and(neg(r),pos(s))
+i@t11:=th9"l.or"(and(posd(a1),negd(b1)),and(negd(a1),posd(b1)),and(pos(r),neg(s)),and(neg(r),pos(s)),t8,[t:and(posd(a1),negd(b1))]t9(t),[t:and(negd(a1),posd(b1))]t10(t)):or(and(pos(r),neg(s)),and(neg(r),pos(s)))
+-4r196
+o@[i:is(ts(r,s),m0(ts(abs(r),abs(s))))]
+satz196f:=realapp2(or(and(pos(r),neg(s)),and(neg(r),pos(s))),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t11".4r196"(x,y,t,u,n,o,i)):or(and(pos(r),neg(s)),and(neg(r),pos(s)))
+s@[p:pos(ts(r,s))]
++*4r196
+p"r"@t12:=th3"l.imp"(is(r,0),is(ts(r,s),0),pnot0(ts(r,s),p),[t:is(r,0)]ts01(r,s,t)):nis(r,0)
+t13:=th3"l.imp"(is(s,0),is(ts(r,s),0),pnot0(ts(r,s),p),[t:is(s,0)]ts02(r,s,t)):nis(s,0)
+t14:=tris1(real,ts(r,s),ts(abs(r),abs(s)),abs(ts(r,s)),absp(ts(r,s),p),satz193(r,s)):is(ts(r,s),ts(abs(r),abs(s)))
+-4r196
+p@satz196g:=satz196e(t12".4r196",t13".4r196",t14".4r196"):or(and(pos(r),pos(s)),and(neg(r),neg(s)))
+s@[n:neg(ts(r,s))]
++*4r196
+n"r"@t15:=th3"l.imp"(is(r,0),is(ts(r,s),0),nnot0(ts(r,s),n),[t:is(r,0)]ts01(r,s,t)):nis(r,0)
+t16:=th3"l.imp"(is(s,0),is(ts(r,s),0),nnot0(ts(r,s),n),[t:is(s,0)]ts02(r,s,t)):nis(s,0)
+t17:=satz177c(ts(abs(r),abs(s)),ts(r,s),tris(real,ts(abs(r),abs(s)),abs(ts(r,s)),m0(ts(r,s)),satz193a(r,s),absn(ts(r,s),n))):is(ts(r,s),m0(ts(abs(r),abs(s))))
+-4r196
+n@satz196h:=satz196f(t15".4r196",t16".4r196",t17".4r196"):or(and(pos(r),neg(s)),and(neg(r),pos(s)))
++4r197
+b1is@t1:=satzd197a(a1,b1):eq"rp"(td(m0d(a1),b1),m0d(td(a1,b1)))
+t2:=isin(ts(m0(r),s),m0(ts(r,s)),td(m0d(a1),b1),m0d(td(a1,b1)),tict(m0(r),s,m0d(a1),b1,micm0(r,a1,a1ir),b1is),micm0(ts(r,s),td(a1,b1),tict),t1):is(ts(m0(r),s),m0(ts(r,s)))
+-4r197
+s@satz197a:=realapp2(is(ts(m0(r),s),m0(ts(r,s))),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t2".4r197"(x,y,t,u)):is(ts(m0(r),s),m0(ts(r,s)))
+satz197b:=tr3is(real,ts(r,m0(s)),ts(m0(s),r),m0(ts(s,r)),m0(ts(r,s)),comts(r,m0(s)),satz197a(s,r),ism0(ts(s,r),ts(r,s),comts(s,r))):is(ts(r,m0(s)),m0(ts(r,s)))
+satz197c:=tris2(real,ts(m0(r),s),ts(r,m0(s)),m0(ts(r,s)),satz197a,satz197b):is(ts(m0(r),s),ts(r,m0(s)))
+satz197d:=symis(real,ts(m0(r),s),ts(r,m0(s)),satz197c):is(ts(r,m0(s)),ts(m0(r),s))
+satz197e:=symis(real,ts(m0(r),s),m0(ts(r,s)),satz197a):is(m0(ts(r,s)),ts(m0(r),s))
+satz197f:=symis(real,ts(r,m0(s)),m0(ts(r,s)),satz197b):is(m0(ts(r,s)),ts(r,m0(s)))
+satz198:=tris(real,ts(m0(r),m0(s)),ts(r,m0(m0(s))),ts(r,s),satz197c(r,m0(s)),ists2(m0(m0(s)),s,r,satz177(s))):is(ts(m0(r),m0(s)),ts(r,s))
+satz198a:=symis(real,ts(m0(r),m0(s)),ts(r,s),satz198):is(ts(r,s),ts(m0(r),m0(s)))
++*ivr4
+b1is@[p:pos(r)][q:pos(s)]
+t3:=ptdpp(a1,b1,posex(r,a1,a1ir,p),posex(s,b1,b1is,q)):posd(td(a1,b1))
+t4:=posin(ts(r,s),td(a1,b1),tict,t3):pos(ts(r,s))
+-ivr4
+s@[p:pos(r)][q:pos(s)]
+postspp:=realapp2(pos(ts(r,s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t4".ivr4"(x,y,t,u,p,q)):pos(ts(r,s))
++*ivr4
+p@[n:neg(s)]
+t5:=ntdpn(a1,b1,posex(r,a1,a1ir,p),negex(s,b1,b1is,n)):negd(td(a1,b1))
+t6:=negin(ts(r,s),td(a1,b1),tict,t5):neg(ts(r,s))
+-ivr4
+s@[p:pos(r)][n:neg(s)]
+negtspn:=realapp2(neg(ts(r,s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t6".ivr4"(x,y,t,u,p,n)):neg(ts(r,s))
+s@[n:neg(r)][p:pos(s)]
+negtsnp:=isneg(ts(s,r),ts(r,s),comts(s,r),negtspn(s,r,p,n)):neg(ts(r,s))
+s@[n:neg(r)][o:neg(s)]
+postsnn:=ispos(ts(m0(r),m0(s)),ts(r,s),satz198,postspp(m0(r),m0(s),satz176c(r,n),satz176c(s,o))):pos(ts(r,s))
+r@[n:nis(r,0)]
+possq:=rapp(r,pos(ts(r,r)),[t:pos(r)]postspp(r,r,t,t),th2"l.imp"(is(r,0),pos(ts(r,r)),n),[t:neg(r)]postsnn(r,r,t,t)):pos(ts(r,r))
+r@nnegsq:=th1"l.imp"(is(r,0),not(neg(ts(r,r))),[t:is(r,0)]0notn(ts(r,r),satz192a(r,r,t)),[t:nis(r,0)]pnotn(ts(r,r),possq(r,t))):not(neg(ts(r,r)))
++4r199
+c2it@t1:=satzd199(a2,b2,c2):eq"rp"(td(td(a2,b2),c2),td(a2,td(b2,c2)))
+t2:=isin(ts(ts(r,s),t),ts(r,ts(s,t)),td(td(a2,b2),c2),td(a2,td(b2,c2)),tict(ts(r,s),t,td(a2,b2),c2,tict(r,s,a2,b2,a2ir,b2is),c2it),tict(r,ts(s,t),a2,td(b2,c2),a2ir,tict(s,t,b2,c2,b2is,c2it)),t1):is(ts(ts(r,s),t),ts(r,ts(s,t)))
+-4r199
+t@satz199:=realapp3(is(ts(ts(r,s),t),ts(r,ts(s,t))),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t2".4r199"(x,y,z,u,v,w)):is(ts(ts(r,s),t),ts(r,ts(s,t)))
+assts1:=satz199:is(ts(ts(r,s),t),ts(r,ts(s,t)))
+assts2:=symis(real,ts(ts(r,s),t),ts(r,ts(s,t)),satz199):is(ts(r,ts(s,t)),ts(ts(r,s),t))
++4r201
+c2it@t1:=satzd201(a2,b2,c2):eq"rp"(td(a2,pd(b2,c2)),pd(td(a2,b2),td(a2,c2)))
+t2:=isin(ts(r,pl(s,t)),pl(ts(r,s),ts(r,t)),td(a2,pd(b2,c2)),pd(td(a2,b2),td(a2,c2)),tict(r,pl(s,t),a2,pd(b2,c2),a2ir,picp(s,t,b2,c2,b2is,c2it)),picp(ts(r,s),ts(r,t),td(a2,b2),td(a2,c2),tict(r,s,a2,b2,a2ir,b2is),tict(r,t,a2,c2,a2ir,c2it)),t1):is(ts(r,pl(s,t)),pl(ts(r,s),ts(r,t)))
+-4r201
+satz201:=realapp3(is(ts(r,pl(s,t)),pl(ts(r,s),ts(r,t))),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t2".4r201"(x,y,z,u,v,w)):is(ts(r,pl(s,t)),pl(ts(r,s),ts(r,t)))
+disttp1:=tr3is(real,ts(pl(r,s),t),ts(t,pl(r,s)),pl(ts(t,r),ts(t,s)),pl(ts(r,t),ts(s,t)),comts(pl(r,s),t),satz201(t,r,s),ispl12(ts(t,r),ts(r,t),ts(t,s),ts(s,t),comts(t,r),comts(t,s))):is(ts(pl(r,s),t),pl(ts(r,t),ts(s,t)))
+disttp2:=satz201:is(ts(r,pl(s,t)),pl(ts(r,s),ts(r,t)))
+distpt1:=symis(real,ts(pl(r,s),t),pl(ts(r,t),ts(s,t)),disttp1):is(pl(ts(r,t),ts(s,t)),ts(pl(r,s),t))
+distpt2:=symis(real,ts(r,pl(s,t)),pl(ts(r,s),ts(r,t)),disttp2):is(pl(ts(r,s),ts(r,t)),ts(r,pl(s,t)))
+satz202:=tris(real,ts(r,mn(s,t)),pl(ts(r,s),ts(r,m0(t))),mn(ts(r,s),ts(r,t)),disttp2(r,s,m0(t)),ispl2(ts(r,m0(t)),m0(ts(r,t)),ts(r,s),satz197b(r,t))):is(ts(r,mn(s,t)),mn(ts(r,s),ts(r,t)))
+disttm1:=tris(real,ts(mn(r,s),t),pl(ts(r,t),ts(m0(s),t)),mn(ts(r,t),ts(s,t)),disttp1(r,m0(s),t),ispl2(ts(m0(s),t),m0(ts(s,t)),ts(r,t),satz197a(s,t))):is(ts(mn(r,s),t),mn(ts(r,t),ts(s,t)))
+disttm2:=satz202:is(ts(r,mn(s,t)),mn(ts(r,s),ts(r,t)))
+distmt1:=symis(real,ts(mn(r,s),t),mn(ts(r,t),ts(s,t)),disttm1):is(mn(ts(r,t),ts(s,t)),ts(mn(r,s),t))
+distmt2:=symis(real,ts(r,mn(s,t)),mn(ts(r,s),ts(r,t)),disttm2):is(mn(ts(r,s),ts(r,t)),ts(r,mn(s,t)))
+satz200:=satz202:is(ts(r,mn(s,t)),mn(ts(r,s),ts(r,t)))
++4r203
+c2it@[m:more(r,s)][p:pos(t)]
+t1:=satzd203a(a2,b2,c2,moreex(r,s,a2,b2,a2ir,b2is,m),posex(t,c2,c2it,p)):mored(td(a2,c2),td(b2,c2))
+t2:=morein(ts(r,t),ts(s,t),td(a2,c2),td(b2,c2),tict(r,t,a2,c2,a2ir,c2it),tict(s,t,b2,c2,b2is,c2it),t1):more(ts(r,t),ts(s,t))
+-4r203
+[m:more(r,s)][p:pos(t)]
+satz203a:=realapp3(more(ts(r,t),ts(s,t)),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t2".4r203"(x,y,z,u,v,w,m,p)):more(ts(r,t),ts(s,t))
+m@[i:is(t,0)]
+satz203b:=tris2(real,ts(r,t),ts(s,t),0,ts02(r,t,i),ts02(s,t,i)):is(ts(r,t),ts(s,t))
++*4r203
+m@[n:neg(t)]
+t3:=satzd203c(a2,b2,c2,moreex(r,s,a2,b2,a2ir,b2is,m),negex(t,c2,c2it,n)):lessd(td(a2,c2),td(b2,c2))
+t4:=lessin(ts(r,t),ts(s,t),td(a2,c2),td(b2,c2),tict(r,t,a2,c2,a2ir,c2it),tict(s,t,b2,c2,b2is,c2it),t3):less(ts(r,t),ts(s,t))
+-4r203
+m@[n:neg(t)]
+satz203c:=realapp3(less(ts(r,t),ts(s,t)),[x:dif][y:dif][z:dif][u:inn(x,class(r))][v:inn(y,class(s))][w:inn(z,class(t))]t4".4r203"(x,y,z,u,v,w,m,n)):less(ts(r,t),ts(s,t))
+p@satz203d:=ismore12(ts(r,t),ts(t,r),ts(s,t),ts(t,s),comts(r,t),comts(s,t),satz203a):more(ts(t,r),ts(t,s))
+i@satz203e:=tris2(real,ts(t,r),ts(t,s),0,ts01(t,r,i),ts01(t,s,i)):is(ts(t,r),ts(t,s))
+n@satz203f:=isless12(ts(r,t),ts(t,r),ts(s,t),ts(t,s),comts(r,t),comts(s,t),satz203c):less(ts(t,r),ts(t,s))
+t@[l:less(r,s)][p:pos(t)]
+satz203g:=lemma1(ts(s,t),ts(r,t),satz203a(s,r,t,lemma2(r,s,l),p)):less(ts(r,t),ts(s,t))
+l@[i:is(t,0)]
+satz203h:=tris2(real,ts(r,t),ts(s,t),0,ts02(r,t,i),ts02(s,t,i)):is(ts(r,t),ts(s,t))
+l@[n:neg(t)]
+satz203j:=lemma2(ts(s,t),ts(r,t),satz203c(s,r,t,lemma2(r,s,l),n)):more(ts(r,t),ts(s,t))
+p@satz203k:=lemma1(ts(t,s),ts(t,r),satz203d(s,r,t,lemma2(r,s,l),p)):less(ts(t,r),ts(t,s))
+i@satz203l:=tris2(real,ts(t,r),ts(t,s),0,ts01(t,r,i),ts01(t,s,i)):is(ts(t,r),ts(t,s))
+n@satz203m:=lemma2(ts(t,s),ts(t,r),satz203f(s,r,t,lemma2(r,s,l),n)):more(ts(t,r),ts(t,s))
++4r204
+a0ir@[n1:nis(r,0)]
+t1:=th3"l.imp"(zero(a0),is(r,0),n1,[t:zero(a0)]0in(t)):not(zero(a0))
+d3iu@[n1:nis(s,0)][i:is(ts(s,t),r)][j:is(ts(s,u),r)]
+t2:=satzd204b(a3,b3,t1(s,b3,b3is,n1),c3,d3,isex(ts(s,t),r,td(b3,c3),a3,tict(s,t,b3,c3,b3is,c3it),a3ir,i),isex(ts(s,u),r,td(b3,d3),a3,tict(s,u,b3,d3,b3is,d3iu),a3ir,j)):eq"rp"(c3,d3)
+t3:=isin(t,u,c3,d3,c3it,d3iu,t2):is(t,u)
+-4r204
+s@[n:nis(s,0)][x:real][y:real][i:is(ts(s,x),r)][j:is(ts(s,y),r)]
+satz204b:=realapp4(x,y,is(x,y),[z:dif][u:dif][v:dif][w:dif][zi:inn(z,class(r))][ui:inn(u,class(s))][vi:inn(v,class(x))][wi:inn(w,class(y))]t3".4r204"(x,y,z,u,v,w,zi,ui,vi,wi,n,i,j)):is(x,y)
++*4r204
+b1is@[n1:nis(s,0)]
+t4:=satzd204a(a1,b1,t1(s,b1,b1is,n1)):some"l"(dif,[x:dif]eq"rp"(td(b1,x),a1))
+[a:dif][e:eq"rp"(td(b1,a),a1)]
+ar:=realof(a):real
+t5:=isin(ts(s,ar),r,td(b1,a),a1,tict(s,ar,b1,a,b1is,innclass(a)),a1ir,e):is(ts(s,ar),r)
+t6:=somei(real,[x:real]is(ts(s,x),r),ar,t5):some([x:real]is(ts(s,x),r))
+n1@t7:=someapp(dif,[x:dif]eq"rp"(td(b1,x),a1),t4,some([x:real]is(ts(s,x),r)),[x:dif][t:eq"rp"(td(b1,x),a1)]t6(x,t)):some([x:real]is(ts(s,x),r))
+-4r204
+n@satz204a:=realapp2(some([x:real]is(ts(s,x),r)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t7".4r204"(x,y,t,u,n)):some([x:real]is(ts(s,x),r))
+satz204:=onei(real,[x:real]is(ts(s,x),r),[x:real][y:real][t:is(ts(s,x),r)][u:is(ts(s,y),r)]satz204b(x,y,t,u),satz204a):one([x:real]is(ts(s,x),r))
+ov:=ind(real,[x:real]is(ts(s,x),r),satz204):real
+satz204c:=oneax(real,[x:real]is(ts(s,x),r),satz204):is(ts(s,ov(r,s,n)),r)
+satz204d:=symis(real,ts(s,ov(r,s,n)),r,satz204c):is(r,ts(s,ov(r,s,n)))
+satz204e:=tris(real,ts(ov(r,s,n),s),ts(s,ov(r,s,n)),r,comts(ov(r,s,n),s),satz204c):is(ts(ov(r,s,n),s),r)
+satz204f:=symis(real,ts(ov(r,s,n),s),r,satz204e):is(r,ts(ov(r,s,n),s))
+s@[x:real][n:nis(s,0)][i:is(ts(s,x),r)]
+satz204g:=satz204b(n,x,ov(r,s,n),i,satz204c(n)):is(x,ov(r,s,n))
+s@[n:nis(s,0)][p:pos(r)][q:pos(s)]
++*4r204
+n@ros:=ov(r,s,n):real
+p@t8:=ispos(r,ts(s,ros),satz204d(n),p):pos(ts(s,ros))
+q@t9:=th1"l.and"(neg(s),neg(ros),pnotn(s,q)):not(and(neg(s),neg(ros)))
+t10:=ore1(and(pos(s),pos(ros)),and(neg(s),neg(ros)),satz196g(s,ros,t8),t9):and(pos(s),pos(ros))
+-4r204
+q@posovpp:=ande2(pos(s),pos(ov(r,s,n)),t10".4r204"):pos(ov(r,s,n))
+p@[m:neg(s)]
++*4r204
+m@t11:=th1"l.and"(pos(s),pos(ros),nnotp(s,m)):not(and(pos(s),pos(ros)))
+t12:=ore2(and(pos(s),pos(ros)),and(neg(s),neg(ros)),satz196g(s,ros,t8),t11):and(neg(s),neg(ros))
+-4r204
+m@negovpn:=ande2(neg(s),neg(ov(r,s,n)),t12".4r204"):neg(ov(r,s,n))
+n@[m:neg(r)][p:pos(s)]
++*4r204
+m@t13:=isneg(r,ts(s,ros),satz204d(n),m):neg(ts(s,ros))
+p@t14:=th1"l.and"(neg(s),pos(ros),pnotn(s,p)):not(and(neg(s),pos(ros)))
+t15:=ore1(and(pos(s),neg(ros)),and(neg(s),pos(ros)),satz196h(s,ros,t13),t14):and(pos(s),neg(ros))
+-4r204
+p@negovnp:=ande2(pos(s),neg(ov(r,s,n)),t15".4r204"):neg(ov(r,s,n))
+m@[l:neg(s)]
++*4r204
+l@t16:=th1"l.and"(pos(s),neg(ros),nnotp(s,l)):not(and(pos(s),neg(ros)))
+t17:=ore2(and(pos(s),neg(ros)),and(neg(s),pos(ros)),satz196h(s,ros,t13),t16):and(neg(s),pos(ros))
+-4r204
+l@posovnn:=ande2(neg(s),pos(ov(r,s,n)),t17".4r204"):pos(ov(r,s,n))
+@[r0:cut][s0:cut][m:more"rp"(r0,s0)]
+morerpep:=morein(pofrp(r0),pofrp(s0),pdofrp(r0),pdofrp(s0),innclass(pdofrp(r0)),innclass(pdofrp(s0)),morerpepd(r0,s0,m)):more(pofrp(r0),pofrp(s0))
+s0@[m:more(pofrp(r0),pofrp(s0))]
+morerpip:=morerpipd(r0,s0,moreex(pofrp(r0),pofrp(s0),pdofrp(r0),pdofrp(s0),innclass(pdofrp(r0)),innclass(pdofrp(s0)),m)):more"rp"(r0,s0)
+s0@[l:less"rp"(r0,s0)]
+lessrpep:=lemma1(pofrp(s0),pofrp(r0),morerpep(s0,r0,satz122(r0,s0,l))):less(pofrp(r0),pofrp(s0))
+s0@[l:less(pofrp(r0),pofrp(s0))]
+lessrpip:=satz121(s0,r0,morerpip(s0,r0,lemma2(pofrp(r0),pofrp(s0),l))):less"rp"(r0,s0)
+s@[p:pos(r)][q:pos(s)][m:more(r,s)]
+q@[m:more(r,s)]
++ivr5
+t1:=ismore12(r,pofrp(rpofp(r,p)),s,pofrp(rpofp(s,q)),isprp1(r,p),isprp1(s,q),m):more(pofrp(rpofp(r,p)),pofrp(rpofp(s,q)))
+-ivr5
+moreperp:=morerpip(rpofp(r,p),rpofp(s,q),t1".ivr5"):more"rp"(rpofp(r,p),rpofp(s,q))
+q@[m:more"rp"(rpofp(r,p),rpofp(s,q))]
++*ivr5
+m@t2:=morerpep(rpofp(r,p),rpofp(s,q),m):more(pofrp(rpofp(r,p)),pofrp(rpofp(s,q)))
+-ivr5
+m@morepirp:=ismore12(pofrp(rpofp(r,p)),r,pofrp(rpofp(s,q)),s,isprp2(r,p),isprp2(s,q),t2".ivr5"):more(r,s)
+q@[l:less(r,s)]
+lessperp:=satz121(rpofp(s,q),rpofp(r,p),moreperp(s,r,q,p,lemma2(r,s,l))):less"rp"(rpofp(r,p),rpofp(s,q))
+q@[l:less"rp"(rpofp(r,p),rpofp(s,q))]
+lesspirp:=lemma1(s,r,morepirp(s,r,q,p,satz122(rpofp(r,p),rpofp(s,q),l))):less(r,s)
+r@s01:=setof(real,[x:real]lessis(x,r)):set(real)
+s02:=setof(real,[x:real]more(x,r)):set(real)
++5r205
+s@[n:not(in(s,s01))]
+t1:=th3"l.imp"(lessis(s,r),in(s,s01),n,[t:lessis(s,r)]estii(real,[x:real]lessis(x,r),s,t)):not(lessis(s,r))
+t2:=estii(real,[x:real]more(x,r),s,satz167k(s,r,t1)):in(s,s02)
+-5r205
+vb00:=[x:real][t:not(in(x,s01))]t2".5r205"(x,t):all([x:real]or(in(x,s01),in(x,s02)))
++*5r205
+r@t3:=estii(real,[x:real]lessis(x,r),r,lessisi2(r,r,refis(real,r))):in(r,s01)
+-5r205
+r@vb01a:=nonemptyi(real,s01,r,t3".5r205"):nonempty(real,s01)
++*5r205
+r@t4:=ismore2(pl(r,0),r,pl(r,1rl),pl02(r,0,refis(real,0)),satz188k(1rl,0,r,satz169a(1rl,pos1))):more(pl(r,1rl),r)
+t5:=estii(real,[x:real]more(x,r),pl(r,1rl),t4):in(pl(r,1rl),s02)
+-5r205
+r@vb01b:=nonemptyi(real,s02,pl(r,1rl),t5".5r205"):nonempty(real,s02)
++*5r205
+s@[i:in(s,s01)][t:real][j:in(t,s02)]
+t6:=satz172a(s,r,t,estie(real,[x:real]lessis(x,r),s,i),lemma1(t,r,estie(real,[x:real]more(x,r),t,j))):less(s,t)
+-5r205
+r@vb02:=[x:real][t:in(x,s01)][y:real][u:in(y,s02)]t6".5r205"(x,t,y,u):all([x:real][t:in(x,s01)]all([y:real][u:in(y,s02)]less(x,y)))
+s@[l:less(s,r)]
+vb03a:=estii(real,[x:real]lessis(x,r),s,lessisi1(s,r,l)):in(s,s01)
+s@[m:more(s,r)]
+vb03b:=estii(real,[x:real]more(x,r),s,m):in(s,s02)
+r@s11:=setof(real,[x:real]less(x,r)):set(real)
+s12:=setof(real,[x:real]moreis(x,r)):set(real)
++*5r205
+s@[n:not(in(s,s11))]
+t7:=th3"l.imp"(less(s,r),in(s,s11),n,[t:less(s,r)]estii(real,[x:real]less(x,r),s,t)):not(less(s,r))
+t8:=estii(real,[x:real]moreis(x,r),s,satz167f(s,r,t7)):in(s,s12)
+-5r205
+r@vb10:=[x:real][t:not(in(x,s11))]t8".5r205"(x,t):all([x:real]or(in(x,s11),in(x,s12)))
++*5r205
+r@t9:=isless2(pl(r,0),r,mn(r,1rl),pl02(r,0,refis(real,0)),satz188m(m0(1rl),0,r,satz169c(m0(1rl),satz176a(1rl,pos1)))):less(mn(r,1rl),r)
+t10:=estii(real,[x:real]less(x,r),mn(r,1rl),t9):in(mn(r,1rl),s11)
+-5r205
+r@vb11a:=nonemptyi(real,s11,mn(r,1rl),t10".5r205"):nonempty(real,s11)
++*5r205
+r@t11:=estii(real,[x:real]moreis(x,r),r,moreisi2(r,r,refis(real,r))):in(r,s12)
+-5r205
+r@vb11b:=nonemptyi(real,s12,r,t11".5r205"):nonempty(real,s12)
++*5r205
+s@[i:in(s,s11)][t:real][j:in(t,s12)]
+t12:=satz172b(s,r,t,estie(real,[x:real]less(x,r),s,i),satz168a(t,r,estie(real,[x:real]moreis(x,r),t,j))):less(s,t)
+-5r205
+r@vb12:=[x:real][t:in(x,s11)][y:real][u:in(y,s12)]t12".5r205"(x,t,y,u):all([x:real][t:in(x,s11)]all([y:real][u:in(y,s12)]less(x,y)))
+s@[l:less(s,r)]
+vb13a:=estii(real,[x:real]less(x,r),s,l):in(s,s11)
+s@[m:more(s,r)]
+vb13b:=estii(real,[x:real]moreis(x,r),s,moreisi1(s,r,m)):in(s,s12)
+@2rl:=pl(1rl,1rl):real
+pos2:=pospl(1rl,1rl,pos1,pos1):pos(2rl)
+half:=ov(1rl,2rl,pnot0(2rl,pos2)):real
+poshalf:=posovpp(1rl,2rl,pnot0(2rl,pos2),pos1,pos2):pos(half)
++*ivr5
+r@t3:=tris(real,pl(r,r),pl(ts(1rl,r),ts(1rl,r)),ts(2rl,r),ispl12(r,ts(1rl,r),r,ts(1rl,r),satz195c(r),satz195c(r)),distpt1(1rl,1rl,r)):is(pl(r,r),ts(2rl,r))
+t4:=tr4is(real,ts(half,pl(r,r)),ts(half,ts(2rl,r)),ts(ts(half,2rl),r),ts(1rl,r),r,ists2(pl(r,r),ts(2rl,r),half,t3),assts2(half,2rl,r),ists1(ts(half,2rl),1rl,r,satz204e(1rl,2rl,pnot0(2rl,pos2))),satz195b(r)):is(ts(half,pl(r,r)),r)
+-ivr5
+s@[l:less(r,s)]
++*ivr5
+l@t5:=satz203k(pl(r,r),pl(r,s),half,satz188m(r,s,r,l),poshalf):less(ts(half,pl(r,r)),ts(half,pl(r,s)))
+-ivr5
+l@lemma3:=isless1(ts(half,pl(r,r)),r,ts(half,pl(r,s)),t4".ivr5",t5".ivr5"):less(r,ts(half,pl(r,s)))
++*ivr5
+l@t6:=satz203k(pl(r,s),pl(s,s),half,satz188f(r,s,s,l),poshalf):less(ts(half,pl(r,s)),ts(half,pl(s,s)))
+-ivr5
+l@lemma4:=isless2(ts(half,pl(s,s)),s,ts(half,pl(r,s)),t4".ivr5"(s),t6".ivr5"):less(ts(half,pl(r,s)),s)
+[p:pos(r)]
+lemma5:=satz169b(s,trmore(s,r,0,lemma2(r,s,l),satz169a(r,p))):pos(s)
+@[s1:set(real)][s2:set(real)][p0:all([x:real]or(in(x,s1),in(x,s2)))][p1a:nonempty(real,s1)][p1b:nonempty(real,s2)][p2:all([x:real][t:in(x,s1)]all([y:real][u:in(y,s2)]less(x,y)))]
++*5r205
+s2@[r:real]
+prop1:=all([x:real][t:less(x,r)]in(x,s1)):'prop'
+prop2:=all([x:real][t:more(x,r)]in(x,s2)):'prop'
+prop3:=and(prop1,prop2):'prop'
+p2@[x:real][y:real][px:prop3(x)][py:prop3(y)][l:less(x,y)]
+mxy:=ts(half,pl(x,y)):real
+t13:=lemma2(x,mxy,lemma3(x,y,l)):more(mxy,x)
+t14:=lemma4(x,y,l):less(mxy,y)
+t15:=<t14><mxy>ande1(prop1(y),prop2(y),py):in(mxy,s1)
+t16:=<t13><mxy>ande2(prop1(x),prop2(x),px):in(mxy,s2)
+t17:=<t16><mxy><t15><mxy>p2:less(mxy,mxy)
+t18:=<refis(real,mxy)>ec3e31(is(mxy,mxy),more(mxy,mxy),less(mxy,mxy),satz167b(mxy,mxy),t17):con
+py@t19:=[t:less(x,y)]t18(t):not(less(x,y))
+t20:=[t:more(x,y)]t18(y,x,py,px,lemma1(x,y,t)):not(more(x,y))
+t21:=or3e1(is(x,y),more(x,y),less(x,y),satz167a(x,y),t20,t19):is(x,y)
+p2@t22:=[x:real][y:real][t:prop3(x)][u:prop3(y)]t21(x,y,t,u):amone(real,[x:real]prop3(x))
+[case1:some([x:real]and(pos(x),in(x,s1)))][r:real][a:and(pos(r),in(r,s1))]
+t23:=ande1(pos(r),in(r,s1),a):pos(r)
+t24:=ande2(pos(r),in(r,s1),a):in(r,s1)
+sc1:=setof(cut,[x:cut]in(pofrp(x),s1)):set(cut)
+sc2:=setof(cut,[x:cut]in(pofrp(x),s2)):set(cut)
+[r0:cut][i:in(pofrp(r0),s1)]
+t25:=estii(cut,[x:cut]in(pofrp(x),s1),r0,i):in"rp"(r0,sc1)
+r0@[i:in"rp"(r0,sc1)]
+t26:=estie(cut,[x:cut]in(pofrp(x),s1),r0,i):in(pofrp(r0),s1)
+r0@[i:in(pofrp(r0),s2)]
+t27:=estii(cut,[x:cut]in(pofrp(x),s2),r0,i):in"rp"(r0,sc2)
+r0@[i:in"rp"(r0,sc2)]
+t28:=estie(cut,[x:cut]in(pofrp(x),s2),r0,i):in(pofrp(r0),s2)
+r0@t29:=th9"l.or"(in(pofrp(r0),s1),in(pofrp(r0),s2),in"rp"(r0,sc1),in"rp"(r0,sc2),<pofrp(r0)>p0,[t:in(pofrp(r0),s1)]t25(t),[t:in(pofrp(r0),s2)]t27(t)):or(in"rp"(r0,sc1),in"rp"(r0,sc2))
+a@pr1:=rpofp(r,t23):cut
+t30:=isp(real,[x:real]in(x,s1),r,pofrp(pr1),t24,isprp1(r,t23)):in(pofrp(pr1),s1)
+t31:=nonemptyi(cut,sc1,pr1,t25(pr1,t30)):nonempty(cut,sc1)
+[s:real][i:in(s,s2)]
+t32:=<i><s><t24><r>p2:less(r,s)
+t33:=lemma5(r,s,t32,t23):pos(s)
+ps1:=rpofp(s,t33):cut
+t34:=isp(real,[x:real]in(x,s2),s,pofrp(ps1),i,isprp1(s,t33)):in(pofrp(ps1),s2)
+t35:=nonemptyi(cut,sc2,ps1,t27(ps1,t34)):nonempty(cut,sc2)
+a@t36:=nonemptyapp(real,s2,p1b,nonempty(cut,sc2),[x:real][t:in(x,s2)]t35(x,t)):nonempty(cut,sc2)
+r0@[i:in"rp"(r0,sc1)][s0:cut][j:in"rp"(s0,sc2)]
+t37:=<t28(s0,j)><pofrp(s0)><t26(r0,i)><pofrp(r0)>p2:less(pofrp(r0),pofrp(s0))
+t38:=lessrpip(r0,s0,t37):less"rp"(r0,s0)
+a@stc:=schnitt(sc1,sc2,[x:cut]t29(x),t31,t36,[x:cut][t:in"rp"(x,sc1)][y:cut][u:in"rp"(y,sc2)]t38(x,t,y,u)):cut
+t39:=satzp205a(sc1,sc2,[x:cut]t29(x),t31,t36,[x:cut][t:in"rp"(x,sc1)][y:cut][u:in"rp"(y,sc2)]t38(x,t,y,u)):all"rp"([x:cut][t:less"rp"(x,stc)]in"rp"(x,sc1))
+t40:=satzp205b(sc1,sc2,[x:cut]t29(x),t31,t36,[x:cut][t:in"rp"(x,sc1)][y:cut][u:in"rp"(y,sc2)]t38(x,t,y,u)):all"rp"([x:cut][t:more"rp"(x,stc)]in"rp"(x,sc2))
+stp:=pofrp(stc):real
+t41:=posi(stc):pos(stp)
+[s:real][l:less(s,stp)][p:pos(s)]
+ps2:=rpofp(s,p):cut
+t42:=lessrpip(ps2,stc,isless1(s,pofrp(ps2),stp,isprp1(s,p),l)):less"rp"(ps2,stc)
+t43:=<t42><ps2>t39:in"rp"(ps2,sc1)
+t44:=isp(real,[x:real]in(x,s1),pofrp(ps2),s,t26(ps2,t43),isprp2(s,p)):in(s,s1)
+l@[n:not(pos(s))][i:in(s,s2)]
+t45:=<i><s><t24><r>p2:less(r,s)
+t46:=<lemma5(r,s,t45,t23)>n:con
+n@t47:=ore1(in(s,s1),in(s,s2),<s>p0,[t:in(s,s2)]t46(t)):in(s,s1)
+l@t48:=th1"l.imp"(pos(s),in(s,s1),[t:pos(s)]t44(t),[t:not(pos(s))]t47(t)):in(s,s1)
+s@[m:more(s,stp)]
+t49:=lemma5(stp,s,lemma1(s,stp,m),t41):pos(s)
+ps3:=rpofp(s,t49):cut
+t50:=morerpip(ps3,stc,ismore1(s,pofrp(ps3),stp,isprp1(s,t49),m)):more"rp"(ps3,stc)
+t51:=<t50><ps3>t40:in"rp"(ps3,sc2)
+t52:=isp(real,[x:real]in(x,s2),pofrp(ps3),s,t28(ps3,t51),isprp2(s,t49)):in(s,s2)
+a@t53:=andi(prop1(stp),prop2(stp),[x:real][t:less(x,stp)]t48(x,t),[x:real][t:more(x,stp)]t52(x,t)):prop3(stp)
+t54:=somei(real,[x:real]prop3(x),stp,t53):some([x:real]prop3(x))
+case1@t55:=someapp(real,[x:real]and(pos(x),in(x,s1)),case1,some([x:real]prop3(x)),[x:real][t:and(pos(x),in(x,s1))]t54(x,t)):some([x:real]prop3(x))
+p2@[case2:some([x:real]and(neg(x),in(x,s2)))]
+sp1:=setof(real,[x:real]in(m0(x),s1)):set(real)
+sp2:=setof(real,[x:real]in(m0(x),s2)):set(real)
+[r:real][i:in(m0(r),s1)]
+t56:=estii(real,[x:real]in(m0(x),s1),r,i):in(r,sp1)
+r@[i:in(r,sp1)]
+t57:=estie(real,[x:real]in(m0(x),s1),r,i):in(m0(r),s1)
+r@[i:in(m0(r),s2)]
+t58:=estii(real,[x:real]in(m0(x),s2),r,i):in(r,sp2)
+r@[i:in(r,sp2)]
+t59:=estie(real,[x:real]in(m0(x),s2),r,i):in(m0(r),s2)
+r@t60:=comor(in(r,sp1),in(r,sp2),th9"l.or"(in(m0(r),s1),in(m0(r),s2),in(r,sp1),in(r,sp2),<m0(r)>p0,[t:in(m0(r),s1)]t56(t),[t:in(m0(r),s2)]t58(t))):or(in(r,sp2),in(r,sp1))
+[i:in(r,s2)]
+t61:=t58(m0(r),isp(real,[x:real]in(x,s2),r,m0(m0(r)),i,satz177a(r))):in(m0(r),sp2)
+t62:=nonemptyi(real,sp2,m0(r),t61):nonempty(real,sp2)
+case2@t63:=nonemptyapp(real,s2,p1b,nonempty(real,sp2),[x:real][t:in(x,s2)]t62(x,t)):nonempty(real,sp2)
+r@[i:in(r,s1)]
+t64:=t56(m0(r),isp(real,[x:real]in(x,s1),r,m0(m0(r)),i,satz177a(r))):in(m0(r),sp1)
+t65:=nonemptyi(real,sp1,m0(r),t64):nonempty(real,sp1)
+case2@t66:=nonemptyapp(real,s1,p1a,nonempty(real,sp1),[x:real][t:in(x,s1)]t65(x,t)):nonempty(real,sp1)
+r@[i:in(r,sp2)][s:real][j:in(s,sp1)]
+t67:=<t59(r,i)><m0(r)><t57(s,j)><m0(s)>p2:less(m0(s),m0(r))
+t68:=lemma1(s,r,satz183d(s,r,t67)):less(r,s)
+r@[a:and(neg(r),in(r,s2))]
+t69:=satz176c(r,ande1(neg(r),in(r,s2),a)):pos(m0(r))
+t70:=isp(real,[x:real]in(x,s2),r,m0(m0(r)),ande2(neg(r),in(r,s2),a),satz177a(r)):in(m0(m0(r)),s2)
+t71:=andi(pos(m0(r)),in(m0(r),sp2),t69,t58(m0(r),t70)):and(pos(m0(r)),in(m0(r),sp2))
+t72:=somei(real,[x:real]and(pos(x),in(x,sp2)),m0(r),t71):some([x:real]and(pos(x),in(x,sp2)))
+case2@t73:=someapp(real,[x:real]and(neg(x),in(x,s2)),case2,some([x:real]and(pos(x),in(x,sp2))),[x:real][t:and(neg(x),in(x,s2))]t72(x,t)):some([x:real]and(pos(x),in(x,sp2)))
+t74:=t55(sp2,sp1,[x:real]t60(x),t63,t66,[x:real][t:in(x,sp2)][y:real][u:in(y,sp1)]t68(x,t,y,u),t73):some([x:real]prop3(sp2,sp1,x))
+[r:real][p:prop3(sp2,sp1,r)][s:real][l:less(s,m0(r))]
+t75:=ismore2(m0(m0(r)),r,m0(s),satz177(r),satz183c(s,m0(r),l)):more(m0(s),r)
+t76:=<t75><m0(s)>ande2(prop1(sp2,sp1,r),prop2(sp2,sp1,r),p):in(m0(s),sp1)
+t77:=isp(real,[x:real]in(x,s1),m0(m0(s)),s,t57(m0(s),t76),satz177(s)):in(s,s1)
+s@[m:more(s,m0(r))]
+t78:=isless2(m0(m0(r)),r,m0(s),satz177(r),satz183a(s,m0(r),m)):less(m0(s),r)
+t79:=<t78><m0(s)>ande1(prop1(sp2,sp1,r),prop2(sp2,sp1,r),p):in(m0(s),sp2)
+t80:=isp(real,[x:real]in(x,s2),m0(m0(s)),s,t59(m0(s),t79),satz177(s)):in(s,s2)
+p@t81:=andi(prop1(m0(r)),prop2(m0(r)),[x:real][t:less(x,m0(r))]t77(x,t),[x:real][t:more(x,m0(r))]t80(x,t)):prop3(m0(r))
+t82:=somei(real,[x:real]prop3(x),m0(r),t81):some([x:real]prop3(x))
+case2@t83:=someapp(real,[x:real]prop3(sp2,sp1,x),t74,some([x:real]prop3(x)),[x:real][t:prop3(sp2,sp1,x)]t82(x,t)):some([x:real]prop3(x))
+p2@[notcase1:not(some([x:real]and(pos(x),in(x,s1))))][notcase2:not(some([x:real]and(neg(x),in(x,s2))))][r:real][l:less(r,0)]
+t84:=th4"l.some"(real,[x:real]and(neg(x),in(x,s2)),notcase2,r):not(and(neg(r),in(r,s2)))
+t85:=th3"l.and"(neg(r),in(r,s2),t84,satz169d(r,l)):not(in(r,s2))
+t86:=ore1(in(r,s1),in(r,s2),<r>p0,t85):in(r,s1)
+r@[m:more(r,0)]
+t87:=th4"l.some"(real,[x:real]and(pos(x),in(x,s1)),notcase1,r):not(and(pos(r),in(r,s1)))
+t88:=th3"l.and"(pos(r),in(r,s1),t87,satz169b(r,m)):not(in(r,s1))
+t89:=ore2(in(r,s1),in(r,s2),<r>p0,t88):in(r,s2)
+notcase2@t90:=andi(prop1(0),prop2(0),[x:real][t:less(x,0)]t86(x,t),[x:real][t:more(x,0)]t89(x,t)):prop3(0)
+t91:=somei(real,[x:real]prop3(x),0,t90):some([x:real]prop3(x))
+notcase1@t92:=th1"l.imp"(some([x:real]and(neg(x),in(x,s2))),some([x:real]prop3(x)),[t:some([x:real]and(neg(x),in(x,s2)))]t83(t),[t:not(some([x:real]and(neg(x),in(x,s2))))]t91(t)):some([x:real]prop3(x))
+p2@t93:=th1"l.imp"(some([x:real]and(pos(x),in(x,s1))),some([x:real]prop3(x)),[t:some([x:real]and(pos(x),in(x,s1)))]t55(t),[t:not(some([x:real]and(pos(x),in(x,s1))))]t92(t)):some([x:real]prop3(x))
+t94:=onei(real,[x:real]prop3(x),t22,t93):one([x:real]prop3(x))
+-5r205
+p2@satz205:=t94".5r205":one([x:real]and(all([y:real][t:less(y,x)]in(y,s1)),all([y:real][t:more(y,x)]in(y,s2))))
+dedekind:=satz205:one([x:real]and(all([y:real][t:less(y,x)]in(y,s1)),all([y:real][t:more(y,x)]in(y,s2))))
+schnitt:=ind(real,[x:real]prop3".5r205"(x),satz205):real
+[r:real][l:less(r,schnitt)]
+satz205a:=<l><r>ande1(prop1".5r205"(schnitt),prop2".5r205"(schnitt),oneax(real,[x:real]prop3".5r205"(x),satz205)):in(r,s1)
+r@[m:more(r,schnitt)]
+satz205b:=<m><r>ande2(prop1".5r205"(schnitt),prop2".5r205"(schnitt),oneax(real,[x:real]prop3".5r205"(x),satz205)):in(r,s2)
+@[r0:cut][s0:cut]
++iva
+dr:=pdofrp(r0):dif
+ds:=pdofrp(s0):dif
+t1:=lemmaivad1(r0,s0):eq"rp"(pd(dr,ds),pdofrp(pl"rp"(r0,s0)))
+-iva
+lemmaiva1:=isin(pl(pofrp(r0),pofrp(s0)),pofrp(pl"rp"(r0,s0)),pd(pdofrp(r0),pdofrp(s0)),pdofrp(pl"rp"(r0,s0)),picp(pofrp(r0),pofrp(s0),pdofrp(r0),pdofrp(s0),innclass(pdofrp(r0)),innclass(pdofrp(s0))),innclass(pdofrp(pl"rp"(r0,s0))),t1".iva"):is(pl(pofrp(r0),pofrp(s0)),pofrp(pl"rp"(r0,s0)))
++*iva
+s0@t2:=lemmaivad2(r0,s0):eq"rp"(td(dr,ds),pdofrp(ts"rp"(r0,s0)))
+-iva
+s0@lemmaiva2:=isin(ts(pofrp(r0),pofrp(s0)),pofrp(ts"rp"(r0,s0)),td(pdofrp(r0),pdofrp(s0)),pdofrp(ts"rp"(r0,s0)),tict(pofrp(r0),pofrp(s0),pdofrp(r0),pdofrp(s0),innclass(pdofrp(r0)),innclass(pdofrp(s0))),innclass(pdofrp(ts"rp"(r0,s0))),t2".iva"):is(ts(pofrp(r0),pofrp(s0)),pofrp(ts"rp"(r0,s0)))
+[m:more(pofrp(r0),pofrp(s0))]
++*iva
+m@t3:=moreex(pofrp(r0),pofrp(s0),dr,ds,innclass(dr),innclass(ds),m):mored(dr,ds)
+-iva
+m@lemmaiva3:=lemmaivad3(r0,s0,t3".iva"):more"rp"(r0,s0)
+s0@[m:more"rp"(r0,s0)]
++*iva
+m@[l:less(pofrp(r0),pofrp(s0))]
+t4:=satz121(s0,r0,lemmaiva3(s0,r0,lemma2(pofrp(r0),pofrp(s0),l))):less"rp"(r0,s0)
+m@t5:=ec3e23(is"rp"(r0,s0),more"rp"(r0,s0),less"rp"(r0,s0),satz123b(r0,s0),m):not(less"rp"(r0,s0))
+t6:=th3"l.imp"(less(pofrp(r0),pofrp(s0)),less"rp"(r0,s0),t5,[t:less(pofrp(r0),pofrp(s0))]t4(t)):not(less(pofrp(r0),pofrp(s0)))
+t7:=ec3e21(is"rp"(r0,s0),more"rp"(r0,s0),less"rp"(r0,s0),satz123b(r0,s0),m):nis"rp"(r0,s0)
+t8:=th3"l.imp"(is(pofrp(r0),pofrp(s0)),is"rp"(r0,s0),t7,[t:is(pofrp(r0),pofrp(s0))]isrpip(r0,s0,t)):nis(pofrp(r0),pofrp(s0))
+-iva
+m@lemmaiva4:=or3e2(is(pofrp(r0),pofrp(s0)),more(pofrp(r0),pofrp(s0)),less(pofrp(r0),pofrp(s0)),satz167a(pofrp(r0),pofrp(s0)),t6".iva",t8".iva"):more(pofrp(r0),pofrp(s0))
+@[x:nat][y:nat][m:more(rlofnt(x),rlofnt(y))]
++*iva
+m@t9:=lemmaiva3(rpofnt(x),rpofnt(y),m):more"rp"(rpofnt(x),rpofnt(y))
+t10:=satz154d(rtofn(x),rtofn(y),t9):more"rt"(rtofn(x),rtofn(y))
+t11:=moree"rt"(rtofn(x),rtofn(y),fr(x,1),fr(y,1),inclass"rt"(fr(x,1)),inclass"rt"(fr(y,1)),t10):moref(fr(x,1),fr(y,1))
+-iva
+m@lemmaiva5:=satz111a(x,y,t11".iva"):more"n"(x,y)
+y@[m:more"n"(x,y)]
++*iva
+m@t12:=satz111d(x,y,m):moref(fr(x,1),fr(y,1))
+t13:=morei"rt"(rtofn(x),rtofn(y),fr(x,1),fr(y,1),inclass"rt"(fr(x,1)),inclass"rt"(fr(y,1)),t12):more"rt"(rtofn(x),rtofn(y))
+t14:=satz154a(rtofn(x),rtofn(y),t13):more"rp"(rpofnt(x),rpofnt(y))
+-iva
+m@lemmaiva6:=lemmaiva4(rpofnt(x),rpofnt(y),t14".iva"):more(rlofnt(x),rlofnt(y))
+@[r:real]
++int
+a0ir@[i:intrl(r)]
+t1:=intabsd(a0,intrlex(r,a0,a0ir,i)):intd(absd(a0))
+t2:=intrlin(abs(r),absd(a0),aica,t1):intrl(abs(r))
+-int
+[i:intrl(r)]
+intabs:=realapp1(r,intrl(abs(r)),[x:dif][t:inn(x,class(r))]t2".int"(r,x,t,i)):intrl(abs(r))
++*int
+i@t3:=intm0d(a0,intrlex(r,a0,a0ir,i)):intd(m0d(a0))
+t4:=intrlin(m0(r),m0d(a0),micm0,t3):intrl(m0(r))
+-int
+i@intm0:=realapp1(r,intrl(m0(r)),[x:dif][t:inn(x,class(r))]t4".int"(r,x,t,i)):intrl(m0(r))
++*int
+b1is@[i:intrl(r)][j:intrl(s)]
+t5:=intpd(a1,b1,intrlex(r,a1,a1ir,i),intrlex(s,b1,b1is,j)):intd(pd(a1,b1))
+t6:=intrlin(pl(r,s),pd(a1,b1),picp,t5):intrl(pl(r,s))
+-int
+i@[s:real][j:intrl(s)]
+intpl:=realapp2(r,s,intrl(pl(r,s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t6".int"(r,s,x,y,t,u,i,j)):intrl(pl(r,s))
+intmn:=intpl(r,i,m0(s),intm0(s,j)):intrl(mn(r,s))
++*int
+j@t7:=inttd(a1,b1,intrlex(r,a1,a1ir,i),intrlex(s,b1,b1is,j)):intd(td(a1,b1))
+t8:=intrlin(ts(r,s),td(a1,b1),tict,t7):intrl(ts(r,s))
+-int
+j@intts:=realapp2(r,s,intrl(ts(r,s)),[x:dif][y:dif][t:inn(x,class(r))][u:inn(y,class(s))]t8".int"(r,s,x,y,t,u,i,j)):intrl(ts(r,s))
+r@[n:natrl(r)]
++ivr24
+t1:=satz24a(ntofrl(r,n)):lessis"n"(1,ntofrl(r,n))
+t2:=th3"l.imp"(more(1rl,r),more"n"(1,ntofrl(r,n)),satz10d(1,ntofrl(r,n),t1),[t:more(1rl,r)]lemmaiva5(1,ntofrl(r,n),ismore2(r,rlofnt(ntofrl(r,n)),1rl,isrlnt1(r,n),t))):not(more(1rl,r))
+-ivr24
+satzr24:=satz167e(1rl,r,t2".ivr24"):lessis(1rl,r)
+r@[i:intrl(r)][s:real][j:intrl(s)][l:less(r,s)]
++ivr25
+t1:=satz182d(s,r,lemma2(r,s,l)):pos(mn(s,r))
+t2:=intmn(s,j,r,i):intrl(mn(s,r))
+t3:=posintnatrl(mn(s,r),t1,t2):natrl(mn(s,r))
+t4:=satzr24(mn(s,r),t3):lessis(1rl,mn(s,r))
+t5:=th9"l.or"(less(1rl,mn(s,r)),is(1rl,mn(s,r)),less(pl(1rl,r),pl(mn(s,r),r)),is(pl(1rl,r),pl(mn(s,r),r)),t4,[t:less(1rl,mn(s,r))]satz188f(1rl,mn(s,r),r,t),[t:is(1rl,mn(s,r))]ispl1(1rl,mn(s,r),r,t)):lessis(pl(1rl,r),pl(mn(s,r),r))
+-ivr25
+satzr25:=islessis12(pl(1rl,r),pl(r,1rl),pl(mn(s,r),r),s,compl(1rl,r),plmn(s,r),t5".ivr25"):lessis(pl(r,1rl),s)
+@[x:nat][y:nat]
++ivr155
+t1:=lemmaiva1(rpofnt(x),rpofnt(y)):is(pl(rlofnt(x),rlofnt(y)),pofrp(pl"rp"(rpofnt(x),rpofnt(y))))
+t2:=isrpep(rpofnt(pl"n"(x,y)),pl"rp"(rpofnt(x),rpofnt(y)),satz155e(x,y)):is(rlofnt(pl"n"(x,y)),pofrp(pl"rp"(rpofnt(x),rpofnt(y))))
+-ivr155
+satzr155a:=tris2(real,rlofnt(pl"n"(x,y)),pl(rlofnt(x),rlofnt(y)),pofrp(pl"rp"(rpofnt(x),rpofnt(y))),t2".ivr155",t1".ivr155"):is(rlofnt(pl"n"(x,y)),pl(rlofnt(x),rlofnt(y)))
+satzr155b:=symis(real,rlofnt(pl"n"(x,y)),pl(rlofnt(x),rlofnt(y)),satzr155a):is(pl(rlofnt(x),rlofnt(y)),rlofnt(pl"n"(x,y)))
++*ivr155
+y@t3:=lemmaiva2(rpofnt(x),rpofnt(y)):is(ts(rlofnt(x),rlofnt(y)),pofrp(ts"rp"(rpofnt(x),rpofnt(y))))
+t4:=isrpep(rpofnt(ts"n"(x,y)),ts"rp"(rpofnt(x),rpofnt(y)),satz155f(x,y)):is(rlofnt(ts"n"(x,y)),pofrp(ts"rp"(rpofnt(x),rpofnt(y))))
+-ivr155
+y@satzr155c:=tris2(real,rlofnt(ts"n"(x,y)),ts(rlofnt(x),rlofnt(y)),pofrp(ts"rp"(rpofnt(x),rpofnt(y))),t4".ivr155",t3".ivr155"):is(rlofnt(ts"n"(x,y)),ts(rlofnt(x),rlofnt(y)))
+satzr155d:=symis(real,rlofnt(ts"n"(x,y)),ts(rlofnt(x),rlofnt(y)),satzr155c):is(ts(rlofnt(x),rlofnt(y)),rlofnt(ts"n"(x,y)))
+@[t:real][r:real][s:real][a:and(not(neg(r)),is(ts(r,r),t))][b:and(not(neg(s)),is(ts(s,s),t))]
++7r161
+[c0:dif][cit:inn(c0,class(t))][a0:dif][air:inn(a0,class(r))][b0:dif][bis:inn(b0,class(s))]
+t1:=th3"l.imp"(negd(a0),neg(r),ande1(not(neg(r)),is(ts(r,r),t),a),[u:negd(a0)]negin(r,a0,air,u)):not(negd(a0))
+t2:=th3"l.imp"(negd(b0),neg(s),ande1(not(neg(s)),is(ts(s,s),t),b),[u:negd(b0)]negin(s,b0,bis,u)):not(negd(b0))
+t3:=isex(ts(r,r),t,td(a0,a0),c0,tict(r,r,a0,a0,air,air),cit,ande2(not(neg(r)),is(ts(r,r),t),a)):eq"rp"(td(a0,a0),c0)
+t4:=isex(ts(s,s),t,td(b0,b0),c0,tict(s,s,b0,b0,bis,bis),cit,ande2(not(neg(s)),is(ts(s,s),t),b)):eq"rp"(td(b0,b0),c0)
+t5:=isin(r,s,a0,b0,air,bis,satzd161b(c0,a0,b0,t1,t2,t3,t4)):is(r,s)
+-7r161
+satzr161b:=realapp3(t,r,s,is(r,s),[x:dif][y:dif][z:dif][u:inn(x,class(t))][v:inn(y,class(r))][w:inn(z,class(s))]t5".7r161"(x,u,y,v,z,w)):is(r,s)
+t@[n:not(neg(t))]
++*7r161
+n@[c0:dif][cit:inn(c0,class(t))]
+t6:=th3"l.imp"(negd(c0),neg(t),n,[u:negd(c0)]negin(t,c0,cit,u)):not(negd(c0))
+[a0:dif][a:and(not(negd(a0)),eq"rp"(td(a0,a0),c0))]
+ar:=realof(a0):real
+t7:=th3"l.imp"(neg(ar),negd(a0),ande1(not(negd(a0)),eq"rp"(td(a0,a0),c0),a),[u:neg(ar)]negex(ar,a0,innclass(a0),u)):not(neg(ar))
+t8:=isin(ts(ar,ar),t,td(a0,a0),c0,tict(ar,ar,a0,a0,innclass(a0),innclass(a0)),cit,ande2(not(negd(a0)),eq"rp"(td(a0,a0),c0),a)):is(ts(ar,ar),t)
+t9:=andi(not(neg(ar)),is(ts(ar,ar),t),t7,t8):and(not(neg(ar)),is(ts(ar,ar),t))
+t10:=somei(real,[u:real]and(not(neg(u)),is(ts(u,u),t)),ar,t9):some([u:real]and(not(neg(u)),is(ts(u,u),t)))
+cit@t11:=someapp(dif,[x:dif]and(not(negd(x)),eq"rp"(td(x,x),c0)),satzd161a(c0,t6),some([u:real]and(not(neg(u)),is(ts(u,u),t))),[x:dif][v:and(not(negd(x)),eq"rp"(td(x,x),c0))]t10(x,v)):some([u:real]and(not(neg(u)),is(ts(u,u),t)))
+-7r161
+n@satzr161a:=realapp1(t,some([u:real]and(not(neg(u)),is(ts(u,u),t))),[x:dif][v:inn(x,class(t))]t11".7r161"(x,v)):some([u:real]and(not(neg(u)),is(ts(u,u),t)))
+satzr161:=onei(real,[u:real]and(not(neg(u)),is(ts(u,u),t)),[u:real][v:real][a:and(not(neg(u)),is(ts(u,u),t))][b:and(not(neg(v)),is(ts(v,v),t))]satzr161b(u,v,a,b),satzr161a):one([u:real]and(not(neg(u)),is(ts(u,u),t)))
+sqrt:=ind(real,[u:real]and(not(neg(u)),is(ts(u,u),t)),satzr161):real
++*7r161
+n@t12:=oneax(real,[u:real]and(not(neg(u)),is(ts(u,u),t)),satzr161):and(not(neg(sqrt)),is(ts(sqrt,sqrt),t))
+-7r161
+n@thsqrt1a:=ande1(not(neg(sqrt)),is(ts(sqrt,sqrt),t),t12".7r161"):not(neg(sqrt))
+thsqrt1b:=ande2(not(neg(sqrt)),is(ts(sqrt,sqrt),t),t12".7r161"):is(ts(sqrt,sqrt),t)
+[x:real][o:not(neg(x))][i:is(ts(x,x),t)]
+thsqrt2:=satzr161b(x,sqrt,andi(not(neg(x)),is(ts(x,x),t),o,i),t12".7r161"):is(x,sqrt(t,n))
+o@[i:is(t,ts(x,x))]
+thsqrt3:=symis(real,x,sqrt(t,n),thsqrt2(symis(real,t,ts(x,x),i))):is(sqrt(t,n),x)
+@[r:real][s:real][n:not(neg(r))][o:not(neg(s))][i:is(r,s)]
+issqrt:=thsqrt2(s,o,sqrt(r,n),thsqrt1a(r,n),tris(real,ts(sqrt(r,n),sqrt(r,n)),r,s,thsqrt1b(r,n),i)):is(sqrt(r,n),sqrt(s,o))
+r@[n:not(neg(r))][i:is(r,0)]
+sqrt0:=thsqrt3(r,n,0,0notn(0,refis(real,0)),tris2(real,r,ts(0,0),0,i,ts01(0,0,refis(real,0)))):is(sqrt(r,n),0)
+n@[o:nis(r,0)]
++sqrt
+t1:=th3"l.imp"(is(sqrt(r,n),0),is(r,0),o,[t:is(sqrt(r,n),0)]tris1(real,r,0,ts(sqrt(r,n),sqrt(r,n)),thsqrt1b(r,n),ts01(sqrt(r,n),sqrt(r,n),t))):nis(sqrt(r,n),0)
+-sqrt
+sqrtnot0:=or3e2(is(sqrt(r,n),0),pos(sqrt(r,n)),neg(sqrt(r,n)),axrlo(sqrt(r,n)),thsqrt1a(r,n),t1".sqrt"):pos(sqrt(r,n))
+@[r:real][s:real][t:real][n:nis(t,0)]
++v0
+t1:=tr3is(real,ts(t,ts(r,ov(s,t,n))),ts(ts(r,ov(s,t,n)),t),ts(r,ts(ov(s,t,n),t)),ts(r,s),comts(t,ts(r,ov(s,t,n))),assts1(r,ov(s,t,n),t),ists2(ts(ov(s,t,n),t),s,r,satz204e(s,t,n))):is(ts(t,ts(r,ov(s,t,n))),ts(r,s))
+-v0
+lemma6:=satz204g(ts(r,s),t,ts(r,ov(s,t,n)),n,t1".v0"):is(ts(r,ov(s,t,n)),ov(ts(r,s),t,n))
++*v0
+n@t2:=tris(real,ts(t,pl(ov(r,t,n),ov(s,t,n))),pl(ts(t,ov(r,t,n)),ts(t,ov(s,t,n))),pl(r,s),disttp2(t,ov(r,t,n),ov(s,t,n)),ispl12(ts(t,ov(r,t,n)),r,ts(t,ov(s,t,n)),s,satz204c(r,t,n),satz204c(s,t,n))):is(ts(t,pl(ov(r,t,n),ov(s,t,n))),pl(r,s))
+-v0
+n@lemma7:=satz204g(pl(r,s),t,pl(ov(r,t,n),ov(s,t,n)),n,t2".v0"):is(pl(ov(r,t,n),ov(s,t,n)),ov(pl(r,s),t,n))
+r@[n:nis(r,0)]
+lemma8:=satz204b(r,r,n,ov(r,r,n),1rl,satz204c(r,r,n),satz195(r)):is(ov(r,r,n),1rl)
+lemma9:=ore2(is(r,0),is(ov(0,r,n),0),satz192c(r,ov(0,r,n),satz204c(0,r,n)),n):is(ov(0,r,n),0)
+r@[i:is(r,m0(r))]
++*v0
+i@[p:pos(m0(r))]
+t3:=<isneg(r,m0(r),i,satz176f(r,p))>pnotn(m0(r),p):con
+i@[n:neg(m0(r))]
+t4:=<ispos(r,m0(r),i,satz176d(r,n))>nnotp(m0(r),n):con
+-v0
+i@lemma10:=satz176e(r,or3e1(is(m0(r),0),pos(m0(r)),neg(m0(r)),axrlo(m0(r)),[t:pos(m0(r))]t3".v0"(t),[t:neg(m0(r))]t4".v0"(t))):is(r,0)
+r@lemma11:=satz167f(ts(r,r),0,th3"l.imp"(less(ts(r,r),0),neg(ts(r,r)),nnegsq(r),[t:less(ts(r,r),0)]satz169d(ts(r,r),t))):moreis(ts(r,r),0)
+lemma12:=rapp(r,is(ts(r,r),ts(abs(r),abs(r))),[t:pos(r)]satz196a(r,r,t,t),[t:is(r,0)]tris2(real,ts(r,r),ts(abs(r),abs(r)),0,ts01(r,r,t),ts01(abs(r),abs(r),abs0(r,t))),[t:neg(r)]satz196b(r,r,t,t)):is(ts(r,r),ts(abs(r),abs(r)))
+@[x:real][ix:intrl(x)][y:real][iy:intrl(y)][ly:lessis(y,x)]
++shift
+t1:=satz190a(x,x,1rl,0,moreisi2(x,x,refis(real,x)),satz169a(1rl,natpos(1rl,natrl1))):more(pl(x,1rl),pl(x,0))
+t2:=ismore2(pl(x,0),x,pl(x,1rl),pl02(x,0,refis(real,0)),t1):more(pl(x,1rl),x)
+t3:=satz172d(pl(x,1rl),x,y,t2,satz168b(y,x,ly)):more(pl(x,1rl),y)
+t4:=satz182d(pl(x,1rl),y,t3):pos(mn(pl(x,1rl),y))
+t5:=intmn(pl(x,1rl),intpl(x,ix,1rl,intrl1),y,iy):intrl(mn(pl(x,1rl),y))
+t6:=posintnatrl(mn(pl(x,1rl),y),t4,t5):natrl(mn(pl(x,1rl),y))
+-shift
+shiftl:=ntofrl(mn(pl(x,1rl),y),t6".shift"):nat
+[n:1to(shiftl)]
++*shift
+n@n1:=inn"n"(shiftl,n):nat
+t7:=1top(shiftl,n):lessis"n"(n1,shiftl)
+n2:=rlofnt(n1):real
+t8:=natintrl(n2,natrli(n1)):intrl(n2)
+-shift
+n@shiftr:=mn(pl(n2".shift",y),1rl):real
+intshiftr:=intmn(pl(n2".shift",y),intpl(n2".shift",t8".shift",y,iy),1rl,intrl1):intrl(shiftr)
+[m:1to(shiftl)][i:is(shiftr(n),shiftr(m))]
++*shift
+n@t8a:=tris(real,mn(pl(shiftr(n),1rl),y),mn(pl(n2,y),y),n2,ismn1(pl(mn(pl(n2,y),1rl),1rl),pl(n2,y),y,plmn(pl(n2,y),1rl)),mnpl(n2,y)):is(mn(pl(shiftr(n),1rl),y),n2)
+i@t9a:=ismn1(pl(shiftr(n),1rl),pl(shiftr(m),1rl),y,ispl1(shiftr(n),shiftr(m),1rl,i)):is(mn(pl(shiftr(n),1rl),y),mn(pl(shiftr(m),1rl),y))
+t10a:=tr3is(real,n2(n),mn(pl(shiftr(n),1rl),y),mn(pl(shiftr(m),1rl),y),n2(m),symis(real,mn(pl(shiftr(n),1rl),y),n2,t8a),t9a,t8a(m)):is(n2(n),n2(m))
+t11a:=isntirl(n1(n),n1(m),t10a):is"n"(n1(n),n1(m))
+-shift
+i@iseshiftr:=isinne(shiftl,n,m,t11a".shift"):is"e"(1to(shiftl),n,m)
++*shift
+n@[m:more(shiftr,x)]
+t9:=satz188d(shiftr,x,1rl,m):more(pl(shiftr,1rl),pl(x,1rl))
+t10:=ismore1(pl(shiftr,1rl),pl(n2,y),pl(x,1rl),plmn(pl(n2,y),1rl),t9):more(pl(n2,y),pl(x,1rl))
+t11:=satz188d(pl(n2,y),pl(x,1rl),m0(y),t10):more(mn(pl(n2,y),y),mn(pl(x,1rl),y))
+t12:=ismore1(mn(pl(n2,y),y),n2,mn(pl(x,1rl),y),mnpl(n2,y),t11):more(n2,mn(pl(x,1rl),y))
+t13:=ismore12(n2,rlofnt(ntofrl(n2,natrli(n1))),mn(pl(x,1rl),y),rlofnt(ntofrl(mn(pl(x,1rl),y),t6)),isrlnt1(n2,natrli(n1)),isrlnt1(mn(pl(x,1rl),y),t6),t12):more(rlofnt(ntofrl(n2,natrli(n1))),rlofnt(shiftl))
+t14:=lemmaiva5(ntofrl(n2,natrli(n1)),shiftl,t13):more"n"(ntofrl(n2,natrli(n1)),shiftl)
+t15:=ismore1"n"(ntofrl(n2,natrli(n1)),n1,shiftl,isntrl2(n1),t14):more"n"(n1,shiftl)
+n@t16:=th3"l.imp"(more(shiftr,x),more"n"(n1,shiftl),satz10d(n1,shiftl,t7),[t:more(shiftr,x)]t15(t)):not(more(shiftr,x))
+-shift
+n@shiftrls:=satz167e(shiftr,x,t16".shift"):lessis(shiftr,x)
++*shift
+n@[m:more(y,shiftr)]
+t17:=satz188d(y,shiftr,1rl,m):more(pl(y,1rl),pl(shiftr,1rl))
+t18:=ismore12(pl(y,1rl),pl(1rl,y),pl(shiftr,1rl),pl(n2,y),compl(y,1rl),plmn(pl(n2,y),1rl),t17):more(pl(1rl,y),pl(n2,y))
+t19:=satz188a(1rl,n2,y,t18):more(1rl,n2)
+t20:=lemmaiva5(1,n1,t19):more"n"(1,n1)
+n@t21:=th3"l.imp"(more(y,shiftr),more"n"(1,n1),satz10d(1,n1,satz24a(n1)),[t:more(y,shiftr)]t20(t)):not(more(y,shiftr))
+-shift
+n@lsshiftr:=satz167e(y,shiftr,t21".shift"):lessis(y,shiftr)
+ly@[u:real][a:and3(intrl(u),lessis(y,u),lessis(u,x))]
++*shift
+a@t22:=and3e1(intrl(u),lessis(y,u),lessis(u,x),a):intrl(u)
+t23:=and3e2(intrl(u),lessis(y,u),lessis(u,x),a):lessis(y,u)
+t24:=and3e3(intrl(u),lessis(y,u),lessis(u,x),a):lessis(u,x)
+[l:less(u,x)]
+t25:=satz188f(pl(u,1rl),pl(x,1rl),m0"r"(y),satz188f(u,x,1rl,l)):less(mn(pl(u,1rl),y),mn(pl(x,1rl),y))
+a@[i:is(u,x)]
+t26:=ismn1(pl(u,1rl),pl(x,1rl),y,ispl1(u,x,1rl,i)):is(mn(pl(u,1rl),y),mn(pl(x,1rl),y))
+a@t27:=th9"l.or"(less(u,x),is(u,x),less(mn(pl(u,1rl),y),mn(pl(x,1rl),y)),is(mn(pl(u,1rl),y),mn(pl(x,1rl),y)),t24,[t:less(u,x)]t25(t),[t:is(u,x)]t26(t)):lessis(mn(pl(u,1rl),y),mn(pl(x,1rl),y))
+ul:=shiftl(u,t22,y,iy,t23):nat
+t28:=islessis12(mn(pl(u,1rl),y),rlofnt(ul),mn(pl(x,1rl),y),rlofnt(shiftl),isrlnt1(mn(pl(u,1rl),y),t6(u,t22,y,iy,t23)),isrlnt1(mn(pl(x,1rl),y),t6),t27):lessis(rlofnt(ul),rlofnt(shiftl))
+t29:=th3"l.imp"(more"n"(ul,shiftl),more(rlofnt(ul),rlofnt(shiftl)),satz167d(rlofnt(ul),rlofnt(shiftl),t28),[t:more"n"(ul,shiftl)]lemmaiva6(ul,shiftl,t)):not(more"n"(ul,shiftl))
+t30:=satz10e(ul,shiftl,t29):lessis"n"(ul,shiftl)
+-shift
+a@shiftl1:=outn(shiftl,ul".shift",t30".shift"):1to(shiftl)
++*shift
+a@t31:=isinoutn(shiftl,ul,t30):is"n"(ul,n1(shiftl1))
+t32:=tris(real,mn(pl(u,1rl),y),rlofnt(ul),n2(shiftl1),isrlnt1(mn(pl(u,1rl),y),t6(u,t22,y,iy,t23)),isnterl(ul,n1(shiftl1),t31)):is(mn(pl(u,1rl),y),n2(shiftl1))
+t33:=tris(real,mn(pl(mn(pl(u,1rl),y),y),1rl),mn(pl(u,1rl),1rl),u,ismn1(pl(mn(pl(u,1rl),y),y),pl(u,1rl),1rl,plmn(pl(u,1rl),y)),mnpl(u,1rl)):is(mn(pl(mn(pl(u,1rl),y),y),1rl),u)
+-shift
+a@shiftinv1:=tris1(real,u,shiftr(shiftl1),mn(pl(mn(pl(u,1rl),y),y),1rl),t33".shift",ismn1(pl(mn(pl(u,1rl),y),y),pl(n2".shift"(shiftl1),y),1rl,ispl1(mn(pl(u,1rl),y),n2".shift"(shiftl1),y,t32".shift"))):is(u,shiftr(shiftl1))
+shiftinv2:=symis(real,u,shiftr(shiftl1),shiftinv1):is(shiftr(shiftl1),u)
+ly@[alpha:'type']
+seq:=[t:real][u:intrl(t)][v:lessis(y,t)][w:lessis(t,x)]alpha:'type'
+[s:seq]
+proofsirrelevant:=[t:real][it:intrl(t)][lt:lessis(y,t)][tl:lessis(t,x)][u:real][iu:intrl(u)][lu:lessis(y,u)][ul:lessis(u,x)][v:is(t,u)]is"e"(alpha,<tl><lt><it><t>s,<ul><lu><iu><u>s):'prop'
+alpha@[f:seq]
+shiftf:=[t:1to(shiftl)]<shiftrls(t)><lsshiftr(t)><intshiftr(t)><shiftr(t)>f:[t:1to(shiftl)]alpha
+ly@[s:seq(real)]
+inseq:=[t:real][u:intrl(t)][v:lessis(y,t)][w:lessis(t,x)]and3(intrl(<w><v><u><t>s),lessis(y,<w><v><u><t>s),lessis(<w><v><u><t>s,x)):'prop'
+injseq:=[t:real][it:intrl(t)][lt:lessis(y,t)][tl:lessis(t,x)][u:real][iu:intrl(u)][lu:lessis(y,u)][ul:lessis(u,x)][v:is"r"(<tl><lt><it><t>s,<ul><lu><iu><u>s)]is"r"(t,u):'prop'
+[u:real][v:real][a:and3(intrl(v),lessis(y,v),lessis(v,x))]
++*shift
+a@prop1:=is(u,<t24(v,a)><t23(v,a)><t22(v,a)><v>s):'prop'
+-shift
+v@improp:=and(and3(intrl(v),lessis(y,v),lessis(v,x)),[t:and3(intrl(v),lessis(y,v),lessis(v,x))]prop1".shift"(t)):'prop'
+u@imseq:=some([t:real]improp(u,t)):'prop'
+s@surjseq:=[t:real][u:intrl(t)][v:lessis(y,t)][w:lessis(t,x)]imseq(t):'prop'
+perm:=and(injseq,surjseq):'prop'
+[ins:inseq(s)]
++*shift
+ins@[n:1to(shiftl)]
+ns:=<shiftrls(n)><lsshiftr(n)><intshiftr(n)><shiftr(n)>s:real
+t34:=<shiftrls(n)><lsshiftr(n)><intshiftr(n)><shiftr(n)>ins:and3(intrl(ns),lessis(y,ns),lessis(ns,x))
+-shift
+ins@shiftseq:=[t:1to(shiftl)]shiftl1(ns".shift"(t),t34".shift"(t)):[t:1to(shiftl)]1to(shiftl)
+[js:injseq(s)]
++*shift
+js@[n:1to(shiftl)][m:1to(shiftl)][i:is"e"(1to(shiftl),<n>shiftseq,<m>shiftseq)]
+t35:=isoutne(shiftl,ul(ns(n),t34(n)),t30(ns(n),t34(n)),ul(ns(m),t34(m)),t30(ns(m),t34(m)),i):is"n"(ul(ns(n),t34(n)),ul(ns(m),t34(m)))
+t36:=isrlint(mn(pl(ns(n),1rl),y),t6(ns(n),t22(ns(n),t34(n)),y,iy,t23(ns(n),t34(n))),mn(pl(ns(m),1rl),y),t6(ns(m),t22(ns(m),t34(m)),y,iy,t23(ns(m),t34(m))),t35):is(mn(pl(ns(n),1rl),y),mn(pl(ns(m),1rl),y))
+t37:=satz188b(ns(n),ns(m),1rl,satz188b(pl(ns(n),1rl),pl(ns(m),1rl),m0"r"(y),t36)):is(ns(n),ns(m))
+t38:=<t37><shiftrls(m)><lsshiftr(m)><intshiftr(m)><shiftr(m)><shiftrls(n)><lsshiftr(n)><intshiftr(n)><shiftr(n)>js:is(shiftr(n),shiftr(m))
+t39:=satz188b(n2(n),n2(m),y,satz188b(pl(n2(n),y),pl(n2(m),y),m0(1rl),t38)):is(n2(n),n2(m))
+t40:=isntirl(n1(n),n1(m),t39):is"n"(n1(n),n1(m))
+t41:=isinne(shiftl,n,m,t40):is"e"(1to(shiftl),n,m)
+-shift
+js@injshiftseq:=[t:1to(shiftl)][u:1to(shiftl)][v:is"e"(1to(shiftl),<t>shiftseq,<u>shiftseq)]t41".shift"(t,u,v):injective(1to(shiftl),1to(shiftl),shiftseq)
+ins@[pri:proofsirrelevant(real,s)][ss:surjseq(s)]
++*shift
+ss@[n:1to(shiftl)]
+t42:=<shiftrls(n)><lsshiftr(n)><intshiftr(n)><shiftr(n)>ss:imseq(shiftr(n))
+[u:real][p:improp(shiftr(n),u)]
+t43:=ande1(and3(intrl(u),lessis(y,u),lessis(u,x)),[t:and3(intrl(u),lessis(y,u),lessis(u,x))]prop1(shiftr(n),u,t),p):and3(intrl(u),lessis(y,u),lessis(u,x))
+t44:=ande2"l.r"(and3(intrl(u),lessis(y,u),lessis(u,x)),[t:and3(intrl(u),lessis(y,u),lessis(u,x))]prop1(shiftr(n),u,t),p):is(shiftr(n),<t24(u,t43)><t23(u,t43)><t22(u,t43)><u>s)
+ul1:=shiftl1(u,t43):1to(shiftl)
+t45:=<shiftinv1(u,t43)><shiftrls(ul1)><lsshiftr(ul1)><intshiftr(ul1)><shiftr(ul1)><t24(u,t43)><t23(u,t43)><t22(u,t43)><u>pri:is(<t24(u,t43)><t23(u,t43)><t22(u,t43)><u>s,ns(ul1))
+t46:=shiftinv1(ns(ul1),t34(ul1)):is(ns(ul1),shiftr(<ul1>shiftseq))
+t47:=tr3is(real,shiftr(n),<t24(u,t43)><t23(u,t43)><t22(u,t43)><u>s,ns(ul1),shiftr(<ul1>shiftseq),t44,t45,t46):is(shiftr(n),shiftr(<ul1>shiftseq))
+t48:=iseshiftr(n,<ul1>shiftseq,t47):is"e"(1to(shiftl),n,<ul1>shiftseq)
+t49:=somei(1to(shiftl),[t:1to(shiftl)]is"e"(1to(shiftl),n,<t>shiftseq),ul1,t48):image(1to(shiftl),1to(shiftl),shiftseq,n)
+n@t50:=someapp(real,[t:real]improp(shiftr(n),t),t42,image(1to(shiftl),1to(shiftl),shiftseq,n),[t:real][u:improp(shiftr(n),t)]t49(t,u)):image(1to(shiftl),1to(shiftl),shiftseq,n)
+-shift
+ss@surjshiftseq:=[t:1to(shiftl)]t50".shift"(t):surjective(1to(shiftl),1to(shiftl),shiftseq)
+pri@[ps:perm(s)]
+bijshiftseq:=andi(injective(1to(shiftl),1to(shiftl),shiftseq),surjective(1to(shiftl),1to(shiftl),shiftseq),injshiftseq(ande1(injseq(s),surjseq(s),ps)),surjshiftseq(ande2(injseq(s),surjseq(s),ps))):bijective(1to(shiftl),1to(shiftl),shiftseq)
++c
+@complex:=pair1type(real):'type'
+cx:=complex:'type'
+[x:complex][y:complex]
+is:=is"e"(cx,x,y):'prop'
+nis:=not(is(x,y)):'prop'
+@[p:[t:complex]'prop']
+some:=some"l"(cx,p):'prop'
+all:=all"l"(cx,p):'prop'
+one:=one"e"(cx,p):'prop'
+@[a:real][b:real]
+pli:=pair1(real,a,b):complex
+x@re:=first1(real,x):real
+im:=second1(real,x):real
+b@reis:=first1is1(real,a,b):is"r"(re(pli(a,b)),a)
+isre:=first1is2(real,a,b):is"r"(a,re(pli(a,b)))
+imis:=second1is1(real,a,b):is"r"(im(pli(a,b)),b)
+isim:=second1is2(real,a,b):is"r"(b,im(pli(a,b)))
+x@pliis:=pair1is1(real,x):is(pli(re(x),im(x)),x)
+ispli:=pair1is2(real,x):is(x,pli(re(x),im(x)))
+y@[i:is(x,y)]
+iscere:=isf(cx,real,[t:cx]re(t),x,y,i):is"r"(re(x),re(y))
+isceim:=isf(cx,real,[t:cx]im(t),x,y,i):is"r"(im(x),im(y))
+b@[c:real][i:is"r"(a,b)]
+isrecx1:=isf(real,cx,[t:real]pli(t,c),a,b,i):is(pli(a,c),pli(b,c))
+isrecx2:=isf(real,cx,[t:real]pli(c,t),a,b,i):is(pli(c,a),pli(c,b))
+c@[d:real][i:is"r"(a,b)][j:is"r"(c,d)]
+isrecx12:=tris(cx,pli(a,c),pli(b,c),pli(b,d),isrecx1(a,b,c,i),isrecx2(c,d,b,j)):is(pli(a,c),pli(b,d))
+x@satz206:=refis(cx,x):is(x,x)
+y@[i:is(x,y)]
+satz207:=symis(cx,x,y,i):is(y,x)
+y@[z:complex][i:is(x,y)][j:is(y,z)]
+satz208:=tris(cx,x,y,z,i,j):is(x,z)
+@0c:=pli(0,0):complex
+1c:=pli(1rl,0):complex
+y@pl:=pli(pl"r"(re(x),re(y)),pl"r"(im(x),im(y))):complex
+d@plis12a:=isrecx12(pl"r"(re(pli(a,b)),re(pli(c,d))),pl"r"(a,c),pl"r"(im(pli(a,b)),im(pli(c,d))),pl"r"(b,d),ispl12(re(pli(a,b)),a,re(pli(c,d)),c,reis(a,b),reis(c,d)),ispl12(im(pli(a,b)),b,im(pli(c,d)),d,imis(a,b),imis(c,d))):is(pl(pli(a,b),pli(c,d)),pli(pl"r"(a,c),pl"r"(b,d)))
+plis12b:=symis(cx,pl(pli(a,b),pli(c,d)),pli(pl"r"(a,c),pl"r"(b,d)),plis12a):is(pli(pl"r"(a,c),pl"r"(b,d)),pl(pli(a,b),pli(c,d)))
+x@[r:real][s:real]
+plis1a:=isrecx12(pl"r"(re(pli(r,s)),re(x)),pl"r"(r,re(x)),pl"r"(im(pli(r,s)),im(x)),pl"r"(s,im(x)),ispl1(re(pli(r,s)),r,re(x),reis(r,s)),ispl1(im(pli(r,s)),s,im(x),imis(r,s))):is(pl(pli(r,s),x),pli(pl"r"(r,re(x)),pl"r"(s,im(x))))
+plis1b:=symis(cx,pl(pli(r,s),x),pli(pl"r"(r,re(x)),pl"r"(s,im(x))),plis1a):is(pli(pl"r"(r,re(x)),pl"r"(s,im(x))),pl(pli(r,s),x))
+plis2a:=isrecx12(pl"r"(re(x),re(pli(r,s))),pl"r"(re(x),r),pl"r"(im(x),im(pli(r,s))),pl"r"(im(x),s),ispl2(re(pli(r,s)),r,re(x),reis(r,s)),ispl2(im(pli(r,s)),s,im(x),imis(r,s))):is(pl(x,pli(r,s)),pli(pl"r"(re(x),r),pl"r"(im(x),s)))
+plis2b:=symis(cx,pl(x,pli(r,s)),pli(pl"r"(re(x),r),pl"r"(im(x),s)),plis2a):is(pli(pl"r"(re(x),r),pl"r"(im(x),s)),pl(x,pli(r,s)))
+z@[i:is(x,y)]
+ispl1:=isf(cx,cx,[t:cx]pl(t,z),x,y,i):is(pl(x,z),pl(y,z))
+ispl2:=isf(cx,cx,[t:cx]pl(z,t),x,y,i):is(pl(z,x),pl(z,y))
+z@[u:complex][i:is(x,y)][j:is(z,u)]
+ispl12:=tris(cx,pl(x,z),pl(y,z),pl(y,u),ispl1(x,y,z,i),ispl2(z,u,y,j)):is(pl(x,z),pl(y,u))
+y@satz209:=isrecx12(pl"r"(re(x),re(y)),pl"r"(re(y),re(x)),pl"r"(im(x),im(y)),pl"r"(im(y),im(x)),compl(re(x),re(y)),compl(im(x),im(y))):is(pl(x,y),pl(y,x))
+compl:=satz209:is(pl(x,y),pl(y,x))
+x@satz210:=tr3is(cx,pl(x,0c),pli(pl"r"(re(x),0),pl"r"(im(x),0)),pli(re(x),im(x)),x,plis2a(x,0,0),isrecx12(pl"r"(re(x),0),re(x),pl"r"(im(x),0),im(x),pl02(re(x),0,refis(real,0)),pl02(im(x),0,refis(real,0))),pliis(x)):is(pl(x,0c),x)
+satz210a:=symis(cx,pl(x,0c),x,satz210):is(x,pl(x,0c))
+satz210b:=tris(cx,pl(0c,x),pl(x,0c),x,compl(0c,x),satz210):is(pl(0c,x),x)
+satz210c:=symis(cx,pl(0c,x),x,satz210b):is(x,pl(0c,x))
+z@satz211:=tr3is(cx,pl(pl(x,y),z),pli(pl"r"(pl"r"(re(x),re(y)),re(z)),pl"r"(pl"r"(im(x),im(y)),im(z))),pli(pl"r"(re(x),pl"r"(re(y),re(z))),pl"r"(im(x),pl"r"(im(y),im(z)))),pl(x,pl(y,z)),plis1a(z,pl"r"(re(x),re(y)),pl"r"(im(x),im(y))),isrecx12(pl"r"(pl"r"(re(x),re(y)),re(z)),pl"r"(re(x),pl"r"(re(y),re(z))),pl"r"(pl"r"(im(x),im(y)),im(z)),pl"r"(im(x),pl"r"(im(y),im(z))),asspl1(re(x),re(y),re(z)),asspl1(im(x),im(y),im(z))),plis2b(x,pl"r"(re(y),re(z)),pl"r"(im(y),im(z)))):is(pl(pl(x,y),z),pl(x,pl(y,z)))
+asspl1:=satz211:is(pl(pl(x,y),z),pl(x,pl(y,z)))
+asspl2:=symis(cx,pl(pl(x,y),z),pl(x,pl(y,z)),asspl1):is(pl(x,pl(y,z)),pl(pl(x,y),z))
+y@[u:complex][i:is(pl(y,u),x)]
++2212
+t1:=tris(real,pl"r"(re(y),re(u)),re(pl(y,u)),re(x),isre(pl"r"(re(y),re(u)),pl"r"(im(y),im(u))),iscere(pl(y,u),x,i)):is"r"(pl"r"(re(y),re(u)),re(x))
+t2:=tris(real,pl"r"(im(y),im(u)),im(pl(y,u)),im(x),isim(pl"r"(re(y),re(u)),pl"r"(im(y),im(u))),isceim(pl(y,u),x,i)):is"r"(pl"r"(im(y),im(u)),im(x))
+t3:=satz187d(re(x),re(y),re(u),t1):is"r"(re(u),mn(re(x),re(y)))
+t4:=satz187d(im(x),im(y),im(u),t2):is"r"(im(u),mn(im(x),im(y)))
+-2212
+satz212a:=tris(cx,u,pli(re(u),im(u)),pli(mn(re(x),re(y)),mn(im(x),im(y))),ispli(u),isrecx12(re(u),mn(re(x),re(y)),im(u),mn(im(x),im(y)),t3".2212",t4".2212")):is(u,pli(mn(re(x),re(y)),mn(im(x),im(y))))
+y@satz212b:=tr3is(cx,pl(y,pli(mn(re(x),re(y)),mn(im(x),im(y)))),pli(pl"r"(re(y),mn(re(x),re(y))),pl"r"(im(y),mn(im(x),im(y)))),pli(re(x),im(x)),x,plis2a(y,mn(re(x),re(y)),mn(im(x),im(y))),isrecx12(pl"r"(re(y),mn(re(x),re(y))),re(x),pl"r"(im(y),mn(im(x),im(y))),im(x),satz187a(re(x),re(y)),satz187a(im(x),im(y))),pliis(x)):is(pl(y,pli(mn(re(x),re(y)),mn(im(x),im(y)))),x)
+satz212c:=somei(cx,[t:cx]is(pl(y,t),x),pli(mn(re(x),re(y)),mn(im(x),im(y))),satz212b):some([t:complex]is(pl(y,t),x))
+satz212:=onei(cx,[t:cx]is(pl(y,t),x),[t:cx][u:cx][v:is(pl(y,t),x)][w:is(pl(y,u),x)]tris2(cx,t,u,pli(mn(re(x),re(y)),mn(im(x),im(y))),satz212a(t,v),satz212a(u,w)),satz212c):one([t:complex]is(pl(y,t),x))
+%satz212:=onei(cx,[t:cx]is(pl(y,t),x),[t:cx][u:cx][v:is(pl(y,t),x)][w:is(pl(y,u),x)]tris2(cx,t,u,v),satz212a(u,w)),satz212c):one([t:complex]is(pl(y,t),x))
+mn:=pli(mn"r"(re(x),re(y)),mn"r"(im(x),im(y))):complex
+d@mnis12a:=isrecx12(mn"r"(re(pli(a,b)),re(pli(c,d))),mn"r"(a,c),mn"r"(im(pli(a,b)),im(pli(c,d))),mn"r"(b,d),ismn12(re(pli(a,b)),a,re(pli(c,d)),c,reis(a,b),reis(c,d)),ismn12(im(pli(a,b)),b,im(pli(c,d)),d,imis(a,b),imis(c,d))):is(mn(pli(a,b),pli(c,d)),pli(mn"r"(a,c),mn"r"(b,d)))
+mnis12b:=symis(cx,mn(pli(a,b),pli(c,d)),pli(mn"r"(a,c),mn"r"(b,d)),mnis12a):is(pli(mn"r"(a,c),mn"r"(b,d)),mn(pli(a,b),pli(c,d)))
+x@[r:real][s:real]
+mnis1a:=isrecx12(mn"r"(re(pli(r,s)),re(x)),mn"r"(r,re(x)),mn"r"(im(pli(r,s)),im(x)),mn"r"(s,im(x)),ismn1(re(pli(r,s)),r,re(x),reis(r,s)),ismn1(im(pli(r,s)),s,im(x),imis(r,s))):is(mn(pli(r,s),x),pli(mn"r"(r,re(x)),mn"r"(s,im(x))))
+mnis1b:=symis(cx,mn(pli(r,s),x),pli(mn"r"(r,re(x)),mn"r"(s,im(x))),mnis1a):is(pli(mn"r"(r,re(x)),mn"r"(s,im(x))),mn(pli(r,s),x))
+mnis2a:=isrecx12(mn"r"(re(x),re(pli(r,s))),mn"r"(re(x),r),mn"r"(im(x),im(pli(r,s))),mn"r"(im(x),s),ismn2(re(pli(r,s)),r,re(x),reis(r,s)),ismn2(im(pli(r,s)),s,im(x),imis(r,s))):is(mn(x,pli(r,s)),pli(mn"r"(re(x),r),mn"r"(im(x),s)))
+mnis2b:=symis(cx,mn(x,pli(r,s)),pli(mn"r"(re(x),r),mn"r"(im(x),s)),mnis2a):is(pli(mn"r"(re(x),r),mn"r"(im(x),s)),mn(x,pli(r,s)))
+z@[i:is(x,y)]
+ismn1:=isf(cx,cx,[t:cx]mn(t,z),x,y,i):is(mn(x,z),mn(y,z))
+ismn2:=isf(cx,cx,[t:cx]mn(z,t),x,y,i):is(mn(z,x),mn(z,y))
+z@[u:complex][i:is(x,y)][j:is(z,u)]
+ismn12:=tris(cx,mn(x,z),mn(y,z),mn(y,u),ismn1(x,y,z,i),ismn2(z,u,y,j)):is(mn(x,z),mn(y,u))
+y@[u:complex][i:is(pl(y,u),x)]
+satz212d:=satz212a(u,i):is(u,mn(x,y))
+satz212e:=symis(cx,u,mn(x,y),satz212d):is(mn(x,y),u)
+u@[i:is(pl(u,y),x)]
+satz212f:=satz212d(tris(cx,pl(y,u),pl(u,y),x,compl(y,u),i)):is(u,mn(x,y))
+satz212g:=symis(cx,u,mn(x,y),satz212f):is(mn(x,y),u)
+y@satz212h:=satz212b:is(pl(y,mn(x,y)),x)
+[i:is(mn(x,y),0c)]
++2213
+t1:=tr3is(real,mn"r"(re(x),re(y)),re(mn(x,y)),re(0c),0,isre(mn"r"(re(x),re(y)),mn"r"(im(x),im(y))),iscere(mn(x,y),0c,i),reis(0,0)):is"r"(mn"r"(re(x),re(y)),0)
+t2:=tr3is(real,mn"r"(im(x),im(y)),im(mn(x,y)),im(0c),0,isim(mn"r"(re(x),re(y)),mn"r"(im(x),im(y))),isceim(mn(x,y),0c,i),imis(0,0)):is"r"(mn"r"(im(x),im(y)),0)
+t3:=satz182b(re(x),re(y),t1):is"r"(re(x),re(y))
+t4:=satz182b(im(x),im(y),t2):is"r"(im(x),im(y))
+-2213
+satz213a:=tr3is(cx,x,pli(re(x),im(x)),pli(re(y),im(y)),y,ispli(x),isrecx12(re(x),re(y),im(x),im(y),t3".2213",t4".2213"),pliis(y)):is(x,y)
+y@[i:is(x,y)]
++*2213
+i@t5:=satz182e(re(x),re(y),iscere(x,y,i)):is"r"(mn"r"(re(x),re(y)),0)
+t6:=satz182e(im(x),im(y),isceim(x,y,i)):is"r"(mn"r"(im(x),im(y)),0)
+-2213
+i@satz213b:=isrecx12(mn"r"(re(x),re(y)),0,mn"r"(im(x),im(y)),0,t5".2213",t6".2213"):is(mn(x,y),0c)
+x@m0:=mn(0c,x):complex
+satz214:=isrecx12(mn"r"(re(0c),re(x)),m0"r"(re(x)),mn"r"(im(0c),im(x)),m0"r"(im(x)),pl01(re(0c),m0"r"(re(x)),reis(0,0)),pl01(im(0c),m0"r"(im(x)),imis(0,0))):is(m0(x),pli(m0"r"(re(x)),m0"r"(im(x))))
+satz214a:=symis(cx,m0(x),pli(m0"r"(re(x)),m0"r"(im(x))),satz214):is(pli(m0"r"(re(x)),m0"r"(im(x))),m0(x))
+b@m0isa:=tris(cx,m0(pli(a,b)),pli(m0"r"(re(pli(a,b))),m0"r"(im(pli(a,b)))),pli(m0"r"(a),m0"r"(b)),satz214(pli(a,b)),isrecx12(m0"r"(re(pli(a,b))),m0"r"(a),m0"r"(im(pli(a,b))),m0"r"(b),ism0(re(pli(a,b)),a,reis(a,b)),ism0(im(pli(a,b)),b,imis(a,b)))):is(m0(pli(a,b)),pli(m0"r"(a),m0"r"(b)))
+m0isb:=symis(cx,m0(pli(a,b)),pli(m0"r"(a),m0"r"(b)),m0isa):is(pli(m0"r"(a),m0"r"(b)),m0(pli(a,b)))
+y@[i:is(x,y)]
+ism0:=isf(cx,cx,[t:cx]m0(t),x,y,i):is(m0(x),m0(y))
+x@satz215:=tr4is(cx,m0(m0(x)),m0(pli(m0"r"(re(x)),m0"r"(im(x)))),pli(m0"r"(m0"r"(re(x))),m0"r"(m0"r"(im(x)))),pli(re(x),im(x)),x,ism0(m0(x),pli(m0"r"(re(x)),m0"r"(im(x))),satz214),m0isa(m0"r"(re(x)),m0"r"(im(x))),isrecx12(m0"r"(m0"r"(re(x))),re(x),m0"r"(m0"r"(im(x))),im(x),satz177(re(x)),satz177(im(x))),pliis(x)):is(m0(m0(x)),x)
+satz215a:=symis(cx,m0(m0(x)),x,satz215):is(x,m0(m0(x)))
+y@[i:is(x,m0(y))]
+satz215b:=tris(cx,m0(x),m0(m0(y)),y,ism0(x,m0(y),i),satz215(y)):is(m0(x),y)
+satz215c:=symis(cx,m0(x),y,satz215b):is(y,m0(x))
+y@[i:is(m0(x),y)]
+satz215d:=satz215c(y,x,symis(cx,m0(x),y,i)):is(x,m0(y))
+satz215e:=symis(cx,x,m0(y),satz215d):is(m0(y),x)
+x@satz216:=tr3is(cx,pl(x,m0(x)),pl(x,pli(m0"r"(re(x)),m0"r"(im(x)))),pli(pl"r"(re(x),m0"r"(re(x))),pl"r"(im(x),m0"r"(im(x)))),0c,ispl2(m0(x),pli(m0"r"(re(x)),m0"r"(im(x))),x,satz214(x)),plis2a(x,m0"r"(re(x)),m0"r"(im(x))),isrecx12(pl"r"(re(x),m0"r"(re(x))),0,pl"r"(im(x),m0"r"(im(x))),0,satz179(re(x)),satz179(im(x)))):is(pl(x,m0(x)),0c)
++2216
+anders:=satz212h(0c,x):is(pl(x,m0(x)),0c)
+-2216
+satz216a:=tris(cx,pl(m0(x),x),pl(x,m0(x)),0c,compl(m0(x),x),satz216):is(pl(m0(x),x),0c)
+y@satz217:=tr4is(cx,m0(pl(x,y)),pli(m0"r"(pl"r"(re(x),re(y))),m0"r"(pl"r"(im(x),im(y)))),pli(pl"r"(m0"r"(re(x)),m0"r"(re(y))),pl"r"(m0"r"(im(x)),m0"r"(im(y)))),pl(pli(m0"r"(re(x)),m0"r"(im(x))),pli(m0"r"(re(y)),m0"r"(im(y)))),pl(m0(x),m0(y)),m0isa(pl"r"(re(x),re(y)),pl"r"(im(x),im(y))),isrecx12(m0"r"(pl"r"(re(x),re(y))),pl"r"(m0"r"(re(x)),m0"r"(re(y))),m0"r"(pl"r"(im(x),im(y))),pl"r"(m0"r"(im(x)),m0"r"(im(y))),satz180(re(x),re(y)),satz180(im(x),im(y))),plis12b(m0"r"(re(x)),m0"r"(im(x)),m0"r"(re(y)),m0"r"(im(y))),ispl12(pli(m0"r"(re(x)),m0"r"(im(x))),m0(x),pli(m0"r"(re(y)),m0"r"(im(y))),m0(y),satz214a(x),satz214a(y))):is(m0(pl(x,y)),pl(m0(x),m0(y)))
+satz217a:=symis(cx,m0(pl(x,y)),pl(m0(x),m0(y)),satz217):is(pl(m0(x),m0(y)),m0(pl(x,y)))
+satz218:=tris(cx,mn(x,y),pl(x,pli(m0"r"(re(y)),m0"r"(im(y)))),pl(x,m0(y)),plis2b(x,m0"r"(re(y)),m0"r"(im(y))),ispl2(pli(m0"r"(re(y)),m0"r"(im(y))),m0(y),x,satz214a(y))):is(mn(x,y),pl(x,m0(y)))
+satz218a:=symis(cx,mn(x,y),pl(x,m0(y)),satz218):is(pl(x,m0(y)),mn(x,y))
++2219
+t1:=tr3is(cx,m0(mn(x,y)),m0(pl(x,m0(y))),pl(m0(x),m0(m0(y))),pl(m0(x),y),ism0(mn(x,y),pl(x,m0(y)),satz218),satz217(x,m0(y)),ispl2(m0(m0(y)),y,m0(x),satz215(y))):is(m0(mn(x,y)),pl(m0(x),y))
+-2219
+satz219:=tr3is(cx,m0(mn(x,y)),pl(m0(x),y),pl(y,m0(x)),mn(y,x),t1".2219",compl(m0(x),y),satz218a(y,x)):is(m0(mn(x,y)),mn(y,x))
+satz219a:=symis(cx,m0(mn(y,x)),mn(x,y),satz219(y,x)):is(mn(x,y),m0(mn(y,x)))
+ts:=pli(mn"r"(ts"r"(re(x),re(y)),ts"r"(im(x),im(y))),pl"r"(ts"r"(re(x),im(y)),ts"r"(im(x),re(y)))):complex
+rets:=mn"r"(ts"r"(re(x),re(y)),ts"r"(im(x),im(y))):real
+imts:=pl"r"(ts"r"(re(x),im(y)),ts"r"(im(x),re(y))):real
++v3
+d@t1:=ismn12"r"(ts"r"(re(pli(a,b)),re(pli(c,d))),ts"r"(a,c),ts"r"(im(pli(a,b)),im(pli(c,d))),ts"r"(b,d),ists12(re(pli(a,b)),a,re(pli(c,d)),c,reis(a,b),reis(c,d)),ists12(im(pli(a,b)),b,im(pli(c,d)),d,imis(a,b),imis(c,d))):is"r"(rets(pli(a,b),pli(c,d)),mn"r"(ts"r"(a,c),ts"r"(b,d)))
+t2:=ispl12"r"(ts"r"(re(pli(a,b)),im(pli(c,d))),ts"r"(a,d),ts"r"(im(pli(a,b)),re(pli(c,d))),ts"r"(b,c),ists12(re(pli(a,b)),a,im(pli(c,d)),d,reis(a,b),imis(c,d)),ists12(im(pli(a,b)),b,re(pli(c,d)),c,imis(a,b),reis(c,d))):is"r"(imts(pli(a,b),pli(c,d)),pl"r"(ts"r"(a,d),ts"r"(b,c)))
+-v3
+d@tsis12a:=isrecx12(rets(pli(a,b),pli(c,d)),mn"r"(ts"r"(a,c),ts"r"(b,d)),imts(pli(a,b),pli(c,d)),pl"r"(ts"r"(a,d),ts"r"(b,c)),t1".v3",t2".v3"):is(ts(pli(a,b),pli(c,d)),pli(mn"r"(ts"r"(a,c),ts"r"(b,d)),pl"r"(ts"r"(a,d),ts"r"(b,c))))
+tsis12b:=symis(cx,ts(pli(a,b),pli(c,d)),pli(mn"r"(ts"r"(a,c),ts"r"(b,d)),pl"r"(ts"r"(a,d),ts"r"(b,c))),tsis12a):is(pli(mn"r"(ts"r"(a,c),ts"r"(b,d)),pl"r"(ts"r"(a,d),ts"r"(b,c))),ts(pli(a,b),pli(c,d)))
+x@[r:real][s:real]
++*v3
+s@t3:=ismn12"r"(ts"r"(re(pli(r,s)),re(x)),ts"r"(r,re(x)),ts"r"(im(pli(r,s)),im(x)),ts"r"(s,im(x)),ists1(re(pli(r,s)),r,re(x),reis(r,s)),ists1(im(pli(r,s)),s,im(x),imis(r,s))):is"r"(rets(pli(r,s),x),mn"r"(ts"r"(r,re(x)),ts"r"(s,im(x))))
+t4:=ispl12"r"(ts"r"(re(pli(r,s)),im(x)),ts"r"(r,im(x)),ts"r"(im(pli(r,s)),re(x)),ts"r"(s,re(x)),ists1(re(pli(r,s)),r,im(x),reis(r,s)),ists1(im(pli(r,s)),s,re(x),imis(r,s))):is"r"(imts(pli(r,s),x),pl"r"(ts"r"(r,im(x)),ts"r"(s,re(x))))
+-v3
+s@tsis1a:=isrecx12(rets(pli(r,s),x),mn"r"(ts"r"(r,re(x)),ts"r"(s,im(x))),imts(pli(r,s),x),pl"r"(ts"r"(r,im(x)),ts"r"(s,re(x))),t3".v3",t4".v3"):is(ts(pli(r,s),x),pli(mn"r"(ts"r"(r,re(x)),ts"r"(s,im(x))),pl"r"(ts"r"(r,im(x)),ts"r"(s,re(x)))))
+tsis1b:=symis(cx,ts(pli(r,s),x),pli(mn"r"(ts"r"(r,re(x)),ts"r"(s,im(x))),pl"r"(ts"r"(r,im(x)),ts"r"(s,re(x)))),tsis1a):is(pli(mn"r"(ts"r"(r,re(x)),ts"r"(s,im(x))),pl"r"(ts"r"(r,im(x)),ts"r"(s,re(x)))),ts(pli(r,s),x))
++*v3
+s@t5:=ismn12"r"(ts"r"(re(x),re(pli(r,s))),ts"r"(re(x),r),ts"r"(im(x),im(pli(r,s))),ts"r"(im(x),s),ists2(re(pli(r,s)),r,re(x),reis(r,s)),ists2(im(pli(r,s)),s,im(x),imis(r,s))):is"r"(rets(x,pli(r,s)),mn"r"(ts"r"(re(x),r),ts"r"(im(x),s)))
+t6:=ispl12"r"(ts"r"(re(x),im(pli(r,s))),ts"r"(re(x),s),ts"r"(im(x),re(pli(r,s))),ts"r"(im(x),r),ists2(im(pli(r,s)),s,re(x),imis(r,s)),ists2(re(pli(r,s)),r,im(x),reis(r,s))):is"r"(imts(x,pli(r,s)),pl"r"(ts"r"(re(x),s),ts"r"(im(x),r)))
+-v3
+s@tsis2a:=isrecx12(rets(x,pli(r,s)),mn"r"(ts"r"(re(x),r),ts"r"(im(x),s)),imts(x,pli(r,s)),pl"r"(ts"r"(re(x),s),ts"r"(im(x),r)),t5".v3",t6".v3"):is(ts(x,pli(r,s)),pli(mn"r"(ts"r"(re(x),r),ts"r"(im(x),s)),pl"r"(ts"r"(re(x),s),ts"r"(im(x),r))))
+tsis2b:=symis(cx,ts(x,pli(r,s)),pli(mn"r"(ts"r"(re(x),r),ts"r"(im(x),s)),pl"r"(ts"r"(re(x),s),ts"r"(im(x),r))),tsis2a):is(pli(mn"r"(ts"r"(re(x),r),ts"r"(im(x),s)),pl"r"(ts"r"(re(x),s),ts"r"(im(x),r))),ts(x,pli(r,s)))
+z@[i:is(x,y)]
+ists1:=isf(cx,cx,[t:cx]ts(t,z),x,y,i):is(ts(x,z),ts(y,z))
+ists2:=isf(cx,cx,[t:cx]ts(z,t),x,y,i):is(ts(z,x),ts(z,y))
+z@[u:complex][i:is(x,y)][j:is(z,u)]
+ists12:=tris(cx,ts(x,z),ts(y,z),ts(y,u),ists1(x,y,z,i),ists2(z,u,y,j)):is(ts(x,z),ts(y,u))
++3220
+y@t1:=ismn12"r"(ts"r"(re(x),re(y)),ts"r"(re(y),re(x)),ts"r"(im(x),im(y)),ts"r"(im(y),im(x)),comts(re(x),re(y)),comts(im(x),im(y))):is"r"(rets(x,y),rets(y,x))
+t2:=tris(real,imts(x,y),pl"r"(ts"r"(im(x),re(y)),ts"r"(re(x),im(y))),imts(y,x),compl"r"(ts"r"(re(x),im(y)),ts"r"(im(x),re(y))),ispl12"r"(ts"r"(im(x),re(y)),ts"r"(re(y),im(x)),ts"r"(re(x),im(y)),ts"r"(im(y),re(x)),comts(im(x),re(y)),comts(re(x),im(y)))):is"r"(imts(x,y),imts(y,x))
+-3220
+y@satz220:=isrecx12(rets(x,y),rets(y,x),imts(x,y),imts(y,x),t1".3220",t2".3220"):is(ts(x,y),ts(y,x))
+comts:=satz220:is(ts(x,y),ts(y,x))
+x@[i:is(x,0c)]
+lemma1:=tris(real,re(x),re(0c),0,iscere(x,0c,i),reis(0,0)):is"r"(re(x),0)
+lemma2:=tris(real,im(x),im(0c),0,isceim(x,0c,i),imis(0,0)):is"r"(im(x),0)
+x@mod2:=pl"r"(ts"r"(re(x),re(x)),ts"r"(im(x),im(x))):real
+i@lemma3:=tris(real,mod2,pl"r"(0,0),0,ispl12"r"(ts"r"(re(x),re(x)),0,ts"r"(im(x),im(x)),0,ts01(re(x),re(x),lemma1),ts01(im(x),im(x),lemma2)),pl01(0,0,refis(real,0))):is"r"(mod2(x),0)
+x@[n:nis(x,0c)]
++*v3
+x@re2:=ts"r"(re(x),re(x)):real
+im2:=ts"r"(im(x),im(x)):real
+n@[i:is"r"(re(x),0)]
+t7:=th3"l.imp"(is"r"(im(x),0),is(x,0c),n,[t:is"r"(im(x),0)]tris(cx,x,pli(re(x),im(x)),0c,ispli(x),isrecx12(re(x),0,im(x),0,i,t))):nis"r"(im(x),0)
+t8:=ispos(im2,mod2,symis(real,mod2,im2,pl01(re2,im2,ts01(re(x),re(x),i))),possq(im(x),t7)):pos(mod2)
+n@[o:nis"r"(re(x),0)][i:is"r"(im(x),0)]
+t9:=ispos(re2,mod2,symis(real,mod2,re2,pl02(re2,im2,ts01(im(x),im(x),i))),possq(re(x),o)):pos(mod2)
+o@[p:nis"r"(im(x),0)]
+t10:=pospl(re2,im2,possq(re(x),o),possq(im(x),p)):pos(mod2)
+o@t11:=th1"l.imp"(is"r"(im(x),0),pos(mod2),[t:is"r"(im(x),0)]t9(t),[t:nis"r"(im(x),0)]t10(t)):pos(mod2)
+-v3
+n@lemma4:=th1"l.imp"(is"r"(re(x),0),pos(mod2),[t:is"r"(re(x),0)]t8".v3"(t),[t:nis"r"(re(x),0)]t11".v3"(t)):pos(mod2(x))
+x@lemma5:=th1"l.imp"(is(x,0c),not(neg(mod2)),[t:is(x,0c)]0notn(mod2,lemma3(t)),[t:nis(x,0c)]pnotn(mod2,lemma4(t))):not(neg(mod2(x)))
+y@[i:is(x,0c)]
++3221
+t1:=lemma1(x,i):is"r"(re(x),0)
+t2:=lemma2(x,i):is"r"(im(x),0)
+t3:=tris(real,rets(x,y),mn"r"(0,0),0,ismn12"r"(ts"r"(re(x),re(y)),0,ts"r"(im(x),im(y)),0,ts01(re(x),re(y),t1),ts01(im(x),im(y),t2)),satz187c(0,0,0,pl02(0,0,refis(real,0)))):is"r"(rets(x,y),0)
+t4:=tris(real,imts(x,y),pl"r"(0,0),0,ispl12"r"(ts"r"(re(x),im(y)),0,ts"r"(im(x),re(y)),0,ts01(re(x),im(y),t1),ts01(im(x),re(y),t2)),pl02(0,0,refis(real,0))):is"r"(imts(x,y),0)
+-3221
+satz221a:=isrecx12(rets(x,y),0,imts(x,y),0,t3".3221",t4".3221"):is(ts(x,y),0c)
+y@[i:is(y,0c)]
+satz221b:=tris(cx,ts(x,y),ts(y,x),0c,comts(x,y),satz221a(y,x,i)):is(ts(x,y),0c)
+y@[i:is(ts(x,y),0c)]
++*3221
+i@[n:nis(y,0c)]
+t5:=lemma4(y,n):pos(mod2(y))
+t6:=tris1(real,rets(x,y),0,re(ts(x,y)),reis(rets(x,y),imts(x,y)),lemma1(ts(x,y),i)):is"r"(rets(x,y),0)
+t7:=tris1(real,imts(x,y),0,im(ts(x,y)),imis(rets(x,y),imts(x,y)),lemma2(ts(x,y),i)):is"r"(imts(x,y),0)
+t8:=tris(real,pl"r"(ts"r"(rets(x,y),re(y)),ts"r"(imts(x,y),im(y))),pl"r"(0,0),0,ispl12"r"(ts"r"(rets(x,y),re(y)),0,ts"r"(imts(x,y),im(y)),0,ts01(rets(x,y),re(y),t6),ts01(imts(x,y),im(y),t7)),pl02(0,0,refis(real,0))):is"r"(pl"r"(ts"r"(rets(x,y),re(y)),ts"r"(imts(x,y),im(y))),0)
+y@ii1r:=ts"r"(ts"r"(im(x),im(y)),re(y)):real
+i1ir:=ts"r"(im(x),ts"r"(im(y),re(y))):real
+ir1i:=ts"r"(ts"r"(im(x),re(y)),im(y)):real
+i1ri:=ts"r"(im(x),ts"r"(re(y),im(y))):real
+rr1r:=ts"r"(ts"r"(re(x),re(y)),re(y)):real
+r1rr:=ts"r"(re(x),ts"r"(re(y),re(y))):real
+ri1r:=ts"r"(ts"r"(re(x),im(y)),re(y)):real
+r1ir:=ts"r"(re(x),ts"r"(im(y),re(y))):real
+ri1i:=ts"r"(ts"r"(re(x),im(y)),im(y)):real
+r1ii:=ts"r"(re(x),ts"r"(im(y),im(y))):real
+n@t9:=tris(real,ii1r,i1ir,i1ri,assts1(im(x),im(y),re(y)),ists2"r"(ts"r"(im(y),re(y)),ts"r"(re(y),im(y)),im(x),comts"r"(im(y),re(y)))):is"r"(ii1r,i1ri)
+t10:=tris(real,ts"r"(rets(x,y),re(y)),mn"r"(rr1r,ii1r),mn"r"(r1rr,i1ri),disttm1(ts"r"(re(x),re(y)),ts"r"(im(x),im(y)),re(y)),ismn12"r"(rr1r,r1rr,ii1r,i1ri,assts1(re(x),re(y),re(y)),t9)):is"r"(ts"r"(rets(x,y),re(y)),mn"r"(r1rr,i1ri))
+t11:=tr3is(real,ts"r"(imts(x,y),im(y)),pl"r"(ri1i,ir1i),pl"r"(r1ii,i1ri),pl"r"(i1ri,r1ii),disttp1(ts"r"(re(x),im(y)),ts"r"(im(x),re(y)),im(y)),ispl12"r"(ri1i,r1ii,ir1i,i1ri,assts1(re(x),im(y),im(y)),assts1(im(x),re(y),im(y))),compl"r"(r1ii,i1ri)):is"r"(ts"r"(imts(x,y),im(y)),pl"r"(i1ri,r1ii))
+t12:=tr4is(real,pl"r"(ts"r"(rets(x,y),re(y)),ts"r"(imts(x,y),im(y))),pl"r"(mn"r"(r1rr,i1ri),pl"r"(i1ri,r1ii)),pl"r"(pl"r"(mn"r"(r1rr,i1ri),i1ri),r1ii),pl"r"(r1rr,r1ii),ts"r"(re(x),mod2(y)),ispl12"r"(ts"r"(rets(x,y),re(y)),mn"r"(r1rr,i1ri),ts"r"(imts(x,y),im(y)),pl"r"(i1ri,r1ii),t10,t11),asspl2"r"(mn"r"(r1rr,i1ri),i1ri,r1ii),ispl1"r"(pl"r"(mn"r"(r1rr,i1ri),i1ri),r1rr,r1ii,plmn(r1rr,i1ri)),distpt2(re(x),ts"r"(re(y),re(y)),ts"r"(im(y),im(y)))):is"r"(pl"r"(ts"r"(rets(x,y),re(y)),ts"r"(imts(x,y),im(y))),ts"r"(re(x),mod2(y)))
+t13:=tris1(real,ts"r"(re(x),mod2(y)),0,pl"r"(ts"r"(rets(x,y),re(y)),ts"r"(imts(x,y),im(y))),t12,t8):is"r"(ts"r"(re(x),mod2(y)),0)
+t14:=ore1(is"r"(re(x),0),is"r"(mod2(y),0),satz192c(re(x),mod2(y),t13),pnot0(mod2(y),t5)):is"r"(re(x),0)
+t15:=tris1(real,ts"r"(im(x),im(y)),0,ts"r"(re(x),re(y)),satz182b(ts"r"(re(x),re(y)),ts"r"(im(x),im(y)),t6),ts01(re(x),re(y),t14)):is"r"(ts"r"(im(x),im(y)),0)
+t16:=tris1(real,ts"r"(im(x),re(y)),0,imts(x,y),pl01(ts"r"(re(x),im(y)),ts"r"(im(x),re(y)),ts01(re(x),im(y),t14)),t7):is"r"(ts"r"(im(x),re(y)),0)
+[j:is"r"(re(y),0)]
+t17:=t7"c.v3"(y,n,j):nis"r"(im(y),0)
+t18:=ore1(is"r"(im(x),0),is"r"(im(y),0),satz192c(im(x),im(y),t15),t17):is"r"(im(x),0)
+n@[o:nis"r"(re(y),0)]
+t19:=ore1(is"r"(im(x),0),is"r"(re(y),0),satz192c(im(x),re(y),t16),o):is"r"(im(x),0)
+n@t20:=th1"l.imp"(is"r"(re(y),0),is"r"(im(x),0),[t:is"r"(re(y),0)]t18(t),[t:nis"r"(re(y),0)]t19(t)):is"r"(im(x),0)
+t21:=tris(cx,x,pli(re(x),im(x)),0c,ispli(x),isrecx12(re(x),0,im(x),0,t14,t20)):is(x,0c)
+-3221
+i@satz221c:=th2"l.or"(is(x,0c),is(y,0c),[t:nis(y,0c)]t21".3221"(t)):or(is(x,0c),is(y,0c))
+y@[n:nis(x,0c)][o:nis(y,0c)]
+satz221d:=th3"l.imp"(is(ts(x,y),0c),or(is(x,0c),is(y,0c)),th3"l.or"(is(x,0c),is(y,0c),n,o),[t:is(ts(x,y),0c)]satz221c(t)):nis(ts(x,y),0c)
++3222
+x@t1:=tris(real,mn"r"(ts"r"(re(x),1rl),ts"r"(im(x),0)),mn"r"(re(x),0),re(x),ismn12"r"(ts"r"(re(x),1rl),re(x),ts"r"(im(x),0),0,satz195(re(x)),ts02(im(x),0,refis(real,0))),pl02(re(x),m0"r"(0),satz176b(0,refis(real,0)))):is"r"(mn"r"(ts"r"(re(x),1rl),ts"r"(im(x),0)),re(x))
+t2:=tris(real,pl"r"(ts"r"(re(x),0),ts"r"(im(x),1rl)),pl"r"(0,im(x)),im(x),ispl12"r"(ts"r"(re(x),0),0,ts"r"(im(x),1rl),im(x),ts02(re(x),0,refis(real,0)),satz195(im(x))),pl01(0,im(x),refis(real,0))):is"r"(pl"r"(ts"r"(re(x),0),ts"r"(im(x),1rl)),im(x))
+-3222
+x@satz222:=tr3is(cx,ts(x,1c),pli(mn"r"(ts"r"(re(x),1rl),ts"r"(im(x),0)),pl"r"(ts"r"(re(x),0),ts"r"(im(x),1rl))),pli(re(x),im(x)),x,tsis2a(x,1rl,0),isrecx12(mn"r"(ts"r"(re(x),1rl),ts"r"(im(x),0)),re(x),pl"r"(ts"r"(re(x),0),ts"r"(im(x),1rl)),im(x),t1".3222",t2".3222"),pliis(x)):is(ts(x,1c),x)
+satz222a:=symis(cx,ts(x,1c),x,satz222):is(x,ts(x,1c))
+satz222b:=tris(cx,ts(1c,x),ts(x,1c),x,comts(1c,x),satz222):is(ts(1c,x),x)
+satz222c:=symis(cx,ts(1c,x),x,satz222b):is(x,ts(1c,x))
++3223
+t1:=tris(real,mn"r"(ts"r"(re(x),m0"r"(1rl)),ts"r"(im(x),m0"r"(0))),mn"r"(m0"r"(re(x)),0),m0"r"(re(x)),ismn12"r"(ts"r"(re(x),m0"r"(1rl)),m0"r"(re(x)),ts"r"(im(x),m0"r"(0)),0,tris(real,ts"r"(re(x),m0"r"(1rl)),m0"r"(ts"r"(re(x),1rl)),m0"r"(re(x)),satz197b(re(x),1rl),ism0"r"(ts"r"(re(x),1rl),re(x),satz195(re(x)))),ts02(im(x),m0"r"(0),satz176b(0,refis(real,0)))),pl02(m0"r"(re(x)),m0"r"(0),satz176b(0,refis(real,0)))):is"r"(mn"r"(ts"r"(re(x),m0"r"(1rl)),ts"r"(im(x),m0"r"(0))),m0"r"(re(x)))
+t2:=tris(real,pl"r"(ts"r"(re(x),m0"r"(0)),ts"r"(im(x),m0"r"(1rl))),pl"r"(0,m0"r"(im(x))),m0"r"(im(x)),ispl12"r"(ts"r"(re(x),m0"r"(0)),0,ts"r"(im(x),m0"r"(1rl)),m0"r"(im(x)),ts02(re(x),m0"r"(0),satz176b(0,refis(real,0))),tris(real,ts"r"(im(x),m0"r"(1rl)),m0"r"(ts"r"(im(x),1rl)),m0"r"(im(x)),satz197b(im(x),1rl),ism0"r"(ts"r"(im(x),1rl),im(x),satz195(im(x))))),pl01(0,m0"r"(im(x)),refis(real,0))):is"r"(pl"r"(ts"r"(re(x),m0"r"(0)),ts"r"(im(x),m0"r"(1rl))),m0"r"(im(x)))
+-3223
+satz223:=tr4is(cx,ts(x,m0(1c)),ts(x,pli(m0"r"(1rl),m0"r"(0))),pli(mn"r"(ts"r"(re(x),m0"r"(1rl)),ts"r"(im(x),m0"r"(0))),pl"r"(ts"r"(re(x),m0"r"(0)),ts"r"(im(x),m0"r"(1rl)))),pli(m0"r"(re(x)),m0"r"(im(x))),m0(x),ists2(m0(1c),pli(m0"r"(1rl),m0"r"(0)),x,m0isa(1rl,0)),tsis2a(x,m0"r"(1rl),m0"r"(0)),isrecx12(mn"r"(ts"r"(re(x),m0"r"(1rl)),ts"r"(im(x),m0"r"(0))),m0"r"(re(x)),pl"r"(ts"r"(re(x),m0"r"(0)),ts"r"(im(x),m0"r"(1rl))),m0"r"(im(x)),t1".3223",t2".3223"),satz214a(x)):is(ts(x,m0(1c)),m0(x))
+satz223a:=symis(cx,ts(x,m0(1c)),m0(x),satz223):is(m0(x),ts(x,m0(1c)))
+satz223b:=tris(cx,ts(m0(1c),x),ts(x,m0(1c)),m0(x),comts(m0(1c),x),satz223):is(ts(m0(1c),x),m0(x))
+satz223c:=symis(cx,ts(m0(1c),x),m0(x),satz223b):is(m0(x),ts(m0(1c),x))
++3224
+y@rxry:=ts"r"(re(x),re(y)):real
+ixiy:=ts"r"(im(x),im(y)):real
+rxiy:=ts"r"(re(x),im(y)):real
+ixry:=ts"r"(im(x),re(y)):real
+t1:=tr4is(real,mn"r"(ts"r"(m0"r"(re(x)),re(y)),ts"r"(m0"r"(im(x)),im(y))),mn"r"(m0"r"(rxry),m0"r"(ixiy)),pl"r"(m0"r"(rxry),ixiy),mn"r"(ixiy,rxry),m0"r"(mn"r"(rxry,ixiy)),ismn12"r"(ts"r"(m0"r"(re(x)),re(y)),m0"r"(rxry),ts"r"(m0"r"(im(x)),im(y)),m0"r"(ixiy),satz197a(re(x),re(y)),satz197a(im(x),im(y))),ispl2"r"(m0"r"(m0"r"(ixiy)),ixiy,m0"r"(rxry),satz177(ixiy)),compl"r"(m0"r"(rxry),ixiy),satz181a(ixiy,rxry)):is"r"(mn"r"(ts"r"(m0"r"(re(x)),re(y)),ts"r"(m0"r"(im(x)),im(y))),m0"r"(mn"r"(rxry,ixiy)))
+t2:=tris(real,pl"r"(ts"r"(m0"r"(re(x)),im(y)),ts"r"(m0"r"(im(x)),re(y))),mn"r"(m0"r"(rxiy),ixry),m0"r"(pl"r"(rxiy,ixry)),ispl12"r"(ts"r"(m0"r"(re(x)),im(y)),m0"r"(rxiy),ts"r"(m0"r"(im(x)),re(y)),m0"r"(ixry),satz197a(re(x),im(y)),satz197a(im(x),re(y))),satz180a(rxiy,ixry)):is"r"(pl"r"(ts"r"(m0"r"(re(x)),im(y)),ts"r"(m0"r"(im(x)),re(y))),m0"r"(pl"r"(rxiy,ixry)))
+-3224
+y@satz224a:=tr4is(cx,ts(m0(x),y),ts(pli(m0"r"(re(x)),m0"r"(im(x))),y),pli(mn"r"(ts"r"(m0"r"(re(x)),re(y)),ts"r"(m0"r"(im(x)),im(y))),pl"r"(ts"r"(m0"r"(re(x)),im(y)),ts"r"(m0"r"(im(x)),re(y)))),pli(m0"r"(mn"r"(ts"r"(re(x),re(y)),ts"r"(im(x),im(y)))),m0"r"(pl"r"(ts"r"(re(x),im(y)),ts"r"(im(x),re(y))))),m0(ts(x,y)),ists1(m0(x),pli(m0"r"(re(x)),m0"r"(im(x))),y,satz214(x)),tsis1a(y,m0"r"(re(x)),m0"r"(im(x))),isrecx12(mn"r"(ts"r"(m0"r"(re(x)),re(y)),ts"r"(m0"r"(im(x)),im(y))),m0"r"(mn"r"(ts"r"(re(x),re(y)),ts"r"(im(x),im(y)))),pl"r"(ts"r"(m0"r"(re(x)),im(y)),ts"r"(m0"r"(im(x)),re(y))),m0"r"(pl"r"(ts"r"(re(x),im(y)),ts"r"(im(x),re(y)))),t1".3224",t2".3224"),m0isb(mn"r"(ts"r"(re(x),re(y)),ts"r"(im(x),im(y))),pl"r"(ts"r"(re(x),im(y)),ts"r"(im(x),re(y))))):is(ts(m0(x),y),m0(ts(x,y)))
+satz224b:=tr3is(cx,ts(x,m0(y)),ts(m0(y),x),m0(ts(y,x)),m0(ts(x,y)),comts(x,m0(y)),satz224a(y,x),ism0(ts(y,x),ts(x,y),comts(y,x))):is(ts(x,m0(y)),m0(ts(x,y)))
+satz224c:=tris2(cx,ts(m0(x),y),ts(x,m0(y)),m0(ts(x,y)),satz224a,satz224b):is(ts(m0(x),y),ts(x,m0(y)))
+satz224d:=symis(cx,ts(m0(x),y),ts(x,m0(y)),satz224c):is(ts(x,m0(y)),ts(m0(x),y))
+satz224e:=symis(cx,ts(m0(x),y),m0(ts(x,y)),satz224a):is(m0(ts(x,y)),ts(m0(x),y))
+satz224f:=symis(cx,ts(x,m0(y)),m0(ts(x,y)),satz224b):is(m0(ts(x,y)),ts(x,m0(y)))
+satz225:=tris(cx,ts(m0(x),m0(y)),ts(x,m0(m0(y))),ts(x,y),satz224c(x,m0(y)),ists2(m0(m0(y)),y,x,satz215(y))):is(ts(m0(x),m0(y)),ts(x,y))
+satz225a:=symis(cx,ts(m0(x),m0(y)),ts(x,y),satz225):is(ts(x,y),ts(m0(x),m0(y)))
++3226
+z@rrr:=ts"r"(ts"r"(re(x),re(y)),re(z)):real
+iir:=ts"r"(ts"r"(im(x),im(y)),re(z)):real
+rii:=ts"r"(ts"r"(re(x),im(y)),im(z)):real
+iri:=ts"r"(ts"r"(im(x),re(y)),im(z)):real
+rri:=ts"r"(ts"r"(re(x),re(y)),im(z)):real
+iii:=ts"r"(ts"r"(im(x),im(y)),im(z)):real
+rir:=ts"r"(ts"r"(re(x),im(y)),re(z)):real
+irr:=ts"r"(ts"r"(im(x),re(y)),re(z)):real
+t1:=tr3is(real,mn"r"(ts"r"(rets(x,y),re(z)),ts"r"(imts(x,y),im(z))),mn"r"(mn"r"(rrr,iir),pl"r"(rii,iri)),pl"r"(rrr,pl"r"(m0"r"(iir),m0"r"(pl"r"(rii,iri)))),mn"r"(rrr,pl"r"(iir,pl"r"(rii,iri))),ismn12"r"(ts"r"(rets(x,y),re(z)),mn"r"(rrr,iir),ts"r"(imts(x,y),im(z)),pl"r"(rii,iri),disttm1(ts"r"(re(x),re(y)),ts"r"(im(x),im(y)),re(z)),disttp1(ts"r"(re(x),im(y)),ts"r"(im(x),re(y)),im(z))),asspl1"r"(rrr,m0"r"(iir),m0"r"(pl"r"(rii,iri))),ispl2"r"(pl"r"(m0"r"(iir),m0"r"(pl"r"(rii,iri))),m0"r"(pl"r"(iir,pl"r"(rii,iri))),rrr,satz180a(iir,pl"r"(rii,iri)))):is"r"(mn"r"(ts"r"(rets(x,y),re(z)),ts"r"(imts(x,y),im(z))),mn"r"(rrr,pl"r"(iir,pl"r"(rii,iri))))
+t2:=tr3is(real,pl"r"(ts"r"(rets(x,y),im(z)),ts"r"(imts(x,y),re(z))),pl"r"(mn"r"(rri,iii),pl"r"(rir,irr)),pl"r"(pl"r"(rir,irr),mn"r"(rri,iii)),mn"r"(pl"r"(pl"r"(rir,irr),rri),iii),ispl12"r"(ts"r"(rets(x,y),im(z)),mn"r"(rri,iii),ts"r"(imts(x,y),re(z)),pl"r"(rir,irr),disttm1(ts"r"(re(x),re(y)),ts"r"(im(x),im(y)),im(z)),disttp1(ts"r"(re(x),im(y)),ts"r"(im(x),re(y)),re(z))),compl"r"(mn"r"(rri,iii),pl"r"(rir,irr)),asspl2"r"(pl"r"(rir,irr),rri,m0"r"(iii))):is"r"(pl"r"(ts"r"(rets(x,y),im(z)),ts"r"(imts(x,y),re(z))),mn"r"(pl"r"(pl"r"(rir,irr),rri),iii))
+t3:=tris(cx,ts(ts(x,y),z),pli(mn"r"(ts"r"(rets(x,y),re(z)),ts"r"(imts(x,y),im(z))),pl"r"(ts"r"(rets(x,y),im(z)),ts"r"(imts(x,y),re(z)))),pli(mn"r"(rrr,pl"r"(iir,pl"r"(rii,iri))),mn"r"(pl"r"(pl"r"(rir,irr),rri),iii)),tsis1a(z,rets(x,y),imts(x,y)),isrecx12(mn"r"(ts"r"(rets(x,y),re(z)),ts"r"(imts(x,y),im(z))),mn"r"(rrr,pl"r"(iir,pl"r"(rii,iri))),pl"r"(ts"r"(rets(x,y),im(z)),ts"r"(imts(x,y),re(z))),mn"r"(pl"r"(pl"r"(rir,irr),rri),iii),t1,t2)):is(ts(ts(x,y),z),pli(mn"r"(rrr,pl"r"(iir,pl"r"(rii,iri))),mn"r"(pl"r"(pl"r"(rir,irr),rri),iii)))
+c@t4:=tris(real,ts"r"(ts"r"(a,b),c),ts"r"(a,ts"r"(b,c)),ts"r"(ts"r"(b,c),a),assts1(a,b,c),comts"r"(a,ts"r"(b,c))):is"r"(ts"r"(ts"r"(a,b),c),ts"r"(ts"r"(b,c),a))
+t5:=tris(real,pl"r"(pl"r"(a,b),c),pl"r"(c,pl"r"(a,b)),pl"r"(pl"r"(c,a),b),compl"r"(pl"r"(a,b),c),asspl2"r"(c,a,b)):is"r"(pl"r"(pl"r"(a,b),c),pl"r"(pl"r"(c,a),b))
+t6:=tris(real,pl"r"(a,pl"r"(b,c)),pl"r"(pl"r"(b,c),a),pl"r"(b,pl"r"(c,a)),compl"r"(a,pl"r"(b,c)),asspl1"r"(b,c,a)):is"r"(pl"r"(a,pl"r"(b,c)),pl"r"(b,pl"r"(c,a)))
+z@rrr1:=rrr(y,z,x):real
+iir1:=iir(y,z,x):real
+rii1:=rii(y,z,x):real
+iri1:=iri(y,z,x):real
+rri1:=rri(y,z,x):real
+iii1:=iii(y,z,x):real
+rir1:=rir(y,z,x):real
+irr1:=irr(y,z,x):real
+t7:=tris(real,pl"r"(iir,pl"r"(rii,iri)),pl"r"(rii,pl"r"(iri,iir)),pl"r"(iir1,pl"r"(rii1,iri1)),t6(iir,rii,iri),ispl12"r"(rii,iir1,pl"r"(iri,iir),pl"r"(rii1,iri1),t4(re(x),im(y),im(z)),ispl12"r"(iri,rii1,iir,iri1,t4(im(x),re(y),im(z)),t4(im(x),im(y),re(z))))):is"r"(pl"r"(iir,pl"r"(rii,iri)),pl"r"(iir1,pl"r"(rii1,iri1)))
+t8:=tris(real,pl"r"(pl"r"(rir,irr),rri),pl"r"(pl"r"(rri,rir),irr),pl"r"(pl"r"(rir1,irr1),rri1),t5(rir,irr,rri),ispl12"r"(pl"r"(rri,rir),pl"r"(rir1,irr1),irr,rri1,ispl12"r"(rri,rir1,rir,irr1,t4(re(x),re(y),im(z)),t4(re(x),im(y),re(z))),t4(im(x),re(y),re(z)))):is"r"(pl"r"(pl"r"(rir,irr),rri),pl"r"(pl"r"(rir1,irr1),rri1))
+t9:=ismn12"r"(rrr,rrr1,pl"r"(iir,pl"r"(rii,iri)),pl"r"(iir1,pl"r"(rii1,iri1)),t4(re(x),re(y),re(z)),t7):is"r"(mn"r"(rrr,pl"r"(iir,pl"r"(rii,iri))),mn"r"(rrr1,pl"r"(iir1,pl"r"(rii1,iri1))))
+t10:=ismn12"r"(pl"r"(pl"r"(rir,irr),rri),pl"r"(pl"r"(rir1,irr1),rri1),iii,iii1,t8,t4(im(x),im(y),im(z))):is"r"(mn"r"(pl"r"(pl"r"(rir,irr),rri),iii),mn"r"(pl"r"(pl"r"(rir1,irr1),rri1),iii1))
+t11:=tris(cx,ts(ts(x,y),z),pli(mn"r"(rrr,pl"r"(iir,pl"r"(rii,iri))),mn"r"(pl"r"(pl"r"(rir,irr),rri),iii)),pli(mn"r"(rrr1,pl"r"(iir1,pl"r"(rii1,iri1))),mn"r"(pl"r"(pl"r"(rir1,irr1),rri1),iii1)),t3,isrecx12(mn"r"(rrr,pl"r"(iir,pl"r"(rii,iri))),mn"r"(rrr1,pl"r"(iir1,pl"r"(rii1,iri1))),mn"r"(pl"r"(pl"r"(rir,irr),rri),iii),mn"r"(pl"r"(pl"r"(rir1,irr1),rri1),iii1),t9,t10)):is(ts(ts(x,y),z),pli(mn"r"(rrr1,pl"r"(iir1,pl"r"(rii1,iri1))),mn"r"(pl"r"(pl"r"(rir1,irr1),rri1),iii1)))
+t12:=tris(cx,ts(x,ts(y,z)),ts(ts(y,z),x),pli(mn"r"(rrr1,pl"r"(iir1,pl"r"(rii1,iri1))),mn"r"(pl"r"(pl"r"(rir1,irr1),rri1),iii1)),comts(x,ts(y,z)),t3(y,z,x)):is(ts(x,ts(y,z)),pli(mn"r"(rrr1,pl"r"(iir1,pl"r"(rii1,iri1))),mn"r"(pl"r"(pl"r"(rir1,irr1),rri1),iii1)))
+t13:=tris2(cx,ts(ts(x,y),z),ts(x,ts(y,z)),pli(mn"r"(rrr1,pl"r"(iir1,pl"r"(rii1,iri1))),mn"r"(pl"r"(pl"r"(rir1,irr1),rri1),iii1)),t11,t12):is(ts(ts(x,y),z),ts(x,ts(y,z)))
+-3226
+z@satz226:=t13".3226":is(ts(ts(x,y),z),ts(x,ts(y,z)))
+assts1:=satz226:is(ts(ts(x,y),z),ts(x,ts(y,z)))
+assts2:=symis(cx,ts(ts(x,y),z),ts(x,ts(y,z)),assts1):is(ts(x,ts(y,z)),ts(ts(x,y),z))
++3227
+c@t1:=tr3is(real,pl"r"(pl"r"(a,b),c),pl"r"(a,pl"r"(b,c)),pl"r"(a,pl"r"(c,b)),pl"r"(pl"r"(a,c),b),asspl1"r"(a,b,c),ispl2"r"(pl"r"(b,c),pl"r"(c,b),a,compl"r"(b,c)),asspl2"r"(a,c,b)):is"r"(pl"r"(pl"r"(a,b),c),pl"r"(pl"r"(a,c),b))
+d@t2:=tr3is(real,pl"r"(pl"r"(a,b),pl"r"(c,d)),pl"r"(pl"r"(pl"r"(a,b),c),d),pl"r"(pl"r"(pl"r"(a,c),b),d),pl"r"(pl"r"(a,c),pl"r"(b,d)),asspl2"r"(pl"r"(a,b),c,d),ispl1"r"(pl"r"(pl"r"(a,b),c),pl"r"(pl"r"(a,c),b),d,t1),asspl1"r"(pl"r"(a,c),b,d)):is"r"(pl"r"(pl"r"(a,b),pl"r"(c,d)),pl"r"(pl"r"(a,c),pl"r"(b,d)))
+t3:=tris(real,mn"r"(pl"r"(a,b),pl"r"(c,d)),pl"r"(pl"r"(a,b),pl"r"(m0"r"(c),m0"r"(d))),pl"r"(mn"r"(a,c),mn"r"(b,d)),ispl2"r"(m0"r"(pl"r"(c,d)),pl"r"(m0"r"(c),m0"r"(d)),pl"r"(a,b),satz180(c,d)),t2(a,b,m0"r"(c),m0"r"(d))):is"r"(mn"r"(pl"r"(a,b),pl"r"(c,d)),pl"r"(mn"r"(a,c),mn"r"(b,d)))
+z@t4:=tris(real,mn"r"(ts"r"(re(x),pl"r"(re(y),re(z))),ts"r"(im(x),pl"r"(im(y),im(z)))),mn"r"(pl"r"(ts"r"(re(x),re(y)),ts"r"(re(x),re(z))),pl"r"(ts"r"(im(x),im(y)),ts"r"(im(x),im(z)))),pl"r"(rets(x,y),rets(x,z)),ismn12"r"(ts"r"(re(x),pl"r"(re(y),re(z))),pl"r"(ts"r"(re(x),re(y)),ts"r"(re(x),re(z))),ts"r"(im(x),pl"r"(im(y),im(z))),pl"r"(ts"r"(im(x),im(y)),ts"r"(im(x),im(z))),disttp2(re(x),re(y),re(z)),disttp2(im(x),im(y),im(z))),t3(ts"r"(re(x),re(y)),ts"r"(re(x),re(z)),ts"r"(im(x),im(y)),ts"r"(im(x),im(z)))):is"r"(mn"r"(ts"r"(re(x),pl"r"(re(y),re(z))),ts"r"(im(x),pl"r"(im(y),im(z)))),pl"r"(rets(x,y),rets(x,z)))
+t5:=tris(real,pl"r"(ts"r"(re(x),pl"r"(im(y),im(z))),ts"r"(im(x),pl"r"(re(y),re(z)))),pl"r"(pl"r"(ts"r"(re(x),im(y)),ts"r"(re(x),im(z))),pl"r"(ts"r"(im(x),re(y)),ts"r"(im(x),re(z)))),pl"r"(imts(x,y),imts(x,z)),ispl12"r"(ts"r"(re(x),pl"r"(im(y),im(z))),pl"r"(ts"r"(re(x),im(y)),ts"r"(re(x),im(z))),ts"r"(im(x),pl"r"(re(y),re(z))),pl"r"(ts"r"(im(x),re(y)),ts"r"(im(x),re(z))),disttp2(re(x),im(y),im(z)),disttp2(im(x),re(y),re(z))),t2(ts"r"(re(x),im(y)),ts"r"(re(x),im(z)),ts"r"(im(x),re(y)),ts"r"(im(x),re(z)))):is"r"(pl"r"(ts"r"(re(x),pl"r"(im(y),im(z))),ts"r"(im(x),pl"r"(re(y),re(z)))),pl"r"(imts(x,y),imts(x,z)))
+t6:=tr3is(cx,ts(x,pl(y,z)),pli(mn"r"(ts"r"(re(x),pl"r"(re(y),re(z))),ts"r"(im(x),pl"r"(im(y),im(z)))),pl"r"(ts"r"(re(x),pl"r"(im(y),im(z))),ts"r"(im(x),pl"r"(re(y),re(z))))),pli(pl"r"(rets(x,y),rets(x,z)),pl"r"(imts(x,y),imts(x,z))),pl(ts(x,y),ts(x,z)),tsis2a(x,pl"r"(re(y),re(z)),pl"r"(im(y),im(z))),isrecx12(mn"r"(ts"r"(re(x),pl"r"(re(y),re(z))),ts"r"(im(x),pl"r"(im(y),im(z)))),pl"r"(rets(x,y),rets(x,z)),pl"r"(ts"r"(re(x),pl"r"(im(y),im(z))),ts"r"(im(x),pl"r"(re(y),re(z)))),pl"r"(imts(x,y),imts(x,z)),t4,t5),plis12b(rets(x,y),imts(x,y),rets(x,z),imts(x,z))):is(ts(x,pl(y,z)),pl(ts(x,y),ts(x,z)))
+-3227
+satz227:=t6".3227":is(ts(x,pl(y,z)),pl(ts(x,y),ts(x,z)))
+disttp1:=tr3is(cx,ts(pl(x,y),z),ts(z,pl(x,y)),pl(ts(z,x),ts(z,y)),pl(ts(x,z),ts(y,z)),comts(pl(x,y),z),satz227(z,x,y),ispl12(ts(z,x),ts(x,z),ts(z,y),ts(y,z),comts(z,x),comts(z,y))):is(ts(pl(x,y),z),pl(ts(x,z),ts(y,z)))
+disttp2:=satz227:is(ts(x,pl(y,z)),pl(ts(x,y),ts(x,z)))
+distpt1:=symis(cx,ts(pl(x,y),z),pl(ts(x,z),ts(y,z)),disttp1):is(pl(ts(x,z),ts(y,z)),ts(pl(x,y),z))
+distpt2:=symis(cx,ts(x,pl(y,z)),pl(ts(x,y),ts(x,z)),disttp2):is(pl(ts(x,y),ts(x,z)),ts(x,pl(y,z)))
+satz228:=tr4is(cx,ts(x,mn(y,z)),ts(x,pl(y,m0(z))),pl(ts(x,y),ts(x,m0(z))),pl(ts(x,y),m0(ts(x,z))),mn(ts(x,y),ts(x,z)),ists2(mn(y,z),pl(y,m0(z)),x,satz218(y,z)),disttp2(x,y,m0(z)),ispl2(ts(x,m0(z)),m0(ts(x,z)),ts(x,y),satz224b(x,z)),satz218a(ts(x,y),ts(x,z))):is(ts(x,mn(y,z)),mn(ts(x,y),ts(x,z)))
+disttm1:=tr3is(cx,ts(mn(x,y),z),ts(z,mn(x,y)),mn(ts(z,x),ts(z,y)),mn(ts(x,z),ts(y,z)),comts(mn(x,y),z),satz228(z,x,y),ismn12(ts(z,x),ts(x,z),ts(z,y),ts(y,z),comts(z,x),comts(z,y))):is(ts(mn(x,y),z),mn(ts(x,z),ts(y,z)))
+disttm2:=satz228:is(ts(x,mn(y,z)),mn(ts(x,y),ts(x,z)))
+distmt1:=symis(cx,ts(mn(x,y),z),mn(ts(x,z),ts(y,z)),disttm1):is(mn(ts(x,z),ts(y,z)),ts(mn(x,y),z))
+distmt2:=symis(cx,ts(x,mn(y,z)),mn(ts(x,y),ts(x,z)),disttm2):is(mn(ts(x,y),ts(x,z)),ts(x,mn(y,z)))
+y@[n:nis(y,0c)][u1:complex][u2:complex][i:is(ts(y,u1),x)][j:is(ts(y,u2),x)]
++3229
+t1:=tris2(cx,ts(y,u1),ts(y,u2),x,i,j):is(ts(y,u1),ts(y,u2))
+t2:=tris(cx,ts(y,mn(u1,u2)),mn(ts(y,u1),ts(y,u2)),0c,disttm2(y,u1,u2),satz213b(ts(y,u1),ts(y,u2),t1)):is(ts(y,mn(u1,u2)),0c)
+t3:=ore2(is(y,0c),is(mn(u1,u2),0c),satz221c(y,mn(u1,u2),t2),n):is(mn(u1,u2),0c)
+-3229
+satz229b:=satz213a(u1,u2,t3".3229"):is(u1,u2)
++*3229
+n@t4:=pnot0(mod2(y),lemma4(y,n)):nis"r"(mod2(y),0)
+u:=ts(pli(ov(re(y),mod2(y),t4),m0"r"(ov(im(y),mod2(y),t4))),x):complex
+[v:real]
+dd:=ov(v,mod2(y),t4):real
+n@t5:=tr3is(real,m0"r"(ts"r"(im(y),m0"r"(dd(im(y))))),m0"r"(m0"r"(ts"r"(im(y),dd(im(y))))),ts"r"(im(y),dd(im(y))),dd(ts"r"(im(y),im(y))),ism0"r"(ts"r"(im(y),m0"r"(dd(im(y)))),m0"r"(ts"r"(im(y),dd(im(y)))),satz197b(im(y),dd(im(y)))),satz177(ts"r"(im(y),dd(im(y)))),lemma6(im(y),im(y),mod2(y),t4)):is"r"(m0"r"(ts"r"(im(y),m0"r"(dd(im(y))))),dd(ts"r"(im(y),im(y))))
+t6:=tr3is(real,mn"r"(ts"r"(re(y),dd(re(y))),ts"r"(im(y),m0"r"(dd(im(y))))),pl"r"(dd(ts"r"(re(y),re(y))),dd(ts"r"(im(y),im(y)))),dd(mod2(y)),1rl,ispl12"r"(ts"r"(re(y),dd(re(y))),dd(ts"r"(re(y),re(y))),m0"r"(ts"r"(im(y),m0"r"(dd(im(y))))),dd(ts"r"(im(y),im(y))),lemma6(re(y),re(y),mod2(y),t4),t5),lemma7(ts"r"(re(y),re(y)),ts"r"(im(y),im(y)),mod2(y),t4),lemma8(mod2(y),t4)):is"r"(mn"r"(ts"r"(re(y),dd(re(y))),ts"r"(im(y),m0"r"(dd(im(y))))),1rl)
+t7:=tris(real,ts"r"(re(y),m0"r"(dd(im(y)))),ts"r"(m0"r"(re(y)),dd(im(y))),dd(ts"r"(m0"r"(re(y)),im(y))),satz197d(re(y),dd(im(y))),lemma6(m0"r"(re(y)),im(y),mod2(y),t4)):is"r"(ts"r"(re(y),m0"r"(dd(im(y)))),dd(ts"r"(m0"r"(re(y)),im(y))))
+t8:=tris(real,pl"r"(ts"r"(re(y),m0"r"(dd(im(y)))),ts"r"(im(y),dd(re(y)))),pl"r"(dd(ts"r"(m0"r"(re(y)),im(y))),dd(ts"r"(im(y),re(y)))),dd(pl"r"(ts"r"(m0"r"(re(y)),im(y)),ts"r"(im(y),re(y)))),ispl12"r"(ts"r"(re(y),m0"r"(dd(im(y)))),dd(ts"r"(m0"r"(re(y)),im(y))),ts"r"(im(y),dd(re(y))),dd(ts"r"(im(y),re(y))),t7,lemma6(im(y),re(y),mod2(y),t4)),lemma7(ts"r"(m0"r"(re(y)),im(y)),ts"r"(im(y),re(y)),mod2(y),t4)):is"r"(pl"r"(ts"r"(re(y),m0"r"(dd(im(y)))),ts"r"(im(y),dd(re(y)))),dd(pl"r"(ts"r"(m0"r"(re(y)),im(y)),ts"r"(im(y),re(y)))))
+t9:=tr3is(real,pl"r"(ts"r"(m0"r"(re(y)),im(y)),ts"r"(im(y),re(y))),pl"r"(m0"r"(ts"r"(re(y),im(y))),ts"r"(im(y),re(y))),mn"r"(ts"r"(im(y),re(y)),ts"r"(re(y),im(y))),0,ispl1"r"(ts"r"(m0"r"(re(y)),im(y)),m0"r"(ts"r"(re(y),im(y))),ts"r"(im(y),re(y)),satz197a(re(y),im(y))),compl"r"(m0"r"(ts"r"(re(y),im(y))),ts"r"(im(y),re(y))),satz182e(ts"r"(im(y),re(y)),ts"r"(re(y),im(y)),comts"r"(im(y),re(y)))):is"r"(pl"r"(ts"r"(m0"r"(re(y)),im(y)),ts"r"(im(y),re(y))),0)
+t10:=tr3is(real,pl"r"(ts"r"(re(y),m0"r"(dd(im(y)))),ts"r"(im(y),dd(re(y)))),dd(pl"r"(ts"r"(m0"r"(re(y)),im(y)),ts"r"(im(y),re(y)))),dd(0),0,t8,isf(real,real,[t:real]dd(t),pl"r"(ts"r"(m0"r"(re(y)),im(y)),ts"r"(im(y),re(y))),0,t9),lemma9(mod2(y),t4)):is"r"(pl"r"(ts"r"(re(y),m0"r"(dd(im(y)))),ts"r"(im(y),dd(re(y)))),0)
+t11:=tris(cx,ts(y,pli(dd(re(y)),m0"r"(dd(im(y))))),pli(mn"r"(ts"r"(re(y),dd(re(y))),ts"r"(im(y),m0"r"(dd(im(y))))),pl"r"(ts"r"(re(y),m0"r"(dd(im(y)))),ts"r"(im(y),dd(re(y))))),1c,tsis2a(y,dd(re(y)),m0"r"(dd(im(y)))),isrecx12(mn"r"(ts"r"(re(y),dd(re(y))),ts"r"(im(y),m0"r"(dd(im(y))))),1rl,pl"r"(ts"r"(re(y),m0"r"(dd(im(y)))),ts"r"(im(y),dd(re(y)))),0,t6,t10)):is(ts(y,pli(dd(re(y)),m0"r"(dd(im(y))))),1c)
+t12:=tr3is(cx,ts(y,u),ts(ts(y,pli(dd(re(y)),m0"r"(dd(im(y))))),x),ts(1c,x),x,assts2(y,pli(dd(re(y)),m0"r"(dd(im(y)))),x),ists1(ts(y,pli(dd(re(y)),m0"r"(dd(im(y))))),1c,x,t11),satz222b(x)):is(ts(y,u),x)
+-3229
+n@satz229a:=somei(cx,[t:cx]is(ts(y,t),x),u".3229",t12".3229"):some([t:cx]is(ts(y,t),x))
+satz229:=onei(cx,[t:cx]is(ts(y,t),x),[t:cx][u:cx][v:is(ts(y,t),x)][w:is(ts(y,u),x)]satz229b(t,u,v,w),satz229a):one([t:cx]is(ts(y,t),x))
+ov:=ind(cx,[t:cx]is(ts(y,t),x),satz229):complex
+satz229c:=oneax(cx,[t:cx]is(ts(y,t),x),satz229):is(ts(y,ov(x,y,n)),x)
+satz229d:=symis(cx,ts(y,ov(x,y,n)),x,satz229c):is(x,ts(y,ov(x,y,n)))
+satz229e:=tris(cx,ts(ov(x,y,n),y),ts(y,ov(x,y,n)),x,comts(ov(x,y,n),y),satz229c):is(ts(ov(x,y,n),y),x)
+satz229f:=symis(cx,ts(ov(x,y,n),y),x,satz229e):is(x,ts(ov(x,y,n),y))
+y@[u:complex][n:nis(y,0c)][i:is(ts(y,u),x)]
+satz229g:=satz229b(n,u,ov(x,y,n),i,satz229c(n)):is(u,ov(x,y,n))
+satz229h:=symis(cx,u,ov(x,y,n),satz229g):is(ov(x,y,n),u)
+n@[i:is(ts(u,y),x)]
+satz229j:=satz229g(tris(cx,ts(y,u),ts(u,y),x,comts(y,u),i)):is(u,ov(x,y,n))
+satz229k:=symis(cx,u,ov(x,y,n),satz229j):is(ov(x,y,n),u)
+z@[i:is(x,y)][n:nis(z,0c)]
+isov1:=isf(cx,cx,[t:cx]ov(t,z,n),x,y,i):is(ov(x,z,n),ov(y,z,n))
+i@[n:nis(x,0c)][o:nis(y,0c)]
+isov2:=satz229h(z,x,ov(z,y,o),n,tris(cx,ts(x,ov(z,y,o)),ts(y,ov(z,y,o)),z,ists1(x,y,ov(z,y,o),i),satz229c(z,y,o))):is(ov(z,x,n),ov(z,y,o))
+z@[u:complex][i:is(x,y)][j:is(z,u)][n:nis(z,0c)][o:nis(u,0c)]
+isov12:=tris(cx,ov(x,z,n),ov(y,z,n),ov(y,u,o),isov1(x,y,z,i,n),isov2(z,u,y,j,n,o)):is(ov(x,z,n),ov(y,u,o))
+y@satz230:=tris(cx,pl(mn(x,y),y),pl(y,mn(x,y)),x,compl(mn(x,y),y),satz212h(x,y)):is(pl(mn(x,y),y),x)
+satz231:=satz212e(pl(x,y),y,x,compl(y,x)):is(mn(pl(x,y),y),x)
+satz232:=satz212e(x,mn(x,y),y,satz230):is(mn(x,mn(x,y)),y)
++4233
+z@t1:=tr3is(cx,pl(pl(y,z),mn(mn(x,y),z)),pl(mn(mn(x,y),z),pl(y,z)),pl(mn(mn(x,y),z),pl(z,y)),pl(pl(mn(mn(x,y),z),z),y),compl(pl(y,z),mn(mn(x,y),z)),ispl2(pl(y,z),pl(z,y),mn(mn(x,y),z),compl(y,z)),asspl2(mn(mn(x,y),z),z,y)):is(pl(pl(y,z),mn(mn(x,y),z)),pl(pl(mn(mn(x,y),z),z),y))
+t2:=tr3is(cx,pl(pl(y,z),mn(mn(x,y),z)),pl(pl(mn(mn(x,y),z),z),y),pl(mn(x,y),y),x,t1,ispl1(pl(mn(mn(x,y),z),z),mn(x,y),y,satz230(mn(x,y),z)),satz230(x,y)):is(pl(pl(y,z),mn(mn(x,y),z)),x)
+-4233
+z@satz233:=satz212d(x,pl(y,z),mn(mn(x,y),z),t2".4233"):is(mn(mn(x,y),z),mn(x,pl(y,z)))
+satz234:=satz212g(pl(x,y),z,pl(x,mn(y,z)),tris(cx,pl(pl(x,mn(y,z)),z),pl(x,pl(mn(y,z),z)),pl(x,y),asspl1(x,mn(y,z),z),ispl2(pl(mn(y,z),z),y,x,satz230(y,z)))):is(mn(pl(x,y),z),pl(x,mn(y,z)))
+satz234a:=symis(cx,mn(pl(x,y),z),pl(x,mn(y,z)),satz234):is(pl(x,mn(y,z)),mn(pl(x,y),z))
+satz234b:=tr3is(cx,mn(pl(x,y),z),mn(pl(y,x),z),pl(y,mn(x,z)),pl(mn(x,z),y),ismn1(pl(x,y),pl(y,x),z,compl(x,y)),satz234(y,x,z),compl(y,mn(x,z))):is(mn(pl(x,y),z),pl(mn(x,z),y))
+satz234c:=symis(cx,mn(pl(x,y),z),pl(mn(x,z),y),satz234b):is(pl(mn(x,z),y),mn(pl(x,y),z))
+satz235:=satz212f(x,mn(y,z),pl(mn(x,y),z),tr3is(cx,pl(pl(mn(x,y),z),mn(y,z)),pl(mn(x,y),pl(z,mn(y,z))),pl(mn(x,y),y),x,asspl1(mn(x,y),z,mn(y,z)),ispl2(pl(z,mn(y,z)),y,mn(x,y),satz212h(y,z)),satz230(x,y))):is(pl(mn(x,y),z),mn(x,mn(y,z)))
+satz235a:=symis(cx,pl(mn(x,y),z),mn(x,mn(y,z)),satz235):is(mn(x,mn(y,z)),pl(mn(x,y),z))
+satz235b:=tris(cx,mn(x,mn(y,z)),pl(mn(x,y),z),mn(pl(x,z),y),satz235a,satz234c(x,z,y)):is(mn(x,mn(y,z)),mn(pl(x,z),y))
+satz235c:=tris(cx,mn(x,mn(y,z)),mn(pl(x,z),y),mn(pl(z,x),y),satz235b,ismn1(pl(x,z),pl(z,x),y,compl(x,z))):is(mn(x,mn(y,z)),mn(pl(z,x),y))
+satz236:=satz212g(pl(x,z),pl(y,z),mn(x,y),tris(cx,pl(mn(x,y),pl(y,z)),pl(pl(mn(x,y),y),z),pl(x,z),asspl2(mn(x,y),y,z),ispl1(pl(mn(x,y),y),x,z,satz230(x,y)))):is(mn(pl(x,z),pl(y,z)),mn(x,y))
+satz236a:=tris(cx,mn(pl(z,x),pl(z,y)),mn(pl(x,z),pl(y,z)),mn(x,y),ismn12(pl(z,x),pl(x,z),pl(z,y),pl(y,z),compl(z,x),compl(z,y)),satz236):is(mn(pl(z,x),pl(z,y)),mn(x,y))
+[u:complex]
++4237
+t1:=tr3is(cx,pl(mn(z,u),pl(u,y)),pl(pl(mn(z,u),u),y),pl(z,y),pl(y,z),asspl2(mn(z,u),u,y),ispl1(pl(mn(z,u),u),z,y,satz230(z,u)),compl(z,y)):is(pl(mn(z,u),pl(u,y)),pl(y,z))
+t2:=tr3is(cx,pl(pl(mn(x,y),mn(z,u)),pl(y,u)),pl(pl(mn(x,y),mn(z,u)),pl(u,y)),pl(mn(x,y),pl(mn(z,u),pl(u,y))),pl(mn(x,y),pl(y,z)),ispl2(pl(y,u),pl(u,y),pl(mn(x,y),mn(z,u)),compl(y,u)),asspl1(mn(x,y),mn(z,u),pl(u,y)),ispl2(pl(mn(z,u),pl(u,y)),pl(y,z),mn(x,y),t1)):is(pl(pl(mn(x,y),mn(z,u)),pl(y,u)),pl(mn(x,y),pl(y,z)))
+t3:=tr3is(cx,pl(pl(mn(x,y),mn(z,u)),pl(y,u)),pl(mn(x,y),pl(y,z)),pl(pl(mn(x,y),y),z),pl(x,z),t2,asspl2(mn(x,y),y,z),ispl1(pl(mn(x,y),y),x,z,satz230(x,y))):is(pl(pl(mn(x,y),mn(z,u)),pl(y,u)),pl(x,z))
+-4237
+satz237:=satz212f(pl(x,z),pl(y,u),pl(mn(x,y),mn(z,u)),t3".4237"):is(pl(mn(x,y),mn(z,u)),mn(pl(x,z),pl(y,u)))
++4238
+t1:=tris(cx,pl(pl(x,u),z),pl(x,pl(u,z)),pl(x,pl(z,u)),asspl1(x,u,z),ispl2(pl(u,z),pl(z,u),x,compl(u,z))):is(pl(pl(x,u),z),pl(x,pl(z,u)))
+t2:=tr3is(cx,pl(mn(pl(x,u),pl(y,z)),mn(z,u)),mn(pl(pl(x,u),z),pl(pl(y,z),u)),mn(pl(x,pl(z,u)),pl(y,pl(z,u))),mn(x,y),satz237(pl(x,u),pl(y,z),z,u),ismn12(pl(pl(x,u),z),pl(x,pl(z,u)),pl(pl(y,z),u),pl(y,pl(z,u)),t1,asspl1(y,z,u)),satz236(x,y,pl(z,u))):is(pl(mn(pl(x,u),pl(y,z)),mn(z,u)),mn(x,y))
+-4238
+satz238:=satz212g(mn(x,y),mn(z,u),mn(pl(x,u),pl(y,z)),t2".4238"):is(mn(mn(x,y),mn(z,u)),mn(pl(x,u),pl(y,z)))
+[i:is(mn(x,y),mn(z,u))]
++4239
+t1:=tris1(cx,mn(pl(x,u),pl(y,z)),0c,mn(mn(x,y),mn(z,u)),satz238,satz213b(mn(x,y),mn(z,u),i)):is(mn(pl(x,u),pl(y,z)),0c)
+-4239
+satz239a:=satz213a(pl(x,u),pl(y,z),t1".4239"):is(pl(x,u),pl(y,z))
+u@[i:is(pl(x,u),pl(y,z))]
++*4239
+i@t2:=tris(cx,mn(mn(x,y),mn(z,u)),mn(pl(x,u),pl(y,z)),0c,satz238,satz213b(pl(x,u),pl(y,z),i)):is(mn(mn(x,y),mn(z,u)),0c)
+-4239
+i@satz239b:=satz213a(mn(x,y),mn(z,u),t2".4239"):is(mn(x,y),mn(z,u))
+y@[n:nis(y,0c)]
+satz240:=tris(cx,ts(ov(x,y,n),y),ts(y,ov(x,y,n)),x,comts(ov(x,y,n),y),satz229c(x,y,n)):is(ts(ov(x,y,n),y),x)
+satz241:=satz229h(ts(x,y),y,x,n,comts(y,x)):is(ov(ts(x,y),y,n),x)
+y@[n:nis(x,0c)][o:nis(y,0c)]
+lemma6:=th3"l.imp"(is(ov(x,y,o),0c),is(x,0c),n,[t:is(ov(x,y,o),0c)]tris1(cx,x,0c,ts(y,ov(x,y,o)),satz229c(x,y,o),satz221b(y,ov(x,y,o),t))):nis(ov(x,y,o),0c)
+satz242:=satz229h(x,ov(x,y,o),y,lemma6,satz240(o)):is(ov(x,ov(x,y,o),lemma6),y)
+z@[n:nis(y,0c)][o:nis(z,0c)]
++5243
+t1:=tr3is(cx,ts(ts(y,z),ov(ov(x,y,n),z,o)),ts(ov(ov(x,y,n),z,o),ts(y,z)),ts(ov(ov(x,y,n),z,o),ts(z,y)),ts(ts(ov(ov(x,y,n),z,o),z),y),comts(ts(y,z),ov(ov(x,y,n),z,o)),ists2(ts(y,z),ts(z,y),ov(ov(x,y,n),z,o),comts(y,z)),assts2(ov(ov(x,y,n),z,o),z,y)):is(ts(ts(y,z),ov(ov(x,y,n),z,o)),ts(ts(ov(ov(x,y,n),z,o),z),y))
+t2:=tr3is(cx,ts(ts(y,z),ov(ov(x,y,n),z,o)),ts(ts(ov(ov(x,y,n),z,o),z),y),ts(ov(x,y,n),y),x,t1,ists1(ts(ov(ov(x,y,n),z,o),z),ov(x,y,n),y,satz240(ov(x,y,n),z,o)),satz240(x,y,n)):is(ts(ts(y,z),ov(ov(x,y,n),z,o)),x)
+-5243
+satz243:=satz229g(x,ts(y,z),ov(ov(x,y,n),z,o),satz221d(y,z,n,o),t2".5243"):is(ov(ov(x,y,n),z,o),ov(x,ts(y,z),satz221d(y,z,n,o)))
+z@[n:nis(z,0c)]
+satz244:=satz229k(ts(x,y),z,ts(x,ov(y,z,n)),n,tris(cx,ts(ts(x,ov(y,z,n)),z),ts(x,ts(ov(y,z,n),z)),ts(x,y),assts1(x,ov(y,z,n),z),ists2(ts(ov(y,z,n),z),y,x,satz240(y,z,n)))):is(ov(ts(x,y),z,n),ts(x,ov(y,z,n)))
+satz244a:=symis(cx,ov(ts(x,y),z,n),ts(x,ov(y,z,n)),satz244):is(ts(x,ov(y,z,n)),ov(ts(x,y),z,n))
+satz244b:=tr3is(cx,ov(ts(x,y),z,n),ov(ts(y,x),z,n),ts(y,ov(x,z,n)),ts(ov(x,z,n),y),isov1(ts(x,y),ts(y,x),z,comts(x,y),n),satz244(y,x,z,n),comts(y,ov(x,z,n))):is(ov(ts(x,y),z,n),ts(ov(x,z,n),y))
+satz244c:=symis(cx,ov(ts(x,y),z,n),ts(ov(x,z,n),y),satz244b):is(ts(ov(x,z,n),y),ov(ts(x,y),z,n))
+z@[n:nis(y,0c)][o:nis(z,0c)]
+satz245:=satz229j(x,ov(y,z,o),ts(ov(x,y,n),z),lemma6(y,z,n,o),tr3is(cx,ts(ts(ov(x,y,n),z),ov(y,z,o)),ts(ov(x,y,n),ts(z,ov(y,z,o))),ts(ov(x,y,n),y),x,assts1(ov(x,y,n),z,ov(y,z,o)),ists2(ts(z,ov(y,z,o)),y,ov(x,y,n),satz229c(y,z,o)),satz240(x,y,n))):is(ts(ov(x,y,n),z),ov(x,ov(y,z,o),lemma6(y,z,n,o)))
+satz245a:=symis(cx,ts(ov(x,y,n),z),ov(x,ov(y,z,o),lemma6(y,z,n,o)),satz245):is(ov(x,ov(y,z,o),lemma6(y,z,n,o)),ts(ov(x,y,n),z))
+satz245b:=tris(cx,ov(x,ov(y,z,o),lemma6(y,z,n,o)),ts(ov(x,y,n),z),ov(ts(x,z),y,n),satz245a,satz244c(x,z,y,n)):is(ov(x,ov(y,z,o),lemma6(y,z,n,o)),ov(ts(x,z),y,n))
+satz245c:=tris(cx,ov(x,ov(y,z,o),lemma6(y,z,n,o)),ov(ts(x,z),y,n),ov(ts(z,x),y,n),satz245b,isov1(ts(x,z),ts(z,x),y,comts(x,z),n)):is(ov(x,ov(y,z,o),lemma6(y,z,n,o)),ov(ts(z,x),y,n))
+satz246:=satz229k(ts(x,z),ts(y,z),ov(x,y,n),satz221d(y,z,n,o),tris(cx,ts(ov(x,y,n),ts(y,z)),ts(ts(ov(x,y,n),y),z),ts(x,z),assts2(ov(x,y,n),y,z),ists1(ts(ov(x,y,n),y),x,z,satz240(x,y,n)))):is(ov(ts(x,z),ts(y,z),satz221d(y,z,n,o)),ov(x,y,n))
+satz246a:=tris(cx,ov(ts(z,x),ts(z,y),satz221d(z,y,o,n)),ov(ts(x,z),ts(y,z),satz221d(y,z,n,o)),ov(x,y,n),isov12(ts(z,x),ts(x,z),ts(z,y),ts(y,z),comts(z,x),comts(z,y),satz221d(z,y,o,n),satz221d(y,z,n,o)),satz246):is(ov(ts(z,x),ts(z,y),satz221d(z,y,o,n)),ov(x,y,n))
+z@[u:complex][n:nis(y,0c)][o:nis(u,0c)]
++5247
+t1:=tr3is(cx,ts(ov(z,u,o),ts(u,y)),ts(ts(ov(z,u,o),u),y),ts(z,y),ts(y,z),assts2(ov(z,u,o),u,y),ists1(ts(ov(z,u,o),u),z,y,satz240(z,u,o)),comts(z,y)):is(ts(ov(z,u,o),ts(u,y)),ts(y,z))
+t2:=tr3is(cx,ts(ts(ov(x,y,n),ov(z,u,o)),ts(y,u)),ts(ts(ov(x,y,n),ov(z,u,o)),ts(u,y)),ts(ov(x,y,n),ts(ov(z,u,o),ts(u,y))),ts(ov(x,y,n),ts(y,z)),ists2(ts(y,u),ts(u,y),ts(ov(x,y,n),ov(z,u,o)),comts(y,u)),assts1(ov(x,y,n),ov(z,u,o),ts(u,y)),ists2(ts(ov(z,u,o),ts(u,y)),ts(y,z),ov(x,y,n),t1)):is(ts(ts(ov(x,y,n),ov(z,u,o)),ts(y,u)),ts(ov(x,y,n),ts(y,z)))
+t3:=tr3is(cx,ts(ts(ov(x,y,n),ov(z,u,o)),ts(y,u)),ts(ov(x,y,n),ts(y,z)),ts(ts(ov(x,y,n),y),z),ts(x,z),t2,assts2(ov(x,y,n),y,z),ists1(ts(ov(x,y,n),y),x,z,satz240(x,y,n))):is(ts(ts(ov(x,y,n),ov(z,u,o)),ts(y,u)),ts(x,z))
+-5247
+satz247:=satz229j(ts(x,z),ts(y,u),ts(ov(x,y,n),ov(z,u,o)),satz221d(y,u,n,o),t3".5247"):is(ts(ov(x,y,n),ov(z,u,o)),ov(ts(x,z),ts(y,u),satz221d(y,u,n,o)))
+u@[n:nis(y,0c)][o:nis(z,0c)][p:nis(u,0c)]
++5248
+t1:=tris(cx,ts(ts(x,u),z),ts(x,ts(u,z)),ts(x,ts(z,u)),assts1(x,u,z),ists2(ts(u,z),ts(z,u),x,comts(u,z))):is(ts(ts(x,u),z),ts(x,ts(z,u)))
+t2:=tr3is(cx,ts(ov(ts(x,u),ts(y,z),satz221d(y,z,n,o)),ov(z,u,p)),ov(ts(ts(x,u),z),ts(ts(y,z),u),satz221d(ts(y,z),u,satz221d(y,z,n,o),p)),ov(ts(x,ts(z,u)),ts(y,ts(z,u)),satz221d(y,ts(z,u),n,satz221d(z,u,o,p))),ov(x,y,n),satz247(ts(x,u),ts(y,z),z,u,satz221d(y,z,n,o),p),isov12(ts(ts(x,u),z),ts(x,ts(z,u)),ts(ts(y,z),u),ts(y,ts(z,u)),t1,assts1(y,z,u),satz221d(ts(y,z),u,satz221d(y,z,n,o),p),satz221d(y,ts(z,u),n,satz221d(z,u,o,p))),satz246(x,y,ts(z,u),n,satz221d(z,u,o,p))):is(ts(ov(ts(x,u),ts(y,z),satz221d(y,z,n,o)),ov(z,u,p)),ov(x,y,n))
+-5248
+satz248:=satz229k(ov(x,y,n),ov(z,u,p),ov(ts(x,u),ts(y,z),satz221d(y,z,n,o)),lemma6(z,u,o,p),t2".5248"):is(ov(ov(x,y,n),ov(z,u,p),lemma6(z,u,o,p)),ov(ts(x,u),ts(y,z),satz221d(y,z,n,o)))
+x@[n:nis(x,0c)]
+satz249:=satz229h(0c,x,0c,n,satz221b(x,0c,refis(cx,0c))):is(ov(0c,x,n),0c)
+satz250:=satz229h(x,x,1c,n,satz222(x)):is(ov(x,x,n),1c)
+y@[n:nis(y,0c)][i:is(x,y)]
+satz251a:=tris(cx,ov(x,y,n),ov(x,x,th2"e.notis"(cx,y,0c,x,n,i)),1c,isov2(y,x,x,symis(cx,x,y,i),n,th2"e.notis"(cx,y,0c,x,n,i)),satz250(x,th2"e.notis"(cx,y,0c,x,n,i))):is(ov(x,y,n),1c)
+n@[i:is(ov(x,y,n),1c)]
+satz251b:=tr3is(cx,x,ts(y,ov(x,y,n)),ts(y,1c),y,satz229d(x,y,n),ists2(ov(x,y,n),1c,y,i),satz222(y)):is(x,y)
+u@[n:nis(y,0c)][o:nis(u,0c)][i:is(ov(x,y,n),ov(z,u,o))]
++5252
+[j:is(z,0c)]
+t1:=tr3is(cx,ov(x,y,n),ov(z,u,o),ov(0c,u,o),0c,i,isov1(z,0c,u,j,o),satz249(u,o)):is(ov(x,y,n),0c)
+t2:=tris(cx,x,ts(y,ov(x,y,n)),0c,satz229d(x,y,n),satz221b(y,ov(x,y,n),t1)):is(x,0c)
+t3:=tris2(cx,ts(x,u),ts(y,z),0c,satz221a(x,u,t2),satz221b(y,z,j)):is(ts(x,u),ts(y,z))
+i@[p:nis(z,0c)]
+t4:=tris1(cx,ov(ts(x,u),ts(y,z),satz221d(y,z,n,p)),1c,ov(ov(x,y,n),ov(z,u,o),lemma6(z,u,p,o)),satz248(x,y,z,u,n,p,o),satz251a(ov(x,y,n),ov(z,u,o),lemma6(z,u,p,o),i)):is(ov(ts(x,u),ts(y,z),satz221d(y,z,n,p)),1c)
+t5:=satz251b(ts(x,u),ts(y,z),satz221d(y,z,n,p),t4):is(ts(x,u),ts(y,z))
+-5252
+satz252a:=th1"l.imp"(is(z,0c),is(ts(x,u),ts(y,z)),[t:is(z,0c)]t3".5252"(t),[t:nis(z,0c)]t5".5252"(t)):is(ts(x,u),ts(y,z))
+o@[i:is(ts(x,u),ts(y,z))]
++*5252
+i@[j:is(z,0c)]
+t6:=tris(cx,ts(x,u),ts(y,z),0c,i,satz221b(y,z,j)):is(ts(x,u),0c)
+t7:=ore1(is(x,0c),is(u,0c),satz221c(x,u,t6),o):is(x,0c)
+t8:=tris2(cx,ov(x,y,n),ov(z,u,o),0c,tris(cx,ov(x,y,n),ov(0c,y,n),0c,isov1(x,0c,y,t7,n),satz249(y,n)),tris(cx,ov(z,u,o),ov(0c,u,o),0c,isov1(z,0c,u,j,o),satz249(u,o))):is(ov(x,y,n),ov(z,u,o))
+i@[p:nis(z,0c)]
+t9:=tris(cx,ov(ov(x,y,n),ov(z,u,o),lemma6(z,u,p,o)),ov(ts(x,u),ts(y,z),satz221d(y,z,n,p)),1c,satz248(x,y,z,u,n,p,o),satz251a(ts(x,u),ts(y,z),satz221d(y,z,n,p),i)):is(ov(ov(x,y,n),ov(z,u,o),lemma6(z,u,p,o)),1c)
+t10:=satz251b(ov(x,y,n),ov(z,u,o),lemma6(z,u,p,o),t9):is(ov(x,y,n),ov(z,u,o))
+-5252
+i@satz252b:=th1"l.imp"(is(z,0c),is(ov(x,y,n),ov(z,u,o)),[t:is(z,0c)]t8".5252"(t),[t:nis(z,0c)]t10".5252"(t)):is(ov(x,y,n),ov(z,u,o))
+z@[n:nis(y,0c)]
+satz253:=satz229g(pl(x,z),y,pl(ov(x,y,n),ov(z,y,n)),n,tris(cx,ts(y,pl(ov(x,y,n),ov(z,y,n))),pl(ts(y,ov(x,y,n)),ts(y,ov(z,y,n))),pl(x,z),disttp2(y,ov(x,y,n),ov(z,y,n)),ispl12(ts(y,ov(x,y,n)),x,ts(y,ov(z,y,n)),z,satz229c(x,y,n),satz229c(z,y,n)))):is(pl(ov(x,y,n),ov(z,y,n)),ov(pl(x,z),y,n))
+z@[n:nis(z,0c)]
+distop:=symis(cx,pl(ov(x,z,n),ov(y,z,n)),ov(pl(x,y),z,n),satz253(x,z,y,n)):is(ov(pl(x,y),z,n),pl(ov(x,z,n),ov(y,z,n)))
+distpo:=satz253(x,z,y,n):is(pl(ov(x,z,n),ov(y,z,n)),ov(pl(x,y),z,n))
+u@[n:nis(y,0c)][o:nis(u,0c)]
+satz254:=tris1(cx,pl(ov(x,y,n),ov(z,u,o)),ov(pl(ts(x,u),ts(y,z)),ts(y,u),satz221d(y,u,n,o)),pl(ov(ts(x,u),ts(y,u),satz221d(y,u,n,o)),ov(ts(y,z),ts(y,u),satz221d(y,u,n,o))),ispl12(ov(ts(x,u),ts(y,u),satz221d(y,u,n,o)),ov(x,y,n),ov(ts(y,z),ts(y,u),satz221d(y,u,n,o)),ov(z,u,o),satz246(x,y,u,n,o),satz246a(z,u,y,o,n)),satz253(ts(x,u),ts(y,u),ts(y,z),satz221d(y,u,n,o))):is(pl(ov(x,y,n),ov(z,u,o)),ov(pl(ts(x,u),ts(y,z)),ts(y,u),satz221d(y,u,n,o)))
+z@[n:nis(y,0c)]
+satz255:=satz229g(mn(x,z),y,mn(ov(x,y,n),ov(z,y,n)),n,tris(cx,ts(y,mn(ov(x,y,n),ov(z,y,n))),mn(ts(y,ov(x,y,n)),ts(y,ov(z,y,n))),mn(x,z),disttm2(y,ov(x,y,n),ov(z,y,n)),ismn12(ts(y,ov(x,y,n)),x,ts(y,ov(z,y,n)),z,satz229c(x,y,n),satz229c(z,y,n)))):is(mn(ov(x,y,n),ov(z,y,n)),ov(mn(x,z),y,n))
+z@[n:nis(z,0c)]
+distom:=symis(cx,mn(ov(x,z,n),ov(y,z,n)),ov(mn(x,y),z,n),satz255(x,z,y,n)):is(ov(mn(x,y),z,n),mn(ov(x,z,n),ov(y,z,n)))
+distmo:=satz255(x,z,y,n):is(mn(ov(x,z,n),ov(y,z,n)),ov(mn(x,y),z,n))
+u@[n:nis(y,0c)][o:nis(u,0c)]
+satz256:=tris1(cx,mn(ov(x,y,n),ov(z,u,o)),ov(mn(ts(x,u),ts(y,z)),ts(y,u),satz221d(y,u,n,o)),mn(ov(ts(x,u),ts(y,u),satz221d(y,u,n,o)),ov(ts(y,z),ts(y,u),satz221d(y,u,n,o))),ismn12(ov(ts(x,u),ts(y,u),satz221d(y,u,n,o)),ov(x,y,n),ov(ts(y,z),ts(y,u),satz221d(y,u,n,o)),ov(z,u,o),satz246(x,y,u,n,o),satz246a(z,u,y,o,n)),satz255(ts(x,u),ts(y,u),ts(y,z),satz221d(y,u,n,o))):is(mn(ov(x,y,n),ov(z,u,o)),ov(mn(ts(x,u),ts(y,z)),ts(y,u),satz221d(y,u,n,o)))
+x@conj:=pli(re(x),m0"r"(im(x))):complex
+b@conjisa:=isrecx12(re(pli(a,b)),a,m0"r"(im(pli(a,b))),m0"r"(b),reis(a,b),ism0"r"(im(pli(a,b)),b,imis(a,b))):is(conj(pli(a,b)),pli(a,m0"r"(b)))
+conjisb:=symis(cx,conj(pli(a,b)),pli(a,m0"r"(b)),conjisa):is(pli(a,m0"r"(b)),conj(pli(a,b)))
+y@[i:is(x,y)]
+isconj:=isf(cx,cx,[t:cx]conj(t),x,y,i):is(conj(x),conj(y))
+x@satz257:=tr3is(cx,conj(conj(x)),pli(re(x),m0"r"(m0"r"(im(x)))),pli(re(x),im(x)),x,conjisa(re(x),m0"r"(im(x))),isrecx2(m0"r"(m0"r"(im(x))),im(x),re(x),satz177(im(x))),pliis(x)):is(conj(conj(x)),x)
+[i:is(x,0c)]
+satz258a:=tr3is(cx,conj(x),conj(0c),pli(0,m0"r"(0)),0c,isconj(x,0c,i),conjisa(0,0),isrecx2(m0"r"(0),0,0,satz176b(0,refis(real,0)))):is(conj(x),0c)
+x@[i:is(conj(x),0c)]
++6258
+t1:=tris(real,re(x),re(conj(x)),0,isre(re(x),m0"r"(im(x))),lemma1(conj(x),i)):is"r"(re(x),0)
+t2:=satz176e(im(x),tris(real,m0"r"(im(x)),im(conj(x)),0,isim(re(x),m0"r"(im(x))),lemma2(conj(x),i))):is"r"(im(x),0)
+-6258
+satz258b:=tris(cx,x,pli(re(x),im(x)),0c,ispli(x),isrecx12(re(x),0,im(x),0,t1".6258",t2".6258")):is(x,0c)
++*6258
+i@anders:=tris1(cx,x,0c,conj(conj(x)),satz257,satz258a(conj(x),i)):is(x,0c)
+-6258
+x@[n:nis(x,0c)]
+satz258c:=th3"l.imp"(is(conj(x),0c),is(x,0c),n,[t:is(conj(x),0c)]satz258b(t)):nis(conj(x),0c)
+x@[i:is(conj(x),x)]
++6259
+t1:=tris(real,m0"r"(im(x)),im(conj(x)),im(x),isim(re(x),m0"r"(im(x))),isceim(conj(x),x,i)):is"r"(m0"r"(im(x)),im(x))
+-6259
+satz259a:=lemma10(im(x),symis(real,m0"r"(im(x)),im(x),t1".6259")):is"r"(im(x),0)
+x@[i:is"r"(im(x),0)]
+satz259b:=tris(cx,conj(x),pli(re(x),im(x)),x,isrecx2(m0"r"(im(x)),im(x),re(x),tris2(real,m0"r"(im(x)),im(x),0,satz176b(im(x),i),i)),pliis(x)):is(conj(x),x)
+x@[i:is(x,conj(x))]
+satz269c:=satz259a(x,symis(cx,x,conj(x),i)):is"r"(im(x),0)
+x@[i:is"r"(im(x),0)]
+satz269d:=symis(cx,conj(x),x,satz259b(i)):is(x,conj(x))
+y@satz260:=tr3is(cx,conj(pl(x,y)),pli(pl"r"(re(x),re(y)),m0"r"(pl"r"(im(x),im(y)))),pli(pl"r"(re(x),re(y)),pl"r"(m0"r"(im(x)),m0"r"(im(y)))),pl(conj(x),conj(y)),conjisa(pl"r"(re(x),re(y)),pl"r"(im(x),im(y))),isrecx2(m0"r"(pl"r"(im(x),im(y))),pl"r"(m0"r"(im(x)),m0"r"(im(y))),pl"r"(re(x),re(y)),satz180(im(x),im(y))),plis12b(re(x),m0"r"(im(x)),re(y),m0"r"(im(y)))):is(conj(pl(x,y)),pl(conj(x),conj(y)))
+satz260a:=symis(cx,conj(pl(x,y)),pl(conj(x),conj(y)),satz260):is(pl(conj(x),conj(y)),conj(pl(x,y)))
++6261
+t1:=tris(real,m0"r"(imts(x,y)),pl"r"(m0"r"(ts"r"(re(x),im(y))),m0"r"(ts"r"(im(x),re(y)))),pl"r"(ts"r"(re(x),m0"r"(im(y))),ts"r"(m0"r"(im(x)),re(y))),satz180(ts"r"(re(x),im(y)),ts"r"(im(x),re(y))),ispl12"r"(m0"r"(ts"r"(re(x),im(y))),ts"r"(re(x),m0"r"(im(y))),m0"r"(ts"r"(im(x),re(y))),ts"r"(m0"r"(im(x)),re(y)),satz197f(re(x),im(y)),satz197e(im(x),re(y)))):is"r"(m0"r"(imts(x,y)),pl"r"(ts"r"(re(x),m0"r"(im(y))),ts"r"(m0"r"(im(x)),re(y))))
+-6261
+satz261:=tr3is(cx,conj(ts(x,y)),pli(rets(x,y),m0"r"(imts(x,y))),pli(mn"r"(ts"r"(re(x),re(y)),ts"r"(m0"r"(im(x)),m0"r"(im(y)))),pl"r"(ts"r"(re(x),m0"r"(im(y))),ts"r"(m0"r"(im(x)),re(y)))),ts(conj(x),conj(y)),conjisa(rets(x,y),imts(x,y)),isrecx12(rets(x,y),mn"r"(ts"r"(re(x),re(y)),ts"r"(m0"r"(im(x)),m0"r"(im(y)))),m0"r"(imts(x,y)),pl"r"(ts"r"(re(x),m0"r"(im(y))),ts"r"(m0"r"(im(x)),re(y))),ismn2"r"(ts"r"(im(x),im(y)),ts"r"(m0"r"(im(x)),m0"r"(im(y))),ts"r"(re(x),re(y)),satz198a(im(x),im(y))),t1".6261"),tsis12b(re(x),m0"r"(im(x)),re(y),m0"r"(im(y)))):is(conj(ts(x,y)),ts(conj(x),conj(y)))
+satz261a:=symis(cx,conj(ts(x,y)),ts(conj(x),conj(y)),satz261):is(ts(conj(x),conj(y)),conj(ts(x,y)))
++6262
+t1:=symis(cx,pl(mn(x,y),y),x,satz230(x,y)):is(x,pl(mn(x,y),y))
+t2:=tris(cx,conj(x),conj(pl(mn(x,y),y)),pl(conj(mn(x,y)),conj(y)),isconj(x,pl(mn(x,y),y),t1),satz260(mn(x,y),y)):is(conj(x),pl(conj(mn(x,y)),conj(y)))
+-6262
+satz262:=satz212f(conj(x),conj(y),conj(mn(x,y)),symis(cx,conj(x),pl(conj(mn(x,y)),conj(y)),t2".6262")):is(conj(mn(x,y)),mn(conj(x),conj(y)))
+satz262a:=symis(cx,conj(mn(x,y)),mn(conj(x),conj(y)),satz262):is(mn(conj(x),conj(y)),conj(mn(x,y)))
+[n:nis(y,0c)]
++6263
+t1:=satz229f(x,y,n):is(x,ts(ov(x,y,n),y))
+t2:=isconj(x,ts(ov(x,y,n),y),t1):is(conj(x),conj(ts(ov(x,y,n),y)))
+t3:=satz261(ov(x,y,n),y):is(conj(ts(ov(x,y,n),y)),ts(conj(ov(x,y,n)),conj(y)))
+t4:=tris(cx,conj(x),conj(ts(ov(x,y,n),y)),ts(conj(ov(x,y,n)),conj(y)),t2,t3):is(conj(x),ts(conj(ov(x,y,n)),conj(y)))
+t5:=satz258c(y,n):nis(conj(y),0c)
+-6263
+satz263:=satz229j(conj(x),conj(y),conj(ov(x,y,n)),t5".6263",symis(cx,conj(x),ts(conj(ov(x,y,n)),conj(y)),t4".6263")):is(conj(ov(x,y,n)),ov(conj(x),conj(y),satz258c(y,n)))
+satz263a:=symis(cx,conj(ov(x,y,n)),ov(conj(x),conj(y),satz258c(y,n)),satz263):is(ov(conj(x),conj(y),satz258c(y,n)),conj(ov(x,y,n)))
+x@mod:=sqrt(mod2(x),lemma5(x)):real
+y@[i:is(x,y)]
+ismod:=isf(cx,real,[t:cx]mod(t),x,y,i):is"r"(mod(x),mod(y))
+x@[n:nis(x,0c)]
+satz264a:=sqrtnot0(mod2(x),lemma5(x),pnot0(mod2(x),lemma4(x,n))):pos(mod(x))
+x@[i:is(x,0c)]
+satz264b:=sqrt0(mod2(x),lemma5(x),lemma3(x,i)):is"r"(mod(x),0)
+x@satz264c:=thsqrt1a(mod2(x),lemma5(x)):not(neg(mod(x)))
+satz264d:=satz167f(mod(x),0,th3"l.imp"(less(mod(x),0),neg(mod(x)),satz264c,[t:less(mod(x),0)]satz169d(mod(x),t))):moreis(mod(x),0)
++7265
+t1:=symis(real,ts"r"(mod(x),mod(x)),mod2(x),thsqrt1b(mod2(x),lemma5(x))):is"r"(mod2(x),ts"r"(mod(x),mod(x)))
+t2:=tris(real,pl"r"(ts"r"(re(x),re(x)),0),ts"r"(re(x),re(x)),ts"r"(abs(re(x)),abs(re(x))),pl02(ts"r"(re(x),re(x)),0,refis(real,0)),lemma12"r"(re(x))):is"r"(pl"r"(ts"r"(re(x),re(x)),0),ts"r"(abs(re(x)),abs(re(x))))
+t3:=satz191(ts"r"(re(x),re(x)),ts"r"(re(x),re(x)),ts"r"(im(x),im(x)),0,moreisi2(ts"r"(re(x),re(x)),ts"r"(re(x),re(x)),refis(real,ts"r"(re(x),re(x)))),lemma11"r"(im(x))):moreis(mod2(x),pl"r"(ts"r"(re(x),re(x)),0))
+t4:=ismoreis12(mod2(x),ts"r"(mod(x),mod(x)),pl"r"(ts"r"(re(x),re(x)),0),ts"r"(abs(re(x)),abs(re(x))),t1,t2,t3):moreis(ts"r"(mod(x),mod(x)),ts"r"(abs(re(x)),abs(re(x))))
+t5:=tris(real,pl"r"(0,ts"r"(im(x),im(x))),ts"r"(im(x),im(x)),ts"r"(abs(im(x)),abs(im(x))),pl01(0,ts"r"(im(x),im(x)),refis(real,0)),lemma12"r"(im(x))):is"r"(pl"r"(0,ts"r"(im(x),im(x))),ts"r"(abs(im(x)),abs(im(x))))
+t6:=satz191(ts"r"(re(x),re(x)),0,ts"r"(im(x),im(x)),ts"r"(im(x),im(x)),lemma11"r"(re(x)),moreisi2(ts"r"(im(x),im(x)),ts"r"(im(x),im(x)),refis(real,ts"r"(im(x),im(x))))):moreis(mod2(x),pl"r"(0,ts"r"(im(x),im(x))))
+t7:=ismoreis12(mod2(x),ts"r"(mod(x),mod(x)),pl"r"(0,ts"r"(im(x),im(x))),ts"r"(abs(im(x)),abs(im(x))),t1,t5,t6):moreis(ts"r"(mod(x),mod(x)),ts"r"(abs(im(x)),abs(im(x))))
+@[r:real][s:real][m:moreis(ts"r"(r,r),ts"r"(s,s))][n:moreis(r,0)][l:less(r,s)]
+t8:=lemma2"r"(r,s,l):more(s,r)
+t9:=satz169b(s,satz172d(s,r,0,t8,n)):pos(s)
+[o:more(r,0)]
+t10:=trmore(ts"r"(s,s),ts"r"(r,s),ts"r"(r,r),satz203a(s,r,s,t8,t9),satz203d(s,r,r,t8,satz169b(r,o))):more(ts"r"(s,s),ts"r"(r,r))
+l@[i:is"r"(r,0)]
+t11:=ismore2(0,ts"r"(r,r),ts"r"(s,s),symis(real,ts"r"(r,r),0,ts01(r,r,i)),satz169a(ts"r"(s,s),possq(s,pnot0(s,t9)))):more(ts"r"(s,s),ts"r"(r,r))
+l@t12:=lemma1"r"(ts"r"(s,s),ts"r"(r,r),orapp(more(r,0),is"r"(r,0),more(ts"r"(s,s),ts"r"(r,r)),n,[t:more(r,0)]t10(t),[t:is"r"(r,0)]t11(t))):less(ts"r"(r,r),ts"r"(s,s))
+n@t13:=satz167f(r,s,[t:less(r,s)]<t12(t)>satz167c(ts"r"(r,r),ts"r"(s,s),m)):moreis(r,s)
+-7265
+satz265a:=t13".7265"(mod(x),abs(re(x)),t4".7265",satz264d(x)):moreis(mod(x),abs(re(x)))
+satz265b:=t13".7265"(mod(x),abs(im(x)),t7".7265",satz264d(x)):moreis(mod(x),abs(im(x)))
+@[r:real][s:real][i:is(ts(pli(r,0),pli(r,0)),ts(pli(s,0),pli(s,0)))][n:not(neg(r))][o:not(neg(s))]
++7266
+@[t:real]
+t1:=pl02(ts"r"(t,t),m0"r"(ts"r"(0,0)),satz176b(ts"r"(0,0),ts01(0,0,refis(real,0)))):is"r"(mn"r"(ts"r"(t,t),ts"r"(0,0)),ts"r"(t,t))
+t2:=tris(real,pl"r"(ts"r"(t,0),ts"r"(0,t)),ts"r"(t,0),0,pl02(ts"r"(t,0),ts"r"(0,t),ts01(0,t,refis(real,0))),ts02(t,0,refis(real,0))):is"r"(pl"r"(ts"r"(t,0),ts"r"(0,t)),0)
+t3:=tris(cx,ts(pli(t,0),pli(t,0)),pli(mn"r"(ts"r"(t,t),ts"r"(0,0)),pl"r"(ts"r"(t,0),ts"r"(0,t))),pli(ts"r"(t,t),0),tsis12a(t,0,t,0),isrecx12(mn"r"(ts"r"(t,t),ts"r"(0,0)),ts"r"(t,t),pl"r"(ts"r"(t,0),ts"r"(0,t)),0,t1,t2)):is(ts(pli(t,0),pli(t,0)),pli(ts"r"(t,t),0))
+o@t4:=tr3is(cx,pli(ts"r"(r,r),0),ts(pli(r,0),pli(r,0)),ts(pli(s,0),pli(s,0)),pli(ts"r"(s,s),0),symis(cx,ts(pli(r,0),pli(r,0)),pli(ts"r"(r,r),0),t3(r)),i,t3(s)):is(pli(ts"r"(r,r),0),pli(ts"r"(s,s),0))
+t5:=tr3is(real,ts"r"(r,r),re(pli(ts"r"(r,r),0)),re(pli(ts"r"(s,s),0)),ts"r"(s,s),isre(ts"r"(r,r),0),iscere(pli(ts"r"(r,r),0),pli(ts"r"(s,s),0),t4),reis(ts"r"(s,s),0)):is"r"(ts"r"(r,r),ts"r"(s,s))
+t6:=andi(not(neg(r)),is"r"(ts"r"(r,r),ts"r"(s,s)),n,t5):and(not(neg(r)),is"r"(ts"r"(r,r),ts"r"(s,s)))
+t7:=andi(not(neg(s)),is"r"(ts"r"(s,s),ts"r"(s,s)),o,refis(real,ts"r"(s,s))):and(not(neg(s)),is"r"(ts"r"(s,s),ts"r"(s,s)))
+-7266
+satz266:=satzr161b(ts"r"(s,s),r,s,t6".7266",t7".7266"):is"r"(r,s)
++7267
+x@t1:=tris(cx,ts(pli(mod(x),0),pli(mod(x),0)),pli(ts"r"(mod(x),mod(x)),0),pli(mod2(x),0),t3"c.7266"(mod(x)),isrecx1(ts"r"(mod(x),mod(x)),mod2(x),0,thsqrt1b(mod2(x),lemma5(x)))):is(ts(pli(mod(x),0),pli(mod(x),0)),pli(mod2(x),0))
+t2:=ispl2"r"(m0"r"(ts"r"(im(x),m0"r"(im(x)))),ts"r"(im(x),im(x)),ts"r"(re(x),re(x)),tris(real,m0"r"(ts"r"(im(x),m0"r"(im(x)))),ts"r"(m0"r"(im(x)),m0"r"(im(x))),ts"r"(im(x),im(x)),satz197e(im(x),m0"r"(im(x))),satz198(im(x),im(x)))):is"r"(mn"r"(ts"r"(re(x),re(x)),ts"r"(im(x),m0"r"(im(x)))),mod2(x))
+t3:=tris(real,pl"r"(ts"r"(re(x),m0"r"(im(x))),ts"r"(im(x),re(x))),pl"r"(m0"r"(ts"r"(re(x),im(x))),ts"r"(re(x),im(x))),0,ispl12"r"(ts"r"(re(x),m0"r"(im(x))),m0"r"(ts"r"(re(x),im(x))),ts"r"(im(x),re(x)),ts"r"(re(x),im(x)),satz197b(re(x),im(x)),comts"r"(im(x),re(x))),satz179a(ts"r"(re(x),im(x)))):is"r"(pl"r"(ts"r"(re(x),m0"r"(im(x))),ts"r"(im(x),re(x))),0)
+t4:=tris(cx,ts(x,conj(x)),pli(mn"r"(ts"r"(re(x),re(x)),ts"r"(im(x),m0"r"(im(x)))),pl"r"(ts"r"(re(x),m0"r"(im(x))),ts"r"(im(x),re(x)))),pli(mod2(x),0),tsis2a(x,re(x),m0"r"(im(x))),isrecx12(mn"r"(ts"r"(re(x),re(x)),ts"r"(im(x),m0"r"(im(x)))),mod2(x),pl"r"(ts"r"(re(x),m0"r"(im(x))),ts"r"(im(x),re(x))),0,t2,t3)):is(ts(x,conj(x)),pli(mod2(x),0))
+-7267
+x@satz267:=tris2(cx,ts(pli(mod(x),0),pli(mod(x),0)),ts(x,conj(x)),pli(mod2(x),0),t1".7267",t4".7267"):is(ts(pli(mod(x),0),pli(mod(x),0)),ts(x,conj(x)))
+satz267a:=symis(cx,ts(pli(mod(x),0),pli(mod(x),0)),ts(x,conj(x)),satz267):is(ts(x,conj(x)),ts(pli(mod(x),0),pli(mod(x),0)))
++7268
+z@t1:=tr3is(cx,ts(x,ts(y,z)),ts(ts(x,y),z),ts(ts(y,x),z),ts(y,ts(x,z)),assts2(x,y,z),ists1(ts(x,y),ts(y,x),z,comts(x,y)),assts1(y,x,z)):is(ts(x,ts(y,z)),ts(y,ts(x,z)))
+[u:complex]
+t2:=tr3is(cx,ts(ts(x,y),ts(z,u)),ts(x,ts(y,ts(z,u))),ts(x,ts(z,ts(y,u))),ts(ts(x,z),ts(y,u)),assts1(x,y,ts(z,u)),ists2(ts(y,ts(z,u)),ts(z,ts(y,u)),x,t1(y,z,u)),assts2(x,z,ts(y,u))):is(ts(ts(x,y),ts(z,u)),ts(ts(x,z),ts(y,u)))
+y@t3:=tr3is(cx,ts(pli(mod(ts(x,y)),0),pli(mod(ts(x,y)),0)),ts(ts(x,y),conj(ts(x,y))),ts(ts(x,y),ts(conj(x),conj(y))),ts(ts(x,conj(x)),ts(y,conj(y))),satz267(ts(x,y)),ists2(conj(ts(x,y)),ts(conj(x),conj(y)),ts(x,y),satz261(x,y)),t2(x,y,conj(x),conj(y))):is(ts(pli(mod(ts(x,y)),0),pli(mod(ts(x,y)),0)),ts(ts(x,conj(x)),ts(y,conj(y))))
+t4:=tr3is(cx,ts(pli(mod(ts(x,y)),0),pli(mod(ts(x,y)),0)),ts(ts(x,conj(x)),ts(y,conj(y))),ts(ts(pli(mod(x),0),pli(mod(x),0)),ts(pli(mod(y),0),pli(mod(y),0))),ts(ts(pli(mod(x),0),pli(mod(y),0)),ts(pli(mod(x),0),pli(mod(y),0))),t3,ists12(ts(x,conj(x)),ts(pli(mod(x),0),pli(mod(x),0)),ts(y,conj(y)),ts(pli(mod(y),0),pli(mod(y),0)),satz267a(x),satz267a(y)),t2(pli(mod(x),0),pli(mod(x),0),pli(mod(y),0),pli(mod(y),0))):is(ts(pli(mod(ts(x,y)),0),pli(mod(ts(x,y)),0)),ts(ts(pli(mod(x),0),pli(mod(y),0)),ts(pli(mod(x),0),pli(mod(y),0))))
+@[r:real][s:real]
+t5:=pl02(ts"r"(r,s),m0"r"(ts"r"(0,0)),satz176b(ts"r"(0,0),ts01(0,0,refis(real,0)))):is"r"(mn"r"(ts"r"(r,s),ts"r"(0,0)),ts"r"(r,s))
+t6:=tris(real,pl"r"(ts"r"(r,0),ts"r"(0,s)),ts"r"(r,0),0,pl02(ts"r"(r,0),ts"r"(0,s),ts01(0,s,refis(real,0))),ts02(r,0,refis(real,0))):is"r"(pl"r"(ts"r"(r,0),ts"r"(0,s)),0)
+t7:=tris(cx,ts(pli(r,0),pli(s,0)),pli(mn"r"(ts"r"(r,s),ts"r"(0,0)),pl"r"(ts"r"(r,0),ts"r"(0,s))),pli(ts"r"(r,s),0),tsis12a(r,0,s,0),isrecx12(mn"r"(ts"r"(r,s),ts"r"(0,0)),ts"r"(r,s),pl"r"(ts"r"(r,0),ts"r"(0,s)),0,t5,t6)):is(ts(pli(r,0),pli(s,0)),pli(ts"r"(r,s),0))
+y@t8:=tris(cx,ts(pli(mod(ts(x,y)),0),pli(mod(ts(x,y)),0)),ts(ts(pli(mod(x),0),pli(mod(y),0)),ts(pli(mod(x),0),pli(mod(y),0))),ts(pli(ts"r"(mod(x),mod(y)),0),pli(ts"r"(mod(x),mod(y)),0)),t4,ists12(ts(pli(mod(x),0),pli(mod(y),0)),pli(ts"r"(mod(x),mod(y)),0),ts(pli(mod(x),0),pli(mod(y),0)),pli(ts"r"(mod(x),mod(y)),0),t7(mod(x),mod(y)),t7(mod(x),mod(y)))):is(ts(pli(mod(ts(x,y)),0),pli(mod(ts(x,y)),0)),ts(pli(ts"r"(mod(x),mod(y)),0),pli(ts"r"(mod(x),mod(y)),0)))
+[n:neg(ts"r"(mod(x),mod(y)))]
+t9:=orapp(and(pos(mod(x)),neg(mod(y))),and(neg(mod(x)),pos(mod(y))),con,satz196h(mod(x),mod(y),n),[t:and(pos(mod(x)),neg(mod(y)))]<ande2(pos(mod(x)),neg(mod(y)),t)>satz264c(y),[t:and(neg(mod(x)),pos(mod(y)))]<ande1(neg(mod(x)),pos(mod(y)),t)>satz264c(x)):con
+-7268
+y@satz268:=satz266(mod(ts(x,y)),ts"r"(mod(x),mod(y)),t8".7268",satz264c(ts(x,y)),[t:neg(ts"r"(mod(x),mod(y)))]t9".7268"(t)):is"r"(mod(ts(x,y)),ts"r"(mod(x),mod(y)))
+satz268a:=symis(real,mod(ts(x,y)),ts"r"(mod(x),mod(y)),satz268):is"r"(ts"r"(mod(x),mod(y)),mod(ts(x,y)))
+[n:nis(y,0c)]
++7269
+t1:=pnot0(mod(y),satz264a(y,n)):nis"r"(mod(y),0)
+t2:=tris1(real,ts"r"(mod(ov(x,y,n)),mod(y)),mod(x),mod(ts(ov(x,y,n),y)),satz268(ov(x,y,n),y),ismod(ts(ov(x,y,n),y),x,satz240(x,y,n))):is"r"(ts"r"(mod(ov(x,y,n)),mod(y)),mod(x))
+t3:=satz204g(mod(x),mod(y),mod(ov(x,y,n)),t1,tris(real,ts"r"(mod(y),mod(ov(x,y,n))),ts"r"(mod(ov(x,y,n)),mod(y)),mod(x),comts"r"(mod(y),mod(ov(x,y,n))),t2)):is"r"(mod(ov(x,y,n)),ov"r"(mod(x),mod(y),t1))
+-7269
+satz269:=t3".7269":is"r"(mod(ov(x,y,n)),ov"r"(mod(x),mod(y),pnot0(mod(y),satz264a(y,n))))
+y@[i:is(pl(x,y),1c)]
++7270
+@[r:real]
+t1:=th1"l.imp"(neg(r),moreis(abs(r),r),[t:neg(r)]moreisi1(abs(r),r,trmore(abs(r),0,r,satz169a(abs(r),satz166b(r,t)),lemma2"r"(r,0,satz169c(r,t)))),[t:not(neg(r))]moreisi2(abs(r),r,absnn(r,t))):moreis(abs(r),r)
+x@t2:=trmoreis(mod(x),abs(re(x)),re(x),satz265a(x),t1(re(x))):moreis(mod(x),re(x))
+i@t3:=tr3is(real,pl"r"(re(x),re(y)),re(pl(x,y)),re(1c),1rl,isre(pl"r"(re(x),re(y)),pl"r"(im(x),im(y))),iscere(pl(x,y),1c,i),reis(1rl,0)):is"r"(pl"r"(re(x),re(y)),1rl)
+-7270
+satz270:=ismoreis2(pl"r"(re(x),re(y)),1rl,pl"r"(mod(x),mod(y)),t3".7270",satz191(mod(x),re(x),mod(y),re(y),t2".7270",t2".7270"(y))):moreis(pl"r"(mod(x),mod(y)),1rl)
++7271
+y@[i:is(pl(x,y),0c)]
+t1:=satz264b(pl(x,y),i):is"r"(mod(pl(x,y)),0)
+t2:=ismoreis2(pl"r"(0,0),mod(pl(x,y)),pl"r"(mod(x),mod(y)),tris2(real,pl"r"(0,0),mod(pl(x,y)),0,pl01(0,0,refis(real,0)),t1),satz191(mod(x),0,mod(y),0,satz264d(x),satz264d(y))):moreis(pl"r"(mod(x),mod(y)),mod(pl(x,y)))
+y@[n:nis(pl(x,y),0c)]
+t3:=pnot0(mod(pl(x,y)),satz264a(pl(x,y),n)):nis"r"(mod(pl(x,y)),0)
+t4:=tris(cx,pl(ov(x,pl(x,y),n),ov(y,pl(x,y),n)),ov(pl(x,y),pl(x,y),n),1c,satz253(x,pl(x,y),y,n),satz250(pl(x,y),n)):is(pl(ov(x,pl(x,y),n),ov(y,pl(x,y),n)),1c)
+t5:=satz270(ov(x,pl(x,y),n),ov(y,pl(x,y),n),t4):moreis(pl"r"(mod(ov(x,pl(x,y),n)),mod(ov(y,pl(x,y),n))),1rl)
+fx:=ov"r"(mod(x),mod(pl(x,y)),t3):real
+fy:=ov"r"(mod(y),mod(pl(x,y)),t3):real
+t6:=ismoreis1(pl"r"(mod(ov(x,pl(x,y),n)),mod(ov(y,pl(x,y),n))),pl"r"(fx,fy),1rl,ispl12"r"(mod(ov(x,pl(x,y),n)),fx,mod(ov(y,pl(x,y),n)),fy,satz269(x,pl(x,y),n),satz269(y,pl(x,y),n)),t5):moreis(pl"r"(fx,fy),1rl)
+prl:=ts"r"(pl"r"(fx,fy),mod(pl(x,y))):real
+prr:=ts"r"(1rl,mod(pl(x,y))):real
+t7:=orapp(more(pl"r"(fx,fy),1rl),is"r"(pl"r"(fx,fy),1rl),moreis(prl,prr),t6,[t:more(pl"r"(fx,fy),1rl)]moreisi1(prl,prr,satz203a(pl"r"(fx,fy),1rl,mod(pl(x,y)),t,satz264a(pl(x,y),n))),[t:is"r"(pl"r"(fx,fy),1rl)]moreisi2(prl,prr,ists1"r"(pl"r"(fx,fy),1rl,mod(pl(x,y)),t))):moreis(prl,prr)
+t8:=tris(real,prl,pl"r"(ts"r"(fx,mod(pl(x,y))),ts"r"(fy,mod(pl(x,y)))),pl"r"(mod(x),mod(y)),disttp1"r"(fx,fy,mod(pl(x,y))),ispl12"r"(ts"r"(fx,mod(pl(x,y))),mod(x),ts"r"(fy,mod(pl(x,y))),mod(y),satz204e(mod(x),mod(pl(x,y)),t3),satz204e(mod(y),mod(pl(x,y)),t3))):is"r"(prl,pl"r"(mod(x),mod(y)))
+t9:=satz195b(mod(pl(x,y))):is"r"(prr,mod(pl(x,y)))
+t10:=ismoreis12(prl,pl"r"(mod(x),mod(y)),prr,mod(pl(x,y)),t8,t9,t7):moreis(pl"r"(mod(x),mod(y)),mod(pl(x,y)))
+y@t11:=th1"l.imp"(is(pl(x,y),0c),moreis(pl"r"(mod(x),mod(y)),mod(pl(x,y))),[t:is(pl(x,y),0c)]t2(t),[t:nis(pl(x,y),0c)]t10(t)):moreis(pl"r"(mod(x),mod(y)),mod(pl(x,y)))
+-7271
+y@satz271:=satz168a(pl"r"(mod(x),mod(y)),mod(pl(x,y)),t11".7271"):lessis(mod(pl(x,y)),pl"r"(mod(x),mod(y)))
+satz271a:=t11".7271":moreis(pl"r"(mod(x),mod(y)),mod(pl(x,y)))
++7272
+x@t1:=tris(real,re(m0(x)),re(pli(m0"r"(re(x)),m0"r"(im(x)))),m0"r"(re(x)),iscere(m0(x),pli(m0"r"(re(x)),m0"r"(im(x))),satz214(x)),reis(m0"r"(re(x)),m0"r"(im(x)))):is"r"(re(m0(x)),m0"r"(re(x)))
+t2:=tris(real,ts"r"(re(m0(x)),re(m0(x))),ts"r"(m0"r"(re(x)),m0"r"(re(x))),ts"r"(re(x),re(x)),ists12"r"(re(m0(x)),m0"r"(re(x)),re(m0(x)),m0"r"(re(x)),t1,t1),satz198(re(x),re(x))):is"r"(ts"r"(re(m0(x)),re(m0(x))),ts"r"(re(x),re(x)))
+t3:=tris(real,im(m0(x)),im(pli(m0"r"(re(x)),m0"r"(im(x)))),m0"r"(im(x)),isceim(m0(x),pli(m0"r"(re(x)),m0"r"(im(x))),satz214(x)),imis(m0"r"(re(x)),m0"r"(im(x)))):is"r"(im(m0(x)),m0"r"(im(x)))
+t4:=tris(real,ts"r"(im(m0(x)),im(m0(x))),ts"r"(m0"r"(im(x)),m0"r"(im(x))),ts"r"(im(x),im(x)),ists12"r"(im(m0(x)),m0"r"(im(x)),im(m0(x)),m0"r"(im(x)),t3,t3),satz198(im(x),im(x))):is"r"(ts"r"(im(m0(x)),im(m0(x))),ts"r"(im(x),im(x)))
+t5:=ispl12"r"(ts"r"(re(m0(x)),re(m0(x))),ts"r"(re(x),re(x)),ts"r"(im(m0(x)),im(m0(x))),ts"r"(im(x),im(x)),t2,t4):is"r"(mod2(m0(x)),mod2(x))
+-7272
+x@satz272:=issqrt(mod2(m0(x)),mod2(x),lemma5(m0(x)),lemma5(x),t5".7272"):is"r"(mod(m0(x)),mod(x))
+satz272a:=symis(real,mod(m0(x)),mod(x),satz272):is"r"(mod(x),mod(m0(x)))
++7273
+y@sum:=pl"r"(mod(y),mod(mn(x,y))):real
+t1:=islessis1(mod(pl(y,mn(x,y))),mod(x),sum,ismod(pl(y,mn(x,y)),x,satz212h(x,y)),satz271(y,mn(x,y))):lessis(mod(x),sum)
+t2:=th9"l.or"(less(mod(x),sum),is"r"(mod(x),sum),less(mn"r"(mod(x),mod(y)),mn"r"(sum,mod(y))),is"r"(mn"r"(mod(x),mod(y)),mn"r"(sum,mod(y))),t1,[t:less(mod(x),sum)]satz188f(mod(x),sum,m0"r"(mod(y)),t),[t:is"r"(mod(x),sum)]ismn1"r"(mod(x),sum,mod(y),t)):lessis(mn"r"(mod(x),mod(y)),mn"r"(sum,mod(y)))
+t3:=tris(real,mn"r"(sum,mod(y)),mn"r"(pl"r"(mod(mn(x,y)),mod(y)),mod(y)),mod(mn(x,y)),ismn1"r"(sum,pl"r"(mod(mn(x,y)),mod(y)),mod(y),compl"r"(mod(y),mod(mn(x,y)))),mnpl(mod(mn(x,y)),mod(y))):is"r"(mn"r"(sum,mod(y)),mod(mn(x,y)))
+t4:=satz168b(mn"r"(mod(x),mod(y)),mod(mn(x,y)),islessis2(mn"r"(sum,mod(y)),mod(mn(x,y)),mn"r"(mod(x),mod(y)),t3,t2)):moreis(mod(mn(x,y)),mn"r"(mod(x),mod(y)))
+t5:=ismoreis12(mod(mn(y,x)),mod(mn(x,y)),mn"r"(mod(y),mod(x)),m0"r"(mn"r"(mod(x),mod(y))),tris1(real,mod(mn(y,x)),mod(mn(x,y)),mod(m0(mn(x,y))),ismod(m0(mn(x,y)),mn(y,x),satz219(x,y)),satz272(mn(x,y))),satz181a(mod(y),mod(x)),t4(y,x)):moreis(mod(mn(x,y)),m0"r"(mn"r"(mod(x),mod(y))))
+@[r:real][s:real][m:moreis(r,s)][n:moreis(r,m0"r"(s))]
+r@t6:=th9"l.or"(neg(r),not(neg(r)),is"r"(abs(r),m0"r"(r)),is"r"(abs(r),r),th6"l.or"(neg(r)),[t:neg(r)]absn(r,t),[t:not(neg(r))]absnn(r,t)):or(is"r"(abs(r),m0"r"(r)),is"r"(abs(r),r))
+n@t7:=orapp(is"r"(abs(s),m0"r"(s)),is"r"(abs(s),s),moreis(r,abs(s)),t6(s),[t:is"r"(abs(s),m0"r"(s))]ismoreis2(m0"r"(s),abs(s),r,symis(real,abs(s),m0"r"(s),t),n),[t:is"r"(abs(s),s)]ismoreis2(s,abs(s),r,symis(real,abs(s),s,t),m)):moreis(r,abs(s))
+-7273
+y@satz273:=t7".7273"(mod(mn(x,y)),mn"r"(mod(x),mod(y)),t4".7273",t5".7273"):moreis(mod(mn(x,y)),abs(mn"r"(mod(x),mod(y))))
+-c
+-r
+-rp
+-rt
+@[x:nat][y:nat]
++8274
+prop1:=some"l"([t:1to(x)]1to(y),[f:[t:1to(x)]1to(y)]bijective(1to(x),1to(y),f)):'prop'
+x@prop2:=all([y:nat]imp(less(x,y),not(prop1(y)))):'prop'
+@[y:nat][l:less(1,y)][f:[t:1to(1)]1to(y)]
+1y:=1out(y):1to(y)
+yy:=xout(y):1to(y)
+[i:is"e"(1to(y),1y,yy)]
+t1:=isoutne(y,1,satz24a(y),y,lessisi3(y),i):is(1,y)
+f@t2:=ec3e31(is(1,y),more(1,y),less(1,y),satz10b(1,y),l):nis(1,y)
+t3:=th3"l.imp"(is"e"(1to(y),1y,yy),is(1,y),t2,[t:is"e"(1to(y),1y,yy)]t1(t)):not(is"e"(1to(y),1y,yy))
+[u:1to(1)]
+t4:=isf(1to(1),1to(y),f,u,1o,th1"n.singlet"(u)):is"e"(1to(y),<u>f,<1o>f)
+f@[i:is"e"(1to(y),<1o>f,1y)][u:1to(1)]
+t5:=th2"e.notis"(1to(y),1y,yy,<u>f,t3,tris(1to(y),<u>f,<1o>f,1y,t4(u),i)):not(is"e"(1to(y),<u>f,yy))
+i@t6:=th5"l.some"(1to(1),[u:1to(1)]is"e"(1to(y),yy,<u>f),[u:1to(1)]symnotis(1to(y),<u>f,yy,t5(u))):not(image(1to(1),1to(y),f,yy))
+t7:=th1"l.all"(1to(y),[u:1to(y)]image(1to(1),1to(y),f,u),yy,t6):not(surjective(1to(1),1to(y),f))
+f@[n:not(is"e"(1to(y),<1o>f,1y))][u:1to(1)]
+t8:=th2"e.notis"(1to(y),<1o>f,1y,<u>f,n,t4(u)):not(is"e"(1to(y),<u>f,1y))
+n@t9:=th5"l.some"(1to(1),[u:1to(1)]is"e"(1to(y),1y,<u>f),[u:1to(1)]symnotis(1to(y),<u>f,1y,t8(u))):not(image(1to(1),1to(y),f,1y))
+t10:=th1"l.all"(1to(y),[u:1to(y)]image(1to(1),1to(y),f,u),1y,t9):not(surjective(1to(1),1to(y),f))
+f@t11:=th1"l.imp"(is"e"(1to(y),<1o>f,1y),not(surjective(1to(1),1to(y),f)),[t:is"e"(1to(y),<1o>f,1y)]t7(t),[t:not(is"e"(1to(y),<1o>f,1y))]t10(t)):not(surjective(1to(1),1to(y),f))
+t12:=th2"l.and"(injective(1to(1),1to(y),f),surjective(1to(1),1to(y),f),t11):not(bijective(1to(1),1to(y),f))
+l@t13:=th5"l.some"([t:1to(1)]1to(y),[f:[t:1to(1)]1to(y)]bijective(1to(1),1to(y),f),[f:[t:1to(1)]1to(y)]t12(f)):not(prop1(1,y))
+@t14:=[y:nat][t:less(1,y)]t13(y,t):prop2(1)
+x@[p:prop2(x)][y:nat][l:less(<x>suc,y)]
+x@xs:=<x>suc:nat
+l@xxs:=xout(xs):1to(<x>suc)
+yy1:=xout(y):1to(y)
+t15:=trless(1,<x>suc,y,satz24c(x),l):less(1,y)
+ym1:=mn(y,1,t15):nat
+t16:=isless12(<x>suc,pl(x,1),y,pl(ym1,1),satz4e(x),th1c"n.mn"(y,1,t15),l):less(pl(x,1),pl(ym1,1))
+t17:=satz20c(x,ym1,1,t16):less(x,ym1)
+t18:=isless2(pl(ym1,1),y,ym1,th1d"n.mn"(y,1,t15),satz18a(ym1,1)):less(ym1,y)
+[f:[t:1to(xs)]1to(y)][b:bijective(1to(xs),1to(y),f)]
+t19:=ande1(injective(1to(xs),1to(y),f),surjective(1to(xs),1to(y),f),b):injective(1to(xs),1to(y),f)
+t20:=ande2(injective(1to(xs),1to(y),f),surjective(1to(xs),1to(y),f),b):surjective(1to(xs),1to(y),f)
+[i:is"e"(1to(y),<xxs>f,yy1)][u:1to(x)]
+u1:=inn(x,u):nat
+t21:=satz16a(u1,x,xs,1top(x,u),satz18c(x)):less(u1,xs)
+t22:=ec3e31(is(u1,xs),more(u1,xs),less(u1,xs),satz10b(u1,xs),t21):nis(u1,xs)
+t23:=lessisi1(u1,xs,t21):lessis(u1,xs)
+u2:=outn(xs,u1,t23):1to(xs)
+t24:=th3"l.imp"(is"e"(1to(xs),u2,xxs),is(u1,xs),t22,[t:is"e"(1to(xs),u2,xxs)]isoutne(xs,u1,t23,xs,lessisi3(xs),t)):not(is"e"(1to(xs),u2,xxs))
+[j:is"e"(1to(y),<u2>f,yy1)]
+t25:=tris2(1to(y),<u2>f,<xxs>f,yy1,j,i):is"e"(1to(y),<u2>f,<xxs>f)
+t26:=isfe(1to(xs),1to(y),f,t19,u2,xxs,t25):is"e"(1to(xs),u2,xxs)
+u@t27:=th3"l.imp"(is"e"(1to(y),<u2>f,yy1),is"e"(1to(xs),u2,xxs),t24,[t:is"e"(1to(y),<u2>f,yy1)]t26(t)):not(is"e"(1to(y),<u2>f,yy1))
+w1:=inn(y,<u2>f):nat
+[j:is(w1,y)]
+t28:=tris(1to(y),<u2>f,outn(y,w1,1top(y,<u2>f)),yy1,isoutinn(y,<u2>f),isoutni(y,w1,1top(y,<u2>f),y,lessisi3(y),j)):is"e"(1to(y),<u2>f,yy1)
+u@t29:=th3"l.imp"(is(w1,y),is"e"(1to(y),<u2>f,yy1),t27,[t:is(w1,y)]t28(t)):nis(w1,y)
+t30:=ore1(less(w1,y),is(w1,y),1top(y,<u2>f),t29):less(w1,y)
+t31:=islessis2(y,pl(ym1,1),pl(w1,1),th1c"n.mn"(y,1,t15),satz25b(y,w1,t30)):lessis(pl(w1,1),pl(ym1,1))
+t32:=th9"l.or"(less(pl(w1,1),pl(ym1,1)),is(pl(w1,1),pl(ym1,1)),less(w1,ym1),is(w1,ym1),t31,[t:less(pl(w1,1),pl(ym1,1))]satz20c(w1,ym1,1,t),[t:is(pl(w1,1),pl(ym1,1))]satz20b(w1,ym1,1,t)):lessis(w1,ym1)
+w2:=outn(ym1,w1,t32):1to(ym1)
+i@f1:=[t:1to(x)]w2(t):[t:1to(x)]1to(ym1)
+u@[v:1to(x)][j:is"e"(1to(ym1),<u>f1,<v>f1)]
+t33:=isoutne(ym1,w1(u),t32(u),w1(v),t32(v),j):is(w1(u),w1(v))
+t34:=isinne(y,<u2(u)>f,<u2(v)>f,t33):is"e"(1to(y),<u2(u)>f,<u2(v)>f)
+t35:=<t34><u2(v)><u2(u)>t19:is"e"(1to(xs),u2(u),u2(v))
+t36:=isoutne(xs,u1(u),t23(u),u1(v),t23(v),t35):is(u1(u),u1(v))
+t37:=isinne(x,u,v,t36):is"e"(1to(x),u,v)
+i@[v:1to(ym1)]
+v1:=inn(ym1,v):nat
+t38:=satz16a(v1,ym1,y,1top(ym1,v),t18):less(v1,y)
+t39:=ec3e31(is(v1,y),more(v1,y),less(v1,y),satz10b(v1,y),t38):nis(v1,y)
+t40:=lessisi1(v1,y,t38):lessis(v1,y)
+v2:=outn(y,v1,t40):1to(y)
+w3:=<v2>invf(1to(xs),1to(y),f,b):1to(xs)
+t41:=thinvf2(1to(xs),1to(y),f,b,v2):is"e"(1to(y),v2,<w3>f)
+[j:is"e"(1to(xs),w3,xxs)]
+t42:=isf(1to(xs),1to(y),f,w3,xxs,j):is"e"(1to(y),<w3>f,<xxs>f)
+t43:=tr3is(1to(y),v2,<w3>f,<xxs>f,yy1,t41,t42,i):is"e"(1to(y),v2,yy1)
+t44:=isoutne(y,v1,t40,y,lessisi3(y),t43):is(v1,y)
+v@t45:=th3"l.imp"(is"e"(1to(xs),w3,xxs),is(v1,y),t39,[t:is"e"(1to(xs),w3,xxs)]t44(t)):not(is"e"(1to(xs),w3,xxs))
+w4:=inn(xs,w3):nat
+[j:is(w4,xs)]
+t46:=tris(1to(xs),w3,outn(xs,w4,1top(xs,w3)),xxs,isoutinn(xs,w3),isoutni(xs,w4,1top(xs,w3),xs,lessisi3(xs),j)):is"e"(1to(xs),w3,xxs)
+v@t47:=th3"l.imp"(is(w4,xs),is"e"(1to(xs),w3,xxs),t45,[t:is(w4,xs)]t46(t)):nis(w4,xs)
+t48:=ore1(less(w4,xs),is(w4,xs),1top(xs,w3),t47):less(w4,xs)
+t49:=satz26a(x,w4,t48):lessis(w4,x)
+w5:=outn(x,w4,t49):1to(x)
+t50:=isinoutn(x,w4,t49):is(w4,u1(w5))
+t51:=tris(1to(xs),w3,outn(xs,w4,1top(xs,w3)),u2(w5),isoutinn(xs,w3),isoutni(xs,w4,1top(xs,w3),u1(w5),t23(w5),t50)):is"e"(1to(xs),w3,u2(w5))
+t52:=isf(1to(xs),1to(y),f,w3,u2(w5),t51):is"e"(1to(y),<w3>f,<u2(w5)>f)
+t53:=tris(1to(y),v2,<w3>f,<u2(w5)>f,t41,t52):is"e"(1to(y),v2,<u2(w5)>f)
+t54:=tris(nat,v1,inn(y,v2),w1(w5),isinoutn(y,v1,t40),isinni(y,v2,<u2(w5)>f,t53)):is(v1,w1(w5))
+t55:=tris(1to(ym1),v,outn(ym1,v1,1top(ym1,v)),w2(w5),isoutinn(ym1,v),isoutni(ym1,v1,1top(ym1,v),w1(w5),t32(w5),t54)):is"e"(1to(ym1),v,<w5>f1)
+t56:=somei(1to(x),[t:1to(x)]is"e"(1to(ym1),v,<t>f1),w5,t55):image(1to(x),1to(ym1),f1,v)
+i@t57:=andi(injective(1to(x),1to(ym1),f1),surjective(1to(x),1to(ym1),f1),[u:1to(x)][v:1to(x)][t:is"e"(1to(ym1),<u>f1,<v>f1)]t37(u,v,t),[u:1to(ym1)]t56(u)):bijective(1to(x),1to(ym1),f1)
+t58:=somei([t:1to(x)]1to(ym1),[g:[t:1to(x)]1to(ym1)]bijective(1to(x),1to(ym1),g),f1,t57):prop1(ym1)
+t59:=<t58><t17><ym1>p:con
+b@[n:not(is"e"(1to(y),<xxs>f,yy1))]
+m0:=<yy1>invf(1to(xs),1to(y),f,b):1to(xs)
+t60:=thinvf2(1to(xs),1to(y),f,b,yy1):is"e"(1to(y),yy1,<m0>f)
+f2:=changef(1to(xs),1to(y),f,m0,xxs):[t:1to(xs)]1to(y)
+t61:=changef2(1to(xs),1to(y),f,m0,xxs,xxs,refis(1to(xs),xxs)):is"e"(1to(y),<xxs>f2,<m0>f)
+t62:=tris2(1to(y),<xxs>f2,yy1,<m0>f,t61,t60):is"e"(1to(y),<xxs>f2,yy1)
+t63:=th6"e.wissel"(1to(xs),1to(y),f,m0,xxs,b):bijective(1to(xs),1to(y),f2)
+t64:=t59(f2,t63,t62):con
+b@t65:=th1"l.imp"(is"e"(1to(y),<xxs>f,yy1),con,[t:is"e"(1to(y),<xxs>f,yy1)]t59(t),[t:not(is"e"(1to(y),<xxs>f,yy1))]t64(t)):con
+l@t65a:=th5"l.some"([t:1to(xs)]1to(y),[f:[t:1to(xs)]1to(y)]bijective(1to(xs),1to(y),f),[f:[t:1to(xs)]1to(y)][t:bijective(1to(xs),1to(y),f)]t65(f,t)):not(prop1(xs,y))
+p@t66:=[y:nat][t:less(xs,y)]t65a(y,t):prop2(xs)
+x@t67:=induction([t:nat]prop2(t),t14,[t:nat][u:prop2(t)]t66(t,u),x):prop2(x)
+-8274
+[l:less(x,y)]
+satz274:=<l><y>t67".8274":not(some"l"([t:1to(x)]1to(y),[f:[t:1to(x)]1to(y)]bijective(1to(x),1to(y),f)))
+[f:[t:1to(x)]1to(y)]
+satz274a:=th4"l.some"([t:1to(x)]1to(y),[g:[t:1to(x)]1to(y)]bijective(1to(x),1to(y),g),satz274,f):not(bijective(1to(x),1to(y),f))
++*rt
++*rp
++*r
++*c
+@[x:nat][u:1to(x)]
+inn:=inn"n"(x,u):nat
+@[q:[t:cx][u:cx]cx][x:nat][f:[t:1to(x)]cx]
+x@[n:1to(x)][o:not(is"e"(1to(x),n,xout(x)))]
++8275
+t1:=th3"l.imp"(is"n"(inn(x,n),x),is"e"(1to(x),n,xout(x)),o,[t:is"n"(inn(x,n),x)]tris(1to(x),n,outn(x,inn(x,n),1top(x,n)),xout(x),isoutinn(x,n),isoutni(x,inn(x,n),1top(x,n),x,lessisi3(x),t))):not(is"n"(inn(x,n),x))
+t2:=ore1(less"n"(inn(x,n),x),is"n"(inn(x,n),x),1top(x,n),t1):less"n"(inn(x,n),x)
+-8275
+lemma275:=satz25c(x,inn(x,n),t2".8275"):lessis"n"(<inn(x,n)>suc,x)
+f@[g:[t:1to(x)]cx]
+recprop:=and(is(<1out(x)>g,<1out(x)>f),[t:1to(x)][u:not(is"e"(1to(x),t,xout(x)))]is(<outn(x,<inn(x,t)>suc,lemma275(t,u))>g,<<outn(x,<inn(x,t)>suc,lemma275(t,u))>f><<t>g>q)):'prop'
++*8275
+x@1o:=1out(x):1to(x)
+xo:=xout(x):1to(x)
+[u:nat][l:lessis"n"(<u>suc,x)]
+t11:=satz16b(u,<u>suc,x,satz18c(u),l):less"n"(u,x)
+t12:=lessisi1"n"(u,x,t11):lessis"n"(u,x)
+ux:=outn(x,u,t12):1to(x)
+t13:=ec3e31(is"n"(u,x),more"n"(u,x),less"n"(u,x),satz10b(u,x),t11):nis"n"(u,x)
+t14:=th3"l.imp"(is"e"(1to(x),ux,xo),is"n"(u,x),t13,[t:is"e"(1to(x),ux,xo)]isoutne(x,u,t12,x,lessisi3(x),t)):not(is"e"(1to(x),ux,xo))
+t15:=isf(nat,nat,suc,u,inn(x,ux),isinoutn(x,u,t12)):is"n"(<u>suc,<inn(x,ux)>suc)
+t16:=isoutni(x,<u>suc,l,<inn(x,ux)>suc,lemma275(ux,t14),t15):is"e"(1to(x),outn(x,<u>suc,l),outn(x,<inn(x,ux)>suc,lemma275(ux,t14)))
+x@[n:1to(x)][o:not(is"e"(1to(x),n,xo))]
+ns:=outn(x,<inn(x,n)>suc,lemma275(n,o)):1to(x)
+f@[g:[t:1to(x)]cx]
+prop1:=is(<1o>g,<1o>f):'prop'
+prop2:=[t:1to(x)][u:not(is"e"(1to(x),t,xo))]is(<ns(t,u)>g,<<ns(t,u)>f><<t>g>q):'prop'
+[pg:recprop(g)]
+t3:=ande1(prop1,prop2,pg):prop1
+[n:1to(x)][o:not(is"e"(1to(x),n,xo))]
+t4:=<o><n>ande2(prop1,prop2,pg):is(<ns(n,o)>g,<<ns(n,o)>f><<n>g>q)
+pg@[u:nat][l:lessis"n"(<u>suc,x)]
+t17:=isf(1to(x),cx,g,outn(x,<u>suc,l),ns(ux(u,l),t14(u,l)),t16(u,l)):is(<outn(x,<u>suc,l)>g,<ns(ux(u,l),t14(u,l))>g)
+t18:=tris(cx,<outn(x,<u>suc,l)>g,<ns(ux(u,l),t14(u,l))>g,<<ns(ux(u,l),t14(u,l))>f><<ux(u,l)>g>q,t17,t4(pg,ux(u,l),t14(u,l))):is(<outn(x,<u>suc,l)>g,<<ns(ux(u,l),t14(u,l))>f><<ux(u,l)>g>q)
+g@[h:[t:1to(x)]cx][u:nat][l:lessis"n"(u,x)]
+prop3:=is(<outn(x,u,l)>g,<outn(x,u,l)>h):'prop'
+u@prop4:=and(lessis"n"(u,x),[t:lessis"n"(u,x)]prop3(t)):'prop'
+prop5:=or(prop4,more"n"(u,x)):'prop'
+h@[pg:recprop(g)][ph:recprop(h)][l:lessis"n"(1,x)]
+t5:=isoutni(x,1,l,1,satz24a(x),refis(nat,1)):is"e"(1to(x),outn(x,1,l),1o)
+t6:=isf(1to(x),cx,g,outn(x,1,l),1o,t5):is(<outn(x,1,l)>g,<1o>g)
+t7:=tris(cx,<outn(x,1,l)>g,<1o>g,<1o>f,t6,t3(pg)):is(<outn(x,1,l)>g,<1o>f)
+t8:=tris2(cx,<outn(x,1,l)>g,<outn(x,1,l)>h,<1o>f,t7,t7(h,g,ph,pg,l)):prop3(1,l)
+ph@t9:=andi(lessis"n"(1,x),[t:lessis"n"(1,x)]prop3(1,t),satz24a(x),[t:lessis"n"(1,x)]t8(t)):prop4(1)
+t10:=ori1(prop4(1),more"n"(1,x),t9):prop5(1)
+[u:nat][p:prop5(u)][l:lessis"n"(<u>suc,x)]
+t19:=ec3e32(is"n"(u,x),more"n"(u,x),less"n"(u,x),satz10b(u,x),t11(u,l)):not(more"n"(u,x))
+t20:=ore1(prop4(u),more"n"(u,x),p,t19):prop4(u)
+t21:=<t12(u,l)>ande2(lessis"n"(u,x),[t:lessis"n"(u,x)]prop3(u,t),t20):prop3(u,t12(u,l))
+t22:=isf(cx,cx,[t:cx]<<ns(ux(u,l),t14(u,l))>f><t>q,<ux(u,l)>g,<ux(u,l)>h,t21):is(<<ns(ux(u,l),t14(u,l))>f><<ux(u,l)>g>q,<<ns(ux(u,l),t14(u,l))>f><<ux(u,l)>h>q)
+t23:=symis(cx,<outn(x,<u>suc,l)>h,<<ns(ux(u,l),t14(u,l))>f><<ux(u,l)>h>q,t18(h,ph,u,l)):is(<<ns(ux(u,l),t14(u,l))>f><<ux(u,l)>h>q,<outn(x,<u>suc,l)>h)
+t24:=tr3is(cx,<outn(x,<u>suc,l)>g,<<ns(ux(u,l),t14(u,l))>f><<ux(u,l)>g>q,<<ns(ux(u,l),t14(u,l))>f><<ux(u,l)>h>q,<outn(x,<u>suc,l)>h,t18(g,pg,u,l),t22,t23):prop3(<u>suc,l)
+t25:=andi(lessis"n"(<u>suc,x),[t:lessis"n"(<u>suc,x)]prop3(<u>suc,t),l,[t:lessis"n"(<u>suc,x)]t24(t)):prop4(<u>suc)
+t26:=ori1(prop4(<u>suc),more"n"(<u>suc,x),t25):prop5(<u>suc)
+p@[n:not(lessis"n"(<u>suc,x))]
+t27:=satz10k(<u>suc,x,n):more"n"(<u>suc,x)
+t28:=ori2(prop4(<u>suc),more"n"(<u>suc,x),t27):prop5(<u>suc)
+p@t29:=th1"l.imp"(lessis"n"(<u>suc,x),prop5(<u>suc),[t:lessis"n"(<u>suc,x)]t26(t),[t:not(lessis"n"(<u>suc,x))]t28(t)):prop5(<u>suc)
+u@t30:=induction([v:nat]prop5(v),t10,[v:nat][t:prop5(v)]t29(v,t),u):prop5(u)
+ph@[n:1to(x)]
+t31:=isf(1to(x),cx,g,n,outn(x,inn(x,n),1top(x,n)),isoutinn(x,n)):is(<n>g,<outn(x,inn(x,n),1top(x,n))>g)
+t32:=satz10d(inn(x,n),x,1top(x,n)):not(more"n"(inn(x,n),x))
+t33:=ore1(prop4(inn(x,n)),more"n"(inn(x,n),x),t30(inn(x,n)),t32):prop4(inn(x,n))
+t34:=<1top(x,n)>ande2(lessis"n"(inn(x,n),x),[t:lessis"n"(inn(x,n),x)]prop3(inn(x,n),t),t33):prop3(inn(x,n),1top(x,n))
+t35:=symis(cx,<n>h,<outn(x,inn(x,n),1top(x,n))>h,t31(h,g,ph,pg,n)):is(<outn(x,inn(x,n),1top(x,n))>h,<n>h)
+t36:=tr3is(cx,<n>g,<outn(x,inn(x,n),1top(x,n))>g,<outn(x,inn(x,n),1top(x,n))>h,<n>h,t31,t34,t35):is(<n>g,<n>h)
+ph@t37:=fisi(1to(x),cx,g,h,[t:1to(x)]t36(t)):is"e"([t:1to(x)]cx,g,h)
+f@prop6:=some"l"([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(g)):'prop'
+x@prop7:=all"l"([t:1to(x)]cx,[f:[t:1to(x)]cx]prop6(f)):'prop'
+q@[f:[t:1to(1)]cx]
+t38:=refis(cx,<1o(1)>f):prop1(1,f,f)
+[n:1to(1)][o:not(is"e"(1to(1),n,xo(1)))]
+t39:=<th1"n.singlet"(n)>o:con
+t40:=cone(is(<ns(1,n,o)>f,<<ns(1,n,o)>f><<n>f>q),t39):is(<ns(1,n,o)>f,<<ns(1,n,o)>f><<n>f>q)
+f@t41:=andi(prop1(1,f,f),prop2(1,f,f),t38,[t:1to(1)][u:not(is"e"(1to(1),t,xo(1)))]t40(t,u)):recprop(1,f,f)
+t42:=somei([t:1to(1)]cx,[g:[t:1to(1)]cx]recprop(1,f,g),f,t41):prop6(1,f)
+q@t43:=[f:[t:1to(1)]cx]t42(f):prop7(1)
+x@[p:prop7(x)]
+xs:=<x>suc:nat
+[f:[t:1to(xs)]cx]
+f1:=left(cx,xs,x,lessisi1"n"(x,xs,satz18c(x)),f):[t:1to(x)]cx
+t44:=onei([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(x,f1,g),[g:[t:1to(x)]cx][h:[t:1to(x)]cx][u:recprop(x,f1,g)][v:recprop(x,f1,h)]t37(f1,g,h,u,v),<f1>p):one"e"([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(x,f1,g))
+g1:=ind([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(x,f1,g),t44):[t:1to(x)]cx
+t45:=oneax([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(x,f1,g),t44):recprop(x,f1,g1)
+[n:1to(xs)]
+nxs:=is"e"(1to(xs),n,xo(xs)):'prop'
+[o:not(nxs)]
+t46:=satz26a(x,inn(xs,n),t2(xs,n,o)):lessis"n"(inn(xs,n),x)
+n1:=outn(x,inn(xs,n),t46):1to(x)
+b:=<n1>g1:cx
+[o1:not(nxs)]
+t47:=isoutni(x,inn(xs,n),t46(o),inn(xs,n),t46(o1),refis(nat,inn(xs,n))):is"e"(1to(x),n1(o),n1(o1))
+t48:=isf(1to(x),cx,g1,n1(o),n1(o1),t47):is(b(o),b(o1))
+f@a:=<<xo(xs)>f><<xo(x)>g1>q:cx
+n@c:=ite"l.r"(nxs,cx,[t:nxs]a,[t:not(nxs)]b(t),[t:nxs][u:nxs]refis(cx,a),[t:not(nxs)][u:not(nxs)]t48(t,u)):cx
+[i:nxs]
+t49:=itet"l.r"(nxs,cx,[t:nxs]a,[t:not(nxs)]b(t),[t:nxs][u:nxs]refis(cx,a),[t:not(nxs)][u:not(nxs)]t48(t,u),i):is(c,a)
+o@t50:=itef"l.r"(nxs,cx,[t:nxs]a,[t:not(nxs)]b(t),[t:nxs][u:nxs]refis(cx,a),[t:not(nxs)][u:not(nxs)]t48(t,u),o):is(c,b)
+f@g2:=[t:1to(xs)]c(t):[t:1to(xs)]cx
+t51:=th3"l.imp"(is"e"(1to(xs),1o(xs),xo(xs)),is"n"(1,xs),symnotis(nat,xs,1,<x>ax3),[t:is"e"(1to(xs),1o(xs),xo(xs))]isoutne(xs,1,satz24a(xs),xs,lessisi3(xs),t)):not(is"e"(1to(xs),1o(xs),xo(xs)))
+t52:=t50(1o(xs),t51):is(c(1o(xs)),b(1o(xs),t51))
+t53:=isinoutn(xs,1,satz24a(xs)):is"n"(1,inn(xs,1o(xs)))
+t54:=isoutni(x,1,satz24a(x),inn(xs,1o(xs)),t46(1o(xs),t51),t53):is"e"(1to(x),1o(x),n1(1o(xs),t51))
+t55:=isf(1to(x),cx,g1,1o(x),n1(1o(xs),t51),t54):is(<1o(x)>g1,b(1o(xs),t51))
+t56:=tris2(cx,c(1o(xs)),<1o(x)>g1,b(1o(xs),t51),t52,t55):is(c(1o(xs)),<1o(x)>g1)
+t57:=tris(cx,c(1o(xs)),<1o(x)>g1,<1o(x)>f1,t56,t3(x,f1,g1,t45)):is(c(1o(xs)),<1o(x)>f1)
+t58:=isinoutn(x,1,satz24a(x)):is"n"(1,inn(x,1o(x)))
+t59:=isoutni(xs,1,satz24a(xs),inn(x,1o(x)),trlessis"n"(inn(x,1o(x)),x,xs,1top(x,1o(x)),lessisi1"n"(x,xs,satz18c(x))),t58):is"e"(1to(xs),1o(xs),left1to(xs,x,lessisi1"n"(x,xs,satz18c(x)),1o(x)))
+t60:=isf(1to(xs),cx,f,1o(xs),left1to(xs,x,lessisi1"n"(x,xs,satz18c(x)),1o(x)),t59):is(<1o(xs)>f,<1o(x)>f1)
+t61:=tris2(cx,c(1o(xs)),<1o(xs)>f,<1o(x)>f1,t57,t60):prop1(xs,f,g2)
+o@[i:is"e"(1to(xs),ns(xs,n,o),xo(xs))]
+t62:=isoutne(xs,<inn(xs,n)>suc,lemma275(xs,n,o),xs,lessisi3(xs),i):is"n"(<inn(xs,n)>suc,xs)
+t63:=<t62><x><inn(xs,n)>ax4:is"n"(inn(xs,n),x)
+t64:=isoutni(x,inn(xs,n),t46,x,lessisi3(x),t63):is"e"(1to(x),n1,xo(x))
+t65:=isf(1to(x),cx,g1,xo(x),n1,symis(1to(x),n1,xo(x),t64)):is(<xo(x)>g1,b)
+t66:=tris2(cx,<xo(x)>g1,c,b,t65,t50):is(<xo(x)>g1,c)
+t67:=isf(cx,cx,[t:cx]<<xo(xs)>f><t>q,<xo(x)>g1,c,t66):is(a,<<xo(xs)>f><c>q)
+t68:=isf(1to(xs),cx,f,xo(xs),ns(xs,n,o),symis(1to(xs),ns(xs,n,o),xo(xs),i)):is(<xo(xs)>f,<ns(xs,n,o)>f)
+t69:=isf(cx,cx,<c>q,<xo(xs)>f,<ns(xs,n,o)>f,t68):is(<<xo(xs)>f><c>q,<<ns(xs,n,o)>f><c>q)
+t70:=tr3is(cx,c(ns(xs,n,o)),a,<<xo(xs)>f><c>q,<<ns(xs,n,o)>f><c>q,t49(ns(xs,n,o),i),t67,t69):is(c(ns(xs,n,o)),<<ns(xs,n,o)>f><c>q)
+o@[o1:not(is"e"(1to(xs),ns(xs,n,o),xo(xs)))][i:is"e"(1to(x),n1,xo(x))]
+t71:=isoutne(x,inn(xs,n),t46,x,lessisi3(x),i):is"n"(inn(xs,n),x)
+t72:=ax2(inn(xs,n),x,t71):is"n"(<inn(xs,n)>suc,xs)
+t73:=isoutni(xs,<inn(xs,n)>suc,lemma275(xs,n,o),xs,lessisi3(xs),t72):is"e"(1to(xs),ns(xs,n,o),xo(xs))
+o1@t74:=th3"l.imp"(is"e"(1to(x),n1,xo(x)),is"e"(1to(xs),ns(xs,n,o),xo(xs)),o1,[t:is"e"(1to(x),n1,xo(x))]t73(t)):not(is"e"(1to(x),n1,xo(x)))
+t75:=isinoutn(x,inn(xs,n),t46):is"n"(inn(xs,n),inn(x,n1))
+t76:=ax2(inn(xs,n),inn(x,n1),t75):is"n"(<inn(xs,n)>suc,<inn(x,n1)>suc)
+t77:=isinoutn(xs,<inn(xs,n)>suc,lemma275(xs,n,o)):is"n"(<inn(xs,n)>suc,inn(xs,ns(xs,n,o)))
+t78:=tris1(nat,inn(xs,ns(xs,n,o)),<inn(x,n1)>suc,<inn(xs,n)>suc,t77,t76):is"n"(inn(xs,ns(xs,n,o)),<inn(x,n1)>suc)
+t79:=isoutni(x,inn(xs,ns(xs,n,o)),t46(ns(xs,n,o),o1),<inn(x,n1)>suc,lemma275(x,n1,t74),t78):is"e"(1to(x),n1(ns(xs,n,o),o1),ns(n1,t74))
+t80:=isf(1to(x),cx,g1,n1(ns(xs,n,o),o1),ns(n1,t74),t79):is(b(ns(xs,n,o),o1),<ns(n1,t74)>g1)
+t81:=isinoutn(x,<inn(x,n1)>suc,lemma275(x,n1,t74)):is"n"(<inn(x,n1)>suc,inn(x,ns(n1,t74)))
+t82:=tris(nat,<inn(xs,n)>suc,<inn(x,n1)>suc,inn(x,ns(n1,t74)),t76,t81):is"n"(<inn(xs,n)>suc,inn(x,ns(n1,t74)))
+t83:=isoutni(xs,<inn(xs,n)>suc,lemma275(xs,n,o),inn(x,ns(n1,t74)),trlessis"n"(inn(x,ns(n1,t74)),x,xs,1top(x,ns(n1,t74)),lessisi1"n"(x,xs,satz18c(x))),t82):is"e"(1to(xs),ns(xs,n,o),left1to(xs,x,lessisi1"n"(x,xs,satz18c(x)),ns(n1,t74)))
+t84:=isf(1to(xs),cx,f,ns(xs,n,o),left1to(xs,x,lessisi1"n"(x,xs,satz18c(x)),ns(n1,t74)),t83):is(<ns(xs,n,o)>f,<ns(n1,t74)>f1)
+t85:=isf(cx,cx,<b>q,<ns(xs,n,o)>f,<ns(n1,t74)>f1,t84):is(<<ns(xs,n,o)>f><b>q,<<ns(n1,t74)>f1><b>q)
+t86:=isf(cx,cx,[t:cx]<<ns(xs,n,o)>f><t>q,c,b,t50):is(<<ns(xs,n,o)>f><c>q,<<ns(xs,n,o)>f><b>q)
+t87:=tr3is(cx,c(ns(xs,n,o)),b(ns(xs,n,o),o1),<ns(n1,t74)>g1,<<ns(n1,t74)>f1><b>q,t50(ns(xs,n,o),o1),t80,t4(f1,g1,t45,n1,t74)):is(c(ns(xs,n,o)),<<ns(n1,t74)>f1><b>q)
+t88:=tris(cx,<<ns(xs,n,o)>f><c>q,<<ns(xs,n,o)>f><b>q,<<ns(n1,t74)>f1><b>q,t86,t85):is(<<ns(xs,n,o)>f><c>q,<<ns(n1,t74)>f1><b>q)
+t89:=tris2(cx,c(ns(xs,n,o)),<<ns(xs,n,o)>f><c>q,<<ns(n1,t74)>f1><b>q,t87,t88):is(c(ns(xs,n,o)),<<ns(xs,n,o)>f><c>q)
+o@t90:=th1"l.imp"(is"e"(1to(xs),ns(xs,n,o),xo(xs)),is(c(ns(xs,n,o)),<<ns(xs,n,o)>f><c>q),[t:is"e"(1to(xs),ns(xs,n,o),xo(xs))]t70(t),[t:not(is"e"(1to(xs),ns(xs,n,o),xo(xs)))]t89(t)):is(c(ns(xs,n,o)),<<ns(xs,n,o)>f><c>q)
+f@t91:=[t:1to(xs)][u:not(nxs(t))]t90(t,u):prop2(xs,f,g2)
+t92:=andi(prop1(xs,f,g2),prop2(xs,f,g2),t61,t91):recprop(xs,f,g2)
+t93:=somei([t:1to(xs)]cx,[g:[t:1to(xs)]cx]recprop(xs,f,g),g2,t92):prop6(xs,f)
+p@t94:=[f:[t:1to(xs)]cx]t93(f):prop7(xs)
+x@t95:=induction([y:nat]prop7(y),t43,[y:nat][t:prop7(y)]t94(y,t),x):prop7(x)
+[f:[t:1to(x)]cx]
+t96:=<f>t95:prop6(x,f)
+t97:=onei([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(x,f,g),[g:[t:1to(x)]cx][h:[t:1to(x)]cx][u:recprop(x,f,g)][v:recprop(x,f,h)]t37(f,g,h,u,v),t96):one"e"([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(x,f,g))
+-8275
+f@satz275:=t97".8275"(f):one"e"([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(x,f,g))
+recf:=ind([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(x,f,g),satz275):[t:1to(x)]cx
+satz275a:=oneax([t:1to(x)]cx,[g:[t:1to(x)]cx]recprop(x,f,g),satz275):recprop(x,f,recf)
+[n:1to(x)]
+rec:=<n>recf:cx
+f@satz275b:=t3".8275"(x,f,recf,satz275a):is(rec(1out(x)),<1out(x)>f)
+n@[o:not(is"e"(1to(x),n,xout(x)))]
+sucx:=ns".8275"(n,o):1to(x)
+satz275c:=t4".8275"(x,f,recf,satz275a,n,o):is(rec(sucx(n,o)),<<sucx(n,o)>f><rec(n)>q)
+f@[g:[t:1to(x)]cx][r:recprop(x,f,g)]
+satz275d:=t37".8275"(x,f,g,recf,r,satz275a):is"e"([t:1to(x)]cx,g,recf)
+[n:1to(x)]
+satz275e:=fise(1to(x),cx,g,recf,satz275d,n):is(<n>g,rec(n))
+x@[y:nat]
++*8275
+y@[l:lessis"n"(y,x)][f:[t:1to(x)]cx]
+fl:=left(cx,x,y,l,f):[t:1to(y)]cx
+rf:=recf(x,f):[t:1to(x)]cx
+rfl:=left(cx,x,y,l,rf):[t:1to(y)]cx
+t98:=isinoutn(y,1,satz24a(y)):is"n"(1,inn(y,1out(y)))
+t99:=isoutni(x,1,satz24a(x),inn(y,1out(y)),trlessis"n"(inn(y,1out(y)),y,x,1top(y,1out(y)),l),t98):is"e"(1to(x),1out(x),left1to(x,y,l,1out(y)))
+t100:=isp(1to(x),[t:1to(x)]is(<t>rf,<t>f),1out(x),left1to(x,y,l,1out(y)),t3(x,f,rf,satz275a(x,f)),t99):prop1(y,fl,rfl)
+[n:1to(y)][o:not(is"e"(1to(y),n,xout(y)))]
+t100a:=th3"l.imp"(is"n"(inn(y,n),y),is"e"(1to(y),n,xout(y)),o,[t:is"n"(inn(y,n),y)]tris(1to(y),n,outn(y,inn(y,n),1top(y,n)),xout(y),isoutinn(y,n),isoutni(y,inn(y,n),1top(y,n),y,lessisi3(y),t))):not(is"n"(inn(y,n),y))
+t100b:=ore1(less"n"(inn(y,n),y),is"n"(inn(y,n),y),1top(y,n),t100a):less"n"(inn(y,n),y)
+t101:=satz16b(inn(y,n),y,x,t100b,l):less"n"(inn(y,n),x)
+t102:=ec3e31(is"n"(inn(y,n),x),more"n"(inn(y,n),x),less"n"(inn(y,n),x),satz10b(inn(y,n),x),t101):nis"n"(inn(y,n),x)
+t103:=th3"l.imp"(is"e"(1to(x),left1to(x,y,l,n),xout(x)),is"n"(inn(y,n),x),t102,[t:is"e"(1to(x),left1to(x,y,l,n),xout(x))]isoutne(x,inn(y,n),trlessis"n"(inn(y,n),y,x,1top(y,n),l),x,lessisi3(x),t)):not(is"e"(1to(x),left1to(x,y,l,n),xout(x)))
+t104:=t4(x,f,rf,satz275a(x,f),left1to(x,y,l,n),t103):is(<ns(x,left1to(x,y,l,n),t103)>rf,<<ns(x,left1to(x,y,l,n),t103)>f><<n>rfl>q)
+t105:=isinoutn(x,inn(y,n),trlessis"n"(inn(y,n),y,x,1top(y,n),l)):is"n"(inn(y,n),inn(x,left1to(x,y,l,n)))
+t106:=ax2(inn(y,n),inn(x,left1to(x,y,l,n)),t105):is"n"(<inn(y,n)>suc,<inn(x,left1to(x,y,l,n))>suc)
+t107:=isinoutn(y,<inn(y,n)>suc,lemma275(y,n,o)):is"n"(<inn(y,n)>suc,inn(y,ns(y,n,o)))
+t108:=tris1(nat,<inn(x,left1to(x,y,l,n))>suc,inn(y,ns(y,n,o)),<inn(y,n)>suc,t106,t107):is"n"(<inn(x,left1to(x,y,l,n))>suc,inn(y,ns(y,n,o)))
+t109:=isoutni(x,<inn(x,left1to(x,y,l,n))>suc,lemma275(x,left1to(x,y,l,n),t103),inn(y,ns(y,n,o)),trlessis"n"(inn(y,ns(y,n,o)),y,x,1top(y,ns(y,n,o)),l),t108):is"e"(1to(x),ns(x,left1to(x,y,l,n),t103),left1to(x,y,l,ns(y,n,o)))
+t110:=isp(1to(x),[t:1to(x)]is(<t>rf,<<t>f><<n>rfl>q),ns(x,left1to(x,y,l,n),t103),left1to(x,y,l,ns(y,n,o)),t104,t109):is(<ns(y,n,o)>rfl,<<ns(y,n,o)>fl><<n>rfl>q)
+f@t111:=[t:1to(y)][u:not(is"e"(1to(y),t,xout(y)))]t110(t,u):prop2(y,fl,rfl)
+t112:=andi(prop1(y,fl,rfl),prop2(y,fl,rfl),t100,t111):recprop(y,fl,rfl)
+-8275
+y@[l:lessis"n"(y,x)][f:[t:1to(x)]cx]
+satz275f:=satz275d(y,fl".8275"(l,f),rfl".8275"(l,f),t112".8275"(l,f)):is"e"([t:1to(y)]cx,left(cx,x,y,l,recf(x,f)),recf(y,left(cx,x,y,l,f)))
+x@[f:[t:1to(pl"n"(x,1))]cx]
++8276
+xs:=<x>suc:nat
+x1:=pl"n"(x,1):nat
+t1:=lessisi1"n"(x,x1,satz18a(x,1)):lessis"n"(x,x1)
+t2:=lessisi1"n"(x,xs,satz18c(x)):lessis"n"(x,xs)
+t3:=lessisi2"n"(xs,x1,satz4e(x)):lessis"n"(xs,x1)
+fx:=left(cx,x1,x,t1,f):[t:1to(x)]cx
+f1:=left(cx,x1,xs,t3,f):[t:1to(xs)]cx
+f1x:=f1"c.8275"(x,t95"c.8275"(x),f1):[t:1to(x)]cx
+g1:=g2"c.8275"(x,t95"c.8275"(x),f1):[t:1to(xs)]cx
+g1x:=g1"c.8275"(x,t95"c.8275"(x),f1):[t:1to(x)]cx
+g:=left(cx,x1,xs,t3,recf(x1,f)):[t:1to(xs)]cx
+t4:=t49"c.8275"(x,t95"c.8275"(x),f1,xout(xs),refis(1to(xs),xout(xs))):is(<xout(xs)>g1,<<xout(xs)>f1><<xout(x)>g1x>q)
+t5:=satz275d(xs,f1,g1,t92"c.8275"(x,t95"c.8275"(x),f1)):is"e"([t:1to(xs)]cx,g1,recf(xs,f1))
+t6:=satz275f(x1,xs,t3,f):is"e"([t:1to(xs)]cx,g,recf(xs,f1))
+t7:=tris2([t:1to(xs)]cx,g,g1,recf(xs,f1),t6,t5):is"e"([t:1to(xs)]cx,g,g1)
+t8:=fise(1to(xs),cx,g,g1,t7,xout(xs)):is(<xout(xs)>g,<xout(xs)>g1)
+t9:=tris(cx,<xout(xs)>g,<xout(xs)>g1,<<xout(xs)>f1><<xout(x)>g1x>q,t8,t4):is(<xout(xs)>g,<<xout(xs)>f1><<xout(x)>g1x>q)
+[n:1to(x)]
+t10:=isinoutn(xs,inn(x,n),trlessis"n"(inn(x,n),x,xs,1top(x,n),t2)):is"n"(inn(x,n),inn(xs,left1to(xs,x,t2,n)))
+t11:=isoutni(x1,inn(x,n),trlessis"n"(inn(x,n),x,x1,1top(x,n),t1),inn(xs,left1to(xs,x,t2,n)),trlessis"n"(inn(xs,left1to(xs,x,t2,n)),xs,x1,1top(xs,left1to(xs,x,t2,n)),t3),t10):is"e"(1to(x1),left1to(x1,x,t1,n),left1to(x1,xs,t3,left1to(xs,x,t2,n)))
+t12:=isf(1to(x1),cx,f,left1to(x1,x,t1,n),left1to(x1,xs,t3,left1to(xs,x,t2,n)),t11):is(<n>fx,<n>f1x)
+f@t13:=fisi(1to(x),cx,fx,f1x,[t:1to(x)]t12(t)):is"e"([t:1to(x)]cx,fx,f1x)
+t14:=isf([t:1to(x)]cx,[t:1to(x)]cx,[u:[t:1to(x)]cx]recf(x,u),fx,f1x,t13):is"e"([t:1to(x)]cx,recf(x,fx),recf(x,f1x))
+t15:=satz275d(x,f1x,g1x,t45"c.8275"(x,t95"c.8275"(x),f1)):is"e"([t:1to(x)]cx,g1x,recf(x,f1x))
+t16:=tris2([t:1to(x)]cx,g1x,recf(x,fx),recf(x,f1x),t15,t14):is"e"([t:1to(x)]cx,g1x,recf(x,fx))
+t17:=fise(1to(x),cx,g1x,recf(x,fx),t16,xout(x)):is(<xout(x)>g1x,<xout(x)>recf(x,fx))
+t18:=isinoutn(xs,xs,lessisi3(xs)):is"n"(xs,inn(xs,xout(xs)))
+t19:=tris(nat,x1,xs,inn(xs,xout(xs)),satz4a(x),t18):is"n"(x1,inn(xs,xout(xs)))
+t20:=isoutni(x1,x1,lessisi3(x1),inn(xs,xout(xs)),trlessis"n"(inn(xs,xout(xs)),xs,x1,1top(xs,xout(xs)),t3),t19):is"e"(1to(x1),xout(x1),left1to(x1,xs,t3,xout(xs)))
+t21:=isp1(1to(x1),[t:1to(x1)]is(<t>recf(x1,f),<<t>f><<xout(x)>g1x>q),left1to(x1,xs,t3,xout(xs)),xout(x1),t9,t20):is(<xout(x1)>recf(x1,f),<<xout(x1)>f><<xout(x)>g1x>q)
+t22:=isf(cx,cx,[t:cx]<<xout(x1)>f><t>q,<xout(x)>g1x,<xout(x)>recf(x,fx),t17):is(<<xout(x1)>f><<xout(x)>g1x>q,<<xout(x1)>f><<xout(x)>recf(x,fx)>q)
+-8276
+satz276:=tris(cx,<xout(pl"n"(x,1))>recf(pl"n"(x,1),f),<<xout(pl"n"(x,1))>f><<xout(x)>g1x".8276">q,<<xout(pl"n"(x,1))>f><<xout(x)>recf(x,fx".8276")>q,t21".8276",t22".8276"):is(<xout(pl"n"(x,1))>recf(pl"n"(x,1),f),<<xout(pl"n"(x,1))>f><<xout(x)>recf(x,left(cx,pl"n"(x,1),x,lessisi1"n"(x,pl"n"(x,1),satz18a(x,1)),f))>q)
+x@[f:[u:1to(x)]cx]
+smpr:=rec(x,f,xout(x)):cx
+@[x:nat][f:[u:1to(x)]cx]
+sum:=smpr([t:cx][u:cx]pl(t,u),x,f):cx
+prod:=smpr([t:cx][u:cx]ts(t,u),x,f):cx
+q@[f:[u:1to(1)]cx]
++8277
+t1:=isoutni(1,1,satz24a(1),1,lessisi3(1),refis(nat,1)):is"e"(1to(1),1out(1),xout(1))
+-8277
+satz277:=isp(1to(1),[t:1to(1)]is(rec(1,f,t),<t>f),1out(1),xout(1),satz275b(1,f),t1".8277"):is(smpr(1,f),<xout(1)>f)
+q@[x:nat][f:[u:1to(pl"n"(x,1))]cx]
+satz278:=satz276(x,f):is(smpr(pl"n"(x,1),f),<<xout(pl"n"(x,1))>f><smpr(x,left(cx,pl"n"(x,1),x,lessisi1"n"(x,pl"n"(x,1),satz18a(x,1)),f))>q)
+x@[f:[u:1to(x)]cx][y:nat][i:is"n"(y,x)]
++v8
+t1:=lessisi2"n"(y,x,i):lessis"n"(y,x)
+f0:=left(cx,x,y,t1,f):[t:1to(y)]cx
+t2:=fise(1to(y),cx,left(cx,x,y,t1,recf(x,f)),recf(y,f0),satz275f(x,y,t1,f),xout(y)):is(<left1to(x,y,t1,xout(y))>recf(x,f),smpr(y,f0))
+t3:=tris1(nat,inn(y,xout(y)),x,y,isinoutn(y,y,lessisi3(y)),i):is"n"(inn(y,xout(y)),x)
+t4:=isoutni(x,inn(y,xout(y)),trlessis"n"(inn(y,xout(y)),y,x,1top(y,xout(y)),t1),x,lessisi3(x),t3):is"e"(1to(x),left1to(x,y,t1,xout(y)),xout(x))
+t5:=isf(1to(x),cx,recf(x,f),left1to(x,y,t1,xout(y)),xout(x),t4):is(<left1to(x,y,t1,xout(y))>recf(x,f),smpr(x,f))
+-v8
+issmpr:=tris1(cx,smpr(y,f0".v8"),smpr(x,f),<left1to(x,y,t1".v8",xout(y))>recf(x,f),t2".v8",t5".v8"):is(smpr(y,left(cx,x,y,lessisi2"n"(y,x,i),f)),smpr(x,f))
+@[z:complex][x:nat]
++8279
+xr:=rlofnt(x):real
+prop1:=is(sum(x,[t:1to(x)]z),ts(z,pli(xr,0))):'prop'
+z@t1:=satz277([t:cx][u:cx]pl(t,u),[t:1to(1)]z):is(sum(1,[t:1to(1)]z),z)
+t2:=tris(cx,sum(1,[t:1to(1)]z),z,ts(z,1c),t1,satz222a(z)):prop1(1)
+x@[p:prop1(x)]
+t3:=satz278([t:cx][u:cx]pl(t,u),x,[t:1to(pl"n"(x,1))]z):is(sum(pl"n"(x,1),[t:1to(pl"n"(x,1))]z),pl(sum(x,[t:1to(x)]z),z))
+t4:=ispl12(sum(x,[t:1to(x)]z),ts(z,pli(xr,0)),z,ts(z,1c),p,satz222a(z)):is(pl(sum(x,[t:1to(x)]z),z),pl(ts(z,pli(xr,0)),ts(z,1c)))
+t5:=distpt2(z,pli(xr,0),1c):is(pl(ts(z,pli(xr,0)),ts(z,1c)),ts(z,pl(pli(xr,0),1c)))
+t6:=plis12a(xr,0,1rl,0):is(pl(pli(xr,0),1c),pli(pl"r"(xr,1rl),pl"r"(0,0)))
+t7:=isrecx12(pl"r"(xr,1rl),rlofnt(pl"n"(x,1)),pl"r"(0,0),0,satzr155b(x,1),pl01"r"(0,0,refis(real,0))):is(pli(pl"r"(xr,1rl),pl"r"(0,0)),pli(rlofnt(pl"n"(x,1)),0))
+t8:=tris(cx,pl(pli(xr,0),1c),pli(pl"r"(xr,1rl),pl"r"(0,0)),pli(rlofnt(pl"n"(x,1)),0),t6,t7):is(pl(pli(xr,0),1c),pli(rlofnt(pl"n"(x,1)),0))
+t9:=ists2(pl(pli(xr,0),1c),pli(rlofnt(pl"n"(x,1)),0),z,t8):is(ts(z,pl(pli(xr,0),1c)),ts(z,pli(rlofnt(pl"n"(x,1)),0)))
+t10:=tr4is(cx,sum(pl"n"(x,1),[t:1to(pl"n"(x,1))]z),pl(sum(x,[t:1to(x)]z),z),pl(ts(z,pli(xr,0)),ts(z,1c)),ts(z,pl(pli(xr,0),1c)),ts(z,pli(rlofnt(pl"n"(x,1)),0)),t3,t4,t5,t9):prop1(pl"n"(x,1))
+t11:=isp(nat,[t:nat]prop1(t),pl"n"(x,1),<x>suc,t10,satz4a(x)):prop1(<x>suc)
+-8279
+satz279:=induction([t:nat]prop1".8279"(t),t2".8279",[u:nat][t:prop1".8279"(u)]t11".8279"(u,t),x):is(sum(x,[t:1to(x)]z),ts(z,pli(rlofnt(x),0)))
+q@[f:[t:1to(2)]cx]
++8280
+t1:=lessisi1"n"(1,2,satz18a(1,1)):lessis"n"(1,2)
+f1:=left(cx,2,1,t1,f):[t:1to(1)]cx
+t2:=satz278(q,1,f):is(smpr(2,f),<<xout(2)>f><smpr(1,f1)>q)
+t3:=satz277(q,f1):is(smpr(1,f1),<xout(1)>f1)
+t4:=isinoutn(1,1,lessisi3(1)):is"n"(1,inn(1,xout(1)))
+t5:=isoutni(2,1,satz24a(2),inn(1,xout(1)),trlessis"n"(inn(1,xout(1)),1,2,1top(1,xout(1)),t1),t4):is"e"(1to(2),1out(2),left1to(2,1,t1,xout(1)))
+t6:=isf(1to(2),cx,f,1out(2),left1to(2,1,t1,xout(1)),t5):is(<1out(2)>f,<xout(1)>f1)
+t7:=tris2(cx,smpr(1,f1),<1out(2)>f,<xout(1)>f1,t3,t6):is(smpr(1,f1),<1out(2)>f)
+t8:=isf(cx,cx,[t:cx]<<xout(2)>f><t>q,smpr(1,f1),<1out(2)>f,t7):is(<<xout(2)>f><smpr(1,f1)>q,<<xout(2)>f><<1out(2)>f>q)
+-8280
+satz280:=tris(cx,smpr(2,f),<<xout(2)>f><smpr(1,f1".8280")>q,<<xout(2)>f><<1out(2)>f>q,t2".8280",t8".8280"):is(smpr(2,f),<<xout(2)>f><<1out(2)>f>q)
+q@assoc:=[x:cx][y:cx][z:cx]is(<z><<y><x>q>q,<<z><y>q><x>q):'prop'
+@assocp1:=[x:cx][y:cx][z:cx]asspl1(x,y,z):assoc([x:cx][y:cx]pl(x,y))
+assocts:=[x:cx][y:cx][z:cx]assts1(x,y,z):assoc([x:cx][y:cx]ts(x,y))
+q@[a:assoc][z:cx][u:cx][v:cx]
+assq1:=<v><u><z>a:is(<v><<u><z>q>q,<<v><u>q><z>q)
+assq2:=symis(cx,<v><<u><z>q>q,<<v><u>q><z>q,assq1):is(<<v><u>q><z>q,<v><<u><z>q>q)
+q@[a:assoc(q)][x:nat][y:nat][f:[t:1to(pl"n"(x,y))]cx]
++8281
+y@t1:=lessisi1"n"(x,pl"n"(x,y),satz18a(x,y)):lessis"n"(x,pl"n"(x,y))
+f@f1:=left(cx,pl"n"(x,y),x,t1,f):[t:1to(x)]cx
+f2:=right(cx,x,y,f):[t:1to(y)]cx
+prop1:=is(smpr(pl"n"(x,y),f),<smpr(y,f2)><smpr(x,f1)>q):'prop'
+y@prop2:=all"l"([t:1to(pl"n"(x,y))]cx,[u:[t:1to(pl"n"(x,y))]cx]prop1(u)):'prop'
+x@[f0:[t:1to(pl"n"(x,1))]cx]
+t2:=satz278(q,x,f0):is(smpr(pl"n"(x,1),f0),<<xout(pl"n"(x,1))>f0><smpr(x,f1(1,f0))>q)
+t3:=satz277(q,f2(1,f0)):is(smpr(1,f2(1,f0)),<xout(1)>f2(1,f0))
+t4:=isinoutn(1,1,lessisi3(1)):is"n"(1,inn(1,xout(1)))
+t5:=ispl2"n"(1,inn(1,xout(1)),x,t4):is"n"(pl"n"(x,1),pl"n"(x,inn(1,xout(1))))
+t6:=isoutni(pl"n"(x,1),pl"n"(x,1),lessisi3(pl"n"(x,1)),pl"n"(x,inn(1,xout(1))),satz19o(inn(1,xout(1)),1,x,1top(1,xout(1))),t5):is"e"(1to(pl"n"(x,1)),xout(pl"n"(x,1)),right1to(x,1,xout(1)))
+t7:=isf(1to(pl"n"(x,1)),cx,f0,xout(pl"n"(x,1)),right1to(x,1,xout(1)),t6):is(<xout(pl"n"(x,1))>f0,<xout(1)>f2(1,f0))
+t8:=tris2(cx,<xout(pl"n"(x,1))>f0,smpr(1,f2(1,f0)),<xout(1)>f2(1,f0),t7,t3):is(<xout(pl"n"(x,1))>f0,smpr(1,f2(1,f0)))
+t9:=isf(cx,cx,<smpr(x,f1(1,f0))>q,<xout(pl"n"(x,1))>f0,smpr(1,f2(1,f0)),t8):is(<<xout(pl"n"(x,1))>f0><smpr(x,f1(1,f0))>q,<smpr(1,f2(1,f0))><smpr(x,f1(1,f0))>q)
+t10:=tris(cx,smpr(pl"n"(x,1),f0),<<xout(pl"n"(x,1))>f0><smpr(x,f1(1,f0))>q,<smpr(1,f2(1,f0))><smpr(x,f1(1,f0))>q,t2,t9):prop1(1,f0)
+x@t11:=[u:[t:1to(pl"n"(x,1))]cx]t10(u):prop2(1)
+y@yp1:=pl"n"(y,1):nat
+xpy:=pl"n"(x,y):nat
+xpy1:=pl"n"(x,yp1):nat
+xyp1:=pl"n"(xpy,1):nat
+t12:=lessisi2"n"(xyp1,xpy1,asspl1"n"(x,y,1)):lessis"n"(xyp1,xpy1)
+[p:prop2(y)][f:[t:1to(xpy1)]cx]
+t13:=isinoutn(xyp1,xyp1,lessisi3(xyp1)):is"n"(xyp1,inn(xyp1,xout(xyp1)))
+t14:=tris(nat,xpy1,xyp1,inn(xyp1,xout(xyp1)),asspl2"n"(x,y,1),t13):is"n"(xpy1,inn(xyp1,xout(xyp1)))
+t15:=isoutni(xpy1,xpy1,lessisi3(xpy1),inn(xyp1,xout(xyp1)),trlessis"n"(inn(xyp1,xout(xyp1)),xyp1,xpy1,1top(xyp1,xout(xyp1)),t12),t14):is"e"(1to(xpy1),xout(xpy1),left1to(xpy1,xyp1,t12,xout(xyp1)))
+t16:=isf(1to(xpy1),cx,recf(xpy1,f),xout(xpy1),left1to(xpy1,xyp1,t12,xout(xyp1)),t15):is(smpr(xpy1,f),<xout(xyp1)>left(cx,xpy1,xyp1,t12,recf(xpy1,f)))
+fr:=left(cx,xpy1,xyp1,t12,f):[t:1to(xyp1)]cx
+t17:=satz275f(xpy1,xyp1,t12,f):is"e"([t:1to(xyp1)]cx,left(cx,xpy1,xyp1,t12,recf(xpy1,f)),recf(xyp1,fr))
+t18:=fise(1to(xyp1),cx,left(cx,xpy1,xyp1,t12,recf(xpy1,f)),recf(xyp1,fr),t17,xout(xyp1)):is(<xout(xyp1)>left(cx,xpy1,xyp1,t12,recf(xpy1,f)),smpr(xyp1,fr))
+t19:=lessisi1"n"(xpy,xyp1,satz18a(xpy,1)):lessis"n"(xpy,xyp1)
+frr:=left(cx,xyp1,xpy,t19,fr):[t:1to(xpy)]cx
+t20:=satz278(xpy,fr):is(smpr(xyp1,fr),<<xout(xyp1)>fr><smpr(xpy,frr)>q)
+t21:=isf(cx,cx,[u:cx]<<xout(xyp1)>fr><u>q,smpr(xpy,frr),<smpr(y,f2(frr))><smpr(x,f1(frr))>q,<frr>p):is(<<xout(xyp1)>fr><smpr(xpy,frr)>q,<<xout(xyp1)>fr><<smpr(y,f2(frr))><smpr(x,f1(frr))>q>q)
+t22:=assq1(a,smpr(x,f1(frr)),smpr(y,f2(frr)),<xout(xyp1)>fr):is(<<xout(xyp1)>fr><<smpr(y,f2(frr))><smpr(x,f1(frr))>q>q,<<<xout(xyp1)>fr><smpr(y,f2(frr))>q><smpr(x,f1(frr))>q)
+t23:=lessisi1"n"(y,yp1,satz18a(y,1)):lessis"n"(y,yp1)
+fy:=left(cx,yp1,y,t23,f2(yp1,f)):[t:1to(y)]cx
+t24:=satz278(y,f2(yp1,f)):is(smpr(yp1,f2(yp1,f)),<<xout(yp1)>f2(yp1,f)><smpr(y,fy)>q)
+t25:=isinoutn(yp1,yp1,lessisi3(yp1)):is"n"(yp1,inn(yp1,xout(yp1)))
+t26:=ispl2"n"(yp1,inn(yp1,xout(yp1)),x,t25):is"n"(xpy1,pl"n"(x,inn(yp1,xout(yp1))))
+t27:=tris1(nat,inn(xyp1,xout(xyp1)),pl"n"(x,inn(yp1,xout(yp1))),xpy1,t14,t26):is"n"(inn(xyp1,xout(xyp1)),pl"n"(x,inn(yp1,xout(yp1))))
+t28:=isoutni(xpy1,inn(xyp1,xout(xyp1)),trlessis"n"(inn(xyp1,xout(xyp1)),xyp1,xpy1,1top(xyp1,xout(xyp1)),t12),pl"n"(x,inn(yp1,xout(yp1))),satz19o(inn(yp1,xout(yp1)),yp1,x,1top(yp1,xout(yp1))),t27):is"e"(1to(xpy1),left1to(xpy1,xyp1,t12,xout(xyp1)),right1to(x,yp1,xout(yp1)))
+t29:=isf(1to(xpy1),cx,f,left1to(xpy1,xyp1,t12,xout(xyp1)),right1to(x,yp1,xout(yp1)),t28):is(<xout(xyp1)>fr,<xout(yp1)>f2(yp1,f))
+t30:=isf(cx,cx,<smpr(y,f2(frr))>q,<xout(xyp1)>fr,<xout(yp1)>f2(yp1,f),t29):is(<<xout(xyp1)>fr><smpr(y,f2(frr))>q,<<xout(yp1)>f2(yp1,f)><smpr(y,f2(frr))>q)
+[n:1to(y)]
+n0:=inn(y,n):nat
+nyp1:=left1to(yp1,y,t23,n):1to(yp1)
+t31:=isinoutn(yp1,n0,trlessis"n"(n0,y,yp1,1top(y,n),t23)):is"n"(n0,inn(yp1,nyp1))
+t32:=ispl2"n"(n0,inn(yp1,nyp1),x,t31):is"n"(pl"n"(x,n0),pl"n"(x,inn(yp1,nyp1)))
+nxpy:=right1to(x,y,n):1to(xpy)
+nxyp1:=left1to(xyp1,xpy,t19,nxpy):1to(xyp1)
+t33:=isinoutn(xyp1,inn(xpy,nxpy),trlessis"n"(inn(xpy,nxpy),xpy,xyp1,1top(xpy,nxpy),t19)):is"n"(inn(xpy,nxpy),inn(xyp1,nxyp1))
+t34:=isinoutn(xpy,pl"n"(x,n0),satz19o(n0,y,x,1top(y,n))):is"n"(pl"n"(x,n0),inn(xpy,nxpy))
+t35:=tris(nat,pl"n"(x,n0),inn(xpy,nxpy),inn(xyp1,nxyp1),t34,t33):is"n"(pl"n"(x,n0),inn(xyp1,nxyp1))
+t36:=tris1(nat,pl"n"(x,inn(yp1,nyp1)),inn(xyp1,nxyp1),pl"n"(x,n0),t32,t35):is"n"(pl"n"(x,inn(yp1,nyp1)),inn(xyp1,nxyp1))
+t37:=isoutni(xpy1,pl"n"(x,inn(yp1,nyp1)),satz19o(inn(yp1,nyp1),yp1,x,1top(yp1,nyp1)),inn(xyp1,nxyp1),trlessis"n"(inn(xyp1,nxyp1),xyp1,xpy1,1top(xyp1,nxyp1),t12),t36):is"e"(1to(xpy1),right1to(x,yp1,nyp1),left1to(xpy1,xyp1,t12,nxyp1))
+t38:=isf(1to(xpy1),cx,f,right1to(x,yp1,nyp1),left1to(xpy1,xyp1,t12,nxyp1),t37):is(<n>fy,<n>f2(frr))
+f@t39:=fisi(1to(y),cx,fy,f2(frr),[u:1to(y)]t38(u)):is"e"([u:1to(y)]cx,fy,f2(frr))
+t40:=isf([u:1to(y)]cx,cx,[t:[u:1to(y)]cx]smpr(y,t),fy,f2(frr),t39):is(smpr(y,fy),smpr(y,f2(frr)))
+t41:=isf(cx,cx,[t:cx]<<xout(yp1)>f2(yp1,f)><t>q,smpr(y,f2(frr)),smpr(y,fy),symis(cx,smpr(y,fy),smpr(y,f2(frr)),t40)):is(<<xout(yp1)>f2(yp1,f)><smpr(y,f2(frr))>q,<<xout(yp1)>f2(yp1,f)><smpr(y,fy)>q)
+t41a:=tris(cx,<<xout(xyp1)>fr><smpr(y,f2(frr))>q,<<xout(yp1)>f2(yp1,f)><smpr(y,f2(frr))>q,<<xout(yp1)>f2(yp1,f)><smpr(y,fy)>q,t30,t41):is(<<xout(xyp1)>fr><smpr(y,f2(frr))>q,<<xout(yp1)>f2(yp1,f)><smpr(y,fy)>q)
+t42:=tris2(cx,<<xout(xyp1)>fr><smpr(y,f2(frr))>q,smpr(yp1,f2(yp1,f)),<<xout(yp1)>f2(yp1,f)><smpr(y,fy)>q,t41a,t24):is(<<xout(xyp1)>fr><smpr(y,f2(frr))>q,smpr(yp1,f2(yp1,f)))
+t43:=isf(cx,cx,<smpr(x,f1(frr))>q,<<xout(xyp1)>fr><smpr(y,f2(frr))>q,smpr(yp1,f2(yp1,f)),t42):is(<<<xout(xyp1)>fr><smpr(y,f2(frr))>q><smpr(x,f1(frr))>q,<smpr(yp1,f2(yp1,f))><smpr(x,f1(frr))>q)
+[m:1to(x)]
+m0:=inn(x,m):nat
+mxpy:=left1to(xpy,x,t1,m):1to(xpy)
+mxyp1:=left1to(xyp1,xpy,t19,mxpy):1to(xyp1)
+t44:=isinoutn(xyp1,inn(xpy,mxpy),trlessis"n"(inn(xpy,mxpy),xpy,xyp1,1top(xpy,mxpy),t19)):is"n"(inn(xpy,mxpy),inn(xyp1,mxyp1))
+t45:=isinoutn(xpy,m0,trlessis"n"(m0,x,xpy,1top(x,m),t1)):is"n"(m0,inn(xpy,mxpy))
+t46:=tris(nat,m0,inn(xpy,mxpy),inn(xyp1,mxyp1),t45,t44):is"n"(m0,inn(xyp1,mxyp1))
+t47:=isoutni(xpy1,m0,trlessis"n"(m0,x,xpy1,1top(x,m),t1(yp1)),inn(xyp1,mxyp1),trlessis"n"(inn(xyp1,mxyp1),xyp1,xpy1,1top(xyp1,mxyp1),t12),t46):is"e"(1to(xpy1),left1to(xpy1,x,t1(yp1),m),left1to(xpy1,xyp1,t12,mxyp1))
+t48:=isf(1to(xpy1),cx,f,left1to(xpy1,x,t1(yp1),m),left1to(xpy1,xyp1,t12,mxyp1),t47):is(<m>f1(x,yp1,f),<m>f1(x,y,frr))
+f@t49:=fisi(1to(x),cx,f1(x,yp1,f),f1(x,y,frr),[u:1to(x)]t48(u)):is"e"([u:1to(x)]cx,f1(x,yp1,f),f1(x,y,frr))
+t50:=isf([u:1to(x)]cx,cx,[t:[u:1to(x)]cx]smpr(x,t),f1(yp1,f),f1(frr),t49):is(smpr(x,f1(yp1,f)),smpr(x,f1(frr)))
+t51:=isf(cx,cx,[t:cx]<smpr(yp1,f2(yp1,f))><t>q,smpr(x,f1(frr)),smpr(x,f1(yp1,f)),symis(cx,smpr(x,f1(yp1,f)),smpr(x,f1(frr)),t50)):is(<smpr(yp1,f2(yp1,f))><smpr(x,f1(frr))>q,<smpr(yp1,f2(yp1,f))><smpr(x,f1(yp1,f))>q)
+t52:=tr4is(cx,smpr(xpy1,f),<xout(xyp1)>left(cx,xpy1,xyp1,t12,recf(xpy1,f)),smpr(xyp1,fr),<<xout(xyp1)>fr><smpr(xpy,frr)>q,<<xout(xyp1)>fr><<smpr(y,f2(frr))><smpr(x,f1(frr))>q>q,t16,t18,t20,t21):is(smpr(xpy1,f),<<xout(xyp1)>fr><<smpr(y,f2(frr))><smpr(x,f1(frr))>q>q)
+t53:=tr4is(cx,smpr(xpy1,f),<<xout(xyp1)>fr><<smpr(y,f2(frr))><smpr(x,f1(frr))>q>q,<<<xout(xyp1)>fr><smpr(y,f2(frr))>q><smpr(x,f1(frr))>q,<smpr(yp1,f2(yp1,f))><smpr(x,f1(frr))>q,<smpr(yp1,f2(yp1,f))><smpr(x,f1(yp1,f))>q,t52,t22,t43,t51):prop1(yp1,f)
+p@t54:=[u:[t:1to(xpy1)]cx]t53(u):prop2(yp1)
+t55:=isp(nat,[t:nat]prop2(t),yp1,<y>suc,t54,satz4a(y)):prop2(<y>suc)
+y@t56:=induction([t:nat]prop2(t),t11,[z:nat][t:prop2(z)]t55(z,t),y):prop2(y)
+-8281
+satz281:=<f>t56".8281":is(smpr(pl"n"(x,y),f),<smpr(y,right(cx,x,y,f))><smpr(x,left(cx,pl"n"(x,y),x,lessisi1"n"(x,pl"n"(x,y),satz18a(x,y)),f))>q)
+q@commut:=[x:cx][y:cx]is(<y><x>q,<x><y>q):'prop'
+@commutpl:=[x:cx][y:cx]compl(x,y):commut([x:cx][y:cx]pl(x,y))
+commutts:=[x:cx][y:cx]comts(x,y):commut([x:cx][y:cx]ts(x,y))
+q@[c:commut][z:cx][u:cx]
+comq:=<u><z>c:is(<u><z>q,<z><u>q)
+a@[c:commut(q)][x:nat][f:[t:1to(x)]cx][g:[t:1to(x)]cx]
++8282
+prop1:=is(smpr(x,[t:1to(x)]<<t>g><<t>f>q),<smpr(x,g)><smpr(x,f)>q):'prop'
+x@prop2:=all"l"([t:1to(x)]cx,[u:[t:1to(x)]cx]all"l"([t:1to(x)]cx,[v:[t:1to(x)]cx]prop1(u,v))):'prop'
+c@[f0:[t:1to(1)]cx][g0:[t:1to(1)]cx]
+t1:=satz277([t:1to(1)]<<t>g0><<t>f0>q):is(smpr(1,[t:1to(1)]<<t>g0><<t>f0>q),<<xout(1)>g0><<xout(1)>f0>q)
+t2:=isf(cx,cx,<smpr(1,f0)>q,smpr(1,g0),<xout(1)>g0,satz277(g0)):is(<smpr(1,g0)><smpr(1,f0)>q,<<xout(1)>g0><smpr(1,f0)>q)
+t3:=isf(cx,cx,[t:cx]<<xout(1)>g0><t>q,smpr(1,f0),<xout(1)>f0,satz277(f0)):is(<<xout(1)>g0><smpr(1,f0)>q,<<xout(1)>g0><<xout(1)>f0>q)
+t4:=tris(cx,<smpr(1,g0)><smpr(1,f0)>q,<<xout(1)>g0><smpr(1,f0)>q,<<xout(1)>g0><<xout(1)>f0>q,t2,t3):is(<smpr(1,g0)><smpr(1,f0)>q,<<xout(1)>g0><<xout(1)>f0>q)
+t5:=tris2(cx,smpr(1,[t:1to(1)]<<t>g0><<t>f0>q),<smpr(1,g0)><smpr(1,f0)>q,<<xout(1)>g0><<xout(1)>f0>q,t1,t4):prop1(1,f0,g0)
+c@t6:=[u:[t:1to(1)]cx][v:[t:1to(1)]cx]t5(u,v):prop2(1)
+x@xp1:=pl"n"(x,1):nat
+[p:prop2(x)][f:[t:1to(xp1)]cx][g:[t:1to(xp1)]cx]
+c@[u:cx][v:cx][w:cx][z:cx]
+t7:=assq2(a,<v><u>q,w,z):is(<<z><w>q><<v><u>q>q,<z><<w><<v><u>q>q>q)
+t8:=comq(c,<v><u>q,w):is(<w><<v><u>q>q,<<v><u>q><w>q)
+t9:=assq2(a,w,u,v):is(<<v><u>q><w>q,<v><<u><w>q>q)
+t10:=tris(cx,<w><<v><u>q>q,<<v><u>q><w>q,<v><<u><w>q>q,t8,t9):is(<w><<v><u>q>q,<v><<u><w>q>q)
+t11:=isf(cx,cx,[t:cx]<z><t>q,<w><<v><u>q>q,<v><<u><w>q>q,t10):is(<z><<w><<v><u>q>q>q,<z><<v><<u><w>q>q>q)
+t12:=assq1(a,<u><w>q,v,z):is(<z><<v><<u><w>q>q>q,<<z><v>q><<u><w>q>q)
+t13:=comq(c,w,u):is(<u><w>q,<w><u>q)
+t14:=isf(cx,cx,[t:cx]<<z><v>q><t>q,<u><w>q,<w><u>q,t13):is(<<z><v>q><<u><w>q>q,<<z><v>q><<w><u>q>q)
+t15:=tr4is(cx,<<z><w>q><<v><u>q>q,<z><<w><<v><u>q>q>q,<z><<v><<u><w>q>q>q,<<z><v>q><<u><w>q>q,<<z><v>q><<w><u>q>q,t7,t11,t12,t14):is(<<z><w>q><<v><u>q>q,<<z><v>q><<w><u>q>q)
+g@t16:=lessisi1"n"(x,xp1,satz18a(x,1)):lessis"n"(x,xp1)
+sfx:=smpr(x,left(cx,xp1,x,t16,f)):cx
+sgx:=smpr(x,left(cx,xp1,x,t16,g)):cx
+h:=[t:1to(xp1)]<<t>g><<t>f>q:[t:1to(xp1)]cx
+shx:=smpr(x,left(cx,xp1,x,t16,h)):cx
+t17:=satz278(x,h):is(smpr(xp1,h),<<<xout(xp1)>g><<xout(xp1)>f>q><shx>q)
+t18:=<left(cx,xp1,x,t16,g)><left(cx,xp1,x,t16,f)>p:is(shx,<sgx><sfx>q)
+t19:=isf(cx,cx,[t:cx]<<<xout(xp1)>g><<xout(xp1)>f>q><t>q,shx,<sgx><sfx>q,t18):is(<<<xout(xp1)>g><<xout(xp1)>f>q><shx>q,<<<xout(xp1)>g><<xout(xp1)>f>q><<sgx><sfx>q>q)
+t20:=t15(sfx,sgx,<xout(xp1)>f,<xout(xp1)>g):is(<<<xout(xp1)>g><<xout(xp1)>f>q><<sgx><sfx>q>q,<<<xout(xp1)>g><sgx>q><<<xout(xp1)>f><sfx>q>q)
+t21:=symis(cx,smpr(xp1,f),<<xout(xp1)>f><sfx>q,satz278(x,f)):is(<<xout(xp1)>f><sfx>q,smpr(xp1,f))
+t22:=isf(cx,cx,[t:cx]<<<xout(xp1)>g><sgx>q><t>q,<<xout(xp1)>f><sfx>q,smpr(xp1,f),t21):is(<<<xout(xp1)>g><sgx>q><<<xout(xp1)>f><sfx>q>q,<<<xout(xp1)>g><sgx>q><smpr(xp1,f)>q)
+t23:=symis(cx,smpr(xp1,g),<<xout(xp1)>g><sgx>q,satz278(x,g)):is(<<xout(xp1)>g><sgx>q,smpr(xp1,g))
+t24:=isf(cx,cx,<smpr(xp1,f)>q,<<xout(xp1)>g><sgx>q,smpr(xp1,g),t23):is(<<<xout(xp1)>g><sgx>q><smpr(xp1,f)>q,<smpr(xp1,g)><smpr(xp1,f)>q)
+t25:=tr3is(cx,smpr(xp1,h),<<<xout(xp1)>g><<xout(xp1)>f>q><shx>q,<<<xout(xp1)>g><<xout(xp1)>f>q><<sgx><sfx>q>q,<<<xout(xp1)>g><sgx>q><<<xout(xp1)>f><sfx>q>q,t17,t19,t20):is(smpr(xp1,h),<<<xout(xp1)>g><sgx>q><<<xout(xp1)>f><sfx>q>q)
+t26:=tr3is(cx,smpr(xp1,h),<<<xout(xp1)>g><sgx>q><<<xout(xp1)>f><sfx>q>q,<<<xout(xp1)>g><sgx>q><smpr(xp1,f)>q,<smpr(xp1,g)><smpr(xp1,f)>q,t25,t22,t24):prop1(xp1,f,g)
+p@t27:=[u:[t:1to(xp1)]cx][v:[t:1to(xp1)]cx]t26(u,v):prop2(xp1)
+t28:=isp(nat,[t:nat]prop2(t),xp1,<x>suc,t27,satz4a(x)):prop2(<x>suc)
+x@t29:=induction([t:nat]prop2(t),t6,[y:nat][t:prop2(y)]t28(y,t),x):prop2(x)
+-8282
+satz282:=<g><f>t29".8282":is(smpr(x,[t:1to(x)]<<t>g><<t>f>q),<smpr(x,g)><smpr(x,f)>q)
+x@[s:[t:1to(x)]1to(x)][b:bijective(1to(x),1to(x),s)][f:[t:1to(x)]cx]
++8283
+s@[f:[t:1to(x)]cx]
+g:=[t:1to(x)]<<t>s>f:[t:1to(x)]cx
+prop1:=is(smpr(x,g),smpr(x,f)):'prop'
+x@prop2:=all"l"([t:1to(x)]1to(x),[u:[t:1to(x)]1to(x)]all"l"([t:1to(x)]cx,[v:[t:1to(x)]cx]imp(bijective(1to(x),1to(x),u),prop1(u,v)))):'prop'
+c@[s:[t:1to(1)]1to(1)][f:[t:1to(1)]cx]
+t1:=tris2(1to(1),<xout(1)>s,xout(1),1o"n",th1"n.singlet"(<xout(1)>s),th1"n.singlet"(xout(1))):is"e"(1to(1),<xout(1)>s,xout(1))
+t2:=satz277(g(1,s,f)):is(smpr(1,g(1,s,f)),<xout(1)>g(1,s,f))
+t3:=isf(1to(1),cx,f,<xout(1)>s,xout(1),t1):is(<xout(1)>g(1,s,f),<xout(1)>f)
+t4:=symis(cx,smpr(1,f),<xout(1)>f,satz277(f)):is(<xout(1)>f,smpr(1,f))
+t5:=tr3is(cx,smpr(1,g(1,s,f)),<xout(1)>g(1,s,f),<xout(1)>f,smpr(1,f),t2,t3,t4):prop1(1,s,f)
+c@t6:=[u:[t:1to(1)]1to(1)][v:[t:1to(1)]cx][w:bijective(1to(1),1to(1),u)]t5(u,v):prop2(1)
+x@xp1:=pl"n"(x,1):nat
+t7:=lessisi1"n"(x,xp1,satz18a(x,1)):lessis"n"(x,xp1)
+[p:prop2(x)][s:[t:1to(xp1)]1to(xp1)][f:[t:1to(xp1)]cx][b:bijective(1to(xp1),1to(xp1),s)]
+t8:=ande1(injective(1to(xp1),1to(xp1),s),surjective(1to(xp1),1to(xp1),s),b):injective(1to(xp1),1to(xp1),s)
+[case1:is"e"(1to(xp1),<xout(xp1)>s,xout(xp1))][u:1to(x)]
+u1:=left1to(xp1,x,t7,u):1to(xp1)
+n1:=inn(xp1,<u1>s):nat
+[i:is"n"(n1,xp1)]
+t9:=tr3is(1to(xp1),<u1>s,outn(xp1,n1,1top(xp1,<u1>s)),xout(xp1),<xout(xp1)>s,isoutinn(xp1,<u1>s),isoutni(xp1,n1,1top(xp1,<u1>s),xp1,lessisi3(xp1),i),symis(1to(xp1),<xout(xp1)>s,xout(xp1),case1)):is"e"(1to(xp1),<u1>s,<xout(xp1)>s)
+t10:=isfe(1to(xp1),1to(xp1),s,t8,u1,xout(xp1),t9):is"e"(1to(xp1),u1,xout(xp1))
+t11:=isoutne(xp1,inn(x,u),trlessis"n"(inn(x,u),x,xp1,1top(x,u),t7),xp1,lessisi3(xp1),t10):is"n"(inn(x,u),xp1)
+t12:=satz16a(inn(x,u),x,xp1,1top(x,u),satz18a(x,1)):less"n"(inn(x,u),xp1)
+t13:=<t11>ec3e31(is"n"(inn(x,u),xp1),more"n"(inn(x,u),xp1),less"n"(inn(x,u),xp1),satz10b(inn(x,u),xp1),t12):con
+u@t14:=ore1(less"n"(n1,xp1),is"n"(n1,xp1),1top(xp1,<u1>s),[t:is"n"(n1,xp1)]t13(t)):less"n"(n1,xp1)
+t15:=satz26(x,n1,t14):lessis"n"(n1,x)
+w1:=outn(x,n1,t15):1to(x)
+case1@s01:=[t:1to(x)]w1(t):[t:1to(x)]1to(x)
+u@[v:1to(x)][i:is"e"(1to(x),w1(u),w1(v))]
+t16:=isoutne(x,n1(u),t15(u),n1(v),t15(v),i):is"n"(n1(u),n1(v))
+t17:=<isinne(xp1,<u1(u)>s,<u1(v)>s,t16)><u1(v)><u1(u)>t8:is"e"(1to(xp1),u1(u),u1(v))
+t18:=thleft1(xp1,x,t7,u,v,t17):is"e"(1to(x),u,v)
+u@u2:=<u1>invf(1to(xp1),1to(xp1),s,b):1to(xp1)
+n2:=inn(xp1,u2):nat
+[i:is"n"(n2,xp1)]
+t19:=tris(1to(xp1),u2,outn(xp1,n2,1top(xp1,u2)),xout(xp1),isoutinn(xp1,u2),isoutni(xp1,n2,1top(xp1,u2),xp1,lessisi3(xp1),i)):is"e"(1to(xp1),u2,xout(xp1))
+t20:=tr3is(1to(xp1),u1,<u2>s,<xout(xp1)>s,xout(xp1),thinvf2(1to(xp1),1to(xp1),s,b,u1),isf(1to(xp1),1to(xp1),s,u2,xout(xp1),t19),case1):is"e"(1to(xp1),u1,xout(xp1))
+t21:=isoutne(xp1,inn(x,u),trlessis"n"(inn(x,u),x,xp1,1top(x,u),t7),xp1,lessisi3(xp1),t20):is"n"(inn(x,u),xp1)
+t22:=satz16a(inn(x,u),x,xp1,1top(x,u),satz18a(x,1)):less"n"(inn(x,u),xp1)
+t23:=<t21>ec3e31(is"n"(inn(x,u),xp1),more"n"(inn(x,u),xp1),less"n"(inn(x,u),xp1),satz10b(inn(x,u),xp1),t22):con
+u@t24:=ore1(less"n"(n2,xp1),is"n"(n2,xp1),1top(xp1,u2),[t:is"n"(n2,xp1)]t23(t)):less"n"(n2,xp1)
+t25:=satz26(x,n2,t24):lessis"n"(n2,x)
+w2:=outn(x,n2,t25):1to(x)
+t26:=isinoutn(x,n2,t25):is"n"(n2,inn(x,w2))
+t27:=tris(1to(xp1),u2,outn(xp1,n2,1top(xp1,u2)),u1(w2),isoutinn(xp1,u2),isoutni(xp1,n2,1top(xp1,u2),inn(x,w2),trlessis"n"(inn(x,w2),x,xp1,1top(x,w2),t7),t26)):is"e"(1to(xp1),u2,u1(w2))
+t28:=tris(1to(xp1),u1,<u2>s,<u1(w2)>s,thinvf2(1to(xp1),1to(xp1),s,b,u1),isf(1to(xp1),1to(xp1),s,u2,u1(w2),t27)):is"e"(1to(xp1),u1,<u1(w2)>s)
+t29:=tris(nat,inn(x,u),inn(xp1,u1),n1(w2),isinoutn(xp1,inn(x,u),trlessis"n"(inn(x,u),x,xp1,1top(x,u),t7)),isinni(xp1,u1,<u1(w2)>s,t28)):is"n"(inn(x,u),n1(w2))
+t30:=tris(1to(x),u,outn(x,inn(x,u),1top(x,u)),w1(w2),isoutinn(x,u),isoutni(x,inn(x,u),1top(x,u),n1(w2),t15(w2),t29)):is"e"(1to(x),u,w1(w2))
+t31:=somei(1to(x),[t:1to(x)]is"e"(1to(x),u,w1(t)),w2,t30):image(1to(x),1to(x),s01,u)
+case1@t32:=andi(injective(1to(x),1to(x),s01),surjective(1to(x),1to(x),s01),[t:1to(x)][u:1to(x)][v:is"e"(1to(x),<t>s01,<u>s01)]t18(t,u,v),[t:1to(x)]t31(t)):bijective(1to(x),1to(x),s01)
+f01:=left(cx,xp1,x,t7,f):[t:1to(x)]cx
+t33:=<t32><f01><s01>p:prop1(s01,f01)
+g1:=left(cx,xp1,x,t7,g(xp1,s,f)):[t:1to(x)]cx
+g2:=g(x,s01,f01):[t:1to(x)]cx
+u@t33a:=isoutinn(xp1,<u1>s):is"e"(1to(xp1),<u1>s,outn(xp1,n1,1top(xp1,<u1>s)))
+t34:=isinoutn(x,n1,t15):is"n"(n1,inn(x,w1))
+t35:=isoutni(xp1,n1,1top(xp1,<u1>s),inn(x,w1),trlessis"n"(inn(x,w1),x,xp1,1top(x,w1),t7),t34):is"e"(1to(xp1),outn(xp1,n1,1top(xp1,<u1>s)),left1to(xp1,x,t7,w1))
+t36:=tris(1to(xp1),<u1>s,outn(xp1,n1,1top(xp1,<u1>s)),left1to(xp1,x,t7,w1),t33a,t35):is"e"(1to(xp1),<u1>s,left1to(xp1,x,t7,w1))
+t37:=isf(1to(xp1),cx,f,<u1>s,left1to(xp1,x,t7,w1),t36):is(<u>g1,<u>g2)
+case1@t38:=fisi(1to(x),cx,g1,g2,[t:1to(x)]t37(t)):is"e"([t:1to(x)]cx,g1,g2)
+t39:=isf([t:1to(x)]cx,cx,[u:[t:1to(x)]cx]smpr(x,u),g1,g2,t38):is(smpr(x,g1),smpr(x,g2))
+t40:=tris(cx,smpr(x,g1),smpr(x,g2),smpr(x,f01),t39,t33):is(smpr(x,g1),smpr(x,f01))
+t41:=isf(1to(xp1),cx,f,<xout(xp1)>s,xout(xp1),case1):is(<xout(xp1)>g(xp1,s,f),<xout(xp1)>f)
+t42:=satz278(x,g(xp1,s,f)):is(smpr(xp1,g(xp1,s,f)),<<xout(xp1)>g(xp1,s,f)><smpr(x,g1)>q)
+t43:=isf(cx,cx,<smpr(x,g1)>q,<xout(xp1)>g(xp1,s,f),<xout(xp1)>f,t41):is(<<xout(xp1)>g(xp1,s,f)><smpr(x,g1)>q,<<xout(xp1)>f><smpr(x,g1)>q)
+t44:=isf(cx,cx,[t:cx]<<xout(xp1)>f><t>q,smpr(x,g1),smpr(x,f01),t40):is(<<xout(xp1)>f><smpr(x,g1)>q,<<xout(xp1)>f><smpr(x,f01)>q)
+t45:=symis(cx,smpr(xp1,f),<<xout(xp1)>f><smpr(x,f01)>q,satz278(x,f)):is(<<xout(xp1)>f><smpr(x,f01)>q,smpr(xp1,f))
+t46:=tr4is(cx,smpr(xp1,g(xp1,s,f)),<<xout(xp1)>g(xp1,s,f)><smpr(x,g1)>q,<<xout(xp1)>f><smpr(x,g1)>q,<<xout(xp1)>f><smpr(x,f01)>q,smpr(xp1,f),t42,t43,t44,t45):prop1(xp1,s,f)
+b@1px:=pl"n"(1,x):nat
+[case2:is"e"(1to(xp1),<1out(xp1)>s,1out(xp1))][u:1to(x)]
+u3:=right1to(1,x,u):1to(1px)
+case2@t47:=lessisi2"n"(1px,xp1,compl"n"(1,x)):lessis"n"(1px,xp1)
+s02:=left(1to(xp1),xp1,1px,t47,s):[t:1to(1px)]1to(xp1)
+u@n3:=inn(xp1,<u3>s02):nat
+[i:is"n"(n3,1)]
+t48:=tr3is(1to(xp1),<u3>s02,outn(xp1,n3,1top(xp1,<u3>s02)),1out(xp1),<1out(xp1)>s,isoutinn(xp1,<u3>s02),isoutni(xp1,n3,1top(xp1,<u3>s02),1,satz24a(xp1),i),symis(1to(xp1),<1out(xp1)>s,1out(xp1),case2)):is"e"(1to(xp1),<u3>s02,<1out(xp1)>s)
+t49:=isfe(1to(xp1),1to(xp1),s,t8,left1to(xp1,1px,t47,u3),1out(xp1),t48):is"e"(1to(xp1),left1to(xp1,1px,t47,u3),1out(xp1))
+t50:=isoutne(xp1,inn(1px,u3),trlessis"n"(inn(1px,u3),1px,xp1,1top(1px,u3),t47),1,satz24a(xp1),t49):is"n"(inn(1px,u3),1)
+t51:=isinoutn(1px,pl"n"(1,inn(x,u)),satz19o(inn(x,u),x,1,1top(x,u))):is"n"(pl"n"(1,inn(x,u)),inn(1px,u3))
+t52:=ismore1"n"(pl"n"(1,inn(x,u)),inn(1px,u3),1,t51,satz18(1,inn(x,u))):more"n"(inn(1px,u3),1)
+t53:=<t50>ec3e21(is"n"(inn(1px,u3),1),more"n"(inn(1px,u3),1),less"n"(inn(1px,u3),1),satz10b(inn(1px,u3),1),t52):con
+u@t54:=ore1(more"n"(n3,1),is"n"(n3,1),satz24(n3),[t:is"n"(n3,1)]t53(t)):more"n"(n3,1)
+nm1:=mn"n"(n3,1,t54):nat
+t54a:=islessis1"n"(n3,pl"n"(nm1,1),xp1,th1c"n.mn"(n3,1,t54),1top(xp1,<u3>s02)):lessis"n"(pl"n"(nm1,1),xp1)
+t55:=th9"l.or"(less"n"(pl"n"(nm1,1),xp1),is"n"(pl"n"(nm1,1),xp1),less"n"(nm1,x),is"n"(nm1,x),t54a,[t:less"n"(pl"n"(nm1,1),xp1)]satz20c(nm1,x,1,t),[t:is"n"(pl"n"(nm1,1),xp1)]satz20b(nm1,x,1,t)):lessis"n"(nm1,x)
+w3:=outn(x,nm1,t55):1to(x)
+case2@s03:=[t:1to(x)]w3(t):[t:1to(x)]1to(x)
+u@[v:1to(x)][i:is"e"(1to(x),w3(u),w3(v))]
+t56:=isoutne(x,nm1(u),t55(u),nm1(v),t55(v),i):is"n"(nm1(u),nm1(v))
+t57:=tr3is(nat,n3(u),pl"n"(nm1(u),1),pl"n"(nm1(v),1),n3(v),th1c"n.mn"(n3(u),1,t54(u)),ispl1"n"(nm1(u),nm1(v),1,t56),th1d"n.mn"(n3(v),1,t54(v))):is"n"(n3(u),n3(v))
+t58:=isinne(xp1,<u3(u)>s02,<u3(v)>s02,t57):is"e"(1to(xp1),<u3(u)>s02,<u3(v)>s02)
+t59:=isfe(1to(xp1),1to(xp1),s,t8,left1to(xp1,1px,t47,u3(u)),left1to(xp1,1px,t47,u3(v)),t58):is"e"(1to(xp1),left1to(xp1,1px,t47,u3(u)),left1to(xp1,1px,t47,u3(v)))
+t60:=thleft1(xp1,1px,t47,u3(u),u3(v),t59):is"e"(1to(1px),u3(u),u3(v))
+t61:=thright1(1,x,u,v,t60):is"e"(1to(x),u,v)
+case2@s04:=left(1to(xp1),xp1,1px,t47,invf(1to(xp1),1to(xp1),s,b)):[t:1to(1px)]1to(xp1)
+u@u4:=<u3>s04:1to(xp1)
+n4:=inn(xp1,u4):nat
+[i:is"n"(n4,1)]
+t62:=tris(1to(xp1),u4,outn(xp1,n4,1top(xp1,u4)),1out(xp1),isoutinn(xp1,u4),isoutni(xp1,n4,1top(xp1,u4),1,satz24a(xp1),i)):is"e"(1to(xp1),u4,1out(xp1))
+t63:=tr3is(1to(xp1),left1to(xp1,1px,t47,u3),<u4>s,<1out(xp1)>s,1out(xp1),thinvf2(1to(xp1),1to(xp1),s,b,left1to(xp1,1px,t47,u3)),isf(1to(xp1),1to(xp1),s,u4,1out(xp1),t62),case2):is"e"(1to(xp1),left1to(xp1,1px,t47,u3),1out(xp1))
+t64:=isoutne(xp1,inn(1px,u3),trlessis"n"(inn(1px,u3),1px,xp1,1top(1px,u3),t47),1,satz24a(xp1),t63):is"n"(inn(1px,u3),1)
+t65:=tris(nat,pl"n"(1,inn(x,u)),inn(1px,u3),1,isinoutn(1px,pl"n"(1,inn(x,u)),satz19o(inn(x,u),x,1,1top(x,u))),t64):is"n"(pl"n"(1,inn(x,u)),1)
+t66:=<t65>ec3e21(is"n"(pl"n"(1,inn(x,u)),1),more"n"(pl"n"(1,inn(x,u)),1),less"n"(pl"n"(1,inn(x,u)),1),satz10b(pl"n"(1,inn(x,u)),1),satz18(1,inn(x,u))):con
+u@t67:=ore1(more"n"(n4,1),is"n"(n4,1),satz24(n4),[t:is"n"(n4,1)]t66(t)):more"n"(n4,1)
+nm2:=mn"n"(n4,1,t67):nat
+t68:=islessis1"n"(n4,pl"n"(nm2,1),xp1,th1c"n.mn"(n4,1,t67),1top(xp1,u4)):lessis"n"(pl"n"(nm2,1),xp1)
+t69:=th9"l.or"(less"n"(pl"n"(nm2,1),xp1),is"n"(pl"n"(nm2,1),xp1),less"n"(nm2,x),is"n"(nm2,x),t68,[t:less"n"(pl"n"(nm2,1),xp1)]satz20c(nm2,x,1,t),[t:is"n"(pl"n"(nm2,1),xp1)]satz20b(nm2,x,1,t)):lessis"n"(nm2,x)
+w4:=outn(x,nm2,t69):1to(x)
+t70:=isinoutn(x,nm2,t69):is"n"(nm2,inn(x,w4))
+t71:=tr3is(nat,n4,pl"n"(1,nm2),pl"n"(1,inn(x,w4)),inn(1px,u3(w4)),th1a"n.mn"(n4,1,t67),ispl2"n"(nm2,inn(x,w4),1,t70),isinoutn(1px,pl"n"(1,inn(x,w4)),satz19o(inn(x,w4),x,1,1top(x,w4)))):is"n"(n4,inn(1px,u3(w4)))
+t72:=tris(1to(xp1),u4,outn(xp1,n4,1top(xp1,u4)),left1to(xp1,1px,t47,u3(w4)),isoutinn(xp1,u4),isoutni(xp1,n4,1top(xp1,u4),inn(1px,u3(w4)),trlessis"n"(inn(1px,u3(w4)),1px,xp1,1top(1px,u3(w4)),t47),t71)):is"e"(1to(xp1),u4,left1to(xp1,1px,t47,u3(w4)))
+t73:=tris(1to(xp1),left1to(xp1,1px,t47,u3),<u4>s,<u3(w4)>s02,thinvf2(1to(xp1),1to(xp1),s,b,left1to(xp1,1px,t47,u3)),isf(1to(xp1),1to(xp1),s,u4,left1to(xp1,1px,t47,u3(w4)),t72)):is"e"(1to(xp1),left1to(xp1,1px,t47,u3),<u3(w4)>s02)
+t74:=tr3is(nat,pl"n"(1,inn(x,u)),inn(1px,u3),inn(xp1,left1to(xp1,1px,t47,u3)),n3(w4),isinoutn(1px,pl"n"(1,inn(x,u)),satz19o(inn(x,u),x,1,1top(x,u))),isinoutn(xp1,inn(1px,u3),trlessis"n"(inn(1px,u3),1px,xp1,1top(1px,u3),t47)),isinni(xp1,left1to(xp1,1px,t47,u3),<u3(w4)>s02,t73)):is"n"(pl"n"(1,inn(x,u)),n3(w4))
+t75:=th1e"n.mn"(n3(w4),1,inn(x,u),t54(w4),t74):is"n"(inn(x,u),nm1(w4))
+t76:=tris(1to(x),u,outn(x,inn(x,u),1top(x,u)),w3(w4),isoutinn(x,u),isoutni(x,inn(x,u),1top(x,u),nm1(w4),t55(w4),t75)):is"e"(1to(x),u,w3(w4))
+t77:=somei(1to(x),[t:1to(x)]is"e"(1to(x),u,w3(t)),w4,t76):image(1to(x),1to(x),s03,u)
+case2@t78:=andi(injective(1to(x),1to(x),s03),surjective(1to(x),1to(x),s03),[t:1to(x)][u:1to(x)][v:is"e"(1to(x),<t>s03,<u>s03)]t61(t,u,v),[t:1to(x)]t77(t)):bijective(1to(x),1to(x),s03)
+f02:=left(cx,xp1,1px,t47,f):[t:1to(1px)]cx
+f03:=right(cx,1,x,f02):[t:1to(x)]cx
+t79:=<t78><f03><s03>p:prop1(s03,f03)
+g3:=left(cx,xp1,1px,t47,g(xp1,s,f)):[t:1to(1px)]cx
+g4:=right(cx,1,x,g3):[t:1to(x)]cx
+g5:=g(x,s03,f03):[t:1to(x)]cx
+u@t80:=tr3is(nat,n3,pl"n"(1,nm1),pl"n"(1,inn(x,w3)),inn(1px,right1to(1,x,w3)),th1a"n.mn"(n3,1,t54),ispl2"n"(nm1,inn(x,w3),1,isinoutn(x,nm1,t55)),isinoutn(1px,pl"n"(1,inn(x,w3)),satz19o(inn(x,w3),x,1,1top(x,w3)))):is"n"(n3,inn(1px,right1to(1,x,w3)))
+t81:=tris(1to(xp1),<u3>s02,outn(xp1,n3,1top(xp1,<u3>s02)),left1to(xp1,1px,t47,right1to(1,x,w3)),isoutinn(xp1,<u3>s02),isoutni(xp1,n3,1top(xp1,<u3>s02),inn(1px,right1to(1,x,w3)),trlessis"n"(inn(1px,right1to(1,x,w3)),1px,xp1,1top(1px,right1to(1,x,w3)),t47),t80)):is"e"(1to(xp1),<u3>s02,left1to(xp1,1px,t47,right1to(1,x,w3)))
+t82:=isf(1to(xp1),cx,f,<u3>s02,left1to(xp1,1px,t47,right1to(1,x,w3)),t81):is(<u>g4,<u>g5)
+case2@t83:=fisi(1to(x),cx,g4,g5,[t:1to(x)]t82(t)):is"e"([t:1to(x)]cx,g4,g5)
+t85:=isf([t:1to(x)]cx,cx,[u:[t:1to(x)]cx]smpr(x,u),g4,g5,t83):is(smpr(x,g4),smpr(x,g5))
+t86:=tris(cx,smpr(x,g4),smpr(x,g5),smpr(x,f03),t85,t79):is(smpr(x,g4),smpr(x,f03))
+t87:=lessisi1"n"(1,1px,satz18a(1,x)):lessis"n"(1,1px)
+g6:=left(cx,1px,1,t87,g3):[t:1to(1)]cx
+f04:=left(cx,1px,1,t87,f02):[t:1to(1)]cx
+t87a:=isinoutn(1,1,lessisi3(1)):is"n"(1,inn(1,xout(1)))
+1d:=left1to(1px,1,t87,xout(1)):1to(1px)
+t87b:=isinoutn(1px,inn(1,xout(1)),trlessis"n"(inn(1,xout(1)),1,1px,1top(1,xout(1)),t87)):is"n"(inn(1,xout(1)),inn(1px,1d))
+t88:=tris(nat,1,inn(1,xout(1)),inn(1px,1d),t87a,t87b):is"n"(1,inn(1px,1d))
+1e:=left1to(xp1,1px,t47,1d):1to(xp1)
+t88a:=isoutni(xp1,1,satz24a(xp1),inn(1px,1d),trlessis"n"(inn(1px,1d),1px,xp1,1top(1px,1d),t47),t88):is"e"(1to(xp1),1out(xp1),1e)
+t88b:=isf(1to(xp1),1to(xp1),s,1e,1out(xp1),symis(1to(xp1),1out(xp1),1e,t88a)):is"e"(1to(xp1),<1e>s,<1out(xp1)>s)
+t89:=tr3is(1to(xp1),<1e>s,<1out(xp1)>s,1out(xp1),1e,t88b,case2,t88a):is"e"(1to(xp1),<1e>s,1e)
+t89a:=tr3is(cx,smpr(1,g6),<xout(1)>g6,<xout(1)>f04,smpr(1,f04),satz277(g6),isf(1to(xp1),cx,f,<1e>s,1e,t89),symis(cx,smpr(1,f04),<xout(1)>f04,satz277(f04))):is(smpr(1,g6),smpr(1,f04))
+t90:=satz281(1,x,g3):is(smpr(1px,g3),<smpr(x,g4)><smpr(1,g6)>q)
+t91:=isf(cx,cx,<smpr(1,g6)>q,smpr(x,g4),smpr(x,f03),t86):is(<smpr(x,g4)><smpr(1,g6)>q,<smpr(x,f03)><smpr(1,g6)>q)
+t92:=isf(cx,cx,[t:cx]<smpr(x,f03)><t>q,smpr(1,g6),smpr(1,f04),t89a):is(<smpr(x,f03)><smpr(1,g6)>q,<smpr(x,f03)><smpr(1,f04)>q)
+t93:=symis(cx,smpr(1px,f02),<smpr(x,f03)><smpr(1,f04)>q,satz281(1,x,f02)):is(<smpr(x,f03)><smpr(1,f04)>q,smpr(1px,f02))
+t94:=tr4is(cx,smpr(1px,g3),<smpr(x,g4)><smpr(1,g6)>q,<smpr(x,f03)><smpr(1,g6)>q,<smpr(x,f03)><smpr(1,f04)>q,smpr(1px,f02),t90,t91,t92,t93):is(smpr(1px,g3),smpr(1px,f02))
+t95:=issmpr(xp1,f,1px,compl"n"(1,x)):is(smpr(1px,f02),smpr(xp1,f))
+t96:=symis(cx,smpr(1px,g3),smpr(xp1,g(xp1,s,f)),issmpr(xp1,g(xp1,s,f),1px,compl"n"(1,x))):is(smpr(xp1,g(xp1,s,f)),smpr(1px,g3))
+t97:=tr3is(cx,smpr(xp1,g(xp1,s,f)),smpr(1px,g3),smpr(1px,f02),smpr(xp1,f),t96,t94,t95):prop1(xp1,s,f)
+b@[not1:not(is"e"(1to(xp1),<xout(xp1)>s,xout(xp1)))][not2:not(is"e"(1to(xp1),<1out(xp1)>s,1out(xp1)))]
+a0:=<1out(xp1)>s:1to(xp1)
+b0:=<1out(xp1)>invf(1to(xp1),1to(xp1),s,b):1to(xp1)
+t98:=thinvf2(1to(xp1),1to(xp1),s,b,1out(xp1)):is"e"(1to(xp1),1out(xp1),<b0>s)
+t99:=not2:not(is"e"(1to(xp1),a0,1out(xp1)))
+t100:=symnotis(1to(xp1),<1out(xp1)>s,<b0>s,th3"e.notis"(1to(xp1),<1out(xp1)>s,1out(xp1),<b0>s,not2,t98)):not(is"e"(1to(xp1),<b0>s,<1out(xp1)>s))
+t101:=th3"l.imp"(is"e"(1to(xp1),b0,1out(xp1)),is"e"(1to(xp1),<b0>s,<1out(xp1)>s),t100,[t:is"e"(1to(xp1),b0,1out(xp1))]isf(1to(xp1),1to(xp1),s,b0,1out(xp1),t)):not(is"e"(1to(xp1),b0,1out(xp1)))
+s1:=changef(1to(xp1),1to(xp1),s,1out(xp1),b0):[t:1to(xp1)]1to(xp1)
+[u:1to(xp1)][i:is"e"(1to(xp1),u,1out(xp1))]
+t102:=changef1(1to(xp1),1to(xp1),s,1out(xp1),b0,u,i):is"e"(1to(xp1),<u>s1,<b0>s)
+t103:=tris2(1to(xp1),<u>s1,1out(xp1),<b0>s,t102,t98):is"e"(1to(xp1),<u>s1,1out(xp1))
+u@[i:is"e"(1to(xp1),u,b0)]
+t104:=changef2(1to(xp1),1to(xp1),s,1out(xp1),b0,u,i):is"e"(1to(xp1),<u>s1,a0)
+u@[n:not(is"e"(1to(xp1),u,1out(xp1)))][o:not(is"e"(1to(xp1),u,b0))]
+t105:=changef3(1to(xp1),1to(xp1),s,1out(xp1),b0,u,n,o):is"e"(1to(xp1),<u>s1,<u>s)
+not2@t106:=th6"e.wissel"(1to(xp1),1to(xp1),s,1out(xp1),b0,b):bijective(1to(xp1),1to(xp1),s1)
+[alpha:not(is"e"(1to(xp1),a0,xout(xp1)))]
+s2:=wissel(1to(xp1),1out(xp1),a0):[t:1to(xp1)]1to(xp1)
+t107:=th3"e.wissel"(1to(xp1),1out(xp1),a0):bijective(1to(xp1),1to(xp1),s2)
+[u:1to(xp1)][i:is"e"(1to(xp1),u,1out(xp1))]
+t108:=iswissel1(1to(xp1),1out(xp1),a0,<u>s1,t103(u,i)):is"e"(1to(xp1),<<u>s1>s2,a0)
+t109:=tris2(1to(xp1),<u>s,<<u>s1>s2,a0,isf(1to(xp1),1to(xp1),s,u,1out(xp1),i),t108):is"e"(1to(xp1),<u>s,<<u>s1>s2)
+u@[i:is"e"(1to(xp1),u,b0)]
+t110:=iswissel2(1to(xp1),1out(xp1),a0,<u>s1,t104(u,i)):is"e"(1to(xp1),<<u>s1>s2,1out(xp1))
+t111:=tris2(1to(xp1),<u>s,<<u>s1>s2,1out(xp1),tris2(1to(xp1),<u>s,1out(xp1),<b0>s,isf(1to(xp1),1to(xp1),s,u,b0,i),t98),t110):is"e"(1to(xp1),<u>s,<<u>s1>s2)
+u@[n:not(is"e"(1to(xp1),u,1out(xp1)))][o:not(is"e"(1to(xp1),u,b0))][i:is"e"(1to(xp1),<u>s1,1out(xp1))]
+t112:=isfe(1to(xp1),1to(xp1),s1,t8(s1,f,t106),u,1out(xp1),tris2(1to(xp1),<u>s1,<1out(xp1)>s1,1out(xp1),i,t103(1out(xp1),refis(1to(xp1),1out(xp1))))):is"e"(1to(xp1),u,1out(xp1))
+o@t113:=th3"l.imp"(is"e"(1to(xp1),<u>s1,1out(xp1)),is"e"(1to(xp1),u,1out(xp1)),n,[t:is"e"(1to(xp1),<u>s1,1out(xp1))]t112(t)):not(is"e"(1to(xp1),<u>s1,1out(xp1)))
+[i:is"e"(1to(xp1),<u>s1,a0)]
+t114:=isfe(1to(xp1),1to(xp1),s1,t8(s1,f,t106),u,b0,tris2(1to(xp1),<u>s1,<b0>s1,a0,i,t104(b0,refis(1to(xp1),b0)))):is"e"(1to(xp1),u,b0)
+o@t115:=th3"l.imp"(is"e"(1to(xp1),<u>s1,a0),is"e"(1to(xp1),u,b0),o,[t:is"e"(1to(xp1),<u>s1,a0)]t114(t)):not(is"e"(1to(xp1),<u>s1,a0))
+t116:=iswissel3(1to(xp1),1out(xp1),a0,<u>s1,t113,t115):is"e"(1to(xp1),<<u>s1>s2,<u>s1)
+t117:=symis(1to(xp1),<<u>s1>s2,<u>s,tris(1to(xp1),<<u>s1>s2,<u>s1,<u>s,t116,t105(u,n,o))):is"e"(1to(xp1),<u>s,<<u>s1>s2)
+n@t118:=th1"l.imp"(is"e"(1to(xp1),u,b0),is"e"(1to(xp1),<u>s,<<u>s1>s2),[t:is"e"(1to(xp1),u,b0)]t111(t),[t:not(is"e"(1to(xp1),u,b0))]t117(t)):is"e"(1to(xp1),<u>s,<<u>s1>s2)
+u@t119:=th1"l.imp"(is"e"(1to(xp1),u,1out(xp1)),is"e"(1to(xp1),<u>s,<<u>s1>s2),[t:is"e"(1to(xp1),u,1out(xp1))]t109(t),[t:not(is"e"(1to(xp1),u,1out(xp1)))]t118(t)):is"e"(1to(xp1),<u>s,<<u>s1>s2)
+alpha@t120:=fisi(1to(xp1),1to(xp1),s,[t:1to(xp1)]<<t>s1>s2,[t:1to(xp1)]t119(t)):is"e"([t:1to(xp1)]1to(xp1),s,[t:1to(xp1)]<<t>s1>s2)
+not2@t121:=t103(1out(xp1),refis(1to(xp1),1out(xp1))):is"e"(1to(xp1),<1out(xp1)>s1,1out(xp1))
+t121a:=ec3e21(is"n"(xp1,1),more"n"(xp1,1),less"n"(xp1,1),satz10b(xp1,1),ismore1"n"(1px,xp1,1,compl"n"(1,x),satz18(1,x))):nis"n"(xp1,1)
+t122:=th3"l.imp"(is"e"(1to(xp1),xout(xp1),1out(xp1)),is"n"(xp1,1),t121a,[t:is"e"(1to(xp1),xout(xp1),1out(xp1))]isoutne(xp1,xp1,lessisi3(xp1),1,satz24a(xp1),t)):not(is"e"(1to(xp1),xout(xp1),1out(xp1)))
+alpha@t123:=symnotis(1to(xp1),a0,xout(xp1),alpha):not(is"e"(1to(xp1),xout(xp1),a0))
+t124:=iswissel3(1to(xp1),1out(xp1),a0,xout(xp1),t122,t123):is"e"(1to(xp1),<xout(xp1)>s2,xout(xp1))
+t125:=isf([t:1to(xp1)]1to(xp1),cx,[u:[t:1to(xp1)]1to(xp1)]smpr(xp1,g(xp1,u,f)),s,[t:1to(xp1)]<<t>s1>s2,t120):is(smpr(xp1,g(xp1,s,f)),smpr(xp1,g(xp1,s1,g(xp1,s2,f))))
+t126:=t97(s1,g(xp1,s2,f),t106,t121):is(smpr(xp1,g(xp1,s1,g(xp1,s2,f))),smpr(xp1,g(xp1,s2,f)))
+t127:=t46(s2,f,t107,t124):is(smpr(xp1,g(xp1,s2,f)),smpr(xp1,f))
+t128:=tr3is(cx,smpr(xp1,g(xp1,s,f)),smpr(xp1,g(xp1,s1,g(xp1,s2,f))),smpr(xp1,g(xp1,s2,f)),smpr(xp1,f),t125,t126,t127):prop1(xp1,s,f)
+not2@[i3:is"e"(1to(xp1),a0,xout(xp1))][beta:not(is"e"(1to(xp1),b0,xout(xp1)))]
+s3:=wissel(1to(xp1),1out(xp1),b0):[t:1to(xp1)]1to(xp1)
+t129:=th3"e.wissel"(1to(xp1),1out(xp1),b0):bijective(1to(xp1),1to(xp1),s3)
+[u:1to(xp1)][i:is"e"(1to(xp1),u,1out(xp1))]
+t130:=t104(<u>s3,iswissel1(1to(xp1),1out(xp1),b0,u,i)):is"e"(1to(xp1),<<u>s3>s1,a0)
+t131:=tris2(1to(xp1),<u>s,<<u>s3>s1,a0,isf(1to(xp1),1to(xp1),s,u,1out(xp1),i),t130):is"e"(1to(xp1),<u>s,<<u>s3>s1)
+u@[i:is"e"(1to(xp1),u,b0)]
+t132:=t103(<u>s3,iswissel2(1to(xp1),1out(xp1),b0,u,i)):is"e"(1to(xp1),<<u>s3>s1,1out(xp1))
+t133:=tris2(1to(xp1),<u>s,<<u>s3>s1,<b0>s,isf(1to(xp1),1to(xp1),s,u,b0,i),tris(1to(xp1),<<u>s3>s1,1out(xp1),<b0>s,t132,t98)):is"e"(1to(xp1),<u>s,<<u>s3>s1)
+u@[n:not(is"e"(1to(xp1),u,1out(xp1)))][o:not(is"e"(1to(xp1),u,b0))]
+t134:=iswissel3(1to(xp1),1out(xp1),b0,u,n,o):is"e"(1to(xp1),<u>s3,u)
+t135:=isf(1to(xp1),1to(xp1),s1,<u>s3,u,t134):is"e"(1to(xp1),<<u>s3>s1,<u>s1)
+t136:=t105(u,n,o):is"e"(1to(xp1),<u>s1,<u>s)
+t139:=symis(1to(xp1),<<u>s3>s1,<u>s,tris(1to(xp1),<<u>s3>s1,<u>s1,<u>s,t135,t136)):is"e"(1to(xp1),<u>s,<<u>s3>s1)
+n@t140:=th1"l.imp"(is"e"(1to(xp1),u,b0),is"e"(1to(xp1),<u>s,<<u>s3>s1),[t:is"e"(1to(xp1),u,b0)]t133(t),[t:not(is"e"(1to(xp1),u,b0))]t139(t)):is"e"(1to(xp1),<u>s,<<u>s3>s1)
+u@t141:=th1"l.imp"(is"e"(1to(xp1),u,1out(xp1)),is"e"(1to(xp1),<u>s,<<u>s3>s1),[t:is"e"(1to(xp1),u,1out(xp1))]t131(t),[t:not(is"e"(1to(xp1),u,1out(xp1)))]t140(t)):is"e"(1to(xp1),<u>s,<<u>s3>s1)
+beta@t142:=fisi(1to(xp1),1to(xp1),s,[t:1to(xp1)]<<t>s3>s1,[t:1to(xp1)]t141(t)):is"e"([t:1to(xp1)]1to(xp1),s,[t:1to(xp1)]<<t>s3>s1)
+t143:=symnotis(1to(xp1),b0,xout(xp1),beta):not(is"e"(1to(xp1),xout(xp1),b0))
+t144:=iswissel3(1to(xp1),1out(xp1),b0,xout(xp1),t122,t143):is"e"(1to(xp1),<xout(xp1)>s3,xout(xp1))
+t145:=isf([t:1to(xp1)]1to(xp1),cx,[u:[t:1to(xp1)]1to(xp1)]smpr(xp1,g(xp1,u,f)),s,[t:1to(xp1)]<<t>s3>s1,t142):is(smpr(xp1,g(xp1,s,f)),smpr(xp1,g(xp1,s3,g(xp1,s1,f))))
+t146:=t46(s3,g(xp1,s1,f),t129,t144):is(smpr(xp1,g(xp1,s3,g(xp1,s1,f))),smpr(xp1,g(xp1,s1,f)))
+t147:=t97(s1,f,t106,t121):is(smpr(xp1,g(xp1,s1,f)),smpr(xp1,f))
+t148:=tr3is(cx,smpr(xp1,g(xp1,s,f)),smpr(xp1,g(xp1,s3,g(xp1,s1,f))),smpr(xp1,g(xp1,s1,f)),smpr(xp1,f),t145,t146,t147):prop1(xp1,s,f)
+i3@[gamma:is"e"(1to(xp1),b0,xout(xp1))][i:is"n"(x,1)]
+t149:=ispl1"n"(1,x,1,symis(nat,x,1,i)):is"n"(2,xp1)
+t150:=lessisi2"n"(2,xp1,t149):lessis"n"(2,xp1)
+f05:=left(cx,xp1,2,t150,f):[t:1to(2)]cx
+s05:=left(1to(xp1),xp1,2,t150,s):[t:1to(2)]1to(xp1)
+g7:=left(cx,xp1,2,t150,g(xp1,s,f)):[t:1to(2)]cx
+t151:=issmpr(xp1,f,2,t149):is(smpr(2,f05),smpr(xp1,f))
+t152:=issmpr(xp1,g(xp1,s,f),2,t149):is(smpr(2,g7),smpr(xp1,g(xp1,s,f)))
+t153:=satz280(f05):is(smpr(2,f05),<<xout(2)>f05><<1out(2)>f05>q)
+t154:=satz280(g7):is(smpr(2,g7),<<xout(2)>g7><<1out(2)>g7>q)
+t155:=tris1(nat,inn(2,xout(2)),xp1,2,isinoutn(2,2,lessisi3(2)),t149):is"n"(inn(2,xout(2)),xp1)
+t156:=isoutni(xp1,inn(2,xout(2)),trlessis"n"(inn(2,xout(2)),2,xp1,1top(2,xout(2)),t150),xp1,lessisi3(xp1),t155):is"e"(1to(xp1),left1to(xp1,2,t150,xout(2)),xout(xp1))
+t157:=isf(1to(xp1),1to(xp1),s,left1to(xp1,2,t150,xout(2)),xout(xp1),t156):is"e"(1to(xp1),<xout(2)>s05,<xout(xp1)>s)
+t158:=symis(nat,1,inn(2,1out(2)),isinoutn(2,1,satz24a(2))):is"n"(inn(2,1out(2)),1)
+t159:=isoutni(xp1,inn(2,1out(2)),trlessis"n"(inn(2,1out(2)),2,xp1,1top(2,1out(2)),t150),1,satz24a(xp1),t158):is"e"(1to(xp1),left1to(xp1,2,t150,1out(2)),1out(xp1))
+t160:=tr3is(1to(xp1),left1to(xp1,2,t150,1out(2)),1out(xp1),<b0>s,<xout(xp1)>s,t159,t98,isf(1to(xp1),1to(xp1),s,b0,xout(xp1),gamma)):is"e"(1to(xp1),left1to(xp1,2,t150,1out(2)),<xout(xp1)>s)
+t161:=tris2(1to(xp1),<xout(2)>s05,left1to(xp1,2,t150,1out(2)),<xout(xp1)>s,t157,t160):is"e"(1to(xp1),<xout(2)>s05,left1to(xp1,2,t150,1out(2)))
+t163:=isf(1to(xp1),1to(xp1),s,left1to(xp1,2,t150,1out(2)),1out(xp1),t159):is"e"(1to(xp1),<1out(2)>s05,<1out(xp1)>s)
+t164:=tris(1to(xp1),<1out(2)>s05,<1out(xp1)>s,xout(xp1),t163,i3):is"e"(1to(xp1),<1out(2)>s05,xout(xp1))
+t165:=tris2(1to(xp1),<1out(2)>s05,left1to(xp1,2,t150,xout(2)),xout(xp1),t164,t156):is"e"(1to(xp1),<1out(2)>s05,left1to(xp1,2,t150,xout(2)))
+t166:=isf(1to(xp1),cx,f,<xout(2)>s05,left1to(xp1,2,t150,1out(2)),t161):is(<xout(2)>g7,<1out(2)>f05)
+t167:=isf(1to(xp1),cx,f,<1out(2)>s05,left1to(xp1,2,t150,xout(2)),t165):is(<1out(2)>g7,<xout(2)>f05)
+t168:=isf(cx,cx,<<1out(2)>g7>q,<xout(2)>g7,<1out(2)>f05,t166):is(<<xout(2)>g7><<1out(2)>g7>q,<<1out(2)>f05><<1out(2)>g7>q)
+t169:=comq(c,<1out(2)>g7,<1out(2)>f05):is(<<1out(2)>f05><<1out(2)>g7>q,<<1out(2)>g7><<1out(2)>f05>q)
+t170:=isf(cx,cx,<<1out(2)>f05>q,<1out(2)>g7,<xout(2)>f05,t167):is(<<1out(2)>g7><<1out(2)>f05>q,<<xout(2)>f05><<1out(2)>f05>q)
+t171:=tr4is(cx,smpr(xp1,g(xp1,s,f)),smpr(2,g7),<<xout(2)>g7><<1out(2)>g7>q,<<1out(2)>f05><<1out(2)>g7>q,<<1out(2)>g7><<1out(2)>f05>q,symis(cx,smpr(2,g7),smpr(xp1,g(xp1,s,f)),t152),t154,t168,t169):is(smpr(xp1,g(xp1,s,f)),<<1out(2)>g7><<1out(2)>f05>q)
+t172:=tr4is(cx,smpr(xp1,g(xp1,s,f)),<<1out(2)>g7><<1out(2)>f05>q,<<xout(2)>f05><<1out(2)>f05>q,smpr(2,f05),smpr(xp1,f),t171,t170,symis(cx,smpr(2,f05),<<xout(2)>f05><<1out(2)>f05>q,t153),t151):prop1(xp1,s,f)
+trivial:=t172:prop1(xp1,s,f)
+gamma@[n:nis"n"(x,1)]
+t173:=ore1(more"n"(x,1),is"n"(x,1),satz24(x),n):more"n"(x,1)
+xm1:=mn"n"(x,1,t173):nat
+s4:=changef(1to(xp1),1to(xp1),s,1out(xp1),xout(xp1)):[t:1to(xp1)]1to(xp1)
+t174:=th6"e.wissel"(1to(xp1),1to(xp1),s,1out(xp1),xout(xp1),b):bijective(1to(xp1),1to(xp1),s4)
+t175:=changef2(1to(xp1),1to(xp1),s,1out(xp1),xout(xp1),xout(xp1),refis(1to(xp1),xout(xp1))):is"e"(1to(xp1),<xout(xp1)>s4,<1out(xp1)>s)
+t176:=symis(1to(xp1),a0,xout(xp1),i3):is"e"(1to(xp1),xout(xp1),<1out(xp1)>s)
+t177:=tris2(1to(xp1),<xout(xp1)>s4,xout(xp1),<1out(xp1)>s,t175,t176):is"e"(1to(xp1),<xout(xp1)>s4,xout(xp1))
+t178:=lessisi1"n"(x,xp1,satz18a(x,1)):lessis"n"(x,xp1)
+g8:=left(cx,xp1,x,t178,g(xp1,s,f)):[t:1to(x)]cx
+t179:=satz278(x,g(xp1,s,f)):is(smpr(xp1,g(xp1,s,f)),<<xout(xp1)>g(xp1,s,f)><smpr(x,g8)>q)
+t180:=th1b"n.mn"(x,1,t173):is"n"(pl"n"(1,xm1),x)
+t181:=lessisi2"n"(pl"n"(1,xm1),x,t180):lessis"n"(pl"n"(1,xm1),x)
+g9:=left(cx,x,pl"n"(1,xm1),t181,g8):[t:1to(pl"n"(1,xm1))]cx
+t182:=symis(cx,smpr(pl"n"(1,xm1),g9),smpr(x,g8),issmpr(x,g8,pl"n"(1,xm1),t180)):is(smpr(x,g8),smpr(pl"n"(1,xm1),g9))
+g10:=right(cx,1,xm1,g9):[t:1to(xm1)]cx
+t183:=lessisi1"n"(1,pl"n"(1,xm1),satz18a(1,xm1)):lessis"n"(1,pl"n"(1,xm1))
+g11:=left(cx,pl"n"(1,xm1),1,t183,g9):[t:1to(1)]cx
+t184:=satz281(a,1,xm1,g9):is(smpr(pl"n"(1,xm1),g9),<smpr(xm1,g10)><smpr(1,g11)>q)
+t185:=satz277(g11):is(smpr(1,g11),<xout(1)>g11)
+t186:=isinoutn(1,1,lessisi3(1)):is"n"(1,inn(1,xout(1)))
+1a:=left1to(pl"n"(1,xm1),1,t183,xout(1)):1to(pl"n"(1,xm1))
+t187:=isinoutn(pl"n"(1,xm1),inn(1,xout(1)),trlessis"n"(inn(1,xout(1)),1,pl"n"(1,xm1),1top(1,xout(1)),t183)):is"n"(inn(1,xout(1)),inn(pl"n"(1,xm1),1a))
+1b:=left1to(x,pl"n"(1,xm1),t181,1a):1to(x)
+t188:=isinoutn(x,inn(pl"n"(1,xm1),1a),trlessis"n"(inn(pl"n"(1,xm1),1a),pl"n"(1,xm1),x,1top(pl"n"(1,xm1),1a),t181)):is"n"(inn(pl"n"(1,xm1),1a),inn(x,1b))
+t189:=tr3is(nat,1,inn(1,xout(1)),inn(pl"n"(1,xm1),1a),inn(x,1b),t186,t187,t188):is"n"(1,inn(x,1b))
+1c:=left1to(xp1,x,t178,1b):1to(xp1)
+t190:=isoutni(xp1,1,satz24a(xp1),inn(x,1b),trlessis"n"(inn(x,1b),x,xp1,1top(x,1b),t178),t189):is"e"(1to(xp1),1out(xp1),1c)
+t191:=isf(1to(xp1),cx,g(xp1,s,f),1out(xp1),1c,t190):is(<1out(xp1)>g(xp1,s,f),<xout(1)>g11)
+t192:=tris2(cx,smpr(1,g11),<1out(xp1)>g(xp1,s,f),<xout(1)>g11,t185,t191):is(smpr(1,g11),<1out(xp1)>g(xp1,s,f))
+t193:=symis(1to(xp1),<xout(xp1)>s4,<1out(xp1)>s,t175):is"e"(1to(xp1),<1out(xp1)>s,<xout(xp1)>s4)
+t194:=isf(1to(xp1),cx,f,<1out(xp1)>s,<xout(xp1)>s4,t193):is(<1out(xp1)>g(xp1,s,f),<xout(xp1)>g(xp1,s4,f))
+t195:=tris(cx,smpr(1,g11),<1out(xp1)>g(xp1,s,f),<xout(xp1)>g(xp1,s4,f),t192,t194):is(smpr(1,g11),<xout(xp1)>g(xp1,s4,f))
+t196:=isf(cx,cx,[t:cx]<smpr(xm1,g10)><t>q,smpr(1,g11),<xout(xp1)>g(xp1,s4,f),t195):is(<smpr(xm1,g10)><smpr(1,g11)>q,<smpr(xm1,g10)><<xout(xp1)>g(xp1,s4,f)>q)
+t197:=tr3is(cx,smpr(x,g8),smpr(pl"n"(1,xm1),g9),<smpr(xm1,g10)><smpr(1,g11)>q,<smpr(xm1,g10)><<xout(xp1)>g(xp1,s4,f)>q,t182,t184,t196):is(smpr(x,g8),<smpr(xm1,g10)><<xout(xp1)>g(xp1,s4,f)>q)
+t198:=isf(cx,cx,[t:cx]<<xout(xp1)>g(xp1,s,f)><t>q,smpr(x,g8),<smpr(xm1,g10)><<xout(xp1)>g(xp1,s4,f)>q,t197):is(<<xout(xp1)>g(xp1,s,f)><smpr(x,g8)>q,<<xout(xp1)>g(xp1,s,f)><<smpr(xm1,g10)><<xout(xp1)>g(xp1,s4,f)>q>q)
+t199:=assq1(a,<xout(xp1)>g(xp1,s4,f),smpr(xm1,g10),<xout(xp1)>g(xp1,s,f)):is(<<xout(xp1)>g(xp1,s,f)><<smpr(xm1,g10)><<xout(xp1)>g(xp1,s4,f)>q>q,<<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q><<xout(xp1)>g(xp1,s4,f)>q)
+t200:=comq(c,<xout(xp1)>g(xp1,s4,f),<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q):is(<<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q><<xout(xp1)>g(xp1,s4,f)>q,<<xout(xp1)>g(xp1,s4,f)><<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q>q)
+g12:=left(cx,xp1,x,t178,g(xp1,s4,f)):[t:1to(x)]cx
+g13:=left(cx,x,pl"n"(1,xm1),t181,g12):[t:1to(pl"n"(1,xm1))]cx
+g14:=right(cx,1,xm1,g13):[t:1to(xm1)]cx
+g15:=left(cx,pl"n"(1,xm1),1,lessisi1"n"(1,pl"n"(1,xm1),satz18a(1,xm1)),g13):[t:1to(1)]cx
+t201:=satz278(x,g(xp1,s4,f)):is(smpr(xp1,g(xp1,s4,f)),<<xout(xp1)>g(xp1,s4,f)><smpr(x,g12)>q)
+t202:=symis(cx,smpr(pl"n"(1,xm1),g13),smpr(x,g12),issmpr(x,g12,pl"n"(1,xm1),t180)):is(smpr(x,g12),smpr(pl"n"(1,xm1),g13))
+t203:=satz281(a,1,xm1,g13):is(smpr(pl"n"(1,xm1),g13),<smpr(xm1,g14)><smpr(1,g15)>q)
+t204:=satz277(g15):is(smpr(1,g15),<xout(1)>g15)
+t205:=isf(1to(xp1),cx,g(xp1,s4,f),1out(xp1),1c,t190):is(<1out(xp1)>g(xp1,s4,f),<xout(1)>g15)
+t206:=tris2(cx,smpr(1,g15),<1out(xp1)>g(xp1,s4,f),<xout(1)>g15,t204,t205):is(smpr(1,g15),<1out(xp1)>g(xp1,s4,f))
+t207:=changef1(1to(xp1),1to(xp1),s,1out(xp1),xout(xp1),1out(xp1),refis(1to(xp1),1out(xp1))):is"e"(1to(xp1),<1out(xp1)>s4,<xout(xp1)>s)
+t208:=isf(1to(xp1),cx,f,<1out(xp1)>s4,<xout(xp1)>s,t207):is(<1out(xp1)>g(xp1,s4,f),<xout(xp1)>g(xp1,s,f))
+t209:=tris(cx,smpr(1,g15),<1out(xp1)>g(xp1,s4,f),<xout(xp1)>g(xp1,s,f),t206,t208):is(smpr(1,g15),<xout(xp1)>g(xp1,s,f))
+t210:=isf(cx,cx,[t:cx]<smpr(xm1,g14)><t>q,smpr(1,g15),<xout(xp1)>g(xp1,s,f),t209):is(<smpr(xm1,g14)><smpr(1,g15)>q,<smpr(xm1,g14)><<xout(xp1)>g(xp1,s,f)>q)
+t211:=tr3is(cx,smpr(x,g12),smpr(pl"n"(1,xm1),g13),<smpr(xm1,g14)><smpr(1,g15)>q,<smpr(xm1,g14)><<xout(xp1)>g(xp1,s,f)>q,t202,t203,t210):is(smpr(x,g12),<smpr(xm1,g14)><<xout(xp1)>g(xp1,s,f)>q)
+[u:1to(xm1)]
+ua:=right1to(1,xm1,u):1to(pl"n"(1,xm1))
+ub:=left1to(x,pl"n"(1,xm1),t181,ua):1to(x)
+uc:=left1to(xp1,x,t178,ub):1to(xp1)
+[i:is"e"(1to(xp1),uc,xout(xp1))]
+t212:=isoutne(xp1,inn(x,ub),trlessis"n"(inn(x,ub),x,xp1,1top(x,ub),t178),xp1,lessisi3(xp1),i):is"n"(inn(x,ub),xp1)
+t213:=satz16a(inn(x,ub),x,xp1,1top(x,ub),satz18a(x,1)):less"n"(inn(x,ub),xp1)
+t214:=<t212>ec3e31(is"n"(inn(x,ub),xp1),more"n"(inn(x,ub),xp1),less"n"(inn(x,ub),xp1),satz10b(inn(x,ub),xp1),t213):con
+u@t215:=[t:is"e"(1to(xp1),uc,xout(xp1))]t214(t):not(is"e"(1to(xp1),uc,xout(xp1)))
+[i:is"e"(1to(xp1),uc,1out(xp1))]
+t216:=isoutne(xp1,inn(x,ub),trlessis"n"(inn(x,ub),x,xp1,1top(x,ub),t178),1,satz24a(xp1),i):is"n"(inn(x,ub),1)
+t217:=isinoutn(x,inn(pl"n"(1,xm1),ua),trlessis"n"(inn(pl"n"(1,xm1),ua),pl"n"(1,xm1),x,1top(pl"n"(1,xm1),ua),t181)):is"n"(inn(pl"n"(1,xm1),ua),inn(x,ub))
+t218:=isinoutn(pl"n"(1,xm1),pl"n"(1,inn(xm1,u)),satz19o(inn(xm1,u),xm1,1,1top(xm1,u))):is"n"(pl"n"(1,inn(xm1,u)),inn(pl"n"(1,xm1),ua))
+t219:=tr3is(nat,pl"n"(1,inn(xm1,u)),inn(pl"n"(1,xm1),ua),inn(x,ub),1,t218,t217,t216):is"n"(pl"n"(1,inn(xm1,u)),1)
+t220:=satz18(1,inn(xm1,u)):more"n"(pl"n"(1,inn(xm1,u)),1)
+t221:=<t219>ec3e21(is"n"(pl"n"(1,inn(xm1,u)),1),more"n"(pl"n"(1,inn(xm1,u)),1),less"n"(pl"n"(1,inn(xm1,u)),1),satz10b(pl"n"(1,inn(xm1,u)),1),t220):con
+u@t222:=[t:is"e"(1to(xp1),uc,1out(xp1))]t221(t):not(is"e"(1to(xp1),uc,1out(xp1)))
+t223:=changef3(1to(xp1),1to(xp1),s,1out(xp1),xout(xp1),uc,t222,t215):is"e"(1to(xp1),<uc>s4,<uc>s)
+t224:=isf(1to(xp1),cx,f,<uc>s4,<uc>s,t223):is(<u>g14,<u>g10)
+n@t225:=fisi(1to(xm1),cx,g10,g14,[t:1to(xm1)]symis(cx,<t>g14,<t>g10,t224(t))):is"e"([t:1to(xm1)]cx,g10,g14)
+t226:=isf([t:1to(xm1)]cx,cx,[u:[t:1to(xm1)]cx]smpr(xm1,u),g10,g14,t225):is(smpr(xm1,g10),smpr(xm1,g14))
+t227:=comq(c,smpr(xm1,g10),<xout(xp1)>g(xp1,s,f)):is(<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q,<smpr(xm1,g10)><<xout(xp1)>g(xp1,s,f)>q)
+t228:=isf(cx,cx,<<xout(xp1)>g(xp1,s,f)>q,smpr(xm1,g10),smpr(xm1,g14),t226):is(<smpr(xm1,g10)><<xout(xp1)>g(xp1,s,f)>q,<smpr(xm1,g14)><<xout(xp1)>g(xp1,s,f)>q)
+t229:=tris(cx,<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q,<smpr(xm1,g10)><<xout(xp1)>g(xp1,s,f)>q,<smpr(xm1,g14)><<xout(xp1)>g(xp1,s,f)>q,t227,t228):is(<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q,<smpr(xm1,g14)><<xout(xp1)>g(xp1,s,f)>q)
+t230:=tris2(cx,<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q,smpr(x,g12),<smpr(xm1,g14)><<xout(xp1)>g(xp1,s,f)>q,t229,t211):is(<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q,smpr(x,g12))
+t231:=isf(cx,cx,[t:cx]<<xout(xp1)>g(xp1,s4,f)><t>q,<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q,smpr(x,g12),t230):is(<<xout(xp1)>g(xp1,s4,f)><<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q>q,<<xout(xp1)>g(xp1,s4,f)><smpr(x,g12)>q)
+t232:=symis(cx,smpr(xp1,g(xp1,s4,f)),<<xout(xp1)>g(xp1,s4,f)><smpr(x,g12)>q,t201):is(<<xout(xp1)>g(xp1,s4,f)><smpr(x,g12)>q,smpr(xp1,g(xp1,s4,f)))
+t233:=t46(s4,f,t174,t177):is(smpr(xp1,g(xp1,s4,f)),smpr(xp1,f))
+t234:=tr4is(cx,smpr(xp1,g(xp1,s,f)),<<xout(xp1)>g(xp1,s,f)><smpr(x,g8)>q,<<xout(xp1)>g(xp1,s,f)><<smpr(xm1,g10)><<xout(xp1)>g(xp1,s4,f)>q>q,<<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q><<xout(xp1)>g(xp1,s4,f)>q,<<xout(xp1)>g(xp1,s4,f)><<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q>q,t179,t198,t199,t200):is(smpr(xp1,g(xp1,s,f)),<<xout(xp1)>g(xp1,s4,f)><<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q>q)
+t235:=tr4is(cx,smpr(xp1,g(xp1,s,f)),<<xout(xp1)>g(xp1,s4,f)><<<xout(xp1)>g(xp1,s,f)><smpr(xm1,g10)>q>q,<<xout(xp1)>g(xp1,s4,f)><smpr(x,g12)>q,smpr(xp1,g(xp1,s4,f)),smpr(xp1,f),t234,t231,t232,t233):prop1(xp1,s,f)
+gamma@t236:=th1"l.imp"(is"n"(x,1),prop1(xp1,s,f),[t:is"n"(x,1)]t172(t),[t:not(is"n"(x,1))]t235(t)):prop1(xp1,s,f)
+i3@t237:=th1"l.imp"(is"e"(1to(xp1),b0,xout(xp1)),prop1(xp1,s,f),[t:is"e"(1to(xp1),b0,xout(xp1))]t236(t),[t:not(is"e"(1to(xp1),b0,xout(xp1)))]t148(t)):prop1(xp1,s,f)
+not2@t238:=th1"l.imp"(is"e"(1to(xp1),a0,xout(xp1)),prop1(xp1,s,f),[t:is"e"(1to(xp1),a0,xout(xp1))]t237(t),[t:not(is"e"(1to(xp1),a0,xout(xp1)))]t128(t)):prop1(xp1,s,f)
+not1@t239:=th1"l.imp"(is"e"(1to(xp1),<1out(xp1)>s,1out(xp1)),prop1(xp1,s,f),[t:is"e"(1to(xp1),<1out(xp1)>s,1out(xp1))]t97(t),[t:not(is"e"(1to(xp1),<1out(xp1)>s,1out(xp1)))]t238(t)):prop1(xp1,s,f)
+b@t240:=th1"l.imp"(is"e"(1to(xp1),<xout(xp1)>s,xout(xp1)),prop1(xp1,s,f),[t:is"e"(1to(xp1),<xout(xp1)>s,xout(xp1))]t46(t),[t:not(is"e"(1to(xp1),<xout(xp1)>s,xout(xp1)))]t239(t)):prop1(xp1,s,f)
+p@t241:=[u:[t:1to(xp1)]1to(xp1)][v:[t:1to(xp1)]cx][w:bijective(1to(xp1),1to(xp1),u)]t240(u,v,w):prop2(xp1)
+t242:=isp(nat,[t:nat]prop2(t),xp1,<x>suc,t241,satz4a(x)):prop2(<x>suc)
+x@t243:=induction([t:nat]prop2(t),t6,[t:nat][u:prop2(t)]t242(t,u),x):prop2(x)
+-8283
+satz283:=<b><f><s>t243".8283":is(smpr(x,[t:1to(x)]<<t>s>f),smpr(x,f))
+@[x:real][ix:intrl(x)][y:real][iy:intrl(y)][ly:lessis(y,x)]
+shiftl:=shiftl"r"(x,ix,y,iy,ly):nat
+[n:1to(shiftl)]
+shiftr:=shiftr"r"(x,ix,y,iy,ly,n):real
+intshiftr:=intshiftr"r"(x,ix,y,iy,ly,n):intrl(shiftr)
+shiftrls:=shiftrls"r"(x,ix,y,iy,ly,n):lessis(shiftr,x)
+lsshiftr:=lsshiftr"r"(x,ix,y,iy,ly,n):lessis(y,shiftr)
+[m:1to(shiftl)][i:is"r"(shiftr(n),shiftr(m))]
+iseshiftr:=iseshiftr"r"(x,ix,y,iy,ly,n,m,i):is"e"(1to(shiftl),n,m)
+ly@[u:real][a:and3(intrl(u),lessis(y,u),lessis(u,x))]
+shiftl1:=shiftl1"r"(x,ix,y,iy,ly,u,a):1to(shiftl)
+shiftinv1:=shiftinv1"r"(x,ix,y,iy,ly,u,a):is"r"(u,shiftr(shiftl1))
+shiftinv2:=shiftinv2"r"(x,ix,y,iy,ly,u,a):is"r"(shiftr(shiftl1),u)
+ly@[f:seq(x,ix,y,iy,ly,cx)]
+shiftf:=shiftf(x,ix,y,iy,ly,cx,f):[t:1to(shiftl)]cx
+[q:[t:cx][u:cx]cx]
+smpri:=smpr(q,shiftl,shiftf):cx
+f@[pi:proofsirrelevant(x,ix,y,iy,ly,cx,f)][q:[t:cx][u:cx]cx][a:assoc(q)][u:real][iu:intrl(u)][l:lessis(y,u)][k:less(u,x)][v:real][iv:intrl(v)][lv:lessis(y,v)][kv:lessis(v,u)]
++8284
+t1:=lessisi1(v,x,satz172a(v,u,x,kv,k)):lessis(v,x)
+-8284
+k@lft:=[t:real][v:intrl(t)][lt:lessis(y,t)][kt:lessis(t,u)]<t1".8284"(t,v,lt,kt)><lt><v><t>f:[t:real][v:intrl(t)][lt:lessis(y,t)][kt:lessis(t,u)]cx
+iv@[lv:lessis(pl"r"(u,1rl),v)][kv:lessis(v,x)]
++*8284
+x@[y:real]
+pl:=pl"r"(x,y):real
+mn:=mn"r"(x,y):real
+x@p1:=pl"r"(x,1rl):real
+kv@t2:=satz190c(u,u,0,1rl,lessisi2(u,u,refis(real,u)),lemma1"r"(1rl,0,satz169a(1rl,natpos(1rl,natrl1)))):less(pl(u,0),p1(u))
+t3:=isless1(pl(u,0),u,p1(u),pl02"r"(u,0,refis(real,0)),t2):less(u,p1(u))
+t4:=lessisi1(y,v,satz172b(y,p1(u),v,satz172a(y,u,p1(u),l,t3),lv)):lessis(y,v)
+-8284
+k@rgt:=[t:real][v:intrl(t)][lt:lessis(pl"r"(u,1rl),t)][kt:lessis(t,x)]<kt><t4".8284"(t,v,lt,kt)><v><t>f:[t:real][v:intrl(t)][lt:lessis(pl"r"(u,1rl),t)][kt:lessis(t,x)]cx
++*8284
+k@t5:=intpl(u,iu,1rl,intrl1):intrl(p1(u))
+t6:=satzr25(u,iu,x,ix,k):lessis(p1(u),x)
+t7:=tr3is(real,pl(mn(p1(u),y),mn(p1(x),p1(u))),pl(mn(p1(x),p1(u)),mn(p1(u),y)),mn(pl(mn(p1(x),p1(u)),p1(u)),y),mn(p1(x),y),compl"r"(mn(p1(u),y),mn(p1(x),p1(u))),asspl2"r"(mn(p1(x),p1(u)),p1(u),m0"r"(y)),ismn1"r"(pl(mn(p1(x),p1(u)),p1(u)),p1(x),y,plmn(p1(x),p1(u)))):is"r"(pl(mn(p1(u),y),mn(p1(x),p1(u))),mn(p1(x),y))
+sxy:=shiftl(x,ix,y,iy,ly):nat
+suy:=shiftl(u,iu,y,iy,l):nat
+sxu:=shiftl(x,ix,p1(u),t5,t6):nat
+t8:=tr4is(real,rlofnt(pl"n"(suy,sxu)),pl(rlofnt(suy),rlofnt(sxu)),pl(mn(p1(u),y),mn(p1(x),p1(u))),mn(p1(x),y),rlofnt(sxy),satzr155a(suy,sxu),ispl12"r"(rlofnt(suy),mn(p1(u),y),rlofnt(sxu),mn(p1(x),p1(u)),isrlnt2(mn(p1(u),y),t6"r.shift"(u,iu,y,iy,l)),isrlnt2(mn(p1(x),p1(u)),t6"r.shift"(x,ix,p1(u),t5,t6))),t7,isrlnt1(mn(p1(x),y),t6"r.shift"(x,ix,y,iy,ly))):is"r"(rlofnt(pl"n"(suy,sxu)),rlofnt(sxy))
+t9:=isntirl(pl"n"(suy,sxu),sxy,t8):is"n"(pl"n"(suy,sxu),sxy)
+t10:=lessisi2"n"(pl"n"(suy,sxu),sxy,t9):lessis"n"(pl"n"(suy,sxu),sxy)
+f1:=left(cx,sxy,pl"n"(suy,sxu),t10,shiftf(x,ix,y,iy,ly,f)):[t:1to(pl"n"(suy,sxu))]cx
+t11:=issmpr(q,sxy,shiftf(x,ix,y,iy,ly,f),pl"n"(suy,sxu),t9):is(smpr(q,pl"n"(suy,sxu),f1),smpri(x,ix,y,iy,ly,f,q))
+fr:=right(cx,suy,sxu,f1):[t:1to(sxu)]cx
+t12:=lessisi1"n"(suy,pl"n"(suy,sxu),satz18a(suy,sxu)):lessis"n"(suy,pl"n"(suy,sxu))
+fl:=left(cx,pl"n"(suy,sxu),suy,t12,f1):[t:1to(suy)]cx
+t12a:=satz281(q,a,suy,sxu,f1):is(smpr(q,pl"n"(suy,sxu),f1),<smpr(q,sxu,fr)><smpr(q,suy,fl)>q)
+[n:1to(sxu)]
+t13:=isinoutn(pl"n"(suy,sxu),pl"n"(suy,inn(sxu,n)),satz19o(inn(sxu,n),sxu,suy,1top(sxu,n))):is"n"(pl"n"(suy,inn(sxu,n)),inn(pl"n"(suy,sxu),right1to(suy,sxu,n)))
+t14:=isinoutn(sxy,inn(pl"n"(suy,sxu),right1to(suy,sxu,n)),trlessis"n"(inn(pl"n"(suy,sxu),right1to(suy,sxu,n)),pl"n"(suy,sxu),sxy,1top(pl"n"(suy,sxu),right1to(suy,sxu,n)),t10)):is"n"(inn(pl"n"(suy,sxu),right1to(suy,sxu,n)),inn(sxy,left1to(sxy,pl"n"(suy,sxu),t10,right1to(suy,sxu,n))))
+n1:=left1to(sxy,pl"n"(suy,sxu),t10,right1to(suy,sxu,n)):1to(sxy)
+t15:=tris(nat,pl"n"(suy,inn(sxu,n)),inn(pl"n"(suy,sxu),right1to(suy,sxu,n)),inn(sxy,n1),t13,t14):is"n"(pl"n"(suy,inn(sxu,n)),inn(sxy,n1))
+t16:=isnterl(pl"n"(suy,inn(sxu,n)),inn(sxy,n1),t15):is"r"(rlofnt(pl"n"(suy,inn(sxu,n))),rlofnt(inn(sxy,n1)))
+t17:=satzr155b(suy,inn(sxu,n)):is"r"(pl(rlofnt(suy),rlofnt(inn(sxu,n))),rlofnt(pl"n"(suy,inn(sxu,n))))
+t18:=ispl1"r"(mn(p1(u),y),rlofnt(suy),rlofnt(inn(sxu,n)),isrlnt1(mn(p1(u),y),t6"r.shift"(u,iu,y,iy,l))):is"r"(pl(mn(p1(u),y),rlofnt(inn(sxu,n))),pl(rlofnt(suy),rlofnt(inn(sxu,n))))
+t19:=tr3is(real,pl(mn(p1(u),y),rlofnt(inn(sxu,n))),pl(rlofnt(suy),rlofnt(inn(sxu,n))),rlofnt(pl"n"(suy,inn(sxu,n))),rlofnt(inn(sxy,n1)),t18,t17,t16):is"r"(pl(mn(p1(u),y),rlofnt(inn(sxu,n))),rlofnt(inn(sxy,n1)))
+t20:=ispl1"r"(pl(mn(p1(u),y),rlofnt(inn(sxu,n))),rlofnt(inn(sxy,n1)),y,t19):is"r"(pl(pl(mn(p1(u),y),rlofnt(inn(sxu,n))),y),pl(rlofnt(inn(sxy,n1)),y))
+t21:=tr3is(real,pl(pl(mn(p1(u),y),rlofnt(inn(sxu,n))),y),pl(pl(rlofnt(inn(sxu,n)),mn(p1(u),y)),y),pl(rlofnt(inn(sxu,n)),pl(mn(p1(u),y),y)),pl(rlofnt(inn(sxu,n)),p1(u)),ispl1"r"(pl(mn(p1(u),y),rlofnt(inn(sxu,n))),pl(rlofnt(inn(sxu,n)),mn(p1(u),y)),y,compl"r"(mn(p1(u),y),rlofnt(inn(sxu,n)))),asspl1"r"(rlofnt(inn(sxu,n)),mn(p1(u),y),y),ispl2"r"(pl(mn(p1(u),y),y),p1(u),rlofnt(inn(sxu,n)),plmn(p1(u),y))):is"r"(pl(pl(mn(p1(u),y),rlofnt(inn(sxu,n))),y),pl(rlofnt(inn(sxu,n)),p1(u)))
+t22:=tris1(real,pl(rlofnt(inn(sxy,n1)),y),pl(rlofnt(inn(sxu,n)),p1(u)),pl(pl(mn(p1(u),y),rlofnt(inn(sxu,n))),y),t20,t21):is"r"(pl(rlofnt(inn(sxy,n1)),y),pl(rlofnt(inn(sxu,n)),p1(u)))
+t23:=ismn1"r"(pl(rlofnt(inn(sxy,n1)),y),pl(rlofnt(inn(sxu,n)),p1(u)),1rl,t22):is"r"(shiftr(x,ix,y,iy,ly,n1),shiftr(x,ix,p1(u),t5,t6,n))
+t24:=intshiftr(x,ix,y,iy,ly,n1):intrl(shiftr(x,ix,y,iy,ly,n1))
+t25:=lsshiftr(x,ix,y,iy,ly,n1):lessis(y,shiftr(x,ix,y,iy,ly,n1))
+t26:=shiftrls(x,ix,y,iy,ly,n1):lessis(shiftr(x,ix,y,iy,ly,n1),x)
+t27:=intshiftr(x,ix,p1(u),t5,t6,n):intrl(shiftr(x,ix,p1(u),t5,t6,n))
+t28:=lsshiftr(x,ix,p1(u),t5,t6,n):lessis(p1(u),shiftr(x,ix,p1(u),t5,t6,n))
+t29:=shiftrls(x,ix,p1(u),t5,t6,n):lessis(shiftr(x,ix,p1(u),t5,t6,n),x)
+t30:=t4(shiftr(x,ix,p1(u),t5,t6,n),t27,t28,t29):lessis(y,shiftr(x,ix,p1(u),t5,t6,n))
+t31:=<t23><t29><t30><t27><shiftr(x,ix,p1(u),t5,t6,n)><t26><t25><t24><shiftr(x,ix,y,iy,ly,n1)>pi:is(<n>fr,<n>shiftf(x,ix,p1(u),t5,t6,rgt))
+k@t32:=fisi(1to(sxu),cx,fr,shiftf(x,ix,p1(u),t5,t6,rgt),[t:1to(sxu)]t31(t)):is"e"([t:1to(sxu)]cx,fr,shiftf(x,ix,p1(u),t5,t6,rgt))
+t33:=isf([t:1to(sxu)]cx,cx,[v:[t:1to(sxu)]cx]smpr(q,sxu,v),fr,shiftf(x,ix,p1(u),t5,t6,rgt),t32):is(smpr(q,sxu,fr),smpri(x,ix,p1(u),t5,t6,rgt,q))
+t34:=isf(cx,cx,<smpr(q,suy,fl)>q,smpr(q,sxu,fr),smpri(x,ix,p1(u),t5,t6,rgt,q),t33):is(<smpr(q,sxu,fr)><smpr(q,suy,fl)>q,<smpri(x,ix,p1(u),t5,t6,rgt,q)><smpr(q,suy,fl)>q)
+[n:1to(suy)]
+t35:=isinoutn(pl"n"(suy,sxu),inn(suy,n),trlessis"n"(inn(suy,n),suy,pl"n"(suy,sxu),1top(suy,n),t12)):is"n"(inn(suy,n),inn(pl"n"(suy,sxu),left1to(pl"n"(suy,sxu),suy,t12,n)))
+t36:=isinoutn(sxy,inn(pl"n"(suy,sxu),left1to(pl"n"(suy,sxu),suy,t12,n)),trlessis"n"(inn(pl"n"(suy,sxu),left1to(pl"n"(suy,sxu),suy,t12,n)),pl"n"(suy,sxu),sxy,1top(pl"n"(suy,sxu),left1to(pl"n"(suy,sxu),suy,t12,n)),t10)):is"n"(inn(pl"n"(suy,sxu),left1to(pl"n"(suy,sxu),suy,t12,n)),inn(sxy,left1to(sxy,pl"n"(suy,sxu),t10,left1to(pl"n"(suy,sxu),suy,t12,n))))
+n2:=left1to(sxy,pl"n"(suy,sxu),t10,left1to(pl"n"(suy,sxu),suy,t12,n)):1to(sxy)
+t37:=tris(nat,inn(suy,n),inn(pl"n"(suy,sxu),left1to(pl"n"(suy,sxu),suy,t12,n)),inn(sxy,n2),t35,t36):is"n"(inn(suy,n),inn(sxy,n2))
+t38:=isnterl(inn(suy,n),inn(sxy,n2),t37):is"r"(rlofnt(inn(suy,n)),rlofnt(inn(sxy,n2)))
+t39:=ispl1"r"(rlofnt(inn(suy,n)),rlofnt(inn(sxy,n2)),y,t38):is"r"(pl(rlofnt(inn(suy,n)),y),pl(rlofnt(inn(sxy,n2)),y))
+t40:=ismn1"r"(pl(rlofnt(inn(suy,n)),y),pl(rlofnt(inn(sxy,n2)),y),1rl,t39):is"r"(shiftr(u,iu,y,iy,l,n),shiftr(x,ix,y,iy,ly,n2))
+t41:=intshiftr(u,iu,y,iy,l,n):intrl(shiftr(u,iu,y,iy,l,n))
+t42:=lsshiftr(u,iu,y,iy,l,n):lessis(y,shiftr(u,iu,y,iy,l,n))
+t43:=shiftrls(u,iu,y,iy,l,n):lessis(shiftr(u,iu,y,iy,l,n),u)
+t44:=t1(shiftr(u,iu,y,iy,l,n),t41,t42,t43):lessis(shiftr(u,iu,y,iy,l,n),x)
+t45:=intshiftr(x,ix,y,iy,ly,n2):intrl(shiftr(x,ix,y,iy,ly,n2))
+t46:=lsshiftr(x,ix,y,iy,ly,n2):lessis(y,shiftr(x,ix,y,iy,ly,n2))
+t47:=shiftrls(x,ix,y,iy,ly,n2):lessis(shiftr(x,ix,y,iy,ly,n2),x)
+t48:=<t40><t47><t46><t45><shiftr(x,ix,y,iy,ly,n2)><t44><t42><t41><shiftr(u,iu,y,iy,l,n)>pi:is(<n>shiftf(u,iu,y,iy,l,lft),<n>fl)
+t49:=symis(cx,<n>shiftf(u,iu,y,iy,l,lft),<n>fl,t48):is(<n>fl,<n>shiftf(u,iu,y,iy,l,lft))
+k@t50:=fisi(1to(suy),cx,fl,shiftf(u,iu,y,iy,l,lft),[t:1to(suy)]t49(t)):is"e"([t:1to(suy)]cx,fl,shiftf(u,iu,y,iy,l,lft))
+t51:=isf([t:1to(suy)]cx,cx,[v:[t:1to(suy)]cx]smpr(q,suy,v),fl,shiftf(u,iu,y,iy,l,lft),t50):is(smpr(q,suy,fl),smpri(u,iu,y,iy,l,lft,q))
+t52:=isf(cx,cx,[t:cx]<smpri(x,ix,p1(u),t5,t6,rgt,q)><t>q,smpr(q,suy,fl),smpri(u,iu,y,iy,l,lft,q),t51):is(<smpri(x,ix,p1(u),t5,t6,rgt,q)><smpr(q,suy,fl)>q,<smpri(x,ix,p1(u),t5,t6,rgt,q)><smpri(u,iu,y,iy,l,lft,q)>q)
+t53:=tr3is(cx,smpr(q,pl"n"(suy,sxu),f1),<smpr(q,sxu,fr)><smpr(q,suy,fl)>q,<smpri(x,ix,p1(u),t5,t6,rgt,q)><smpr(q,suy,fl)>q,<smpri(x,ix,p1(u),t5,t6,rgt,q)><smpri(u,iu,y,iy,l,lft,q)>q,t12a,t34,t52):is(smpr(q,pl"n"(suy,sxu),f1),<smpri(x,ix,p1(u),t5,t6,rgt,q)><smpri(u,iu,y,iy,l,lft,q)>q)
+-8284
+k@satz284:=tris1(cx,smpri(x,ix,y,iy,ly,f,q),<smpri(x,ix,pl"r"(u,1rl),intpl(u,iu,1rl,intrl1),satzr25(u,iu,x,ix,k),rgt,q)><smpri(u,iu,y,iy,l,lft,q)>q,smpr(q,pl"n"(suy".8284",sxu".8284"),f1".8284"),t11".8284",t53".8284"):is(smpri(x,ix,y,iy,ly,f,q),<smpri(x,ix,pl"r"(u,1rl),intpl(u,iu,1rl,intrl1),satzr25(u,iu,x,ix,k),rgt,q)><smpri(u,iu,y,iy,l,lft,q)>q)
+q@[v:real][iv:intrl(v)][w:real][iw:intrl(w)][lw:lessis(pl"r"(y,v),w)][kw:lessis(w,pl"r"(x,v))]
++8285
+x@[y:real]
+pl:=pl"r"(x,y):real
+mn:=mn"r"(x,y):real
+x@p1:=pl"r"(x,1rl):real
+kw@t1:=th9"l.or"(less(pl(y,v),w),is"r"(pl(y,v),w),less(mn(pl(y,v),v),mn(w,v)),is"r"(mn(pl(y,v),v),mn(w,v)),lw,[t:less(pl(y,v),w)]satz188f(pl(y,v),w,m0"r"(v),t),[t:is"r"(pl(y,v),w)]ismn1"r"(pl(y,v),w,v,t)):lessis(mn(pl(y,v),v),mn(w,v))
+t2:=islessis1(mn(pl(y,v),v),y,mn(w,v),mnpl(y,v),t1):lessis(y,mn(w,v))
+t3:=th9"l.or"(less(w,pl(x,v)),is"r"(w,pl(x,v)),less(mn(w,v),mn(pl(x,v),v)),is"r"(mn(w,v),mn(pl(x,v),v)),kw,[t:less(w,pl(x,v))]satz188f(w,pl(x,v),m0"r"(v),t),[t:is"r"(w,pl(x,v))]ismn1"r"(w,pl(x,v),v,t)):lessis(mn(w,v),mn(pl(x,v),v))
+t4:=islessis2(mn(pl(x,v),v),x,mn(w,v),mnpl(x,v),t3):lessis(mn(w,v),x)
+-8285
+iv@sft:=[t:real][w:intrl(t)][lt:lessis(pl"r"(y,v),t)][kt:lessis(t,pl"r"(x,v))]<t4".8285"(t,w,lt,kt)><t2".8285"(t,w,lt,kt)><intmn(t,w,v,iv)><mn"r"(t,v)>f:[t:real][w:intrl(t)][lt:lessis(pl"r"(y,v),t)][kt:lessis(t,pl"r"(x,v))]cx
++*8285
+iv@t5:=tris(real,m0"r"(pl(y,v)),m0"r"(pl(v,y)),pl(m0"r"(v),m0"r"(y)),ism0"r"(pl(y,v),pl(v,y),compl"r"(y,v)),satz180(v,y)):is"r"(m0"r"(pl(y,v)),pl(m0"r"(v),m0"r"(y)))
+t6:=tr3is(real,mn(pl(1rl,pl(x,v)),v),pl(1rl,mn(pl(x,v),v)),pl(1rl,x),p1(x),asspl1"r"(1rl,pl(x,v),m0"r"(v)),ispl2"r"(mn(pl(x,v),v),x,1rl,mnpl(x,v)),compl"r"(1rl,x)):is"r"(mn(pl(1rl,pl(x,v)),v),p1(x))
+t7:=tr3is(real,mn(p1(pl(x,v)),pl(y,v)),pl(pl(1rl,pl(x,v)),pl(m0"r"(v),m0"r"(y))),mn(mn(pl(1rl,pl(x,v)),v),y),mn(p1(x),y),ispl12"r"(p1(pl(x,v)),pl(1rl,pl(x,v)),m0"r"(pl(y,v)),pl(m0"r"(v),m0"r"(y)),compl"r"(pl(x,v),1rl),t5),asspl2"r"(pl(1rl,pl(x,v)),m0"r"(v),m0"r"(y)),ismn1"r"(mn(pl(1rl,pl(x,v)),v),p1(x),y,t6)):is"r"(mn(p1(pl(x,v)),pl(y,v)),mn(p1(x),y))
+t8:=th9"l.or"(less(y,x),is"r"(y,x),less(pl(y,v),pl(x,v)),is"r"(pl(y,v),pl(x,v)),ly,[t:less(y,x)]satz188f(y,x,v,t),[t:is"r"(y,x)]ispl1"r"(y,x,v,t)):lessis(pl(y,v),pl(x,v))
+s0:=shiftl(x,ix,y,iy,ly):nat
+sv:=shiftl(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8):nat
+t9:=isrlent(mn(p1(pl(x,v)),pl(y,v)),t6"r.shift"(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8),mn(p1(x),y),t6"r.shift"(x,ix,y,iy,ly),t7):is"n"(sv,s0)
+t10:=lessisi2"n"(sv,s0,t9):lessis"n"(sv,s0)
+f1:=left(cx,s0,sv,t10,shiftf(x,ix,y,iy,ly,f)):[t:1to(sv)]cx
+t11:=issmpr(q,s0,shiftf(x,ix,y,iy,ly,f),sv,t9):is(smpr(q,sv,f1),smpri(x,ix,y,iy,ly,f,q))
+[n:1to(sv)]
+t12:=isinoutn(s0,inn(sv,n),trlessis"n"(inn(sv,n),sv,s0,1top(sv,n),t10)):is"n"(inn(sv,n),inn(s0,left1to(s0,sv,t10,n)))
+n1:=left1to(s0,sv,t10,n):1to(s0)
+t13:=isnterl(inn(sv,n),inn(s0,n1),t12):is"r"(rlofnt(inn(sv,n)),rlofnt(inn(s0,n1)))
+t14:=tris(real,mn(pl(rlofnt(inn(sv,n)),pl(y,v)),v),pl(rlofnt(inn(sv,n)),mn(pl(y,v),v)),pl(rlofnt(inn(s0,n1)),y),asspl1"r"(rlofnt(inn(sv,n)),pl(y,v),m0"r"(v)),ispl12"r"(rlofnt(inn(sv,n)),rlofnt(inn(s0,n1)),mn(pl(y,v),v),y,t13,mnpl(y,v))):is"r"(mn(pl(rlofnt(inn(sv,n)),pl(y,v)),v),pl(rlofnt(inn(s0,n1)),y))
+st0:=shiftr(x,ix,y,iy,ly,n1):real
+stv:=shiftr(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8,n):real
+t15:=tr4is(real,mn(stv,v),pl(pl(rlofnt(inn(sv,n)),pl(y,v)),pl(m0"r"(1rl),m0"r"(v))),pl(pl(rlofnt(inn(sv,n)),pl(y,v)),pl(m0"r"(v),m0"r"(1rl))),mn(mn(pl(rlofnt(inn(sv,n)),pl(y,v)),v),1rl),st0,asspl1"r"(pl(rlofnt(inn(sv,n)),pl(y,v)),m0"r"(1rl),m0"r"(v)),ispl2"r"(pl(m0"r"(1rl),m0"r"(v)),pl(m0"r"(v),m0"r"(1rl)),pl(rlofnt(inn(sv,n)),pl(y,v)),compl"r"(m0"r"(1rl),m0"r"(v))),asspl2"r"(pl(rlofnt(inn(sv,n)),pl(y,v)),m0"r"(v),m0"r"(1rl)),ismn1"r"(mn(pl(rlofnt(inn(sv,n)),pl(y,v)),v),pl(rlofnt(inn(s0,n1)),y),1rl,t14)):is"r"(mn(stv,v),st0)
+t16:=intshiftr(x,ix,y,iy,ly,n1):intrl(st0)
+t17:=shiftrls(x,ix,y,iy,ly,n1):lessis(st0,x)
+t18:=lsshiftr(x,ix,y,iy,ly,n1):lessis(y,st0)
+t19:=intshiftr(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8,n):intrl(stv)
+t20:=shiftrls(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8,n):lessis(stv,pl(x,v))
+t21:=lsshiftr(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8,n):lessis(pl(y,v),stv)
+t22:=intmn(stv,t19,v,iv):intrl(mn(stv,v))
+t23:=t2(stv,t19,t21,t20):lessis(y,mn(stv,v))
+t24:=t4(stv,t19,t21,t20):lessis(mn(stv,v),x)
+t25:=<t15><t17><t18><t16><st0><t24><t23><t22><mn(stv,v)>pi:is(<n>shiftf(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8,sft),<n>f1)
+iv@t26:=fisi(1to(sv),cx,shiftf(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8,sft),f1,[t:1to(sv)]t25(t)):is"e"([t:1to(sv)]cx,shiftf(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8,sft),f1)
+t27:=isf([t:1to(sv)]cx,cx,[w:[t:1to(sv)]cx]smpr(q,sv,w),shiftf(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8,sft),f1,t26):is(smpri(pl(x,v),intpl(x,ix,v,iv),pl(y,v),intpl(y,iy,v,iv),t8,sft,q),smpr(q,sv,f1))
+-8285
+iv@lemma285:=t8".8285":lessis(pl"r"(y,v),pl"r"(x,v))
+satz285:=tris(cx,smpri(pl"r"(x,v),intpl(x,ix,v,iv),pl"r"(y,v),intpl(y,iy,v,iv),lemma285,sft,q),smpr(q,sv".8285",f1".8285"),smpri(x,ix,y,iy,ly,f,q),t27".8285",t11".8285"):is(smpri(pl"r"(x,v),intpl(x,ix,v,iv),pl"r"(y,v),intpl(y,iy,v,iv),lemma285,sft,q),smpri(x,ix,y,iy,ly,f,q))
+ly@[s:seq(x,ix,y,iy,ly,real)][ins:inseq(x,ix,y,iy,ly,s)][f:seq(x,ix,y,iy,ly,cx)][u:real][iu:intrl(u)][lu:lessis(y,u)][ul:lessis(u,x)]
+us:=<ul><lu><iu><u>s:real
++8286
+t1:=<ul><lu><iu><u>ins:and3(intrl(us),lessis(y,us),lessis(us,x))
+-8286
+inseqe1:=t22"r.shift"(x,ix,y,iy,ly,us,t1".8286"):intrl(us)
+inseqe2:=t23"r.shift"(x,ix,y,iy,ly,us,t1".8286"):lessis(y,us)
+inseqe3:=t24"r.shift"(x,ix,y,iy,ly,us,t1".8286"):lessis(us,x)
+usf:=<inseqe3><inseqe2><inseqe1><us>f:cx
+f@permseq:=[t:real][u:intrl(t)][v:lessis(y,t)][w:lessis(t,x)]usf(t,u,v,w):[t:real][u:intrl(t)][v:lessis(y,t)][w:lessis(t,x)]cx
+q@[a:assoc(q)][c:commut(q)][s:seq(x,ix,y,iy,ly,real)][ins:inseq(x,ix,y,iy,ly,s)][pri:proofsirrelevant(x,ix,y,iy,ly,real,s)][ps:perm(x,ix,y,iy,ly,s)]
++*8286
+ps@ss:=shiftseq(x,ix,y,iy,ly,s,ins):[t:1to(shiftl)]1to(shiftl)
+t2:=satz283(q,a,c,shiftl,ss,bijshiftseq(x,ix,y,iy,ly,s,ins,pri,ps),shiftf(f)):is(smpr(q,shiftl,[t:1to(shiftl)]<<t>ss>shiftf(f)),smpri(f,q))
+[n:1to(shiftl)]
+ns:=us(s,ins,f,shiftr(n),intshiftr(n),lsshiftr(n),shiftrls(n)):real
+t3:=shiftinv1(ns,t34"r.shift"(x,ix,y,iy,ly,s,ins,n)):is"r"(ns,shiftr(<n>ss))
+t4:=inseqe1(s,ins,f,shiftr(n),intshiftr(n),lsshiftr(n),shiftrls(n)):intrl(ns)
+t5:=inseqe2(s,ins,f,shiftr(n),intshiftr(n),lsshiftr(n),shiftrls(n)):lessis(y,ns)
+t6:=inseqe3(s,ins,f,shiftr(n),intshiftr(n),lsshiftr(n),shiftrls(n)):lessis(ns,x)
+t7:=intshiftr(<n>ss):intrl(shiftr(<n>ss))
+t8:=lsshiftr(<n>ss):lessis(y,shiftr(<n>ss))
+t9:=shiftrls(<n>ss):lessis(shiftr(<n>ss),x)
+t10:=<t3><t9><t8><t7><shiftr(<n>ss)><t6><t5><t4><ns>pi:is(<n>shiftf(permseq(s,ins,f)),<<n>ss>shiftf(f))
+ps@t11:=fisi(1to(shiftl),cx,shiftf(permseq(s,ins,f)),[t:1to(shiftl)]<<t>ss>shiftf(f),[t:1to(shiftl)]t10(t)):is"e"([t:1to(shiftl)]cx,shiftf(permseq(s,ins,f)),[t:1to(shiftl)]<<t>ss>shiftf(f))
+t12:=isf([t:1to(shiftl)]cx,cx,[u:[t:1to(shiftl)]cx]smpr(q,shiftl,u),shiftf(permseq(s,ins,f)),[t:1to(shiftl)]<<t>ss>shiftf(f),t11):is(smpri(permseq(s,ins,f),q),smpr(q,shiftl,[t:1to(shiftl)]<<t>ss>shiftf(f)))
+-8286
+ps@satz286:=tris(cx,smpri(permseq(s,ins,f),q),smpr(q,shiftl,[t:1to(shiftl)]<<t>ss".8286">shiftf(f)),smpri(f,q),t12".8286",t2".8286"):is(smpri(permseq(s,ins,f),q),smpri(f,q))
+@[x:nat][f:[t:1to(x)]cx]
+modf:=[t:1to(x)]pli(mod(<t>f),0):[t:1to(x)]cx
++8287
+[r:real]
+prop1:=lessis(mod(sum(x,f)),r):'prop'
+prop2:=is(sum(x,modf(f)),pli(r,0)):'prop'
+prop3:=and(prop1,prop2):'prop'
+f@prop4:=some"r"([t:real]prop3(t)):'prop'
+x@prop5:=[u:[t:1to(x)]cx]prop4(u):'prop'
+@[f:[t:1to(1)]cx]
+t1:=satz277([t:cx][u:cx]pl(t,u),f):is(sum(1,f),<xout(1)>f)
+t2:=ismod(sum(1,f),<xout(1)>f,t1):is"r"(mod(sum(1,f)),mod(<xout(1)>f))
+t3:=lessisi2(mod(sum(1,f)),mod(<xout(1)>f),t2):prop1(1,f,mod(<xout(1)>f))
+t4:=satz277([t:cx][u:cx]pl(t,u),modf(1,f)):prop2(1,f,mod(<xout(1)>f))
+t5:=andi(prop1(1,f,mod(<xout(1)>f)),prop2(1,f,mod(<xout(1)>f)),t3,t4):prop3(1,f,mod(<xout(1)>f))
+t6:=somei(real,[t:real]prop3(1,f,t),mod(<xout(1)>f),t5):prop4(1,f)
+@t7:=[u:[t:1to(1)]cx]t6(u):prop5(1)
+x@[p:prop5(x)][f:[t:1to(pl"n"(x,1))]cx]
+t8:=lessisi1"n"(x,pl"n"(x,1),satz18a(x,1)):lessis"n"(x,pl"n"(x,1))
+lf:=left(cx,pl"n"(x,1),x,t8,f):[t:1to(x)]cx
+[r:real][pr:prop3(lf,r)]
+t9:=ande1(prop1(lf,r),prop2(lf,r),pr):prop1(lf,r)
+t10:=ande2(prop1(lf,r),prop2(lf,r),pr):prop2(lf,r)
+t11:=satz278([t:cx][u:cx]pl(t,u),x,f):is(sum(pl"n"(x,1),f),pl(sum(x,lf),<xout(pl"n"(x,1))>f))
+t12:=ismod(pl(sum(x,lf),<xout(pl"n"(x,1))>f),sum(pl"n"(x,1),f),symis(cx,sum(pl"n"(x,1),f),pl(sum(x,lf),<xout(pl"n"(x,1))>f),t11)):is"r"(mod(pl(sum(x,lf),<xout(pl"n"(x,1))>f)),mod(sum(pl"n"(x,1),f)))
+m:=mod(<xout(pl"n"(x,1))>f):real
+t13:=islessis1(mod(pl(sum(x,lf),<xout(pl"n"(x,1))>f)),mod(sum(pl"n"(x,1),f)),pl"r"(mod(sum(x,lf)),m),t12,satz271(sum(x,lf),<xout(pl"n"(x,1))>f)):lessis(mod(sum(pl"n"(x,1),f)),pl"r"(mod(sum(x,lf)),m))
+t14:=th9"l.or"(less(mod(sum(x,lf)),r),is"r"(mod(sum(x,lf)),r),less(pl"r"(mod(sum(x,lf)),m),pl"r"(r,m)),is"r"(pl"r"(mod(sum(x,lf)),m),pl"r"(r,m)),t9,[t:less(mod(sum(x,lf)),r)]satz188f(mod(sum(x,lf)),r,m,t),[t:is"r"(mod(sum(x,lf)),r)]ispl1"r"(mod(sum(x,lf)),r,m,t)):lessis(pl"r"(mod(sum(x,lf)),m),pl"r"(r,m))
+t15:=trlessis(mod(sum(pl"n"(x,1),f)),pl"r"(mod(sum(x,lf)),m),pl"r"(r,m),t13,t14):prop1(pl"n"(x,1),f,pl"r"(r,m))
+lmf:=left(cx,pl"n"(x,1),x,t8,modf(pl"n"(x,1),f)):[t:1to(x)]cx
+t16:=satz278([t:cx][u:cx]pl(t,u),x,modf(pl"n"(x,1),f)):is(sum(pl"n"(x,1),modf(pl"n"(x,1),f)),pl(sum(x,lmf),pli(m,0)))
+t17:=ispl1(sum(x,lmf),pli(r,0),pli(m,0),t10):is(pl(sum(x,lmf),pli(m,0)),pl(pli(r,0),pli(m,0)))
+t18:=plis12a(r,0,m,0):is(pl(pli(r,0),pli(m,0)),pli(pl"r"(r,m),pl"r"(0,0)))
+t19:=isrecx2(pl"r"(0,0),0,pl"r"(r,m),pl01"r"(0,0,refis(real,0))):is(pli(pl"r"(r,m),pl"r"(0,0)),pli(pl"r"(r,m),0))
+t20:=tr4is(cx,sum(pl"n"(x,1),modf(pl"n"(x,1),f)),pl(sum(x,lmf),pli(m,0)),pl(pli(r,0),pli(m,0)),pli(pl"r"(r,m),pl"r"(0,0)),pli(pl"r"(r,m),0),t16,t17,t18,t19):prop2(pl"n"(x,1),f,pl"r"(r,m))
+t21:=andi(prop1(pl"n"(x,1),f,pl"r"(r,m)),prop2(pl"n"(x,1),f,pl"r"(r,m)),t15,t20):prop3(pl"n"(x,1),f,pl"r"(r,m))
+t22:=somei(real,[t:real]prop3(pl"n"(x,1),f,t),pl"r"(r,m),t21):prop4(pl"n"(x,1),f)
+f@t23:=someapp(real,[t:real]prop3(lf,t),<lf>p,prop4(pl"n"(x,1),f),[t:real][u:prop3(lf,t)]t22(t,u)):prop4(pl"n"(x,1),f)
+p@t25:=[u:[t:1to(pl"n"(x,1))]cx]t23(u):prop5(pl"n"(x,1))
+t26:=isp(nat,[t:nat]prop5(t),pl"n"(x,1),<x>suc,t25,satz4a(x)):prop5(<x>suc)
+-8287
+satz287:=<f>induction([t:nat]prop5".8287"(t),t7".8287",[t:nat][u:prop5".8287"(t)]t26".8287"(t,u),x):some"r"([t:real]and(lessis(mod(sum(x,f)),t),is(sum(x,modf(f)),pli(t,0))))
++8288
+prop1:=is(pli(mod(prod(x,f)),0),prod(x,modf(f))):'prop'
+x@prop2:=[u:[t:1to(x)]cx]prop1(u):'prop'
+@[f:[t:1to(1)]cx]
+t1:=satz277([t:cx][u:cx]ts(t,u),f):is(prod(1,f),<xout(1)>f)
+t2:=ismod(prod(1,f),<xout(1)>f,t1):is"r"(mod(prod(1,f)),mod(<xout(1)>f))
+t3:=isrecx1(mod(prod(1,f)),mod(<xout(1)>f),0,t2):is(pli(mod(prod(1,f)),0),pli(mod(<xout(1)>f),0))
+t4:=satz277([t:cx][u:cx]ts(t,u),modf(1,f)):is(prod(1,modf(1,f)),pli(mod(<xout(1)>f),0))
+t5:=tris2(cx,pli(mod(prod(1,f)),0),prod(1,modf(1,f)),pli(mod(<xout(1)>f),0),t3,t4):prop1(1,f)
+@t6:=[u:[t:1to(1)]cx]t5(u):prop2(1)
+x@[p:prop2(x)][f:[t:1to(pl"n"(x,1))]cx]
+t7:=lessisi1"n"(x,pl"n"(x,1),satz18a(x,1)):lessis"n"(x,pl"n"(x,1))
+lf:=left(cx,pl"n"(x,1),x,t7,f):[t:1to(x)]cx
+t8:=satz278([t:cx][u:cx]ts(t,u),x,f):is(prod(pl"n"(x,1),f),ts(prod(x,lf),<xout(pl"n"(x,1))>f))
+m:=mod(<xout(pl"n"(x,1))>f):real
+t9:=ismod(prod(pl"n"(x,1),f),ts(prod(x,lf),<xout(pl"n"(x,1))>f),t8):is"r"(mod(prod(pl"n"(x,1),f)),mod(ts(prod(x,lf),<xout(pl"n"(x,1))>f)))
+t10:=satz268(prod(x,lf),<xout(pl"n"(x,1))>f):is"r"(mod(ts(prod(x,lf),<xout(pl"n"(x,1))>f)),ts"r"(mod(prod(x,lf)),m))
+t11:=tris(real,mod(prod(pl"n"(x,1),f)),mod(ts(prod(x,lf),<xout(pl"n"(x,1))>f)),ts"r"(mod(prod(x,lf)),m),t9,t10):is"r"(mod(prod(pl"n"(x,1),f)),ts"r"(mod(prod(x,lf)),m))
+t12:=isrecx1(mod(prod(pl"n"(x,1),f)),ts"r"(mod(prod(x,lf)),m),0,t11):is(pli(mod(prod(pl"n"(x,1),f)),0),pli(ts"r"(mod(prod(x,lf)),m),0))
+lmf:=left(cx,pl"n"(x,1),x,t7,modf(pl"n"(x,1),f)):[t:1to(x)]cx
+t13:=satz278([t:cx][u:cx]ts(t,u),x,modf(pl"n"(x,1),f)):is(prod(pl"n"(x,1),modf(pl"n"(x,1),f)),ts(prod(x,lmf),pli(m,0)))
+t14:=symis(cx,pli(mod(prod(x,lf)),0),prod(x,lmf),<lf>p):is(prod(x,lmf),pli(mod(prod(x,lf)),0))
+t15:=ists1(prod(x,lmf),pli(mod(prod(x,lf)),0),pli(m,0),t14):is(ts(prod(x,lmf),pli(m,0)),ts(pli(mod(prod(x,lf)),0),pli(m,0)))
+t16:=tsis12a(mod(prod(x,lf)),0,m,0):is(ts(pli(mod(prod(x,lf)),0),pli(m,0)),pli(mn"r"(ts"r"(mod(prod(x,lf)),m),ts"r"(0,0)),pl"r"(ts"r"(mod(prod(x,lf)),0),ts"r"(0,m))))
+t17:=tris(real,mn"r"(ts"r"(mod(prod(x,lf)),m),ts"r"(0,0)),mn"r"(ts"r"(mod(prod(x,lf)),m),0),ts"r"(mod(prod(x,lf)),m),ismn2"r"(ts"r"(0,0),0,ts"r"(mod(prod(x,lf)),m),ts01"r"(0,0,refis(real,0))),pl02"r"(ts"r"(mod(prod(x,lf)),m),m0"r"(0),satz176b(0,refis(real,0)))):is"r"(mn"r"(ts"r"(mod(prod(x,lf)),m),ts"r"(0,0)),ts"r"(mod(prod(x,lf)),m))
+t18:=tris(real,pl"r"(ts"r"(mod(prod(x,lf)),0),ts"r"(0,m)),pl"r"(0,0),0,ispl12"r"(ts"r"(mod(prod(x,lf)),0),0,ts"r"(0,m),0,ts02"r"(mod(prod(x,lf)),0,refis(real,0)),ts01"r"(0,m,refis(real,0))),pl01"r"(0,0,refis(real,0))):is"r"(pl"r"(ts"r"(mod(prod(x,lf)),0),ts"r"(0,m)),0)
+t19:=isrecx12(mn"r"(ts"r"(mod(prod(x,lf)),m),ts"r"(0,0)),ts"r"(mod(prod(x,lf)),m),pl"r"(ts"r"(mod(prod(x,lf)),0),ts"r"(0,m)),0,t17,t18):is(pli(mn"r"(ts"r"(mod(prod(x,lf)),m),ts"r"(0,0)),pl"r"(ts"r"(mod(prod(x,lf)),0),ts"r"(0,m))),pli(ts"r"(mod(prod(x,lf)),m),0))
+t20:=tr4is(cx,prod(pl"n"(x,1),modf(pl"n"(x,1),f)),ts(prod(x,lmf),pli(m,0)),ts(pli(mod(prod(x,lf)),0),pli(m,0)),pli(mn"r"(ts"r"(mod(prod(x,lf)),m),ts"r"(0,0)),pl"r"(ts"r"(mod(prod(x,lf)),0),ts"r"(0,m))),pli(ts"r"(mod(prod(x,lf)),m),0),t13,t15,t16,t19):is(prod(pl"n"(x,1),modf(pl"n"(x,1),f)),pli(ts"r"(mod(prod(x,lf)),m),0))
+t21:=tris2(cx,pli(mod(prod(pl"n"(x,1),f)),0),prod(pl"n"(x,1),modf(pl"n"(x,1),f)),pli(ts"r"(mod(prod(x,lf)),m),0),t12,t20):prop1(pl"n"(x,1),f)
+p@t21a:=[u:[t:1to(pl"n"(x,1))]cx]t21(u):prop2(pl"n"(x,1))
+t22:=isp(nat,[t:nat]prop2(t),pl"n"(x,1),<x>suc,t21a,satz4a(x)):prop2(<x>suc)
+-8288
+satz288:=<f>induction([t:nat]prop2".8288"(t),t6".8288",[t:nat][u:prop2".8288"(t)]t22".8288"(t,u),x):is(pli(mod(prod(x,f)),0),prod(x,modf(f)))
++8289
+prop1:=is(prod(x,f),0c):'prop'
+prop2:=some"l"(1to(x),[t:1to(x)]is(<t>f,0c)):'prop'
+prop3:=iff(prop1,prop2):'prop'
+x@prop4:=[u:[t:1to(x)]cx]prop3(u):'prop'
+@[f:[t:1to(1)]cx]
+t1:=satz277([t:cx][u:cx]ts(t,u),f):is(prod(1,f),<xout(1)>f)
+[p:prop1(1,f)]
+t2:=tris1(cx,<xout(1)>f,0c,prod(1,f),t1,p):is(<xout(1)>f,0c)
+t3:=somei(1to(1),[t:1to(1)]is(<t>f,0c),xout(1),t2):prop2(1,f)
+f@[p:prop2(1,f)][u:1to(1)][i:is(<u>f,0c)]
+t4:=th1"n.singlet"(u):is"e"(1to(1),u,xout(1))
+t5:=tr3is(cx,prod(1,f),<xout(1)>f,<u>f,0c,t1,isf(1to(1),cx,f,xout(1),u,symis(1to(1),u,xout(1),t4)),i):prop1(1,f)
+p@t6:=someapp(1to(1),[t:1to(1)]is(<t>f,0c),p,prop1(1,f),[t:1to(1)][u:is(<t>f,0c)]t5(t,u)):prop1(1,f)
+f@t7:=iffi(prop1(1,f),prop2(1,f),[t:prop1(1,f)]t3(t),[t:prop2(1,f)]t6(t)):prop3(1,f)
+@t8:=[u:[t:1to(1)]cx]t7(u):prop4(1)
+x@[p:prop4(x)][f:[t:1to(pl"n"(x,1))]cx]
+t9:=lessisi1"n"(x,pl"n"(x,1),satz18a(x,1)):lessis"n"(x,pl"n"(x,1))
+lf:=left(cx,pl"n"(x,1),x,t9,f):[t:1to(x)]cx
+t10:=satz278([t:cx][u:cx]ts(t,u),x,f):is(prod(pl"n"(x,1),f),ts(prod(x,lf),<xout(pl"n"(x,1))>f))
+[q:prop1(pl"n"(x,1),f)]
+t11:=tris1(cx,ts(prod(x,lf),<xout(pl"n"(x,1))>f),0c,prod(pl"n"(x,1),f),t10,q):is(ts(prod(x,lf),<xout(pl"n"(x,1))>f),0c)
+t12:=satz221c(prod(x,lf),<xout(pl"n"(x,1))>f,t11):or(is(prod(x,lf),0c),is(<xout(pl"n"(x,1))>f,0c))
+[i:is(prod(x,lf),0c)]
+t13:=th3"l.iff"(prop1(x,lf),prop2(x,lf),<lf>p,i):prop2(x,lf)
+[n:1to(x)][j:is(<n>lf,0c)]
+t14:=somei(1to(pl"n"(x,1)),[t:1to(pl"n"(x,1))]is(<t>f,0c),left1to(pl"n"(x,1),x,t9,n),j):prop2(pl"n"(x,1),f)
+i@t15:=someapp(1to(x),[t:1to(x)]is(<t>lf,0c),t13,prop2(pl"n"(x,1),f),[t:1to(x)][u:is(<t>lf,0c)]t14(t,u)):prop2(pl"n"(x,1),f)
+q@[i:is(<xout(pl"n"(x,1))>f,0c)]
+t16:=somei(1to(pl"n"(x,1)),[t:1to(pl"n"(x,1))]is(<t>f,0c),xout(pl"n"(x,1)),i):prop2(pl"n"(x,1),f)
+q@t17:=orapp(is(prod(x,lf),0c),is(<xout(pl"n"(x,1))>f,0c),prop2(pl"n"(x,1),f),t12,[t:is(prod(x,lf),0c)]t15(t),[t:is(<xout(pl"n"(x,1))>f,0c)]t16(t)):prop2(pl"n"(x,1),f)
+f@[q:prop2(pl"n"(x,1),f)][n:1to(pl"n"(x,1))][i:is(<n>f,0c)][j:is"e"(1to(pl"n"(x,1)),n,xout(pl"n"(x,1)))]
+t18:=tris1(cx,<xout(pl"n"(x,1))>f,0c,<n>f,isf(1to(pl"n"(x,1)),cx,f,n,xout(pl"n"(x,1)),j),i):is(<xout(pl"n"(x,1))>f,0c)
+t20:=satz221b(prod(x,lf),<xout(pl"n"(x,1))>f,t18):is(ts(prod(x,lf),<xout(pl"n"(x,1))>f),0c)
+i@[m:not(is"e"(1to(pl"n"(x,1)),n,xout(pl"n"(x,1))))]
+n1:=inn(pl"n"(x,1),n):nat
+[j:is"n"(n1,pl"n"(x,1))]
+t21:=isoutni(pl"n"(x,1),n1,1top(pl"n"(x,1),n),pl"n"(x,1),lessisi3(pl"n"(x,1)),j):is"e"(1to(pl"n"(x,1)),outn(pl"n"(x,1),n1,1top(pl"n"(x,1),n)),xout(pl"n"(x,1)))
+t22:=tris(1to(pl"n"(x,1)),n,outn(pl"n"(x,1),n1,1top(pl"n"(x,1),n)),xout(pl"n"(x,1)),isoutinn(pl"n"(x,1),n),t21):is"e"(1to(pl"n"(x,1)),n,xout(pl"n"(x,1)))
+m@t23:=th3"l.imp"(is"n"(n1,pl"n"(x,1)),is"e"(1to(pl"n"(x,1)),n,xout(pl"n"(x,1))),m,[t:is"n"(n1,pl"n"(x,1))]t22(t)):nis"n"(n1,pl"n"(x,1))
+t24:=ore1(less"n"(n1,pl"n"(x,1)),is"n"(n1,pl"n"(x,1)),1top(pl"n"(x,1),n),t23):less"n"(n1,pl"n"(x,1))
+t25:=satz26(x,n1,t24):lessis"n"(n1,x)
+n2:=outn(x,n1,t25):1to(x)
+t26:=isinoutn(x,n1,t25):is"n"(n1,inn(x,n2))
+t27:=isoutni(pl"n"(x,1),n1,1top(pl"n"(x,1),n),inn(x,n2),trlessis"n"(inn(x,n2),x,pl"n"(x,1),1top(x,n2),t9),t26):is"e"(1to(pl"n"(x,1)),outn(pl"n"(x,1),n1,1top(pl"n"(x,1),n)),left1to(pl"n"(x,1),x,t9,n2))
+t28:=tris(1to(pl"n"(x,1)),n,outn(pl"n"(x,1),n1,1top(pl"n"(x,1),n)),left1to(pl"n"(x,1),x,t9,n2),isoutinn(pl"n"(x,1),n),t27):is"e"(1to(pl"n"(x,1)),n,left1to(pl"n"(x,1),x,t9,n2))
+t29:=isf(1to(pl"n"(x,1)),cx,f,n,left1to(pl"n"(x,1),x,t9,n2),t28):is(<n>f,<n2>lf)
+t30:=tris1(cx,<n2>lf,0c,<n>f,t29,i):is(<n2>lf,0c)
+t31:=somei(1to(x),[t:1to(x)]is(<t>lf,0c),n2,t30):prop2(x,lf)
+t32:=th4"l.iff"(prop1(x,lf),prop2(x,lf),<lf>p,t31):prop1(x,lf)
+t34:=satz221a(prod(x,lf),<xout(pl"n"(x,1))>f,t32):is(ts(prod(x,lf),<xout(pl"n"(x,1))>f),0c)
+i@t35:=th1"l.imp"(is"e"(1to(pl"n"(x,1)),n,xout(pl"n"(x,1))),is(ts(prod(x,lf),<xout(pl"n"(x,1))>f),0c),[t:is"e"(1to(pl"n"(x,1)),n,xout(pl"n"(x,1)))]t20(t),[t:not(is"e"(1to(pl"n"(x,1)),n,xout(pl"n"(x,1))))]t34(t)):is(ts(prod(x,lf),<xout(pl"n"(x,1))>f),0c)
+t36:=tris(cx,prod(pl"n"(x,1),f),ts(prod(x,lf),<xout(pl"n"(x,1))>f),0c,t10,t35):prop1(pl"n"(x,1),f)
+q@t37:=someapp(1to(pl"n"(x,1)),[t:1to(pl"n"(x,1))]is(<t>f,0c),q,prop1(pl"n"(x,1),f),[t:1to(pl"n"(x,1))][u:is(<t>f,0c)]t36(t,u)):prop1(pl"n"(x,1),f)
+f@t38:=iffi(prop1(pl"n"(x,1),f),prop2(pl"n"(x,1),f),[t:prop1(pl"n"(x,1),f)]t17(t),[t:prop2(pl"n"(x,1),f)]t37(t)):prop3(pl"n"(x,1),f)
+p@t39:=[u:[t:1to(pl"n"(x,1))]cx]t38(u):prop4(pl"n"(x,1))
+t40:=isp(nat,[t:nat]prop4(t),pl"n"(x,1),<x>suc,t39,satz4a(x)):prop4(<x>suc)
+-8289
+satz289:=<f>induction([t:nat]prop4".8289"(t),t8".8289",[t:nat][u:prop4".8289"(t)]t40".8289"(t,u),x):iff(is(prod(x,f),0c),some"l"(1to(x),[t:1to(x)]is(<t>f,0c)))
+[i:is(prod(x,f),0c)]
+satz289a:=th3"l.iff"(prop1".8289",prop2".8289",satz289,i):some"l"(1to(x),[t:1to(x)]is(<t>f,0c))
+f@[n:1to(x)][i:is(<n>f,0c)]
++*8289
+i"c"@t41:=somei(1to(x),[t:1to(x)]is(<t>f,0c),n,i):prop2
+-8289
+i@satz289b:=th4"l.iff"(prop1".8289",prop2".8289",satz289,t41".8289"):is(prod(x,f),0c)
+@[x:complex][m:real][mi:intrl(m)][o:or(nis(x,0c),pos(m))]
++v9
+[p:pos(m)]
+t1:=posintnatrl(m,p,mi):natrl(m)
+m1:=ntofrl(m,t1):nat
+pw1:=prod(m1,[t:1to(m1)]x):cx
+-v9
+x@[y:complex][m:real][n:real][i:is(x,y)][j:is"r"(m,n)][mi1:intrl(m)][ni1:intrl(n)][ox:or(nis(x,0c),pos(m))][oy:or(nis(y,0c),pos(n))]
++*v9
+oy@[mp:pos(m)][np:pos(n)]
+m0:=m1(x,m,mi1,ox,mp):nat
+n0:=m1(y,n,ni1,oy,np):nat
+t2:=isrlent(m,t1(x,m,mi1,ox,mp),n,t1(y,n,ni1,oy,np),j):is"n"(m0,n0)
+t3:=lessisi2"n"(m0,n0,t2):lessis"n"(m0,n0)
+t4:=issmpr([t:cx][u:cx]ts(t,u),n0,[t:1to(n0)]y,m0,t2):is(prod(m0,left(cx,n0,m0,t3,[t:1to(n0)]y)),pw1(y,n,ni1,oy,np))
+t5:=fisi(1to(m0),cx,[t:1to(m0)]x,left(cx,n0,m0,t3,[t:1to(n0)]y),[t:1to(m0)]i):is"e"([t:1to(m0)]cx,[t:1to(m0)]x,left(cx,n0,m0,t3,[t:1to(n0)]y))
+t6:=isf([t:1to(m0)]cx,cx,[u:[t:1to(m0)]cx]prod(m0,u),[t:1to(m0)]x,left(cx,n0,m0,t3,[t:1to(n0)]y),t5):is(pw1(x,m,mi1,ox,mp),prod(m0,left(cx,n0,m0,t3,[t:1to(n0)]y)))
+t7:=tris(cx,pw1(x,m,mi1,ox,mp),prod(m0,left(cx,n0,m0,t3,[t:1to(n0)]y)),pw1(y,n,ni1,oy,np),t6,t4):is(pw1(x,m,mi1,ox,mp),pw1(y,n,ni1,oy,np))
+p@[p1:pos(m)]
+t8:=t7(x,x,m,m,refis(cx,x),refis(real,m),mi,mi,o,o,p,p1):is(pw1(p),pw1(p1))
+p@[n:nis(x,0c)]
+t9:=th5"l.some"(1to(m1),[t:1to(m1)]is(<t>[u:1to(m1)]x,0c),[t:1to(m1)]n):not(some"l"(1to(m1),[t:1to(m1)]is(<t>[u:1to(m1)]x,0c)))
+t10:=th3"l.imp"(is(pw1,0c),some"l"(1to(m1),[t:1to(m1)]is(<t>[u:1to(m1)]x,0c)),t9,[t:is(pw1,0c)]satz289a(m1,[u:1to(m1)]x,t)):nis(pw1,0c)
+o@[n:neg(m)]
+mi@t11:=intabs(m,mi):intrl(abs(m))
+n@t12:=satz166b(m,n):pos(abs(m))
+t13:=ori2(nis(x,0c),pos(abs(m)),t12):or(nis(x,0c),pos(abs(m)))
+t14:=ore1(nis(x,0c),pos(m),o,nnotp(m,n)):nis(x,0c)
+t15:=t10(abs(m),t11,t13,t12,t14):nis(pw1(abs(m),t11,t13,t12),0c)
+pw2:=ov(1c,pw1(abs(m),t11,t13,t12),t15):cx
+oy@[nm:neg(m)][nn:neg(n)]
+pwm:=pw1(x,abs(m),t11(x,m,mi1),t13(x,m,mi1,ox,nm),t12(x,m,mi1,ox,nm)):cx
+pwn:=pw1(y,abs(n),t11(y,n,ni1),t13(y,n,ni1,oy,nn),t12(y,n,ni1,oy,nn)):cx
+t16:=t7(abs(m),abs(n),i,isabs(m,n,j),t11(x,m,mi1),t11(y,n,ni1),t13(x,m,mi1,ox,nm),t13(y,n,ni1,oy,nn),t12(x,m,mi1,ox,nm),t12(y,n,ni1,oy,nn)):is(pwm,pwn)
+t17:=isov2(pwm,pwn,1c,t16,t15(x,m,mi1,ox,nm),t15(y,n,ni1,oy,nn)):is(pw2(x,m,mi1,ox,nm),pw2(y,n,ni1,oy,nn))
+n@[n1:neg(m)]
+t18:=t17(x,x,m,m,refis(cx,x),refis(real,m),mi,mi,o,o,n,n1):is(pw2(n),pw2(n1))
+o@pw3:=ite"l.r"(neg(m),cx,[t:neg(m)]pw2(t),[t:not(neg(m))]1c,[t:neg(m)][u:neg(m)]t18(t,u),[t:not(neg(m))][u:not(neg(m))]refis(cx,1c)):cx
+n@t19:=itet"l.r"(neg(m),cx,[t:neg(m)]pw2(t),[t:not(neg(m))]1c,[t:neg(m)][u:neg(m)]t18(t,u),[t:not(neg(m))][u:not(neg(m))]refis(cx,1c),n):is(pw3,pw2(n))
+o@[nn:not(neg(m))]
+t20:=itef"l.r"(neg(m),cx,[t:neg(m)]pw2(t),[t:not(neg(m))]1c,[t:neg(m)][u:neg(m)]t18(t,u),[t:not(neg(m))][u:not(neg(m))]refis(cx,1c),nn):is(pw3,1c)
+nm@t21:=isp(real,[t:real]neg(t),m,n,nm,j):neg(n)
+t22:=t19(x,m,mi1,ox,nm):is(pw3(x,m,mi1,ox),pw2(x,m,mi1,ox,nm))
+t23:=symis(cx,pw3(y,n,ni1,oy),pw2(y,n,ni1,oy,t21),t19(y,n,ni1,oy,t21)):is(pw2(y,n,ni1,oy,t21),pw3(y,n,ni1,oy))
+t24:=tr3is(cx,pw3(x,m,mi1,ox),pw2(x,m,mi1,ox,nm),pw2(y,n,ni1,oy,t21),pw3(y,n,ni1,oy),t22,t17(t21),t23):is(pw3(x,m,mi1,ox),pw3(y,n,ni1,oy))
+oy@[nn:not(neg(m))]
+t25:=isp(real,[t:real]not(neg(t)),m,n,nn,j):not(neg(n))
+t26:=t20(x,m,mi1,ox,nn):is(pw3(x,m,mi1,ox),1c)
+t27:=t20(y,n,ni1,oy,t25):is(pw3(y,n,ni1,oy),1c)
+t28:=tris2(cx,pw3(x,m,mi1,ox),pw3(y,n,ni1,oy),1c,t26,t27):is(pw3(x,m,mi1,ox),pw3(y,n,ni1,oy))
+oy@t29:=th1"l.imp"(neg(m),is(pw3(x,m,mi1,ox),pw3(y,n,ni1,oy)),[t:neg(m)]t24(t),[t:not(neg(m))]t28(t)):is(pw3(x,m,mi1,ox),pw3(y,n,ni1,oy))
+-v9
+o@pw:=ite"l.r"(pos(m),cx,[t:pos(m)]pw1".v9"(t),[t:not(pos(m))]pw3".v9",[t:pos(m)][u:pos(m)]t8".v9"(t,u),[t:not(pos(m))][u:not(pos(m))]refis(cx,pw3".v9")):cx
++*v9
+p@t30:=itet"l.r"(pos(m),cx,[t:pos(m)]pw1(t),[t:not(pos(m))]pw3,[t:pos(m)][u:pos(m)]t8(t,u),[t:not(pos(m))][u:not(pos(m))]refis(cx,pw3),p):is(pw,pw1(p))
+o@[n:not(pos(m))]
+t31:=itef"l.r"(pos(m),cx,[t:pos(m)]pw1(t),[t:not(pos(m))]pw3,[t:pos(m)][u:pos(m)]t8(t,u),[t:not(pos(m))][u:not(pos(m))]refis(cx,pw3),n):is(pw,pw3)
+o@[i:is"r"(m,0)]
+t32:=tris(cx,pw,pw3,1c,t31(0notp(m,i)),t20(0notn(m,i))):is(pw,1c)
+o@[n:neg(m)]
+t33:=tris(cx,pw,pw3,pw2(n),t31(nnotp(m,n)),t19(n)):is(pw,pw2(n))
+-v9
+o@[p:pos(m)]
+posexp:=t30".v9"(p):is(pw(x,m,mi,o),prod(ntofrl(m,posintnatrl(m,p,mi)),[t:1to(ntofrl(m,posintnatrl(m,p,mi)))]x))
+[n:nis(x,0c)]
+lemmapw1:=th2"e.notis"(cx,pw1".v9"(p),0c,pw,t10".v9"(p,n),posexp):nis(pw(x,m,mi,o),0c)
+o@[i:is"r"(m,0)]
+0exp:=t32".v9"(i):is(pw(x,m,mi,o),1c)
+o@[n:neg(m)]
+lemmapw2:=t14".v9"(n):nis(x,0c)
+lemmapw3:=t13".v9"(n):or(nis(x,0c),pos(abs(m)))
++*v9
+n@t34:=t30(abs(m),t11,t13(n),t12(n)):is(pw(x,abs(m),t11,t13(n)),pw1(x,abs(m),t11,t13(n),t12(n)))
+t35:=isov2(pw(x,abs(m),t11,t13(n)),pw1(x,abs(m),t11,t13(n),t12(n)),1c,t34,lemmapw1(abs(m),t11,t13(n),t12(n),t14(n)),t15(n)):is(ov(1c,pw(x,abs(m),t11,t13(n)),lemmapw1(abs(m),t11,t13(n),t12(n),t14(n))),pw2(n))
+-v9
+n@negexp:=tris2(cx,pw(x,m,mi,o),ov(1c,pw(x,abs(m),intabs(m,mi),lemmapw3),lemmapw1(x,abs(m),intabs(m,mi),lemmapw3,satz166b(m,n),lemmapw2)),pw2".v9"(n),t33".v9"(n),t35".v9"(n)):is(pw(x,m,mi,o),ov(1c,pw(x,abs(m),intabs(m,mi),lemmapw3),lemmapw1(x,abs(m),intabs(m,mi),lemmapw3,satz166b(m,n),lemmapw2)))
++*v9
+mp@t36:=isp(real,[t:real]pos(t),m,n,mp,j):pos(n)
+t37:=t30(x,m,mi1,ox,mp):is(pw(x,m,mi1,ox),pw1(x,m,mi1,ox,mp))
+t38:=symis(cx,pw(y,n,ni1,oy),pw1(y,n,ni1,oy,t36),t30(y,n,ni1,oy,t36)):is(pw1(y,n,ni1,oy,t36),pw(y,n,ni1,oy))
+t39:=tr3is(cx,pw(x,m,mi1,ox),pw1(x,m,mi1,ox,mp),pw1(y,n,ni1,oy,t36),pw(y,n,ni1,oy),t37,t7(t36),t38):is(pw(x,m,mi1,ox),pw(y,n,ni1,oy))
+oy@[np:not(pos(m))]
+t40:=isp(real,[t:real]not(pos(t)),m,n,np,j):not(pos(n))
+t41:=t31(x,m,mi1,ox,np):is(pw(x,m,mi1,ox),pw3(x,m,mi1,ox))
+t42:=symis(cx,pw(y,n,ni1,oy),pw3(y,n,ni1,oy),t31(y,n,ni1,oy,t40)):is(pw3(y,n,ni1,oy),pw(y,n,ni1,oy))
+t43:=tr3is(cx,pw(x,m,mi1,ox),pw3(x,m,mi1,ox),pw3(y,n,ni1,oy),pw(y,n,ni1,oy),t41,t29,t42):is(pw(x,m,mi1,ox),pw(y,n,ni1,oy))
+-v9
+oy@ispw12:=th1"l.imp"(pos(m),is(pw(x,m,mi1,ox),pw(y,n,ni1,oy)),[t:pos(m)]t39".v9"(t),[t:not(pos(m))]t43".v9"(t)):is(pw(x,m,mi1,ox),pw(y,n,ni1,oy))
+m@[i:is(x,y)][mi:intrl(m)][ox:or(nis(x,0c),pos(m))][oy:or(nis(y,0c),pos(m))]
+ispw1:=ispw12(x,y,m,m,i,refis(real,m),mi,mi,ox,oy):is(pw(x,m,mi,ox),pw(y,m,mi,oy))
+x@[m:real][n:real][i:is"r"(m,n)][mi:intrl(m)][ni:intrl(n)][om:or(nis(x,0c),pos(m))][on:or(nis(x,0c),pos(n))]
+ispw2:=ispw12(x,x,m,n,refis(cx,x),i,mi,ni,om,on):is(pw(x,m,mi,om),pw(x,n,ni,on))
+o@[n:nis(x,0c)]
++9290
+[p:pos(m)]
+t1:=lemmapw1(p,n):nis(pw(x,m,mi,o),0c)
+@[i:is(1c,0c)]
+t2:=tr3is(real,1rl,re(1c),re(0c),0,isre(1rl,0),iscere(1c,0c,i),reis(0,0)):is"r"(1rl,0)
+-9290
+@1not0:=th3"l.imp"(is(1c,0c),is"r"(1rl,0),pnot0(1rl,pos1),[t:is(1c,0c)]t2".9290"(t)):nis(1c,0c)
++*9290
+n@[i:is"r"(m,0)]
+t4:=th2"e.notis"(cx,1c,0c,pw(x,m,mi,o),1not0,0exp(i)):nis(pw(x,m,mi,o),0c)
+n@[nm:neg(m)]
+p0:=pw(x,abs(m),intabs(m,mi),lemmapw3(nm)):cx
+t5:=lemmapw1(x,abs(m),intabs(m,mi),lemmapw3(nm),satz166b(m,nm),lemmapw2(nm)):nis(p0,0c)
+t6:=tris(cx,ts(pw(x,m,mi,o),p0),ts(ov(1c,p0,t5),p0),1c,ists1(pw(x,m,mi,o),ov(1c,p0,t5),p0,negexp(nm)),satz229e(1c,p0,t5)):is(ts(pw(x,m,mi,o),p0),1c)
+t7:=th2"e.notis"(cx,1c,0c,ts(pw(x,m,mi,o),p0),1not0,t6):nis(ts(pw(x,m,mi,o),p0),0c)
+t8:=th3"l.imp"(is(pw(x,m,mi,o),0c),is(ts(pw(x,m,mi,o),p0),0c),t7,[t:is(pw(x,m,mi,o),0c)]satz221a(pw(x,m,mi,o),p0,t)):nis(pw(x,m,mi,o),0c)
+-9290
+n@satz290:=rapp(m,nis(pw(x,m,mi,o),0c),[t:pos(m)]t1".9290"(t),[t:is"r"(m,0)]t4".9290"(t),[t:neg(m)]t8".9290"(t)):nis(pw(x,m,mi,o),0c)
+x@lemma291:=ori2(nis(x,0c),pos(1rl),pos1):or(nis(x,0c),pos(1rl))
++9291
+1a:=ntofrl(1rl,posintnatrl(1rl,pos1,intrl1)):nat
+t1:=posexp(x,1rl,intrl1,lemma291,pos1):is(pw(x,1rl,intrl1,lemma291),prod(1a,[t:1to(1a)]x))
+t2:=tris(nat,1,ntofrl(1rl,natrl1),ntofrl(1rl,posintnatrl(1rl,pos1,intrl1)),isntrl1(1),isrlent(1rl,natrl1,1rl,posintnatrl(1rl,pos1,intrl1),refis(real,1rl))):is"n"(1,1a)
+t3:=lessisi2"n"(1,1a,t2):lessis"n"(1,1a)
+t4:=issmpr([t:cx][u:cx]ts(t,u),1a,[t:1to(1a)]x,1,t2):is(prod(1,left(cx,1a,1,t3,[t:1to(1a)]x)),prod(1a,[t:1to(1a)]x))
+t5:=satz277([t:cx][u:cx]ts(t,u),left(cx,1a,1,t3,[t:1to(1a)]x)):is(prod(1,left(cx,1a,1,t3,[t:1to(1a)]x)),x)
+t6:=tris1(cx,prod(1a,[t:1to(1a)]x),x,prod(1,left(cx,1a,1,t3,[t:1to(1a)]x)),t4,t5):is(prod(1a,[t:1to(1a)]x),x)
+-9291
+satz291:=tris(cx,pw(x,1rl,intrl1,lemma291),prod(1a".9291",[t:1to(1a".9291")]x),x,t1".9291",t6".9291"):is(pw(x,1rl,intrl1,lemma291),x)
+[y:cx][m:real][mi:intrl(m)][o:or(and(nis(x,0c),nis(y,0c)),pos(m))]
++9292
+[a:and(nis(x,0c),nis(y,0c))]
+t1:=ande1(nis(x,0c),nis(y,0c),a):nis(x,0c)
+t2:=ande2(nis(x,0c),nis(y,0c),a):nis(y,0c)
+t3:=satz221d(x,y,t1,t2):nis(ts(x,y),0c)
+-9292
+lemma292a:=th7"l.or"(and(nis(x,0c),nis(y,0c)),pos(m),nis(x,0c),o,[t:and(nis(x,0c),nis(y,0c))]t1".9292"(t)):or(nis(x,0c),pos(m))
+lemma292b:=th7"l.or"(and(nis(x,0c),nis(y,0c)),pos(m),nis(y,0c),o,[t:and(nis(x,0c),nis(y,0c))]t2".9292"(t)):or(nis(y,0c),pos(m))
+lemma292c:=th7"l.or"(and(nis(x,0c),nis(y,0c)),pos(m),nis(ts(x,y),0c),o,[t:and(nis(x,0c),nis(y,0c))]t3".9292"(t)):or(nis(ts(x,y),0c),pos(m))
++*9292
+x@[n:nat]
+nr:=rlofnt(n):real
+t4:=natintrl(nr,natrli(n)):intrl(nr)
+t5:=ori2(nis(x,0c),pos(nr),natpos(nr,natrli(n))):or(nis(x,0c),pos(nr))
+p0:=pw(x,nr,t4,t5):cx
+x@t6:=tris(cx,p0(1),pw(x,1rl,intrl1,lemma291(x)),x,ispw1(x,x,1rl,refis(cx,x),intrl1,t5(1),lemma291(x)),satz291(x)):is(p0(1),x)
+n@n0:=ntofrl(nr,posintnatrl(nr,natpos(nr,natrli(n)),t4)):nat
+t7:=tris(nat,n,ntofrl(nr,natrli(n)),n0,isntrl1(n),isrlent(nr,natrli(n),nr,posintnatrl(nr,natpos(nr,natrli(n)),t4),refis(real,nr))):is"n"(n,n0)
+t8:=lessisi2"n"(n,n0,t7):lessis"n"(n,n0)
+t9:=posexp(x,nr,t4,t5,natpos(nr,natrli(n))):is(p0,prod(n0,[t:1to(n0)]x))
+t10:=issmpr([t:cx][u:cx]ts(t,u),n0,[t:1to(n0)]x,n,t7):is(prod(n,left(cx,n0,n,t8,[t:1to(n0)]x)),prod(n0,[t:1to(n0)]x))
+t11:=tris2(cx,p0,prod(n,[t:1to(n)]x),prod(n0,[t:1to(n0)]x),t9,t10):is(p0,prod(n,[t:1to(n)]x))
+n1:=pl"n"(n,1):nat
+t12:=lessisi1"n"(n,n1,satz18a(n,1)):lessis"n"(n,n1)
+t13:=satz278([t:cx][u:cx]ts(t,u),n,[t:1to(n1)]x):is(prod(n1,[t:1to(n1)]x),ts(prod(n,left(cx,n1,n,t12,[t:1to(n1)]x)),x))
+t14:=ists1(p0,prod(n,[t:1to(n)]x),x,t11):is(ts(p0,x),ts(prod(n,[t:1to(n)]x),x))
+t15:=tris2(cx,prod(n1,[t:1to(n1)]x),ts(p0,x),ts(prod(n,[t:1to(n)]x),x),t13,t14):is(prod(n1,[t:1to(n1)]x),ts(p0,x))
+t16:=tris(cx,p0(n1),prod(n1,[t:1to(n1)]x),ts(p0,x),t11(n1),t15):is(p0(n1),ts(p0(n),x))
+y@[n:nat]
+prop1:=is(p0(ts(x,y),n),ts(p0(x,n),p0(y,n))):'prop'
+y@t17:=ists12(p0(x,1),x,p0(y,1),y,t6(x),t6(y)):is(ts(p0(x,1),p0(y,1)),ts(x,y))
+t18:=tris2(cx,p0(ts(x,y),1),ts(p0(x,1),p0(y,1)),ts(x,y),t6(ts(x,y)),t17):prop1(1)
+n@[p:prop1(n)]
+t19:=ists1(p0(ts(x,y),n),ts(p0(x,n),p0(y,n)),ts(x,y),p):is(ts(p0(ts(x,y),n),ts(x,y)),ts(ts(p0(x,n),p0(y,n)),ts(x,y)))
+t20:=tr3is(cx,ts(ts(p0(x,n),p0(y,n)),x),ts(p0(x,n),ts(p0(y,n),x)),ts(p0(x,n),ts(x,p0(y,n))),ts(ts(p0(x,n),x),p0(y,n)),assts1(p0(x,n),p0(y,n),x),ists2(ts(p0(y,n),x),ts(x,p0(y,n)),p0(x,n),comts(p0(y,n),x)),assts2(p0(x,n),x,p0(y,n))):is(ts(ts(p0(x,n),p0(y,n)),x),ts(ts(p0(x,n),x),p0(y,n)))
+t21:=tr3is(cx,ts(ts(p0(x,n),p0(y,n)),ts(x,y)),ts(ts(ts(p0(x,n),p0(y,n)),x),y),ts(ts(ts(p0(x,n),x),p0(y,n)),y),ts(ts(p0(x,n),x),ts(p0(y,n),y)),assts2(ts(p0(x,n),p0(y,n)),x,y),ists1(ts(ts(p0(x,n),p0(y,n)),x),ts(ts(p0(x,n),x),p0(y,n)),y,t20),assts1(ts(p0(x,n),x),p0(y,n),y)):is(ts(ts(p0(x,n),p0(y,n)),ts(x,y)),ts(ts(p0(x,n),x),ts(p0(y,n),y)))
+t22:=tr3is(cx,p0(ts(x,y),n1(n)),ts(p0(ts(x,y),n),ts(x,y)),ts(ts(p0(x,n),p0(y,n)),ts(x,y)),ts(ts(p0(x,n),x),ts(p0(y,n),y)),t16(ts(x,y),n),t19,t21):is(p0(ts(x,y),n1(n)),ts(ts(p0(x,n),x),ts(p0(y,n),y)))
+t23:=ists12(p0(x,n1(n)),ts(p0(x,n),x),p0(y,n1(n)),ts(p0(y,n),y),t16(x,n),t16(y,n)):is(ts(p0(x,n1(n)),p0(y,n1(n))),ts(ts(p0(x,n),x),ts(p0(y,n),y)))
+t24:=tris2(cx,p0(ts(x,y),n1(n)),ts(p0(x,n1(n)),p0(y,n1(n))),ts(ts(p0(x,n),x),ts(p0(y,n),y)),t22,t23):prop1(n1(n))
+t25:=isp(nat,[t:nat]prop1(t),n1(n),<n>suc,t24,satz4a(n)):prop1(<n>suc)
+n@t26:=induction([t:nat]prop1(t),t18,[t:nat][u:prop1(t)]t25(t,u),n):prop1
+o@prop2:=is(pw(ts(x,y),m,mi,lemma292c),ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b))):'prop'
+[p:pos(m)]
+t28:=posintnatrl(m,p,mi):natrl(m)
+m0:=ntofrl(m,t28):nat
+t29:=isrlnt1(m,t28):is"r"(m,nr(m0))
+t30:=isrlnt2(m,t28):is"r"(nr(m0),m)
+t31:=ispw2(ts(x,y),m,nr(m0),t29,mi,t4(ts(x,y),m0),lemma292c,t5(ts(x,y),m0)):is(pw(ts(x,y),m,mi,lemma292c),p0(ts(x,y),m0))
+t32:=ists12(p0(x,m0),pw(x,m,mi,lemma292a),p0(y,m0),pw(y,m,mi,lemma292b),ispw2(x,nr(m0),m,t30,t4(x,m0),mi,t5(x,m0),lemma292a),ispw2(y,nr(m0),m,t30,t4(y,m0),mi,t5(y,m0),lemma292b)):is(ts(p0(x,m0),p0(y,m0)),ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)))
+t33:=tr3is(cx,pw(ts(x,y),m,mi,lemma292c),p0(ts(x,y),m0),ts(p0(x,m0),p0(y,m0)),ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)),t31,t26(m0),t32):prop2
+o@[i:is"r"(m,0)]
+t34:=tris(cx,ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)),ts(1c,1c),1c,ists12(pw(x,m,mi,lemma292a),1c,pw(y,m,mi,lemma292b),1c,0exp(x,m,mi,lemma292a,i),0exp(y,m,mi,lemma292b,i)),satz222(1c)):is(ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)),1c)
+t35:=tris2(cx,pw(ts(x,y),m,mi,lemma292c),ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)),1c,0exp(ts(x,y),m,mi,lemma292c,i),t34):prop2
+o@[n:neg(m)]
+t36:=intabs(m,mi):intrl(abs(m))
+t37:=ori2(and(nis(x,0c),nis(y,0c)),pos(abs(m)),satz166b(m,n)):or(and(nis(x,0c),nis(y,0c)),pos(abs(m)))
+t38:=lemma292a(abs(m),t36,t37):or(nis(x,0c),pos(abs(m)))
+t39:=lemma292b(abs(m),t36,t37):or(nis(y,0c),pos(abs(m)))
+t40:=lemma292c(abs(m),t36,t37):or(nis(ts(x,y),0c),pos(abs(m)))
+t41:=lemmapw3(x,m,mi,lemma292a,n):or(nis(x,0c),pos(abs(m)))
+t42:=lemmapw3(y,m,mi,lemma292b,n):or(nis(y,0c),pos(abs(m)))
+t43:=lemmapw3(ts(x,y),m,mi,lemma292c,n):or(nis(ts(x,y),0c),pos(abs(m)))
+t44:=ispw2(ts(x,y),abs(m),abs(m),refis(real,abs(m)),t36,t36,t43,t40):is(pw(ts(x,y),abs(m),t36,t43),pw(ts(x,y),abs(m),t36,t40))
+t45:=t33(abs(m),t36,t37,satz166b(m,n)):is(pw(ts(x,y),abs(m),t36,t40),ts(pw(x,abs(m),t36,t38),pw(y,abs(m),t36,t39)))
+t46:=ists12(pw(x,abs(m),t36,t38),pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t39),pw(y,abs(m),t36,t42),ispw2(x,abs(m),abs(m),refis(real,abs(m)),t36,t36,t38,t41),ispw2(y,abs(m),abs(m),refis(real,abs(m)),t36,t36,t39,t42)):is(ts(pw(x,abs(m),t36,t38),pw(y,abs(m),t36,t39)),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)))
+t47:=tr3is(cx,pw(ts(x,y),abs(m),t36,t43),pw(ts(x,y),abs(m),t36,t40),ts(pw(x,abs(m),t36,t38),pw(y,abs(m),t36,t39)),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),t44,t45,t46):is(pw(ts(x,y),abs(m),t36,t43),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)))
+t48:=lemmapw1(x,abs(m),t36,t41,satz166b(m,n),lemmapw2(x,m,mi,lemma292a,n)):nis(pw(x,abs(m),t36,t41),0c)
+t49:=lemmapw1(y,abs(m),t36,t42,satz166b(m,n),lemmapw2(y,m,mi,lemma292b,n)):nis(pw(y,abs(m),t36,t42),0c)
+t50:=lemmapw1(ts(x,y),abs(m),t36,t43,satz166b(m,n),lemmapw2(ts(x,y),m,mi,lemma292c,n)):nis(pw(ts(x,y),abs(m),t36,t43),0c)
+t51:=satz221d(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42),t48,t49):nis(ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),0c)
+t52:=negexp(ts(x,y),m,mi,lemma292c,n):is(pw(ts(x,y),m,mi,lemma292c),ov(1c,pw(ts(x,y),abs(m),t36,t43),t50))
+t53:=isov12(1c,ts(1c,1c),pw(ts(x,y),abs(m),t36,t43),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),satz222a(1c),t47,t50,t51):is(ov(1c,pw(ts(x,y),abs(m),t36,t43),t50),ov(ts(1c,1c),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),t51))
+t54:=tris(cx,pw(ts(x,y),m,mi,lemma292c),ov(1c,pw(ts(x,y),abs(m),t36,t43),t50),ov(ts(1c,1c),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),t51),t52,t53):is(pw(ts(x,y),m,mi,lemma292c),ov(ts(1c,1c),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),t51))
+t55:=ists12(pw(x,m,mi,lemma292a),ov(1c,pw(x,abs(m),t36,t41),t48),pw(y,m,mi,lemma292b),ov(1c,pw(y,abs(m),t36,t42),t49),negexp(x,m,mi,lemma292a,n),negexp(y,m,mi,lemma292b,n)):is(ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)),ts(ov(1c,pw(x,abs(m),t36,t41),t48),ov(1c,pw(y,abs(m),t36,t42),t49)))
+t56:=satz247(1c,pw(x,abs(m),t36,t41),1c,pw(y,abs(m),t36,t42),t48,t49):is(ts(ov(1c,pw(x,abs(m),t36,t41),t48),ov(1c,pw(y,abs(m),t36,t42),t49)),ov(ts(1c,1c),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),t51))
+t57:=tris(cx,ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)),ts(ov(1c,pw(x,abs(m),t36,t41),t48),ov(1c,pw(y,abs(m),t36,t42),t49)),ov(ts(1c,1c),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),t51),t55,t56):is(ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)),ov(ts(1c,1c),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),t51))
+t58:=tris2(cx,pw(ts(x,y),m,mi,lemma292c),ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)),ov(ts(1c,1c),ts(pw(x,abs(m),t36,t41),pw(y,abs(m),t36,t42)),t51),t54,t57):prop2
+-9292
+o@satz292:=rapp(m,prop2".9292",[t:pos(m)]t33".9292"(t),[t:is"r"(m,0)]t35".9292"(t),[t:neg(m)]t58".9292"(t)):is(pw(ts(x,y),m,mi,lemma292c),ts(pw(x,m,mi,lemma292a),pw(y,m,mi,lemma292b)))
+@[m:real]
+lemma293:=ori1(nis(1c,0c),pos(m),1not0):or(nis(1c,0c),pos(m))
+[mi:intrl(m)]
++9293
+t1:=ori1(and(nis(1c,0c),nis(1c,0c)),pos(m),andi(nis(1c,0c),nis(1c,0c),1not0,1not0)):or(and(nis(1c,0c),nis(1c,0c)),pos(m))
+1m:=pw(1c,m,mi,lemma293):cx
+t2:=satz222(1m):is(ts(1m,1c),1m)
+t3:=ispw1(1c,ts(1c,1c),m,satz222a(1c),mi,lemma293,lemma292c(1c,1c,m,mi,t1)):is(1m,pw(ts(1c,1c),m,mi,lemma292c(1c,1c,m,mi,t1)))
+t4:=satz292(1c,1c,m,mi,t1):is(pw(ts(1c,1c),m,mi,lemma292c(1c,1c,m,mi,t1)),ts(pw(1c,m,mi,lemma292a(1c,1c,m,mi,t1)),pw(1c,m,mi,lemma292b(1c,1c,m,mi,t1))))
+t5:=ists12(pw(1c,m,mi,lemma292a(1c,1c,m,mi,t1)),1m,pw(1c,m,mi,lemma292b(1c,1c,m,mi,t1)),1m,ispw1(1c,1c,m,refis(cx,1c),mi,lemma292a(1c,1c,m,mi,t1),lemma293),ispw1(1c,1c,m,refis(cx,1c),mi,lemma292b(1c,1c,m,mi,t1),lemma293)):is(ts(pw(1c,m,mi,lemma292a(1c,1c,m,mi,t1)),pw(1c,m,mi,lemma292b(1c,1c,m,mi,t1))),ts(1m,1m))
+t6:=tr4is(cx,ts(1m,1c),1m,pw(ts(1c,1c),m,mi,lemma292c(1c,1c,m,mi,t1)),ts(pw(1c,m,mi,lemma292a(1c,1c,m,mi,t1)),pw(1c,m,mi,lemma292b(1c,1c,m,mi,t1))),ts(1m,1m),t2,t3,t4,t5):is(ts(1m,1c),ts(1m,1m))
+t7:=tris(cx,ts(1m,mn(1m,1c)),mn(ts(1m,1m),ts(1m,1c)),0c,disttm2(1m,1m,1c),satz213b(ts(1m,1m),ts(1m,1c),symis(cx,ts(1m,1c),ts(1m,1m),t6))):is(ts(1m,mn(1m,1c)),0c)
+t8:=ore2(is(1m,0c),is(mn(1m,1c),0c),satz221c(1m,mn(1m,1c),t7),satz290(1c,m,mi,lemma293,1not0)):is(mn(1m,1c),0c)
+-9293
+satz293:=satz213a(1m".9293",1c,t8".9293"):is(pw(1c,m,mi,lemma293),1c)
+x@[m:real][n:real][mi:intrl(m)][ni:intrl(n)][o:or(nis(x,0c),and(pos(m),pos(n)))]
++9294
+[a:and(pos(m),pos(n))]
+t1:=ande1(pos(m),pos(n),a):pos(m)
+t2:=ande2(pos(m),pos(n),a):pos(n)
+t3:=pospl(m,n,t1,t2):pos(pl"r"(m,n))
+-9294
+lemma294a:=th8"l.or"(nis(x,0c),and(pos(m),pos(n)),pos(m),o,[t:and(pos(m),pos(n))]t1".9294"(t)):or(nis(x,0c),pos(m))
+lemma294b:=th8"l.or"(nis(x,0c),and(pos(m),pos(n)),pos(n),o,[t:and(pos(m),pos(n))]t2".9294"(t)):or(nis(x,0c),pos(n))
+lemma294c:=th8"l.or"(nis(x,0c),and(pos(m),pos(n)),pos(pl"r"(m,n)),o,[t:and(pos(m),pos(n))]t3".9294"(t)):or(nis(x,0c),pos(pl"r"(m,n)))
++*9294
+o@prop1:=is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c)):'prop'
+a@m1:=ntofrl(m,posintnatrl(m,t1,mi)):nat
+n1:=ntofrl(n,posintnatrl(n,t2,ni)):nat
+t4:=ists12(pw(x,m,mi,lemma294a),prod(m1,[t:1to(m1)]x),pw(x,n,ni,lemma294b),prod(n1,[t:1to(n1)]x),posexp(x,m,mi,lemma294a,t1),posexp(x,n,ni,lemma294b,t2)):is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(prod(m1,[t:1to(m1)]x),prod(n1,[t:1to(n1)]x)))
+p1:=ntofrl(pl"r"(m,n),posintnatrl(pl"r"(m,n),t3,intpl(m,mi,n,ni))):nat
+t5:=posexp(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c,t3):is(pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),prod(p1,[t:1to(p1)]x))
+t6:=tris(real,pl"r"(m,n),pl"r"(rlofnt(m1),rlofnt(n1)),rlofnt(pl"n"(m1,n1)),ispl12"r"(m,rlofnt(m1),n,rlofnt(n1),isrlnt1(m,posintnatrl(m,t1,mi)),isrlnt1(n,posintnatrl(n,t2,ni))),satzr155b(m1,n1)):is"r"(pl"r"(m,n),rlofnt(pl"n"(m1,n1)))
+t7:=tris2(nat,pl"n"(m1,n1),p1,ntofrl(rlofnt(pl"n"(m1,n1)),natrli(pl"n"(m1,n1))),isntrl1(pl"n"(m1,n1)),isrlent(pl"r"(m,n),posintnatrl(pl"r"(m,n),t3,intpl(m,mi,n,ni)),rlofnt(pl"n"(m1,n1)),natrli(pl"n"(m1,n1)),t6)):is"n"(pl"n"(m1,n1),p1)
+t8:=lessisi2"n"(pl"n"(m1,n1),p1,t7):lessis"n"(pl"n"(m1,n1),p1)
+t9:=issmpr([t:cx][u:cx]ts(t,u),p1,[t:1to(p1)]x,pl"n"(m1,n1),t7):is(prod(pl"n"(m1,n1),left(cx,p1,pl"n"(m1,n1),t8,[t:1to(p1)]x)),prod(p1,[t:1to(p1)]x))
+t10:=tris2(cx,pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),prod(pl"n"(m1,n1),[t:1to(pl"n"(m1,n1))]x),prod(p1,[t:1to(p1)]x),t5,t9):is(pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),prod(pl"n"(m1,n1),[t:1to(pl"n"(m1,n1))]x))
+t11:=lessisi1"n"(m1,pl"n"(m1,n1),satz18a(m1,n1)):lessis"n"(m1,pl"n"(m1,n1))
+t12:=satz281([t:cx][u:cx]ts(t,u),assocts,m1,n1,[t:1to(pl"n"(m1,n1))]x):is(prod(pl"n"(m1,n1),[t:1to(pl"n"(m1,n1))]x),ts(prod(m1,left(cx,pl"n"(m1,n1),m1,t11,[t:1to(pl"n"(m1,n1))]x)),prod(n1,right(cx,m1,n1,[t:1to(pl"n"(m1,n1))]x))))
+t13:=tris(cx,pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),prod(pl"n"(m1,n1),[t:1to(pl"n"(m1,n1))]x),ts(prod(m1,[t:1to(m1)]x),prod(n1,[t:1to(n1)]x)),t10,t12):is(pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),ts(prod(m1,[t:1to(m1)]x),prod(n1,[t:1to(n1)]x)))
+t14:=tris2(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),ts(prod(m1,[t:1to(m1)]x),prod(n1,[t:1to(n1)]x)),t4,t13):prop1
+o@[na:not(and(pos(m),pos(n)))]
+t15:=ore1(nis(x,0c),and(pos(m),pos(n)),o,na):nis(x,0c)
+t16:=th15"l.or"(pos(m),pos(n),na):or(not(pos(m)),not(pos(n)))
+o@am:=abs(m):real
+an:=abs(n):real
+ap:=abs(pl"r"(m,n)):real
+t17:=intabs(m,mi):intrl(am)
+t18:=intabs(n,ni):intrl(an)
+t19:=intabs(pl"r"(m,n),intpl(m,mi,n,ni)):intrl(ap)
+na@[nm:neg(m)][nn:neg(n)]
+t20:=andi(pos(am),pos(an),satz166e(m,nnot0(m,nm)),satz166e(n,nnot0(n,nn))):and(pos(am),pos(an))
+t21:=ori2(nis(x,0c),and(pos(am),pos(an)),t20):or(nis(x,0c),and(pos(am),pos(an)))
+t22:=lemmapw3(x,m,mi,lemma294a,nm):or(nis(x,0c),pos(am))
+t23:=lemmapw3(x,n,ni,lemma294b,nn):or(nis(x,0c),pos(an))
+t24:=lemma294a(x,am,an,t17,t18,t21):or(nis(x,0c),pos(am))
+t25:=lemma294b(x,am,an,t17,t18,t21):or(nis(x,0c),pos(an))
+t26:=ists12(pw(x,am,t17,t22),pw(x,am,t17,t24),pw(x,an,t18,t23),pw(x,an,t18,t25),ispw1(x,x,am,refis(cx,x),t17,t22,t24),ispw1(x,x,an,refis(cx,x),t18,t23,t25)):is(ts(pw(x,am,t17,t22),pw(x,an,t18,t23)),ts(pw(x,am,t17,t24),pw(x,an,t18,t25)))
+t27:=lemma294c(x,am,an,t17,t18,t21):or(nis(x,0c),pos(pl"r"(am,an)))
+t28:=t14(x,am,an,t17,t18,t21,t20):is(ts(pw(x,am,t17,t24),pw(x,an,t18,t25)),pw(x,pl"r"(am,an),intpl(am,t17,an,t18),t27))
+t29:=tr3is(real,pl"r"(am,an),pl"r"(m0"r"(m),m0"r"(n)),m0"r"(pl"r"(m,n)),ap,ispl12"r"(am,m0"r"(m),an,m0"r"(n),absn(m,nm),absn(n,nn)),satz180a(m,n),symis(real,ap,m0"r"(pl"r"(m,n)),absn(pl"r"(m,n),negpl(m,n,nm,nn)))):is"r"(pl"r"(am,an),ap)
+t30:=lemmapw3(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c,negpl(m,n,nm,nn)):or(nis(x,0c),pos(ap))
+t31:=ispw2(x,pl"r"(am,an),ap,t29,intpl(am,t17,an,t18),t19,t27,t30):is(pw(x,pl"r"(am,an),intpl(am,t17,an,t18),t27),pw(x,ap,t19,t30))
+t32:=tr3is(cx,ts(pw(x,am,t17,t22),pw(x,an,t18,t23)),ts(pw(x,am,t17,t24),pw(x,an,t18,t25)),pw(x,pl"r"(am,an),intpl(am,t17,an,t18),t27),pw(x,ap,t19,t30),t26,t28,t31):is(ts(pw(x,am,t17,t22),pw(x,an,t18,t23)),pw(x,ap,t19,t30))
+t33:=lemmapw1(x,am,t17,t22,satz166b(m,nm),lemmapw2(x,m,mi,lemma294a,nm)):nis(pw(x,am,t17,t22),0c)
+t34:=lemmapw1(x,an,t18,t23,satz166b(n,nn),lemmapw2(x,n,ni,lemma294b,nn)):nis(pw(x,an,t18,t23),0c)
+t35:=lemmapw1(x,ap,t19,t30,satz166b(pl"r"(m,n),negpl(m,n,nm,nn)),lemmapw2(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c,negpl(m,n,nm,nn))):nis(pw(x,ap,t19,t30),0c)
+t36:=ists12(pw(x,m,mi,lemma294a),ov(1c,pw(x,am,t17,t22),t33),pw(x,n,ni,lemma294b),ov(1c,pw(x,an,t18,t23),t34),negexp(x,m,mi,lemma294a,nm),negexp(x,n,ni,lemma294b,nn)):is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(ov(1c,pw(x,am,t17,t22),t33),ov(1c,pw(x,an,t18,t23),t34)))
+t37:=satz221d(pw(x,am,t17,t22),pw(x,an,t18,t23),t33,t34):nis(ts(pw(x,am,t17,t22),pw(x,an,t18,t23)),0c)
+t38:=satz247(1c,pw(x,am,t17,t22),1c,pw(x,an,t18,t23),t33,t34):is(ts(ov(1c,pw(x,am,t17,t22),t33),ov(1c,pw(x,an,t18,t23),t34)),ov(ts(1c,1c),ts(pw(x,am,t17,t22),pw(x,an,t18,t23)),t37))
+t39:=isov12(ts(1c,1c),1c,ts(pw(x,am,t17,t22),pw(x,an,t18,t23)),pw(x,ap,t19,t30),satz222(1c),t32,t37,t35):is(ov(ts(1c,1c),ts(pw(x,am,t17,t22),pw(x,an,t18,t23)),t37),ov(1c,pw(x,ap,t19,t30),t35))
+t40:=symis(cx,pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),ov(1c,pw(x,ap,t19,t30),t35),negexp(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c,negpl(m,n,nm,nn))):is(ov(1c,pw(x,ap,t19,t30),t35),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c))
+t41:=tr4is(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(ov(1c,pw(x,am,t17,t22),t33),ov(1c,pw(x,an,t18,t23),t34)),ov(ts(1c,1c),ts(pw(x,am,t17,t22),pw(x,an,t18,t23)),t37),ov(1c,pw(x,ap,t19,t30),t35),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),t36,t38,t39,t40):prop1
+na@[pm:pos(m)][nn:neg(n)]
+t42:=lemmapw3(x,n,ni,lemma294b,nn):or(nis(x,0c),pos(an))
+t43:=lemmapw1(x,an,t18,t42,satz166b(n,nn),lemmapw2(x,n,ni,lemma294b,nn)):nis(pw(x,an,t18,t42),0c)
+t44:=ists2(pw(x,n,ni,lemma294b),ov(1c,pw(x,an,t18,t42),t43),pw(x,m,mi,lemma294a),negexp(x,n,ni,lemma294b,nn)):is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(pw(x,m,mi,lemma294a),ov(1c,pw(x,an,t18,t42),t43)))
+t45:=satz244a(pw(x,m,mi,lemma294a),1c,pw(x,an,t18,t42),t43):is(ts(pw(x,m,mi,lemma294a),ov(1c,pw(x,an,t18,t42),t43)),ov(ts(pw(x,m,mi,lemma294a),1c),pw(x,an,t18,t42),t43))
+t46:=isov1(ts(pw(x,m,mi,lemma294a),1c),pw(x,m,mi,lemma294a),pw(x,an,t18,t42),satz222(pw(x,m,mi,lemma294a)),t43):is(ov(ts(pw(x,m,mi,lemma294a),1c),pw(x,an,t18,t42),t43),ov(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43))
+t47:=tr3is(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(pw(x,m,mi,lemma294a),ov(1c,pw(x,an,t18,t42),t43)),ov(ts(pw(x,m,mi,lemma294a),1c),pw(x,an,t18,t42),t43),ov(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43),t44,t45,t46):is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ov(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43))
+[casea:more(m,an)]
+t48:=satz182d(m,an,casea):pos(mn"r"(m,an))
+t49:=satz166e(n,nnot0(n,nn)):pos(an)
+t50:=andi(pos(an),pos(mn"r"(m,an)),t49,t48):and(pos(an),pos(mn"r"(m,an)))
+t51:=ori2(nis(x,0c),and(pos(an),pos(mn"r"(m,an))),t50):or(nis(x,0c),and(pos(an),pos(mn"r"(m,an))))
+t52:=intmn(m,mi,an,t18):intrl(mn"r"(m,an))
+t53:=lemma294a(x,an,mn"r"(m,an),t18,t52,t51):or(nis(x,0c),pos(an))
+t54:=lemma294b(x,an,mn"r"(m,an),t18,t52,t51):or(nis(x,0c),pos(mn"r"(m,an)))
+t55:=lemma294c(x,an,mn"r"(m,an),t18,t52,t51):or(nis(x,0c),pos(pl"r"(an,mn"r"(m,an))))
+t56:=intpl(an,t18,mn"r"(m,an),t52):intrl(pl"r"(an,mn"r"(m,an)))
+t57:=t14(x,an,mn"r"(m,an),t18,t52,t51,t50):is(ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,pl"r"(an,mn"r"(m,an)),t56,t55))
+t58:=satz187a(m,an):is"r"(pl"r"(an,mn"r"(m,an)),m)
+t59:=ispw2(x,pl"r"(an,mn"r"(m,an)),m,t58,t56,mi,t55,lemma294a):is(pw(x,pl"r"(an,mn"r"(m,an)),t56,t55),pw(x,m,mi,lemma294a))
+t60:=tris(cx,ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,pl"r"(an,mn"r"(m,an)),t56,t55),pw(x,m,mi,lemma294a),t57,t59):is(ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,m,mi,lemma294a))
+t61:=ispw1(x,x,an,refis(cx,x),t18,t53,t42):is(pw(x,an,t18,t53),pw(x,an,t18,t42))
+t62:=isp1(cx,[t:cx]nis(t,0c),pw(x,an,t18,t42),pw(x,an,t18,t53),t43,t61):nis(pw(x,an,t18,t53),0c)
+t63:=isov12(ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,m,mi,lemma294a),pw(x,an,t18,t53),pw(x,an,t18,t42),t60,t61,t62,t43):is(ov(ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,an,t18,t53),t62),ov(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43))
+t64:=tris2(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ov(ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,an,t18,t53),t62),ov(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43),t47,t63):is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ov(ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,an,t18,t53),t62))
+t65:=satz229h(ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54),t62,refis(cx,ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)))):is(ov(ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,an,t18,t53),t62),pw(x,mn"r"(m,an),t52,t54))
+t66:=tris(real,mn"r"(m,an),mn"r"(m,m0"r"(n)),pl"r"(m,n),ismn2"r"(an,m0"r"(n),m,absn(n,nn)),ispl2"r"(m0"r"(m0"r"(n)),n,m,satz177(n))):is"r"(mn"r"(m,an),pl"r"(m,n))
+t67:=ispw2(x,mn"r"(m,an),pl"r"(m,n),t66,t52,intpl(m,mi,n,ni),t54,lemma294c):is(pw(x,mn"r"(m,an),t52,t54),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c))
+t68:=tr3is(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ov(ts(pw(x,an,t18,t53),pw(x,mn"r"(m,an),t52,t54)),pw(x,an,t18,t53),t62),pw(x,mn"r"(m,an),t52,t54),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),t64,t65,t67):prop1
+nn@[caseb:is"r"(m,an)]
+t69:=ispw2(x,m,an,caseb,mi,t18,lemma294a,t42):is(pw(x,m,mi,lemma294a),pw(x,an,t18,t42))
+t70:=satz251a(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43,t69):is(ov(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43),1c)
+t71:=tr3is(real,pl"r"(m,n),mn"r"(m,m0"r"(n)),mn"r"(m,an),0,ispl2"r"(n,m0"r"(m0"r"(n)),m,satz177a(n)),ismn2"r"(m0"r"(n),an,m,symis(real,an,m0"r"(n),absn(n,nn))),satz182e(m,an,caseb)):is"r"(pl"r"(m,n),0)
+t72:=symis(cx,pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),1c,0exp(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c,t71)):is(1c,pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c))
+t73:=tr3is(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ov(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43),1c,pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),t47,t70,t72):prop1
+nn@[casec:less(m,an)]
+t74:=satz182d(an,m,lemma2"r"(m,an,casec)):pos(mn"r"(an,m))
+t75:=andi(pos(m),pos(mn"r"(an,m)),pm,t74):and(pos(m),pos(mn"r"(an,m)))
+t76:=ori2(nis(x,0c),and(pos(m),pos(mn"r"(an,m))),t75):or(nis(x,0c),and(pos(m),pos(mn"r"(an,m))))
+t77:=intmn(an,t18,m,mi):intrl(mn"r"(an,m))
+t78:=lemma294a(x,m,mn"r"(an,m),mi,t77,t76):or(nis(x,0c),pos(m))
+t79:=lemma294b(x,m,mn"r"(an,m),mi,t77,t76):or(nis(x,0c),pos(mn"r"(an,m)))
+t80:=lemma294c(x,m,mn"r"(an,m),mi,t77,t76):or(nis(x,0c),pos(pl"r"(m,mn"r"(an,m))))
+t81:=intpl(m,mi,mn"r"(an,m),t77):intrl(pl"r"(m,mn"r"(an,m)))
+t81a:=t14(x,m,mn"r"(an,m),mi,t77,t76,t75):is(ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),pw(x,pl"r"(m,mn"r"(an,m)),t81,t80))
+t82:=satz187a(an,m):is"r"(pl"r"(m,mn"r"(an,m)),an)
+t83:=ispw2(x,pl"r"(m,mn"r"(an,m)),an,t82,t81,t18,t80,t42):is(pw(x,pl"r"(m,mn"r"(an,m)),t81,t80),pw(x,an,t18,t42))
+t84:=tris(cx,ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),pw(x,pl"r"(m,mn"r"(an,m)),t81,t80),pw(x,an,t18,t42),t81a,t83):is(ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),pw(x,an,t18,t42))
+t85:=satz290(x,m,mi,t78,t15):nis(pw(x,m,mi,t78),0c)
+t86:=satz290(x,mn"r"(an,m),t77,t79,t15):nis(pw(x,mn"r"(an,m),t77,t79),0c)
+t87:=satz221d(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79),t85,t86):nis(ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),0c)
+t88:=satz222(pw(x,m,mi,t78)):is(ts(pw(x,m,mi,t78),1c),pw(x,m,mi,t78))
+t89:=ispw1(x,x,m,refis(cx,x),mi,t78,lemma294a):is(pw(x,m,mi,t78),pw(x,m,mi,lemma294a))
+t90:=tris(cx,ts(pw(x,m,mi,t78),1c),pw(x,m,mi,t78),pw(x,m,mi,lemma294a),t88,t89):is(ts(pw(x,m,mi,t78),1c),pw(x,m,mi,lemma294a))
+t91:=isov12(ts(pw(x,m,mi,t78),1c),pw(x,m,mi,lemma294a),ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),pw(x,an,t18,t42),t90,t84,t87,t43):is(ov(ts(pw(x,m,mi,t78),1c),ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),t87),ov(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43))
+t92:=tris2(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ov(ts(pw(x,m,mi,t78),1c),ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),t87),ov(pw(x,m,mi,lemma294a),pw(x,an,t18,t42),t43),t47,t91):is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ov(ts(pw(x,m,mi,t78),1c),ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),t87))
+t93:=satz246a(1c,pw(x,mn"r"(an,m),t77,t79),pw(x,m,mi,t78),t86,t85):is(ov(ts(pw(x,m,mi,t78),1c),ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),t87),ov(1c,pw(x,mn"r"(an,m),t77,t79),t86))
+t94:=satz182f(m,an,casec):neg(mn"r"(m,an))
+t94a:=tris(real,mn"r"(m,an),mn"r"(m,m0"r"(n)),pl"r"(m,n),ismn2"r"(an,m0"r"(n),m,absn(n,nn)),ispl2"r"(m0"r"(m0"r"(n)),n,m,satz177(n))):is"r"(mn"r"(m,an),pl"r"(m,n))
+t95:=tr3is(real,mn"r"(an,m),m0"r"(mn"r"(m,an)),abs(mn"r"(m,an)),ap,satz181a(an,m),symis(real,abs(mn"r"(m,an)),m0"r"(mn"r"(m,an)),absn(mn"r"(m,an),t94)),isabs(mn"r"(m,an),pl"r"(m,n),t94a)):is"r"(mn"r"(an,m),ap)
+t96:=isp(real,[t:real]neg(t),mn"r"(m,an),pl"r"(m,n),t94,t94a):neg(pl"r"(m,n))
+t97:=lemmapw3(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c,t96):or(nis(x,0c),pos(ap))
+t98:=lemmapw1(x,ap,t19,t97,satz166b(pl"r"(m,n),t96),lemmapw2(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c,t96)):nis(pw(x,ap,t19,t97),0c)
+t99:=ispw2(x,mn"r"(an,m),ap,t95,t77,t19,t79,t97):is(pw(x,mn"r"(an,m),t77,t79),pw(x,ap,t19,t97))
+t100:=isov2(pw(x,mn"r"(an,m),t77,t79),pw(x,ap,t19,t97),1c,t99,t86,t98):is(ov(1c,pw(x,mn"r"(an,m),t77,t79),t86),ov(1c,pw(x,ap,t19,t97),t98))
+t101:=symis(cx,pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),ov(1c,pw(x,ap,t19,t97),t98),negexp(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c,t96)):is(ov(1c,pw(x,ap,t19,t97),t98),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c))
+t102:=tr4is(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ov(ts(pw(x,m,mi,t78),1c),ts(pw(x,m,mi,t78),pw(x,mn"r"(an,m),t77,t79)),t87),ov(1c,pw(x,mn"r"(an,m),t77,t79),t86),ov(1c,pw(x,ap,t19,t97),t98),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),t92,t93,t100,t101):prop1
+nn@t103:=or3app(is"r"(m,an),more(m,an),less(m,an),prop1,satz167a(m,an),[t:is"r"(m,an)]t73(t),[t:more(m,an)]t68(t),[t:less(m,an)]t102(t)):prop1
+na@[nm:neg(m)][qn:pos(n)]
+na@t104:=ori1(nis(x,0c),and(pos(n),pos(m)),t15):or(nis(x,0c),and(pos(n),pos(m)))
+t104a:=th5"l.and"(pos(m),pos(n),na):not(and(pos(n),pos(m)))
+t105:=lemma294a(x,n,m,ni,mi,t104):or(nis(x,0c),pos(n))
+t106:=lemma294b(x,n,m,ni,mi,t104):or(nis(x,0c),pos(m))
+t107:=lemma294c(x,n,m,ni,mi,t104):or(nis(x,0c),pos(pl"r"(n,m)))
+t108:=ists12(pw(x,m,mi,lemma294a),pw(x,m,mi,t106),pw(x,n,ni,lemma294b),pw(x,n,ni,t105),ispw1(x,x,m,refis(cx,x),mi,lemma294a,t106),ispw1(x,x,n,refis(cx,x),ni,lemma294b,t105)):is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(pw(x,m,mi,t106),pw(x,n,ni,t105)))
+t109:=comts(pw(x,m,mi,t106),pw(x,n,ni,t105)):is(ts(pw(x,m,mi,t106),pw(x,n,ni,t105)),ts(pw(x,n,ni,t105),pw(x,m,mi,t106)))
+qn@t110:=t103(x,n,m,ni,mi,t104,t104a,qn,nm):is(ts(pw(x,n,ni,t105),pw(x,m,mi,t106)),pw(x,pl"r"(n,m),intpl(n,ni,m,mi),t107))
+na@t111:=ispw2(x,pl"r"(n,m),pl"r"(m,n),compl"r"(n,m),intpl(n,ni,m,mi),intpl(m,mi,n,ni),t107,lemma294c):is(pw(x,pl"r"(n,m),intpl(n,ni,m,mi),t107),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c))
+qn@t112:=tr4is(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(pw(x,m,mi,t106),pw(x,n,ni,t105)),ts(pw(x,n,ni,t105),pw(x,m,mi,t106)),pw(x,pl"r"(n,m),intpl(n,ni,m,mi),t107),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),t108,t109,t110,t111):prop1
+na@[i:is"r"(m,0)]
+t113:=ists1(pw(x,m,mi,lemma294a),1c,pw(x,n,ni,lemma294b),0exp(x,m,mi,lemma294a,i)):is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(1c,pw(x,n,ni,lemma294b)))
+t114:=satz222b(pw(x,n,ni,lemma294b)):is(ts(1c,pw(x,n,ni,lemma294b)),pw(x,n,ni,lemma294b))
+t115:=symis(real,pl"r"(m,n),n,pl01"r"(m,n,i)):is"r"(n,pl"r"(m,n))
+t116:=ispw2(x,n,pl"r"(m,n),t115,ni,intpl(m,mi,n,ni),lemma294b,lemma294c):is(pw(x,n,ni,lemma294b),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c))
+t117:=tr3is(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(1c,pw(x,n,ni,lemma294b)),pw(x,n,ni,lemma294b),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),t113,t114,t116):prop1
+na@[i:is"r"(n,0)]
+t118:=t117(x,n,m,ni,mi,t104,t104a,i):is(ts(pw(x,n,ni,t105),pw(x,m,mi,t106)),pw(x,pl"r"(n,m),intpl(n,ni,m,mi),t107))
+t119:=tr4is(cx,ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),ts(pw(x,m,mi,t106),pw(x,n,ni,t105)),ts(pw(x,n,ni,t105),pw(x,m,mi,t106)),pw(x,pl"r"(n,m),intpl(n,ni,m,mi),t107),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c),t108,t109,t118,t111):prop1
+na@[pm:pos(m)]
+t120:=ore2(not(pos(m)),not(pos(n)),t16,weli(pos(m),pm)):not(pos(n))
+t121:=rapp(n,prop1,th2"l.imp"(pos(n),prop1,t120),[t:is"r"(n,0)]t119(t),[t:neg(n)]t103(pm,t)):prop1
+na@[nm:neg(m)]
+t122:=rapp(n,prop1,[t:pos(n)]t112(nm,t),[t:is"r"(n,0)]t119(t),[t:neg(n)]t41(nm,t)):prop1
+na@t123:=rapp(m,prop1,[t:pos(m)]t121(t),[t:is"r"(m,0)]t117(t),[t:neg(m)]t122(t)):prop1
+-9294
+o@satz294:=th1"l.imp"(and(pos(m),pos(n)),prop1".9294",[t:and(pos(m),pos(n))]t14".9294"(t),[t:not(and(pos(m),pos(n)))]t123".9294"(t)):is(ts(pw(x,m,mi,lemma294a),pw(x,n,ni,lemma294b)),pw(x,pl"r"(m,n),intpl(m,mi,n,ni),lemma294c))
+ni@[o:nis(x,0c)]
+lemma295a:=ori1(nis(x,0c),pos(m),o):or(nis(x,0c),pos(m))
+lemma295b:=ori1(nis(x,0c),pos(n),o):or(nis(x,0c),pos(n))
+lemma295c:=ori1(nis(x,0c),pos(mn"r"(m,n)),o):or(nis(x,0c),pos(mn"r"(m,n)))
++9295
+t1:=ori1(nis(x,0c),and(pos(mn"r"(m,n)),pos(n)),o):or(nis(x,0c),and(pos(mn"r"(m,n)),pos(n)))
+t2:=intmn(m,mi,n,ni):intrl(mn"r"(m,n))
+t3:=lemma294a(x,mn"r"(m,n),n,t2,ni,t1):or(nis(x,0c),pos(mn"r"(m,n)))
+t4:=lemma294b(x,mn"r"(m,n),n,t2,ni,t1):or(nis(x,0c),pos(n))
+t5:=lemma294c(x,mn"r"(m,n),n,t2,ni,t1):or(nis(x,0c),pos(pl"r"(mn"r"(m,n),n)))
+t6:=ists12(pw(x,mn"r"(m,n),t2,lemma295c),pw(x,mn"r"(m,n),t2,t3),pw(x,n,ni,lemma295b),pw(x,n,ni,t4),ispw1(x,x,mn"r"(m,n),refis(cx,x),t2,lemma295c,t3),ispw1(x,x,n,refis(cx,x),ni,lemma295b,t4)):is(ts(pw(x,mn"r"(m,n),t2,lemma295c),pw(x,n,ni,lemma295b)),ts(pw(x,mn"r"(m,n),t2,t3),pw(x,n,ni,t4)))
+t7:=satz294(x,mn"r"(m,n),n,t2,ni,t1):is(ts(pw(x,mn"r"(m,n),t2,t3),pw(x,n,ni,t4)),pw(x,pl"r"(mn"r"(m,n),n),intpl(mn"r"(m,n),t2,n,ni),t5))
+t8:=plmn(m,n):is"r"(pl"r"(mn"r"(m,n),n),m)
+t9:=ispw2(x,pl"r"(mn"r"(m,n),n),m,t8,intpl(mn"r"(m,n),t2,n,ni),mi,t5,lemma295a):is(pw(x,pl"r"(mn"r"(m,n),n),intpl(mn"r"(m,n),t2,n,ni),t5),pw(x,m,mi,lemma295a))
+t10:=tr3is(cx,ts(pw(x,mn"r"(m,n),t2,lemma295c),pw(x,n,ni,lemma295b)),ts(pw(x,mn"r"(m,n),t2,t3),pw(x,n,ni,t4)),pw(x,pl"r"(mn"r"(m,n),n),intpl(mn"r"(m,n),t2,n,ni),t5),pw(x,m,mi,lemma295a),t6,t7,t9):is(ts(pw(x,mn"r"(m,n),t2,lemma295c),pw(x,n,ni,lemma295b)),pw(x,m,mi,lemma295a))
+t11:=satz290(x,n,ni,lemma295b,o):nis(pw(x,n,ni,lemma295b),0c)
+-9295
+satz295:=satz229k(pw(x,m,mi,lemma295a),pw(x,n,ni,lemma295b),pw(x,mn"r"(m,n),t2".9295",lemma295c),t11".9295",t10".9295"):is(ov(pw(x,m,mi,lemma295a),pw(x,n,ni,lemma295b),satz290(x,n,ni,lemma295b,o)),pw(x,mn"r"(m,n),intmn(m,mi,n,ni),lemma295c))
+m@[mi:intrl(m)][n:nis(x,0c)]
+lemma296:=ori1(nis(x,0c),pos(m),n):or(nis(x,0c),pos(m))
++9296
+t1:=intrli0(0,refis(real,0)):intrl(0)
+t2:=lemma295a(x,0,m,t1,mi,n):or(nis(x,0c),pos(0))
+t3:=lemma295b(x,0,m,t1,mi,n):or(nis(x,0c),pos(m))
+t4:=lemma295c(x,0,m,t1,mi,n):or(nis(x,0c),pos(mn"r"(0,m)))
+t5:=satz290(x,m,mi,lemma296,n):nis(pw(x,m,mi,lemma296),0c)
+t6:=satz290(x,m,mi,t3,n):nis(pw(x,m,mi,t3),0c)
+t7:=symis(cx,pw(x,0,t1,t2),1c,0exp(x,0,t1,t2,refis(real,0))):is(1c,pw(x,0,t1,t2))
+t8:=ispw1(x,x,m,refis(cx,x),mi,lemma296,t3):is(pw(x,m,mi,lemma296),pw(x,m,mi,t3))
+t9:=isov12(1c,pw(x,0,t1,t2),pw(x,m,mi,lemma296),pw(x,m,mi,t3),t7,t8,t5,t6):is(ov(1c,pw(x,m,mi,lemma296),t5),ov(pw(x,0,t1,t2),pw(x,m,mi,t3),t6))
+t10:=satz295(x,0,m,t1,mi,n):is(ov(pw(x,0,t1,t2),pw(x,m,mi,t3),t6),pw(x,mn"r"(0,m),intmn(0,t1,m,mi),t4))
+t11:=pl01(0,m0"r"(m),refis(real,0)):is"r"(mn"r"(0,m),m0"r"(m))
+t12:=lemma296(x,m0"r"(m),intm0(m,mi),n):or(nis(x,0c),pos(m0"r"(m)))
+t13:=ispw2(x,mn"r"(0,m),m0"r"(m),t11,intmn(0,t1,m,mi),intm0(m,mi),t4,t12):is(pw(x,mn"r"(0,m),intmn(0,t1,m,mi),t4),pw(x,m0"r"(m),intm0(m,mi),t12))
+t14:=tr3is(cx,ov(1c,pw(x,m,mi,lemma296),t5),ov(pw(x,0,t1,t2),pw(x,m,mi,t3),t6),pw(x,mn"r"(0,m),intmn(0,t1,m,mi),t4),pw(x,m0"r"(m),intm0(m,mi),t12),t9,t10,t13):is(ov(1c,pw(x,m,mi,lemma296),t5),pw(x,m0"r"(m),intm0(m,mi),t12))
+-9296
+satz296:=t14".9296":is(ov(1c,pw(x,m,mi,lemma296),satz290(x,m,mi,lemma296,n)),pw(x,m0"r"(m),intm0(m,mi),lemma296(m0"r"(m),intm0(m,mi),n)))
+ni@[o:or(nis(x,0c),and(pos(m),pos(n)))]
++9297
+[p:nis(x,0c)]
+t1:=satz290(x,m,mi,lemma294a(o),p):nis(pw(x,m,mi,lemma294a(o)),0c)
+o@[a:and(pos(m),pos(n))]
+t2:=ande2(pos(m),pos(n),a):pos(n)
+t3:=postspp(m,n,ande1(pos(m),pos(n),a),t2):pos(ts"r"(m,n))
+-9297
+lemma297a:=th9"l.or"(nis(x,0c),and(pos(m),pos(n)),nis(pw(x,m,mi,lemma294a(o)),0c),pos(n),o,[t:nis(x,0c)]t1".9297"(t),[t:and(pos(m),pos(n))]t2".9297"(t)):or(nis(pw(x,m,mi,lemma294a(o)),0c),pos(n))
+lemma297b:=th8"l.or"(nis(x,0c),and(pos(m),pos(n)),pos(ts"r"(m,n)),o,[t:and(pos(m),pos(n))]t3".9297"(t)):or(nis(x,0c),pos(ts"r"(m,n)))
+mi@[o:or(nis(x,0c),pos(m))][i:is(x,0c)]
++*9297
+i@t4:=ore2(nis(x,0c),pos(m),o,weli(is(x,0c),i)):pos(m)
+m1:=ntofrl(m,posintnatrl(m,t4,mi)):nat
+t5:=posexp(x,m,mi,o,t4):is(pw(x,m,mi,o),prod(m1,[t:1to(m1)]x))
+t6:=satz289b(m1,[t:1to(m1)]x,xout(m1),i):is(prod(m1,[t:1to(m1)]x),0c)
+t7:=tris(cx,pw(x,m,mi,o),prod(m1,[t:1to(m1)]x),0c,t5,t6):is(pw(x,m,mi,o),0c)
+-9297
+i@pw0:=t7".9297":is(pw(x,m,mi,o),0c)
+ni@[o:or(nis(x,0c),and(pos(m),pos(n)))]
++*9297
+ni@t8:=intts(m,mi,n,ni):intrl(ts"r"(m,n))
+o@prop1:=is(pw(pw(x,m,mi,lemma294a(o)),n,ni,lemma297a(o)),pw(x,ts"r"(m,n),t8,lemma297b(o))):'prop'
+[i:is(x,0c)]
+t9:=pw0(x,m,mi,lemma294a(o),i):is(pw(x,m,mi,lemma294a(o)),0c)
+t10:=pw0(pw(x,m,mi,lemma294a(o)),n,ni,lemma297a(o),t9):is(pw(pw(x,m,mi,lemma294a(o)),n,ni,lemma297a(o)),0c)
+t11:=pw0(x,ts"r"(m,n),t8,lemma297b(o),i):is(pw(x,ts"r"(m,n),t8,lemma297b(o)),0c)
+t12:=tris2(cx,pw(pw(x,m,mi,lemma294a(o)),n,ni,lemma297a(o)),pw(x,ts"r"(m,n),t8,lemma297b(o)),0c,t10,t11):prop1
+m@[mi:intrl(m)][p:nis(x,0c)]
+t13:=ori1(nis(x,0c),pos(m),p):or(nis(x,0c),pos(m))
+p0:=pw(x,m,mi,t13):cx
+[n:nat]
+nr:=rlofnt(n):real
+t14:=natintrl(nr,natrli(n)):intrl(nr)
+t15:=ori2(nis(p0,0c),pos(nr),natpos(nr,natrli(n))):or(nis(p0,0c),pos(nr))
+t16:=ori1(nis(x,0c),pos(ts"r"(m,nr)),p):or(nis(x,0c),pos(ts"r"(m,nr)))
+t17:=intts(m,mi,nr,t14):intrl(ts"r"(m,nr))
+prop2:=is(pw(p0,nr,t14,t15),pw(x,ts"r"(m,nr),t17,t16)):'prop'
+p@t18:=ispw1(p0,p0,1rl,refis(cx,p0),intrl1,t15(1),lemma291(p0)):is(pw(p0,1rl,t14(1),t15(1)),pw(p0,1rl,intrl1,lemma291(p0)))
+t19:=satz291(p0):is(pw(p0,1rl,intrl1,lemma291(p0)),p0)
+t20:=ispw2(x,m,ts"r"(m,1rl),satz195a(m),mi,t17(1),t13,t16(1)):is(p0,pw(x,ts"r"(m,1rl),t17(1),t16(1)))
+t21:=tr3is(cx,pw(p0,1rl,t14(1),t15(1)),pw(p0,1rl,intrl1,lemma291(p0)),p0,pw(x,ts"r"(m,1rl),t17(1),t16(1)),t18,t19,t20):prop2(1)
+n@[p2:prop2(n)]
+n1:=pl"n"(n,1):nat
+t22:=satz290(x,m,mi,t13,p):nis(p0,0c)
+t23:=ori1(nis(p0,0c),and(pos(nr),pos(1rl)),t22):or(nis(p0,0c),and(pos(nr),pos(1rl)))
+t24:=lemma294a(p0,nr,1rl,t14,intrl1,t23):or(nis(p0,0c),pos(nr))
+t25:=lemma294b(p0,nr,1rl,t14,intrl1,t23):or(nis(p0,0c),pos(1rl))
+t26:=lemma294c(p0,nr,1rl,t14,intrl1,t23):or(nis(p0,0c),pos(pl"r"(nr,1rl)))
+t27:=ispw2(p0,nr(n1),pl"r"(nr,1rl),satzr155a(n,1),t14(n1),intpl(nr,t14,1rl,intrl1),t15(n1),t26):is(pw(p0,nr(n1),t14(n1),t15(n1)),pw(p0,pl"r"(nr,1rl),intpl(nr,t14,1rl,intrl1),t26))
+t27a:=satz294(p0,nr,1rl,t14,intrl1,t23):is(ts(pw(p0,nr,t14,t24),pw(p0,1rl,intrl1,t25)),pw(p0,pl"r"(nr,1rl),intpl(nr,t14,1rl,intrl1),t26))
+t28:=tris2(cx,pw(p0,nr(n1),t14(n1),t15(n1)),ts(pw(p0,nr,t14,t24),pw(p0,1rl,intrl1,t25)),pw(p0,pl"r"(nr,1rl),intpl(nr,t14,1rl,intrl1),t26),t27,t27a):is(pw(p0,nr(n1),t14(n1),t15(n1)),ts(pw(p0,nr,t14,t24),pw(p0,1rl,intrl1,t25)))
+t29:=ori1(nis(x,0c),and(pos(ts"r"(m,nr)),pos(m)),p):or(nis(x,0c),and(pos(ts"r"(m,nr)),pos(m)))
+t30:=lemma294a(x,ts"r"(m,nr),m,t17,mi,t29):or(nis(x,0c),pos(ts"r"(m,nr)))
+t31:=lemma294b(x,ts"r"(m,nr),m,t17,mi,t29):or(nis(x,0c),pos(m))
+t32:=lemma294c(x,ts"r"(m,nr),m,t17,mi,t29):or(nis(x,0c),pos(pl"r"(ts"r"(m,nr),m)))
+t33:=tr3is(cx,pw(p0,nr,t14,t24),pw(p0,nr,t14,t15),pw(x,ts"r"(m,nr),t17,t16),pw(x,ts"r"(m,nr),t17,t30),ispw1(p0,p0,nr,refis(cx,p0),t14,t24,t15),p2,ispw1(x,x,ts"r"(m,nr),refis(cx,x),t17,t16,t30)):is(pw(p0,nr,t14,t24),pw(x,ts"r"(m,nr),t17,t30))
+t34:=tr3is(cx,pw(p0,1rl,intrl1,t25),pw(p0,1rl,intrl1,lemma291(p0)),p0,pw(x,m,mi,t31),ispw1(p0,p0,1rl,refis(cx,p0),intrl1,t25,lemma291(p0)),t19,ispw1(x,x,m,refis(cx,x),mi,t13,t31)):is(pw(p0,1rl,intrl1,t25),pw(x,m,mi,t31))
+t35:=ists12(pw(p0,nr,t14,t24),pw(x,ts"r"(m,nr),t17,t30),pw(p0,1rl,intrl1,t25),pw(x,m,mi,t31),t33,t34):is(ts(pw(p0,nr,t14,t24),pw(p0,1rl,intrl1,t25)),ts(pw(x,ts"r"(m,nr),t17,t30),pw(x,m,mi,t31)))
+t36:=satz294(x,ts"r"(m,nr),m,t17,mi,t29):is(ts(pw(x,ts"r"(m,nr),t17,t30),pw(x,m,mi,t31)),pw(x,pl"r"(ts"r"(m,nr),m),intpl(ts"r"(m,nr),t17,m,mi),t32))
+t37:=tr3is(real,pl"r"(ts"r"(m,nr),m),pl"r"(ts"r"(m,nr),ts"r"(m,1rl)),ts"r"(m,pl"r"(nr,1rl)),ts"r"(m,nr(n1)),ispl2"r"(m,ts"r"(m,1rl),ts"r"(m,nr),satz195a(m)),distpt2"r"(m,nr,1rl),ists2"r"(pl"r"(nr,1rl),nr(n1),m,satzr155b(n,1))):is"r"(pl"r"(ts"r"(m,nr),m),ts"r"(m,nr(n1)))
+t38:=ispw2(x,pl"r"(ts"r"(m,nr),m),ts"r"(m,nr(n1)),t37,intpl(ts"r"(m,nr),t17,m,mi),t17(n1),t32,t16(n1)):is(pw(x,pl"r"(ts"r"(m,nr),m),intpl(ts"r"(m,nr),t17,m,mi),t32),pw(x,ts"r"(m,nr(n1)),t17(n1),t16(n1)))
+t39:=tr4is(cx,pw(p0,nr(n1),t14(n1),t15(n1)),ts(pw(p0,nr,t14,t24),pw(p0,1rl,intrl1,t25)),ts(pw(x,ts"r"(m,nr),t17,t30),pw(x,m,mi,t31)),pw(x,pl"r"(ts"r"(m,nr),m),intpl(ts"r"(m,nr),t17,m,mi),t32),pw(x,ts"r"(m,nr(n1)),t17(n1),t16(n1)),t28,t35,t36,t38):prop2(n1)
+t40:=isp(nat,[t:nat]prop2(t),n1,<n>suc,t39,satz4a(n)):prop2(<n>suc)
+n@t41:=induction([t:nat]prop2(t),t21,[t:nat][u:prop2(t)]t40(t,u),n):prop2(n)
+o@[p:nis(x,0c)][q:pos(n)]
+t42:=posintnatrl(n,q,ni):natrl(n)
+n0:=ntofrl(n,t42):nat
+t43:=isrlnt1(n,t42):is"r"(n,rlofnt(n0))
+t44:=isrlnt2(n,t42):is"r"(rlofnt(n0),n)
+o@p1:=pw(x,m,mi,lemma294a(o)):cx
+q@t44a:=ispw2(x,m,m,refis(real,m),mi,mi,lemma294a(o),t13(mi,p)):is(p1,p0(mi,p))
+t45:=ispw12(p1,p0(mi,p),n,rlofnt(n0),t44a,t43,ni,t14(mi,p,n0),lemma297a(o),t15(mi,p,n0)):is(pw(p1,n,ni,lemma297a(o)),pw(p0(mi,p),rlofnt(n0),t14(mi,p,n0),t15(mi,p,n0)))
+t46:=t41(mi,p,n0):is(pw(p0(mi,p),rlofnt(n0),t14(mi,p,n0),t15(mi,p,n0)),pw(x,ts"r"(m,rlofnt(n0)),t17(mi,p,n0),t16(mi,p,n0)))
+t47:=ists2"r"(rlofnt(n0),n,m,t44):is"r"(ts"r"(m,rlofnt(n0)),ts"r"(m,n))
+t48:=ispw2(x,ts"r"(m,rlofnt(n0)),ts"r"(m,n),t47,t17(mi,p,n0),t8,t16(mi,p,n0),lemma297b(o)):is(pw(x,ts"r"(m,rlofnt(n0)),t17(mi,p,n0),t16(mi,p,n0)),pw(x,ts"r"(m,n),t8,lemma297b(o)))
+t49:=tr3is(cx,pw(p1,n,ni,lemma297a(o)),pw(p0(mi,p),rlofnt(n0),t14(mi,p,n0),t15(mi,p,n0)),pw(x,ts"r"(m,rlofnt(n0)),t17(mi,p,n0),t16(mi,p,n0)),pw(x,ts"r"(m,n),t8,lemma297b(o)),t45,t46,t48):prop1
+p@[i:is"r"(n,0)]
+t50:=0exp(p1,n,ni,lemma297a(o),i):is(pw(p1,n,ni,lemma297a(o)),1c)
+t51:=ts02"r"(m,n,i):is"r"(ts"r"(m,n),0)
+t52:=0exp(x,ts"r"(m,n),t8,lemma297b(o),t51):is(pw(x,ts"r"(m,n),t8,lemma297b(o)),1c)
+t53:=tris2(cx,pw(p1,n,ni,lemma297a(o)),pw(x,ts"r"(m,n),t8,lemma297b(o)),1c,t50,t52):prop1
+p@[q:neg(n)]
+an:=abs(n):real
+t54:=intabs(n,ni):intrl(an)
+t55:=ori1(nis(x,0c),and(pos(m),pos(an)),p):or(nis(x,0c),and(pos(m),pos(an)))
+p1t55:=p1(an,mi,t54,t55):cx
+t56:=satz166e(n,nnot0(n,q)):pos(an)
+t56a:=lemma294a(an,mi,t54,t55):or(nis(x,0c),pos(m))
+t57:=lemma297a(an,mi,t54,t55):or(nis(p1t55,0c),pos(an))
+t58:=lemma297b(an,mi,t54,t55):or(nis(x,0c),pos(ts"r"(m,an)))
+t59:=t49(an,mi,t54,t55,p,t56):is(pw(p1t55,an,t54,t57),pw(x,ts"r"(m,an),t8(an,mi,t54),t58))
+t60:=satz177c(an,n,absn(n,q)):is"r"(n,m0"r"(an))
+t61:=intm0(an,t54):intrl(m0"r"(an))
+t62:=satz290(x,m,mi,t56a,p):nis(p1t55,0c)
+t63:=lemma296(p1t55,an,t54,t62):or(nis(p1t55,0c),pos(an))
+t64:=satz290(p1t55,an,t54,t63,t62):nis(pw(p1t55,an,t54,t63),0c)
+t65:=lemma296(p1t55,m0"r"(an),t61,t62):or(nis(p1t55,0c),pos(m0"r"(an)))
+t66:=satz296(p1t55,an,t54,t62):is(ov(1c,pw(p1t55,an,t54,t63),t64),pw(p1t55,m0"r"(an),t61,t65))
+t67:=ispw1(x,x,m,refis(cx,x),mi,lemma294a(o),t56a):is(p1,p1t55)
+t68:=ispw12(p1,p1t55,n,m0"r"(an),t67,t60,ni,t61,lemma297a(o),t65):is(pw(p1,n,ni,lemma297a(o)),pw(p1t55,m0"r"(an),t61,t65))
+t69:=tris2(cx,pw(p1,n,ni,lemma297a(o)),ov(1c,pw(p1t55,an,t54,t63),t64),pw(p1t55,m0"r"(an),t61,t65),t68,t66):is(pw(p1,n,ni,lemma297a(o)),ov(1c,pw(p1t55,an,t54,t63),t64))
+t70:=tris(real,m0"r"(ts"r"(m,an)),ts"r"(m,m0"r"(an)),ts"r"(m,n),satz197f(m,an),ists2"r"(m0"r"(an),n,m,symis(real,n,m0"r"(an),t60))):is"r"(m0"r"(ts"r"(m,an)),ts"r"(m,n))
+t71:=intm0(ts"r"(m,an),t8(an,mi,t54)):intrl(m0"r"(ts"r"(m,an)))
+t72:=lemma296(x,ts"r"(m,an),t8(an,mi,t54),p):or(nis(x,0c),pos(ts"r"(m,an)))
+t73:=satz290(x,ts"r"(m,an),t8(an,mi,t54),t72,p):nis(pw(x,ts"r"(m,an),t8(an,mi,t54),t72),0c)
+t74:=lemma296(x,m0"r"(ts"r"(m,an)),t71,p):or(nis(x,0c),pos(m0"r"(ts"r"(m,an))))
+t75:=satz296(x,ts"r"(m,an),t8(an,mi,t54),p):is(ov(1c,pw(x,ts"r"(m,an),t8(an,mi,t54),t72),t73),pw(x,m0"r"(ts"r"(m,an)),t71,t74))
+t76:=ispw2(x,m0"r"(ts"r"(m,an)),ts"r"(m,n),t70,t71,t8,t74,lemma297b(o)):is(pw(x,m0"r"(ts"r"(m,an)),t71,t74),pw(x,ts"r"(m,n),t8,lemma297b(o)))
+t77:=ispw1(p1t55,p1t55,an,refis(cx,p1t55),t54,t63,t57):is(pw(p1t55,an,t54,t63),pw(p1t55,an,t54,t57))
+t78:=ispw1(x,x,ts"r"(m,an),refis(cx,x),t8(an,mi,t54),t58,t72):is(pw(x,ts"r"(m,an),t8(an,mi,t54),t58),pw(x,ts"r"(m,an),t8(an,mi,t54),t72))
+t79:=tr3is(cx,pw(p1t55,an,t54,t63),pw(p1t55,an,t54,t57),pw(x,ts"r"(m,an),t8(an,mi,t54),t58),pw(x,ts"r"(m,an),t8(an,mi,t54),t72),t77,t59,t78):is(pw(p1t55,an,t54,t63),pw(x,ts"r"(m,an),t8(an,mi,t54),t72))
+t80:=isov2(pw(p1t55,an,t54,t63),pw(x,ts"r"(m,an),t8(an,mi,t54),t72),1c,t79,t64,t73):is(ov(1c,pw(p1t55,an,t54,t63),t64),ov(1c,pw(x,ts"r"(m,an),t8(an,mi,t54),t72),t73))
+t81:=tr4is(cx,pw(p1,n,ni,lemma297a(o)),ov(1c,pw(p1t55,an,t54,t63),t64),ov(1c,pw(x,ts"r"(m,an),t8(an,mi,t54),t72),t73),pw(x,m0"r"(ts"r"(m,an)),t71,t74),pw(x,ts"r"(m,n),t8,lemma297b(o)),t69,t80,t75,t76):prop1
+p@t82:=rapp(n,prop1,[t:pos(n)]t49(t),[t:is"r"(n,0)]t53(t),[t:neg(n)]t81(t)):prop1
+-9297
+o@satz297:=th1"l.imp"(is(x,0c),prop1".9297",[t:is(x,0c)]t12".9297"(t),[t:nis(x,0c)]t82".9297"(t)):is(pw(pw(x,m,mi,lemma294a(o)),n,ni,lemma297a(o)),pw(x,ts"r"(m,n),intts(m,mi,n,ni),lemma297b(o)))
+@[r:real][s:real]
++10298
+t1:=tris(cx,pl(pli(r,0),pli(s,0)),pli(pl"r"(r,s),pl"r"(0,0)),pli(pl"r"(r,s),0),plis12a(r,0,s,0),isrecx2(pl"r"(0,0),0,pl"r"(r,s),pl01(0,0,refis(real,0)))):is(pl(pli(r,0),pli(s,0)),pli(pl"r"(r,s),0))
+-10298
+satz298a:=symis(cx,pl(pli(r,0),pli(s,0)),pli(pl"r"(r,s),0),t1".10298"):is(pli(pl"r"(r,s),0),pl(pli(r,0),pli(s,0)))
+satz298b:=t1".10298":is(pl(pli(r,0),pli(s,0)),pli(pl"r"(r,s),0))
++*10298
+s@t2:=tris(cx,mn(pli(r,0),pli(s,0)),pli(mn"r"(r,s),mn"r"(0,0)),pli(mn"r"(r,s),0),mnis12a(r,0,s,0),isrecx2(mn"r"(0,0),0,mn"r"(r,s),pl02(0,m0"r"(0),satz176b(0,refis(real,0))))):is(mn(pli(r,0),pli(s,0)),pli(mn"r"(r,s),0))
+-10298
+s@satz298c:=symis(cx,mn(pli(r,0),pli(s,0)),pli(mn"r"(r,s),0),t2".10298"):is(pli(mn"r"(r,s),0),mn(pli(r,0),pli(s,0)))
+satz298d:=t2".10298":is(mn(pli(r,0),pli(s,0)),pli(mn"r"(r,s),0))
++*10298
+s@t3:=pl02(ts"r"(r,s),m0"r"(ts"r"(0,0)),satz176b(ts"r"(0,0),ts01(0,0,refis(real,0)))):is"r"(mn"r"(ts"r"(r,s),ts"r"(0,0)),ts"r"(r,s))
+t4:=tris(real,pl"r"(ts"r"(r,0),ts"r"(0,s)),ts"r"(r,0),0,pl02(ts"r"(r,0),ts"r"(0,s),ts01(0,s,refis(real,0))),ts02(r,0,refis(real,0))):is"r"(pl"r"(ts"r"(r,0),ts"r"(0,s)),0)
+t5:=tris(cx,ts(pli(r,0),pli(s,0)),pli(mn"r"(ts"r"(r,s),ts"r"(0,0)),pl"r"(ts"r"(r,0),ts"r"(0,s))),pli(ts"r"(r,s),0),tsis12a(r,0,s,0),isrecx12(mn"r"(ts"r"(r,s),ts"r"(0,0)),ts"r"(r,s),pl"r"(ts"r"(r,0),ts"r"(0,s)),0,t3,t4)):is(ts(pli(r,0),pli(s,0)),pli(ts"r"(r,s),0))
+-10298
+s@satz298e:=symis(cx,ts(pli(r,0),pli(s,0)),pli(ts"r"(r,s),0),t5".10298"):is(pli(ts"r"(r,s),0),ts(pli(r,0),pli(s,0)))
+satz298f:=t5".10298":is(ts(pli(r,0),pli(s,0)),pli(ts"r"(r,s),0))
+[n:nis"r"(s,0)]
++*10298
+n@[i:is(pli(s,0),0c)]
+t6:=tr3is(real,s,re(pli(s,0)),re(0c),0,isre(s,0),iscere(pli(s,0),0c,i),reis(0,0)):is"r"(s,0)
+-10298
+n@lemma298:=th3"l.imp"(is(pli(s,0),0c),is"r"(s,0),n,[t:is(pli(s,0),0c)]t6".10298"(t)):nis(pli(s,0),0c)
++*10298
+n@t7:=tris(cx,ts(pli(s,0),pli(ov"r"(r,s,n),0)),pli(ts"r"(s,ov"r"(r,s,n)),0),pli(r,0),t5(s,ov"r"(r,s,n)),isrecx1(ts"r"(s,ov"r"(r,s,n)),r,0,satz204c(r,s,n))):is(ts(pli(s,0),pli(ov"r"(r,s,n),0)),pli(r,0))
+-10298
+n@satz298g:=satz229g(pli(r,0),pli(s,0),pli(ov"r"(r,s,n),0),lemma298,t7".10298"):is(pli(ov"r"(r,s,n),0),ov(pli(r,0),pli(s,0),lemma298))
+satz298h:=satz229h(pli(r,0),pli(s,0),pli(ov"r"(r,s,n),0),lemma298,t7".10298"):is(ov(pli(r,0),pli(s,0),lemma298),pli(ov"r"(r,s,n),0))
++*10298
+r@t8:=tris(cx,m0(pli(r,0)),pli(m0"r"(r),m0"r"(0)),pli(m0"r"(r),0),m0isa(r,0),isrecx2(m0"r"(0),0,m0"r"(r),satz176b(0,refis(real,0)))):is(m0(pli(r,0)),pli(m0"r"(r),0))
+-10298
+r@satz298j:=symis(cx,m0(pli(r,0)),pli(m0"r"(r),0),t8".10298"):is(pli(m0"r"(r),0),m0(pli(r,0)))
+satz298k:=t8".10298":is(m0(pli(r,0)),pli(m0"r"(r),0))
++*10298
+r@t9:=tris(real,mod2(pli(r,0)),ts"r"(re(pli(r,0)),re(pli(r,0))),ts"r"(r,r),pl02(ts"r"(re(pli(r,0)),re(pli(r,0))),ts"r"(im(pli(r,0)),im(pli(r,0))),ts01(im(pli(r,0)),im(pli(r,0)),imis(r,0))),ists12"r"(re(pli(r,0)),r,re(pli(r,0)),r,reis(r,0),reis(r,0))):is"r"(mod2(pli(r,0)),ts"r"(r,r))
+ar:=abs(r):real
+[p:pos(r)]
+t10:=satz196a(r,r,p,p):is"r"(ts"r"(r,r),ts"r"(ar,ar))
+r@[i:is"r"(r,0)]
+t11:=tris2(real,ts"r"(r,r),ts"r"(ar,ar),0,ts01(r,r,i),ts01(ar,ar,abs0(r,i))):is"r"(ts"r"(r,r),ts"r"(ar,ar))
+r@[n:neg(r)]
+t12:=satz196b(r,r,n,n):is"r"(ts"r"(r,r),ts"r"(ar,ar))
+r@t13:=rapp(r,is"r"(ts"r"(r,r),ts"r"(ar,ar)),[t:pos(r)]t10(t),[t:is"r"(r,0)]t11(t),[t:neg(r)]t12(t)):is"r"(ts"r"(r,r),ts"r"(ar,ar))
+t14:=tris(real,mod2(pli(r,0)),ts"r"(r,r),ts"r"(ar,ar),t9,t13):is"r"(mod2(pli(r,0)),ts"r"(ar,ar))
+t15:=th1"l.imp"(is"r"(r,0),not(neg(ar)),[t:is"r"(r,0)]0notn(ar,abs0(r,t)),[t:nis"r"(r,0)]pnotn(ar,satz166e(r,t))):not(neg(ar))
+-10298
+r@satz298l:=thsqrt3(mod2(pli(r,0)),lemma5(pli(r,0)),abs(r),t15".10298",t14".10298"):is"r"(mod(pli(r,0)),abs(r))
+satz298m:=symis(real,mod(pli(r,0)),abs(r),satz298l):is"r"(abs(r),mod(pli(r,0)))
+cofrl:=pli(r,0):complex
+s@[i:is(cofrl(r),cofrl(s))]
+isrlic:=tr3is(real,r,re(cofrl(r)),re(cofrl(s)),s,isre(r,0),iscere(cofrl(r),cofrl(s),i),reis(s,0)):is"r"(r,s)
+s@[i:is"r"(r,s)]
+isrlec:=isrecx1(r,s,0,i):is(cofrl(r),cofrl(s))
++v10
+@t1:=[t:real][u:real][v:is(cofrl(t),cofrl(u))]isrlic(t,u,v):injective(real,cx,[t:real]cofrl(t))
+-v10
+@[x:cx]
+realc:=image(real,cx,[t:real]cofrl(t),x):'prop'
+r@reali:=imagei(real,cx,[t:real]cofrl(t),r):realc(cofrl(r))
+x@[rx:realc(x)]
+rlofc:=soft(real,cx,[t:real]cofrl(t),t1".v10",x,rx):real
+[y:cx][ry:realc(y)][i:is"r"(rlofc(x,rx),rlofc(y,ry))]
+iscirl:=isinve(real,cx,[t:real]cofrl(t),t1".v10",x,rx,y,ry,i):is(x,y)
+ry@[i:is(x,y)]
+iscerl:=isinv(real,cx,[t:real]cofrl(t),t1".v10",x,rx,y,ry,i):is"r"(rlofc(x,rx),rlofc(y,ry))
+r@isrlc1:=isst1(real,cx,[t:real]cofrl(t),t1".v10",r):is"r"(r,rlofc(cofrl(r),reali(r)))
+isrlc2:=isst2(real,cx,[t:real]cofrl(t),t1".v10",r):is"r"(rlofc(cofrl(r),reali(r)),r)
+rx@iscrl1:=ists1"e"(real,cx,[t:real]cofrl(t),t1".v10",x,rx):is(x,cofrl(rlofc(x,rx)))
+iscrl2:=ists2"e"(real,cx,[t:real]cofrl(t),t1".v10",x,rx):is(cofrl(rlofc(x,rx)),x)
+@[n:nat]
+cofn:=cofrl(rlofnt(n)):complex
+[m:nat][i:is"n"(n,m)]
+isnec:=isrlec(rlofnt(n),rlofnt(m),isnterl(n,m,i)):is(cofn(n),cofn(m))
+m@[i:is(cofn(n),cofn(m))]
+isnic:=isntirl(n,m,isrlic(rlofnt(n),rlofnt(m),i)):is"n"(n,m)
++*v10
+@t2:=[t:nat][u:nat][v:is(cofn(t),cofn(u))]isnic(t,u,v):injective(nat,cx,[t:nat]cofn(t))
+-v10
+x@natc:=image(nat,cx,[t:nat]cofn(t),x):'prop'
+n@nati:=imagei(nat,cx,[t:nat]cofn(t),n):natc(cofn(n))
+x@[nx:natc(x)]
+nofc:=soft(nat,cx,[t:nat]cofn(t),t2".v10",x,nx):nat
+[y:cx][ny:natc(y)][i:is(x,y)]
+iscen:=isinv(nat,cx,[t:nat]cofn(t),t2".v10",x,nx,y,ny,i):is"n"(nofc(x,nx),nofc(y,ny))
+ny@[i:is"n"(nofc(x,nx),nofc(y,ny))]
+iscin:=isinve(nat,cx,[t:nat]cofn(t),t2".v10",x,nx,y,ny,i):is(x,y)
+n@isnc1:=isst1(nat,cx,[t:nat]cofn(t),t2".v10",n):is"n"(n,nofc(cofn(n),nati(n)))
+isnc2:=isst2(nat,cx,[t:nat]cofn(t),t2".v10",n):is"n"(nofc(cofn(n),nati(n)),n)
+nx@iscn1:=ists1"e"(nat,cx,[t:nat]cofn(t),t2".v10",x,nx):is(x,cofn(nofc(x,nx)))
+iscn2:=ists2"e"(nat,cx,[t:nat]cofn(t),t2".v10",x,nx):is(cofn(nofc(x,nx)),x)
+@natt:=ot(cx,[t:cx]natc(t)):'type'
+[nt:natt]
+cofnt:=in"e"(cx,[t:cx]natc(t),nt):cx
+natti:=inp(cx,[t:cx]natc(t),nt):natc(cofnt(nt))
+[mt:natt][i:is"e"(natt,nt,mt)]
+isntec:=isini(cx,[t:cx]natc(t),nt,mt,i):is(cofnt(nt),cofnt(mt))
+mt@[i:is(cofnt(nt),cofnt(mt))]
+isntic:=isine(cx,[t:cx]natc(t),nt,mt,i):is"e"(natt,nt,mt)
+nx@ntofc:=out(cx,[t:cx]natc(t),x,nx):natt
+ny@[i:is(x,y)]
+iscent:=isouti(cx,[t:cx]natc(t),x,nx,y,ny,i):is"e"(natt,ntofc(x,nx),ntofc(y,ny))
+ny@[i:is"e"(natt,ntofc(x,nx),ntofc(y,ny))]
+iscint:=isoute(cx,[t:cx]natc(t),x,nx,y,ny,i):is(x,y)
+nt@isntc1:=isoutin(cx,[t:cx]natc(t),nt):is"e"(natt,nt,ntofc(cofnt(nt),natti(nt)))
+isntc2:=symis(natt,nt,ntofc(cofnt(nt),natti(nt)),isntc1):is"e"(natt,ntofc(cofnt(nt),natti(nt)),nt)
+nx@iscnt1:=isinout(cx,[t:cx]natc(t),x,nx):is(x,cofnt(ntofc(x,nx)))
+iscnt2:=symis(cx,x,cofnt(ntofc(x,nx)),iscnt1):is(cofnt(ntofc(x,nx)),x)
+n@ntofn:=ntofc(cofn(n),nati(n)):natt
+m@[i:is"n"(n,m)]
+isnent:=iscent(cofn(n),nati(n),cofn(m),nati(m),isnec(n,m,i)):is"e"(natt,ntofn(n),ntofn(m))
+m@[i:is"e"(natt,ntofn(n),ntofn(m))]
+isnint:=isnic(n,m,iscint(cofn(n),nati(n),cofn(m),nati(m),i)):is"n"(n,m)
+nt@nofnt:=nofc(cofnt(nt),natti(nt)):nat
+mt@[i:is"e"(natt,nt,mt)]
+isnter:=iscen(cofnt(nt),natti(nt),cofnt(mt),natti(mt),isntec(nt,mt,i)):is"n"(nofnt(nt),nofnt(mt))
+mt@[i:is"n"(nofnt(nt),nofnt(mt))]
+isntin:=isntic(nt,mt,iscin(cofnt(nt),natti(nt),cofnt(mt),natti(mt),i)):is"e"(natt,nt,mt)
++*v10
+n@t3:=iscnt1(cofn(n),nati(n)):is(cofn(n),cofnt(ntofn(n)))
+-v10
+n@isnnt1:=tris(nat,n,nofc(cofn(n),nati(n)),nofnt(ntofn(n)),isnc1(n),iscen(cofn(n),nati(n),cofnt(ntofn(n)),natti(ntofn(n)),t3".v10")):is"n"(n,nofnt(ntofn(n)))
+isnnt2:=symis(nat,n,nofnt(ntofn(n)),isnnt1):is"n"(nofnt(ntofn(n)),n)
++*v10
+nt@t4:=iscn1(cofnt(nt),natti(nt)):is(cofnt(nt),cofn(nofnt(nt)))
+-v10
+nt@isntn1:=tris(natt,nt,ntofc(cofnt(nt),natti(nt)),ntofn(nofnt(nt)),isntc1(nt),iscent(cofnt(nt),natti(nt),cofn(nofnt(nt)),nati(nofnt(nt)),t4".v10")):is"e"(natt,nt,ntofn(nofnt(nt)))
+isntn2:=symis(natt,nt,ntofn(nofnt(nt)),isntn1):is"e"(natt,ntofn(nofnt(nt)),nt)
+@1t:=ntofn(1):natt
+suct:=[t:natt]ntofn(<nofnt(t)>suc):[t:natt]natt
++10299
+nt@[i:is"e"(natt,<nt>suct,1t)]
+t1:=isnint(<nofnt(nt)>suc,1,i):is"n"(<nofnt(nt)>suc,1)
+-10299
+nt@satz299a:=th3"l.imp"(is"e"(natt,<nt>suct,1t),is"n"(<nofnt(nt)>suc,1),<nofnt(nt)>ax3,[t:is"e"(natt,<nt>suct,1t)]t1".10299"(t)):not(is"e"(natt,<nt>suct,1t))
+@ax3t:=[t:natt]satz299a(t):[t:natt]not(is"e"(natt,<t>suct,1t))
+mt@[i:is"e"(natt,<nt>suct,<mt>suct)]
++*10299
+i"c"@t2:=isnint(<nofnt(nt)>suc,<nofnt(mt)>suc,i):is"n"(<nofnt(nt)>suc,<nofnt(mt)>suc)
+t3:=<t2><nofnt(mt)><nofnt(nt)>ax4:is"n"(nofnt(nt),nofnt(mt))
+-10299
+i@satz299b:=isntin(nt,mt,t3".10299"):is"e"(natt,nt,mt)
+@ax4t:=[t:natt][u:natt][v:is"e"(natt,<t>suct,<u>suct)]satz299b(t,u,v):[t:natt][u:natt][v:is"e"(natt,<t>suct,<u>suct)]is"e"(natt,t,u)
+[s:set(natt)]
+cond1t:=esti(natt,1t,s):'prop'
+cond2t:=all"l"(natt,[t:natt]imp(esti(natt,t,s),esti(natt,<t>suct,s))):'prop'
+[c1:cond1t][c2:cond2t]
++*10299
+c2@[n:nat]
+prop1:=esti(natt,ntofn(n),s):'prop'
+c2@t4:=c1:prop1(1)
+n@[p:prop1(n)]
+t5:=<p><ntofn(n)>c2:esti(natt,ntofn(<nofnt(ntofn(n))>suc),s)
+t6:=isp(nat,[t:nat]esti(natt,ntofn(<t>suc),s),nofnt(ntofn(n)),n,t5,isnnt2(n)):prop1(<n>suc)
+c2@[nt:natt]
+t7:=induction([t:nat]prop1(t),t4,[t:nat][u:prop1(t)]t6(t,u),nofnt(nt)):prop1(nofnt(nt))
+-10299
+c2@satz299c:=[t:natt]isp(natt,[u:natt]esti(natt,u,s),ntofn(nofnt(t)),t,t7".10299"(t),isntn2(t)):[t:natt]esti(natt,t,s)
+@ax5t:=[t:set(natt)][u:cond1t(t)][v:cond2t(t)]satz299c(t,u,v):[t:set(natt)][u:cond1t(t)][v:cond2t(t)][w:natt]esti(natt,w,t)
+ic:=pli(0,1rl):complex
++10300
+t1:=tsis12a(0,1rl,0,1rl):is(ts(ic,ic),pli(mn"r"(ts"r"(0,0),ts"r"(1rl,1rl)),pl"r"(ts"r"(0,1rl),ts"r"(1rl,0))))
+t2:=tris(real,mn"r"(ts"r"(0,0),ts"r"(1rl,1rl)),m0"r"(ts"r"(1rl,1rl)),m0"r"(1rl),pl01(ts"r"(0,0),m0"r"(ts"r"(1rl,1rl)),ts01(0,0,refis(real,0))),ism0"r"(ts"r"(1rl,1rl),1rl,satz195(1rl))):is"r"(mn"r"(ts"r"(0,0),ts"r"(1rl,1rl)),m0"r"(1rl))
+t3:=tris(real,pl"r"(ts"r"(0,1rl),ts"r"(1rl,0)),ts"r"(1rl,0),0,pl01(ts"r"(0,1rl),ts"r"(1rl,0),ts01(0,1rl,refis(real,0))),ts02(1rl,0,refis(real,0))):is"r"(pl"r"(ts"r"(0,1rl),ts"r"(1rl,0)),0)
+t4:=isrecx12(mn"r"(ts"r"(0,0),ts"r"(1rl,1rl)),m0"r"(1rl),pl"r"(ts"r"(0,1rl),ts"r"(1rl,0)),0,t2,t3):is(pli(mn"r"(ts"r"(0,0),ts"r"(1rl,1rl)),pl"r"(ts"r"(0,1rl),ts"r"(1rl,0))),cofrl(m0"r"(1rl)))
+t5:=satz298j(1rl):is(cofrl(m0"r"(1rl)),m0(1c))
+-10300
+satz2300:=tr3is(cx,ts(ic,ic),pli(mn"r"(ts"r"(0,0),ts"r"(1rl,1rl)),pl"r"(ts"r"(0,1rl),ts"r"(1rl,0))),cofrl(m0"r"(1rl)),m0(1c),t1".10300",t4".10300",t5".10300"):is(ts(ic,ic),m0(1c))
+[r:real][s:real]
++10301
+t1:=tsis12a(s,0,0,1rl):is(ts(cofrl(s),ic),pli(mn"r"(ts"r"(s,0),ts"r"(0,1rl)),pl"r"(ts"r"(s,1rl),ts"r"(0,0))))
+t2:=tris(real,mn"r"(ts"r"(s,0),ts"r"(0,1rl)),m0"r"(ts"r"(0,1rl)),0,pl01(ts"r"(s,0),m0"r"(ts"r"(0,1rl)),ts02(s,0,refis(real,0))),satz176b(ts"r"(0,1rl),ts01(0,1rl,refis(real,0)))):is"r"(mn"r"(ts"r"(s,0),ts"r"(0,1rl)),0)
+t3:=tris(real,pl"r"(ts"r"(s,1rl),ts"r"(0,0)),ts"r"(s,1rl),s,pl02(ts"r"(s,1rl),ts"r"(0,0),ts01(0,0,refis(real,0))),satz195(s)):is"r"(pl"r"(ts"r"(s,1rl),ts"r"(0,0)),s)
+t4:=isrecx12(mn"r"(ts"r"(s,0),ts"r"(0,1rl)),0,pl"r"(ts"r"(s,1rl),ts"r"(0,0)),s,t2,t3):is(pli(mn"r"(ts"r"(s,0),ts"r"(0,1rl)),pl"r"(ts"r"(s,1rl),ts"r"(0,0))),pli(0,s))
+t5:=tris(cx,ts(cofrl(s),ic),pli(mn"r"(ts"r"(s,0),ts"r"(0,1rl)),pl"r"(ts"r"(s,1rl),ts"r"(0,0))),pli(0,s),t1,t4):is(ts(cofrl(s),ic),pli(0,s))
+t6:=ispl2(ts(cofrl(s),ic),pli(0,s),cofrl(r),t5):is(pl(cofrl(r),ts(cofrl(s),ic)),pl(cofrl(r),pli(0,s)))
+t7:=plis12a(r,0,0,s):is(pl(cofrl(r),pli(0,s)),pli(pl"r"(r,0),pl"r"(0,s)))
+t8:=isrecx12(pl"r"(r,0),r,pl"r"(0,s),s,pl02(r,0,refis(real,0)),pl01(0,s,refis(real,0))):is(pli(pl"r"(r,0),pl"r"(0,s)),pli(r,s))
+-10301
+satz301a:=tr3is(cx,pl(cofrl(r),ts(cofrl(s),ic)),pl(cofrl(r),pli(0,s)),pli(pl"r"(r,0),pl"r"(0,s)),pli(r,s),t6".10301",t7".10301",t8".10301"):is"e"(cx,pl(cofrl(r),ts(cofrl(s),ic)),pli(r,s))
+satz301b:=symis(cx,pl(cofrl(r),ts(cofrl(s),ic)),pli(r,s),satz301a):is(pli(r,s),pl(cofrl(r),ts(cofrl(s),ic)))
+@[x:complex]
+satz301c:=tris(cx,x,pli(re(x),im(x)),pl(cofrl(re(x)),ts(cofrl(im(x)),ic)),ispli(x),satz301b(re(x),im(x))):is(x,pl(cofrl(re(x)),ts(cofrl(im(x)),ic)))
+satz301d:=symis(cx,x,pl(cofrl(re(x)),ts(cofrl(im(x)),ic)),satz301c):is(pl(cofrl(re(x)),ts(cofrl(im(x)),ic)),x)
+s@[t:real][u:real][i:is(pl(cofrl(r),ts(cofrl(s),ic)),pl(cofrl(t),ts(cofrl(u),ic)))]
++*10301
+i@t9:=tr3is(cx,pli(r,s),pl(cofrl(r),ts(cofrl(s),ic)),pl(cofrl(t),ts(cofrl(u),ic)),pli(t,u),satz301b(r,s),i,satz301a(t,u)):is(pli(r,s),pli(t,u))
+-10301
+i@satz301e:=tr3is(real,r,re(pli(r,s)),re(pli(t,u)),t,isre(r,s),iscere(pli(r,s),pli(t,u),t9".10301"),reis(t,u)):is"r"(r,t)
+satz301f:=tr3is(real,s,im(pli(r,s)),im(pli(t,u)),u,isim(r,s),isceim(pli(r,s),pli(t,u),t9".10301"),imis(t,u)):is"r"(s,u)
+-c
+-r
+-rp
+-rt
+-n
+-landau
+-eq
+-st
+-e
+-l
diff --git a/helm/software/lambda-delta/basic_ag/Make b/helm/software/lambda-delta/basic_ag/Make
new file mode 100644 (file)
index 0000000..1d2286b
--- /dev/null
@@ -0,0 +1,2 @@
+bag bagOutput 
+bagEnvironment bagSubstitution bagReduction bagType bagUntrusted
diff --git a/helm/software/lambda-delta/basic_ag/bag.ml b/helm/software/lambda-delta/basic_ag/bag.ml
new file mode 100644 (file)
index 0000000..8a07f55
--- /dev/null
@@ -0,0 +1,92 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+(* kernel version: basic, absolute, global *)
+(* note          : experimental *) 
+
+type uri = Entity.uri
+type id = Entity.id
+
+type bind = Void         (* exclusion *)
+          | Abst of term (* abstraction *)
+          | Abbr of term (* abbreviation *)
+
+and term = Sort of int                    (* hierarchy index *)
+         | LRef of int                    (* location *)
+         | GRef of uri                    (* reference *)
+         | Cast of term * term            (* domain, element *)
+         | Appl of term * term            (* argument, function *)
+         | Bind of int * id * bind * term (* location, name, binder, scope *)
+
+type entity = term Entity.entity (* attrs, uri, binder *)
+
+type lenv = (int * id * bind) list (* location, name, binder *) 
+
+type message = (lenv, term) Log.item list
+
+(* helpers ******************************************************************)
+
+let mk_uri root s =
+   String.concat "/" ["ld:"; "bag"; root; s ^ ".ld"]
+
+(* Currified constructors ***************************************************)
+
+let abst w = Abst w
+
+let abbr v = Abbr v
+
+let lref i = LRef i
+
+let cast u t = Cast (u, t)
+
+let appl u t = Appl (u, t)
+
+let bind l id b t = Bind (l, id, b, t)
+
+let bind_abst l id u t = Bind (l, id, Abst u, t)
+
+let bind_abbr l id v t = Bind (l, id, Abbr v, t)
+
+(* location handling functions **********************************************)
+
+let location = ref 0
+
+let new_location () = let loc = !location in incr location; loc
+
+let locations () = !location
+
+(* local environment handling functions *************************************)
+
+let empty_lenv = []
+
+let push msg f es l id b =
+   let rec does_not_occur loc = function
+      | []                          -> true
+      | (l, _, _) :: _ when l = loc -> false
+      | _ :: es                     -> does_not_occur l es
+   in
+   if not (does_not_occur l es) then failwith msg else
+   let c = (l, id, b) :: es in f c
+
+let append f es1 es2 = 
+   f (List.append es2 es1)
+
+let map f map es =
+   Cps.list_map f map es
+
+let contents f es = f es
+
+let get f es i =
+   let rec aux = function
+      | []               -> f None
+      | (l, id, b) :: tl -> if l = i then f (Some (id, b)) else aux tl
+   in
+   aux es
diff --git a/helm/software/lambda-delta/basic_ag/bagEnvironment.ml b/helm/software/lambda-delta/basic_ag/bagEnvironment.ml
new file mode 100644 (file)
index 0000000..04681cf
--- /dev/null
@@ -0,0 +1,39 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module U = NUri
+module L = Log
+module H = U.UriHash
+module Y = Entity
+module B = Bag
+
+exception ObjectNotFound of B.message
+
+let hsize = 7000 
+let env = H.create hsize
+
+(* Internal functions *******************************************************)
+
+let get_age = 
+   let age = ref 0 in
+   fun () -> incr age; !age
+
+let error uri = raise (ObjectNotFound (L.items1 (U.string_of_uri uri)))
+
+(* Interface functions ******************************************************)
+
+let set_entity f (a, uri, b) =
+   let age = get_age () in
+   let entry = (Y.Apix age :: a), uri, b in
+   H.add env uri entry; f entry
+
+let get_entity f uri =
+   try f (H.find env uri) with Not_found -> error uri
diff --git a/helm/software/lambda-delta/basic_ag/bagEnvironment.mli b/helm/software/lambda-delta/basic_ag/bagEnvironment.mli
new file mode 100644 (file)
index 0000000..4a44c05
--- /dev/null
@@ -0,0 +1,16 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+exception ObjectNotFound of Bag.message
+
+val set_entity: (Bag.entity -> 'a) -> Bag.entity -> 'a
+
+val get_entity: (Bag.entity -> 'a) -> Bag.uri -> 'a
diff --git a/helm/software/lambda-delta/basic_ag/bagOutput.ml b/helm/software/lambda-delta/basic_ag/bagOutput.ml
new file mode 100644 (file)
index 0000000..763f61a
--- /dev/null
@@ -0,0 +1,145 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module P = Printf
+module F = Format
+module U = NUri
+module L = Log
+module Y = Entity
+module H = Hierarchy
+module O = Output
+module B = Bag
+
+type counters = {
+   eabsts: int;
+   eabbrs: int;
+   tsorts: int;
+   tlrefs: int;
+   tgrefs: int;
+   tcasts: int;
+   tappls: int;
+   tabsts: int;
+   tabbrs: int
+}
+
+let initial_counters = {
+   eabsts = 0; eabbrs = 0; tsorts = 0; tlrefs = 0; tgrefs = 0;
+   tcasts = 0; tappls = 0; tabsts = 0; tabbrs = 0
+}
+
+let rec count_term_binder f c = function
+   | B.Abst w ->
+      let c = {c with tabsts = succ c.tabsts} in
+      count_term f c w
+   | B.Abbr v -> 
+      let c = {c with tabbrs = succ c.tabbrs} in
+      count_term f c v
+   | B.Void   -> f c
+
+and count_term f c = function
+   | B.Sort _            -> 
+      f {c with tsorts = succ c.tsorts}
+   | B.LRef _            -> 
+      f {c with tlrefs = succ c.tlrefs}
+   | B.GRef _            -> 
+      f {c with tgrefs = succ c.tgrefs}
+   | B.Cast (v, t)       -> 
+      let c = {c with tcasts = succ c.tcasts} in
+      let f c = count_term f c t in
+      count_term f c v
+   | B.Appl (v, t)       -> 
+      let c = {c with tappls = succ c.tappls} in
+      let f c = count_term f c t in
+      count_term f c v
+   | B.Bind (_, _, b, t) -> 
+      let f c = count_term_binder f c b in
+      count_term f c t
+
+let count_entity f c = function
+   | _, _, Y.Abst w -> 
+      let c = {c with eabsts = succ c.eabsts} in
+      count_term f c w
+   | _, _, Y.Abbr v -> 
+      let c = {c with eabbrs = succ c.eabbrs} in
+      count_term f c v
+   | _, _, Y.Void   -> assert false
+
+let print_counters f c =
+   let terms =
+      c.tsorts + c.tgrefs + c.tgrefs + c.tcasts + c.tappls + c.tabsts +
+      c.tabbrs
+   in
+   let items = c.eabsts + c.eabbrs in
+   let locations = B.locations () in
+   L.warn (P.sprintf "  Kernel representation summary (basic_ag)");
+   L.warn (P.sprintf "    Total entry items:        %7u" items);
+   L.warn (P.sprintf "      Declaration items:      %7u" c.eabsts);
+   L.warn (P.sprintf "      Definition items:       %7u" c.eabbrs);
+   L.warn (P.sprintf "    Total term items:         %7u" terms);
+   L.warn (P.sprintf "      Sort items:             %7u" c.tsorts);
+   L.warn (P.sprintf "      Local reference items:  %7u" c.tlrefs);
+   L.warn (P.sprintf "      Global reference items: %7u" c.tgrefs);
+   L.warn (P.sprintf "      Explicit Cast items:    %7u" c.tcasts);
+   L.warn (P.sprintf "      Application items:      %7u" c.tappls);
+   L.warn (P.sprintf "      Abstraction items:      %7u" c.tabsts);
+   L.warn (P.sprintf "      Abbreviation items:     %7u" c.tabbrs);
+   L.warn (P.sprintf "    Total binder locations:   %7u" locations);   
+   f ()
+
+let res l id =
+   if !O.indexes then P.sprintf "#%u" l else id
+
+let rec pp_term c frm = function
+   | B.Sort h                 -> 
+      let err () = F.fprintf frm "@[*%u@]" h in
+      let f s = F.fprintf frm "@[%s@]" s in
+      H.get_sort err f h 
+   | B.LRef i                 -> 
+      let f = function
+         | Some (id, _) -> F.fprintf frm "@[%s@]" id
+         | None         -> F.fprintf frm "@[#%u@]" i
+      in
+      if !O.indexes then f None else B.get f c i
+   | B.GRef s                    -> F.fprintf frm "@[$%s@]" (U.string_of_uri s)
+   | B.Cast (u, t)               ->
+      F.fprintf frm "@[{%a}.%a@]" (pp_term c) u (pp_term c) t
+   | B.Appl (v, t)               ->
+      F.fprintf frm "@[(%a).%a@]" (pp_term c) v (pp_term c) t
+   | B.Bind (l, id, B.Abst w, t) ->
+      let f cc =
+         F.fprintf frm "@[[%s:%a].%a@]" (res l id) (pp_term c) w (pp_term cc) t
+      in
+      B.push "output abst" f c l id (B.Abst w)
+   | B.Bind (l, id, B.Abbr v, t) ->
+      let f cc = 
+         F.fprintf frm "@[[%s=%a].%a@]" (res l id) (pp_term c) v (pp_term cc) t
+      in
+      B.push "output abbr" f c l id (B.Abbr v)
+   | B.Bind (l, id, B.Void, t)   ->
+      let f cc = F.fprintf frm "@[[%s].%a@]" (res l id) (pp_term cc) t in
+      B.push "output void" f c l id B.Void
+
+let pp_lenv frm c =
+   let pp_entry frm = function
+      | l, id, B.Abst w -> 
+         F.fprintf frm "@,@[%s : %a@]" (res l id) (pp_term c) w
+      | l, id, B.Abbr v -> 
+         F.fprintf frm "@,@[%s = %a@]" (res l id) (pp_term c) v
+      | l, id, B.Void   -> 
+         F.fprintf frm "@,%s" (res l id)
+   in
+   let iter map frm l = List.iter (map frm) l in
+   let f es = F.fprintf frm "%a" (iter pp_entry) (List.rev es) in
+   B.contents f c
+
+let specs = {
+   L.pp_term = pp_term; L.pp_lenv = pp_lenv
+}
diff --git a/helm/software/lambda-delta/basic_ag/bagOutput.mli b/helm/software/lambda-delta/basic_ag/bagOutput.mli
new file mode 100644 (file)
index 0000000..daa07a6
--- /dev/null
@@ -0,0 +1,20 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+type counters
+
+val initial_counters: counters
+
+val count_entity: (counters -> 'a) -> counters -> Bag.entity -> 'a
+
+val print_counters: (unit -> 'a) -> counters -> 'a
+
+val specs: (Bag.lenv, Bag.term) Log.specs
diff --git a/helm/software/lambda-delta/basic_ag/bagReduction.ml b/helm/software/lambda-delta/basic_ag/bagReduction.ml
new file mode 100644 (file)
index 0000000..b7eb88f
--- /dev/null
@@ -0,0 +1,196 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module U = NUri
+module C = Cps
+module L = Log
+module Y = Entity
+module B = Bag
+module O = BagOutput
+module E = BagEnvironment
+module S = BagSubstitution
+
+type machine = {
+   i: int;
+   c: B.lenv;
+   s: B.term list
+}
+
+type whd_result =
+   | Sort_ of int
+   | LRef_ of int * B.term option
+   | GRef_ of B.entity
+   | Bind_ of int * B.id * B.term * B.term
+
+type ho_whd_result =
+   | Sort of int
+   | Abst of B.term
+
+(* Internal functions *******************************************************)
+
+let term_of_whdr = function
+   | Sort_ h             -> B.Sort h
+   | LRef_ (i, _)        -> B.LRef i
+   | GRef_ (_, uri, _)   -> B.GRef uri
+   | Bind_ (l, id, w, t) -> B.bind_abst l id w t
+
+let level = 5
+
+let log1 s c t =
+   let sc, st = s ^ " in the environment", "the term" in
+   L.log O.specs level (L.et_items1 sc c st t)
+
+let log2 s cu u ct t =
+   let s1, s2, s3 = s ^ " in the environment", "the term", "and in the environment" in
+   L.log O.specs level (L.et_items2 s1 cu s2 u ~sc2:s3 ~c2:ct s2 t)
+
+let empty_machine = {i = 0; c = B.empty_lenv; s = []}
+
+let inc m = {m with i = succ m.i}
+
+let unwind_to_term f m t =
+   let map f t (l, id, b) = f (B.Bind (l, id, b, t)) in
+   let f mc = C.list_fold_left f map t mc in
+   B.contents f m.c
+
+let unwind_stack f m =
+   let map f v = unwind_to_term f m v in
+   C.list_map f map m.s
+
+let get f c m i =
+   let f = function
+      | Some (_, b) -> f b
+      | None        -> assert false
+   in
+   let f c = B.get f c i in
+   B.append f c m.c
+
+let push msg f c m l id w = 
+   assert (m.s = []);
+   let f w = B.push msg f c l id (B.Abst w) in
+   unwind_to_term f m w
+
+(* to share *)
+let rec whd f c m x = 
+(*   L.warn "entering R.whd"; *)
+   match x with
+   | B.Sort h                    -> f m (Sort_ h)
+   | B.GRef uri                  ->
+      let f entry = f m (GRef_ entry) in
+      E.get_entity f uri
+   | B.LRef i                    ->
+      let f = function
+         | B.Void   -> f m (LRef_ (i, None))
+        | B.Abst t -> f m (LRef_ (i, Some t))
+        | B.Abbr t -> whd f c m t
+      in
+      get f c m i
+   | B.Cast (_, t)               -> whd f c m t
+   | B.Appl (v, t)               -> whd f c {m with s = v :: m.s} t   
+   | B.Bind (l, id, B.Abst w, t) -> 
+      begin match m.s with
+         | []      -> f m (Bind_ (l, id, w, t))
+        | v :: tl -> 
+            let nl = B.new_location () in
+           let f mc = S.subst (whd f c {m with c = mc; s = tl}) nl l t in
+           B.push "!" f m.c nl id (B.Abbr (B.Cast (w, v)))
+      end
+   | B.Bind (l, id, b, t)         -> 
+      let nl = B.new_location () in
+      let f mc = S.subst (whd f c {m with c = mc}) nl l t in
+      B.push "!" f m.c nl id b
+
+(* Interface functions ******************************************************)
+
+let rec ho_whd f c m x =
+(*   L.warn "entering R.ho_whd"; *)
+   let aux m = function
+      | Sort_ h                -> f (Sort h)
+      | Bind_ (_, _, w, _)     -> 
+         let f w = f (Abst w) in unwind_to_term f m w
+      | LRef_ (_, Some w)      -> ho_whd f c m w
+      | GRef_ (_, _, Y.Abst w) -> ho_whd f c m w  
+      | GRef_ (_, _, Y.Abbr v) -> ho_whd f c m v
+      | LRef_ (_, None)        -> assert false
+      | GRef_ (_, _, Y.Void)   -> assert false
+   in
+   whd aux c m x
+   
+let ho_whd f c t =
+   let f r = L.unbox level; f r in
+   L.box level; log1 "Now scanning" c t;
+   ho_whd f c empty_machine t
+
+let rec are_convertible f ~si a c m1 t1 m2 t2 =
+(*   L.warn "entering R.are_convertible"; *)
+   let rec aux m1 r1 m2 r2 =
+(*   L.warn "entering R.are_convertible_aux"; *)
+   let u, t = term_of_whdr r1, term_of_whdr r2 in
+   log2 "Now really converting" c u c t;   
+   match r1, r2 with
+      | Sort_ h1, Sort_ h2                                 ->
+         if h1 = h2 then f a else f false 
+      | LRef_ (i1, _), LRef_ (i2, _)                       ->
+         if i1 = i2 then are_convertible_stacks f ~si a c m1 m2 else f false
+      | GRef_ ((Y.Apix a1 :: _), _, Y.Abst _), 
+        GRef_ ((Y.Apix a2 :: _), _, Y.Abst _)              ->
+         if a1 = a2 then are_convertible_stacks f ~si a c m1 m2 else f false
+      | GRef_ ((Y.Apix a1 :: _), _, Y.Abbr v1), 
+        GRef_ ((Y.Apix a2 :: _), _, Y.Abbr v2)             ->
+         if a1 = a2 then
+           let f a = 
+              if a then f a else are_convertible f ~si true c m1 v1 m2 v2
+           in
+           are_convertible_stacks f ~si a c m1 m2
+        else
+        if a1 < a2 then whd (aux m1 r1) c m2 v2 else
+        whd (aux_rev m2 r2) c m1 v1
+      | _, GRef_ (_, _, Y.Abbr v2)                         ->
+         whd (aux m1 r1) c m2 v2
+      | GRef_ (_, _, Y.Abbr v1), _                         ->
+        whd (aux_rev m2 r2) c m1 v1      
+      | Bind_ (l1, id1, w1, t1), Bind_ (l2, id2, w2, t2)   ->
+          let l = B.new_location () in
+          let h c =
+             let m1, m2 = inc m1, inc m2 in
+             let f t1 = S.subst (are_convertible f ~si a c m1 t1 m2) l l2 t2 in
+             S.subst f l l1 t1
+        in
+         let f r = if r then push "!" h c m1 l id1 w1 else f false in
+        are_convertible f ~si a c m1 w1 m2 w2
+(* we detect the AUT-QE reduction rule for type/prop inclusion *)      
+      | Sort_ _, Bind_ (l2, id2, w2, t2) when si           ->
+        let m1, m2 = inc m1, inc m2 in
+        let f c = are_convertible f ~si a c m1 (term_of_whdr r1) m2 t2 in
+        push "nsi" f c m2 l2 id2 w2
+      | _                                                  -> f false
+   and aux_rev m2 r2 m1 r1 = aux m1 r1 m2 r2 in
+   let g m1 r1 = whd (aux m1 r1) c m2 t2 in 
+   if a = false then f false else whd g c m1 t1
+
+and are_convertible_stacks f ~si a c m1 m2 =
+(*   L.warn "entering R.are_convertible_stacks"; *)
+   let mm1, mm2 = {m1 with s = []}, {m2 with s = []} in
+   let map f a v1 v2 = are_convertible f ~si a c mm1 v1 mm2 v2 in
+   if List.length m1.s <> List.length m2.s then 
+      begin 
+(*         L.warn (Printf.sprintf "Different lengths: %u %u"
+           (List.length m1.s) (List.length m2.s) 
+        ); *)
+        f false
+      end
+   else
+      C.list_fold_left2 f map a m1.s m2.s
+
+let are_convertible f ?(si=false) c u t = 
+   let f b = L.unbox level; f b in
+   L.box level; log2 "Now converting" c u c t;
+   are_convertible f ~si true c empty_machine u empty_machine t
diff --git a/helm/software/lambda-delta/basic_ag/bagReduction.mli b/helm/software/lambda-delta/basic_ag/bagReduction.mli
new file mode 100644 (file)
index 0000000..8f32faa
--- /dev/null
@@ -0,0 +1,20 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+type ho_whd_result =
+   | Sort of int
+   | Abst of Bag.term
+
+val ho_whd: 
+   (ho_whd_result -> 'a) -> Bag.lenv -> Bag.term -> 'a
+
+val are_convertible:
+   (bool -> 'a) -> ?si:bool -> Bag.lenv -> Bag.term -> Bag.term -> 'a
diff --git a/helm/software/lambda-delta/basic_ag/bagSubstitution.ml b/helm/software/lambda-delta/basic_ag/bagSubstitution.ml
new file mode 100644 (file)
index 0000000..ad75d63
--- /dev/null
@@ -0,0 +1,48 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module S = Share
+module B = Bag
+
+(* Internal functions *******************************************************)
+
+let rec lref_map_bind f map b = match b with
+   | B.Abbr v ->
+      let f v' = f (S.sh1 v v' b B.abbr) in
+      lref_map f map v      
+   | B.Abst w ->
+      let f w' = f (S.sh1 w w' b B.abst) in
+      lref_map f map w
+   | B.Void   -> f b
+
+and lref_map f map t = match t with
+   | B.LRef i            -> 
+      let ii = map i in f (S.sh1 i ii t B.lref)
+   | B.GRef _            -> f t
+   | B.Sort _            -> f t
+   | B.Cast (w, u)       ->
+      let f w' u' = f (S.sh2 w w' u u' t B.cast) in
+      let f w' = lref_map (f w') map u in 
+      lref_map f map w
+   | B.Appl (w, u)       ->
+      let f w' u' = f (S.sh2 w w' u u' t B.appl) in
+      let f w' = lref_map (f w') map u in 
+      lref_map f map w
+   | B.Bind (l, id, b, u) ->
+      let f b' u' = f (S.sh2 b b' u u' t (B.bind l id)) in
+      let f b' = lref_map (f b') map u in 
+      lref_map_bind f map b
+
+(* Interface functions ******************************************************)
+
+let subst f new_l old_l t =
+   let map i = if i = old_l then new_l else i in
+   if new_l = old_l then f t else lref_map f map t
diff --git a/helm/software/lambda-delta/basic_ag/bagSubstitution.mli b/helm/software/lambda-delta/basic_ag/bagSubstitution.mli
new file mode 100644 (file)
index 0000000..b48c056
--- /dev/null
@@ -0,0 +1,12 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+val subst: (Bag.term -> 'a) -> int -> int -> Bag.term -> 'a
diff --git a/helm/software/lambda-delta/basic_ag/bagType.ml b/helm/software/lambda-delta/basic_ag/bagType.ml
new file mode 100644 (file)
index 0000000..dbf1bd4
--- /dev/null
@@ -0,0 +1,127 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module U = NUri
+module C = Cps
+module S = Share
+module L = Log
+module Y = Entity
+module H = Hierarchy
+module B = Bag
+module O = BagOutput
+module E = BagEnvironment
+module R = BagReduction
+
+exception TypeError of B.message
+
+(* Internal functions *******************************************************)
+
+let level = 4
+
+let log1 s c t =
+   let sc, st = s ^ " in the envireonment", "the term" in
+   L.log O.specs level (L.et_items1 sc c st t)
+
+let error1 st c t =
+   let sc = "In the envireonment" in
+   raise (TypeError (L.et_items1 sc c st t))
+
+let error3 c t1 t2 t3 =
+   let sc, st1, st2, st3 = 
+      "In the envireonment", "the term", "is of type", "but must be of type"
+   in
+   raise (TypeError (L.et_items3 sc c st1 t1 st2 t2 st3 t3))
+
+let mk_gref u l =
+   let map t v = B.Appl (v, t) in
+   List.fold_left map (B.GRef u) l
+
+(* Interface functions ******************************************************)
+
+let rec b_type_of f ~si g c x = 
+(*   L.warn "Entering T.b_type_of"; *)
+   log1 "Now checking" c x;
+   match x with
+   | B.Sort h                    ->
+      let h = H.apply g h in f x (B.Sort h) 
+   | B.LRef i                    ->
+      let f = function
+         | Some (_, B.Abst w)               -> f x w
+        | Some (_, B.Abbr (B.Cast (w, v))) -> f x w
+        | Some (_, B.Abbr _)               -> assert false
+        | Some (_, B.Void)                 -> 
+           error1 "reference to excluded variable" c x
+         | None                             ->
+           error1 "variable not found" c x      
+      in
+      B.get f c i
+   | B.GRef uri                  ->
+      let f = function
+         | _, _, Y.Abst w               -> f x w
+        | _, _, Y.Abbr (B.Cast (w, v)) -> f x w
+        | _, _, Y.Abbr _               -> assert false
+        | _, _, Y.Void                 -> assert false
+      in
+      E.get_entity f uri   
+   | B.Bind (l, id, B.Abbr v, t) ->
+      let f xv xt tt =
+         f (S.sh2 v xv t xt x (B.bind_abbr l id)) (B.bind_abbr l id xv tt)
+      in
+      let f xv cc = b_type_of (f xv) ~si g cc t in
+      let f xv = B.push "type abbr" (f xv) c l id (B.Abbr xv) in
+      let f xv vv = match xv with 
+        | B.Cast _ -> f xv
+         | _        -> f (B.Cast (vv, xv))
+      in
+      type_of f ~si g c v
+   | B.Bind (l, id, B.Abst u, t) ->
+      let f xu xt tt =
+        f (S.sh2 u xu t xt x (B.bind_abst l id)) (B.bind_abst l id xu tt)
+      in
+      let f xu cc = b_type_of (f xu) ~si g cc t in
+      let f xu _ = B.push "type abst" (f xu) c l id (B.Abst xu) in
+      type_of f ~si g c u
+   | B.Bind (l, id, B.Void, t)   ->
+      let f xt tt = 
+         f (S.sh1 t xt x (B.bind l id B.Void)) (B.bind l id B.Void tt)
+      in
+      let f cc = b_type_of f ~si g cc t in
+      B.push "type void" f c l id B.Void   
+   | B.Appl (v, t)            ->
+      let f xv vv xt tt = function
+        | R.Abst w                             -> 
+            L.box (succ level);
+           L.log O.specs (succ level) (L.t_items1 "Just scanned" c w);
+           L.unbox (succ level);
+           let f a =                
+(*            L.warn (Printf.sprintf "Convertible: %b" a); *)
+              if a then f (S.sh2 v xv t xt x B.appl) (B.appl xv tt)
+              else error3 c xv vv w
+           in
+           R.are_convertible f ~si c w vv
+        | _                                    -> 
+           error1 "not a function" c xt
+      in
+      let f xv vv xt tt = R.ho_whd (f xv vv xt tt) c tt in
+      let f xv vv = b_type_of (f xv vv) ~si g c t in
+      type_of f ~si g c v
+   | B.Cast (u, t)            ->
+      let f xu xt tt a =  
+         (* L.warn (Printf.sprintf "Convertible: %b" a); *)
+        if a then f (S.sh2 u xu t xt x B.cast) xu else error3 c xt tt xu
+      in
+      let f xu xt tt = R.are_convertible (f xu xt tt) ~si c xu tt in
+      let f xu _ = b_type_of (f xu) ~si g c t in
+      type_of f ~si g c u
+
+and type_of f ?(si=false) g c x =
+   let f t u = L.unbox level; f t u in
+   L.box level; b_type_of f ~si g c x
diff --git a/helm/software/lambda-delta/basic_ag/bagType.mli b/helm/software/lambda-delta/basic_ag/bagType.mli
new file mode 100644 (file)
index 0000000..d44b1cf
--- /dev/null
@@ -0,0 +1,16 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+exception TypeError of Bag.message
+
+val type_of: 
+   (Bag.term -> Bag.term -> 'a) -> ?si:bool ->
+   Hierarchy.graph -> Bag.lenv -> Bag.term -> 'a
diff --git a/helm/software/lambda-delta/basic_ag/bagUntrusted.ml b/helm/software/lambda-delta/basic_ag/bagUntrusted.ml
new file mode 100644 (file)
index 0000000..8c6cbb4
--- /dev/null
@@ -0,0 +1,29 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module U = NUri
+module L = Log
+module Y = Entity
+module B = Bag
+module E = BagEnvironment
+module T = BagType
+
+(* Interface functions ******************************************************)
+
+(* to share *)
+let type_check f ?(si=false) g = function
+   | a, uri, Y.Abst t ->
+      let f xt tt = E.set_entity (f tt) (a, uri, Y.Abst xt) in
+      L.loc := U.string_of_uri uri; T.type_of f ~si g B.empty_lenv t
+   | a, uri, Y.Abbr t ->
+      let f xt tt = E.set_entity (f tt) (a, uri, Y.Abbr xt) in
+      L.loc := U.string_of_uri uri; T.type_of f ~si g B.empty_lenv t
+   | _, _, Y.Void     -> assert false
diff --git a/helm/software/lambda-delta/basic_ag/bagUntrusted.mli b/helm/software/lambda-delta/basic_ag/bagUntrusted.mli
new file mode 100644 (file)
index 0000000..1d25e3d
--- /dev/null
@@ -0,0 +1,14 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+val type_check:
+   (Bag.term -> Bag.entity -> 'a) -> ?si:bool ->
+   Hierarchy.graph -> Bag.entity -> 'a
diff --git a/helm/software/lambda-delta/basic_rg/Make b/helm/software/lambda-delta/basic_rg/Make
new file mode 100644 (file)
index 0000000..ee53ca2
--- /dev/null
@@ -0,0 +1,2 @@
+brg brgOutput
+brgEnvironment brgSubstitution brgReduction brgType brgUntrusted
diff --git a/helm/software/lambda-delta/basic_rg/brg.ml b/helm/software/lambda-delta/basic_rg/brg.ml
new file mode 100644 (file)
index 0000000..fd93f39
--- /dev/null
@@ -0,0 +1,82 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+(* kernel version: basic, relative, global *)
+(* note          : ufficial basic lambda-delta *) 
+
+type uri = Entity.uri
+type id = Entity.id
+type attrs = Entity.attrs
+
+type bind = Void         (*      *)
+          | Abst of term (* type *)
+          | Abbr of term (* body *)
+
+and term = Sort of attrs * int         (* attrs, hierarchy index *)
+         | LRef of attrs * int         (* attrs, position index *)
+         | GRef of attrs * uri         (* attrs, reference *)
+         | Cast of attrs * term * term (* attrs, type, term *)
+         | Appl of attrs * term * term (* attrs, argument, function *)
+         | Bind of attrs * bind * term (* attrs, binder, scope *)
+
+type entity = term Entity.entity (* attrs, uri, binder *)
+
+type lenv = Null
+(* Cons: tail, relative local environment, attrs, binder *) 
+          | Cons of lenv * lenv * attrs * bind 
+
+(* helpers ******************************************************************)
+
+let mk_uri root s =
+   String.concat "/" ["ld:"; "brg"; root; s ^ ".ld"]
+
+(* Currified constructors ***************************************************)
+
+let abst w = Abst w
+
+let abbr v = Abbr v
+
+let lref a i = LRef (a, i)
+
+let cast a u t = Cast (a, u, t)
+
+let appl a u t = Appl (a, u, t)
+
+let bind a b t = Bind (a, b, t)
+
+let bind_abst a u t = Bind (a, Abst u, t)
+
+let bind_abbr a v t = Bind (a, Abbr v, t)
+
+let bind_void a t = Bind (a, Void, t)
+
+(* local environment handling functions *************************************)
+
+let empty = Null
+
+let push e c a b = Cons (e, c, a, b)
+
+let rec get i = function
+   | Null                         -> Null, Null, [], Void
+   | Cons (e, c, a, b) when i = 0 -> e, c, a, b
+   | Cons (e, _, _, _)            -> get (pred i) e
+
+let get e i = get i e
+
+(* used in BrgOutput.pp_lenv *)
+let rec fold_right f map e x = match e with   
+   | Null              -> f x
+   | Cons (e, c, a, b) -> fold_right (map f e c a b) map e x
+
+(* used in MetaBrg.unwind_to_xlate_term *)
+let rec fold_left map x = function
+   | Null              -> x
+   | Cons (e, _, a, b) -> fold_left map (map x a b) e
diff --git a/helm/software/lambda-delta/basic_rg/brgEnvironment.ml b/helm/software/lambda-delta/basic_rg/brgEnvironment.ml
new file mode 100644 (file)
index 0000000..121da88
--- /dev/null
@@ -0,0 +1,35 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module U = NUri
+module H = U.UriHash
+module Y = Entity
+module B = Brg
+
+let hsize = 7000 
+let env = H.create hsize
+
+(* Internal functions *******************************************************)
+
+let get_age = 
+   let age = ref 0 in
+   fun () -> incr age; !age
+
+(* Interface functions ******************************************************)
+
+(* decps *)
+let set_entity (a, uri, b) =
+   let age = get_age () in
+   let entity = (Y.Apix age :: a), uri, b in
+   H.add env uri entity; entity
+
+let get_entity uri =
+   try H.find env uri with Not_found -> [], uri, Y.Void
diff --git a/helm/software/lambda-delta/basic_rg/brgEnvironment.mli b/helm/software/lambda-delta/basic_rg/brgEnvironment.mli
new file mode 100644 (file)
index 0000000..1f51f1e
--- /dev/null
@@ -0,0 +1,14 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+val set_entity: Brg.entity -> Brg.entity
+
+val get_entity: Brg.uri -> Brg.entity
diff --git a/helm/software/lambda-delta/basic_rg/brgOutput.ml b/helm/software/lambda-delta/basic_rg/brgOutput.ml
new file mode 100644 (file)
index 0000000..70464fd
--- /dev/null
@@ -0,0 +1,258 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module P = Printf
+module F = Format
+module C = Cps
+module U = NUri
+module L = Log
+module Y = Entity
+module X = Library
+module H = Hierarchy
+module O = Output
+module B = Brg
+
+(* nodes count **************************************************************)
+
+type counters = {
+   eabsts: int;
+   eabbrs: int;
+   evoids: int;
+   tsorts: int;
+   tlrefs: int;
+   tgrefs: int;
+   tcasts: int;
+   tappls: int;
+   tabsts: int;
+   tabbrs: int;
+   tvoids: int;
+   uris  : B.uri list;
+   nodes : int;
+   xnodes: int
+}
+
+let initial_counters = {
+   eabsts = 0; eabbrs = 0; evoids = 0; 
+   tsorts = 0; tlrefs = 0; tgrefs = 0; tcasts = 0; tappls = 0;
+   tabsts = 0; tabbrs = 0; tvoids = 0;
+   uris = []; nodes = 0; xnodes = 0
+}
+
+let rec count_term_binder f c e = function
+   | B.Abst w ->
+      let c = {c with tabsts = succ c.tabsts; nodes = succ c.nodes} in
+      count_term f c e w
+   | B.Abbr v -> 
+      let c = {c with tabbrs = succ c.tabbrs; xnodes = succ c.xnodes} in
+      count_term f c e v
+   | B.Void   ->
+      let c = {c with tvoids = succ c.tvoids; xnodes = succ c.xnodes} in   
+      f c
+
+and count_term f c e = function
+   | B.Sort _         -> 
+      f {c with tsorts = succ c.tsorts; nodes = succ c.nodes}
+   | B.LRef (_, i)    -> 
+      begin match B.get e i with
+        | _, _, _, B.Abst _
+        | _, _, _, B.Void   ->
+           f {c with tlrefs = succ c.tlrefs; nodes = succ c.nodes}
+        | _, _, _, B.Abbr _ ->
+           f {c with tlrefs = succ c.tlrefs; xnodes = succ c.xnodes}
+      end      
+   | B.GRef (_, u)    -> 
+      let c =    
+        if Cps.list_mem ~eq:U.eq u c.uris
+        then {c with nodes = succ c.nodes}
+        else {c with xnodes = succ c.xnodes}
+      in
+      f {c with tgrefs = succ c.tgrefs}
+   | B.Cast (_, v, t) -> 
+      let c = {c with tcasts = succ c.tcasts} in
+      let f c = count_term f c e t in
+      count_term f c e v
+   | B.Appl (_, v, t) -> 
+      let c = {c with tappls = succ c.tappls; nodes = succ c.nodes} in
+      let f c = count_term f c e t in
+      count_term f c e v
+   | B.Bind (a, b, t) -> 
+      let f c = count_term f c (B.push e B.empty a b) t in
+      count_term_binder f c e b
+
+let count_entity f c = function
+   | _, u, Y.Abst w -> 
+      let c = {c with
+         eabsts = succ c.eabsts; nodes = succ c.nodes; uris = u :: c.uris
+      } in
+      count_term f c B.empty w
+   | _, _, Y.Abbr v ->  
+      let c = {c with eabbrs = succ c.eabbrs; xnodes = succ c.xnodes} in
+      count_term f c B.empty v
+   | _, _, Y.Void   -> assert false
+
+let print_counters f c =
+   let terms =
+      c.tsorts + c.tgrefs + c.tgrefs + c.tcasts + c.tappls + c.tabsts +
+      c.tabbrs
+   in
+   let items = c.eabsts + c.eabbrs in
+   let nodes = c.nodes + c.xnodes in
+   L.warn (P.sprintf "  Kernel representation summary (basic_rg)");
+   L.warn (P.sprintf "    Total entry items:        %7u" items);
+   L.warn (P.sprintf "      Declaration items:      %7u" c.eabsts);
+   L.warn (P.sprintf "      Definition items:       %7u" c.eabbrs);
+   L.warn (P.sprintf "    Total term items:         %7u" terms);
+   L.warn (P.sprintf "      Sort items:             %7u" c.tsorts);
+   L.warn (P.sprintf "      Local reference items:  %7u" c.tlrefs);
+   L.warn (P.sprintf "      Global reference items: %7u" c.tgrefs);
+   L.warn (P.sprintf "      Explicit Cast items:    %7u" c.tcasts);
+   L.warn (P.sprintf "      Application items:      %7u" c.tappls);
+   L.warn (P.sprintf "      Abstraction items:      %7u" c.tabsts);
+   L.warn (P.sprintf "      Abbreviation items:     %7u" c.tabbrs);
+   L.warn (P.sprintf "    Global Int. Complexity:   %7u" c.nodes);
+   L.warn (P.sprintf "      + Abbreviation nodes:   %7u" nodes);
+   f ()
+
+(* supplementary annotation *************************************************)
+
+let rec does_not_occur f n r = function
+   | B.Null              -> f true
+   | B.Cons (e, _, a, _) ->
+      let f n1 r1 =
+         if n1 = n && r1 = r then f false else does_not_occur f n r e
+      in
+      Y.name C.err f a 
+
+let rename f e a =
+   let rec aux f e n r =
+      let f = function
+         | true  -> f n r
+        | false -> aux f e (n ^ "'") r
+      in
+      does_not_occur f n r e
+   in
+   let f n0 r0 =
+      let f n r = if n = n0 && r = r0 then f a else f (Y.Name (n, r) :: a) in
+      aux f e n0 r0 
+   in
+   Y.name C.err f a
+
+(* lenv/term pretty printing ************************************************)
+
+let name err frm a =
+   let f n = function 
+      | true  -> F.fprintf frm "%s" n
+      | false -> F.fprintf frm "^%s" n
+   in      
+   Y.name err f a
+
+let rec pp_term e frm = function
+   | B.Sort (_, h)           -> 
+      let err _ = F.fprintf frm "@[*%u@]" h in
+      let f s = F.fprintf frm "@[%s@]" s in
+      H.get_sort err f h 
+   | B.LRef (_, i)           -> 
+      let err _ = F.fprintf frm "@[#%u@]" i in
+      if !O.indexes then err () else      
+      let _, _, a, b = B.get e i in
+      F.fprintf frm "@[%a@]" (name err) a
+   | B.GRef (_, s)           ->
+      F.fprintf frm "@[$%s@]" (U.string_of_uri s)
+   | B.Cast (_, u, t)        ->
+      F.fprintf frm "@[{%a}.%a@]" (pp_term e) u (pp_term e) t
+   | B.Appl (_, v, t)        ->
+      F.fprintf frm "@[(%a).%a@]" (pp_term e) v (pp_term e) t
+   | B.Bind (a, B.Abst w, t) ->
+      let f a =
+         let ee = B.push e B.empty a (B.abst w) in
+        F.fprintf frm "@[[%a:%a].%a@]" (name C.err) a (pp_term e) w (pp_term ee) t
+      in
+      rename f e a
+   | B.Bind (a, B.Abbr v, t) ->
+      let f a = 
+         let ee = B.push e B.empty a (B.abbr v) in
+        F.fprintf frm "@[[%a=%a].%a@]" (name C.err) a (pp_term e) v (pp_term ee) t
+      in
+      rename f e a
+   | B.Bind (a, B.Void, t)   ->
+      let f a = 
+         let ee = B.push e B.empty a B.Void in
+         F.fprintf frm "@[[%a].%a@]" (name C.err) a (pp_term ee) t
+      in
+      rename f e a
+
+let pp_lenv frm e =
+   let pp_entry f e c a b x = f x (*match b with
+      | B.Abst (a, w) -> 
+         let f a = F.fprintf frm "@,@[%a : %a@]" (name C.err) a (pp_term e) w; f a in
+         rename f x a
+      | B.Abbr (a, v) -> 
+         let f a = F.fprintf frm "@,@[%a = %a@]" (name C.err) a (pp_term e) v; f a in
+        rename f c a
+      | B.Void a      -> 
+         let f a = F.fprintf frm "@,%a" (name C.err) a; f a in
+        rename f c a
+*)   in
+   B.fold_right ignore pp_entry e B.empty
+
+let specs = {
+   L.pp_term = pp_term; L.pp_lenv = pp_lenv
+}
+
+(* term xml printing ********************************************************)
+
+let rec exp_term e t out tab = match t with
+   | B.Sort (a, l)    ->
+      let a =
+         let err _ = a in
+         let f s = Y.Name (s, true) :: a in
+        H.get_sort err f l
+      in
+      let attrs = [X.position l; X.name a] in
+      X.tag X.sort attrs out tab
+   | B.LRef (a, i)    ->
+      let a = 
+        let err _ = a in
+        let f n r = Y.Name (n, r) :: a in
+         let _, _, a, b = B.get e i in
+        Y.name err f a
+      in
+      let attrs = [X.position i; X.name a] in
+      X.tag X.lref attrs out tab
+   | B.GRef (a, n)    ->
+      let a = Y.Name (U.name_of_uri n, true) :: a in
+      let attrs = [X.uri n; X.name a] in
+      X.tag X.gref attrs out tab
+   | B.Cast (a, u, t) ->
+      let attrs = [] in
+      X.tag X.cast attrs ~contents:(exp_term e u) out tab;
+      exp_term e t out tab
+   | B.Appl (a, v, t) ->
+      let attrs = [] in
+      X.tag X.appl attrs ~contents:(exp_term e v) out tab;
+      exp_term e t out tab
+   | B.Bind (a, b, t)    ->
+      let a = rename C.start e a in
+      exp_bind e a b out tab; 
+      exp_term (B.push e B.empty a b) t out tab 
+
+and exp_bind e a b out tab = match b with
+   | B.Abst w ->
+      let attrs = [X.name a; X.mark a] in
+      X.tag X.abst attrs ~contents:(exp_term e w) out tab
+   | B.Abbr v ->
+      let attrs = [X.name a; X.mark a] in
+      X.tag X.abbr attrs ~contents:(exp_term e v) out tab
+   | B.Void   ->
+      let attrs = [X.name a; X.mark a] in
+      X.tag X.void attrs out tab
+
+let export_term = exp_term B.empty
diff --git a/helm/software/lambda-delta/basic_rg/brgOutput.mli b/helm/software/lambda-delta/basic_rg/brgOutput.mli
new file mode 100644 (file)
index 0000000..772f43c
--- /dev/null
@@ -0,0 +1,25 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+type counters
+
+val initial_counters: counters
+
+val count_entity: (counters -> 'a) -> counters -> Brg.entity -> 'a
+
+val print_counters: (unit -> 'a) -> counters -> 'a
+
+val specs: (Brg.lenv, Brg.term) Log.specs
+
+val export_term: Brg.term -> Library.pp
+(*
+val export_term: Format.formatter -> Brg.term -> unit
+*)
diff --git a/helm/software/lambda-delta/basic_rg/brgReduction.ml b/helm/software/lambda-delta/basic_rg/brgReduction.ml
new file mode 100644 (file)
index 0000000..5dff464
--- /dev/null
@@ -0,0 +1,210 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module U = NUri
+module C = Cps
+module S = Share
+module L = Log
+module Y = Entity
+module P = Output
+module B = Brg
+module O = BrgOutput
+module E = BrgEnvironment
+
+type kam = {
+   e: B.lenv;                 (* environment *)
+   s: (B.lenv * B.term) list; (* stack       *)
+   d: int                     (* depth       *)
+}
+
+(* Internal functions *******************************************************)
+
+let level = 5
+
+let log1 s c t =
+   let sc, st = s ^ " in the environment", "the term" in
+   L.log O.specs level (L.et_items1 sc c st t)
+
+let log2 s cu u ct t =
+   let s1, s2, s3 = s ^ " in the environment", "the term", "and in the environment" in
+   L.log O.specs level (L.et_items2 s1 cu s2 u ~sc2:s3 ~c2:ct s2 t)
+
+let rec list_and map = function
+   | hd1 :: tl1, hd2 :: tl2 ->
+      if map hd1 hd2 then list_and map (tl1, tl2) else false
+   | l1, l2                 -> l1 = l2
+
+(* check closure *)
+let are_alpha_convertible err f t1 t2 =
+   let rec aux f = function
+      | B.Sort (_, p1), B.Sort (_, p2)
+      | B.LRef (_, p1), B.LRef (_, p2)         ->
+         if p1 = p2 then f () else err ()
+      | B.GRef (_, u1), B.GRef (_, u2)         ->
+         if U.eq u1 u2 then f () else err ()
+      | B.Cast (_, v1, t1), B.Cast (_, v2, t2)         
+      | B.Appl (_, v1, t1), B.Appl (_, v2, t2) ->
+         let f _ = aux f (t1, t2) in
+        aux f (v1, v2)
+      | B.Bind (_, b1, t1), B.Bind (_, b2, t2) ->
+         let f _ = aux f (t1, t2) in
+        aux_bind f (b1, b2)
+      | _                                      -> err ()
+   and aux_bind f = function
+      | B.Abbr v1, B.Abbr v2
+      | B.Abst v1, B.Abst v2                   -> aux f (v1, v2)
+      | B.Void, B.Void                         -> f ()
+      | _                                      -> err ()
+   in
+   if S.eq t1 t2 then f () else aux f (t1, t2)
+
+let get m i =
+   let _, c, a, b = B.get m.e i in c, a, b
+
+(* to share *)
+let rec step st m x = 
+(*   L.warn "entering R.step"; *)
+   match x with
+   | B.Sort _                -> m, None, x
+   | B.GRef (_, uri)         ->
+      begin match E.get_entity uri with
+         | _, _, Y.Abbr v when st.Y.delta ->
+           P.add ~gdelta:1 (); step st m v
+         | _, _, Y.Abst w when st.Y.rt    ->
+            P.add ~grt:1 (); step st m w        
+        | a, _, Y.Abbr v                 ->
+           let e = Y.apix C.err C.start a in
+           m, Some (e, a, B.Abbr v), x   
+        | a, _, Y.Abst w                 ->
+           let e = Y.apix C.err C.start a in
+           m, Some (e, a, B.Abst w), x
+        | _, _, Y.Void                   -> assert false
+      end
+   | B.LRef (_, i)           ->
+      begin match get m i with
+        | c, _, B.Abbr v              ->
+           P.add ~ldelta:1 ();
+           step st {m with e = c} v
+        | c, _, B.Abst w when st.Y.rt ->
+            P.add ~lrt:1 ();
+            step st {m with e = c} w
+        | c, _, B.Void                ->
+           assert false
+        | c, a, (B.Abst _ as b)       ->
+           let e = Y.apix C.err C.start a in
+           {m with e = c}, Some (e, a, b), x
+      end
+   | B.Cast (_, _, t)        ->
+      P.add ~tau:1 ();
+      step st m t
+   | B.Appl (_, v, t)        ->
+      step st {m with s = (m.e, v) :: m.s} t   
+   | B.Bind (a, B.Abst w, t) ->
+      begin match m.s with
+         | []          -> m, None, x
+        | (c, v) :: s ->
+            P.add ~beta:1 ~upsilon:(List.length s) ();
+           let e = B.push m.e c a (B.abbr v) (* (B.Cast ([], w, v)) *) in 
+           step st {m with e = e; s = s} t
+      end
+   | B.Bind (a, b, t)        ->
+      P.add ~upsilon:(List.length m.s) ();
+      let e = B.push m.e m.e a b in 
+      step st {m with e = e} t
+
+let push m a b = 
+   assert (m.s = []);
+   let a, d = match b with
+      | B.Abst _ -> Y.Apix m.d :: a, succ m.d
+      | b        -> a, m.d
+   in
+   let e = B.push m.e m.e a b in
+   {m with e = e; d = d}
+
+let rec ac_nfs st (m1, r1, u) (m2, r2, t) =
+   log2 "Now converting nfs" m1.e u m2.e t;
+   match r1, u, r2, t with
+      | _, B.Sort (_, h1), _, B.Sort (_, h2)                   ->
+         h1 = h2  
+      | Some (e1, _, B.Abst _), _, Some (e2, _, B.Abst _), _   ->
+        if e1 = e2 then ac_stacks st m1 m2 else false
+      | Some (e1, _, B.Abbr v1), _, Some (e2, _, B.Abbr v2), _ ->
+         if e1 = e2 then
+           if ac_stacks st m1 m2 then true else begin
+              P.add ~gdelta:2 (); ac st m1 v1 m2 v2
+           end
+        else if e1 < e2 then begin 
+            P.add ~gdelta:1 ();
+           ac_nfs st (m1, r1, u) (step st m2 v2)
+        end else begin
+           P.add ~gdelta:1 ();
+           ac_nfs st (step st m1 v1) (m2, r2, t) 
+         end
+      | _, _, Some (_, _, B.Abbr v2), _                        ->
+         P.add ~gdelta:1 ();
+        ac_nfs st (m1, r1, u) (step st m2 v2)      
+      | Some (_, _, B.Abbr v1), _, _, _                        ->
+         P.add ~gdelta:1 ();
+        ac_nfs st (step st m1 v1) (m2, r2, t)             
+      | _, B.Bind (a1, (B.Abst w1 as b1), t1), 
+        _, B.Bind (a2, (B.Abst w2 as b2), t2)                  ->
+        if ac {st with Y.si = false} m1 w1 m2 w2 then
+           ac st (push m1 a1 b1) t1 (push m2 a2 b2) t2
+        else false
+      | _, B.Sort _, _, B.Bind (a, b, t) when st.Y.si          ->
+        P.add ~si:1 ();
+        ac st (push m1 a b) u (push m2 a b) t
+      | _                                                      -> false
+
+and ac st m1 t1 m2 t2 =
+(*   L.warn "entering R.are_convertible"; *)
+   ac_nfs st (step st m1 t1) (step st m2 t2)
+
+and ac_stacks st m1 m2 =
+(*   L.warn "entering R.are_convertible_stacks"; *)
+(*   if List.length m1.s <> List.length m2.s then false else *)
+   let map (c1, v1) (c2, v2) =
+      let m1, m2 = {m1 with e = c1; s = []}, {m2 with e = c2; s = []} in
+      ac {st with Y.si = false} m1 v1 m2 v2
+   in
+   list_and map (m1.s, m2.s)
+
+(* Interface functions ******************************************************)
+
+let empty_kam = { 
+   e = B.empty; s = []; d = 0
+}
+
+let get m i =
+   assert (m.s = []);
+   let _, _, _, b = B.get m.e i in b
+
+let xwhd st m t =
+   L.box level; log1 "Now scanning" m.e t;   
+   let m, _, t = step {st with Y.delta = true; Y.rt = true} m t in
+   L.unbox level; m, t
+
+let are_convertible st mu u mw w = 
+   L.box level; log2 "Now converting" mu.e u mw.e w;
+   let r = ac {st with Y.delta = false; Y.rt = false} mu u mw w in   
+   L.unbox level; r
+(*    let err _ = in 
+      if S.eq mu mw then are_alpha_convertible err f u w else err () *)
+
+(* error reporting **********************************************************)
+
+let pp_term m frm t = O.specs.L.pp_term m.e frm t
+
+let pp_lenv frm m = O.specs.L.pp_lenv frm m.e
+
+let specs = {
+   L.pp_term = pp_term; L.pp_lenv = pp_lenv
+}
diff --git a/helm/software/lambda-delta/basic_rg/brgReduction.mli b/helm/software/lambda-delta/basic_rg/brgReduction.mli
new file mode 100644 (file)
index 0000000..eebb157
--- /dev/null
@@ -0,0 +1,26 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+type kam
+
+val empty_kam: kam
+
+val get: kam -> int -> Brg.bind
+
+val push: kam -> Entity.attrs -> Brg.bind -> kam
+
+val xwhd: Entity.status -> kam -> Brg.term -> kam * Brg.term 
+
+(* arguments: expected type, inferred type *) 
+val are_convertible: 
+   Entity.status -> kam -> Brg.term -> kam -> Brg.term -> bool
+
+val specs: (kam, Brg.term) Log.specs
diff --git a/helm/software/lambda-delta/basic_rg/brgSubstitution.ml b/helm/software/lambda-delta/basic_rg/brgSubstitution.ml
new file mode 100644 (file)
index 0000000..5c9d91a
--- /dev/null
@@ -0,0 +1,46 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module B = Brg
+(* module O = Output *)
+
+let rec icm a = function
+   | B.Sort _
+   | B.LRef _
+   | B.GRef _                -> succ a
+   | B.Bind (_, B.Void, t)   -> icm (succ a) t
+   | B.Cast (_, u, t)        -> icm (icm a u) t
+   | B.Appl (_, u, t)
+   | B.Bind (_, B.Abst u, t)
+   | B.Bind (_, B.Abbr u, t) -> icm (icm (succ a) u) t
+
+let iter map d =
+   let rec iter_bind d = function
+      | B.Void   -> B.Void
+      | B.Abst w -> B.Abst (iter_term d w)
+      | B.Abbr v -> B.Abbr (iter_term d v)
+   and iter_term d = function
+      | B.Sort _ as t      -> t
+      | B.GRef _ as t      -> t
+      | B.LRef (a, i) as t -> if i < d then t else map d a i
+      | B.Cast (a, w, v)   -> B.Cast (a, iter_term d w, iter_term d v)
+      | B.Appl (a, w, u)   -> B.Appl (a, iter_term d w, iter_term d u)
+      | B.Bind (a, b, u)   -> B.Bind (a, iter_bind d b, iter_term (succ d) u)
+   in
+   iter_term d
+
+let lift_map h _ a i =
+   if i + h >= 0 then B.LRef (a, i + h) else assert false
+
+let lift h d t =
+   if h = 0 then t else begin
+(*      O.icm := succ (* icm *) !O.icm (*t*); *) iter (lift_map h) d t
+   end
diff --git a/helm/software/lambda-delta/basic_rg/brgSubstitution.mli b/helm/software/lambda-delta/basic_rg/brgSubstitution.mli
new file mode 100644 (file)
index 0000000..a171766
--- /dev/null
@@ -0,0 +1,15 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+val lift: int -> int -> Brg.term -> Brg.term
+(*
+val lift_bind: (Brg.bind -> 'a) -> int -> int -> Brg.bind -> 'a
+*)
diff --git a/helm/software/lambda-delta/basic_rg/brgType.ml b/helm/software/lambda-delta/basic_rg/brgType.ml
new file mode 100644 (file)
index 0000000..728e3ff
--- /dev/null
@@ -0,0 +1,131 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module U = NUri
+module C = Cps
+module A = Share
+module L = Log
+module H = Hierarchy
+module Y = Entity
+module B = Brg
+module O = BrgOutput
+module E = BrgEnvironment
+module S = BrgSubstitution
+module R = BrgReduction
+
+type message = (R.kam, B.term) Log.message
+
+(* Internal functions *******************************************************)
+
+let level = 4
+
+let message1 st1 m t1 =
+   L.et_items1 "In the environment" m st1 t1
+
+let log1 s m t =
+   let s =  s ^ " the term" in
+   L.log R.specs level (message1 s m t) 
+
+let error1 err s m t =
+   err (message1 s m t)
+
+let message3 m t1 t2 ?mu t3 =    
+   let sm, st1, st2 = "In the environment", "the term", "is of type" in
+   match mu with
+      | Some mu ->
+         let smu, st3 = "but in the environment", "it must be of type" in
+         L.et_items3 sm m st1 t1 st2 t2 ~sc3:smu ~c3:mu st3 t3
+      | None    ->
+         let st3 = "but it must be of type" in
+         L.et_items3 sm m st1 t1 st2 t2 st3 t3
+   
+let error3 err m t1 t2 ?mu t3 =
+   err (message3 m t1 t2 ?mu t3)
+
+let assert_convertibility err f st m u w v =
+   if R.are_convertible st m u m w then f () else
+   error3 err m v w u
+
+let assert_applicability err f st m u w v =
+   match R.xwhd st m u with 
+      | _, B.Sort _                 -> error1 err "not a function type" m u
+      | mu, B.Bind (_, B.Abst u, _) -> 
+         if R.are_convertible st mu u m w then f () else
+        error3 err m v w ~mu u
+      | _                         -> assert false (**)
+
+let rec b_type_of err f st g m x =
+   log1 "Now checking" m x;
+   match x with
+   | B.Sort (a, h)           ->
+      let h = H.apply g h in f x (B.Sort (a, h)) 
+   | B.LRef (_, i)           ->
+      begin match R.get m i with
+         | B.Abst w                  ->
+           f x (S.lift (succ i) (0) w)
+        | B.Abbr (B.Cast (_, w, _)) -> 
+           f x (S.lift (succ i) (0) w)
+        | B.Abbr _                  -> assert false
+        | B.Void                    -> 
+           error1 err "reference to excluded variable" m x
+      end
+   | B.GRef (_, uri)         ->
+      begin match E.get_entity uri with
+         | _, _, Y.Abst w                  -> f x w
+        | _, _, Y.Abbr (B.Cast (_, w, _)) -> f x w
+        | _, _, Y.Abbr _                  -> assert false
+        | _, _, Y.Void                    ->
+            error1 err "reference to unknown entry" m x
+      end
+   | B.Bind (a, B.Abbr v, t) ->
+      let f xv xt tt =
+         f (A.sh2 v xv t xt x (B.bind_abbr a)) (B.bind_abbr a xv tt)
+      in
+      let f xv m = b_type_of err (f xv) st g m t in
+      let f xv = f xv (R.push m a (B.abbr xv)) in
+      let f xv vv = match xv with 
+        | B.Cast _ -> f xv
+         | _        -> f (B.Cast ([], vv, xv))
+      in
+      type_of err f st g m v
+   | B.Bind (a, B.Abst u, t) ->
+      let f xu xt tt =
+        f (A.sh2 u xu t xt x (B.bind_abst a)) (B.bind_abst a xu tt)
+      in
+      let f xu m = b_type_of err (f xu) st g m t in
+      let f xu _ = f xu (R.push m a (B.abst xu)) in
+      type_of err f st g m u
+   | B.Bind (a, B.Void, t)   ->
+      let f xt tt = 
+         f (A.sh1 t xt x (B.bind_void a)) (B.bind_void a tt)
+      in
+      b_type_of err f st g (R.push m a B.Void) t
+         
+   | B.Appl (a, v, t)        ->
+      let f xv vv xt tt = 
+         let f _ = f (A.sh2 v xv t xt x (B.appl a)) (B.appl a xv tt) in
+         assert_applicability err f st m tt vv xv
+      in
+      let f xv vv = b_type_of err (f xv vv) st g m t in
+      type_of err f st g m v
+   | B.Cast (a, u, t)        ->
+      let f xu xt tt =  
+        let f _ = f (A.sh2 u xu t xt x (B.cast a)) xu in
+         assert_convertibility err f st m xu tt xt
+      in
+      let f xu _ = b_type_of err (f xu) st g m t in
+      type_of err f st g m u
+
+(* Interface functions ******************************************************)
+
+and type_of err f st g m x =
+   let f t u = L.unbox level; f t u in
+   L.box level; b_type_of err f st g m x
diff --git a/helm/software/lambda-delta/basic_rg/brgType.mli b/helm/software/lambda-delta/basic_rg/brgType.mli
new file mode 100644 (file)
index 0000000..b235b47
--- /dev/null
@@ -0,0 +1,16 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+type message = (BrgReduction.kam, Brg.term) Log.message
+
+val type_of: 
+   (message -> 'a) -> (Brg.term -> Brg.term -> 'a) -> 
+   Entity.status -> Hierarchy.graph -> BrgReduction.kam -> Brg.term -> 'a
diff --git a/helm/software/lambda-delta/basic_rg/brgUntrusted.ml b/helm/software/lambda-delta/basic_rg/brgUntrusted.ml
new file mode 100644 (file)
index 0000000..959a746
--- /dev/null
@@ -0,0 +1,36 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module U = NUri
+module L = Log
+module Y = Entity
+module B = Brg
+module E = BrgEnvironment
+module R = BrgReduction
+module T = BrgType
+
+(* Interface functions ******************************************************)
+
+(* to share *)
+let type_check err f ?(si=false) g = function
+   | a, uri, Y.Abst t ->
+      let f xt tt = 
+         let e = E.set_entity (a, uri, Y.Abst xt) in f tt e
+      in
+      let st = Y.initial_status si in
+      L.loc := U.string_of_uri uri; T.type_of err f st g R.empty_kam t
+   | a, uri, Y.Abbr t ->
+      let f xt tt = 
+         let e = E.set_entity (a, uri, Y.Abbr xt) in f tt e
+      in
+      let st = Y.initial_status si in
+      L.loc := U.string_of_uri uri; T.type_of err f st g R.empty_kam t
+   | _, _, Y.Void     -> assert false
diff --git a/helm/software/lambda-delta/basic_rg/brgUntrusted.mli b/helm/software/lambda-delta/basic_rg/brgUntrusted.mli
new file mode 100644 (file)
index 0000000..9c0568f
--- /dev/null
@@ -0,0 +1,14 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+val type_check:
+   (BrgType.message -> 'a) -> (Brg.term -> Brg.entity -> 'a) -> 
+   ?si:bool -> Hierarchy.graph -> Brg.entity -> 'a
diff --git a/helm/software/lambda-delta/common/Make b/helm/software/lambda-delta/common/Make
new file mode 100644 (file)
index 0000000..8085aa6
--- /dev/null
@@ -0,0 +1 @@
+hierarchy output entity library
diff --git a/helm/software/lambda-delta/common/entity.ml b/helm/software/lambda-delta/common/entity.ml
new file mode 100644 (file)
index 0000000..5bef9ff
--- /dev/null
@@ -0,0 +1,99 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+type uri = NUri.uri
+type id = Aut.id
+
+type attr = Name of id * bool (* name, real? *)
+          | Apix of int       (* additional position index *)
+         | Mark of int       (* node marker *)
+         | Priv              (* private global definition *)
+
+type attrs = attr list (* attributes *)
+
+type 'term bind = Abst of 'term (* declaration: domain *)
+                | Abbr of 'term (* definition: body *)
+               | Void          (* exclusion *)
+
+type 'term entity = attrs * uri * 'term bind (* attrs, name, binder *)
+
+type uri_generator = string -> string
+
+type status = {
+   delta: bool; (* global delta-expansion *)
+   rt: bool;    (* reference typing *)
+   si: bool     (* sort inclusion *)
+}
+
+(* helpers ******************************************************************)
+
+let common f (a, u, _) = f a u
+
+let rec name err f = function
+   | Name (n, r) :: _ -> f n r
+   | _ :: tl          -> name err f tl
+   | []               -> err ()
+
+let names f map l a =
+   let rec aux f i a = function   
+      | []                -> f a
+      | Name (n, r) :: tl -> aux (map f i n r) false a tl
+      | _ :: tl           -> aux f i a tl
+   in
+   aux f true a l
+
+let rec get_name err f j = function
+   | []                          -> err ()
+   | Name (n, r) :: _ when j = 0 -> f n r
+   | Name _ :: tl                -> get_name err f (pred j) tl
+   | _ :: tl                     -> get_name err f j tl
+
+let rec get_names f = function
+   | []                -> f [] []
+   | Name _ as n :: tl ->
+      let f a ns = f a (n :: ns) in get_names f tl
+   | e :: tl           ->
+      let f a = f (e :: a) in get_names f tl
+
+let rec apix err f = function
+   | Apix i :: _ -> f i
+   | _ :: tl     -> apix err f tl
+   | []          -> err ()
+
+let rec mark err f = function
+   | Mark i :: _ -> f i
+   | _ :: tl     -> mark err f tl
+   | []          -> err ()
+
+let rec priv err f = function
+   | Priv :: _ -> f ()
+   | _ :: tl   -> priv err f tl
+   | []        -> err ()
+
+let resolve err f name a =
+   let rec aux i = function
+      | Name (n, true) :: _ when n = name -> f i
+      | _ :: tl                           -> aux (succ i) tl
+      | []                                -> err i
+   in
+   aux 0 a
+
+let xlate f xlate_term = function
+   | a, uri, Abst t ->
+      let f t = f (a, uri, Abst t) in xlate_term f t
+   | a, uri, Abbr t ->
+      let f t = f (a, uri, Abbr t) in xlate_term f t
+   | _, _, Void   ->
+      assert false
+
+let initial_status si = {
+   delta = false; rt = false; si = si
+}
diff --git a/helm/software/lambda-delta/common/hierarchy.ml b/helm/software/lambda-delta/common/hierarchy.ml
new file mode 100644 (file)
index 0000000..f8a58dc
--- /dev/null
@@ -0,0 +1,43 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module H = Hashtbl
+module S = Scanf
+module C = Cps
+
+type graph = string * (int -> int)
+
+let sorts = 2
+let sort = H.create sorts
+
+(* Internal functions *******************************************************)
+
+let set_sort h s =
+   H.add sort h s; succ h
+
+(* Interface functions ******************************************************)
+
+let set_sorts ss i =   
+   List.fold_left set_sort i ss
+
+let get_sort err f h =
+   try f (H.find sort h) with Not_found -> err ()
+
+let string_of_graph (s, _) = s
+
+let apply (_, g) h = (g h)
+
+let graph_of_string err f s =
+   try 
+      let x = S.sscanf s "Z%u" C.start in 
+      if x > 0 then f (s, fun h -> x + h) else err ()
+   with
+      S.Scan_failure _ | Failure _ | End_of_file -> err ()
diff --git a/helm/software/lambda-delta/common/hierarchy.mli b/helm/software/lambda-delta/common/hierarchy.mli
new file mode 100644 (file)
index 0000000..19e9430
--- /dev/null
@@ -0,0 +1,22 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+type graph
+
+val set_sorts: string list -> int -> int
+
+val get_sort: (unit -> 'a) -> (string -> 'a) -> int -> 'a
+
+val graph_of_string: (unit -> 'a) -> (graph -> 'a) -> string -> 'a
+
+val string_of_graph: graph -> string
+
+val apply: graph -> int -> int
diff --git a/helm/software/lambda-delta/common/library.ml b/helm/software/lambda-delta/common/library.ml
new file mode 100644 (file)
index 0000000..94ee60b
--- /dev/null
@@ -0,0 +1,125 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module F = Filename
+module U = NUri
+module C = Cps
+module H = Hierarchy
+module Y = Entity
+
+(* internal functions *******************************************************)
+
+let base = "xml"
+
+let obj_ext = ".xml"
+
+let root = "ENTITY"
+
+let system = "http://helm.cs.unibo.it/lambda-delta/" ^ base ^ "/ld.dtd"
+
+let path_of_uri uri =
+   F.concat base (Str.string_after (U.string_of_uri uri) 3)
+
+(* interface functions ******************************************************)
+
+type och = string -> unit
+
+type attr = string * string
+
+type pp = och -> int -> unit
+
+let attribute out (name, contents) =
+   if contents <> "" then begin
+      out " "; out name; out "=\""; out contents; out "\""
+   end
+
+let xml out version encoding =
+   out "<?xml";
+      attribute out ("version", version);
+      attribute out ("encoding", encoding);
+   out "?>\n\n"
+
+let doctype out root system =
+   out "<!DOCTYPE "; out root; out " SYSTEM \""; out system; out "\">\n\n"
+
+let tag tag attrs ?contents out indent =
+   let spc = String.make indent ' ' in
+   out spc; out "<"; out tag; List.iter (attribute out) attrs;
+   match contents with
+      | None      -> out "/>\n"
+      | Some cont -> 
+         out ">\n"; cont out (indent + 3); out spc; 
+        out "</"; out tag; out ">\n"
+
+let sort = "Sort"
+
+let lref = "LRef"
+
+let gref = "GRef"
+
+let cast = "Cast"
+
+let appl = "Appl"
+
+let proj = "Proj"
+
+let abst = "Abst"
+
+let abbr = "Abbr"
+
+let void = "Void"
+
+let position i =
+   "position", string_of_int i
+
+let offset j = 
+   let contents = if j > 0 then string_of_int j else "" in
+   "offset", contents
+
+let uri u =
+   "uri", U.string_of_uri u
+
+let arity n =
+   let contents = if n > 1 then string_of_int n else "" in
+   "arity", contents
+
+let name a =
+   let map f i n r s =
+      let n = if r then n else "^" ^ n in 
+      let spc = if i then "" else " " in
+      f (s ^ n ^ spc)
+   in
+   let f s = "name", s in
+   Y.names f map a ""
+
+let mark a =
+   let err () = "mark", "" in
+   let f i = "mark", string_of_int i in
+   Y.mark err f a
+
+let export_entity pp_term si g (a, u, b) =
+   let path = path_of_uri u in
+   let _ = Sys.command (Printf.sprintf "mkdir -p %s" (F.dirname path)) in
+   let och = open_out (path ^ obj_ext) in
+   let out = output_string och in
+   xml out "1.0" "UTF-8"; doctype out root system;
+   let a = Y.Name (U.name_of_uri u, true) :: a in
+   let attrs = [uri u; name a; mark a] in 
+   let contents = match b with
+      | Y.Abst w -> tag "ABST" attrs ~contents:(pp_term w) 
+      | Y.Abbr v -> tag "ABBR" attrs ~contents:(pp_term v)
+      | Y.Void   -> assert false
+   in
+   let opts = if si then "si" else "" in
+   let shp = H.string_of_graph g in
+   let attrs = ["hierarchy", shp; "options", opts] in
+   tag root attrs ~contents out 0;
+   close_out och
diff --git a/helm/software/lambda-delta/common/library.mli b/helm/software/lambda-delta/common/library.mli
new file mode 100644 (file)
index 0000000..3364175
--- /dev/null
@@ -0,0 +1,52 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+type och = string -> unit
+
+type attr = string * string
+
+type pp = och -> int -> unit
+
+val export_entity:
+   ('term -> pp) -> 
+   bool -> Hierarchy.graph -> 'term Entity.entity -> unit
+
+val tag: string -> attr list -> ?contents:pp -> pp 
+
+val sort: string
+
+val lref: string
+
+val gref: string
+
+val cast: string
+
+val appl: string
+
+val proj: string
+
+val abst: string
+
+val abbr: string
+
+val void: string
+
+val position: int -> attr
+
+val offset: int -> attr
+
+val uri: Entity.uri -> attr
+
+val arity: int -> attr
+
+val name: Entity.attrs -> attr
+
+val mark: Entity.attrs -> attr
diff --git a/helm/software/lambda-delta/common/output.ml b/helm/software/lambda-delta/common/output.ml
new file mode 100644 (file)
index 0000000..c2e43d4
--- /dev/null
@@ -0,0 +1,75 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module P = Printf
+module L = Log
+
+let icm = ref 0
+
+type reductions = {
+   beta   : int;
+   zeta   : int;
+   upsilon: int;
+   tau    : int;
+   ldelta : int;
+   gdelta : int;
+   si     : int;
+   lrt    : int;
+   grt    : int
+}
+
+let initial_reductions = {
+   beta = 0; upsilon = 0; tau = 0; zeta = 0; ldelta = 0; gdelta = 0;
+   si = 0; lrt = 0; grt = 0
+}
+
+let reductions = ref initial_reductions
+
+let clear_reductions () = reductions := initial_reductions
+
+let add 
+   ?(beta=0) ?(upsilon=0) ?(tau=0) ?(ldelta=0) ?(gdelta=0) ?(zeta=0) 
+   ?(si=0) ?(lrt=0) ?(grt=0) ()
+= reductions := {
+   beta = !reductions.beta + beta;
+   zeta = !reductions.zeta + zeta;
+   upsilon = !reductions.upsilon + upsilon;
+   tau = !reductions.tau + tau;
+   ldelta = !reductions.ldelta + ldelta;
+   gdelta = !reductions.gdelta + gdelta;
+   si = !reductions.si + si;
+   lrt = !reductions.lrt + lrt;
+   grt = !reductions.grt + grt
+}
+
+let print_reductions () =
+   let r = !reductions in
+   let rs = r.beta + r.ldelta + r.zeta + r.upsilon + r.tau + r.gdelta in
+   let prs = r.si + r.lrt + r.grt in
+   let delta = r.ldelta + r.gdelta in
+   let rt = r.lrt + r.grt in   
+   L.warn (P.sprintf "  Reductions summary");
+   L.warn (P.sprintf "    Proper reductions:        %7u" rs);
+   L.warn (P.sprintf "      Beta:                   %7u" r.beta);
+   L.warn (P.sprintf "      Delta:                  %7u" delta);
+   L.warn (P.sprintf "        Local:                %7u" r.ldelta);
+   L.warn (P.sprintf "        Global:               %7u" r.gdelta);
+   L.warn (P.sprintf "      Zeta:                   %7u" r.zeta);
+   L.warn (P.sprintf "      Upsilon:                %7u" r.upsilon);
+   L.warn (P.sprintf "      Tau:                    %7u" r.tau);
+   L.warn (P.sprintf "    Pseudo reductions:        %7u" prs);
+   L.warn (P.sprintf "      Reference typing:       %7u" rt);
+   L.warn (P.sprintf "        Local:                %7u" r.lrt);
+   L.warn (P.sprintf "        Global:               %7u" r.grt);
+   L.warn (P.sprintf "      Sort inclusion:         %7u" r.si);
+   L.warn (P.sprintf "  Relocated nodes (icm):      %7u" !icm)
+
+let indexes = ref false
diff --git a/helm/software/lambda-delta/common/output.mli b/helm/software/lambda-delta/common/output.mli
new file mode 100644 (file)
index 0000000..679346a
--- /dev/null
@@ -0,0 +1,23 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+val indexes: bool ref
+
+val icm: int ref
+
+val clear_reductions: unit -> unit
+
+val add: 
+   ?beta:int -> ?upsilon:int -> ?tau:int -> ?ldelta:int -> ?gdelta:int ->
+   ?zeta:int -> ?si:int -> ?lrt:int -> ?grt:int ->
+   unit -> unit
+
+val print_reductions: unit -> unit
diff --git a/helm/software/lambda-delta/complete_rg/Make b/helm/software/lambda-delta/complete_rg/Make
new file mode 100644 (file)
index 0000000..71e141c
--- /dev/null
@@ -0,0 +1 @@
+crg crgOutput crgAut crgBrg
diff --git a/helm/software/lambda-delta/complete_rg/crg.ml b/helm/software/lambda-delta/complete_rg/crg.ml
new file mode 100644 (file)
index 0000000..6db1b54
--- /dev/null
@@ -0,0 +1,78 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+(* kernel version: complete, relative, global *)
+(* note          : fragment of complete lambda-delta serving as abstract layer *) 
+
+type uri = Entity.uri
+type id = Entity.id
+type attrs = Entity.attrs
+
+type bind = Abst of term list (* domains *)
+          | Abbr of term list (* bodies  *)
+          | Void of int       (* number of exclusions *)
+
+and term = TSort of attrs * int              (* attrs, hierarchy index *)
+         | TLRef of attrs * int * int        (* attrs, position indexes *)
+         | TGRef of attrs * uri              (* attrs, reference *)
+         | TCast of attrs * term * term      (* attrs, domain, element *)
+         | TAppl of attrs * term list * term (* attrs, arguments, function *)
+        | TProj of attrs * lenv * term      (* attrs, closure, member *)
+        | TBind of attrs * bind * term      (* attrs, binder, scope *)
+
+and lenv = ESort                        (* top *)
+         | EProj of lenv * attrs * lenv (* environment, attrs, closure *) 
+         | EBind of lenv * attrs * bind (* environment, attrs, binder *)
+
+type entity = term Entity.entity
+
+(* helpers ******************************************************************)
+
+let mk_uri root s =
+   String.concat "/" ["ld:"; "crg"; root; s ^ ".ld"]
+
+let empty_lenv = ESort
+
+let push_bind f lenv a b = f (EBind (lenv, a, b))
+
+let push_proj f lenv a e = f (EProj (lenv, a, e))
+
+let push2 err f lenv attr ?t = match lenv, t with
+   | EBind (e, a, Abst ws), Some t -> f (EBind (e, (attr :: a), Abst (t :: ws)))
+   | EBind (e, a, Abbr vs), Some t -> f (EBind (e, (attr :: a), Abbr (t :: vs)))
+   | EBind (e, a, Void n), None    -> f (EBind (e, (attr :: a), Void (succ n)))
+   | _                             -> err ()
+
+(* this id not tail recursive *)
+let resolve_lref err f id lenv =
+   let rec aux f i k = function
+     | ESort            -> err ()
+     | EBind (tl, a, _) ->
+        let err kk = aux f (succ i) (k + kk) tl in
+       let f j = f i j (k + j) in
+       Entity.resolve err f id a
+     | EProj _          -> assert false (* TODO *)
+   in
+   aux f 0 0 lenv
+
+let rec get_name err f i j = function
+   | ESort                      -> err i
+   | EBind (tl, a, Abst [])     -> get_name err f i j tl
+   | EBind (tl, a, Abbr [])     -> get_name err f i j tl
+   | EBind (tl, a, Void 0)      -> get_name err f i j tl
+   | EBind (_, a, _) when i = 0 -> 
+      let err () = err i in
+      Entity.get_name err f j a
+   | EBind (tl, _, _)           -> 
+      get_name err f (pred i) j tl
+   | EProj (tl, _, e)           ->
+      let err i = get_name err f i j tl in 
+      get_name err f i j e
diff --git a/helm/software/lambda-delta/complete_rg/crgAut.ml b/helm/software/lambda-delta/complete_rg/crgAut.ml
new file mode 100644 (file)
index 0000000..267e2b4
--- /dev/null
@@ -0,0 +1,222 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module U = NUri
+module H = U.UriHash
+module C = Cps
+module Y = Entity
+module A = Aut
+module D = Crg
+
+(* qualified identifier: uri, name, qualifiers *)
+type qid = D.uri * D.id * D.id list
+
+type context = Y.attrs * D.term list
+
+type context_node = qid option (* context node: None = root *)
+
+type status = {
+   path: D.id list;          (* current section path *) 
+   node: context_node;       (* current context node *)
+   nodes: context_node list; (* context node list *)
+   line: int;                (* line number *)
+   mk_uri:Y.uri_generator    (* uri generator *) 
+}
+
+type resolver = Local of int
+              | Global of context
+
+let henv_size, hcnt_size = 7000, 4300 (* hash tables initial sizes *)
+
+let henv = H.create henv_size (* optimized global environment *)
+
+let hcnt = H.create hcnt_size (* optimized context *)
+
+(* Internal functions *******************************************************)
+
+let initial_status mk_uri =
+   H.clear henv; H.clear hcnt; {
+   path = []; node = None; nodes = []; line = 1; mk_uri = mk_uri
+}
+
+let empty_cnt = [], []
+
+let add_abst (a, ws) id w = 
+   Y.Name (id, true) :: a, w :: ws 
+
+let lenv_of_cnt (a, ws) = 
+   D.push_bind C.start D.empty_lenv a (D.Abst ws)
+
+let mk_lref f i j k = f (D.TLRef ([Y.Apix k], i, j))
+
+let id_of_name (id, _, _) = id
+
+let mk_qid f st id path =
+   let str = String.concat "/" path in
+   let str = Filename.concat str id in 
+   let f str = f (U.uri_of_string str, id, path) in
+   f (st.mk_uri str)
+   
+let uri_of_qid (uri, _, _) = uri
+
+let complete_qid f st (id, is_local, qs) =
+   let f path = C.list_rev_append (mk_qid f st id) path ~tail:qs in
+   let rec skip f = function
+      | phd :: ptl, qshd :: _ when phd = qshd -> f ptl
+      | _ :: ptl, _ :: _                      -> skip f (ptl, qs)
+      | _                                     -> f []
+   in
+   if is_local then f st.path else skip f (st.path, qs)
+
+let relax_qid f st (_, id, path) =
+   let f = function
+      | _ :: tl -> C.list_rev (mk_qid f st id) tl
+      | []      -> assert false
+   in
+   C.list_rev f path
+
+let relax_opt_qid f st = function
+   | None     -> f None
+   | Some qid -> let f qid = f (Some qid) in relax_qid f st qid
+
+let resolve_gref err f st qid =
+   try let cnt = H.find henv (uri_of_qid qid) in f qid cnt
+   with Not_found -> err qid 
+
+let resolve_gref_relaxed f st qid =
+(* this is not tail recursive *)   
+   let rec err qid = relax_qid (resolve_gref err f st) st qid in
+   resolve_gref err f st qid
+
+let get_cnt err f st = function
+   | None              -> f empty_cnt
+   | Some qid as node ->
+      try let cnt = H.find hcnt (uri_of_qid qid) in f cnt
+      with Not_found -> err node
+
+let get_cnt_relaxed f st =
+(* this is not tail recursive *)   
+   let rec err node = relax_opt_qid (get_cnt err f st) st node in
+   get_cnt err f st st.node
+
+(* this is not tail recursive in the GRef branch *)
+let rec xlate_term f st lenv = function
+   | A.Sort s            -> 
+      let f h = f (D.TSort ([], h)) in
+      if s then f 0 else f 1
+   | A.Appl (v, t)       ->
+      let f vv tt = f (D.TAppl ([], [vv], tt)) in
+      let f vv = xlate_term (f vv) st lenv t in
+      xlate_term f st lenv v
+   | A.Abst (name, w, t) ->
+      let f ww = 
+         let a, b = [Y.Name (name, true)], (D.Abst [ww]) in
+        let f tt = f (D.TBind (a, b, tt)) in
+         let f lenv = xlate_term f st lenv t in
+        D.push_bind f lenv a b
+      in
+      xlate_term f st lenv w
+   | A.GRef (name, args) ->
+      let map1 f = function
+           | Y.Name (id, _) -> f (A.GRef ((id, true, []), []))
+           | _              -> C.err ()
+      in
+      let map2 f = xlate_term f st lenv in
+      let g qid (a, _) =
+         let gref = D.TGRef ([], uri_of_qid qid) in
+        match args, a with
+           | [], [] -> f gref
+           | _      -> 
+              let f args = f (D.TAppl ([], args, gref)) in
+              let f args = f (List.rev_map (map2 C.start) args) in
+              let f a = C.list_rev_map_append f map1 a ~tail:args in
+              C.list_sub_strict f a args
+      in
+      let g qid = resolve_gref_relaxed g st qid in
+      let err () = complete_qid g st name in
+      D.resolve_lref err (mk_lref f) (id_of_name name) lenv
+
+let xlate_entity err f st = function
+   | A.Section (Some (_, name))     ->
+      err {st with path = name :: st.path; nodes = st.node :: st.nodes}
+   | A.Section None            ->
+      begin match st.path, st.nodes with
+        | _ :: ptl, nhd :: ntl -> 
+           err {st with path = ptl; node = nhd; nodes = ntl}
+         | _                    -> assert false
+      end
+   | A.Context None            ->
+      err {st with node = None}
+   | A.Context (Some name)     ->
+      let f name = err {st with node = Some name} in
+      complete_qid f st name 
+   | A.Block (name, w)         ->
+      let f qid = 
+         let f cnt =
+           let lenv = lenv_of_cnt cnt in
+           let ww = xlate_term C.start st lenv w in
+           H.add hcnt (uri_of_qid qid) (add_abst cnt name ww);
+           err {st with node = Some qid}
+        in
+         get_cnt_relaxed f st
+      in
+      complete_qid f st (name, true, [])
+   | A.Decl (name, w)          ->
+      let f cnt =
+         let a, ws = cnt in
+         let lenv = lenv_of_cnt cnt in
+        let f qid = 
+            let ww = xlate_term C.start st lenv w in
+           H.add henv (uri_of_qid qid) cnt;
+           let t = match ws with
+              | [] -> ww
+              | _  -> D.TBind (a, D.Abst ws, ww)
+           in
+(*
+           print_newline (); CrgOutput.pp_term print_string t;
+*)
+           let b = Y.Abst t in
+           let entity = [Y.Mark st.line], uri_of_qid qid, b in
+           f {st with line = succ st.line} entity
+        in
+         complete_qid f st (name, true, [])
+      in
+      get_cnt_relaxed f st
+   | A.Def (name, w, trans, v) ->
+      let f cnt = 
+        let a, ws = cnt in
+        let lenv = lenv_of_cnt cnt in
+         let f qid = 
+            let ww = xlate_term C.start st lenv w in
+           let vv = xlate_term C.start st lenv v in
+           H.add henv (uri_of_qid qid) cnt;
+            let t = match ws with
+              | [] -> D.TCast ([], ww, vv)
+              | _  -> D.TBind (a, D.Abst ws, D.TCast ([], ww, vv))
+           in
+(*
+           print_newline (); CrgOutput.pp_term print_string t;
+*)
+           let b = Y.Abbr t in
+           let a = Y.Mark st.line :: if trans then [] else [Y.Priv] in
+           let entity = a, uri_of_qid qid, b in
+           f {st with line = succ st.line} entity
+        in
+         complete_qid f st (name, true, [])
+      in
+      get_cnt_relaxed f st
+
+(* Interface functions ******************************************************)
+
+let initial_status mk_uri =
+   initial_status mk_uri
+
+let crg_of_aut = xlate_entity
diff --git a/helm/software/lambda-delta/complete_rg/crgAut.mli b/helm/software/lambda-delta/complete_rg/crgAut.mli
new file mode 100644 (file)
index 0000000..3f416a0
--- /dev/null
@@ -0,0 +1,17 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+type status
+
+val initial_status: Entity.uri_generator -> status 
+
+val crg_of_aut: (status -> 'a) -> (status -> Crg.entity -> 'a) -> 
+                status -> Aut.entity -> 'a
diff --git a/helm/software/lambda-delta/complete_rg/crgBrg.ml b/helm/software/lambda-delta/complete_rg/crgBrg.ml
new file mode 100644 (file)
index 0000000..bfed7ad
--- /dev/null
@@ -0,0 +1,64 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module C = Cps
+module Y = Entity
+module D = Crg
+module B = Brg
+
+let rec lenv_fold_left map1 map2 x = function
+   | D.ESort            -> x
+   | D.EBind (tl, a, b) -> lenv_fold_left map1 map2 (map1 x a b) tl
+   | D.EProj (tl, a, e) -> lenv_fold_left map1 map2 (map2 x a e) tl
+
+let rec xlate_term f = function
+   | D.TSort (a, l)     -> f (B.Sort (a, l))
+   | D.TGRef (a, n)     -> f (B.GRef (a, n))
+   | D.TLRef (a, _, _)  -> let f i = f (B.LRef (a, i)) in Y.apix C.err f a
+   | D.TCast (a, u, t)  ->
+      let f uu tt = f (B.Cast (a, uu, tt)) in
+      let f uu = xlate_term (f uu) t in
+      xlate_term f u 
+   | D.TAppl (a, vs, t) ->
+      let map f v tt = let f vv = f (B.Appl (a, vv, tt)) in xlate_term f v in
+      let f tt = C.list_fold_right f map vs tt in
+      xlate_term f t
+   | D.TProj (a, e, t)  ->
+      let f tt = f (lenv_fold_left xlate_bind xlate_proj tt e) in
+      xlate_term f t
+   | D.TBind (ab, D.Abst ws, D.TCast (ac, u, t)) ->
+      xlate_term f (D.TCast (ac, D.TBind (ab, D.Abst ws, u), D.TBind (ab, D.Abst ws, t)))
+   | D.TBind (a, b, t)  ->
+      let f tt = f (xlate_bind tt a b) in xlate_term f t
+
+and xlate_bind x a b =
+   let f a ns = a, ns in
+   let a, ns = Y.get_names f a in 
+   match b with
+      | D.Abst ws ->
+         let map x n w = 
+           let f ww = B.Bind (n :: a, B.Abst ww, x) in xlate_term f w
+        in
+        List.fold_left2 map x ns ws 
+      | D.Abbr vs ->
+         let map x n v = 
+           let f vv = B.Bind (n :: a, B.Abbr vv, x) in xlate_term f v
+        in
+        List.fold_left2 map x ns vs
+      | D.Void _  ->
+         let map x n = B.Bind (n :: a, B.Void, x) in
+        List.fold_left map x ns
+
+and xlate_proj x _ e =
+   lenv_fold_left xlate_bind xlate_proj x e
+
+let brg_of_crg f t =
+   f (xlate_term C.start t)
diff --git a/helm/software/lambda-delta/complete_rg/crgBrg.mli b/helm/software/lambda-delta/complete_rg/crgBrg.mli
new file mode 100644 (file)
index 0000000..db4e542
--- /dev/null
@@ -0,0 +1,12 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+val brg_of_crg: (Brg.term -> 'a) -> Crg.term -> 'a
diff --git a/helm/software/lambda-delta/complete_rg/crgOutput.ml b/helm/software/lambda-delta/complete_rg/crgOutput.ml
new file mode 100644 (file)
index 0000000..ecc4a33
--- /dev/null
@@ -0,0 +1,148 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module P = Printf
+module U = NUri
+module C = Cps
+module H = Hierarchy
+module Y = Entity
+module X = Library
+module D = Crg
+
+(****************************************************************************)
+
+let pp_attrs out a =
+   let map = function
+      | Y.Name (s, true)  -> out (P.sprintf "%s;" s)
+      | Y.Name (s, false) -> out (P.sprintf "~%s;" s)
+      | Y.Apix i          -> out (P.sprintf "+%i;" i)
+      | Y.Mark i          -> out (P.sprintf "@%i;" i)
+      | Y.Priv            -> out (P.sprintf "%s;" "~") 
+   in
+   List.iter map a
+
+let rec pp_term out = function
+   | D.TSort (a, l)    -> pp_attrs out a; out (P.sprintf "*%u" l)
+   | D.TLRef (a, i, j) -> pp_attrs out a; out (P.sprintf "#(%u,%u)" i j)
+   | D.TGRef (a, u)    -> pp_attrs out a; out (P.sprintf "$")
+   | D.TCast (a, x, y) -> pp_attrs out a; out "<"; pp_term out x; out ">."; pp_term out y
+   | D.TProj (a, x, y) -> assert false
+   | D.TAppl (a, x, y) -> pp_attrs out a; pp_terms "(" ")" out x; pp_term out y
+   | D.TBind (a, x, y) -> pp_attrs out a; pp_bind out x; pp_term out y
+
+and pp_terms bg eg out vs =
+   let rec aux = function
+      | []      -> ()
+      | [v]     -> pp_term out v
+      | v :: vs -> pp_term out v; out ", "; aux vs
+   in
+   out bg; aux vs; out (eg ^ ".")
+
+and pp_bind out = function
+   | D.Abst x -> pp_terms "[:" "]" out x
+   | D.Abbr x -> pp_terms "[=" "]" out x
+   | D.Void x -> out (P.sprintf "[%u]" x)
+
+let rec pp_lenv out = function
+   | D.ESort           -> ()
+   | D.EProj (x, a, y) -> assert false
+   | D.EBind (x, a, y) -> pp_lenv out x; pp_attrs out a; pp_bind out y
+
+(****************************************************************************)
+
+let rec list_iter map l out tab = match l with
+   | []       -> ()
+   | hd :: tl -> map hd out tab; list_iter map tl out tab
+
+let list_rev_iter map e ns l out tab =
+   let rec aux err f e = function
+      | [], []            -> f e
+      | n :: ns, hd :: tl -> 
+        let f e =
+(*     
+           pp_lenv print_string e; print_string " |- "; 
+          pp_term print_string hd; print_newline ();
+*)
+          map e hd out tab; f (D.push2 C.err C.start e n ~t:hd)
+       in
+       aux err f e (ns, tl) 
+      | _                 -> err ()
+   in
+   ignore (aux C.err C.start e (ns, l))
+
+let lenv_iter map1 map2 l out tab = 
+   let rec aux f = function
+      | D.ESort              -> f ()
+      | D.EBind (lenv, a, b) -> aux (fun () -> map1 a b out tab; f ()) lenv
+      | D.EProj (lenv, a, e) -> aux (fun () -> map2 a e out tab; f ()) lenv
+   in 
+   aux C.start l
+
+let rec exp_term e t out tab = match t with
+   | D.TSort (a, l)       ->
+      let a =
+         let err _ = a in
+         let f s = Y.Name (s, true) :: a in
+        H.get_sort err f l
+      in
+      let attrs = [X.position l; X.name a] in
+      X.tag X.sort attrs out tab
+   | D.TLRef (a, i, j)    ->
+      let a = 
+         let err _ = a in
+        let f n r = Y.Name (n, r) :: a in
+         D.get_name err f i j e
+      in
+      let attrs = [X.position i; X.offset j; X.name a] in
+      X.tag X.lref attrs out tab
+   | D.TGRef (a, n)       ->
+      let a = Y.Name (U.name_of_uri n, true) :: a in
+      let attrs = [X.uri n; X.name a] in
+      X.tag X.gref attrs out tab
+   | D.TCast (a, u, t)    ->
+      let attrs = [] in
+      X.tag X.cast attrs ~contents:(exp_term e u) out tab;
+      exp_term e t out tab
+   | D.TAppl (a, vs, t)   ->
+      let attrs = [X.arity (List.length vs)] in
+      X.tag X.appl attrs ~contents:(list_iter (exp_term e) vs) out tab;
+      exp_term e t out tab
+   | D.TProj (a, lenv, t) ->
+      let attrs = [] in
+      X.tag X.proj attrs ~contents:(lenv_iter (exp_bind e) (exp_eproj e) lenv) out tab;
+      exp_term (D.push_proj C.start e a lenv) t out tab
+   | D.TBind (a, b, t) ->
+      exp_bind e a b out tab; 
+      exp_term (D.push_bind C.start e a b) t out tab 
+
+and exp_bind e a b out tab = 
+   let f a ns = a, ns in
+   let a, ns = Y.get_names f a in 
+   match b with
+      | D.Abst ws ->
+         let e = D.push_bind C.start e a (D.Abst []) in
+        let attrs = [X.name ns; X.mark a; X.arity (List.length ws)] in
+         X.tag X.abst attrs ~contents:(list_rev_iter exp_term e ns ws) out tab
+      | D.Abbr vs ->
+         let e = D.push_bind C.start e a (D.Abbr []) in
+         let attrs = [X.name ns; X.mark a; X.arity (List.length vs)] in
+         X.tag X.abbr attrs ~contents:(list_rev_iter exp_term e ns vs) out tab
+      | D.Void n ->
+         let attrs = [X.name a; X.mark a; X.arity n] in
+         X.tag X.void attrs out tab
+
+and exp_eproj e a lenv out tab =
+   let attrs = [] in
+   X.tag X.proj attrs ~contents:(lenv_iter (exp_bind e) (exp_eproj e) lenv) out tab
+
+(****************************************************************************)
+
+let export_term = exp_term D.empty_lenv
diff --git a/helm/software/lambda-delta/complete_rg/crgOutput.mli b/helm/software/lambda-delta/complete_rg/crgOutput.mli
new file mode 100644 (file)
index 0000000..4d3f747
--- /dev/null
@@ -0,0 +1,14 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+val export_term: Crg.term -> Library.pp
+
+val pp_term: (string -> unit) -> Crg.term -> unit
diff --git a/helm/software/lambda-delta/icons/basic-32.png b/helm/software/lambda-delta/icons/basic-32.png
new file mode 100644 (file)
index 0000000..350f6bc
Binary files /dev/null and b/helm/software/lambda-delta/icons/basic-32.png differ
diff --git a/helm/software/lambda-delta/icons/crux-16.ico b/helm/software/lambda-delta/icons/crux-16.ico
new file mode 100644 (file)
index 0000000..6c3a2a1
Binary files /dev/null and b/helm/software/lambda-delta/icons/crux-16.ico differ
diff --git a/helm/software/lambda-delta/icons/crux-32.png b/helm/software/lambda-delta/icons/crux-32.png
new file mode 100644 (file)
index 0000000..fe369d2
Binary files /dev/null and b/helm/software/lambda-delta/icons/crux-32.png differ
diff --git a/helm/software/lambda-delta/icons/helena-32.png b/helm/software/lambda-delta/icons/helena-32.png
new file mode 100644 (file)
index 0000000..4a065ae
Binary files /dev/null and b/helm/software/lambda-delta/icons/helena-32.png differ
diff --git a/helm/software/lambda-delta/lib/Make b/helm/software/lambda-delta/lib/Make
new file mode 100644 (file)
index 0000000..5b884ad
--- /dev/null
@@ -0,0 +1 @@
+nUri cps share log time
diff --git a/helm/software/lambda-delta/lib/cps.ml b/helm/software/lambda-delta/lib/cps.ml
new file mode 100644 (file)
index 0000000..10ec623
--- /dev/null
@@ -0,0 +1,83 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+let err _ = assert false
+
+let start x = x
+
+let id f x = f x
+
+let rec list_sub_strict f l1 l2 = match l1, l2 with
+   | _, []              -> f l1
+   | _ :: tl1, _ :: tl2 -> list_sub_strict f tl1 tl2
+   | _                  -> assert false
+
+(* this is not tail recursive *)
+let rec list_fold_left f map a = function
+   | []       -> f a
+   | hd :: tl -> 
+      let f a = list_fold_left f map a tl in
+      map f a hd
+
+(* this is not tail recursive *)
+let rec list_rev_map_append f map ~tail = function
+      | []       -> f tail        
+      | hd :: tl ->
+         let f hd = list_rev_map_append f map ~tail:(hd :: tail) tl in
+         map f hd
+
+(* this is not tail recursive *)
+let rec list_forall2 f map l1 l2 = match l1, l2 with
+   | [], []                 -> f true
+   | hd1 :: tl1, hd2 :: tl2 ->
+      let f b = if b then list_forall2 f map tl1 tl2 else f false in
+      map f hd1 hd2
+   | _                      -> f false
+
+let list_rev_append f =
+   list_rev_map_append f (fun f t -> f t)
+
+let list_rev_map =
+   list_rev_map_append ~tail:[]
+
+let list_rev =
+   list_rev_append ~tail:[]
+
+let list_iter f map l =
+   let map f () x = map f x in
+   list_fold_left f map () l
+
+(* this is not tail recursive *)
+let rec list_fold_left2 f map a l1 l2 = match l1, l2 with
+   | [], []                 -> f a
+   | hd1 :: tl1, hd2 :: tl2 -> 
+      let f a = list_fold_left2 f map a tl1 tl2 in
+      map f a hd1 hd2
+   | _                      -> assert false
+
+let list_iter2 f map l1 l2 =
+   let map f () x1 x2 = map f x1 x2 in
+   list_fold_left2 f map () l1 l2
+
+let rec list_fold_right f map l a = match l with
+   | []       -> f a
+   | hd :: tl -> list_fold_right (map f hd) map tl a
+
+let list_map f map l =
+   let map f hd a = 
+      let f hd = f (hd :: a) in map f hd
+   in
+   list_fold_right f map l []
+
+let rec list_mem ?(eq=(=)) a = function
+   | []                   -> false
+   | hd :: _ when eq a hd -> true
+   | _ :: tl              -> list_mem ~eq a tl
diff --git a/helm/software/lambda-delta/lib/log.ml b/helm/software/lambda-delta/lib/log.ml
new file mode 100644 (file)
index 0000000..3b93cce
--- /dev/null
@@ -0,0 +1,92 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module P = Printf
+module F = Format
+module C = Cps
+
+type ('a, 'b) item = Term of 'a * 'b
+                   | LEnv of 'a
+                   | Warn of string
+                  | String of string
+                   | Loc
+
+type ('a, 'b) message = ('a, 'b) item list
+
+type ('a, 'b) specs = {
+   pp_term: 'a -> F.formatter -> 'b -> unit;
+   pp_lenv: F.formatter -> 'a -> unit
+}
+
+let level = ref 0
+
+let loc = ref "unknown location"
+
+(* Internal functions *******************************************************)
+
+let std = F.std_formatter
+
+let err = F.err_formatter
+
+let pp_items frm st l items =   
+   let pp_item frm = function
+      | Term (c, t) -> F.fprintf frm "@,%a" (st.pp_term c) t
+      | LEnv c      -> F.fprintf frm "%a" st.pp_lenv c
+      | Warn s      -> F.fprintf frm "@,%s" s
+      | String s    -> F.fprintf frm "%s " s
+      | Loc         -> F.fprintf frm " <%s>" !loc 
+   in
+   let iter map frm l = List.iter (map frm) l in
+   if !level >= l then F.fprintf frm "%a" (iter pp_item) items
+
+(* Interface functions ******************************************************)
+
+let box l = 
+   if !level >= l then
+   begin F.fprintf std "@,@[<v 2>%s" "  "; F.pp_print_if_newline std () end
+
+let unbox l = if !level >= l then F.fprintf std "@]"
+
+let flush l = if !level >= l then F.fprintf std "@]@."
+
+let box_err () = F.fprintf err "@[<v>"
+
+let flush_err () = F.fprintf err "@]@."
+
+let log st l items = pp_items std st l items
+
+let error st items = pp_items err st 0 items
+
+let items1 s = [Warn s]
+
+let t_items1 st c t =
+   [Warn st; Term (c, t)]
+
+let et_items1 sc c st t =
+   [Warn sc; LEnv c; Warn st; Term (c, t)]
+
+let et_items2 sc1 c1 st1 t1 ?sc2 ?c2 st2 t2 =
+   let tl = match sc2, c2 with
+      | Some sc2, Some c2 -> et_items1 sc2 c2 st2 t2
+      | None, None        -> t_items1 st2 c1 t2
+      | _                 -> assert false
+   in
+   et_items1 sc1 c1 st1 t1 @ tl  
+
+let et_items3 sc1 c1 st1 t1 ?sc2 ?c2 st2 t2 ?sc3 ?c3 st3 t3 =
+   let tl = match sc3, c3 with
+      | Some sc3, Some c3 -> et_items1 sc3 c3 st3 t3
+      | None, None        -> t_items1 st3 c1 t3 
+      | _                 -> assert false
+   in   
+   et_items2 sc1 c1 st1 t1 ?sc2 ?c2 st2 t2 @ tl 
+
+let warn msg = F.fprintf std "@,%s" msg
diff --git a/helm/software/lambda-delta/lib/log.mli b/helm/software/lambda-delta/lib/log.mli
new file mode 100644 (file)
index 0000000..956f91f
--- /dev/null
@@ -0,0 +1,61 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+type ('a, 'b) item = Term of 'a * 'b
+                   | LEnv of 'a
+                   | Warn of string
+                  | String of string
+                  | Loc
+
+type ('a, 'b) message = ('a, 'b) item list
+
+type ('a, 'b) specs = {
+   pp_term: 'a -> Format.formatter -> 'b -> unit;
+   pp_lenv: Format.formatter -> 'a -> unit
+}
+
+val loc: string ref
+
+val level: int ref
+
+val warn: string -> unit
+
+val box: int -> unit
+
+val unbox: int -> unit
+
+val flush: int -> unit
+
+val box_err: unit -> unit
+
+val flush_err: unit -> unit
+
+val log: ('a, 'b) specs -> int -> ('a, 'b) message -> unit
+
+val error: ('a, 'b) specs -> ('a, 'b) message -> unit
+
+val items1: string -> ('a, 'b) message
+
+val t_items1: string -> 'a -> 'b -> ('a, 'b) message
+
+val et_items1:
+   string -> 'a -> string -> 'b -> ('a, 'b) message
+
+val et_items2:
+   string -> 'a -> string -> 'b -> 
+   ?sc2:string -> ?c2:'a -> string -> 'b -> 
+   ('a, 'b) message
+
+val et_items3:
+   string -> 'a -> string -> 'b -> 
+   ?sc2:string -> ?c2:'a -> string -> 'b -> 
+   ?sc3:string -> ?c3:'a -> string -> 'b ->
+   ('a, 'b) message
diff --git a/helm/software/lambda-delta/lib/nUri.ml b/helm/software/lambda-delta/lib/nUri.ml
new file mode 120000 (symlink)
index 0000000..8987637
--- /dev/null
@@ -0,0 +1 @@
+../../components/ng_kernel/nUri.ml
\ No newline at end of file
diff --git a/helm/software/lambda-delta/lib/nUri.mli b/helm/software/lambda-delta/lib/nUri.mli
new file mode 120000 (symlink)
index 0000000..e6205cd
--- /dev/null
@@ -0,0 +1 @@
+../../components/ng_kernel/nUri.mli
\ No newline at end of file
diff --git a/helm/software/lambda-delta/lib/share.ml b/helm/software/lambda-delta/lib/share.ml
new file mode 100644 (file)
index 0000000..600ae9d
--- /dev/null
@@ -0,0 +1,21 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+let sh a b =
+   if a == b then a else b
+
+let sh1 a1 a2 b1 b2 =
+   if a1 == a2 then b1 else b2 (sh a1 a2)
+
+let sh2 a1 a2 b1 b2 c1 c2 =
+   if a1 == a2 && b1 == b2 then c1 else c2 (sh a1 a2) (sh b1 b2)
+
+let eq a b = (a == b) || (a = b)
diff --git a/helm/software/lambda-delta/lib/time.ml b/helm/software/lambda-delta/lib/time.ml
new file mode 100644 (file)
index 0000000..42d7d39
--- /dev/null
@@ -0,0 +1,34 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module P = Printf
+module L = Log
+
+let utime_stamp =
+   let old = ref 0.0 in
+   fun msg -> 
+      let times = Unix.times () in
+      let stamp = times.Unix.tms_utime in
+      let lap = stamp -. !old in
+      L.warn (P.sprintf "USR TIME STAMP (%s): %f (%f)" msg stamp lap);
+      old := stamp
+
+let gmtime msg =
+   let gmt = Unix.gmtime (Unix.time ()) in
+   let yy = gmt.Unix.tm_year + 1900 in
+   let mm = gmt.Unix.tm_mon + 1 in
+   let dd = gmt.Unix.tm_mday in
+   let h = gmt.Unix.tm_hour in
+   let m = gmt.Unix.tm_min in
+   let s = gmt.Unix.tm_sec in
+   L.warn (
+      P.sprintf "UTC TIME STAMP (%s): %u/%u/%u %u:%u:%u" msg yy mm dd h m s
+   )
diff --git a/helm/software/lambda-delta/toplevel/Make b/helm/software/lambda-delta/toplevel/Make
new file mode 100644 (file)
index 0000000..a8a72e1
--- /dev/null
@@ -0,0 +1 @@
+meta metaOutput metaLibrary metaAut metaBag metaBrg top
diff --git a/helm/software/lambda-delta/toplevel/meta.ml b/helm/software/lambda-delta/toplevel/meta.ml
new file mode 100644 (file)
index 0000000..5539772
--- /dev/null
@@ -0,0 +1,25 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+type uri = Entity.uri
+type id = Entity.id
+
+type term = Sort of bool                  (* sorts: true = TYPE, false = PROP *)
+         | LRef of int * int             (* local reference: local environment length, de bruijn index *)
+         | GRef of int * uri * term list (* global reference: local environment length, name, arguments *)
+         | Appl of term * term           (* application: argument, function *)
+         | Abst of id * term * term      (* abstraction: name, domain, scope *)
+
+type pars = (id * term) list (* parameter declarations: name, type *)
+
+type entry = pars * term * term option (* parameters, domain, body *)
+
+type entity = entry Entity.entity
diff --git a/helm/software/lambda-delta/toplevel/metaAut.ml b/helm/software/lambda-delta/toplevel/metaAut.ml
new file mode 100644 (file)
index 0000000..d686c0f
--- /dev/null
@@ -0,0 +1,216 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module U = NUri
+module H = U.UriHash
+module C = Cps
+module Y = Entity
+module M = Meta
+module A = Aut
+
+(* qualified identifier: uri, name, qualifiers *)
+type qid = M.uri * M.id * M.id list
+
+type context_node = qid option (* context node: None = root *)
+
+type status = {
+   path: M.id list;          (* current section path *) 
+   node: context_node;       (* current context node *)
+   nodes: context_node list; (* context node list *)
+   line: int;                (* line number *)
+   cover: string             (* initial segment of URI hierarchy *) 
+}
+
+type resolver = Local of int
+              | Global of M.pars
+
+let henv_size, hcnt_size = 7000, 4300 (* hash tables initial sizes *)
+
+let henv = H.create henv_size (* optimized global environment *)
+
+let hcnt = H.create hcnt_size (* optimized context *) 
+
+(* Internal functions *******************************************************)
+
+let initial_status cover =
+   H.clear henv; H.clear hcnt; {
+   path = []; node = None; nodes = []; line = 1; cover = cover;
+}
+
+let id_of_name (id, _, _) = id
+
+let mk_qid st id path =
+   let uripath = if st.cover = "" then path else st.cover :: path in
+   let str = String.concat "/" uripath in
+   let str = Filename.concat str id in 
+   U.uri_of_string ("ld:/" ^ str ^ ".ld"), id, path
+
+let uri_of_qid (uri, _, _) = uri
+
+let complete_qid f st (id, is_local, qs) =
+   let f qs = f (mk_qid st id qs) in
+   let f path = C.list_rev_append f path ~tail:qs in
+   let rec skip f = function
+      | phd :: ptl, qshd :: _ when phd = qshd -> f ptl
+      | _ :: ptl, _ :: _                      -> skip f (ptl, qs)
+      | _                                     -> f []
+   in
+   if is_local then f st.path else skip f (st.path, qs)
+
+let relax_qid f st (_, id, path) =
+   let f path = f (mk_qid st id path) in
+   let f = function
+      | _ :: tl -> C.list_rev f tl
+      | []      -> assert false
+   in
+   C.list_rev f path
+
+let relax_opt_qid f st = function
+   | None     -> f None
+   | Some qid -> let f qid = f (Some qid) in relax_qid f st qid
+
+let resolve_lref f st l lenv id =
+   let rec aux f i = function
+     | []                            -> f None
+     | (name, _) :: _ when name = id -> f (Some (M.LRef (l, i)))
+     | _ :: tl                       -> aux f (succ i) tl
+   in
+   aux f 0 lenv
+
+let resolve_lref_strict f st l lenv id =
+   let f = function
+      | Some t -> f t
+      | None   -> assert false
+   in
+   resolve_lref f st l lenv id
+
+let resolve_gref f st qid =
+   try let args = H.find henv (uri_of_qid qid) in f qid (Some args)
+   with Not_found -> f qid None
+
+let resolve_gref_relaxed f st qid =
+(* this is not tail recursive *)
+   let rec g qid = function
+      | None      -> relax_qid (resolve_gref g st) st qid
+      | Some args -> f qid args
+   in
+   resolve_gref g st qid
+
+let get_pars f st = function
+   | None              -> f [] None
+   | Some qid as node ->
+      try let pars = H.find hcnt (uri_of_qid qid) in f pars None
+      with Not_found -> f [] (Some node)
+
+let get_pars_relaxed f st =
+(* this is not tail recursive *)
+   let rec g pars = function
+      | None      -> f pars 
+      | Some node -> relax_opt_qid (get_pars g st) st node
+   in
+   get_pars g st st.node
+
+(* this is not tail recursive on the GRef branch *)
+let rec xlate_term f st lenv = function
+   | A.Sort sort         -> 
+      f (M.Sort sort)
+   | A.Appl (v, t)       ->
+      let f vv tt = f (M.Appl (vv, tt)) in
+      let f vv = xlate_term (f vv) st lenv t in
+      xlate_term f st lenv v
+   | A.Abst (name, w, t) ->
+      let add name w lenv = (name, w) :: lenv in
+      let f ww tt = f (M.Abst (name, ww, tt)) in
+      let f ww = xlate_term (f ww) st (add name ww lenv) t in
+      xlate_term f st lenv w
+   | A.GRef (name, args) ->
+      let l = List.length lenv in
+      let g qid defs =
+        let map1 f = xlate_term f st lenv in       
+        let map2 f (id, _) = resolve_lref_strict f st l lenv id in
+         let f tail = 
+           let f args = f (M.GRef (l, uri_of_qid qid, args)) in
+            let f defs = C.list_rev_map_append f map2 defs ~tail in
+           C.list_sub_strict f defs args
+        in   
+        C.list_map f map1 args
+      in
+      let g qid = resolve_gref_relaxed g st qid in
+      let f = function
+         | Some t -> f t
+        | None   -> complete_qid g st name
+      in
+      resolve_lref f st l lenv (id_of_name name)
+
+let xlate_entity err f st = function
+   | A.Section (Some (_, name))     ->
+      err {st with path = name :: st.path; nodes = st.node :: st.nodes}
+   | A.Section None            ->
+      begin match st.path, st.nodes with
+        | _ :: ptl, nhd :: ntl -> 
+           err {st with path = ptl; node = nhd; nodes = ntl}
+         | _                    -> assert false
+      end
+   | A.Context None            ->
+      err {st with node = None}
+   | A.Context (Some name)     ->
+      let f name = err {st with node = Some name} in
+      complete_qid f st name 
+   | A.Block (name, w)         ->
+      let f qid = 
+         let f pars =
+           let f ww = 
+              H.add hcnt (uri_of_qid qid) ((name, ww) :: pars);
+              err {st with node = Some qid}
+           in
+            xlate_term f st pars w
+        in
+         get_pars_relaxed f st
+      in
+      complete_qid f st (name, true, [])
+   | A.Decl (name, w)          ->
+      let f pars = 
+         let f qid = 
+            let f ww =
+              H.add henv (uri_of_qid qid) pars;
+              let a = [Y.Mark st.line] in
+              let entry = pars, ww, None in
+              let entity = a, uri_of_qid qid, Y.Abst entry in
+              f {st with line = succ st.line} entity
+           in
+           xlate_term f st pars w
+        in
+         complete_qid f st (name, true, [])
+      in
+      get_pars_relaxed f st
+   | A.Def (name, w, trans, v) ->
+      let f pars = 
+         let f qid = 
+            let f ww vv = 
+              H.add henv (uri_of_qid qid) pars;
+              let a = Y.Mark st.line :: if trans then [] else [Y.Priv] in 
+              let entry = pars, ww, Some vv in
+              let entity = a, uri_of_qid qid, Y.Abbr entry in
+              f {st with line = succ st.line} entity
+           in
+           let f ww = xlate_term (f ww) st pars v in
+           xlate_term f st pars w
+        in
+         complete_qid f st (name, true, [])
+      in
+      get_pars_relaxed f st
+
+(* Interface functions ******************************************************)
+
+let initial_status ?(cover="") () =
+   initial_status cover
+
+let meta_of_aut = xlate_entity
diff --git a/helm/software/lambda-delta/toplevel/metaAut.mli b/helm/software/lambda-delta/toplevel/metaAut.mli
new file mode 100644 (file)
index 0000000..977d5ed
--- /dev/null
@@ -0,0 +1,18 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+type status
+
+val initial_status: ?cover:string -> unit -> status 
+
+val meta_of_aut: 
+   (status -> 'a) -> (status -> Meta.entity -> 'a) -> 
+   status -> Aut.entity -> 'a
diff --git a/helm/software/lambda-delta/toplevel/metaBag.ml b/helm/software/lambda-delta/toplevel/metaBag.ml
new file mode 100644 (file)
index 0000000..991d7e8
--- /dev/null
@@ -0,0 +1,67 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module C = Cps
+module B = Bag
+module M = Meta
+
+(* Internal functions *******************************************************)
+
+let rec xlate_term c f = function
+   | M.Sort s            -> 
+      let f h = f (B.Sort h) in
+      if s then f 0 else f 1
+   | M.LRef (_, i)       ->
+      let l, _, _ = List.nth c i in
+      f (B.LRef l)
+   | M.GRef (_, uri, vs) ->
+      let map f t v = f (B.appl v t) in
+      let f vs = C.list_fold_left f map (B.GRef uri) vs in
+      C.list_map f (xlate_term c) vs
+   | M.Appl (v, t)       ->
+      let f v t = f (B.Appl (v, t)) in
+      let f v = xlate_term c (f v) t in
+      xlate_term c f v
+   | M.Abst (id, w, t)   ->
+      let f w = 
+         let l = B.new_location () in
+         let f t = f (B.Bind (l, id, B.Abst w, t)) in
+         let f c = xlate_term c f t in
+         B.push "meta" f c l id (B.Abst w)
+      in
+      xlate_term c f w
+
+let xlate_pars f pars =
+   let map f (id, w) c =
+      let l = B.new_location () in
+      let f w = B.push "meta" f c l id (B.Abst w) in
+      xlate_term c f w
+   in
+   C.list_fold_right f map pars B.empty_lenv
+
+let unwind_to_xlate_term f c t =
+   let map f t (l, id, b) = f (B.bind l id b t) in
+   let f t = C.list_fold_left f map t c in
+   xlate_term c f t
+
+let xlate_entry f = function 
+   | pars, u, None   ->
+      let f c = unwind_to_xlate_term f c u in      
+      xlate_pars f pars   
+   | pars, u, Some t ->
+      let f u t = f (B.Cast (u, t)) in
+      let f c u = unwind_to_xlate_term (f u) c t in
+      let f c = unwind_to_xlate_term (f c) c u in
+      xlate_pars f pars
+   
+(* Interface functions ******************************************************)
+
+let bag_of_meta = xlate_entry
diff --git a/helm/software/lambda-delta/toplevel/metaBag.mli b/helm/software/lambda-delta/toplevel/metaBag.mli
new file mode 100644 (file)
index 0000000..62ce68f
--- /dev/null
@@ -0,0 +1,12 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+val bag_of_meta: (Bag.term -> 'a) -> Meta.entry -> 'a
diff --git a/helm/software/lambda-delta/toplevel/metaBrg.ml b/helm/software/lambda-delta/toplevel/metaBrg.ml
new file mode 100644 (file)
index 0000000..cde4daa
--- /dev/null
@@ -0,0 +1,66 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module C = Cps
+module Y = Entity
+module B = Brg
+module M = Meta
+
+(* Internal functions *******************************************************)
+
+let rec xlate_term c f = function
+   | M.Sort s            -> 
+      let f h = f (B.Sort ([], h)) in
+      if s then f 0 else f 1
+   | M.LRef (_, i)       ->
+      f (B.LRef ([], i))
+   | M.GRef (_, uri, vs) ->
+      let map f t v = f (B.appl [] v t) in
+      let f vs = C.list_fold_left f map (B.GRef ([], uri)) vs in
+      C.list_map f (xlate_term c) vs
+   | M.Appl (v, t)       ->
+      let f v t = f (B.Appl ([], v, t)) in
+      let f v = xlate_term c (f v) t in
+      xlate_term c f v
+   | M.Abst (id, w, t)   ->
+      let f w = 
+         let a = [Y.Name (id, true)] in
+        let f t = f (B.Bind (a, B.Abst w, t)) in
+         xlate_term (B.push c B.empty a (B.Abst w)) f t
+      in
+      xlate_term c f w
+
+let xlate_pars f pars =
+   let map f (id, w) c =
+      let a = [Y.Name (id, true)] in
+      let f w = f (B.push c B.empty a (B.Abst w)) in
+      xlate_term c f w
+   in
+   C.list_fold_right f map pars B.empty
+
+let unwind_to_xlate_term f c t =
+   let map t a b = B.bind a b t in
+   let f t = f (B.fold_left map t c) in
+   xlate_term c f t
+
+let xlate_entry f = function
+   | pars, u, None   ->
+      let f c = unwind_to_xlate_term f c u in      
+      xlate_pars f pars   
+   | pars, u, Some t ->
+      let f u t = f (B.Cast ([], u, t)) in
+      let f c u = unwind_to_xlate_term (f u) c t in
+      let f c = unwind_to_xlate_term (f c) c u in
+      xlate_pars f pars
+
+(* Interface functions ******************************************************)
+
+let brg_of_meta = xlate_entry
diff --git a/helm/software/lambda-delta/toplevel/metaBrg.mli b/helm/software/lambda-delta/toplevel/metaBrg.mli
new file mode 100644 (file)
index 0000000..4ce275f
--- /dev/null
@@ -0,0 +1,12 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+val brg_of_meta: (Brg.term -> 'a) -> Meta.entry -> 'a
diff --git a/helm/software/lambda-delta/toplevel/metaLibrary.ml b/helm/software/lambda-delta/toplevel/metaLibrary.ml
new file mode 100644 (file)
index 0000000..3ae116d
--- /dev/null
@@ -0,0 +1,36 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module F = Format
+module O = MetaOutput
+
+type out_channel = Pervasives.out_channel * F.formatter
+
+(* internal functions *******************************************************)
+
+let hal_dir = "hal"
+
+let hal_ext = ".hal"
+
+(* interface functions ******************************************************)
+
+let open_out f name =      
+   let _ = Sys.command (Printf.sprintf "mkdir -p %s" hal_dir) in
+   let och = open_out (Filename.concat hal_dir (name ^ hal_ext)) in
+   let frm = F.formatter_of_out_channel och in
+   F.pp_set_margin frm max_int;
+   f (och, frm)
+
+let write_entity f (_, frm) entity =
+   O.pp_entity f frm entity
+   
+let close_out f (och, _) =
+   close_out och; f ()
diff --git a/helm/software/lambda-delta/toplevel/metaLibrary.mli b/helm/software/lambda-delta/toplevel/metaLibrary.mli
new file mode 100644 (file)
index 0000000..2f6e41b
--- /dev/null
@@ -0,0 +1,18 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+type out_channel
+
+val open_out: (out_channel -> 'a) -> string -> 'a
+
+val write_entity: (unit -> 'a) -> out_channel -> Meta.entity -> 'a
+
+val close_out: (unit -> 'a) -> out_channel -> 'a
diff --git a/helm/software/lambda-delta/toplevel/metaOutput.ml b/helm/software/lambda-delta/toplevel/metaOutput.ml
new file mode 100644 (file)
index 0000000..21d735d
--- /dev/null
@@ -0,0 +1,162 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module P = Printf
+module F = Format
+module U = NUri
+module C = Cps
+module L = Log
+module Y = Entity
+module M = Meta
+
+type counters = {
+   eabsts: int;
+   eabbrs: int;
+   pabsts: int;    
+   tsorts: int;
+   tlrefs: int;
+   tgrefs: int;
+   pappls: int;
+   tappls: int;
+   tabsts: int;
+   uris  : U.uri list;
+   nodes : int;
+   xnodes: int
+}
+
+let initial_counters = {
+   eabsts = 0; eabbrs = 0; pabsts = 0; pappls = 0;
+   tsorts = 0; tlrefs = 0; tgrefs = 0; tappls = 0; tabsts = 0;
+   uris = []; nodes = 0; xnodes = 0
+}
+
+let rec count_term f c = function
+   | M.Sort _          -> 
+      f {c with tsorts = succ c.tsorts; nodes = succ c.nodes}
+   | M.LRef _          -> 
+      f {c with tlrefs = succ c.tlrefs; nodes = succ c.nodes}
+   | M.GRef (_, u, ts) -> 
+      let c = {c with tgrefs = succ c.tgrefs} in
+      let c = {c with pappls = c.pappls + List.length ts} in
+      let c = {c with nodes = c.nodes + List.length ts} in
+      let c =    
+        if Cps.list_mem ~eq:U.eq u c.uris
+        then {c with nodes = succ c.nodes}
+        else {c with xnodes = succ c.xnodes}
+      in
+      Cps.list_fold_left f count_term c ts
+   | M.Appl (v, t)     -> 
+      let c = {c with tappls = succ c.tappls; nodes = succ c.nodes} in
+      let f c = count_term f c t in
+      count_term f c v
+   | M.Abst (_, w, t)  -> 
+      let c = {c with tabsts = succ c.tabsts; nodes = succ c.nodes} in
+      let f c = count_term f c t in
+      count_term f c w
+
+let count_par f c (_, w) = count_term f c w
+
+let count_xterm f c = function
+   | None   -> f c
+   | Some v -> count_term f c v
+
+let count_entity f c = function
+   | _, u, Y.Abst (pars, w, xv) ->
+      let c = {c with eabsts = succ c.eabsts} in
+      let c = {c with pabsts = c.pabsts + List.length pars} in
+      let c = {c with uris = u :: c.uris; nodes = succ c.nodes + List.length pars} in
+      let f c = count_xterm f c xv in      
+      let f c = count_term f c w in
+      Cps.list_fold_left f count_par c pars   
+   | _, _, Y.Abbr (pars, w, xv) ->
+      let c = {c with eabbrs = succ c.eabbrs; xnodes = succ c.xnodes} in
+      let c = {c with pabsts = c.pabsts + List.length pars} in
+      let c = {c with nodes = c.nodes + List.length pars} in
+      let f c = count_xterm f c xv in
+      let f c = count_term f c w in
+      Cps.list_fold_left f count_par c pars
+   | _, _, Y.Void               -> assert false
+
+let print_counters f c =
+   let terms = c.tsorts + c.tlrefs + c.tgrefs + c.tappls + c.tabsts in
+   let pars = c.pabsts + c.pappls in
+   let entries = c.eabsts + c.eabbrs in
+   let nodes = c.nodes + c.xnodes in
+   L.warn (P.sprintf "  Intermediate representation summary");
+   L.warn (P.sprintf "    Total entries:            %7u" entries);
+   L.warn (P.sprintf "      Declaration items:      %7u" c.eabsts);
+   L.warn (P.sprintf "      Definition items:       %7u" c.eabbrs);
+   L.warn (P.sprintf "    Total parameter items:    %7u" pars);
+   L.warn (P.sprintf "      Application items:      %7u" c.pappls);
+   L.warn (P.sprintf "      Abstraction items:      %7u" c.pabsts);
+   L.warn (P.sprintf "    Total term items:         %7u" terms);
+   L.warn (P.sprintf "      Sort items:             %7u" c.tsorts);
+   L.warn (P.sprintf "      Local reference items:  %7u" c.tlrefs);
+   L.warn (P.sprintf "      Global reference items: %7u" c.tgrefs);
+   L.warn (P.sprintf "      Application items:      %7u" c.tappls);
+   L.warn (P.sprintf "      Abstraction items:      %7u" c.tabsts);
+   L.warn (P.sprintf "    Global Int. Complexity:   %7u" c.nodes);
+   L.warn (P.sprintf "      + Abbreviation nodes:   %7u" nodes);
+   f ()
+
+let string_of_sort = function
+   | true -> "Type"
+   | false -> "Prop"
+
+let pp_transparent frm a =
+   let err () = F.fprintf frm "%s" "=" in
+   let f () = F.fprintf frm "%s" "~" in
+   Y.priv err f a
+
+let pp_list pp opend sep closed frm l =
+   let rec aux frm = function
+      | []       -> ()
+      | [hd]     -> pp frm hd
+      | hd :: tl -> F.fprintf frm "%a%s%a" pp hd sep aux tl 
+   in
+   if l = [] then () else F.fprintf frm "%s%a%s" opend aux l closed
+
+let pp_rev_list pp opend sep closed frm l =
+   pp_list pp opend sep closed frm (List.rev l)
+
+let rec pp_args frm args = pp_list pp_term "(" "," ")" frm args
+
+and pp_term frm = function
+   | M.Sort s            -> 
+      F.fprintf frm "@[*%s@]" (string_of_sort s)
+   | M.LRef (l, i)       ->
+      F.fprintf frm "@[%u@@#%u@]" l i
+   | M.GRef (l, uri, ts) ->
+      F.fprintf frm "@[%u@@$%s%a@]" l (U.string_of_uri uri) pp_args ts
+   | M.Appl (v, t)       ->
+      F.fprintf frm "@[(%a).%a@]" pp_term v pp_term t
+   | M.Abst (id, w, t)   ->
+      F.fprintf frm "@[[%s:%a].%a@]" id pp_term w pp_term t
+
+let pp_par frm (id, w) =
+   F.fprintf frm "%s:%a" id pp_term w
+
+let pp_pars = pp_rev_list pp_par "[" "," "]"
+
+let pp_body a frm = function
+   | None   -> ()
+   | Some t -> F.fprintf frm "%a%a" pp_transparent a pp_term t
+
+let pp_entity frm = function
+   | a, uri, Y.Abst (pars, u, body)
+   | a, uri, Y.Abbr (pars, u, body) ->
+      F.fprintf frm "@[%u@@%s%a%a:%a@]@\n%!" 
+         (Y.mark C.err C.start a) (U.string_of_uri uri) 
+        pp_pars pars (pp_body a) body pp_term u
+   | _, _, Y.Void                   -> assert false
+
+let pp_entity f frm entity =
+   pp_entity frm entity; f ()
diff --git a/helm/software/lambda-delta/toplevel/metaOutput.mli b/helm/software/lambda-delta/toplevel/metaOutput.mli
new file mode 100644 (file)
index 0000000..1a7b119
--- /dev/null
@@ -0,0 +1,20 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+type counters
+
+val initial_counters: counters
+
+val count_entity: (counters -> 'a) -> counters -> Meta.entity -> 'a
+
+val print_counters: (unit -> 'a) -> counters -> 'a
+
+val pp_entity: (unit -> 'a) -> Format.formatter -> Meta.entity -> 'a
diff --git a/helm/software/lambda-delta/toplevel/top.ml b/helm/software/lambda-delta/toplevel/top.ml
new file mode 100644 (file)
index 0000000..dff0bbe
--- /dev/null
@@ -0,0 +1,278 @@
+(*
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ *)
+
+module P    = Printf
+module U    = NUri
+module C    = Cps
+module L    = Log
+module T    = Time
+module H    = Hierarchy
+module O    = Output
+module Y    = Entity
+module X    = Library
+module AP   = AutProcess
+module AO   = AutOutput
+module DA   = CrgAut
+module MA   = MetaAut
+module MO   = MetaOutput
+module ML   = MetaLibrary
+module DO   = CrgOutput
+module DBrg = CrgBrg
+module MBrg = MetaBrg
+module BrgO = BrgOutput
+module BrgR = BrgReduction
+module BrgU = BrgUntrusted
+module MBag = MetaBag
+module BagO = BagOutput
+module BagT = BagType
+module BagU = BagUntrusted
+
+type status = {
+   ast : AP.status;
+   dst : DA.status;
+   mst : MA.status;
+   ac  : AO.counters;
+   mc  : MO.counters;
+   brgc: BrgO.counters;
+   bagc: BagO.counters
+}
+
+let initial_status mk_uri cover = {
+   ac   = AO.initial_counters;
+   mc   = MO.initial_counters;
+   brgc = BrgO.initial_counters;
+   bagc = BagO.initial_counters;
+   mst  = MA.initial_status ~cover ();
+   dst  = DA.initial_status (mk_uri cover);
+   ast  = AP.initial_status
+}
+
+let flush_all () = L.flush 0; L.flush_err ()
+
+let bag_error s msg =
+   L.error BagO.specs (L.Warn s :: L.Loc :: msg); flush_all () 
+
+let brg_error s msg =
+   L.error BrgR.specs (L.Warn s :: L.Loc :: msg); flush_all () 
+
+let process_entity f st entity =
+   let f ast = f {st with ast = ast} in
+   AP.process_entity f st.ast entity
+
+(* kernel related ***********************************************************)
+
+type kernel = Brg | Bag
+
+type kernel_entity = BrgEntity  of Brg.entity
+                   | BagEntity  of Bag.entity
+                  | CrgEntity  of Crg.entity
+                  | MetaEntity of Meta.entity
+
+let kernel = ref Brg
+
+let print_counters st = match !kernel with
+   | Brg -> BrgO.print_counters C.start st.brgc
+   | Bag -> BagO.print_counters C.start st.bagc
+
+let xlate_entity entity = match !kernel, entity with
+   | Brg, CrgEntity e  -> 
+      let f e = (BrgEntity e) in Y.xlate f DBrg.brg_of_crg e
+   | Brg, MetaEntity e -> 
+      let f e = (BrgEntity e) in Y.xlate f MBrg.brg_of_meta e
+   | Bag, MetaEntity e -> 
+      let f e = (BagEntity e) in Y.xlate f MBag.bag_of_meta e  
+   | _, entity         -> entity
+
+let pp_progress e =
+   let f a u =
+      let s = U.string_of_uri u in
+      let err () = L.warn (P.sprintf "%s" s) in
+      let f i = L.warn (P.sprintf "[%u] %s" i s) in
+      Y.mark err f a
+   in
+   match e with
+      | CrgEntity e -> Y.common f e
+      | BrgEntity e -> Y.common f e
+      | BagEntity e -> Y.common f e      
+      | MetaEntity e -> Y.common f e
+
+let count_entity st = function
+   | MetaEntity e -> {st with mc = MO.count_entity C.start st.mc e} 
+   | BrgEntity e  -> {st with brgc = BrgO.count_entity C.start st.brgc e}
+   | BagEntity e  -> {st with bagc = BagO.count_entity C.start st.bagc e}
+   | _            -> st
+
+let export_entity si g moch = function
+   | CrgEntity e  -> X.export_entity DO.export_term si g e
+   | BrgEntity e  -> X.export_entity BrgO.export_term si g e
+   | MetaEntity e ->
+      begin match moch with
+         | None     -> ()
+         | Some och -> ML.write_entity C.start och e
+      end
+   | BagEntity _  -> ()
+
+let type_check st si g k =
+   let brg_err msg = brg_error "Type Error" msg; failwith "Interrupted" in
+   let ok _ _ = st in
+   match k with
+      | BrgEntity entity -> BrgU.type_check brg_err ok ~si g entity
+      | BagEntity entity -> BagU.type_check ok ~si g entity
+      | CrgEntity _
+      | MetaEntity _     -> st
+
+(****************************************************************************)
+
+let stage = ref 3
+let moch = ref None
+let meta = ref false
+let progress = ref false
+let preprocess = ref false
+let use_cover = ref true
+let si = ref false
+let cc = ref false
+let export = ref false
+let graph = ref (H.graph_of_string C.err C.start "Z2")
+let old = ref false
+
+let process_2 st entity =
+   let st = if !L.level > 2 then count_entity st entity else st in
+   if !export then export_entity !si !graph !moch entity;
+   if !stage > 2 then type_check st !si !graph entity else st
+           
+let process_1 st entity = 
+   if !progress then pp_progress entity;
+   let st = if !L.level > 2 then count_entity st entity else st in
+   if !export && !stage = 1 then export_entity !si !graph !moch entity;
+   if !stage > 1 then process_2 st (xlate_entity entity) else st 
+
+let process_0 st entity = 
+   let f st entity =
+      if !stage = 0 then st else
+      let frr mst = {st with mst = mst} in
+      let h mst e = process_1 {st with mst = mst} (MetaEntity e) in
+      let err dst = {st with dst = dst} in
+      let g dst e = process_1 {st with dst = dst} (CrgEntity e) in
+      if !old then MA.meta_of_aut frr h st.mst entity else 
+      DA.crg_of_aut err g st.dst entity
+   in
+   let st = 
+      if !L.level > 2 then {st with ac = AO.count_entity C.start st.ac entity}
+      else st
+   in 
+   if !preprocess then process_entity f st entity else f st entity
+
+let rec process st = function
+   | []           -> st
+   | entity :: tl -> process (process_0 st entity) tl
+
+(****************************************************************************)
+
+let main =
+try 
+   let version_string = "Helena 0.8.1 M - October 2009" in
+   let set_hierarchy s = 
+      let err () = L.warn (P.sprintf "Unknown type hierarchy: %s" s) in
+      let f g = graph := g in
+      H.graph_of_string err f s
+   in
+   let set_kernel = function
+      | "brg" -> kernel := Brg
+      | "bag" -> kernel := Bag
+      | s     -> L.warn (P.sprintf "Unknown kernel version: %s" s)
+   in
+   let set_summary i = L.level := i in
+   let print_version () = L.warn (version_string ^ "\n"); exit 0 in
+   let set_stage i = stage := i in
+   let set_meta_file name =
+      let f och = moch := Some och in
+      ML.open_out f name
+   in
+   let close = function
+      | None     -> ()
+      | Some och -> ML.close_out C.start och
+   in
+   let read_file name =
+      if !L.level > 0 then T.gmtime version_string;      
+      if !L.level > 1 then
+         L.warn (P.sprintf "Processing file: %s" name);
+      if !L.level > 0 then T.utime_stamp "started";
+      let base_name = Filename.chop_extension (Filename.basename name) in
+      if !meta then set_meta_file base_name;
+      let ich = open_in name in
+      let lexbuf = Lexing.from_channel ich in
+      let book = AutParser.book AutLexer.token lexbuf in
+      close_in ich;
+      if !L.level > 0 then T.utime_stamp "parsed";
+      O.clear_reductions ();
+      let mk_uri =
+         if !stage < 2 then Crg.mk_uri else
+        match !kernel with
+           | Brg -> Brg.mk_uri
+           | Bag -> Bag.mk_uri
+      in
+      let cover = if !use_cover then base_name else "" in
+      let st = process (initial_status mk_uri cover) book in
+      if !L.level > 0 then T.utime_stamp "processed";
+      if !L.level > 2 then begin
+         AO.print_counters C.start st.ac;
+         if !preprocess then AO.print_process_counters C.start st.ast;
+         if !stage > 0 then MO.print_counters C.start st.mc;
+         if !stage > 1 then print_counters st;
+         if !stage > 2 then O.print_reductions ()
+      end
+   in
+   let exit () =
+      close !moch;
+      if !L.level > 0 then T.utime_stamp "at exit";
+      flush_all ()
+   in
+   let help = 
+      "Usage: helena [ -Vcijmopux | -Ss <number> | -hk <string> ] <file> ...\n\n" ^
+      "Summary levels: 0 just errors (default), 1 time stamps, 2 processed file names, \
+       3 data information, 4 typing information, 5 reduction information\n\n" ^
+       "Stages: 0 parsing, 1 to intermediate, 2 to untrusted, 3 to trusted (default)\n"
+   in
+   let help_S = "<number>  set summary level (see above)" in
+   let help_V = " show version information" in   
+
+   let help_c = " output conversion constraints" in
+   let help_h = "<string>  set type hierarchy (default: Z2)" in
+   let help_i = " show local references by index" in
+   let help_j = " show URI of processed kernel objects" in
+   let help_k = "<string>  set kernel version (default: brg)" in
+   let help_m = " output intermediate representation (HAL)" in
+   let help_o = " use old abstract language instead of crg" in   
+   let help_p = " preprocess Automath source" in
+   let help_r = " disable initial segment of URI hierarchy" in
+   let help_s = "<number>  set translation stage (see above)" in
+   let help_u = " activate sort inclusion" in
+   let help_x = " export kernel entities (XML)" in
+   L.box 0; L.box_err ();
+   let _ = H.set_sorts ["Set"; "Prop"] 0 in
+   at_exit exit;
+   Arg.parse [
+      ("-S", Arg.Int set_summary, help_S);
+      ("-V", Arg.Unit print_version, help_V);
+      ("-c", Arg.Set cc, help_c);
+      ("-h", Arg.String set_hierarchy, help_h);
+      ("-i", Arg.Set O.indexes, help_i);
+      ("-j", Arg.Set progress, help_j);      
+      ("-k", Arg.String set_kernel, help_k);
+      ("-m", Arg.Set meta, help_m); 
+      ("-o", Arg.Set old, help_o);      
+      ("-p", Arg.Set preprocess, help_p);      
+      ("-r", Arg.Clear use_cover, help_r);
+      ("-s", Arg.Int set_stage, help_s);
+      ("-u", Arg.Set si, help_u);
+      ("-x", Arg.Set export, help_x)
+   ] read_file help;
+with BagT.TypeError msg -> bag_error "Type Error" msg
diff --git a/helm/software/lambda-delta/xml/ld-html-entity.xsl b/helm/software/lambda-delta/xml/ld-html-entity.xsl
new file mode 100644 (file)
index 0000000..ac30dac
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ -->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:strip-space elements="ABST ABBR"/>
+
+<xsl:template match="ABST">
+   <h2>
+      <xsl:text>Declaration:</xsl:text>
+      <xsl:call-template name="entity"/>
+   </h2>
+   <div><xsl:apply-templates/></div>
+</xsl:template>
+
+<xsl:template match="ABBR">
+   <h2>
+      <xsl:text>Definition:</xsl:text>
+      <xsl:call-template name="entity"/>
+   </h2>
+   <div><xsl:apply-templates/></div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/helm/software/lambda-delta/xml/ld-html-library.xsl b/helm/software/lambda-delta/xml/ld-html-library.xsl
new file mode 100644 (file)
index 0000000..cf6857d
--- /dev/null
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ -->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:variable name="sort">color: rgb(128, 0, 255);</xsl:variable>
+<xsl:variable name="cast">color: rgb(255, 0, 0);</xsl:variable>
+<xsl:variable name="binder">color: rgb(0, 160, 0);</xsl:variable>
+<xsl:variable name="global">color: rgb(0, 0, 255);</xsl:variable>
+
+<xsl:template name="sp">
+   <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template name="sl">
+   <xsl:text>/</xsl:text>
+</xsl:template>
+
+<xsl:template name="fs">
+   <xsl:text>.&#x200B;</xsl:text>
+</xsl:template>
+
+<xsl:template name="op">
+   <xsl:text>(</xsl:text>
+</xsl:template>
+
+<xsl:template name="cp">
+   <xsl:text>)</xsl:text>
+</xsl:template>
+
+<xsl:template name="oa">
+   <span style="{$cast}">
+      <xsl:text>&lt;</xsl:text>
+   </span>
+</xsl:template>
+
+<xsl:template name="ca">
+   <span style="{$cast}">
+      <xsl:text>&gt;</xsl:text>
+   </span>
+</xsl:template>
+
+<xsl:template name="cn">
+   <span style="{$binder}">
+      <xsl:text>:</xsl:text>
+   </span>
+</xsl:template>
+
+<xsl:template name="eq">
+   <span style="{$binder}">
+      <xsl:text>=</xsl:text>
+   </span>
+</xsl:template>
+
+<xsl:template name="lambda">
+   <span style="{$binder}">
+      <xsl:text disable-output-escaping="yes">&amp;lambda;</xsl:text>
+   </span>
+</xsl:template>
+
+<xsl:template name="delta">
+   <span style="{$binder}">
+      <xsl:text disable-output-escaping="yes">&amp;delta;</xsl:text>
+   </span>
+</xsl:template>
+
+<xsl:template name="chi">
+   <span style="{$binder}">
+      <xsl:text disable-output-escaping="yes">&amp;chi;</xsl:text>
+   </span>
+</xsl:template>
+
+<xsl:template name="position">
+   <a name="" title="{@position}">
+      <xsl:value-of select="@name"/>
+   </a>
+</xsl:template>
+
+<xsl:template name="uri">
+   <xsl:variable name="url">
+      <xsl:value-of select="$baseurl"/>
+      <xsl:value-of select="substring-after(@uri,'ld:')"/>
+      <xsl:text>.html</xsl:text>
+   </xsl:variable>
+   <a href="{$url}" title="{@uri}"><xsl:value-of select="@name"/></a>
+</xsl:template>
+
+<xsl:template name="binder">
+   <xsl:value-of select="@name"/>
+</xsl:template>
+
+<xsl:template name="global">
+   <span style="{$global}">
+      <a name="" title="{@mark}">
+         <xsl:value-of select="@name"/>
+      </a>
+   </span>
+</xsl:template>
+
+<xsl:template name="mk_segment">
+   <xsl:param name="path"/>
+   <xsl:param name="name"/>
+   <xsl:variable name="url">
+      <xsl:value-of select="$baseurl"/>
+      <xsl:value-of select="substring-after($path,'ld:')"/>
+   </xsl:variable>
+   <a href="{$url}"><xsl:value-of select="$name"/></a>
+   <xsl:call-template name="sl"/>
+</xsl:template>
+
+<xsl:template name="mk_path">
+   <xsl:param name="rpath" select="@uri"/>
+   <xsl:variable name="newrpath" select="substring-after($rpath,'/')"/>
+   <xsl:choose>
+      <xsl:when test="$newrpath">
+         <xsl:variable name="segment" select="substring-before($rpath,$newrpath)"/>   
+         <xsl:call-template name="mk_segment">
+            <xsl:with-param name="path" select="substring-before(@uri,$newrpath)"/>
+            <xsl:with-param name="name" select="substring-before($segment,'/')"/>
+         </xsl:call-template>
+        <xsl:call-template name="mk_path">
+           <xsl:with-param name="rpath" select="$newrpath"/>
+        </xsl:call-template>
+      </xsl:when>
+      <xsl:otherwise>
+         <xsl:variable name="path" select="substring-before(@uri,$rpath)"/>
+        <xsl:value-of select="substring-after(@uri,$path)"/>
+      </xsl:otherwise>
+   </xsl:choose>
+</xsl:template>
+
+<xsl:template name="entity">
+   <xsl:call-template name="sp"/>
+   <xsl:call-template name="global"/>
+   <xsl:call-template name="sp"/>
+   <xsl:call-template name="op"/>
+   <xsl:call-template name="mk_path"/>
+   <xsl:call-template name="cp"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/helm/software/lambda-delta/xml/ld-html-root.xsl b/helm/software/lambda-delta/xml/ld-html-root.xsl
new file mode 100644 (file)
index 0000000..2b8edb4
--- /dev/null
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ -->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:strip-space elements="ENTITY"/>
+
+<xsl:template match="/">
+   <html><head>
+      <meta content="Ferruccio Guidi" name="author"/>
+      <meta content="lambda-delta digital library" name="description"/>
+      <title>lambda-delta digital library (LDDL)</title>
+      <link rel="shortcut icon" 
+            href="http://helm.cs.unibo.it/lambda-delta/download/crux-16.ico"
+      />
+   </head><body>
+      <h1 style="text-align: center;">
+         <a href="http://helm.cs.unibo.it/lambda-delta/">
+         <img style="border: 0px solid; width: 32px; height: 32px;" 
+             alt="[lambda-delta home]"
+              title="lambda-delta home"
+             src="http://helm.cs.unibo.it/lambda-delta/download/crux-32.png"
+        /></a>
+      </h1>
+      <xsl:apply-templates/><h2/>
+      <div style="text-align: center;">
+         <a href="http://validator.w3.org/check?uri=referer">
+         <img alt="[Valid HTML 4.01 Transitional]"
+             title="Valid HTML 4.01 Transitional"
+              src="http://www.w3.org/Icons/valid-html401"
+              style="border: 0px solid ; width: 88px; height: 31px;"
+         /></a>
+        <a href="http://www.anybrowser.org/campaign/">
+        <img alt="[Use any browser here]"
+             title="Use any browser here"
+              src="http://www.cs.unibo.it/%7Efguidi/download/globe-trans.png"
+              style="border: 0px solid ; width: 147px; height: 42px;"
+        /></a>
+        <img style="width: 88px; height: 31px;"
+             alt="[png used here]"
+             title="png used here"
+             src="http://www.cs.unibo.it/%7Efguidi/download/PNGnow2.png"
+        />
+      </div>
+   </body></html>
+</xsl:template>
+
+<xsl:template match="ENTITY">
+   <xsl:apply-templates/><h2/>
+   <div>
+      Validation parameters:
+      sort hierarchy = "<xsl:value-of select="@hierarchy"/>",
+      kernel options = "<xsl:value-of select="@options"/>"
+   </div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/helm/software/lambda-delta/xml/ld-html-term.xsl b/helm/software/lambda-delta/xml/ld-html-term.xsl
new file mode 100644 (file)
index 0000000..083e729
--- /dev/null
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ -->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:strip-space elements="Sort LRef GRef Cast Appl Abst Abbr Void"/>
+
+<xsl:template match="Sort">
+   <span style="{$sort}">
+      <xsl:call-template name="position"/>
+   </span>
+</xsl:template>
+
+<xsl:template match="LRef">
+   <xsl:call-template name="position"/>
+</xsl:template>
+
+<xsl:template match="GRef">
+   <xsl:call-template name="uri"/>
+</xsl:template>
+
+<xsl:template match="Cast">
+   <xsl:call-template name="oa"/>
+   <xsl:apply-templates/>
+   <xsl:call-template name="ca"/>   
+   <xsl:call-template name="fs"/>   
+</xsl:template>
+
+<xsl:template match="Appl">
+   <xsl:call-template name="op"/>   
+   <xsl:apply-templates/>
+   <xsl:call-template name="cp"/>
+   <xsl:call-template name="fs"/>   
+</xsl:template>
+
+<xsl:template match="Abst">
+   <xsl:call-template name="lambda"/>
+   <xsl:value-of select="@name"/>
+   <xsl:call-template name="cn"/>   
+   <xsl:apply-templates/>
+   <xsl:call-template name="fs"/>   
+</xsl:template>
+
+<xsl:template match="Abbr">
+   <xsl:call-template name="delta"/>
+   <xsl:call-template name="binder"/>
+   <xsl:call-template name="eq"/>   
+   <xsl:apply-templates/>
+   <xsl:call-template name="fs"/>   
+</xsl:template>
+
+<xsl:template match="Void">
+   <xsl:call-template name="chi"/>
+   <xsl:call-template name="binder"/>
+   <xsl:apply-templates/>
+   <xsl:call-template name="fs"/>
+
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/helm/software/lambda-delta/xml/ld-html.xsl b/helm/software/lambda-delta/xml/ld-html.xsl
new file mode 100644 (file)
index 0000000..b5ed853
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ -->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:param name="baseurl"/>
+
+<xsl:include href="ld-html-library.xsl"/>
+<xsl:include href="ld-html-term.xsl"/>
+<xsl:include href="ld-html-entity.xsl"/>
+<xsl:include href="ld-html-root.xsl"/>
+
+<xsl:output 
+   method="html"
+   doctype-system="http://www.w3.org/TR/html4/loose.dtd"
+   doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
+   encoding="UTF-8"
+   indent="no"
+/>
+
+</xsl:stylesheet>
diff --git a/helm/software/lambda-delta/xml/ld.dtd b/helm/software/lambda-delta/xml/ld.dtd
new file mode 100644 (file)
index 0000000..49da575
--- /dev/null
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DTD for persistent lambda-delta logical data -->
+
+<!-- TERMS -->
+
+<!ENTITY % leaf '(Sort|LRef|GRef)'>
+
+<!ENTITY % node '(Cast|Appl|Abst|Abbr|Void)'>
+
+<!ENTITY % term '(%node;*,%leaf;)'>
+
+<!ELEMENT Sort EMPTY>
+<!ATTLIST Sort
+          position NMTOKEN #REQUIRED
+          name     CDATA   #IMPLIED
+          mark     NMTOKEN #IMPLIED
+>
+
+<!ELEMENT LRef EMPTY>
+<!ATTLIST LRef
+          position NMTOKEN #REQUIRED
+          name     CDATA   #IMPLIED
+          mark     NMTOKEN #IMPLIED
+>
+
+<!ELEMENT GRef EMPTY>
+<!ATTLIST GRef
+          uri  CDATA   #REQUIRED
+          name CDATA   #IMPLIED
+          mark NMTOKEN #IMPLIED
+>
+
+<!ELEMENT Cast %term;>
+<!ATTLIST Cast
+          name CDATA   #IMPLIED
+          mark NMTOKEN #IMPLIED
+>
+
+<!ELEMENT Appl %term;>
+<!ATTLIST Appl
+          name CDATA   #IMPLIED
+          mark NMTOKEN #IMPLIED
+>
+
+<!ELEMENT Abst %term;>
+<!ATTLIST Abst
+          name CDATA   #IMPLIED
+          mark NMTOKEN #IMPLIED
+>
+
+<!ELEMENT Abbr %term;>
+<!ATTLIST Abbr
+          name CDATA   #IMPLIED
+          mark NMTOKEN #IMPLIED
+>
+
+<!ELEMENT Void EMPTY>
+<!ATTLIST Void
+          name CDATA   #IMPLIED
+          mark NMTOKEN #IMPLIED
+>
+
+<!-- ENVIRONMENT ENTRIES -->
+
+<!ENTITY % entity '(ABST|ABBR)'> 
+
+<!ELEMENT ABST %term;>
+<!ATTLIST ABST
+          uri  CDATA   #REQUIRED
+          name CDATA   #IMPLIED
+          mark NMTOKEN #IMPLIED
+>
+
+<!ELEMENT ABBR %term;>
+<!ATTLIST ABBR
+          uri  CDATA   #REQUIRED
+          name CDATA   #IMPLIED
+          mark NMTOKEN #IMPLIED
+>
+
+<!-- ROOT -->
+
+<!ELEMENT ENTITY %entity;>
+<!ATTLIST ENTITY
+          hierarchy NMTOKEN  #REQUIRED
+          options   NMTOKENS #IMPLIED
+>
diff --git a/helm/software/matita/contribs/formal_topology/overlap/apply_functor.ma b/helm/software/matita/contribs/formal_topology/overlap/apply_functor.ma
new file mode 100644 (file)
index 0000000..7899881
--- /dev/null
@@ -0,0 +1,122 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "categories.ma".
+include "notation.ma".
+
+record Fo (C1,C2:CAT2) (F:arrows3 CAT2 C1 C2) : Type2 ≝ {
+  F2: C2;
+  F1: C1;
+  FP: map_objs2 ?? F F1 =_\ID F2
+}.
+
+notation "ℱ\sub 1 x" non associative with precedence 60 for @{'F1 $x}.
+notation > "ℱ_1" non associative with precedence 90 for @{F1 ???}.
+interpretation "F1" 'F1 x = (F1 ??? x). 
+
+notation "ℱ\sub 2 x" non associative with precedence 60 for @{'F2 $x}.
+notation > "ℱ_2" non associative with precedence 90 for @{F2 ???}.
+interpretation "F2" 'F2 x = (F2 ??? x). 
+
+lemma REW : ∀C1,C2: CAT2.∀F:arrows3 CAT2 C1 C2.∀X,Y:Fo ?? F.
+  arrows2 C2 (F (ℱ_1 X)) (F (ℱ_1 Y)) → 
+  arrows2 C2 (ℱ_2 X) (ℱ_2 Y).           
+intros 5; cases X; cases Y; clear X Y; 
+cases H; cases H1; intros; assumption;
+qed.           
+
+record Fm_c (C1,C2:CAT2) (F:arrows3 CAT2 C1 C2) (X,Y:Fo ?? F) : Type2 ≝ {
+  Fm2: arrows2 C2 (F2 ??? X) (F2 ??? Y);
+  Fm1: arrows2 C1 (F1 ??? X) (F1 ??? Y);
+  FmP: REW ?? F X Y (map_arrows2 ?? F ?? Fm1) = Fm2
+}.
+
+notation "ℳ\sub 1 x" non associative with precedence 60 for @{'Fm1 $x}.
+notation > "ℳ_1" non associative with precedence 90 for @{Fm1 ?????}.
+interpretation "Fm1" 'Fm1 x = (Fm1 ????? x). 
+
+notation "ℳ\sub 2 x" non associative with precedence 60 for @{'Fm2 $x}.
+notation > "ℳ_2" non associative with precedence 90 for @{Fm2 ?????}.
+interpretation "Fm2" 'Fm2 x = (Fm2 ????? x). 
+
+definition Fm : 
+ ∀C1,C2: CAT2.∀F:arrows3 CAT2 C1 C2.
+   Fo ?? F → Fo ?? F → setoid2. 
+intros (C1 C2 F X Y); constructor 1; [apply (Fm_c C1 C2 F X Y)]
+constructor 1; [apply (λf,g.Fm2 ????? f =_2 Fm2 ????? g);]
+[ intro; apply refl2;
+| intros 3; apply sym2; assumption;
+| intros 5; apply (trans2 ?? ??? x1 x2);]
+qed.
+
+definition F_id : 
+ ∀C1,C2: CAT2.∀F:arrows3 CAT2 C1 C2.∀o.Fm ?? F o o.
+intros; constructor 1; 
+   [ apply (id2 C2 (F2 ??? o));
+   | apply (id2 C1 (F1 ??? o));
+   | cases o; cases H; simplify; apply (respects_id2 ?? F);]
+qed.
+
+definition F_comp : 
+  ∀C1,C2: CAT2.∀F:arrows3 CAT2 C1 C2.∀o1,o2,o3.
+    binary_morphism2 (Fm ?? F o1 o2) (Fm ?? F o2 o3) (Fm ?? F o1 o3).
+intros; constructor 1;
+[ intros (f g); constructor 1;
+    [ apply (comp2 C2 ??? (ℳ_2 f) (ℳ_2 g));
+    | apply (comp2 C1 ??? (ℳ_1 f) (ℳ_1 g));
+    | apply hide; cases o1 in f; cases o2 in g; cases o3; clear o1 o2 o3;
+      cases H; cases H1; cases H2; intros 2; cases c; cases c1; clear c c1;
+      simplify; apply (.= (respects_comp2:?)); apply (e1‡e);]
+| intros 6; change with ((ℳ_2 b ∘ ℳ_2 a) = (ℳ_2 b' ∘ ℳ_2 a'));
+  change in e1 with (ℳ_2 b = ℳ_2 b');
+  change in e with (ℳ_2 a = ℳ_2 a');
+  apply (e‡e1);]
+qed.
+
+
+definition Apply : ∀C1,C2: CAT2.arrows3 CAT2 C1 C2 → CAT2.
+intros (C1 C2 F);
+constructor 1; 
+[ apply (Fo ?? F);
+| apply (Fm ?? F); 
+| apply F_id; 
+| apply F_comp;
+| intros; apply (comp_assoc2 C2 ???? (ℳ_2 a12) (ℳ_2 a23) (ℳ_2 a34));
+| intros; apply (id_neutral_right2 C2 ?? (ℳ_2 a));
+| intros; apply (id_neutral_left2 C2 ?? (ℳ_2 a));]
+qed.
+
+definition faithful ≝  
+   λC1,C2.λF:arrows3 CAT2 C1 C2.∀S,T.∀f,g:arrows2 C1 S T.
+     map_arrows2 ?? F ?? f = map_arrows2 ?? F ?? g → f=g.
+
+definition Ylppa : ∀C1,C2: CAT2.∀F:arrows3 CAT2 C1 C2.
+  faithful ?? F →  let rC2 ≝ Apply ?? F in arrows3 CAT2 rC2 C1.
+intros; constructor 1;
+[ intro; apply (ℱ_1 o);
+| intros; constructor 1; 
+  [ intros; apply (ℳ_1 c);
+  | apply hide; intros; apply f;  change in e with (ℳ_2 a = ℳ_2 a');
+    lapply (FmP ????? a) as H1; lapply (FmP ????? a') as H2;
+    cut (REW ????? (map_arrows2 ?? F ?? (ℳ_1 a)) = 
+         REW ????? (map_arrows2 ?? F ?? (ℳ_1 a')));[2:
+      apply (.= H1); apply (.= e); apply H2^-1;]
+    clear H1 H2 e; cases S in a a' Hcut; cases T;
+    cases H; cases H1; simplify; intros; assumption;]
+| intro; apply rule #;
+| intros; simplify; apply rule #;]
+qed.
+
+
+
diff --git a/helm/software/matita/contribs/formal_topology/overlap/basic_pairs.ma b/helm/software/matita/contribs/formal_topology/overlap/basic_pairs.ma
new file mode 100644 (file)
index 0000000..1ce789e
--- /dev/null
@@ -0,0 +1,241 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "relations.ma".
+include "notation.ma".
+
+record basic_pair: Type1 ≝
+ { concr: REL;
+   form: REL;
+   rel: arrows1 ? concr form
+ }.
+
+interpretation "basic pair relation" 'Vdash2 x y c = (fun21 ??? (rel c) x y).
+interpretation "basic pair relation (non applied)" 'Vdash c = (rel c).
+
+alias symbol "eq" = "setoid1 eq".
+alias symbol "compose" = "category1 composition".
+record relation_pair (BP1,BP2: basic_pair): Type1 ≝
+ { concr_rel: arrows1 ? (concr BP1) (concr BP2);
+   form_rel: arrows1 ? (form BP1) (form BP2);
+   commute: ⊩ ∘ concr_rel = form_rel ∘ ⊩
+ }.
+
+
+interpretation "concrete relation" 'concr_rel r = (concr_rel ?? r). 
+interpretation "formal relation" 'form_rel r = (form_rel ?? r).
+
+definition relation_pair_equality:
+ ∀o1,o2. equivalence_relation1 (relation_pair o1 o2).
+ intros;
+ constructor 1;
+  [ apply (λr,r'. ⊩ ∘ r \sub\c = ⊩ ∘ r' \sub\c);
+  | simplify;
+    intros;
+    apply refl1;
+  | simplify;
+    intros 2;
+    apply sym1;
+  | simplify;
+    intros 3;
+    apply trans1;
+  ]      
+qed.
+
+definition relation_pair_setoid: basic_pair → basic_pair → setoid1.
+ intros;
+ constructor 1;
+  [ apply (relation_pair b b1)
+  | apply relation_pair_equality
+  ]
+qed.
+
+definition relation_pair_of_relation_pair_setoid :
+  ∀P,Q. relation_pair_setoid P Q → relation_pair P Q ≝ λP,Q,x.x.
+coercion relation_pair_of_relation_pair_setoid.
+
+lemma eq_to_eq': 
+  ∀o1,o2.∀r,r':relation_pair_setoid o1 o2. r=r' → r \sub\f ∘ ⊩ = r'\sub\f ∘ ⊩.
+ intros 7 (o1 o2 r r' H c1 f2);
+ split; intro H1;
+  [ lapply (fi ?? (commute ?? r c1 f2) H1) as H2;
+    lapply (if ?? (H c1 f2) H2) as H3;
+    apply (if ?? (commute ?? r' c1 f2) H3);
+  | lapply (fi ?? (commute ?? r' c1 f2) H1) as H2;
+    lapply (fi ?? (H c1 f2) H2) as H3;
+    apply (if ?? (commute ?? r c1 f2) H3);
+  ]
+qed.
+
+definition id_relation_pair: ∀o:basic_pair. relation_pair o o.
+ intro;
+ constructor 1;
+  [1,2: apply id1;
+  | lapply (id_neutral_right1 ? (concr o) ? (⊩)) as H;
+    lapply (id_neutral_left1 ?? (form o) (⊩)) as H1;
+    apply (.= H);
+    apply (H1 \sup -1);]
+qed.
+
+lemma relation_pair_composition: 
+  ∀o1,o2,o3: basic_pair.
+  relation_pair_setoid o1 o2 → relation_pair_setoid o2 o3 → relation_pair_setoid o1 o3.
+intros 3 (o1 o2 o3);
+  intros (r r1);
+    constructor 1;
+     [ apply (r1 \sub\c ∘ r \sub\c) 
+     | apply (r1 \sub\f ∘ r \sub\f)
+     | lapply (commute ?? r) as H;
+       lapply (commute ?? r1) as H1;
+       alias symbol "trans" = "trans1".
+       alias symbol "assoc" = "category1 assoc".
+       apply (.= ASSOC);
+       apply (.= #‡H1);
+       alias symbol "invert" = "setoid1 symmetry".
+       apply (.= ASSOC ^ -1);
+       apply (.= H‡#);
+       apply ASSOC]
+qed.
+
+lemma relation_pair_composition_is_morphism:
+  ∀o1,o2,o3: basic_pair.
+  ∀a,a':relation_pair_setoid o1 o2.
+  ∀b,b':relation_pair_setoid o2 o3.
+   a=a' → b=b' →
+    relation_pair_composition o1 o2 o3 a b
+    = relation_pair_composition o1 o2 o3 a' b'.
+intros 3 (o1 o2 o3);
+    intros;
+    change with (⊩ ∘ (b\sub\c ∘ a\sub\c) = ⊩ ∘ (b'\sub\c ∘ a'\sub\c));  
+    change in e with (⊩ ∘ a \sub\c = ⊩ ∘ a' \sub\c);
+    change in e1 with (⊩ ∘ b \sub\c = ⊩ ∘ b' \sub\c);
+    apply (.= ASSOC);
+    apply (.= #‡e1);
+    apply (.= #‡(commute ?? b'));
+    apply (.= ASSOC ^ -1);
+    apply (.= e‡#);
+    apply (.= ASSOC);
+    apply (.= #‡(commute ?? b')\sup -1);
+    apply (ASSOC ^ -1);
+qed.
+
+definition relation_pair_composition_morphism:
+ ∀o1,o2,o3. binary_morphism1 (relation_pair_setoid o1 o2) (relation_pair_setoid o2 o3) (relation_pair_setoid o1 o3).
+ intros;
+ constructor 1;
+  [ apply relation_pair_composition;
+  | apply relation_pair_composition_is_morphism;]
+qed.
+    
+lemma relation_pair_composition_morphism_assoc:
+Πo1:basic_pair
+.Πo2:basic_pair
+ .Πo3:basic_pair
+  .Πo4:basic_pair
+   .Πa12:relation_pair_setoid o1 o2
+    .Πa23:relation_pair_setoid o2 o3
+     .Πa34:relation_pair_setoid o3 o4
+      .relation_pair_composition_morphism o1 o3 o4
+       (relation_pair_composition_morphism o1 o2 o3 a12 a23) a34
+       =relation_pair_composition_morphism o1 o2 o4 a12
+        (relation_pair_composition_morphism o2 o3 o4 a23 a34).
+   intros;
+    change with (⊩ ∘ (a34\sub\c ∘ (a23\sub\c ∘ a12\sub\c)) =
+                 ⊩ ∘ ((a34\sub\c ∘ a23\sub\c) ∘ a12\sub\c));
+    alias symbol "refl" = "refl1".
+    alias symbol "prop2" = "prop21".
+    apply (ASSOC‡#);
+qed.    
+    
+lemma relation_pair_composition_morphism_respects_id:
+  ∀o1,o2:basic_pair.∀a:relation_pair_setoid o1 o2.
+  relation_pair_composition_morphism o1 o1 o2 (id_relation_pair o1) a=a.
+   intros;
+    change with (⊩ ∘ (a\sub\c ∘ (id_relation_pair o1)\sub\c) = ⊩ ∘ a\sub\c);
+    apply ((id_neutral_right1 ????)‡#);    
+qed.
+    
+lemma relation_pair_composition_morphism_respects_id_r:
+  ∀o1,o2:basic_pair.∀a:relation_pair_setoid o1 o2.
+  relation_pair_composition_morphism o1 o2 o2 a (id_relation_pair o2)=a.  
+  intros;
+    change with (⊩ ∘ ((id_relation_pair o2)\sub\c ∘ a\sub\c) = ⊩ ∘ a\sub\c);
+    apply ((id_neutral_left1 ????)‡#);
+qed.
+
+definition BP: category1.
+ constructor 1;
+  [ apply basic_pair
+  | apply relation_pair_setoid
+  | apply id_relation_pair
+  | apply relation_pair_composition_morphism
+  | apply relation_pair_composition_morphism_assoc;
+  | apply relation_pair_composition_morphism_respects_id;
+  | apply relation_pair_composition_morphism_respects_id_r;]
+qed.
+  
+definition basic_pair_of_BP : objs1 BP → basic_pair ≝ λx.x.
+coercion basic_pair_of_BP.
+
+definition relation_pair_setoid_of_arrows1_BP :
+  ∀P,Q. arrows1 BP P Q → relation_pair_setoid P Q ≝ λP,Q,x.x.
+coercion relation_pair_setoid_of_arrows1_BP.
+
+definition BPext: ∀o: BP. form o ⇒ Ω \sup (concr o).
+ intros; constructor 1;
+  [ apply (ext ? ? (rel o));
+  | intros;
+    apply (.= #‡e);
+    apply refl1]
+qed.
+
+definition BPextS: ∀o: BP. Ω \sup (form o) ⇒ Ω \sup (concr o).
+ intros; constructor 1;
+  [ apply (minus_image ?? (rel o));
+  | intros; apply (#‡e); ]
+qed.
+
+definition fintersects: ∀o: BP. binary_morphism1 (form o) (form o) (Ω \sup (form o)).
+ intros (o); constructor 1;
+  [ apply (λa,b: form o.{c | BPext o c ⊆ BPext o a ∩ BPext o b });
+    intros; simplify; apply (.= (†e)‡#); apply refl1
+  | intros; split; simplify; intros;
+     [ apply (. #‡((†e^-1)‡(†e1^-1))); assumption
+     | apply (. #‡((†e)‡(†e1))); assumption]]
+qed.
+
+interpretation "fintersects" 'fintersects U V = (fun21 ??? (fintersects ?) U V).
+
+definition fintersectsS:
+ ∀o:BP. binary_morphism1 (Ω \sup (form o)) (Ω \sup (form o)) (Ω \sup (form o)).
+ intros (o); constructor 1;
+  [ apply (λo: basic_pair.λa,b: Ω \sup (form o).{c | BPext o c ⊆ BPextS o a ∩ BPextS o b });
+    intros; simplify; apply (.= (†e)‡#); apply refl1
+  | intros; split; simplify; intros;
+     [ apply (. #‡((†e^-1)‡(†e1^-1))); assumption
+     | apply (. #‡((†e)‡(†e1))); assumption]]
+qed.
+
+interpretation "fintersectsS" 'fintersects U V = (fun21 ??? (fintersectsS ?) U V).
+
+definition relS: ∀o: BP. binary_morphism1 (concr o) (Ω \sup (form o)) CPROP.
+ intros (o); constructor 1;
+  [ apply (λx:concr o.λS: Ω \sup (form o).∃y:form o.y ∈ S ∧ x ⊩⎽o y);
+  | intros; split; intros; cases e2; exists [1,3: apply w]
+     [ apply (. (#‡e1^-1)‡(e^-1‡#)); assumption
+     | apply (. (#‡e1)‡(e‡#)); assumption]]
+qed.
+
+interpretation "basic pair relation for subsets" 'Vdash2 x y c = (fun21 (concr ?) ?? (relS c) x y).
+interpretation "basic pair relation for subsets (non applied)" 'Vdash c = (fun21 ??? (relS c)).
diff --git a/helm/software/matita/contribs/formal_topology/overlap/basic_pairs_to_basic_topologies.ma b/helm/software/matita/contribs/formal_topology/overlap/basic_pairs_to_basic_topologies.ma
new file mode 100644 (file)
index 0000000..5a98136
--- /dev/null
@@ -0,0 +1,43 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "basic_pairs_to_o-basic_pairs.ma".
+include "o-basic_pairs_to_o-basic_topologies.ma".
+include "basic_pairs.ma".
+include "basic_topologies.ma".
+
+definition basic_topology_of_basic_pair: basic_pair → basic_topology.
+ intro bp;
+ letin obp ≝ (o_basic_pair_of_basic_pair bp);
+ letin obt ≝ (o_basic_topology_of_o_basic_pair obp);
+ constructor 1;
+  [ apply (form bp);
+  | apply (oA obt);
+  | apply (oJ obt);
+  | apply (oA_is_saturation obt);
+  | apply (oJ_is_reduction obt);
+  | apply (Ocompatibility obt); ]
+qed.
+
+definition continuous_relation_of_relation_pair:
+ ∀BP1,BP2.relation_pair BP1 BP2 →
+  continuous_relation (basic_topology_of_basic_pair BP1) (basic_topology_of_basic_pair BP2).
+ intros (BP1 BP2 rp);
+ letin orp ≝ (o_relation_pair_of_relation_pair ?? rp);
+ letin ocr ≝ (o_continuous_relation_of_o_relation_pair ?? orp);
+ constructor 1;
+  [ apply (rp \sub \f);
+  | apply (Oreduced ?? ocr);
+  | apply (Osaturated ?? ocr); ]
+qed.
\ No newline at end of file
diff --git a/helm/software/matita/contribs/formal_topology/overlap/basic_pairs_to_o-basic_pairs.ma b/helm/software/matita/contribs/formal_topology/overlap/basic_pairs_to_o-basic_pairs.ma
new file mode 100644 (file)
index 0000000..3e2fe8f
--- /dev/null
@@ -0,0 +1,148 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "basic_pairs.ma".
+include "o-basic_pairs.ma".
+include "relations_to_o-algebra.ma".
+
+(* Qui, per fare le cose per bene, ci serve la nozione di funtore categorico *)
+definition o_basic_pair_of_basic_pair: basic_pair → Obasic_pair.
+ intro b;
+ constructor 1;
+  [ apply (map_objs2 ?? POW (concr b));
+  | apply (map_objs2 ?? POW (form b));
+  | apply (map_arrows2 ?? POW (concr b) (form b) (rel b)); ]
+qed.
+
+definition o_relation_pair_of_relation_pair:
+ ∀BP1,BP2. relation_pair BP1 BP2 →
+  Orelation_pair (o_basic_pair_of_basic_pair BP1) (o_basic_pair_of_basic_pair BP2).
+ intros;
+ constructor 1;
+  [ apply (map_arrows2 ?? POW (concr BP1) (concr BP2) (r \sub \c));
+  | apply (map_arrows2 ?? POW (form BP1) (form BP2) (r \sub \f));
+  | apply (.= (respects_comp2 ?? POW (concr BP1) (concr BP2) (form BP2)  r\sub\c (⊩\sub BP2) )^-1);
+    cut ( ⊩ \sub BP2 ∘ r \sub \c =_12 r\sub\f ∘ ⊩ \sub BP1) as H;
+    [ apply (.= †H);
+      apply (respects_comp2 ?? POW (concr BP1) (form BP1) (form BP2) (⊩\sub BP1) r\sub\f);
+    | apply commute;]]
+qed.
+
+lemma o_relation_pair_of_relation_pair_is_morphism : 
+  ∀S,T:category2_of_category1 BP.    
+  ∀a,b:arrows2 (category2_of_category1 BP) S T.a=b → 
+   (eq2 (arrows2 OBP (o_basic_pair_of_basic_pair S) (o_basic_pair_of_basic_pair T))) 
+    (o_relation_pair_of_relation_pair S T a) (o_relation_pair_of_relation_pair S T b).
+intros 2 (S T);       
+      intros (a b Eab); split; unfold o_relation_pair_of_relation_pair; simplify;
+       unfold o_basic_pair_of_basic_pair; simplify;
+       [ change in match or_f_minus_star_ with (λq,w,x.fun12 ?? (or_f_minus_star q w) x); 
+       | change in match or_f_minus_ with (λq,w,x.fun12 ?? (or_f_minus q w) x);
+       | change in match or_f_ with (λq,w,x.fun12 ?? (or_f q w) x);
+       | change in match or_f_star_ with (λq,w,x.fun12 ?? (or_f_star q w) x);]
+       simplify;
+       apply (prop12);
+       apply (.= (respects_comp2 ?? POW (concr S) (concr T) (form T) (a\sub\c) (⊩\sub T))^-1);
+       apply sym2;
+       apply (.= (respects_comp2 ?? POW (concr S) (concr T) (form T) (b\sub\c) (⊩\sub T))^-1);
+       apply sym2;
+       apply prop12;
+       apply Eab;
+qed.
+
+lemma o_relation_pair_of_relation_pair_morphism : 
+  ∀S,T:category2_of_category1 BP.
+  unary_morphism2 (arrows2 (category2_of_category1 BP) S T)
+   (arrows2 OBP (o_basic_pair_of_basic_pair S) (o_basic_pair_of_basic_pair T)).
+intros (S T);
+   constructor 1;
+     [ apply (o_relation_pair_of_relation_pair S T);
+     | apply (o_relation_pair_of_relation_pair_is_morphism S T)]
+qed.
+
+lemma o_relation_pair_of_relation_pair_morphism_respects_id:
+ ∀o:category2_of_category1 BP.
+  o_relation_pair_of_relation_pair_morphism o o (id2 (category2_of_category1 BP) o)
+  = id2 OBP (o_basic_pair_of_basic_pair o).
+   simplify; intros; whd; split; 
+       [ change in match or_f_minus_star_ with (λq,w,x.fun12 ?? (or_f_minus_star q w) x); 
+       | change in match or_f_minus_ with (λq,w,x.fun12 ?? (or_f_minus q w) x);
+       | change in match or_f_ with (λq,w,x.fun12 ?? (or_f q w) x);
+       | change in match or_f_star_ with (λq,w,x.fun12 ?? (or_f_star q w) x);]
+    simplify;
+    apply prop12;
+    apply prop22;[2,4,6,8: apply rule #;]
+    apply (respects_id2 ?? POW (concr o));
+qed. 
+
+lemma o_relation_pair_of_relation_pair_morphism_respects_comp:
+  ∀o1,o2,o3:category2_of_category1 BP.
+  ∀f1:arrows2 (category2_of_category1 BP) o1 o2.
+  ∀f2:arrows2 (category2_of_category1 BP) o2 o3.
+  (eq2 (arrows2 OBP (o_basic_pair_of_basic_pair o1) (o_basic_pair_of_basic_pair o3)))
+    (o_relation_pair_of_relation_pair_morphism o1 o3 (f2 ∘ f1))
+    (comp2 OBP ???
+      (o_relation_pair_of_relation_pair_morphism o1 o2 f1)
+      (o_relation_pair_of_relation_pair_morphism o2 o3 f2)).
+   simplify; intros; whd; split;
+       [ change in match or_f_minus_star_ with (λq,w,x.fun12 ?? (or_f_minus_star q w) x); 
+       | change in match or_f_minus_ with (λq,w,x.fun12 ?? (or_f_minus q w) x);
+       | change in match or_f_ with (λq,w,x.fun12 ?? (or_f q w) x);
+       | change in match or_f_star_ with (λq,w,x.fun12 ?? (or_f_star q w) x);]
+    simplify;
+    apply prop12;
+    apply prop22;[2,4,6,8: apply rule #;]
+    apply (respects_comp2 ?? POW (concr o1) (concr o2) (concr o3) f1\sub\c f2\sub\c);
+qed.
+
+definition BP_to_OBP: carr3 (arrows3 CAT2 (category2_of_category1 BP) OBP).
+ constructor 1;
+  [ apply o_basic_pair_of_basic_pair;
+  | intros; apply o_relation_pair_of_relation_pair_morphism;
+  | apply o_relation_pair_of_relation_pair_morphism_respects_id;
+  | apply o_relation_pair_of_relation_pair_morphism_respects_comp;]
+qed.
+
+theorem BP_to_OBP_faithful:
+ ∀S,T.∀f,g:arrows2 (category2_of_category1 BP) S T.
+  map_arrows2 ?? BP_to_OBP ?? f = map_arrows2 ?? BP_to_OBP ?? g → f=g.
+ intros; change with ( (⊩) ∘ f \sub \c = (⊩) ∘ g \sub \c);
+ apply (POW_faithful);
+ apply (.= respects_comp2 ?? POW (concr S) (concr T) (form T) f \sub \c (⊩ \sub T));
+ apply sym2;
+ apply (.= respects_comp2 ?? POW (concr S) (concr T) (form T) g \sub \c (⊩ \sub T));
+ apply sym2;
+ apply e;
+qed.
+
+theorem BP_to_OBP_full: 
+   ∀S,T.∀f. exT22 ? (λg. map_arrows2 ?? BP_to_OBP S T g = f).
+ intros; 
+ cases (POW_full (concr S) (concr T) (Oconcr_rel ?? f)) (gc Hgc);
+ cases (POW_full (form S) (form T) (Oform_rel ?? f)) (gf Hgf);
+ exists[
+   constructor 1; [apply gc|apply gf]
+   apply (POW_faithful);
+   apply (let xxxx ≝POW in .= respects_comp2 ?? POW (concr S) (concr T) (form T) gc (rel T));
+   apply rule (.= Hgc‡#);
+   apply (.= Ocommute ?? f);
+   apply (.= #‡Hgf^-1);
+   apply (let xxxx ≝POW in (respects_comp2 ?? POW (concr S) (form S) (form T) (rel S) gf)^-1)]
+ split;
+  [ change in match or_f_minus_star_ with (λq,w,x.fun12 ?? (or_f_minus_star q w) x); 
+  | change in match or_f_minus_ with (λq,w,x.fun12 ?? (or_f_minus q w) x);
+  | change in match or_f_ with (λq,w,x.fun12 ?? (or_f q w) x);
+  | change in match or_f_star_ with (λq,w,x.fun12 ?? (or_f_star q w) x);]
+ simplify; apply (†(Hgc‡#));
+qed.   
diff --git a/helm/software/matita/contribs/formal_topology/overlap/basic_topologies.ma b/helm/software/matita/contribs/formal_topology/overlap/basic_topologies.ma
new file mode 100644 (file)
index 0000000..013ddb9
--- /dev/null
@@ -0,0 +1,193 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "relations.ma".
+include "saturations.ma".
+
+record basic_topology: Type1 ≝
+ { carrbt:> REL;
+   A: unary_morphism1 (Ω \sup carrbt) (Ω \sup carrbt);
+   J: unary_morphism1 (Ω \sup carrbt) (Ω \sup carrbt);
+   A_is_saturation: is_saturation ? A;
+   J_is_reduction: is_reduction ? J;
+   compatibility: ∀U,V. (A U ≬ J V) = (U ≬ J V)
+ }.
+
+record continuous_relation (S,T: basic_topology) : Type1 ≝
+ { cont_rel:> arrows1 ? S T;
+   reduced: ∀U. U = J ? U → image ?? cont_rel U = J ? (image ?? cont_rel U);
+   saturated: ∀U. U = A ? U → minus_star_image ?? cont_rel U = A ? (minus_star_image ?? cont_rel U)
+ }. 
+(*
+definition continuous_relation_setoid: basic_topology → basic_topology → setoid1.
+ intros (S T); constructor 1;
+  [ apply (continuous_relation S T)
+  | constructor 1;
+     [ apply (λr,s:continuous_relation S T.∀b. A ? (ext ?? r b) = A ? (ext ?? s b));
+     | simplify; intros; apply refl1;
+     | simplify; intros; apply sym1; apply H
+     | simplify; intros; apply trans1; [2: apply H |3: apply H1; |1: skip]]]
+qed.
+
+theorem continuous_relation_eq':
+ ∀o1,o2.∀a,a': continuous_relation_setoid o1 o2.
+  a = a' → ∀X.minus_star_image ?? a (A o1 X) = minus_star_image ?? a' (A o1 X).
+ intros; split; intro; unfold minus_star_image; simplify; intros;
+  [ cut (ext ?? a a1 ⊆ A ? X); [2: intros 2; apply (H1 a2); cases f1; assumption;]
+    lapply (if ?? (A_is_saturation ???) Hcut); clear Hcut;
+    cut (A ? (ext ?? a' a1) ⊆ A ? X); [2: apply (. (H ?)‡#); assumption]
+    lapply (fi ?? (A_is_saturation ???) Hcut);
+    apply (Hletin1 x); change with (x ∈ ext ?? a' a1); split; simplify;
+     [ apply I | assumption ]
+  | cut (ext ?? a' a1 ⊆ A ? X); [2: intros 2; apply (H1 a2); cases f1; assumption;]
+    lapply (if ?? (A_is_saturation ???) Hcut); clear Hcut;
+    cut (A ? (ext ?? a a1) ⊆ A ? X); [2: apply (. (H ?)\sup -1‡#); assumption]
+    lapply (fi ?? (A_is_saturation ???) Hcut);
+    apply (Hletin1 x); change with (x ∈ ext ?? a a1); split; simplify;
+     [ apply I | assumption ]]
+qed.
+
+theorem continuous_relation_eq_inv':
+ ∀o1,o2.∀a,a': continuous_relation_setoid o1 o2.
+  (∀X.minus_star_image ?? a (A o1 X) = minus_star_image ?? a' (A o1 X)) → a=a'.
+ intros 6;
+ cut (∀a,a': continuous_relation_setoid o1 o2.
+  (∀X.minus_star_image ?? a (A o1 X) = minus_star_image ?? a' (A o1 X)) → 
+   ∀V:o2. A ? (ext ?? a' V) ⊆ A ? (ext ?? a V));
+  [2: clear b H a' a; intros;
+      lapply depth=0 (λV.saturation_expansive ??? (extS ?? a V)); [2: apply A_is_saturation;|skip]
+       (* fundamental adjunction here! to be taken out *)
+       cut (∀V:Ω \sup o2.V ⊆ minus_star_image ?? a (A ? (extS ?? a V)));
+        [2: intro; intros 2; unfold minus_star_image; simplify; intros;
+            apply (Hletin V1 x); whd; split; [ exact I | exists; [apply a1] split; assumption]]
+       clear Hletin;
+       cut (∀V:Ω \sup o2.V ⊆ minus_star_image ?? a' (A ? (extS ?? a V)));
+        [2: intro; apply (. #‡(H ?)); apply Hcut] clear H Hcut;
+       (* second half of the fundamental adjunction here! to be taken out too *)
+      intro; lapply (Hcut1 (singleton ? V)); clear Hcut1;
+      unfold minus_star_image in Hletin; unfold singleton in Hletin; simplify in Hletin;
+      whd in Hletin; whd in Hletin:(?→?→%); simplify in Hletin;
+      apply (if ?? (A_is_saturation ???));
+      intros 2 (x H); lapply (Hletin V ? x ?);
+       [ apply refl | cases H; assumption; ]
+      change with (x ∈ A ? (ext ?? a V));
+      apply (. #‡(†(extS_singleton ????)));
+      assumption;]
+ split; apply Hcut; [2: assumption | intro; apply sym1; apply H]
+qed.
+
+definition continuous_relation_comp:
+ ∀o1,o2,o3.
+  continuous_relation_setoid o1 o2 →
+   continuous_relation_setoid o2 o3 →
+    continuous_relation_setoid o1 o3.
+ intros (o1 o2 o3 r s); constructor 1;
+  [ apply (s ∘ r)
+  | intros;
+    apply sym1;
+    apply (.= †(image_comp ??????));
+    apply (.= (reduced ?????)\sup -1);
+     [ apply (.= (reduced ?????)); [ assumption | apply refl1 ]
+     | apply (.= (image_comp ??????)\sup -1);
+       apply refl1]
+     | intros;
+       apply sym1;
+       apply (.= †(minus_star_image_comp ??????));
+       apply (.= (saturated ?????)\sup -1);
+        [ apply (.= (saturated ?????)); [ assumption | apply refl1 ]
+        | apply (.= (minus_star_image_comp ??????)\sup -1);
+          apply refl1]]
+qed.
+
+definition BTop: category1.
+ constructor 1;
+  [ apply basic_topology
+  | apply continuous_relation_setoid
+  | intro; constructor 1;
+     [ apply id1
+     | intros;
+       apply (.= (image_id ??));
+       apply sym1;
+       apply (.= †(image_id ??));
+       apply sym1;
+       assumption
+     | intros;
+       apply (.= (minus_star_image_id ??));
+       apply sym1;
+       apply (.= †(minus_star_image_id ??));
+       apply sym1;
+       assumption]
+  | intros; constructor 1;
+     [ apply continuous_relation_comp;
+     | intros; simplify; intro x; simplify;
+       lapply depth=0 (continuous_relation_eq' ???? H) as H';
+       lapply depth=0 (continuous_relation_eq' ???? H1) as H1';
+       letin K ≝ (λX.H1' (minus_star_image ?? a (A ? X))); clearbody K;
+       cut (∀X:Ω \sup o1.
+              minus_star_image o2 o3 b (A o2 (minus_star_image o1 o2 a (A o1 X)))
+            = minus_star_image o2 o3 b' (A o2 (minus_star_image o1 o2 a' (A o1 X))));
+        [2: intro; apply sym1; apply (.= #‡(†((H' ?)\sup -1))); apply sym1; apply (K X);]
+       clear K H' H1';
+       cut (∀X:Ω \sup o1.
+              minus_star_image o1 o3 (b ∘ a) (A o1 X) = minus_star_image o1 o3 (b'∘a') (A o1 X));
+        [2: intro;
+            apply (.= (minus_star_image_comp ??????));
+            apply (.= #‡(saturated ?????));
+             [ apply ((saturation_idempotent ????) \sup -1); apply A_is_saturation ]
+            apply sym1; 
+            apply (.= (minus_star_image_comp ??????));
+            apply (.= #‡(saturated ?????));
+             [ apply ((saturation_idempotent ????) \sup -1); apply A_is_saturation ]
+           apply ((Hcut X) \sup -1)]
+       clear Hcut; generalize in match x; clear x;
+       apply (continuous_relation_eq_inv');
+       apply Hcut1;]
+  | intros; simplify; intro; do 2 (unfold continuous_relation_comp); simplify;
+    apply (.= †(ASSOC1‡#));
+    apply refl1
+  | intros; simplify; intro; unfold continuous_relation_comp; simplify;
+    apply (.= †((id_neutral_right1 ????)‡#));
+    apply refl1
+  | intros; simplify; intro; simplify;
+    apply (.= †((id_neutral_left1 ????)‡#));
+    apply refl1]
+qed.
+
+(*
+(*CSC: unused! *)
+(* this proof is more logic-oriented than set/lattice oriented *)
+theorem continuous_relation_eqS:
+ ∀o1,o2:basic_topology.∀a,a': continuous_relation_setoid o1 o2.
+  a = a' → ∀X. A ? (extS ?? a X) = A ? (extS ?? a' X).
+ intros;
+ cut (∀a: arrows1 ? o1 ?.∀x. x ∈ extS ?? a X → ∃y:o2.y ∈ X ∧ x ∈ ext ?? a y);
+  [2: intros; cases f; clear f; cases H1; exists [apply w] cases x1; split;
+      try assumption; split; assumption]
+ cut (∀a,a':continuous_relation_setoid o1 o2.eq1 ? a a' → ∀x. x ∈ extS ?? a X → ∃y:o2. y ∈ X ∧ x ∈ A ? (ext ?? a' y));
+  [2: intros; cases (Hcut ?? f); exists; [apply w] cases x1; split; try assumption;
+      apply (. #‡(H1 ?));
+      apply (saturation_expansive ?? (A_is_saturation o1) (ext ?? a1 w) x);
+      assumption;] clear Hcut;
+ split; apply (if ?? (A_is_saturation ???)); intros 2;
+  [lapply (Hcut1 a a' H a1 f) | lapply (Hcut1 a' a (H \sup -1) a1 f)]
+  cases Hletin; clear Hletin; cases x; clear x;
+ cut (∀a: arrows1 ? o1 ?. ext ?? a w ⊆ extS ?? a X);
+  [2,4: intros 3; cases f3; clear f3; simplify in f5; split; try assumption;
+      exists [1,3: apply w] split; assumption;]
+ cut (∀a. A ? (ext o1 o2 a w) ⊆ A ? (extS o1 o2 a X));
+  [2,4: intros; apply saturation_monotone; try (apply A_is_saturation); apply Hcut;]
+ apply Hcut2; assumption.
+qed.
+*)
+*)
\ No newline at end of file
diff --git a/helm/software/matita/contribs/formal_topology/overlap/basic_topologies_to_o-basic_topologies.ma b/helm/software/matita/contribs/formal_topology/overlap/basic_topologies_to_o-basic_topologies.ma
new file mode 100644 (file)
index 0000000..68212c2
--- /dev/null
@@ -0,0 +1,38 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "basic_topologies.ma".
+include "o-basic_topologies.ma".
+include "relations_to_o-algebra.ma".
+
+definition o_basic_topology_of_basic_topology: basic_topology → Obasic_topology.
+ intro;
+ constructor 1;
+  [ apply (POW' b);
+  | apply (A b);
+  | apply (J b);
+  | apply (A_is_saturation b);
+  | apply (J_is_reduction b);
+  | apply (compatibility b); ]
+qed.
+
+definition o_continuous_relation_of_continuous_relation:
+ ∀BT1,BT2.continuous_relation BT1 BT2 →
+  Ocontinuous_relation (o_basic_topology_of_basic_topology BT1) (o_basic_topology_of_basic_topology BT2).
+ intros;
+ constructor 1;
+  [ apply (orelation_of_relation ?? c);
+  | apply (reduced ?? c);
+  | apply (saturated ?? c); ]
+qed.
\ No newline at end of file
diff --git a/helm/software/matita/contribs/formal_topology/overlap/categories.ma b/helm/software/matita/contribs/formal_topology/overlap/categories.ma
new file mode 100644 (file)
index 0000000..30a8159
--- /dev/null
@@ -0,0 +1,466 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "cprop_connectives.ma".
+
+notation "hvbox(a break = \sub \ID b)" non associative with precedence 45
+for @{ 'eqID $a $b }.
+
+notation > "hvbox(a break =_\ID b)" non associative with precedence 45
+for @{ cic:/matita/logic/equality/eq.ind#xpointer(1/1) ? $a $b }.
+
+interpretation "ID eq" 'eqID x y = (cic:/matita/logic/equality/eq.ind#xpointer(1/1) ? x y).
+
+record equivalence_relation (A:Type0) : Type1 ≝
+ { eq_rel:2> A → A → CProp0;
+   refl: reflexive ? eq_rel;
+   sym: symmetric ? eq_rel;
+   trans: transitive ? eq_rel
+ }.
+
+record setoid : Type1 ≝
+ { carr:> Type0;
+   eq: equivalence_relation carr
+ }.
+
+record equivalence_relation1 (A:Type1) : Type2 ≝
+ { eq_rel1:2> A → A → CProp1;
+   refl1: reflexive1 ? eq_rel1;
+   sym1: symmetric1 ? eq_rel1;
+   trans1: transitive1 ? eq_rel1
+ }.
+
+record setoid1: Type2 ≝
+ { carr1:> Type1;
+   eq1: equivalence_relation1 carr1
+ }.
+
+definition setoid1_of_setoid: setoid → setoid1.
+ intro;
+ constructor 1;
+  [ apply (carr s)
+  | constructor 1;
+    [ apply (eq_rel s);
+      apply (eq s)
+    | apply (refl s)
+    | apply (sym s)
+    | apply (trans s)]]
+qed.
+
+coercion setoid1_of_setoid.
+prefer coercion Type_OF_setoid.
+
+record equivalence_relation2 (A:Type2) : Type3 ≝
+ { eq_rel2:2> A → A → CProp2;
+   refl2: reflexive2 ? eq_rel2;
+   sym2: symmetric2 ? eq_rel2;
+   trans2: transitive2 ? eq_rel2
+ }.
+
+record setoid2: Type3 ≝
+ { carr2:> Type2;
+   eq2: equivalence_relation2 carr2
+ }.
+
+definition setoid2_of_setoid1: setoid1 → setoid2.
+ intro;
+ constructor 1;
+  [ apply (carr1 s)
+  | constructor 1;
+    [ apply (eq_rel1 s);
+      apply (eq1 s)
+    | apply (refl1 s)
+    | apply (sym1 s)
+    | apply (trans1 s)]]
+qed.
+
+coercion setoid2_of_setoid1.
+prefer coercion Type_OF_setoid2. 
+prefer coercion Type_OF_setoid. 
+prefer coercion Type_OF_setoid1.
+(* we prefer 0 < 1 < 2 *)
+
+record equivalence_relation3 (A:Type3) : Type4 ≝
+ { eq_rel3:2> A → A → CProp3;
+   refl3: reflexive3 ? eq_rel3;
+   sym3: symmetric3 ? eq_rel3;
+   trans3: transitive3 ? eq_rel3
+ }.
+
+record setoid3: Type4 ≝
+ { carr3:> Type3;
+   eq3: equivalence_relation3 carr3
+ }.
+
+
+interpretation "setoid3 eq" 'eq t x y = (eq_rel3 ? (eq3 t) x y).
+interpretation "setoid2 eq" 'eq t x y = (eq_rel2 ? (eq2 t) x y).
+interpretation "setoid1 eq" 'eq t x y = (eq_rel1 ? (eq1 t) x y).
+interpretation "setoid eq" 'eq t x y = (eq_rel ? (eq t) x y).
+
+notation > "hvbox(a break =_12 b)" non associative with precedence 45
+for @{ eq_rel2 (carr2 (setoid2_of_setoid1 ?)) (eq2 (setoid2_of_setoid1 ?)) $a $b }.
+notation > "hvbox(a break =_0 b)" non associative with precedence 45
+for @{ eq_rel ? (eq ?) $a $b }.
+notation > "hvbox(a break =_1 b)" non associative with precedence 45
+for @{ eq_rel1 ? (eq1 ?) $a $b }.
+notation > "hvbox(a break =_2 b)" non associative with precedence 45
+for @{ eq_rel2 ? (eq2 ?) $a $b }.
+notation > "hvbox(a break =_3 b)" non associative with precedence 45
+for @{ eq_rel3 ? (eq3 ?) $a $b }.
+
+interpretation "setoid3 symmetry" 'invert r = (sym3 ???? r).
+interpretation "setoid2 symmetry" 'invert r = (sym2 ???? r).
+interpretation "setoid1 symmetry" 'invert r = (sym1 ???? r).
+interpretation "setoid symmetry" 'invert r = (sym ???? r).
+notation ".= r" with precedence 50 for @{'trans $r}.
+interpretation "trans3" 'trans r = (trans3 ????? r).
+interpretation "trans2" 'trans r = (trans2 ????? r).
+interpretation "trans1" 'trans r = (trans1 ????? r).
+interpretation "trans" 'trans r = (trans ????? r).
+
+record unary_morphism (A,B: setoid) : Type0 ≝
+ { fun1:1> A → B;
+   prop1: ∀a,a'. eq ? a a' → eq ? (fun1 a) (fun1 a')
+ }.
+
+record unary_morphism1 (A,B: setoid1) : Type1 ≝
+ { fun11:1> A → B;
+   prop11: ∀a,a'. eq1 ? a a' → eq1 ? (fun11 a) (fun11 a')
+ }.
+
+record unary_morphism2 (A,B: setoid2) : Type2 ≝
+ { fun12:1> A → B;
+   prop12: ∀a,a'. eq2 ? a a' → eq2 ? (fun12 a) (fun12 a')
+ }.
+
+record unary_morphism3 (A,B: setoid3) : Type3 ≝
+ { fun13:1> A → B;
+   prop13: ∀a,a'. eq3 ? a a' → eq3 ? (fun13 a) (fun13 a')
+ }.
+
+record binary_morphism (A,B,C:setoid) : Type0 ≝
+ { fun2:2> A → B → C;
+   prop2: ∀a,a',b,b'. eq ? a a' → eq ? b b' → eq ? (fun2 a b) (fun2 a' b')
+ }.
+
+record binary_morphism1 (A,B,C:setoid1) : Type1 ≝
+ { fun21:2> A → B → C;
+   prop21: ∀a,a',b,b'. eq1 ? a a' → eq1 ? b b' → eq1 ? (fun21 a b) (fun21 a' b')
+ }.
+
+record binary_morphism2 (A,B,C:setoid2) : Type2 ≝
+ { fun22:2> A → B → C;
+   prop22: ∀a,a',b,b'. eq2 ? a a' → eq2 ? b b' → eq2 ? (fun22 a b) (fun22 a' b')
+ }.
+
+record binary_morphism3 (A,B,C:setoid3) : Type3 ≝
+ { fun23:2> A → B → C;
+   prop23: ∀a,a',b,b'. eq3 ? a a' → eq3 ? b b' → eq3 ? (fun23 a b) (fun23 a' b')
+ }.
+
+notation "† c" with precedence 90 for @{'prop1 $c }.
+notation "l ‡ r" with precedence 90 for @{'prop2 $l $r }.
+notation "#" with precedence 90 for @{'refl}.
+interpretation "prop1" 'prop1 c  = (prop1 ????? c).
+interpretation "prop11" 'prop1 c = (prop11 ????? c).
+interpretation "prop12" 'prop1 c = (prop12 ????? c).
+interpretation "prop13" 'prop1 c = (prop13 ????? c).
+interpretation "prop2" 'prop2 l r = (prop2 ???????? l r).
+interpretation "prop21" 'prop2 l r = (prop21 ???????? l r).
+interpretation "prop22" 'prop2 l r = (prop22 ???????? l r).
+interpretation "prop23" 'prop2 l r = (prop23 ???????? l r).
+interpretation "refl" 'refl = (refl ???).
+interpretation "refl1" 'refl = (refl1 ???).
+interpretation "refl2" 'refl = (refl2 ???).
+interpretation "refl3" 'refl = (refl3 ???).
+
+definition unary_morphism2_of_unary_morphism1: 
+  ∀S,T:setoid1.unary_morphism1 S T → unary_morphism2 (setoid2_of_setoid1 S) T.
+ intros;
+ constructor 1;
+  [ apply (fun11 ?? u);
+  | apply (prop11 ?? u); ]
+qed.
+
+definition CPROP: setoid1.
+ constructor 1;
+  [ apply CProp0
+  | constructor 1;
+     [ apply Iff
+     | intros 1; split; intro; assumption
+     | intros 3; cases i; split; assumption
+     | intros 5; cases i; cases i1; split; intro;
+        [ apply (f2 (f x1)) | apply (f1 (f3 z1))]]]
+qed.
+
+definition CProp0_of_CPROP: carr1 CPROP → CProp0 ≝ λx.x.
+coercion CProp0_of_CPROP.
+
+alias symbol "eq" = "setoid1 eq".
+definition fi': ∀A,B:CPROP. A = B → B → A.
+ intros; apply (fi ?? e); assumption.
+qed.
+
+notation ". r" with precedence 50 for @{'fi $r}.
+interpretation "fi" 'fi r = (fi' ?? r).
+
+definition and_morphism: binary_morphism1 CPROP CPROP CPROP.
+ constructor 1;
+  [ apply And
+  | intros; split; intro; cases a1; split;
+     [ apply (if ?? e a2)
+     | apply (if ?? e1 b1)
+     | apply (fi ?? e a2)
+     | apply (fi ?? e1 b1)]]
+qed.
+
+interpretation "and_morphism" 'and a b = (fun21 ??? and_morphism a b).
+
+definition or_morphism: binary_morphism1 CPROP CPROP CPROP.
+ constructor 1;
+  [ apply Or
+  | intros; split; intro; cases o; [1,3:left |2,4: right]
+     [ apply (if ?? e a1)
+     | apply (fi ?? e a1)
+     | apply (if ?? e1 b1)
+     | apply (fi ?? e1 b1)]]
+qed.
+
+interpretation "or_morphism" 'or a b = (fun21 ??? or_morphism a b).
+
+definition if_morphism: binary_morphism1 CPROP CPROP CPROP.
+ constructor 1;
+  [ apply (λA,B. A → B)
+  | intros; split; intros;
+     [ apply (if ?? e1); apply f; apply (fi ?? e); assumption
+     | apply (fi ?? e1); apply f; apply (if ?? e); assumption]]
+qed.
+
+
+record category : Type1 ≝
+ { objs:> Type0;
+   arrows: objs → objs → setoid;
+   id: ∀o:objs. arrows o o;
+   comp: ∀o1,o2,o3. binary_morphism (arrows o1 o2) (arrows o2 o3) (arrows o1 o3);
+   comp_assoc: ∀o1,o2,o3,o4. ∀a12,a23,a34.
+    comp o1 o3 o4 (comp o1 o2 o3 a12 a23) a34 = comp o1 o2 o4 a12 (comp o2 o3 o4 a23 a34);
+   id_neutral_left: ∀o1,o2. ∀a: arrows o1 o2. comp ??? (id o1) a = a;
+   id_neutral_right: ∀o1,o2. ∀a: arrows o1 o2. comp ??? a (id o2) = a
+ }.
+
+record category1 : Type2 ≝
+ { objs1:> Type1;
+   arrows1: objs1 → objs1 → setoid1;
+   id1: ∀o:objs1. arrows1 o o;
+   comp1: ∀o1,o2,o3. binary_morphism1 (arrows1 o1 o2) (arrows1 o2 o3) (arrows1 o1 o3);
+   comp_assoc1: ∀o1,o2,o3,o4. ∀a12,a23,a34.
+    comp1 o1 o3 o4 (comp1 o1 o2 o3 a12 a23) a34 = comp1 o1 o2 o4 a12 (comp1 o2 o3 o4 a23 a34);
+   id_neutral_right1: ∀o1,o2. ∀a: arrows1 o1 o2. comp1 ??? (id1 o1) a = a;
+   id_neutral_left1: ∀o1,o2. ∀a: arrows1 o1 o2. comp1 ??? a (id1 o2) = a
+ }.
+
+record category2 : Type3 ≝
+ { objs2:> Type2;
+   arrows2: objs2 → objs2 → setoid2;
+   id2: ∀o:objs2. arrows2 o o;
+   comp2: ∀o1,o2,o3. binary_morphism2 (arrows2 o1 o2) (arrows2 o2 o3) (arrows2 o1 o3);
+   comp_assoc2: ∀o1,o2,o3,o4. ∀a12,a23,a34.
+    comp2 o1 o3 o4 (comp2 o1 o2 o3 a12 a23) a34 = comp2 o1 o2 o4 a12 (comp2 o2 o3 o4 a23 a34);
+   id_neutral_right2: ∀o1,o2. ∀a: arrows2 o1 o2. comp2 ??? (id2 o1) a = a;
+   id_neutral_left2: ∀o1,o2. ∀a: arrows2 o1 o2. comp2 ??? a (id2 o2) = a
+ }.
+
+record category3 : Type4 ≝
+ { objs3:> Type3;
+   arrows3: objs3 → objs3 → setoid3;
+   id3: ∀o:objs3. arrows3 o o;
+   comp3: ∀o1,o2,o3. binary_morphism3 (arrows3 o1 o2) (arrows3 o2 o3) (arrows3 o1 o3);
+   comp_assoc3: ∀o1,o2,o3,o4. ∀a12,a23,a34.
+    comp3 o1 o3 o4 (comp3 o1 o2 o3 a12 a23) a34 = comp3 o1 o2 o4 a12 (comp3 o2 o3 o4 a23 a34);
+   id_neutral_right3: ∀o1,o2. ∀a: arrows3 o1 o2. comp3 ??? (id3 o1) a = a;
+   id_neutral_left3: ∀o1,o2. ∀a: arrows3 o1 o2. comp3 ??? a (id3 o2) = a
+ }.
+
+notation "'ASSOC'" with precedence 90 for @{'assoc}.
+
+interpretation "category2 composition" 'compose x y = (fun22 ??? (comp2 ????) y x).
+interpretation "category2 assoc" 'assoc = (comp_assoc2 ????????).
+interpretation "category1 composition" 'compose x y = (fun21 ??? (comp1 ????) y x).
+interpretation "category1 assoc" 'assoc = (comp_assoc1 ????????).
+interpretation "category composition" 'compose x y = (fun2 ??? (comp ????) y x).
+interpretation "category assoc" 'assoc = (comp_assoc ????????).
+
+definition category2_of_category1: category1 → category2.
+ intro;
+ constructor 1;
+  [ apply (objs1 c);
+  | intros; apply (setoid2_of_setoid1 (arrows1 c o o1));
+  | apply (id1 c);
+  | intros;
+    constructor 1;
+     [ intros; apply (comp1 c o1 o2 o3 c1 c2);
+     | intros; whd in e e1 a a' b b'; change with (eq1 ? (b∘a) (b'∘a')); apply (e‡e1); ]
+  | intros; simplify; whd in a12 a23 a34; whd; apply rule (ASSOC);
+  | intros; simplify; whd in a; whd; apply id_neutral_right1;
+  | intros; simplify; whd in a; whd; apply id_neutral_left1; ]
+qed.
+(*coercion category2_of_category1.*)
+
+record functor2 (C1: category2) (C2: category2) : Type3 ≝
+ { map_objs2:1> C1 → C2;
+   map_arrows2: ∀S,T. unary_morphism2 (arrows2 ? S T) (arrows2 ? (map_objs2 S) (map_objs2 T));
+   respects_id2: ∀o:C1. map_arrows2 ?? (id2 ? o) = id2 ? (map_objs2 o);
+   respects_comp2:
+     ∀o1,o2,o3.∀f1:arrows2 ? o1 o2.∀f2:arrows2 ? o2 o3.
+     map_arrows2 ?? (f2 ∘ f1) = map_arrows2 ?? f2 ∘ map_arrows2 ?? f1}.
+
+definition functor2_setoid: category2 → category2 → setoid3.
+ intros (C1 C2);
+ constructor 1;
+  [ apply (functor2 C1 C2);
+  | constructor 1;
+     [ intros (f g);
+       apply (∀c:C1. cic:/matita/logic/equality/eq.ind#xpointer(1/1) ? (f c) (g c));
+     | simplify; intros; apply cic:/matita/logic/equality/eq.ind#xpointer(1/1/1);
+     | simplify; intros; apply cic:/matita/logic/equality/sym_eq.con; apply H;
+     | simplify; intros; apply cic:/matita/logic/equality/trans_eq.con;
+        [2: apply H; | skip | apply H1;]]]
+qed.
+
+definition functor2_of_functor2_setoid: ∀S,T. functor2_setoid S T → functor2 S T ≝ λS,T,x.x.
+coercion functor2_of_functor2_setoid.
+
+definition CAT2: category3.
+ constructor 1;
+  [ apply category2;
+  | apply functor2_setoid;
+  | intros; constructor 1;
+     [ apply (λx.x);
+     | intros; constructor 1;
+        [ apply (λx.x);
+        | intros; assumption;]
+     | intros; apply rule #;
+     | intros; apply rule #; ]
+  | intros; constructor 1;
+     [ intros; constructor 1;
+        [ intros; apply (c1 (c o));
+        | intros; constructor 1;
+           [ intro; apply (map_arrows2 ?? c1 ?? (map_arrows2 ?? c ?? c2));
+           | intros; apply (††e); ]
+        | intros; simplify;
+          apply (.= †(respects_id2 : ?));
+          apply (respects_id2 : ?);
+        | intros; simplify;
+          apply (.= †(respects_comp2 : ?));
+          apply (respects_comp2 : ?); ]
+        | intros; intro; simplify;
+          apply (cic:/matita/logic/equality/eq_ind.con ????? (e ?));
+          apply (cic:/matita/logic/equality/eq_ind.con ????? (e1 ?));
+          constructor 1; ]
+        | intros; intro; simplify; constructor 1;
+        | intros; intro; simplify; constructor 1;
+        | intros; intro; simplify; constructor 1; ]
+qed.
+
+definition category2_of_objs3_CAT2: objs3 CAT2 → category2 ≝ λx.x.
+coercion category2_of_objs3_CAT2.
+
+definition functor2_setoid_of_arrows3_CAT2: ∀S,T. arrows3 CAT2 S T → functor2_setoid S T ≝ λS,T,x.x.
+coercion functor2_setoid_of_arrows3_CAT2.
+
+definition unary_morphism_setoid: setoid → setoid → setoid.
+ intros;
+ constructor 1;
+  [ apply (unary_morphism s s1);
+  | constructor 1;
+     [ intros (f g); apply (∀a:s. eq ? (f a) (g a));
+     | intros 1; simplify; intros; apply refl;
+     | simplify; intros; apply sym; apply f;
+     | simplify; intros; apply trans; [2: apply f; | skip | apply f1]]]
+qed.
+
+definition SET: category1.
+ constructor 1;
+  [ apply setoid;
+  | apply rule (λS,T:setoid.setoid1_of_setoid (unary_morphism_setoid S T));
+  | intros; constructor 1; [ apply (λx:carr o.x); | intros; assumption ]
+  | intros; constructor 1; [ intros; constructor 1; [ apply (λx. c1 (c x)); | intros;
+     apply († (†e));]
+  | intros; whd; intros; simplify; whd in H1; whd in H;
+    apply trans; [ apply (b (a' a1)); | lapply (prop1 ?? b (a a1) (a' a1));
+     [ apply Hletin | apply (e a1); ]  | apply e1; ]]
+  | intros; whd; intros; simplify; apply refl;
+  | intros; simplify; whd; intros; simplify; apply refl;
+  | intros; simplify; whd; intros; simplify; apply refl;
+  ]
+qed.
+
+definition setoid_of_SET: objs1 SET → setoid ≝ λx.x.
+coercion setoid_of_SET.
+
+definition unary_morphism_setoid_of_arrows1_SET: 
+  ∀P,Q.arrows1 SET P Q → unary_morphism_setoid P Q  ≝ λP,Q,x.x.
+coercion unary_morphism_setoid_of_arrows1_SET.
+
+notation "hbox(a break ⇒ b)" right associative with precedence 20 for @{ 'Imply $a $b }.
+interpretation "unary morphism" 'Imply a b = (arrows1 SET a b).
+
+definition unary_morphism1_setoid1: setoid1 → setoid1 → setoid1.
+ intros;
+ constructor 1;
+  [ apply (unary_morphism1 s s1);
+  | constructor 1;
+     [ intros (f g);
+       alias symbol "eq" = "setoid1 eq".
+       apply (∀a: carr1 s. f a = g a);
+     | intros 1; simplify; intros; apply refl1;
+     | simplify; intros; apply sym1; apply f;
+     | simplify; intros; apply trans1; [2: apply f; | skip | apply f1]]]
+qed.
+
+definition unary_morphism1_of_unary_morphism1_setoid1 : 
+  ∀S,T. unary_morphism1_setoid1 S T → unary_morphism1 S T ≝ λP,Q,x.x.
+coercion unary_morphism1_of_unary_morphism1_setoid1.
+
+definition SET1: objs3 CAT2.
+ constructor 1;
+  [ apply setoid1;
+  | apply rule (λS,T.setoid2_of_setoid1 (unary_morphism1_setoid1 S T));
+  | intros; constructor 1; [ apply (λx.x); | intros; assumption ]
+  | intros; constructor 1; [ intros; constructor 1; [ apply (λx. c1 (c x)); | intros;
+     apply († (†e));]
+  | intros; whd; intros; simplify; whd in H1; whd in H;
+    apply trans1; [ apply (b (a' a1)); | lapply (prop11 ?? b (a a1) (a' a1));
+     [ apply Hletin | apply (e a1); ]  | apply e1; ]]
+  | intros; whd; intros; simplify; apply refl1;
+  | intros; simplify; whd; intros; simplify; apply refl1;
+  | intros; simplify; whd; intros; simplify; apply refl1;
+  ]
+qed.
+
+definition setoid1_of_SET1: objs2 SET1 → setoid1 ≝ λx.x.
+coercion setoid1_of_SET1.
+
+definition unary_morphism1_setoid1_of_arrows2_SET1: 
+  ∀P,Q.arrows2 SET1 P Q → unary_morphism1_setoid1 P Q ≝ λP,Q,x.x.
+coercion unary_morphism1_setoid1_of_arrows2_SET1.
+variant objs2_of_category1: objs1 SET → objs2 SET1 ≝ setoid1_of_setoid.
+coercion objs2_of_category1.
+
+prefer coercion Type_OF_setoid. (* we prefer the lower carrier projection *)
+prefer coercion Type_OF_objs1.
+
+interpretation "unary morphism1" 'Imply a b = (arrows2 SET1 a b).
diff --git a/helm/software/matita/contribs/formal_topology/overlap/concrete_spaces.ma b/helm/software/matita/contribs/formal_topology/overlap/concrete_spaces.ma
new file mode 100644 (file)
index 0000000..791af46
--- /dev/null
@@ -0,0 +1,109 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "basic_pairs.ma".
+
+(* carr1 e' necessario perche' ci sega via la coercion per gli oggetti di REL!
+   (confondendola con la coercion per gli oggetti di SET *)
+record concrete_space : Type1 ≝
+ { bp:> BP;
+   converges: ∀a: carr1 (concr bp).∀U,V: carr1 (form bp). a ⊩ U → a ⊩ V → a ⊩ (U ↓ V);
+   all_covered: ∀x: carr1 (concr bp). x ⊩ form bp
+ }.
+
+record convergent_relation_pair (CS1,CS2: concrete_space) : Type1 ≝
+ { rp:> arrows1 ? CS1 CS2;
+   respects_converges:
+    ∀b,c.
+     minus_image ?? rp \sub\c (BPextS CS2 (b ↓ c)) =
+     BPextS CS1 ((minus_image ?? rp \sub\f b) ↓ (minus_image ?? rp \sub\f c));
+   respects_all_covered:
+    minus_image ?? rp\sub\c (BPextS CS2 (full_subset (form CS2))) = BPextS CS1 (full_subset (form CS1))
+ }.
+(*
+definition convergent_relation_space_setoid: concrete_space → concrete_space → setoid1.
+ intros;
+ constructor 1;
+  [ apply (convergent_relation_pair c c1)
+  | constructor 1;
+     [ intros;
+       apply (relation_pair_equality c c1 c2 c3);
+     | intros 1; apply refl1;
+     | intros 2; apply sym1; 
+     | intros 3; apply trans1]]
+qed.
+
+definition convergent_relation_space_composition:
+ ∀o1,o2,o3: concrete_space.
+  binary_morphism1
+   (convergent_relation_space_setoid o1 o2)
+   (convergent_relation_space_setoid o2 o3)
+   (convergent_relation_space_setoid o1 o3).
+ intros; constructor 1;
+     [ intros; whd in c c1 ⊢ %;
+       constructor 1;
+        [ apply (fun1 ??? (comp1 BP ???)); [apply (bp o2) |*: apply rp; assumption]
+        | intros;
+          change in ⊢ (? ? ? (? ? ? (? ? ? %) ?) ?) with (c1 \sub \c ∘ c \sub \c);
+          change in ⊢ (? ? ? ? (? ? ? ? (? ? ? ? ? (? ? ? (? ? ? %) ?) ?)))
+            with (c1 \sub \f ∘ c \sub \f);
+          change in ⊢ (? ? ? ? (? ? ? ? (? ? ? ? ? ? (? ? ? (? ? ? %) ?))))
+            with (c1 \sub \f ∘ c \sub \f);
+          apply (.= (extS_com ??????));
+          apply (.= (†(respects_converges ?????)));
+          apply (.= (respects_converges ?????));
+          apply (.= (†(((extS_com ??????) \sup -1)‡(extS_com ??????)\sup -1)));
+          apply refl1;
+        | change in ⊢ (? ? ? (? ? ? (? ? ? %) ?) ?) with (c1 \sub \c ∘ c \sub \c);
+          apply (.= (extS_com ??????));
+          apply (.= (†(respects_all_covered ???)));
+          apply (.= respects_all_covered ???);
+          apply refl1]
+     | intros;
+       change with (b ∘ a = b' ∘ a');
+       change in H with (rp'' ?? a = rp'' ?? a');
+       change in H1 with (rp'' ?? b = rp ?? b');
+       apply (.= (H‡H1));
+       apply refl1]
+qed.
+
+definition CSPA: category1.
+ constructor 1;
+  [ apply concrete_space
+  | apply convergent_relation_space_setoid
+  | intro; constructor 1;
+     [ apply id1
+     | intros;
+       unfold id; simplify;
+       apply (.= (equalset_extS_id_X_X ??));
+       apply (.= (†((equalset_extS_id_X_X ??)\sup -1‡
+                    (equalset_extS_id_X_X ??)\sup -1)));
+       apply refl1;
+     | apply (.= (equalset_extS_id_X_X ??));
+       apply refl1]
+  | apply convergent_relation_space_composition
+  | intros; simplify;
+    change with (a34 ∘ (a23 ∘ a12) = (a34 ∘ a23) ∘ a12);
+    apply (.= ASSOC1);
+    apply refl1
+  | intros; simplify;
+    change with (a ∘ id1 ? o1 = a);
+    apply (.= id_neutral_right1 ????);
+    apply refl1
+  | intros; simplify;
+    change with (id1 ? o2 ∘ a = a);
+    apply (.= id_neutral_left1 ????);
+    apply refl1]
+qed.
+*)
\ No newline at end of file
diff --git a/helm/software/matita/contribs/formal_topology/overlap/concrete_spaces_to_o-concrete_spaces.ma b/helm/software/matita/contribs/formal_topology/overlap/concrete_spaces_to_o-concrete_spaces.ma
new file mode 100644 (file)
index 0000000..40670ba
--- /dev/null
@@ -0,0 +1,49 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "concrete_spaces.ma".
+include "o-concrete_spaces.ma".
+include "basic_pairs_to_o-basic_pairs.ma".
+
+(* Qui, per fare le cose per bene, ci serve la nozione di funtore categorico *)
+definition o_concrete_space_of_concrete_space: cic:/matita/formal_topology/concrete_spaces/concrete_space.ind#xpointer(1/1) → concrete_space.
+ intro;
+ constructor 1;
+  [ apply (o_basic_pair_of_basic_pair (bp c));
+  | lapply depth=0 (downarrow c);
+    constructor 1;
+     [ apply 
+     |
+    apply (o_operator_of_operator);fintersectsS);
+  |
+  |
+  |
+  |
+  |
+  ]
+qed.
+
+definition o_convergent_relation_pair_of_convergent_relation_pair:
+ ∀BP1,BP2.cic:/matita/formal_topology/concrete_spaces/convergent_relation_pair.ind#xpointer(1/1) BP1 BP2 →
+  convergent_relation_pair (o_concrete_space_of_concrete_space BP1) (o_concrete_space_of_concrete_space BP2).
+ intros;
+ constructor 1;
+  [ apply (orelation_of_relation ?? (r \sub \c));
+  | apply (orelation_of_relation ?? (r \sub \f));
+  | lapply (commute ?? r);
+    lapply (orelation_of_relation_preserves_equality ???? Hletin);
+    apply (.= (orelation_of_relation_preserves_composition (concr BP1) ??? (rel BP2)) ^ -1);
+    apply (.= (orelation_of_relation_preserves_equality ???? (commute ?? r)));
+    apply (orelation_of_relation_preserves_composition ?? (form BP2)  (rel BP1) ?); ]
+qed.
diff --git a/helm/software/matita/contribs/formal_topology/overlap/cprop_connectives.ma b/helm/software/matita/contribs/formal_topology/overlap/cprop_connectives.ma
new file mode 100644 (file)
index 0000000..a1faba3
--- /dev/null
@@ -0,0 +1,192 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "logic/connectives.ma".
+
+definition Type4 : Type := Type.
+definition Type3 : Type4 := Type.
+definition Type2 : Type3 := Type.
+definition Type1 : Type2 := Type.
+definition Type0 : Type1 := Type.
+
+definition Type_of_Type0: Type0 → Type := λx.x.
+definition Type_of_Type1: Type1 → Type := λx.x.
+definition Type_of_Type2: Type2 → Type := λx.x.
+definition Type_of_Type3: Type3 → Type := λx.x.
+definition Type_of_Type4: Type4 → Type := λx.x.
+coercion Type_of_Type0.
+coercion Type_of_Type1.
+coercion Type_of_Type2.
+coercion Type_of_Type3.
+coercion Type_of_Type4.
+
+definition CProp0 : Type1 := Type0.
+definition CProp1 : Type2 := Type1.
+definition CProp2 : Type3 := Type2.
+definition CProp3 : Type4 := Type3.
+definition CProp_of_CProp0: CProp0 → CProp ≝ λx.x.
+definition CProp_of_CProp1: CProp1 → CProp ≝ λx.x.
+definition CProp_of_CProp2: CProp2 → CProp ≝ λx.x.
+definition CProp_of_CProp3: CProp3 → CProp ≝ λx.x.
+coercion CProp_of_CProp0.
+coercion CProp_of_CProp1.
+coercion CProp_of_CProp2.
+coercion CProp_of_CProp3.
+
+inductive Or (A,B:CProp0) : CProp0 ≝
+ | Left : A → Or A B
+ | Right : B → Or A B.
+
+interpretation "constructive or" 'or x y = (Or x y).
+
+inductive Or3 (A,B,C:CProp0) : CProp0 ≝
+ | Left3 : A → Or3 A B C
+ | Middle3 : B → Or3 A B C
+ | Right3 : C → Or3 A B C.
+
+interpretation "constructive ternary or" 'or3 x y z= (Or3 x y z).
+
+notation < "hvbox(a break ∨ b break ∨ c)" with precedence 35 for @{'or3 $a $b $c}.
+
+inductive Or4 (A,B,C,D:CProp0) : CProp0 ≝
+ | Left3 : A → Or4 A B C D
+ | Middle3 : B → Or4 A B C D
+ | Right3 : C → Or4 A B C D
+ | Extra3: D → Or4 A B C D.
+
+interpretation "constructive ternary or" 'or4 x y z t = (Or4 x y z t).
+
+notation < "hvbox(a break ∨ b break ∨ c break ∨ d)" with precedence 35 for @{'or4 $a $b $c $d}.
+
+inductive And (A,B:CProp0) : CProp0 ≝
+ | Conj : A → B → And A B.
+interpretation "constructive and" 'and x y = (And x y).
+
+inductive And3 (A,B,C:CProp0) : CProp0 ≝
+ | Conj3 : A → B → C → And3 A B C.
+
+notation < "hvbox(a break ∧ b break ∧ c)" with precedence 35 for @{'and3 $a $b $c}.
+interpretation "constructive ternary and" 'and3 x y z = (And3 x y z).
+
+inductive And42 (A,B,C,D:CProp2) : CProp2 ≝
+ | Conj42 : A → B → C → D → And42 A B C D.
+
+notation < "hvbox(a break ∧ b break ∧ c break ∧ d)" with precedence 35 for @{'and4 $a $b $c $d}.
+interpretation "constructive quaternary and2" 'and4 x y z t = (And42 x y z t).
+
+record Iff (A,B:CProp0) : CProp0 ≝
+ { if: A → B;
+   fi: B → A
+ }.
+record Iff1 (A,B:CProp1) : CProp1 ≝
+ { if1: A → B;
+   fi1: B → A
+ }.
+notation "hvbox(a break ⇔ b)" right associative with precedence 25 for @{'iff1 $a $b}.
+interpretation "logical iff" 'iff x y = (Iff x y).
+interpretation "logical iff type1" 'iff1 x y = (Iff1 x y).
+
+inductive exT22 (A:Type2) (P:A→CProp2) : CProp2 ≝
+  ex_introT22: ∀w:A. P w → exT22 A P.
+  
+interpretation "CProp2 exists" 'exists \eta.x = (exT22 ? x).
+
+definition pi1exT22 ≝ λA,P.λx:exT22 A P.match x with [ex_introT22 x _ ⇒ x].
+definition pi2exT22 ≝ 
+  λA,P.λx:exT22 A P.match x return λx.P (pi1exT22 ?? x) with [ex_introT22 _ p ⇒ p].
+  
+interpretation "exT22 \fst" 'pi1 = (pi1exT22 ? ?).
+interpretation "exT22 \snd" 'pi2 = (pi2exT22 ? ?).
+interpretation "exT22 \fst a" 'pi1a x = (pi1exT22 ? ? x).
+interpretation "exT22 \snd a" 'pi2a x = (pi2exT22 ? ? x).
+interpretation "exT22 \fst b" 'pi1b x y = (pi1exT22 ? ? x y).
+interpretation "exT22 \snd b" 'pi2b x y = (pi2exT22 ? ? x y).
+
+inductive exT (A:Type0) (P:A→CProp0) : CProp0 ≝
+  ex_introT: ∀w:A. P w → exT A P.
+
+interpretation "CProp exists" 'exists \eta.x = (exT ? x).
+
+notation "\ll term 19 a, break term 19 b \gg" 
+with precedence 90 for @{'dependent_pair $a $b}.
+interpretation "dependent pair" 'dependent_pair a b = 
+  (ex_introT ? ? a b).
+
+
+definition pi1exT ≝ λA,P.λx:exT A P.match x with [ex_introT x _ ⇒ x].
+definition pi2exT ≝ 
+  λA,P.λx:exT A P.match x return λx.P (pi1exT ?? x) with [ex_introT _ p ⇒ p].
+
+interpretation "exT \fst" 'pi1 = (pi1exT ? ?).
+interpretation "exT \fst a" 'pi1a x = (pi1exT ? ? x).
+interpretation "exT \fst b" 'pi1b x y = (pi1exT ? ? x y).
+interpretation "exT \snd" 'pi2 = (pi2exT ? ?).
+interpretation "exT \snd a" 'pi2a x = (pi2exT ? ? x).
+interpretation "exT \snd b" 'pi2b x y = (pi2exT ? ? x y).
+
+inductive exT23 (A:Type0) (P:A→CProp0) (Q:A→CProp0) (R:A→A→CProp0) : CProp0 ≝
+  ex_introT23: ∀w,p:A. P w → Q p → R w p → exT23 A P Q R.
+
+definition pi1exT23 ≝
+  λA,P,Q,R.λx:exT23 A P Q R.match x with [ex_introT23 x _ _ _ _ ⇒ x].
+definition pi2exT23 ≝
+  λA,P,Q,R.λx:exT23 A P Q R.match x with [ex_introT23 _ x _ _ _ ⇒ x].
+
+interpretation "exT2 \fst" 'pi1 = (pi1exT23 ? ? ? ?).
+interpretation "exT2 \snd" 'pi2 = (pi2exT23 ? ? ? ?).   
+interpretation "exT2 \fst a" 'pi1a x = (pi1exT23 ? ? ? ? x).
+interpretation "exT2 \snd a" 'pi2a x = (pi2exT23 ? ? ? ? x).
+interpretation "exT2 \fst b" 'pi1b x y = (pi1exT23 ? ? ? ? x y).
+interpretation "exT2 \snd b" 'pi2b x y = (pi2exT23 ? ? ? ? x y).
+
+inductive exT2 (A:Type0) (P,Q:A→CProp0) : CProp0 ≝
+  ex_introT2: ∀w:A. P w → Q w → exT2 A P Q.
+
+
+definition Not : CProp0 → Prop ≝ λx:CProp.x → False.
+
+interpretation "constructive not" 'not x = (Not x).
+  
+definition cotransitive: ∀C:Type0. ∀lt:C→C→CProp0.CProp0 ≝
+ λC:Type0.λlt:C→C→CProp0.∀x,y,z:C. lt x y → lt x z ∨ lt z y. 
+
+definition coreflexive: ∀C:Type0. ∀lt:C→C→CProp0.CProp0 ≝
+ λC:Type0.λlt:C→C→CProp0. ∀x:C. ¬ (lt x x).
+
+definition symmetric: ∀C:Type0. ∀lt:C→C→CProp0.CProp0 ≝
+ λC:Type0.λlt:C→C→CProp0. ∀x,y:C.lt x y → lt y x.
+
+definition antisymmetric: ∀A:Type0. ∀R:A→A→CProp0. ∀eq:A→A→Prop.CProp0 ≝
+ λA:Type0.λR:A→A→CProp0.λeq:A→A→Prop.∀x:A.∀y:A.R x y→R y x→eq x y.
+
+definition reflexive: ∀C:Type0. ∀lt:C→C→CProp0.CProp0 ≝ λA:Type0.λR:A→A→CProp0.∀x:A.R x x.
+
+definition transitive: ∀C:Type0. ∀lt:C→C→CProp0.CProp0 ≝ λA:Type0.λR:A→A→CProp0.∀x,y,z:A.R x y → R y z → R x z.
+
+definition reflexive1: ∀A:Type1.∀R:A→A→CProp1.CProp1 ≝ λA:Type1.λR:A→A→CProp1.∀x:A.R x x.
+definition symmetric1: ∀A:Type1.∀R:A→A→CProp1.CProp1 ≝ λC:Type1.λlt:C→C→CProp1. ∀x,y:C.lt x y → lt y x.
+definition transitive1: ∀A:Type1.∀R:A→A→CProp1.CProp1 ≝ λA:Type1.λR:A→A→CProp1.∀x,y,z:A.R x y → R y z → R x z.
+
+definition reflexive2: ∀A:Type2.∀R:A→A→CProp2.CProp2 ≝ λA:Type2.λR:A→A→CProp2.∀x:A.R x x.
+definition symmetric2: ∀A:Type2.∀R:A→A→CProp2.CProp2 ≝ λC:Type2.λlt:C→C→CProp2. ∀x,y:C.lt x y → lt y x.
+definition transitive2: ∀A:Type2.∀R:A→A→CProp2.CProp2 ≝ λA:Type2.λR:A→A→CProp2.∀x,y,z:A.R x y → R y z → R x z.
+
+definition reflexive3: ∀A:Type3.∀R:A→A→CProp3.CProp3 ≝ λA:Type3.λR:A→A→CProp3.∀x:A.R x x.
+definition symmetric3: ∀A:Type3.∀R:A→A→CProp3.CProp3 ≝ λC:Type3.λlt:C→C→CProp3. ∀x,y:C.lt x y → lt y x.
+definition transitive3: ∀A:Type3.∀R:A→A→CProp3.CProp3 ≝ λA:Type3.λR:A→A→CProp3.∀x,y,z:A.R x y → R y z → R x z.
diff --git a/helm/software/matita/contribs/formal_topology/overlap/formal_topologies.ma b/helm/software/matita/contribs/formal_topology/overlap/formal_topologies.ma
new file mode 100644 (file)
index 0000000..5b29ace
--- /dev/null
@@ -0,0 +1,96 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "basic_topologies.ma".
+
+
+definition downarrow: ∀S:BTop. unary_morphism (Ω \sup S) (Ω \sup S).
+ intros; constructor 1;
+  [ apply (λU:Ω \sup S.{a | ∃b:carrbt S. b ∈ U ∧ a ∈ A ? (singleton ? b)});
+    intros; simplify; split; intro; cases H1; cases x; exists [1,3: apply w]
+    split; try assumption; [ apply (. H‡#) | apply (. H \sup -1‡#) ] assumption
+  | intros; split; intros 2; cases f; exists; [1,3: apply w] cases x; split;
+    try assumption; [ apply (. #‡H) | apply (. #‡H \sup -1)] assumption]
+qed.
+
+interpretation "downarrow" 'downarrow a = (fun_1 ?? (downarrow ?) a).
+
+definition ffintersects: ∀S:BTop. binary_morphism1 (Ω \sup S) (Ω \sup S) (Ω \sup S).
+ intros; constructor 1;
+  [ apply (λU,V. ↓U ∩ ↓V);
+  | intros; apply (.= (†H)‡(†H1)); apply refl1]
+qed.
+
+interpretation "ffintersects" 'fintersects U V = (fun1 ??? (ffintersects ?) U V).
+
+record formal_topology: Type ≝
+ { bt:> BTop;
+   converges: ∀U,V: Ω \sup bt. A ? (U ↓ V) = A ? U ∩ A ? V
+ }.
+
+
+definition ffintersects': ∀S:BTop. binary_morphism1 S S (Ω \sup S).
+ intros; constructor 1;
+  [ apply (λb,c:S. (singleton S b) ↓ (singleton S c));
+  | intros; apply (.= (†H)‡(†H1)); apply refl1]
+qed.
+
+interpretation "ffintersects'" 'fintersects U V = (fun1 ??? (ffintersects' ?) U V).
+
+record formal_map (S,T: formal_topology) : Type ≝
+ { cr:> continuous_relation_setoid S T;
+   C1: ∀b,c. extS ?? cr (b ↓ c) = ext ?? cr b ↓ ext ?? cr c;
+   C2: extS ?? cr T = S
+ }.
+
+definition formal_map_setoid: formal_topology → formal_topology → setoid1.
+ intros (S T); constructor 1;
+  [ apply (formal_map S T);
+  | constructor 1;
+     [ apply (λf,f1: formal_map S T.f=f1);
+     | simplify; intros 1; apply refl1
+     | simplify; intros 2; apply sym1
+     | simplify; intros 3; apply trans1]]
+qed.
+
+axiom C1':
+ ∀S,T: formal_topology.∀f:formal_map_setoid S T.∀U,V: Ω \sup T.
+  extS ?? f (U ↓ V) = extS ?? f U ↓ extS ?? f V.
+
+definition formal_map_composition:
+ ∀o1,o2,o3: formal_topology.
+  binary_morphism1
+   (formal_map_setoid o1 o2)
+   (formal_map_setoid o2 o3)
+   (formal_map_setoid o1 o3).
+ intros; constructor 1;
+  [ intros; whd in c c1; constructor 1;
+     [ apply (comp1 BTop ??? c c1);
+     | intros;
+       apply (.= (extS_com ??? c c1 ?));
+       apply (.= †(C1 ?????));
+       apply (.= (C1' ?????));
+       apply (.= ((†((extS_singleton ????) \sup -1))‡(†((extS_singleton ????) \sup -1))));
+       apply (.= (extS_com ??????)\sup -1 ‡ (extS_com ??????) \sup -1);
+       apply (.= (extS_singleton ????)‡(extS_singleton ????));
+       apply refl1;
+     | apply (.= (extS_com ??? c c1 ?));
+       apply (.= (†(C2 ???)));
+       apply (.= (C2 ???));
+       apply refl1;]
+  | intros; simplify;
+    change with (comp1 BTop ??? a b = comp1 BTop ??? a' b');
+    apply prop1; assumption]
+qed.
+
diff --git a/helm/software/matita/contribs/formal_topology/overlap/notation.ma b/helm/software/matita/contribs/formal_topology/overlap/notation.ma
new file mode 100644 (file)
index 0000000..87ec0e2
--- /dev/null
@@ -0,0 +1,20 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+notation "hvbox (r \sub \c)"  with precedence 90 for @{'concr_rel $r}.
+notation "hvbox (r \sub \f)"  with precedence 90 for @{'form_rel $r}.
+
+definition hide ≝ λA:Type.λx:A.x.
+
+interpretation "hide" 'hide x = (hide ? x). 
diff --git a/helm/software/matita/contribs/formal_topology/overlap/o-algebra.ma b/helm/software/matita/contribs/formal_topology/overlap/o-algebra.ma
new file mode 100644 (file)
index 0000000..806859a
--- /dev/null
@@ -0,0 +1,444 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "categories.ma".
+
+inductive bool : Type0 := true : bool | false : bool.
+
+lemma BOOL : objs1 SET.
+constructor 1; [apply bool] constructor 1;
+[ intros (x y); apply (match x with [ true ⇒ match y with [ true ⇒ True | _ ⇒ False] | false ⇒ match y with [ true ⇒ False | false ⇒ True ]]);
+| whd; simplify; intros; cases x; apply I;
+| whd; simplify; intros 2; cases x; cases y; simplify; intros; assumption;
+| whd; simplify; intros 3; cases x; cases y; cases z; simplify; intros; 
+  try assumption; apply I]
+qed.
+
+lemma IF_THEN_ELSE_p :
+  ∀S:setoid1.∀a,b:S.∀x,y:BOOL.x = y → 
+    (λm.match m with [ true ⇒ a | false ⇒ b ]) x =
+    (λm.match m with [ true ⇒ a | false ⇒ b ]) y.
+whd in ⊢ (?→?→?→%→?);
+intros; cases x in e; cases y; simplify; intros; try apply refl1; whd in e; cases e;
+qed.
+
+interpretation "unary morphism comprehension with no proof" 'comprehension T P = 
+  (mk_unary_morphism T ? P ?).
+interpretation "unary morphism1 comprehension with no proof" 'comprehension T P = 
+  (mk_unary_morphism1 T ? P ?).
+
+notation > "hvbox({ ident i ∈ s | term 19 p | by })" with precedence 90
+for @{ 'comprehension_by $s (λ${ident i}. $p) $by}.
+notation < "hvbox({ ident i ∈ s | term 19 p })" with precedence 90
+for @{ 'comprehension_by $s (λ${ident i}:$_. $p) $by}.
+
+interpretation "unary morphism comprehension with proof" 'comprehension_by s \eta.f p = 
+  (mk_unary_morphism s ? f p).
+interpretation "unary morphism1 comprehension with proof" 'comprehension_by s \eta.f p = 
+  (mk_unary_morphism1 s ? f p).
+
+(* per il set-indexing vedere capitolo BPTools (foundational tools), Sect. 0.3.4 complete
+   lattices, Definizione 0.9 *)
+(* USARE L'ESISTENZIALE DEBOLE *)
+record OAlgebra : Type2 := {
+  oa_P :> SET1;
+  oa_leq : binary_morphism1 oa_P oa_P CPROP;
+  oa_overlap: binary_morphism1 oa_P oa_P CPROP;
+  oa_meet: ∀I:SET.unary_morphism2 (I ⇒ oa_P) oa_P;
+  oa_join: ∀I:SET.unary_morphism2 (I ⇒ oa_P) oa_P;
+  oa_one: oa_P;
+  oa_zero: oa_P;
+  oa_leq_refl: ∀a:oa_P. oa_leq a a; 
+  oa_leq_antisym: ∀a,b:oa_P.oa_leq a b → oa_leq b a → a = b;
+  oa_leq_trans: ∀a,b,c:oa_P.oa_leq a b → oa_leq b c → oa_leq a c;
+  oa_overlap_sym: ∀a,b:oa_P.oa_overlap a b → oa_overlap b a;
+  oa_meet_inf: 
+    ∀I:SET.∀p_i:I ⇒ oa_P.∀p:oa_P.
+      oa_leq p (oa_meet I p_i) = (∀i:I.oa_leq p (p_i i));
+  oa_join_sup: ∀I:SET.∀p_i:I ⇒ oa_P.∀p:oa_P.oa_leq (oa_join I p_i) p = (∀i:I.oa_leq (p_i i) p);
+  oa_zero_bot: ∀p:oa_P.oa_leq oa_zero p;
+  oa_one_top: ∀p:oa_P.oa_leq p oa_one;
+  oa_overlap_preserves_meet_: 
+      ∀p,q:oa_P.oa_overlap p q → oa_overlap p 
+       (oa_meet ? { x ∈ BOOL | match x with [ true ⇒ p | false ⇒ q ] | IF_THEN_ELSE_p oa_P p q });
+  oa_join_split:
+      ∀I:SET.∀p.∀q:I ⇒ oa_P.
+       oa_overlap p (oa_join I q) = (∃i:I.oa_overlap p (q i));
+  (*oa_base : setoid;
+  1) enum non e' il nome giusto perche' non e' suriettiva
+  2) manca (vedere altro capitolo) la "suriettivita'" come immagine di insiemi di oa_base
+  oa_enum : ums oa_base oa_P;
+  oa_density: ∀p,q.(∀i.oa_overlap p (oa_enum i) → oa_overlap q (oa_enum i)) → oa_leq p q
+  *)
+  oa_density: 
+      ∀p,q.(∀r.oa_overlap p r → oa_overlap q r) → oa_leq p q
+}.
+
+interpretation "o-algebra leq" 'leq a b = (fun21 ??? (oa_leq ?) a b).
+
+notation "hovbox(a mpadded width -150% (>)< b)" non associative with precedence 45
+for @{ 'overlap $a $b}.
+interpretation "o-algebra overlap" 'overlap a b = (fun21 ??? (oa_overlap ?) a b).
+
+notation < "hovbox(mstyle scriptlevel 1 scriptsizemultiplier 1.7 (∧) \below (\emsp) \nbsp term 90 p)" 
+non associative with precedence 50 for @{ 'oa_meet $p }.
+notation < "hovbox(mstyle scriptlevel 1 scriptsizemultiplier 1.7 (∧) \below (ident i ∈  I) break term 90 p)" 
+non associative with precedence 50 for @{ 'oa_meet_mk (λ${ident i}:$I.$p) }.
+
+notation > "hovbox(∧ f)" non associative with precedence 60
+for @{ 'oa_meet $f }.
+interpretation "o-algebra meet" 'oa_meet f = 
+  (fun12 ?? (oa_meet ??) f).
+interpretation "o-algebra meet with explicit function" 'oa_meet_mk f = 
+  (fun12 ?? (oa_meet ??) (mk_unary_morphism ?? f ?)).
+
+notation < "hovbox(mstyle scriptlevel 1 scriptsizemultiplier 1.7 (∨) \below (\emsp) \nbsp term 90 p)" 
+non associative with precedence 50 for @{ 'oa_join $p }.
+notation < "hovbox(mstyle scriptlevel 1 scriptsizemultiplier 1.7 (∨) \below (ident i ∈  I) break term 90 p)" 
+non associative with precedence 50 for @{ 'oa_join_mk (λ${ident i}:$I.$p) }.
+
+notation > "hovbox(∨ f)" non associative with precedence 60
+for @{ 'oa_join $f }.
+interpretation "o-algebra join" 'oa_join f = 
+  (fun12 ?? (oa_join ??) f).
+interpretation "o-algebra join with explicit function" 'oa_join_mk f = 
+  (fun12 ?? (oa_join ??) (mk_unary_morphism ?? f ?)).
+
+definition binary_meet : ∀O:OAlgebra. binary_morphism1 O O O.
+intros; split;
+[ intros (p q); 
+  apply (∧ { x ∈ BOOL | match x with [ true ⇒ p | false ⇒ q ] | IF_THEN_ELSE_p ? p q });
+| intros; lapply (prop12 ? O (oa_meet O BOOL));
+   [2: apply ({ x ∈ BOOL | match x with [ true ⇒ a | false ⇒ b ] | IF_THEN_ELSE_p ? a b });
+   |3: apply ({ x ∈ BOOL | match x with [ true ⇒ a' | false ⇒ b' ] | IF_THEN_ELSE_p ? a' b' });
+   | apply Hletin;]
+  intro x; simplify; cases x; simplify; assumption;]
+qed.
+
+interpretation "o-algebra binary meet" 'and a b = 
+  (fun21 ??? (binary_meet ?) a b).
+
+prefer coercion Type1_OF_OAlgebra.
+
+definition binary_join : ∀O:OAlgebra. binary_morphism1 O O O.
+intros; split;
+[ intros (p q); 
+  apply (∨ { x ∈ BOOL | match x with [ true ⇒ p | false ⇒ q ] | IF_THEN_ELSE_p ? p q });
+| intros; lapply (prop12 ? O (oa_join O BOOL));
+   [2: apply ({ x ∈ BOOL | match x with [ true ⇒ a | false ⇒ b ] | IF_THEN_ELSE_p ? a b });
+   |3: apply ({ x ∈ BOOL | match x with [ true ⇒ a' | false ⇒ b' ] | IF_THEN_ELSE_p ? a' b' });
+   | apply Hletin;]
+  intro x; simplify; cases x; simplify; assumption;]
+qed.
+
+interpretation "o-algebra binary join" 'or a b = 
+  (fun21 ??? (binary_join ?) a b).
+
+lemma oa_overlap_preservers_meet: ∀O:OAlgebra.∀p,q:O.p >< q → p >< (p ∧ q).
+(* next change to avoid universe inconsistency *)
+change in ⊢ (?→%→%→?) with (Type1_OF_OAlgebra O);
+intros;  lapply (oa_overlap_preserves_meet_ O p q f);
+lapply (prop21 O O CPROP (oa_overlap O) p p ? (p ∧ q) # ?);
+[3: apply (if ?? (Hletin1)); apply Hletin;|skip] apply refl1;
+qed.
+
+notation < "hovbox(mstyle scriptlevel 1 scriptsizemultiplier 1.7 (∨) \below (\emsp) \nbsp term 90 p)" 
+non associative with precedence 49 for @{ 'oa_join $p }.
+notation < "hovbox(mstyle scriptlevel 1 scriptsizemultiplier 1.7 (∨) \below (ident i ∈  I) break term 90 p)" 
+non associative with precedence 49 for @{ 'oa_join_mk (λ${ident i}:$I.$p) }.
+notation < "hovbox(a ∨ b)" left associative with precedence 49
+for @{ 'oa_join_mk (λ${ident i}:$_.match $i with [ true ⇒ $a | false ⇒ $b ]) }.
+
+notation > "hovbox(∨ f)" non associative with precedence 59
+for @{ 'oa_join $f }.
+notation > "hovbox(a ∨ b)" left associative with precedence 49
+for @{ 'oa_join (mk_unary_morphism BOOL ? (λx__:bool.match x__ with [ true ⇒ $a | false ⇒ $b ]) (IF_THEN_ELSE_p ? $a $b)) }.
+
+interpretation "o-algebra join" 'oa_join f = 
+  (fun12 ?? (oa_join ??) f).
+interpretation "o-algebra join with explicit function" 'oa_join_mk f = 
+  (fun12 ?? (oa_join ??) (mk_unary_morphism ?? f ?)).
+
+record ORelation (P,Q : OAlgebra) : Type2 ≝ {
+  or_f_ : carr2 (P ⇒ Q);
+  or_f_minus_star_ : carr2(P ⇒ Q);
+  or_f_star_ : carr2(Q ⇒ P);
+  or_f_minus_ : carr2(Q ⇒ P);
+  or_prop1_ : ∀p,q. (or_f_ p ≤ q) = (p ≤ or_f_star_ q);
+  or_prop2_ : ∀p,q. (or_f_minus_ p ≤ q) = (p ≤ or_f_minus_star_ q);
+  or_prop3_ : ∀p,q. (or_f_ p >< q) = (p >< or_f_minus_ q)
+}.
+
+definition ORelation_setoid : OAlgebra → OAlgebra → setoid2.
+intros (P Q);
+constructor 1;
+[ apply (ORelation P Q);
+| constructor 1;
+   (* tenere solo una uguaglianza e usare la proposizione 9.9 per
+      le altre (unicita' degli aggiunti e del simmetrico) *)
+   [ apply (λp,q. And42 
+             (or_f_minus_star_ ?? p = or_f_minus_star_ ?? q) 
+             (or_f_minus_ ?? p = or_f_minus_ ?? q) 
+             (or_f_ ?? p = or_f_ ?? q) 
+             (or_f_star_ ?? p = or_f_star_ ?? q)); 
+   | whd; simplify; intros; repeat split; intros; apply refl2;
+   | whd; simplify; intros; cases a; clear a; split; 
+     intro a; apply sym1; generalize in match a;assumption;
+   | whd; simplify; intros; cases a; cases a1; clear a a1; split; intro a;
+     [ apply (.= (e a)); apply e4;
+     | apply (.= (e1 a)); apply e5;
+     | apply (.= (e2 a)); apply e6;
+     | apply (.= (e3 a)); apply e7;]]]
+qed.
+
+definition ORelation_of_ORelation_setoid : 
+  ∀P,Q.ORelation_setoid P Q → ORelation P Q ≝ λP,Q,x.x.
+coercion ORelation_of_ORelation_setoid.
+
+definition or_f_minus_star:
+ ∀P,Q:OAlgebra.unary_morphism2 (ORelation_setoid P Q) (P ⇒ Q).
+ intros; constructor 1;
+  [ apply or_f_minus_star_;
+  | intros; cases e; assumption]
+qed.
+
+definition or_f: ∀P,Q:OAlgebra.unary_morphism2 (ORelation_setoid P Q) (P ⇒ Q).
+ intros; constructor 1;
+  [ apply or_f_;
+  | intros; cases e; assumption]
+qed.
+
+definition or_f_minus: ∀P,Q:OAlgebra.unary_morphism2 (ORelation_setoid P Q) (Q ⇒ P).
+ intros; constructor 1;
+  [ apply or_f_minus_;
+  | intros; cases e; assumption]
+qed.
+
+definition or_f_star: ∀P,Q:OAlgebra.unary_morphism2 (ORelation_setoid P Q) (Q ⇒ P).
+ intros; constructor 1;
+  [ apply or_f_star_;
+  | intros; cases e; assumption]
+qed.
+
+lemma arrows1_of_ORelation_setoid : ∀P,Q. ORelation_setoid P Q → (P ⇒ Q). 
+intros; apply (or_f ?? c);
+qed.
+coercion arrows1_of_ORelation_setoid.
+
+notation "r \sup *" non associative with precedence 90 for @{'OR_f_star $r}.
+notation > "r *" non associative with precedence 90 for @{'OR_f_star $r}.
+
+notation "r \sup (⎻* )" non associative with precedence 90 for @{'OR_f_minus_star $r}.
+notation > "r⎻*" non associative with precedence 90 for @{'OR_f_minus_star $r}.
+
+notation "r \sup ⎻" non associative with precedence 90 for @{'OR_f_minus $r}.
+notation > "r⎻" non associative with precedence 90 for @{'OR_f_minus $r}.
+
+interpretation "o-relation f⎻*" 'OR_f_minus_star r = (fun12 ?? (or_f_minus_star ? ?) r).
+interpretation "o-relation f⎻" 'OR_f_minus r = (fun12 ?? (or_f_minus ? ?) r).
+interpretation "o-relation f*" 'OR_f_star r = (fun12 ?? (or_f_star ? ?) r).
+
+definition or_prop1 : ∀P,Q:OAlgebra.∀F:ORelation_setoid P Q.∀p,q.
+   (F p ≤ q) = (p ≤ F* q).
+intros; apply (or_prop1_ ?? F p q);
+qed.
+
+definition or_prop2 : ∀P,Q:OAlgebra.∀F:ORelation_setoid P Q.∀p,q.
+   (F⎻ p ≤ q) = (p ≤ F⎻* q).
+intros; apply (or_prop2_ ?? F p q);
+qed.
+
+definition or_prop3 : ∀P,Q:OAlgebra.∀F:ORelation_setoid P Q.∀p,q.
+   (F p >< q) = (p >< F⎻ q).
+intros; apply (or_prop3_ ?? F p q);
+qed.
+
+definition ORelation_composition : ∀P,Q,R. 
+  binary_morphism2 (ORelation_setoid P Q) (ORelation_setoid Q R) (ORelation_setoid P R).
+intros;
+constructor 1;
+[ intros (F G);
+  constructor 1;
+  [ apply (G ∘ F);
+  | apply rule (G⎻* ∘ F⎻* );
+  | apply (F* ∘ G* );
+  | apply (F⎻ ∘ G⎻);
+  | intros; 
+    change with ((G (F p) ≤ q) = (p ≤ (F* (G* q))));
+    apply (.= (or_prop1 :?));
+    apply (or_prop1 :?);
+  | intros;
+    change with ((F⎻ (G⎻ p) ≤ q) = (p ≤ (G⎻* (F⎻* q))));
+    apply (.= (or_prop2 :?));
+    apply or_prop2 ; 
+  | intros; change with ((G (F (p)) >< q) = (p >< (F⎻ (G⎻ q))));
+    apply (.= (or_prop3 :?));
+    apply or_prop3;
+  ]
+| intros; split; simplify; 
+   [3: unfold arrows1_of_ORelation_setoid; apply ((†e)‡(†e1));
+   |1: apply ((†e)‡(†e1));
+   |2,4: apply ((†e1)‡(†e));]]
+qed.
+
+definition OA : category2.
+split;
+[ apply (OAlgebra);
+| intros; apply (ORelation_setoid o o1);
+| intro O; split;
+  [1,2,3,4: apply id2;
+  |5,6,7:intros; apply refl1;] 
+| apply ORelation_composition;
+| intros (P Q R S F G H); split;
+   [ change with (H⎻* ∘ G⎻* ∘ F⎻* = H⎻* ∘ (G⎻* ∘ F⎻* ));
+     apply (comp_assoc2 ????? (F⎻* ) (G⎻* ) (H⎻* ));
+   | apply ((comp_assoc2 ????? (H⎻) (G⎻) (F⎻))^-1);
+   | apply ((comp_assoc2 ????? F G H)^-1);
+   | apply ((comp_assoc2 ????? H* G* F* ));]
+| intros; split; unfold ORelation_composition; simplify; apply id_neutral_left2;
+| intros; split; unfold ORelation_composition; simplify; apply id_neutral_right2;]
+qed.
+
+definition OAlgebra_of_objs2_OA: objs2 OA → OAlgebra ≝ λx.x.
+coercion OAlgebra_of_objs2_OA.
+
+definition ORelation_setoid_of_arrows2_OA: 
+  ∀P,Q. arrows2 OA P Q → ORelation_setoid P Q ≝ λP,Q,c.c.
+coercion ORelation_setoid_of_arrows2_OA.
+
+prefer coercion Type_OF_objs2.
+
+(* alias symbol "eq" = "setoid1 eq". *)
+
+(* qui la notazione non va *)
+lemma leq_to_eq_join: ∀S:OA.∀p,q:S. p ≤ q → q = (binary_join ? p q).
+ intros;
+ apply oa_leq_antisym;
+  [ apply oa_density; intros;
+    apply oa_overlap_sym;
+    unfold binary_join; simplify;
+    apply (. (oa_join_split : ?));
+    exists; [ apply false ]
+    apply oa_overlap_sym;
+    assumption
+  | unfold binary_join; simplify;
+    apply (. (oa_join_sup : ?)); intro;
+    cases i; whd in ⊢ (? ? ? ? ? % ?);
+     [ assumption | apply oa_leq_refl ]]
+qed.
+
+lemma overlap_monotone_left: ∀S:OA.∀p,q,r:S. p ≤ q → p >< r → q >< r.
+ intros;
+ apply (. (leq_to_eq_join : ?)‡#);
+  [ apply f;
+  | skip
+  | apply oa_overlap_sym;
+    unfold binary_join; simplify;
+    apply (. (oa_join_split : ?));
+    exists [ apply true ]
+    apply oa_overlap_sym;
+    assumption; ]
+qed.
+
+(* Part of proposition 9.9 *)
+lemma f_minus_image_monotone: ∀S,T.∀R:arrows2 OA S T.∀p,q. p ≤ q → R⎻ p ≤ R⎻ q.
+ intros;
+ apply (. (or_prop2 : ?));
+ apply oa_leq_trans; [2: apply f; | skip | apply (. (or_prop2 : ?)^ -1); apply oa_leq_refl;]
+qed.
+(* Part of proposition 9.9 *)
+lemma f_minus_star_image_monotone: ∀S,T.∀R:arrows2 OA S T.∀p,q. p ≤ q → R⎻* p ≤ R⎻* q.
+ intros;
+ apply (. (or_prop2 : ?)^ -1);
+ apply oa_leq_trans; [3: apply f; | skip | apply (. (or_prop2 : ?)); apply oa_leq_refl;]
+qed.
+
+(* Part of proposition 9.9 *)
+lemma f_image_monotone: ∀S,T.∀R:arrows2 OA S T.∀p,q. p ≤ q → R p ≤ R q.
+ intros;
+ apply (. (or_prop1 : ?));
+ apply oa_leq_trans; [2: apply f; | skip | apply (. (or_prop1 : ?)^ -1); apply oa_leq_refl;]
+qed.
+
+(* Part of proposition 9.9 *)
+lemma f_star_image_monotone: ∀S,T.∀R:arrows2 OA S T.∀p,q. p ≤ q → R* p ≤ R* q.
+ intros;
+ apply (. (or_prop1 : ?)^ -1);
+ apply oa_leq_trans; [3: apply f; | skip | apply (. (or_prop1 : ?)); apply oa_leq_refl;]
+qed.
+
+lemma lemma_10_2_a: ∀S,T.∀R:arrows2 OA S T.∀p. p ≤ R⎻* (R⎻ p).
+ intros;
+ apply (. (or_prop2 : ?)^-1);
+ apply oa_leq_refl.
+qed.
+
+lemma lemma_10_2_b: ∀S,T.∀R:arrows2 OA S T.∀p. R⎻ (R⎻* p) ≤ p.
+ intros;
+ apply (. (or_prop2 : ?));
+ apply oa_leq_refl.
+qed.
+
+lemma lemma_10_2_c: ∀S,T.∀R:arrows2 OA S T.∀p. p ≤ R* (R p).
+ intros;
+ apply (. (or_prop1 : ?)^-1);
+ apply oa_leq_refl.
+qed.
+
+lemma lemma_10_2_d: ∀S,T.∀R:arrows2 OA S T.∀p. R (R* p) ≤ p.
+ intros;
+ apply (. (or_prop1 : ?));
+ apply oa_leq_refl.
+qed.
+
+lemma lemma_10_3_a: ∀S,T.∀R:arrows2 OA S T.∀p. R⎻ (R⎻* (R⎻ p)) = R⎻ p.
+ intros; apply oa_leq_antisym;
+  [ apply lemma_10_2_b;
+  | apply f_minus_image_monotone;
+    apply lemma_10_2_a; ]
+qed.
+
+lemma lemma_10_3_b: ∀S,T.∀R:arrows2 OA S T.∀p. R* (R (R* p)) = R* p.
+ intros; apply oa_leq_antisym;
+  [ apply f_star_image_monotone;
+    apply (lemma_10_2_d ?? R p);
+  | apply lemma_10_2_c; ]
+qed.
+
+lemma lemma_10_3_c: ∀S,T.∀R:arrows2 OA S T.∀p. R (R* (R p)) = R p.
+ intros; apply oa_leq_antisym;
+  [ apply lemma_10_2_d;
+  | apply f_image_monotone;
+    apply (lemma_10_2_c ?? R p); ]
+qed.
+
+lemma lemma_10_3_d: ∀S,T.∀R:arrows2 OA S T.∀p. R⎻* (R⎻ (R⎻* p)) = R⎻* p.
+ intros; apply oa_leq_antisym;
+  [ apply f_minus_star_image_monotone;
+    apply (lemma_10_2_b ?? R p);
+  | apply lemma_10_2_a; ]
+qed.
+
+lemma lemma_10_4_a: ∀S,T.∀R:arrows2 OA S T.∀p. R⎻* (R⎻ (R⎻* (R⎻ p))) = R⎻* (R⎻ p).
+ intros; apply (†(lemma_10_3_a ?? R p));
+qed.
+
+lemma lemma_10_4_b: ∀S,T.∀R:arrows2 OA S T.∀p. R (R* (R (R* p))) = R (R* p).
+intros; unfold in ⊢ (? ? ? % %); apply (†(lemma_10_3_b ?? R p));
+qed.
+
+lemma oa_overlap_sym': ∀o:OA.∀U,V:o. (U >< V) = (V >< U).
+ intros; split; intro; apply oa_overlap_sym; assumption.
+qed.
\ No newline at end of file
diff --git a/helm/software/matita/contribs/formal_topology/overlap/o-basic_pairs.ma b/helm/software/matita/contribs/formal_topology/overlap/o-basic_pairs.ma
new file mode 100644 (file)
index 0000000..58c4f9c
--- /dev/null
@@ -0,0 +1,256 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "o-algebra.ma".
+include "notation.ma".
+
+record Obasic_pair: Type2 ≝
+ { Oconcr: OA;
+   Oform: OA;
+   Orel: arrows2 ? Oconcr Oform
+ }.
+
+(* FIX *)
+interpretation "o-basic pair relation indexed" 'Vdash2 x y c = (Orel c x y).
+interpretation "o-basic pair relation (non applied)" 'Vdash c = (Orel c).
+
+alias symbol "eq" = "setoid1 eq".
+alias symbol "compose" = "category1 composition".
+(*DIFFER*)
+
+alias symbol "eq" = "setoid2 eq".
+alias symbol "compose" = "category2 composition".
+record Orelation_pair (BP1,BP2: Obasic_pair): Type2 ≝
+ { Oconcr_rel: arrows2 ? (Oconcr BP1) (Oconcr BP2);
+   Oform_rel: arrows2 ? (Oform BP1) (Oform BP2);
+   Ocommute: ⊩ ∘ Oconcr_rel = Oform_rel ∘ ⊩
+ }.
+(* FIX *)
+interpretation "o-concrete relation" 'concr_rel r = (Oconcr_rel ?? r). 
+interpretation "o-formal relation" 'form_rel r = (Oform_rel ?? r). 
+
+definition Orelation_pair_equality:
+ ∀o1,o2. equivalence_relation2 (Orelation_pair o1 o2).
+ intros;
+ constructor 1;
+  [ apply (λr,r'. ⊩ ∘ r \sub\c = ⊩ ∘ r' \sub\c);
+  | simplify;
+    intros;
+    apply refl2;
+  | simplify;
+    intros 2;
+    apply sym2;
+  | simplify;
+    intros 3;
+    apply trans2;
+  ]      
+qed.
+
+(* qui setoid1 e' giusto: ma non lo e'!!! *)
+definition Orelation_pair_setoid: Obasic_pair → Obasic_pair → setoid2.
+ intros;
+ constructor 1;
+  [ apply (Orelation_pair o o1)
+  | apply Orelation_pair_equality
+  ]
+qed.
+
+definition Orelation_pair_of_Orelation_pair_setoid: 
+  ∀P,Q. Orelation_pair_setoid P Q → Orelation_pair P Q ≝ λP,Q,x.x.
+coercion Orelation_pair_of_Orelation_pair_setoid.
+
+lemma eq_to_eq': ∀o1,o2.∀r,r': Orelation_pair_setoid o1 o2. r=r' → r \sub\f ∘ ⊩ = r'\sub\f ∘ ⊩.
+ intros 5 (o1 o2 r r' H); change in H with (⊩ ∘ r\sub\c = ⊩ ∘ r'\sub\c);
+ apply (.= ((Ocommute ?? r) ^ -1));
+ apply (.= H);
+ apply (.= (Ocommute ?? r'));
+ apply refl2;
+qed.
+
+
+definition Oid_relation_pair: ∀o:Obasic_pair. Orelation_pair o o.
+ intro;
+ constructor 1;
+  [1,2: apply id2;
+  | lapply (id_neutral_right2 ? (Oconcr o) ? (⊩)) as H;
+    lapply (id_neutral_left2 ?? (Oform o) (⊩)) as H1;
+    apply (.= H);
+    apply (H1 \sup -1);]
+qed.
+
+lemma Orelation_pair_composition:
+ ∀o1,o2,o3:Obasic_pair.
+ Orelation_pair_setoid o1 o2 → Orelation_pair_setoid o2 o3→Orelation_pair_setoid o1 o3.
+intros 3 (o1 o2 o3);
+   intros (r r1);
+    constructor 1;
+     [ apply (r1 \sub\c ∘ r \sub\c) 
+     | apply (r1 \sub\f ∘ r \sub\f)
+     | lapply (Ocommute ?? r) as H;
+       lapply (Ocommute ?? r1) as H1;
+       apply rule (.= ASSOC);
+       apply (.= #‡H1);
+       apply rule (.= ASSOC ^ -1);
+       apply (.= H‡#);
+       apply rule ASSOC]
+qed.
+
+
+lemma Orelation_pair_composition_is_morphism:
+  ∀o1,o2,o3:Obasic_pair.
+  Πa,a':Orelation_pair_setoid o1 o2.Πb,b':Orelation_pair_setoid o2 o3.
+   a=a' →b=b' →
+      Orelation_pair_composition o1 o2 o3 a b
+      = Orelation_pair_composition o1 o2 o3 a' b'.
+intros;
+    change with (⊩ ∘ (b\sub\c ∘ a\sub\c) = ⊩ ∘ (b'\sub\c ∘ a'\sub\c));  
+    change in e with (⊩ ∘ a \sub\c = ⊩ ∘ a' \sub\c);
+    change in e1 with (⊩ ∘ b \sub\c = ⊩ ∘ b' \sub\c);
+    apply rule (.= ASSOC);
+    apply (.= #‡e1);
+    apply (.= #‡(Ocommute ?? b'));
+    apply rule (.= ASSOC \sup -1);
+    apply (.= e‡#);
+    apply rule (.= ASSOC);
+    apply (.= #‡(Ocommute ?? b')\sup -1);
+    apply rule (ASSOC \sup -1);
+qed.
+
+definition Orelation_pair_composition_morphism:
+ ∀o1,o2,o3. binary_morphism2 (Orelation_pair_setoid o1 o2) (Orelation_pair_setoid o2 o3) (Orelation_pair_setoid o1 o3).
+intros; constructor 1;
+[ apply Orelation_pair_composition;
+| apply Orelation_pair_composition_is_morphism;]
+qed.
+
+lemma Orelation_pair_composition_morphism_assoc:
+∀o1,o2,o3,o4:Obasic_pair
+   .Πa12:Orelation_pair_setoid o1 o2
+    .Πa23:Orelation_pair_setoid o2 o3
+     .Πa34:Orelation_pair_setoid o3 o4
+      .Orelation_pair_composition_morphism o1 o3 o4
+       (Orelation_pair_composition_morphism o1 o2 o3 a12 a23) a34
+       =Orelation_pair_composition_morphism o1 o2 o4 a12
+        (Orelation_pair_composition_morphism o2 o3 o4 a23 a34).  
+   intros;
+    change with (⊩ ∘ (a34\sub\c ∘ (a23\sub\c ∘ a12\sub\c)) =
+                 ⊩ ∘ ((a34\sub\c ∘ a23\sub\c) ∘ a12\sub\c));
+    apply rule (ASSOC‡#);
+qed.
+
+lemma Orelation_pair_composition_morphism_respects_id:
+Πo1:Obasic_pair
+.Πo2:Obasic_pair
+ .Πa:Orelation_pair_setoid o1 o2
+  .Orelation_pair_composition_morphism o1 o1 o2 (Oid_relation_pair o1) a=a.
+   intros;
+    change with (⊩ ∘ (a\sub\c ∘ (Oid_relation_pair o1)\sub\c) = ⊩ ∘ a\sub\c);
+    apply ((id_neutral_right2 ????)‡#);
+qed.
+
+lemma Orelation_pair_composition_morphism_respects_id_r:
+Πo1:Obasic_pair
+.Πo2:Obasic_pair
+ .Πa:Orelation_pair_setoid o1 o2
+  .Orelation_pair_composition_morphism o1 o2 o2 a (Oid_relation_pair o2)=a.
+intros;
+    change with (⊩ ∘ ((Oid_relation_pair o2)\sub\c ∘ a\sub\c) = ⊩ ∘ a\sub\c);
+    apply ((id_neutral_left2 ????)‡#);
+qed.
+
+definition OBP: category2.
+ constructor 1;
+  [ apply Obasic_pair
+  | apply Orelation_pair_setoid
+  | apply Oid_relation_pair
+  | apply Orelation_pair_composition_morphism
+  | apply Orelation_pair_composition_morphism_assoc;
+  | apply Orelation_pair_composition_morphism_respects_id;
+  | apply Orelation_pair_composition_morphism_respects_id_r;]
+qed.
+
+definition Obasic_pair_of_objs2_OBP: objs2 OBP → Obasic_pair ≝ λx.x.
+coercion Obasic_pair_of_objs2_OBP.
+
+definition Orelation_pair_setoid_of_arrows2_OBP: 
+  ∀P,Q.arrows2 OBP P Q → Orelation_pair_setoid P Q ≝ λP,Q,c.c.
+coercion Orelation_pair_setoid_of_arrows2_OBP.
+
+(*
+definition BPext: ∀o: BP. form o ⇒ Ω \sup (concr o).
+ intros; constructor 1;
+  [ apply (ext ? ? (rel o));
+  | intros;
+    apply (.= #‡H);
+    apply refl1]
+qed.
+
+definition BPextS: ∀o: BP. Ω \sup (form o) ⇒ Ω \sup (concr o) ≝
+ λo.extS ?? (rel o).
+*)
+
+(*
+definition fintersects: ∀o: BP. binary_morphism1 (form o) (form o) (Ω \sup (form o)).
+ intros (o); constructor 1;
+  [ apply (λa,b: form o.{c | BPext o c ⊆ BPext o a ∩ BPext o b });
+    intros; simplify; apply (.= (†H)‡#); apply refl1
+  | intros; split; simplify; intros;
+     [ apply (. #‡((†H)‡(†H1))); assumption
+     | apply (. #‡((†H\sup -1)‡(†H1\sup -1))); assumption]]
+qed.
+
+interpretation "fintersects" 'fintersects U V = (fun1 ??? (fintersects ?) U V).
+
+definition fintersectsS:
+ ∀o:BP. binary_morphism1 (Ω \sup (form o)) (Ω \sup (form o)) (Ω \sup (form o)).
+ intros (o); constructor 1;
+  [ apply (λo: basic_pair.λa,b: Ω \sup (form o).{c | BPext o c ⊆ BPextS o a ∩ BPextS o b });
+    intros; simplify; apply (.= (†H)‡#); apply refl1
+  | intros; split; simplify; intros;
+     [ apply (. #‡((†H)‡(†H1))); assumption
+     | apply (. #‡((†H\sup -1)‡(†H1\sup -1))); assumption]]
+qed.
+
+interpretation "fintersectsS" 'fintersects U V = (fun1 ??? (fintersectsS ?) U V).
+*)
+
+(*
+definition relS: ∀o: BP. binary_morphism1 (concr o) (Ω \sup (form o)) CPROP.
+ intros (o); constructor 1;
+  [ apply (λx:concr o.λS: Ω \sup (form o).∃y: form o.y ∈ S ∧ x ⊩ y);
+  | intros; split; intros; cases H2; exists [1,3: apply w]
+     [ apply (. (#‡H1)‡(H‡#)); assumption
+     | apply (. (#‡H1 \sup -1)‡(H \sup -1‡#)); assumption]]
+qed.
+
+interpretation "basic pair relation for subsets" 'Vdash2 x y = (fun1 (concr ?) ?? (relS ?) x y).
+interpretation "basic pair relation for subsets (non applied)" 'Vdash = (fun1 ??? (relS ?)).
+*)
+
+notation "□ \sub b" non associative with precedence 90 for @{'box $b}.
+notation > "□⎽term 90 b" non associative with precedence 90 for @{'box $b}.
+interpretation "Universal image ⊩⎻*" 'box x = (fun12 ? ? (or_f_minus_star ? ?) (Orel x)).
+notation "◊ \sub b" non associative with precedence 90 for @{'diamond $b}.
+notation > "◊⎽term 90 b" non associative with precedence 90 for @{'diamond $b}.
+interpretation "Existential image ⊩" 'diamond x = (fun12 ? ? (or_f ? ?) (Orel x)).
+
+notation "'Rest' \sub b" non associative with precedence 90 for @{'rest $b}.
+notation > "'Rest'⎽term 90 b" non associative with precedence 90 for @{'rest $b}.
+interpretation "Universal pre-image ⊩*" 'rest x = (fun12 ? ? (or_f_star ? ?) (Orel x)).
+
+notation "'Ext' \sub b" non associative with precedence 90 for @{'ext $b}.
+notation > "'Ext'⎽term 90 b" non associative with precedence 90 for @{'ext $b}.
+interpretation "Existential pre-image ⊩⎻" 'ext x = (fun12 ? ? (or_f_minus ? ?) (Orel x)).
\ No newline at end of file
diff --git a/helm/software/matita/contribs/formal_topology/overlap/o-basic_pairs_to_o-basic_topologies.ma b/helm/software/matita/contribs/formal_topology/overlap/o-basic_pairs_to_o-basic_topologies.ma
new file mode 100644 (file)
index 0000000..b745652
--- /dev/null
@@ -0,0 +1,119 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "notation.ma".
+include "o-basic_pairs.ma".
+include "o-basic_topologies.ma".
+
+alias symbol "eq" = "setoid1 eq".
+
+(* Qui, per fare le cose per bene, ci serve la nozione di funtore categorico *)
+definition o_basic_topology_of_o_basic_pair: OBP → OBTop.
+ intro t;
+ constructor 1;
+  [ apply (Oform t);
+  | apply (□⎽t ∘ Ext⎽t);
+  | apply (◊⎽t ∘ Rest⎽t);
+  | apply hide; intros 2; split; intro;
+     [ change with ((⊩) \sup ⎻* ((⊩) \sup ⎻ U) ≤ (⊩) \sup ⎻* ((⊩) \sup ⎻ V));
+       apply (. (#‡(lemma_10_4_a ?? (⊩) V)^-1));
+       apply f_minus_star_image_monotone;
+       apply f_minus_image_monotone;
+       assumption
+     | apply oa_leq_trans;
+        [3: apply f;
+        | skip
+        | change with (U ≤ (⊩)⎻* ((⊩)⎻ U));
+          apply (. (or_prop2 : ?) ^ -1);
+          apply oa_leq_refl; ]]
+  | apply hide; intros 2; split; intro;
+     [ change with (◊⎽t ((⊩) \sup * U) ≤ ◊⎽t ((⊩) \sup * V));
+       apply (. ((lemma_10_4_b ?? (⊩) U)^-1)‡#);
+       apply (f_image_monotone ?? (⊩) ? ((⊩)* V));
+       apply f_star_image_monotone;
+       assumption;
+     | apply oa_leq_trans;
+        [2: apply f;
+        | skip
+        | change with ((⊩) ((⊩)* V) ≤ V);
+          apply (. (or_prop1 : ?));
+          apply oa_leq_refl; ]]
+  | apply hide; intros;
+    apply (.= (oa_overlap_sym' : ?));
+    change with ((◊⎽t ((⊩)* V) >< (⊩)⎻* ((⊩)⎻ U)) = (U >< (◊⎽t ((⊩)* V))));
+    apply (.= (or_prop3 ?? (⊩) ((⊩)* V) ?));
+    apply (.= #‡(lemma_10_3_a : ?));
+    apply (.= (or_prop3 : ?)^-1);
+    apply (oa_overlap_sym' ? ((⊩) ((⊩)* V)) U); ]
+qed.
+
+definition o_continuous_relation_of_o_relation_pair:
+ ∀BP1,BP2.arrows2 OBP BP1 BP2 →
+  arrows2 OBTop (o_basic_topology_of_o_basic_pair BP1) (o_basic_topology_of_o_basic_pair BP2).
+ intros (BP1 BP2 t);
+ constructor 1;
+  [ apply (t \sub \f);
+  | apply hide; unfold o_basic_topology_of_o_basic_pair; simplify; intros;
+    apply sym1;
+    apply (.= †(†e));
+    change in ⊢ (? ? ? (? ? ? ? %) ?) with ((t \sub \f ∘ (⊩)) ((⊩)* U));
+    cut ((t \sub \f ∘ (⊩)) ((⊩)* U) = ((⊩) ∘ t \sub \c) ((⊩)* U)) as COM;[2:
+      cases (Ocommute ?? t); apply (e3 ^ -1 ((⊩)* U));]
+    apply (.= †COM);
+    change in ⊢ (? ? ? % ?) with (((⊩) ∘ (⊩)* ) (((⊩) ∘ t \sub \c ∘ (⊩)* ) U));
+    apply (.= (lemma_10_3_c ?? (⊩) (t \sub \c ((⊩)* U))));
+    apply (.= COM ^ -1);
+    change in ⊢ (? ? ? % ?) with (t \sub \f (((⊩) ∘ (⊩)* ) U));
+    change in e with (U=((⊩)∘(⊩ \sub BP1) \sup * ) U);
+    apply (†e^-1);
+  | apply hide; unfold o_basic_topology_of_o_basic_pair; simplify; intros;
+    apply sym1;
+    apply (.= †(†e));
+    change in ⊢ (? ? ? (? ? ? ? %) ?) with ((t \sub \f⎻* ∘ (⊩)⎻* ) ((⊩)⎻ U));
+    cut ((t \sub \f⎻* ∘ (⊩)⎻* ) ((⊩)⎻ U) = ((⊩)⎻* ∘ t \sub \c⎻* ) ((⊩)⎻ U)) as COM;[2:
+      cases (Ocommute ?? t); apply (e1 ^ -1 ((⊩)⎻ U));]
+    apply (.= †COM);
+    change in ⊢ (? ? ? % ?) with (((⊩)⎻* ∘ (⊩)⎻ ) (((⊩)⎻* ∘ t \sub \c⎻* ∘ (⊩)⎻ ) U));
+    apply (.= (lemma_10_3_d ?? (⊩) (t \sub \c⎻* ((⊩)⎻ U))));
+    apply (.= COM ^ -1);
+    change in ⊢ (? ? ? % ?) with (t \sub \f⎻* (((⊩)⎻* ∘ (⊩)⎻ ) U));
+    change in e with (U=((⊩)⎻* ∘(⊩ \sub BP1)⎻ ) U);
+    apply (†e^-1);]
+qed.
+
+
+definition OR : carr3 (arrows3 CAT2 OBP OBTop).
+constructor 1;
+[ apply o_basic_topology_of_o_basic_pair;
+| intros; constructor 1;
+  [ apply o_continuous_relation_of_o_relation_pair;
+  | apply hide; 
+    intros; whd; unfold o_continuous_relation_of_o_relation_pair; simplify;;
+    change with ((a \sub \f ⎻* ∘ oA (o_basic_topology_of_o_basic_pair S)) =
+                 (a' \sub \f ⎻*∘ oA (o_basic_topology_of_o_basic_pair S)));
+    whd in e; cases e; clear e e2 e3 e4;
+    change in ⊢ (? ? ? (? ? ? ? ? % ?) ?) with ((⊩\sub S)⎻* ∘ (⊩\sub S)⎻);
+    apply (.= (comp_assoc2 ? ???? ?? a\sub\f⎻* ));
+    change in ⊢ (? ? ? (? ? ? ? ? ? %) ?) with (a\sub\f ∘ ⊩\sub S)⎻*;
+    apply (.= #‡†(Ocommute:?)^-1);
+    apply (.= #‡e1);
+    change in ⊢ (? ? ? (? ? ? ? ? ? %) ?) with (⊩\sub T ∘ a'\sub\c)⎻*;
+    apply (.= #‡†(Ocommute:?));    
+    change in ⊢ (? ? ? (? ? ? ? ? ? %) ?) with (a'\sub\f⎻* ∘ (⊩\sub S)⎻* );    
+    apply (.= (comp_assoc2 ? ???? ?? a'\sub\f⎻* )^-1);
+    apply refl2;]
+| intros 2 (o a); apply refl1;
+| intros 6; apply refl1;]
+qed.
+
diff --git a/helm/software/matita/contribs/formal_topology/overlap/o-basic_topologies.ma b/helm/software/matita/contribs/formal_topology/overlap/o-basic_topologies.ma
new file mode 100644 (file)
index 0000000..f2ce654
--- /dev/null
@@ -0,0 +1,188 @@
+ (**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "o-algebra.ma".
+include "o-saturations.ma".
+
+record Obasic_topology: Type2 ≝
+ { Ocarrbt:> OA;
+   oA: Ocarrbt ⇒ Ocarrbt;
+   oJ: Ocarrbt ⇒ Ocarrbt;
+   oA_is_saturation: is_o_saturation ? oA;
+   oJ_is_reduction: is_o_reduction ? oJ;
+   Ocompatibility: ∀U,V. (oA U >< oJ V) = (U >< oJ V)
+ }.
+
+record Ocontinuous_relation (S,T: Obasic_topology) : Type2 ≝
+ { Ocont_rel:> arrows2 OA S T;
+   (* reduces uses eq1, saturated uses eq!!! *)
+   Oreduced: ∀U. U = oJ ? U → Ocont_rel U = oJ ? (Ocont_rel U);
+   Osaturated: ∀U. U = oA ? U → Ocont_rel⎻* U = oA ? (Ocont_rel⎻* U)
+ }. 
+
+definition Ocontinuous_relation_setoid: Obasic_topology → Obasic_topology → setoid2.
+ intros (S T); constructor 1;
+  [ apply (Ocontinuous_relation S T)
+  | constructor 1;
+     [ alias symbol "eq" = "setoid2 eq".
+       alias symbol "compose" = "category2 composition".
+       apply (λr,s:Ocontinuous_relation S T. (r⎻* ) ∘ (oA S) = (s⎻* ∘ (oA ?)));
+     | simplify; intros; apply refl2;
+     | simplify; intros; apply sym2; apply e
+     | simplify; intros; apply trans2; [2: apply e |3: apply e1; |1: skip]]]
+qed.
+
+definition Ocontinuous_relation_of_Ocontinuous_relation_setoid: 
+  ∀P,Q. Ocontinuous_relation_setoid P Q → Ocontinuous_relation P Q ≝ λP,Q,c.c.
+coercion Ocontinuous_relation_of_Ocontinuous_relation_setoid.
+
+(*
+theorem continuous_relation_eq':
+ ∀o1,o2.∀a,a': continuous_relation_setoid o1 o2.
+  a = a' → ∀X.a⎻* (A o1 X) = a'⎻* (A o1 X).
+ intros; apply oa_leq_antisym; intro; unfold minus_star_image; simplify; intros;
+  [ cut (ext ?? a a1 ⊆ A ? X); [2: intros 2; apply (H1 a2); cases f1; assumption;]
+    lapply (if ?? (A_is_saturation ???) Hcut); clear Hcut;
+    cut (A ? (ext ?? a' a1) ⊆ A ? X); [2: apply (. (H ?)‡#); assumption]
+    lapply (fi ?? (A_is_saturation ???) Hcut);
+    apply (Hletin1 x); change with (x ∈ ext ?? a' a1); split; simplify;
+     [ apply I | assumption ]
+  | cut (ext ?? a' a1 ⊆ A ? X); [2: intros 2; apply (H1 a2); cases f1; assumption;]
+    lapply (if ?? (A_is_saturation ???) Hcut); clear Hcut;
+    cut (A ? (ext ?? a a1) ⊆ A ? X); [2: apply (. (H ?)\sup -1‡#); assumption]
+    lapply (fi ?? (A_is_saturation ???) Hcut);
+    apply (Hletin1 x); change with (x ∈ ext ?? a a1); split; simplify;
+     [ apply I | assumption ]]
+qed.
+
+theorem continuous_relation_eq_inv':
+ ∀o1,o2.∀a,a': continuous_relation_setoid o1 o2.
+  (∀X.a⎻* (A o1 X) = a'⎻* (A o1 X)) → a=a'.
+ intros 6;
+ cut (∀a,a': continuous_relation_setoid o1 o2.
+  (∀X.a⎻* (A o1 X) = a'⎻* (A o1 X)) → 
+   ∀V:(oa_P (carrbt o2)). A o1 (a'⎻ V) ≤ A o1 (a⎻ V));
+  [2: clear b H a' a; intros;
+      lapply depth=0 (λV.saturation_expansive ??? (extS ?? a V)); [2: apply A_is_saturation;|skip]
+       (* fundamental adjunction here! to be taken out *)
+       cut (∀V:Ω \sup o2.V ⊆ minus_star_image ?? a (A ? (extS ?? a V)));
+        [2: intro; intros 2; unfold minus_star_image; simplify; intros;
+            apply (Hletin V1 x); whd; split; [ exact I | exists; [apply a1] split; assumption]]
+       clear Hletin;
+       cut (∀V:Ω \sup o2.V ⊆ minus_star_image ?? a' (A ? (extS ?? a V)));
+        [2: intro; apply (. #‡(H ?)); apply Hcut] clear H Hcut;
+       (* second half of the fundamental adjunction here! to be taken out too *)
+      intro; lapply (Hcut1 (singleton ? V)); clear Hcut1;
+      unfold minus_star_image in Hletin; unfold singleton in Hletin; simplify in Hletin;
+      whd in Hletin; whd in Hletin:(?→?→%); simplify in Hletin;
+      apply (if ?? (A_is_saturation ???));
+      intros 2 (x H); lapply (Hletin V ? x ?);
+       [ apply refl | cases H; assumption; ]
+      change with (x ∈ A ? (ext ?? a V));
+      apply (. #‡(†(extS_singleton ????)));
+      assumption;]
+ split; apply Hcut; [2: assumption | intro; apply sym1; apply H]
+qed.
+*)
+
+definition Ocontinuous_relation_comp:
+ ∀o1,o2,o3.
+  Ocontinuous_relation_setoid o1 o2 →
+   Ocontinuous_relation_setoid o2 o3 →
+    Ocontinuous_relation_setoid o1 o3.
+ intros (o1 o2 o3 r s); constructor 1;
+  [ apply (s ∘ r);
+  | intros;
+    apply sym1; 
+    change in match ((s ∘ r) U) with (s (r U));
+    apply (.= (Oreduced : ?)\sup -1);
+     [ apply (.= (Oreduced :?)); [ assumption | apply refl1 ]
+     | apply refl1]
+  | intros;
+    apply sym1;
+    change in match ((s ∘ r)⎻* U) with (s⎻* (r⎻* U));
+    apply (.= (Osaturated : ?)\sup -1);
+     [ apply (.= (Osaturated : ?)); [ assumption | apply refl1 ]
+     | apply refl1]]
+qed.
+
+definition OBTop: category2.
+ constructor 1;
+  [ apply Obasic_topology
+  | apply Ocontinuous_relation_setoid
+  | intro; constructor 1;
+     [ apply id2
+     | intros; apply e;
+     | intros; apply e;]
+  | intros; constructor 1;
+     [ apply Ocontinuous_relation_comp;
+     | intros; simplify;
+       change with ((b⎻* ∘ a⎻* ) ∘ oA o1 = ((b'⎻* ∘ a'⎻* ) ∘ oA o1)); 
+       change with (b⎻* ∘ (a⎻* ∘ oA o1) = b'⎻* ∘ (a'⎻* ∘ oA o1));
+       change in e with (a⎻* ∘ oA o1 = a'⎻* ∘ oA o1);
+       change in e1 with (b⎻* ∘ oA o2 = b'⎻* ∘ oA o2);
+       apply (.= e‡#);
+       intro x;          
+       change with (eq1 ? (b⎻* (a'⎻* (oA o1 x))) (b'⎻*(a'⎻* (oA o1 x)))); 
+       apply (.= †(Osaturated o1 o2 a' (oA o1 x) ?)); [
+         apply ((o_saturation_idempotent ?? (oA_is_saturation o1) x)^-1);]
+       apply (.= (e1 (a'⎻* (oA o1 x))));
+       change with (eq1 ? (b'⎻* (oA o2 (a'⎻* (oA o1 x)))) (b'⎻*(a'⎻* (oA o1 x))));   
+       apply (.= †(Osaturated o1 o2 a' (oA o1 x):?)^-1); [
+         apply ((o_saturation_idempotent ?? (oA_is_saturation o1) x)^-1);]
+       apply rule #;]
+  | intros; simplify;
+    change with (((a34⎻* ∘ a23⎻* ) ∘ a12⎻* ) ∘ oA o1 = ((a34⎻* ∘ (a23⎻* ∘ a12⎻* )) ∘ oA o1));
+    apply rule (#‡ASSOC ^ -1);
+  | intros; simplify;
+    change with ((a⎻* ∘ (id2 ? o1)⎻* ) ∘ oA o1 = a⎻* ∘ oA o1);
+    apply (#‡(id_neutral_right2 : ?));
+  | intros; simplify;
+    change with (((id2 ? o2)⎻* ∘ a⎻* ) ∘ oA o1 = a⎻* ∘ oA o1);
+    apply (#‡(id_neutral_left2 : ?));]
+qed.
+
+definition Obasic_topology_of_OBTop: objs2 OBTop → Obasic_topology ≝ λx.x.
+coercion Obasic_topology_of_OBTop.
+
+definition Ocontinuous_relation_setoid_of_arrows2_OBTop : 
+  ∀P,Q. arrows2 OBTop P Q → Ocontinuous_relation_setoid P Q ≝ λP,Q,x.x.
+coercion Ocontinuous_relation_setoid_of_arrows2_OBTop.
+
+(*
+(*CSC: unused! *)
+(* this proof is more logic-oriented than set/lattice oriented *)
+theorem continuous_relation_eqS:
+ ∀o1,o2:basic_topology.∀a,a': continuous_relation_setoid o1 o2.
+  a = a' → ∀X. A ? (extS ?? a X) = A ? (extS ?? a' X).
+ intros;
+ cut (∀a: arrows1 ? o1 ?.∀x. x ∈ extS ?? a X → ∃y:o2.y ∈ X ∧ x ∈ ext ?? a y);
+  [2: intros; cases f; clear f; cases H1; exists [apply w] cases x1; split;
+      try assumption; split; assumption]
+ cut (∀a,a':continuous_relation_setoid o1 o2.eq1 ? a a' → ∀x. x ∈ extS ?? a X → ∃y:o2. y ∈ X ∧ x ∈ A ? (ext ?? a' y));
+  [2: intros; cases (Hcut ?? f); exists; [apply w] cases x1; split; try assumption;
+      apply (. #‡(H1 ?));
+      apply (saturation_expansive ?? (A_is_saturation o1) (ext ?? a1 w) x);
+      assumption;] clear Hcut;
+ split; apply (if ?? (A_is_saturation ???)); intros 2;
+  [lapply (Hcut1 a a' H a1 f) | lapply (Hcut1 a' a (H \sup -1) a1 f)]
+  cases Hletin; clear Hletin; cases x; clear x;
+ cut (∀a: arrows1 ? o1 ?. ext ?? a w ⊆ extS ?? a X);
+  [2,4: intros 3; cases f3; clear f3; simplify in f5; split; try assumption;
+      exists [1,3: apply w] split; assumption;]
+ cut (∀a. A ? (ext o1 o2 a w) ⊆ A ? (extS o1 o2 a X));
+  [2,4: intros; apply saturation_monotone; try (apply A_is_saturation); apply Hcut;]
+ apply Hcut2; assumption.
+qed.
+*)
diff --git a/helm/software/matita/contribs/formal_topology/overlap/o-concrete_spaces.ma b/helm/software/matita/contribs/formal_topology/overlap/o-concrete_spaces.ma
new file mode 100644 (file)
index 0000000..76a1f42
--- /dev/null
@@ -0,0 +1,134 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "o-basic_pairs.ma".
+include "o-saturations.ma".
+
+definition A : ∀b:OBP. unary_morphism1 (Oform b) (Oform b).
+intros; constructor 1;
+ [ apply (λx.□⎽b (Ext⎽b x));
+ | intros; apply  (†(†e));]
+qed.
+
+lemma down_p : ∀S:SET1.∀I:SET.∀u:S⇒S.∀c:arrows2 SET1 I S.∀a:I.∀a':I.a=a'→u (c a)=u (c a').
+intros; apply (†(†e));
+qed.
+
+record Oconcrete_space : Type2 ≝
+ { Obp:> OBP;
+   (*distr : is_distributive (form bp);*)
+   Odownarrow: unary_morphism1 (Oform Obp) (Oform Obp);
+   Odownarrow_is_sat: is_o_saturation ? Odownarrow;
+   Oconverges: ∀q1,q2.
+     (Ext⎽Obp q1 ∧ (Ext⎽Obp q2)) = (Ext⎽Obp ((Odownarrow q1) ∧ (Odownarrow q2)));
+   Oall_covered: Ext⎽Obp (oa_one (Oform Obp)) = oa_one (Oconcr Obp);
+   Oil2: ∀I:SET.∀p:arrows2 SET1 I (Oform Obp).
+     Odownarrow (∨ { x ∈ I | Odownarrow (p x) | down_p ???? }) =
+     ∨ { x ∈ I | Odownarrow (p x) | down_p ???? };
+   Oil1: ∀q.Odownarrow (A ? q) = A ? q
+ }.
+
+interpretation "o-concrete space downarrow" 'downarrow x = 
+  (fun11 ?? (Odownarrow ?) x).
+
+definition Obinary_downarrow : 
+  ∀C:Oconcrete_space.binary_morphism1 (Oform C) (Oform C) (Oform C).
+intros; constructor 1;
+[ intros; apply (↓ c ∧ ↓ c1);
+| intros;
+  alias symbol "prop2" = "prop21".
+  alias symbol "prop1" = "prop11".
+  apply ((†e)‡(†e1));]
+qed.
+
+interpretation "concrete_space binary ↓" 'fintersects a b = (fun21 ? ? ? (Obinary_downarrow ?) a b).
+
+record Oconvergent_relation_pair (CS1,CS2: Oconcrete_space) : Type2 ≝
+ { Orp:> arrows2 ? CS1 CS2;
+   Orespects_converges:
+    ∀b,c. eq1 ? (Orp\sub\c⎻ (Ext⎽CS2 (b ↓ c))) (Ext⎽CS1 (Orp\sub\f⎻ b ↓ Orp\sub\f⎻ c));
+   Orespects_all_covered:
+     eq1 ? (Orp\sub\c⎻ (Ext⎽CS2 (oa_one (Oform CS2))))
+           (Ext⎽CS1 (oa_one (Oform CS1)))
+ }.
+
+definition Oconvergent_relation_space_setoid: Oconcrete_space → Oconcrete_space → setoid2.
+ intros (c c1);
+ constructor 1;
+  [ apply (Oconvergent_relation_pair c c1)
+  | constructor 1;
+     [ intros (c2 c3);
+       apply (Orelation_pair_equality c c1 c2 c3);
+     | intros 1; apply refl2;
+     | intros 2; apply sym2; 
+     | intros 3; apply trans2]]
+qed.
+
+definition Oconvergent_relation_space_of_Oconvergent_relation_space_setoid: 
+  ∀CS1,CS2.carr2 (Oconvergent_relation_space_setoid CS1 CS2) → 
+    Oconvergent_relation_pair CS1 CS2  ≝ λP,Q,c.c.
+coercion Oconvergent_relation_space_of_Oconvergent_relation_space_setoid.
+
+definition Oconvergent_relation_space_composition:
+ ∀o1,o2,o3: Oconcrete_space.
+  binary_morphism2
+   (Oconvergent_relation_space_setoid o1 o2)
+   (Oconvergent_relation_space_setoid o2 o3)
+   (Oconvergent_relation_space_setoid o1 o3).
+ intros; constructor 1;
+     [ intros; whd in t t1 ⊢ %;
+       constructor 1;
+        [ apply (c1 ∘ c);
+        | intros;
+          change in ⊢ (? ? ? % ?) with (c\sub\c⎻ (c1\sub\c⎻ (Ext⎽o3 (b↓c2))));
+          alias symbol "trans" = "trans1".
+          apply (.= († (Orespects_converges : ?)));
+          apply (Orespects_converges ?? c (c1\sub\f⎻ b) (c1\sub\f⎻ c2));
+        | change in ⊢ (? ? ? % ?) with (c\sub\c⎻ (c1\sub\c⎻ (Ext⎽o3 (oa_one (Oform o3)))));
+          apply (.= (†(Orespects_all_covered :?)));
+          apply rule (Orespects_all_covered ?? c);]
+     | intros;
+       change with (b ∘ a = b' ∘ a'); 
+       change in e with (Orp ?? a = Orp ?? a');
+       change in e1 with (Orp ?? b = Orp ?? b');
+       apply (e‡e1);]
+qed.
+
+definition OCSPA: category2.
+ constructor 1;
+  [ apply Oconcrete_space
+  | apply Oconvergent_relation_space_setoid
+  | intro; constructor 1;
+     [ apply id2
+     | intros; apply refl1;
+     | apply refl1]
+  | apply Oconvergent_relation_space_composition
+  | intros; simplify; whd in a12 a23 a34;
+    change with (a34 ∘ (a23 ∘ a12) = (a34 ∘ a23) ∘ a12);
+    apply rule ASSOC;
+  | intros; simplify;
+    change with (a ∘ id2 OBP o1 = a);
+    apply (id_neutral_right2 : ?);
+  | intros; simplify;
+    change with (id2 ? o2 ∘ a = a);
+    apply (id_neutral_left2 : ?);]
+qed.
+
+definition Oconcrete_space_of_OCSPA : objs2 OCSPA → Oconcrete_space ≝ λx.x.
+coercion Oconcrete_space_of_OCSPA.
+
+definition Oconvergent_relation_space_setoid_of_arrows2_OCSPA :
+ ∀P,Q. arrows2 OCSPA P Q → Oconvergent_relation_space_setoid P Q ≝ λP,Q,x.x.
+coercion Oconvergent_relation_space_setoid_of_arrows2_OCSPA.
+
diff --git a/helm/software/matita/contribs/formal_topology/overlap/o-formal_topologies.ma b/helm/software/matita/contribs/formal_topology/overlap/o-formal_topologies.ma
new file mode 100644 (file)
index 0000000..59221c7
--- /dev/null
@@ -0,0 +1,98 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "o-basic_topologies.ma".
+
+(*
+definition downarrow: ∀S:BTop. unary_morphism (Ω \sup S) (Ω \sup S).
+ intros; constructor 1;
+  [ apply (λU:Ω \sup S.{a | ∃b:carrbt S. b ∈ U ∧ a ∈ A ? (singleton ? b)});
+    intros; simplify; split; intro; cases H1; cases x; exists [1,3: apply w]
+    split; try assumption; [ apply (. H‡#) | apply (. H \sup -1‡#) ] assumption
+  | intros; split; intros 2; cases f; exists; [1,3: apply w] cases x; split;
+    try assumption; [ apply (. #‡H) | apply (. #‡H \sup -1)] assumption]
+qed.
+
+interpretation "downarrow" 'downarrow a = (fun_1 ?? (downarrow ?) a).
+
+definition ffintersects: ∀S:BTop. binary_morphism1 (Ω \sup S) (Ω \sup S) (Ω \sup S).
+ intros; constructor 1;
+  [ apply (λU,V. ↓U ∩ ↓V);
+  | intros; apply (.= (†H)‡(†H1)); apply refl1]
+qed.
+
+interpretation "ffintersects" 'fintersects U V = (fun1 ??? (ffintersects ?) U V).
+*)
+
+record formal_topology: Type ≝
+ { bt:> OBTop;
+   converges: ∀U,V: bt. oA bt (U ↓ V) = (oA ? U ∧ oA ? V)
+ }.
+
+(*
+
+definition ffintersects': ∀S:BTop. binary_morphism1 S S (Ω \sup S).
+ intros; constructor 1;
+  [ apply (λb,c:S. (singleton S b) ↓ (singleton S c));
+  | intros; apply (.= (†H)‡(†H1)); apply refl1]
+qed.
+
+interpretation "ffintersects'" 'fintersects U V = (fun1 ??? (ffintersects' ?) U V).
+*)
+record formal_map (S,T: formal_topology) : Type ≝
+ { cr:> continuous_relation_setoid S T;
+   C1: ∀b,c. extS ?? cr (b ↓ c) = ext ?? cr b ↓ ext ?? cr c;
+   C2: extS ?? cr T = S
+ }.
+
+definition formal_map_setoid: formal_topology → formal_topology → setoid1.
+ intros (S T); constructor 1;
+  [ apply (formal_map S T);
+  | constructor 1;
+     [ apply (λf,f1: formal_map S T.f=f1);
+     | simplify; intros 1; apply refl1
+     | simplify; intros 2; apply sym1
+     | simplify; intros 3; apply trans1]]
+qed.
+
+axiom C1':
+ ∀S,T: formal_topology.∀f:formal_map_setoid S T.∀U,V: Ω \sup T.
+  extS ?? f (U ↓ V) = extS ?? f U ↓ extS ?? f V.
+
+definition formal_map_composition:
+ ∀o1,o2,o3: formal_topology.
+  binary_morphism1
+   (formal_map_setoid o1 o2)
+   (formal_map_setoid o2 o3)
+   (formal_map_setoid o1 o3).
+ intros; constructor 1;
+  [ intros; whd in c c1; constructor 1;
+     [ apply (comp1 BTop ??? c c1);
+     | intros;
+       apply (.= (extS_com ??? c c1 ?));
+       apply (.= †(C1 ?????));
+       apply (.= (C1' ?????));
+       apply (.= ((†((extS_singleton ????) \sup -1))‡(†((extS_singleton ????) \sup -1))));
+       apply (.= (extS_com ??????)\sup -1 ‡ (extS_com ??????) \sup -1);
+       apply (.= (extS_singleton ????)‡(extS_singleton ????));
+       apply refl1;
+     | apply (.= (extS_com ??? c c1 ?));
+       apply (.= (†(C2 ???)));
+       apply (.= (C2 ???));
+       apply refl1;]
+  | intros; simplify;
+    change with (comp1 BTop ??? a b = comp1 BTop ??? a' b');
+    apply prop1; assumption]
+qed.
+
diff --git a/helm/software/matita/contribs/formal_topology/overlap/o-saturations.ma b/helm/software/matita/contribs/formal_topology/overlap/o-saturations.ma
new file mode 100644 (file)
index 0000000..a1c83e7
--- /dev/null
@@ -0,0 +1,43 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "o-algebra.ma".
+
+alias symbol "eq" = "setoid1 eq".
+definition is_o_saturation: ∀C:OA. unary_morphism1 C C → CProp1 ≝
+ λC:OA.λA:unary_morphism1 C C.
+  ∀U,V. (U ≤ A V) = (A U ≤ A V).
+
+definition is_o_reduction: ∀C:OA. unary_morphism1 C C → CProp1 ≝
+ λC:OA.λJ:unary_morphism1 C C.
+    ∀U,V. (J U ≤ V) = (J U ≤ J V).
+
+theorem o_saturation_expansive: ∀C,A. is_o_saturation C A → ∀U. U ≤ A U.
+ intros; apply (fi ?? (i ??)); apply (oa_leq_refl C).
+qed.
+
+theorem o_saturation_monotone:
+ ∀C,A. is_o_saturation C A →
+  ∀U,V. U ≤ V → A U ≤ A V.
+ intros; apply (if ?? (i ??)); apply (oa_leq_trans C);
+  [apply V|3: apply o_saturation_expansive ]
+ assumption.
+qed.
+
+theorem o_saturation_idempotent: ∀C,A. is_o_saturation C A → ∀U. 
+ eq1 C (A (A U)) (A U).
+ intros; apply (oa_leq_antisym C);
+  [ apply (if ?? (i (A U) U)); apply (oa_leq_refl C).
+  | apply o_saturation_expansive; assumption]
+qed.
diff --git a/helm/software/matita/contribs/formal_topology/overlap/r-o-basic_pairs.ma b/helm/software/matita/contribs/formal_topology/overlap/r-o-basic_pairs.ma
new file mode 100644 (file)
index 0000000..310ef55
--- /dev/null
@@ -0,0 +1,253 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "basic_pairs_to_o-basic_pairs.ma".
+include "apply_functor.ma".
+
+definition rOBP ≝ Apply (category2_of_category1 BP) OBP BP_to_OBP.
+
+include "o-basic_pairs_to_o-basic_topologies.ma".
+
+lemma category2_of_category1_respects_comp_r:
+ ∀C:category1.∀o1,o2,o3:C.
+  ∀f:arrows1 ? o1 o2.∀g:arrows1 ? o2 o3.
+   (comp1 ???? f g) =_\ID (comp2 (category2_of_category1 C) o1 o2 o3 f g).
+ intros; constructor 1; 
+qed.
+
+lemma category2_of_category1_respects_comp:
+ ∀C:category1.∀o1,o2,o3:C.
+  ∀f:arrows1 ? o1 o2.∀g:arrows1 ? o2 o3.
+   (comp2 (category2_of_category1 C) o1 o2 o3 f g) =_\ID (comp1 ???? f g).
+ intros; constructor 1; 
+qed.
+
+lemma POW_full': 
+  ∀S,T:REL.∀f:arrows2 SET1 (POW S) (POW T).
+   arrows1 REL S T.
+ intros;
+ constructor 1; constructor 1;
+  [ intros (x y); apply (y ∈ c {(x)});
+  | apply hide; intros; unfold FunClass_1_OF_Ocontinuous_relation;
+    apply (e1‡††e); ]
+qed.
+
+(*
+lemma POW_full_image: 
+  ∀S,T:REL.∀f:arrows2 SET1 (POW S) (POW T).
+   exT22 ? (λg:arrows1 REL S T.or_f ?? (map_arrows2 ?? POW S T g) = f).
+ intros; letin g ≝ (? : carr1 (arrows1 REL S T)); [
+ constructor 1; constructor 1;
+  [ intros (x y); apply (y ∈ f {(x)});
+  | apply hide; intros; unfold FunClass_1_OF_Ocontinuous_relation;
+    apply (e1‡††e); ]]
+exists [apply g]
+intro; split; intro; simplify; intro; 
+[ whd in f1; change in f1:(? ? (λ_:?.? ? ? ? ? % ?)) with (a1 ∈ f {(x)});
+  cases f1; cases x; clear f1 x; change with (a1 ∈ f a);
+  lapply (f_image_monotone ?? (map_arrows2 ?? POW S T g) (singleton ? w) a ? a1);
+  [2: whd in Hletin;
+      change in Hletin:(? ? (λ_:?.? ? ? ? ? % ?))
+      with (a1 ∈ f {(x)}); cases Hletin; cases x;
+           [ intros 2; change in f3 with (eq1 ? w a2); change with (a2 ∈ a);
+             apply (. f3^-1‡#); assumption;
+           | assumption; ]
+           
+           
+           
+  lapply (. (or_prop3 ?? (map_arrows2 ?? POW S T g) (singleton ? a1) a)^-1);
+   [ whd in Hletin:(? ? ? ? ? ? %);
+     change in Hletin:(? ? ? ? ? ? (? ? (? ? ? (λ_:?.? ? (λ_:?.? ? ? ? ? % ?)) ?)))
+     with (y ∈ f {(x)});
+     cases Hletin; cases x1; cases x2; 
+  
+   [ cases Hletin; change in x with (eq1 ? a1 w1); apply (. x‡#); assumption;
+   | exists; [apply w] assumption ]
+
+
+  clear g;
+ cases f1; cases x; simplify in f2; change with (a1 ∈ (f a));
+  lapply depth=0 (let x ≝ POW in or_prop3 (POW S) (POW T) (map_arrows2 ?? POW S T g));
+  lapply (Hletin {(w)} {(a1)}).
+  lapply (if ?? Hletin1); [2: clear Hletin Hletin1;
+    exists; [apply a1] [whd; exists[apply w] split; [assumption;|change with (w = w); apply rule #]]
+    change with (a1=a1); apply rule #;]
+  clear Hletin Hletin1; cases Hletin2; whd in x2; 
+qed.
+*)
+lemma curry: ∀A,B,C.binary_morphism1 A B C → A → B ⇒ C.
+ intros;
+ constructor 1;
+  [ apply (b c);
+  | intros; apply (#‡e); ]
+qed.
+
+notation < "F x" left associative with precedence 60 for @{'map_arrows $F $x}.
+interpretation "map arrows 2" 'map_arrows F x = (fun12 ? ? (map_arrows2 ? ? F ? ?) x).
+
+definition preserve_sup : ∀S,T.∀ f:Ω \sup S ⇒ Ω \sup T. CProp1.
+intros (S T f); apply (∀X:Ω \sup S. (f X) = ?);
+constructor 1; constructor 1;
+[ intro y; alias symbol "singl" = "singleton". alias symbol "and" = "and_morphism".
+  apply (∃x:S. x ∈ X ∧ y ∈ f {(x)});
+| intros (a b H); split; intro E; cases E; clear E; exists; [1,3:apply w]
+  [ apply (. #‡(H^-1‡#)); | apply (. #‡(H‡#));] assumption]
+qed.
+
+alias symbol "singl" = "singleton".
+lemma eq_cones_to_eq_rel: 
+  ∀S,T. ∀f,g: arrows1 REL S T.
+   (∀x. curry ??? (image ??) f {(x)} = curry ??? (image ??) g {(x)}) → f = g.
+intros; intros 2 (a b); split; intro;
+[ cases (f1 a); lapply depth=0 (s b); clear s s1;
+  lapply (Hletin); clear Hletin;
+   [ cases Hletin1; cases x; change in f4 with (a = w);
+     change with (a ♮g b); apply (. f4‡#); assumption;
+   | exists; [apply a] split; [ assumption | change with (a=a); apply rule #;]]
+| cases (f1 a); lapply depth=0 (s1 b); clear s s1;
+  lapply (Hletin); clear Hletin;
+   [ cases Hletin1; cases x; change in f4 with (a = w);
+     change with (a ♮f b); apply (. f4‡#); assumption;
+   | exists; [apply a] split; [ assumption | change with (a=a); apply rule #;]]]
+qed.
+
+variant eq_cones_to_eq_rel': 
+  ∀S,T. ∀f,g: arrows1 REL S T.
+   (∀x:S. or_f ?? (map_arrows2 ?? POW S T f) {(x)} = or_f ?? (map_arrows2 ?? POW S T g) {(x)}) →
+    f = g
+≝ eq_cones_to_eq_rel.
+
+lemma rOR_full : 
+  ∀s,t:rOBP.∀f:arrows2 OBTop (OR (ℱ_2 s)) (OR (ℱ_2 t)).
+    exT22 ? (λg:arrows2 rOBP s t.
+       map_arrows2 ?? OR ?? (ℳ_2 g) = f). 
+intros 2 (s t); cases s (s_2 s_1 s_eq); clear s;
+change in match (F2 ??? (mk_Fo ??????)) with s_2;
+cases s_eq; clear s_eq s_2;
+letin s1 ≝ (BP_to_OBP s_1); change in match (BP_to_OBP s_1) with s1;
+cases t (t_2 t_1 t_eq); clear t;
+change in match (F2 ??? (mk_Fo ??????)) with t_2;
+cases t_eq; clear t_eq t_2;
+letin t1 ≝ (BP_to_OBP t_1); change in match (BP_to_OBP t_1) with t1;
+whd in ⊢ (%→?); whd in ⊢ (? (? ? ? ? %) (? ? ? ? %)→?);
+intro; whd in s_1 t_1; 
+letin R ≝ (? : (carr2 (arrows2 (category2_of_category1 BP) s_1 t_1))); 
+[2:
+  exists;
+    [ constructor 1;
+       [2: simplify; apply R;
+       | simplify; apply (fun12 ?? (map_arrows2 ?? BP_to_OBP s_1 t_1)); apply R;
+       | simplify; apply rule #; ]]
+   simplify;
+|1: constructor 1;   
+    [2: apply (pi1exT22 ?? (POW_full (form s_1) (form t_1) f));
+    |1: letin u ≝ (or_f_star ?? (map_arrows2 ?? POW (concr t_1) (form t_1) (⊩ \sub t_1)));
+        letin r ≝ (u ∘ (or_f ?? f));
+        letin xxx ≝ (or_f ?? (map_arrows2 ?? POW (concr s_1) (form s_1) (⊩ \sub s_1)));
+        letin r' ≝ (r ∘ xxx); clearbody r';
+        apply (POW_full' (concr s_1) (concr t_1) r');    
+    | simplify in ⊢ (? ? ? (? ? ? ? ? % ?) ?);
+      apply eq_cones_to_eq_rel'; intro;
+      apply
+       (cic:/matita/logic/equality/eq_elim_r''.con ?????
+         (category2_of_category1_respects_comp_r : ?));
+      apply rule (.= (#‡#));
+      apply (.= (respects_comp2 ?? POW (concr s_1) (concr t_1) (form t_1) ? (⊩\sub t_1))‡#); 
+      apply sym2;
+      apply (.= (respects_comp2 ?? POW (concr s_1) (form s_1) (form t_1) (⊩\sub s_1) (pi1exT22 ?? (POW_full (form s_1) (form t_1) (Ocont_rel ?? f)))));
+      apply (let H ≝(\snd (POW_full (form s_1) (form t_1) (Ocont_rel ?? f))) in .= #‡H);
+      apply sym2;      
+ ]
+
+STOP;
+
+(* Todo: rename BTop → OBTop *)
+
+(* scrivo gli statement qua cosi' verra' un conflitto :-)
+
+1. definire il funtore OR
+2. dimostrare che ORel e' faithful
+
+3. Definire la funzione
+    Apply:
+    ∀C1,C2: CAT2.  F: arrows3 CAT2 C1 C2 → CAT2
+    ≝ 
+     constructor 1;
+      [ gli oggetti sono gli oggetti di C1 mappati da F
+      | i morfismi i morfismi di C1 mappati da F
+      | ....
+      ]
+   
+   E : objs CATS === Σx.∃y. F y = x
+  
+   Quindi (Apply C1 C2 F) (che usando da ora in avanti una coercion
+   scrivero' (F C1) ) e' l'immagine di C1 tramite F ed e'
+   una sottocategoria di C2 (qualcosa da dimostare qui??? vedi sotto
+   al punto 5)
+
+4. Definire rOBP (le OBP rappresentabili) come (BP_to_OBP BP)
+  [Si puo' fare lo stesso per le OA: rOA ≝ Rel_to_OA REL ]
+
+5. Dimostrare che OR (il funtore faithful da OBP a OBTop) e' full
+   quando applicato a rOBP.
+   Nota: puo' darsi che faccia storie ad accettare lo statement.
+   Infatti rOBP e' (BP_to_OBP BP) ed e' "una sottocategoria di OBP"
+   e OR va da OBP a OBTop. Non so se tipa subito o se devi dare
+   una "proiezione" da rOBP a OBP.
+
+6. Definire rOBTop come (OBP_to_OBTop rOBP).
+
+7. Per composizione si ha un funtore full and faithful da BP a rOBTop:
+   basta prendere (OR ∘ BP_to_OBP).
+
+8. Dimostrare (banale: quasi tutti i campi sono per conversione) che
+   esiste un funtore da rOBTop a BTop. Dimostrare che tale funtore e'
+   faithful e full (banale: tutta conversione).
+
+9. Per composizione si ha un funtore full and faithful da BP a BTop.
+
+10. Dimostrare che i seguenti funtori sono anche isomorphism-dense
+    (http://planetmath.org/encyclopedia/DenseFunctor.html):
+
+    BP_to_OBP
+    OBP_to_OBTop quando applicato alle rOBP
+    OBTop_to_BTop quando applicato alle rOBTop
+
+    Concludere per composizione che anche il funtore da BP a BTop e'
+    isomorphism-dense.
+
+====== Da qui in avanti non e' "necessario" nulla:
+
+== altre cose mancanti
+
+11. Dimostrare che le r* e le * orrizzontali
+    sono isomorfe dando il funtore da r* a * e dimostrando che componendo i
+    due funtori ottengo l'identita'
+
+12. La definizione di r* fa schifo: in pratica dici solo come ottieni
+    qualcosa, ma non come lo caratterizzeresti. Ora un teorema carino
+    e' che una a* (e.g. una aOBP) e' sempre una rOBP dove "a" sta per
+    atomic. Dimostrarlo per tutte le r*.
+
+== categorish/future works
+
+13. definire astrattamente la FG-completion e usare quella per
+    ottenere le BP da Rel e le OBP da OA.
+
+14. indebolire le OA, generalizzare le costruzioni, etc. come detto
+    con Giovanni
+
+*)
+
diff --git a/helm/software/matita/contribs/formal_topology/overlap/relations.ma b/helm/software/matita/contribs/formal_topology/overlap/relations.ma
new file mode 100644 (file)
index 0000000..662c7d0
--- /dev/null
@@ -0,0 +1,293 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "subsets.ma".
+
+record binary_relation (A,B: SET) : Type1 ≝
+ { satisfy:> binary_morphism1 A B CPROP }.
+
+notation < "hvbox (x \nbsp \natur term 90 r \nbsp y)"  with precedence 45 for @{'satisfy $r $x $y}.
+notation > "hvbox (x \natur term 90 r y)"  with precedence 45 for @{'satisfy $r $x $y}.
+interpretation "relation applied" 'satisfy r x y = (fun21 ??? (satisfy ?? r) x y).
+
+definition binary_relation_setoid: SET → SET → setoid1.
+ intros (A B);
+ constructor 1;
+  [ apply (binary_relation A B)
+  | constructor 1;
+     [ apply (λA,B.λr,r': binary_relation A B. ∀x,y. r x y ↔ r' x y)
+     | simplify; intros 3; split; intro; assumption
+     | simplify; intros 5; split; intro;
+       [ apply (fi ?? (f ??)) | apply (if ?? (f ??))] assumption
+     | simplify;  intros 7; split; intro;
+        [ apply (if ?? (f1 ??)) | apply (fi ?? (f ??)) ]
+        [ apply (if ?? (f ??)) | apply (fi ?? (f1 ??)) ]
+       assumption]]
+qed.
+
+definition binary_relation_of_binary_relation_setoid : 
+  ∀A,B.binary_relation_setoid A B → binary_relation A B ≝ λA,B,c.c.
+coercion binary_relation_of_binary_relation_setoid.
+
+definition composition:
+ ∀A,B,C.
+  binary_morphism1 (binary_relation_setoid A B) (binary_relation_setoid B C) (binary_relation_setoid A C).
+ intros;
+ constructor 1;
+  [ intros (R12 R23);
+    constructor 1;
+    constructor 1;
+     [ apply (λs1:A.λs3:C.∃s2:B. s1 ♮R12 s2 ∧ s2 ♮R23 s3);
+     | intros;
+       split; intro; cases e2 (w H3); clear e2; exists; [1,3: apply w ]
+        [ apply (. (e^-1‡#)‡(#‡e1^-1)); assumption
+        | apply (. (e‡#)‡(#‡e1)); assumption]]
+  | intros 8; split; intro H2; simplify in H2 ⊢ %;
+    cases H2 (w H3); clear H2; exists [1,3: apply w] cases H3 (H2 H4); clear H3;
+    [ lapply (if ?? (e x w) H2) | lapply (fi ?? (e x w) H2) ]
+    [ lapply (if ?? (e1 w y) H4)| lapply (fi ?? (e1 w y) H4) ]
+    exists; try assumption;
+    split; assumption]
+qed.
+
+definition REL: category1.
+ constructor 1;
+  [ apply setoid
+  | intros (T T1); apply (binary_relation_setoid T T1)
+  | intros; constructor 1;
+    constructor 1; unfold setoid1_of_setoid; simplify;
+     [ (* changes required to avoid universe inconsistency *)
+       change with (carr o → carr o → CProp); intros; apply (eq ? c c1)
+     | intros; split; intro; change in a a' b b' with (carr o);
+       change in e with (eq ? a a'); change in e1 with (eq ? b b');
+        [ apply (.= (e ^ -1));
+          apply (.= e2);
+          apply e1
+        | apply (.= e);
+          apply (.= e2);
+          apply (e1 ^ -1)]]
+  | apply composition
+  | intros 9;
+    split; intro;
+    cases f (w H); clear f; cases H; clear H;
+    [cases f (w1 H); clear f | cases f1 (w1 H); clear f1]
+    cases H; clear H;
+    exists; try assumption;
+    split; try assumption;
+    exists; try assumption;
+    split; assumption
+  |6,7: intros 5; unfold composition; simplify; split; intro;
+        unfold setoid1_of_setoid in x y; simplify in x y;
+        [1,3: cases e (w H1); clear e; cases H1; clear H1; unfold;
+          [ apply (. (e : eq1 ? x w)‡#); assumption
+          | apply (. #‡(e : eq1 ? w y)^-1); assumption]
+        |2,4: exists; try assumption; split;
+          (* change required to avoid universe inconsistency *)
+          change in x with (carr o1); change in y with (carr o2);
+          first [apply refl | assumption]]]
+qed.
+
+definition setoid_of_REL : objs1 REL → setoid ≝ λx.x.
+coercion setoid_of_REL.
+
+definition binary_relation_setoid_of_arrow1_REL : 
+  ∀P,Q. arrows1 REL P Q → binary_relation_setoid P Q ≝ λP,Q,x.x.
+coercion binary_relation_setoid_of_arrow1_REL.
+
+definition full_subset: ∀s:REL. Ω \sup s.
+ apply (λs.{x | True});
+ intros; simplify; split; intro; assumption.
+qed.
+
+coercion full_subset.
+
+definition comprehension: ∀b:REL. (unary_morphism1 b CPROP) → Ω \sup b.
+ apply (λb:REL. λP: b ⇒ CPROP. {x | P x});
+ intros; simplify;
+ alias symbol "trans" = "trans1".
+ alias symbol "prop1" = "prop11".
+ apply (.= †e); apply refl1.
+qed.
+
+interpretation "subset comprehension" 'comprehension s p =
+ (comprehension s (mk_unary_morphism1 ?? p ?)).
+
+definition ext: ∀X,S:REL. binary_morphism1 (arrows1 ? X S) S (Ω \sup X).
+ apply (λX,S.mk_binary_morphism1 ??? (λr:arrows1 REL X S.λf:S.{x ∈ X | x ♮r f}) ?);
+  [ intros; simplify; apply (.= (e‡#)); apply refl1
+  | intros; simplify; split; intros; simplify;
+     [ change with (∀x. x ♮a b → x ♮a' b'); intros;
+       apply (. (#‡e1^-1)); whd in e; apply (if ?? (e ??)); assumption
+     | change with (∀x. x ♮a' b' → x ♮a b); intros;
+       apply (. (#‡e1)); whd in e; apply (fi ?? (e ??));assumption]]
+qed.
+(*
+definition extS: ∀X,S:REL. ∀r: arrows1 ? X S. Ω \sup S ⇒ Ω \sup X.
+ (* ∃ is not yet a morphism apply (λX,S,r,F.{x ∈ X | ∃a. a ∈ F ∧ x ♮r a});*)
+ intros (X S r); constructor 1;
+  [ intro F; constructor 1; constructor 1;
+    [ apply (λx. x ∈ X ∧ ∃a:S. a ∈ F ∧ x ♮r a);
+    | intros; split; intro; cases f (H1 H2); clear f; split;
+       [ apply (. (H‡#)); assumption
+       |3: apply (. (H\sup -1‡#)); assumption
+       |2,4: cases H2 (w H3); exists; [1,3: apply w]
+         [ apply (. (#‡(H‡#))); assumption
+         | apply (. (#‡(H \sup -1‡#))); assumption]]]
+  | intros; split; simplify; intros; cases f; cases H1; split;
+     [1,3: assumption
+     |2,4: exists; [1,3: apply w]
+      [ apply (. (#‡H)‡#); assumption
+      | apply (. (#‡H\sup -1)‡#); assumption]]]
+qed.
+
+lemma equalset_extS_id_X_X: ∀o:REL.∀X.extS ?? (id1 ? o) X = X.
+ intros;
+ unfold extS; simplify;
+ split; simplify;
+  [ intros 2; change with (a ∈ X);
+    cases f; clear f;
+    cases H; clear H;
+    cases x; clear x;
+    change in f2 with (eq1 ? a w);
+    apply (. (f2\sup -1‡#));
+    assumption
+  | intros 2; change in f with (a ∈ X);
+    split;
+     [ whd; exact I 
+     | exists; [ apply a ]
+       split;
+        [ assumption
+        | change with (a = a); apply refl]]]
+qed.
+
+lemma extS_com: ∀o1,o2,o3,c1,c2,S. extS o1 o3 (c2 ∘ c1) S = extS o1 o2 c1 (extS o2 o3 c2 S).
+ intros; unfold extS; simplify; split; intros; simplify; intros;
+  [ cases f (H1 H2); cases H2 (w H3); clear f H2; split; [assumption]
+    cases H3 (H4 H5); cases H5 (w1 H6); clear H3 H5; cases H6 (H7 H8); clear H6;
+    exists; [apply w1] split [2: assumption] constructor 1; [assumption]
+    exists; [apply w] split; assumption
+  | cases f (H1 H2); cases H2 (w H3); clear f H2; split; [assumption]
+    cases H3 (H4 H5); cases H4 (w1 H6); clear H3 H4; cases H6 (w2 H7); clear H6;
+    cases H7; clear H7; exists; [apply w2] split; [assumption] exists [apply w] split;
+    assumption]
+qed.
+*)
+
+(* the same as ⋄ for a basic pair *)
+definition image: ∀U,V:REL. binary_morphism1 (arrows1 ? U V) (Ω \sup U) (Ω \sup V).
+ intros; constructor 1;
+  [ apply (λr: arrows1 ? U V.λS: Ω \sup U. {y | ∃x:U. x ♮r y ∧ x ∈ S });
+    intros; simplify; split; intro; cases e1; exists [1,3: apply w]
+     [ apply (. (#‡e^-1)‡#); assumption
+     | apply (. (#‡e)‡#); assumption]
+  | intros; split; simplify; intros; cases e2; exists [1,3: apply w]
+     [ apply (. #‡(#‡e1^-1)); cases x; split; try assumption;
+       apply (if ?? (e ??)); assumption
+     | apply (. #‡(#‡e1)); cases x; split; try assumption;
+       apply (if ?? (e ^ -1 ??)); assumption]]
+qed.
+
+(* the same as □ for a basic pair *)
+definition minus_star_image: ∀U,V:REL. binary_morphism1 (arrows1 ? U V) (Ω \sup U) (Ω \sup V).
+ intros; constructor 1;
+  [ apply (λr: arrows1 ? U V.λS: Ω \sup U. {y | ∀x:U. x ♮r y → x ∈ S});
+    intros; simplify; split; intros; apply f;
+     [ apply (. #‡e); assumption
+     | apply (. #‡e ^ -1); assumption]
+  | intros; split; simplify; intros; [ apply (. #‡e1^ -1); | apply (. #‡e1 )]
+    apply f; [ apply (if ?? (e ^ -1 ??)); | apply (if ?? (e ??)) ] assumption]
+qed.
+
+(* the same as Rest for a basic pair *)
+definition star_image: ∀U,V:REL. binary_morphism1 (arrows1 ? U V) (Ω \sup V) (Ω \sup U).
+ intros; constructor 1;
+  [ apply (λr: arrows1 ? U V.λS: Ω \sup V. {x | ∀y:V. x ♮r y → y ∈ S});
+    intros; simplify; split; intros; apply f;
+     [ apply (. e ‡#); assumption
+     | apply (. e^ -1‡#); assumption]
+  | intros; split; simplify; intros; [ apply (. #‡e1 ^ -1); | apply (. #‡e1)]
+    apply f; [ apply (if ?? (e ^ -1 ??)); | apply (if ?? (e ??)) ] assumption]
+qed.
+
+(* the same as Ext for a basic pair *)
+definition minus_image: ∀U,V:REL. binary_morphism1 (arrows1 ? U V) (Ω \sup V) (Ω \sup U).
+ intros; constructor 1;
+  [ apply (λr: arrows1 ? U V.λS: Ω \sup V. {x | (*∃x:U. x ♮r y ∧ x ∈ S*)
+      exT ? (λy:V.x ♮r y ∧ y ∈ S) });
+    intros; simplify; split; intro; cases e1; exists [1,3: apply w]
+     [ apply (. (e ^ -1‡#)‡#); assumption
+     | apply (. (e‡#)‡#); assumption]
+  | intros; split; simplify; intros; cases e2; exists [1,3: apply w]
+     [ apply (. #‡(#‡e1 ^ -1)); cases x; split; try assumption;
+       apply (if ?? (e ??)); assumption
+     | apply (. #‡(#‡e1)); cases x; split; try assumption;
+       apply (if ?? (e ^ -1 ??)); assumption]]
+qed.
+
+(*
+(* minus_image is the same as ext *)
+
+theorem image_id: ∀o,U. image o o (id1 REL o) U = U.
+ intros; unfold image; simplify; split; simplify; intros;
+  [ change with (a ∈ U);
+    cases H; cases x; change in f with (eq1 ? w a); apply (. f‡#); assumption
+  | change in f with (a ∈ U);
+    exists; [apply a] split; [ change with (a = a); apply refl | assumption]]
+qed.
+
+theorem minus_star_image_id: ∀o,U. minus_star_image o o (id1 REL o) U = U.
+ intros; unfold minus_star_image; simplify; split; simplify; intros;
+  [ change with (a ∈ U); apply H; change with (a=a); apply refl
+  | change in f1 with (eq1 ? x a); apply (. f1 \sup -1‡#); apply f]
+qed.
+
+theorem image_comp: ∀A,B,C,r,s,X. image A C (r ∘ s) X = image B C r (image A B s X).
+ intros; unfold image; simplify; split; simplify; intros; cases H; clear H; cases x;
+ clear x; [ cases f; clear f; | cases f1; clear f1 ]
+ exists; try assumption; cases x; clear x; split; try assumption;
+ exists; try assumption; split; assumption.
+qed.
+
+theorem minus_star_image_comp:
+ ∀A,B,C,r,s,X.
+  minus_star_image A C (r ∘ s) X = minus_star_image B C r (minus_star_image A B s X).
+ intros; unfold minus_star_image; simplify; split; simplify; intros; whd; intros;
+  [ apply H; exists; try assumption; split; assumption
+  | change with (x ∈ X); cases f; cases x1; apply H; assumption]
+qed.
+
+(*CSC: unused! *)
+theorem ext_comp:
+ ∀o1,o2,o3: REL.
+  ∀a: arrows1 ? o1 o2.
+   ∀b: arrows1 ? o2 o3.
+    ∀x. ext ?? (b∘a) x = extS ?? a (ext ?? b x).
+ intros;
+ unfold ext; unfold extS; simplify; split; intro; simplify; intros;
+ cases f; clear f; split; try assumption;
+  [ cases f2; clear f2; cases x1; clear x1; exists; [apply w] split;
+     [1: split] assumption;
+  | cases H; clear H; cases x1; clear x1; exists [apply w]; split;
+     [2: cases f] assumption]
+qed.
+
+theorem extS_singleton:
+ ∀o1,o2.∀a:arrows1 ? o1 o2.∀x.extS o1 o2 a (singleton o2 x) = ext o1 o2 a x.
+ intros; unfold extS; unfold ext; unfold singleton; simplify;
+ split; intros 2; simplify; cases f; split; try assumption;
+  [ cases H; cases x1; change in f2 with (eq1 ? x w); apply (. #‡f2 \sup -1);
+    assumption
+  | exists; try assumption; split; try assumption; change with (x = x); apply refl]
+qed.
+*)
diff --git a/helm/software/matita/contribs/formal_topology/overlap/relations_to_o-algebra.ma b/helm/software/matita/contribs/formal_topology/overlap/relations_to_o-algebra.ma
new file mode 100644 (file)
index 0000000..8422192
--- /dev/null
@@ -0,0 +1,264 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "relations.ma".
+include "o-algebra.ma".
+
+definition POW': objs1 SET → OAlgebra.
+ intro A; constructor 1;
+  [ apply (Ω \sup A);
+  | apply subseteq;
+  | apply overlaps;
+  | apply big_intersects;
+  | apply big_union;
+  | apply ({x | True});
+    simplify; intros; apply (refl1 ? (eq1 CPROP));
+  | apply ({x | False});
+    simplify; intros; apply (refl1 ? (eq1 CPROP));
+  | intros; whd; intros; assumption
+  | intros; whd; split; assumption
+  | intros; apply transitive_subseteq_operator; [2: apply f; | skip | assumption]
+  | intros; cases f; exists [apply w] assumption
+  | intros; split; [ intros 4; apply (f ? f1 i); | intros 3; intro; apply (f i ? f1); ]
+  | intros; split;
+     [ intros 4; apply f; exists; [apply i] assumption;
+     | intros 3; intros; cases f1; apply (f w a x); ]
+  | intros 3; cases f;
+  | intros 3; constructor 1;
+  | intros; cases f; exists; [apply w]
+     [ assumption
+     | whd; intros; cases i; simplify; assumption]
+  | intros; split; intro;
+     [ cases f; cases x1; exists [apply w1] exists [apply w] assumption;
+     | cases e; cases x; exists; [apply w1] [ assumption | exists; [apply w] assumption]]
+  | intros; intros 2; cases (f {(a)} ?); 
+     [ exists; [apply a] [assumption | change with (a = a); apply refl1;]
+     | change in x1 with (a = w); change with (mem A a q); apply (. (x1‡#));
+       assumption]]
+qed.
+
+definition powerset_of_POW': ∀A.oa_P (POW' A) → Ω \sup A ≝ λA,x.x.
+coercion powerset_of_POW'.
+
+definition orelation_of_relation: ∀o1,o2:REL. arrows1 ? o1 o2 → arrows2 OA (POW' o1) (POW' o2).
+ intros;
+ constructor 1;
+  [ constructor 1; 
+     [ apply (λU.image ?? c U);
+     | intros; apply (#‡e); ]
+  | constructor 1;
+     [ apply (λU.minus_star_image ?? c U);
+     | intros; apply (#‡e); ]
+  | constructor 1;
+     [ apply (λU.star_image ?? c U);
+     | intros; apply (#‡e); ]
+  | constructor 1;
+     [ apply (λU.minus_image ?? c U);
+     | intros; apply (#‡e); ]
+  | intros; split; intro;
+     [ change in f with (∀a. a ∈ image ?? c p → a ∈ q);
+       change with (∀a:o1. a ∈ p → a ∈ star_image ?? c q);
+       intros 4; apply f; exists; [apply a] split; assumption;
+     | change in f with (∀a:o1. a ∈ p → a ∈ star_image ?? c q);
+       change with (∀a. a ∈ image ?? c p → a ∈ q);
+       intros; cases f1; cases x; clear f1 x; apply (f ? f3); assumption; ]
+  | intros; split; intro;
+     [ change in f with (∀a. a ∈ minus_image ?? c p → a ∈ q);
+       change with (∀a:o2. a ∈ p → a ∈ minus_star_image ?? c q);
+       intros 4; apply f; exists; [apply a] split; assumption;
+     | change in f with (∀a:o2. a ∈ p → a ∈ minus_star_image ?? c q);
+       change with (∀a. a ∈ minus_image ?? c p → a ∈ q);
+       intros; cases f1; cases x; clear f1 x; apply (f ? f3); assumption; ]
+  | intros; split; intro; cases f; clear f;
+     [ cases x; cases x2; clear x x2; exists; [apply w1]
+        [ assumption;
+        | exists; [apply w] split; assumption]
+     | cases x1; cases x2; clear x1 x2; exists; [apply w1]
+        [ exists; [apply w] split; assumption;
+        | assumption; ]]]
+qed.
+
+lemma orelation_of_relation_preserves_equality:
+ ∀o1,o2:REL.∀t,t': arrows1 ? o1 o2. t = t' → eq2 ? (orelation_of_relation ?? t) (orelation_of_relation ?? t').
+ intros; split; unfold orelation_of_relation; simplify; intro; split; intro;
+ simplify; whd in o1 o2;
+  [ change with (a1 ∈ minus_star_image ?? t a → a1 ∈ minus_star_image ?? t' a);
+    apply (. #‡(e^-1‡#));
+  | change with (a1 ∈ minus_star_image ?? t' a → a1 ∈ minus_star_image ?? t a);
+    apply (. #‡(e‡#));
+  | change with (a1 ∈ minus_image ?? t a → a1 ∈ minus_image ?? t' a);
+    apply (. #‡(e ^ -1‡#));
+  | change with (a1 ∈ minus_image ?? t' a → a1 ∈ minus_image ?? t a);
+    apply (. #‡(e‡#));
+  | change with (a1 ∈ image ?? t a → a1 ∈ image ?? t' a);
+    apply (. #‡(e ^ -1‡#));
+  | change with (a1 ∈ image ?? t' a → a1 ∈ image ?? t a);
+    apply (. #‡(e‡#));
+  | change with (a1 ∈ star_image ?? t a → a1 ∈ star_image ?? t' a);
+    apply (. #‡(e ^ -1‡#));
+  | change with (a1 ∈ star_image ?? t' a → a1 ∈ star_image ?? t a);
+    apply (. #‡(e‡#)); ]
+qed.
+
+lemma orelation_of_relation_preserves_identity:
+ ∀o1:REL. eq2 ? (orelation_of_relation ?? (id1 ? o1)) (id2 OA (POW' o1)).
+ intros; split; intro; split; whd; intro; 
+  [ change with ((∀x. x ♮(id1 REL o1) a1→x∈a) → a1 ∈ a); intros;
+    apply (f a1); change with (a1 = a1); apply refl1;
+  | change with (a1 ∈ a → ∀x. x ♮(id1 REL o1) a1→x∈a); intros;
+    change in f1 with (x = a1); apply (. f1‡#); apply f;
+  | alias symbol "and" = "and_morphism".
+    change with ((∃y:o1.a1 ♮(id1 REL o1) y ∧ y∈a) → a1 ∈ a);
+    intro; cases e; clear e; cases x; clear x; change in f with (a1=w);
+    apply (. f‡#); apply f1;
+  | change with (a1 ∈ a → ∃y:o1.a1 ♮(id1 REL o1) y ∧ y∈a);
+    intro; exists; [apply a1]; split; [ change with (a1=a1); apply refl1; | apply f]
+  | change with ((∃x:o1.x ♮(id1 REL o1) a1∧x∈a) → a1 ∈ a);
+    intro; cases e; clear e; cases x; clear x; change in f with (w=a1);
+    apply (. f^-1‡#); apply f1;
+  | change with (a1 ∈ a → ∃x:o1.x ♮(id1 REL o1) a1∧x∈a);
+    intro; exists; [apply a1]; split; [ change with (a1=a1); apply refl1; | apply f]
+  | change with ((∀y.a1 ♮(id1 REL o1) y→y∈a) → a1 ∈ a); intros;
+    apply (f a1); change with (a1 = a1); apply refl1;
+  | change with (a1 ∈ a → ∀y.a1 ♮(id1 REL o1) y→y∈a); intros;
+    change in f1 with (a1 = y); apply (. f1^-1‡#); apply f;]
+qed.
+
+(* CSC: ???? forse un uncertain mancato *)
+alias symbol "eq" = "setoid2 eq".
+alias symbol "compose" = "category1 composition".
+lemma orelation_of_relation_preserves_composition:
+ ∀o1,o2,o3:REL.∀F: arrows1 ? o1 o2.∀G: arrows1 ? o2 o3.
+  orelation_of_relation ?? (G ∘ F) =
+   comp2 OA (POW' o1) (POW' o2) (POW' o3)
+    ?? (*(orelation_of_relation ?? F) (orelation_of_relation ?? G)*).
+ [ apply (orelation_of_relation ?? F); | apply (orelation_of_relation ?? G); ]
+ intros; split; intro; split; whd; intro; whd in ⊢ (% → %); intros;
+  [ whd; intros; apply f; exists; [ apply x] split; assumption; 
+  | cases f1; clear f1; cases x1; clear x1; apply (f w); assumption;
+  | cases e; cases x; cases f; cases x1; clear e x f x1; exists; [ apply w1 ]
+    split; [ assumption | exists; [apply w] split; assumption ]
+  | cases e; cases x; cases f1; cases x1; clear e x f1 x1; exists; [apply w1 ]
+    split; [ exists; [apply w] split; assumption | assumption ]
+  | unfold arrows1_of_ORelation_setoid; 
+    cases e; cases x; cases f; cases x1; clear e x f x1; exists; [ apply w1 ]
+    split; [ assumption | exists; [apply w] split; assumption ]
+  | unfold arrows1_of_ORelation_setoid in e; 
+    cases e; cases x; cases f1; cases x1; clear e x f1 x1; exists; [apply w1 ]
+    split; [ exists; [apply w] split; assumption | assumption ]
+  | whd; intros; apply f; exists; [ apply y] split; assumption;
+  | cases f1; clear f1; cases x; clear x; apply (f w); assumption;]
+qed.
+
+definition POW: carr3 (arrows3 CAT2 (category2_of_category1 REL) OA).
+ constructor 1;
+  [ apply POW';
+  | intros; constructor 1;
+     [ apply (orelation_of_relation S T);
+     | intros; apply (orelation_of_relation_preserves_equality S T a a' e); ]
+  | apply orelation_of_relation_preserves_identity;
+  | apply orelation_of_relation_preserves_composition; ]
+qed.
+
+theorem POW_faithful:
+ ∀S,T.∀f,g:arrows2 (category2_of_category1 REL) S T.
+  map_arrows2 ?? POW ?? f = map_arrows2 ?? POW ?? g → f=g.
+ intros; unfold POW in e; simplify in e; cases e;
+ unfold orelation_of_relation in e3; simplify in e3; clear e e1 e2 e4;
+ intros 2; cases (e3 {(x)}); 
+ split; intro; [ lapply (s y); | lapply (s1 y); ]
+  [2,4: exists; [1,3:apply x] split; [1,3: assumption |*: change with (x=x); apply rule #]
+  |*: cases Hletin; cases x1; change in f3 with (x =_1 w); apply (. f3‡#); assumption;]
+qed.
+
+
+lemma currify: ∀A,B,C. binary_morphism1 A B C → A → unary_morphism1 B C.
+intros; constructor 1; [ apply (b c); | intros; apply (#‡e);]
+qed.
+
+(*
+alias symbol "singl" = "singleton".
+alias symbol "eq" = "setoid eq".
+lemma in_singleton_to_eq : ∀A:setoid.∀y,x:A.y ∈ {(x)} → (eq1 A) y x.
+intros; apply sym1; apply f;
+qed.  
+
+lemma eq_to_in_singleton : ∀A:setoid.∀y,x:A.eq1 A y x → y ∈ {(x)}.
+intros; apply (e^-1);
+qed.
+*)
+
+interpretation "lifting singl" 'singl x = 
+ (fun11 ? (objs2 (POW ?))  (singleton ?) x).
+
+theorem POW_full: ∀S,T.∀f. exT22 ? (λg. map_arrows2 ?? POW S T g = f).
+ intros; exists;
+  [ constructor 1; constructor 1;
+     [ apply (λx:carr S.λy:carr T. y ∈ f {(x)});
+     | intros; unfold FunClass_1_OF_carr2; lapply (.= e1‡#);
+        [4: apply mem; |6: apply Hletin;|1,2,3,5: skip]
+       lapply (#‡prop11 ?? f ?? (†e)); [6: apply Hletin; |*:skip ]]  
+     | whd; split; whd; intro; simplify; unfold map_arrows2; simplify; 
+        [ split;
+           [ change with (∀a1.(∀x. a1 ∈ f (singleton S x) → x ∈ a) → a1 ∈ f⎻* a);
+           | change with (∀a1.a1 ∈ f⎻* a → (∀x.a1 ∈ f (singleton S x) → x ∈ a)); ]
+        | split;
+           [ change with (∀a1.(∃y:carr T. y ∈ f (singleton S a1) ∧ y ∈ a) → a1 ∈ f⎻ a);
+           | change with (∀a1.a1 ∈ f⎻ a → (∃y:carr T.y ∈ f (singleton S a1) ∧ y ∈ a)); ]
+        | split;
+           [ change with (∀a1.(∃x:carr S. a1 ∈ f (singleton S x) ∧ x ∈ a) → a1 ∈ f a);
+           | change with (∀a1.a1 ∈ f a → (∃x:carr S. a1 ∈ f (singleton S x) ∧ x ∈ a)); ]
+        | split;
+           [ change with (∀a1.(∀y. y ∈ f (singleton S a1) → y ∈ a) → a1 ∈ f* a);
+           | change with (∀a1.a1 ∈ f* a → (∀y. y ∈ f (singleton S a1) → y ∈ a)); ]]
+        [ intros; apply ((. (or_prop2 ?? f (singleton ? a1) a)^-1) ? a1);
+           [ intros 2; apply (f1 a2); change in f2 with (a2 ∈ f⎻ (singleton ? a1));
+             lapply (. (or_prop3 ?? f (singleton ? a2) (singleton ? a1)));
+              [ cases Hletin; change in x1 with (eq1 ? a1 w);
+                apply (. x1‡#); assumption;
+              | exists; [apply a2] [change with (a2=a2); apply rule #; | assumption]]
+           | change with (a1 = a1); apply rule #; ]
+        | intros; apply ((. (or_prop2 ?? f (singleton ? a1) a)) ? x);
+           [ intros 2; change in f3 with (eq1 ? a1 a2); change with (a2 ∈ f⎻* a); apply (. f3^-1‡#);
+             assumption;
+           | lapply (. (or_prop3 ?? f (singleton ? x) (singleton ? a1))^-1);
+              [ cases Hletin; change in x1 with (eq1 ? x w);
+                change with (x ∈ f⎻ (singleton ? a1)); apply (. x1‡#); assumption;
+              | exists; [apply a1] [assumption | change with (a1=a1); apply rule #; ]]]
+        | intros; cases e; cases x; clear e x;
+          lapply (. (or_prop3 ?? f (singleton ? a1) a)^-1);
+           [ cases Hletin; change in x with (eq1 ? a1 w1); apply (. x‡#); assumption;
+           | exists; [apply w] assumption ]
+        | intros; lapply (. (or_prop3 ?? f (singleton ? a1) a));
+           [ cases Hletin; exists; [apply w] split; assumption;
+           | exists; [apply a1] [change with (a1=a1); apply rule #; | assumption ]] 
+        | intros; cases e; cases x; clear e x;
+          apply (f_image_monotone ?? f (singleton ? w) a ? a1);
+           [ intros 2; change in f3 with (eq1 ? w a2); change with (a2 ∈ a);
+             apply (. f3^-1‡#); assumption;
+           | assumption; ]
+        | intros; lapply (. (or_prop3 ?? f a (singleton ? a1))^-1);
+           [ cases Hletin; exists; [apply w] split;
+              [ lapply (. (or_prop3 ?? f (singleton ? w) (singleton ? a1)));
+                 [ cases Hletin1; change in x3 with (eq1 ? a1 w1); apply (. x3‡#); assumption;
+                 | exists; [apply w] [change with (w=w); apply rule #; | assumption ]]
+              | assumption ]
+           | exists; [apply a1] [ assumption; | change with (a1=a1); apply rule #;]]
+        | intros; apply ((. (or_prop1 ?? f (singleton ? a1) a)^-1) ? a1);
+           [ apply f1; | change with (a1=a1); apply rule #; ]
+        | intros; apply ((. (or_prop1 ?? f (singleton ? a1) a)) ? y);
+           [ intros 2; change in f3 with (eq1 ? a1 a2); change with (a2 ∈ f* a);
+             apply (. f3^-1‡#); assumption;
+           | assumption ]]]
+qed.
\ No newline at end of file
diff --git a/helm/software/matita/contribs/formal_topology/overlap/saturations.ma b/helm/software/matita/contribs/formal_topology/overlap/saturations.ma
new file mode 100644 (file)
index 0000000..b78952f
--- /dev/null
@@ -0,0 +1,40 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "relations.ma".
+
+definition is_saturation: ∀C:REL. unary_morphism1 (Ω \sup C) (Ω \sup C) → CProp1 ≝
+ λC:REL.λA:unary_morphism1 (Ω \sup C) (Ω \sup C).
+  ∀U,V. (U ⊆ A V) = (A U ⊆ A V).
+
+definition is_reduction: ∀C:REL. unary_morphism1 (Ω \sup C) (Ω \sup C) → CProp1 ≝
+ λC:REL.λJ:unary_morphism1 (Ω \sup C) (Ω \sup C).
+  ∀U,V. (J U ⊆ V) = (J U ⊆ J V).
+
+theorem saturation_expansive: ∀C,A. is_saturation C A → ∀U. U ⊆ A U.
+ intros; apply (fi ?? (i ??)); apply subseteq_refl.
+qed.
+
+theorem saturation_monotone:
+ ∀C,A. is_saturation C A →
+  ∀U,V. U ⊆ V → A U ⊆ A V.
+ intros; apply (if ?? (i ??)); apply subseteq_trans; [apply V|3: apply saturation_expansive ]
+ assumption.
+qed.
+
+theorem saturation_idempotent: ∀C,A. is_saturation C A → ∀U. A (A U) = A U.
+ intros; split;
+  [ apply (if ?? (i ??)); apply subseteq_refl
+  | apply saturation_expansive; assumption]
+qed.
diff --git a/helm/software/matita/contribs/formal_topology/overlap/saturations_to_o-saturations.ma b/helm/software/matita/contribs/formal_topology/overlap/saturations_to_o-saturations.ma
new file mode 100644 (file)
index 0000000..88a18fd
--- /dev/null
@@ -0,0 +1,36 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "saturations.ma".
+include "o-saturations.ma".
+include "relations_to_o-algebra.ma".
+
+(* These are only conversions :-) *)
+
+definition o_operator_of_operator:
+ ∀C:REL. (Ω \sup C => Ω \sup C) → (POW C ⇒ POW C).
+ intros (C t);apply t;
+qed.
+
+definition is_o_saturation_of_is_saturation:
+ ∀C:REL.∀R: unary_morphism1 (Ω \sup C) (Ω \sup C).
+  is_saturation ? R → is_o_saturation ? (o_operator_of_operator ? R).
+ intros; apply i;
+qed.
+
+definition is_o_reduction_of_is_reduction:
+ ∀C:REL.∀R: unary_morphism1 (Ω \sup C) (Ω \sup C).
+  is_reduction ? R → is_o_reduction ? (o_operator_of_operator ? R).
+ intros; apply i;
+qed.
\ No newline at end of file
diff --git a/helm/software/matita/contribs/formal_topology/overlap/subsets.ma b/helm/software/matita/contribs/formal_topology/overlap/subsets.ma
new file mode 100644 (file)
index 0000000..3c85523
--- /dev/null
@@ -0,0 +1,167 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "categories.ma".
+
+record powerset_carrier (A: objs1 SET) : Type1 ≝ { mem_operator: unary_morphism1 A CPROP }.
+
+definition subseteq_operator: ∀A: SET. powerset_carrier A → powerset_carrier A → CProp0 ≝
+ λA:objs1 SET.λU,V.∀a:A. mem_operator ? U a → mem_operator ? V a.
+
+theorem transitive_subseteq_operator: ∀A. transitive2 ? (subseteq_operator A).
+ intros 6; intros 2;
+ apply s1; apply s;
+ assumption.
+qed.
+
+definition powerset_setoid1: SET → SET1.
+ intros (T);
+ constructor 1;
+  [ apply (powerset_carrier T)
+  | constructor 1;
+     [ apply (λU,V. subseteq_operator ? U V ∧ subseteq_operator ? V U)
+     | simplify; intros; split; intros 2; assumption
+     | simplify; intros (x y H); cases H; split; assumption
+     | simplify; intros (x y z H H1); cases H; cases H1; split;
+       apply transitive_subseteq_operator; [1,4: apply y ]
+       assumption ]]
+qed.
+
+interpretation "powerset" 'powerset A = (powerset_setoid1 A).
+
+interpretation "subset construction" 'subset \eta.x =
+ (mk_powerset_carrier ? (mk_unary_morphism1 ? CPROP x ?)).
+
+definition mem: ∀A. binary_morphism1 A (Ω \sup A) CPROP.
+ intros;
+ constructor 1;
+  [ apply (λx,S. mem_operator ? S x)
+  | intros 5;
+    cases b; clear b; cases b'; clear b'; simplify; intros;
+    apply (trans1 ????? (prop11 ?? u ?? e));
+    cases e1; whd in s s1;
+    split; intro;
+     [ apply s; assumption
+     | apply s1; assumption]]
+qed.
+
+interpretation "mem" 'mem a S = (fun21 ??? (mem ?) a S).
+
+definition subseteq: ∀A. binary_morphism1 (Ω \sup A) (Ω \sup A) CPROP.
+ intros;
+ constructor 1;
+  [ apply (λU,V. subseteq_operator ? U V)
+  | intros;
+    cases e; cases e1;
+    split; intros 1;
+    [ apply (transitive_subseteq_operator ????? s2);
+      apply (transitive_subseteq_operator ???? s1 s4)
+    | apply (transitive_subseteq_operator ????? s3);
+      apply (transitive_subseteq_operator ???? s s4) ]]
+qed.
+
+interpretation "subseteq" 'subseteq U V = (fun21 ??? (subseteq ?) U V).
+
+
+
+theorem subseteq_refl: ∀A.∀S:Ω \sup A.S ⊆ S.
+ intros 4; assumption.
+qed.
+
+theorem subseteq_trans: ∀A.∀S1,S2,S3: Ω \sup A. S1 ⊆ S2 → S2 ⊆ S3 → S1 ⊆ S3.
+ intros; apply transitive_subseteq_operator; [apply S2] assumption.
+qed.
+
+definition overlaps: ∀A. binary_morphism1 (Ω \sup A) (Ω \sup A) CPROP.
+ intros;
+ constructor 1;
+  (* Se metto x al posto di ? ottengo una universe inconsistency *)
+  [ apply (λA:objs1 SET.λU,V:Ω \sup A.(exT2 ? (λx:A.?(*x*) ∈ U) (λx:A.?(*x*) ∈ V) : CProp0))
+  | intros;
+    constructor 1; intro; cases e2; exists; [1,4: apply w]
+     [ apply (. #‡e^-1); assumption
+     | apply (. #‡e1^-1); assumption
+     | apply (. #‡e); assumption;
+     | apply (. #‡e1); assumption]]
+qed.
+
+interpretation "overlaps" 'overlaps U V = (fun21 ??? (overlaps ?) U V).
+
+definition intersects:
+ ∀A. binary_morphism1 (Ω \sup A) (Ω \sup A) (Ω \sup A).
+ intros;
+ constructor 1;
+  [ apply rule (λU,V. {x | x ∈ U ∧ x ∈ V });
+    intros; simplify; apply (.= (e‡#)‡(e‡#)); apply refl1;
+  | intros;
+    split; intros 2; simplify in f ⊢ %;
+    [ apply (. (#‡e^-1)‡(#‡e1^-1)); assumption
+    | apply (. (#‡e)‡(#‡e1)); assumption]]
+qed.
+
+interpretation "intersects" 'intersects U V = (fun21 ??? (intersects ?) U V).
+
+definition union:
+ ∀A. binary_morphism1 (Ω \sup A) (Ω \sup A) (Ω \sup A).
+ intros;
+ constructor 1;
+  [ apply (λU,V. {x | x ∈ U ∨ x ∈ V });
+    intros; simplify; apply (.= (e‡#)‡(e‡#)); apply refl1
+  | intros;
+    split; intros 2; simplify in f ⊢ %;
+    [ apply (. (#‡e^-1)‡(#‡e1^-1)); assumption
+    | apply (. (#‡e)‡(#‡e1)); assumption]]
+qed.
+
+interpretation "union" 'union U V = (fun21 ??? (union ?) U V).
+
+(* qua non riesco a mettere set *)
+definition singleton: ∀A:setoid. unary_morphism1 A (Ω \sup A).
+ intros; constructor 1;
+  [ apply (λa:A.{b | a =_0 b}); unfold setoid1_of_setoid; simplify;
+    intros; simplify;
+    split; intro;
+    apply (.= e1);
+     [ apply e | apply (e \sup -1) ]
+  | unfold setoid1_of_setoid; simplify;
+    intros; split; intros 2; simplify in f ⊢ %; apply trans;
+     [ apply a |4: apply a'] try assumption; apply sym; assumption]
+qed.
+
+interpretation "singleton" 'singl a = (fun11 ?? (singleton ?) a).
+
+definition big_intersects:
+ ∀A:SET.∀I:SET.unary_morphism2 (setoid1_of_setoid I ⇒ Ω \sup A) (setoid2_of_setoid1 (Ω \sup A)).
+ intros; constructor 1;
+  [ intro; whd; whd in I;
+    apply ({x | ∀i:I. x ∈ c i});
+    simplify; intros; split; intros; [ apply (. (e^-1‡#)); | apply (. e‡#); ]
+    apply f;
+  | intros; split; intros 2; simplify in f ⊢ %; intro;
+     [ apply (. (#‡(e i)^-1)); apply f;
+     | apply (. (#‡e i)); apply f]]
+qed.
+
+definition big_union:
+ ∀A:SET.∀I:SET.unary_morphism2 (setoid1_of_setoid I ⇒ Ω \sup A) (setoid2_of_setoid1 (Ω \sup A)).
+ intros; constructor 1;
+  [ intro; whd; whd in A; whd in I;
+    apply ({x | ∃i:I. x ∈ c i });
+    simplify; intros; split; intros; cases e1; clear e1; exists; [1,3:apply w]
+    [ apply (. (e^-1‡#)); | apply (. (e‡#)); ]
+    apply x;
+  | intros; split; intros 2; simplify in f ⊢ %; cases f; clear f; exists; [1,3:apply w]
+     [ apply (. (#‡(e w)^-1)); apply x;
+     | apply (. (#‡e w)); apply x]]
+qed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/load_write.ma b/helm/software/matita/contribs/ng_assembly/freescale/load_write.ma
new file mode 100755 (executable)
index 0000000..addedf2
--- /dev/null
@@ -0,0 +1,946 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/model.ma".
+include "freescale/translation.ma".
+
+(* errori possibili nel fetch *)
+ninductive error_type : Type ≝
+  ILL_OP: error_type
+| ILL_FETCH_AD: error_type
+| ILL_EX_AD: error_type.
+
+(* un tipo opzione ad hoc
+   - errore: interessa solo l'errore
+   - ok: interessa info e il nuovo pc
+*)
+ninductive fetch_result (A:Type) : Type ≝
+  FetchERR : error_type → fetch_result A
+| FetchOK  : A → word16 → fetch_result A.
+
+(* **************************** *)
+(* FETCH E ACCESSO ALLA MEMORIA *)
+(* **************************** *)
+
+(* ausialiaria per RS08 read *)
+(* come anticipato in status, nell'RS08 ci sono 2 registri importanti
+   memory mapped, quindi bisona intercettare la lettura.
+   NB: fare molta attenzione alle note sulle combinazioni possibili perche'
+       il comportamento della memoria nell'RS08 e' strano e ci sono
+       precise condizioni che impediscono una semantica circolare dell'accesso
+       (divergenza=assenza di definizione) *)
+ndefinition RS08_memory_filter_read_aux ≝
+λt:memory_impl.λs:any_status RS08 t.λaddr:word16.
+λT:Type.λfREG:byte8 → option T.λfMEM:aux_mem_type t → aux_chk_type t → word16 → option T.
+match s with
+ [ mk_any_status alu mem chk _ ⇒ match alu with
+  [ mk_alu_RS08 _ _ _ _ xm psm _ _ ⇒
+(* 
+   possibili accessi al registro X
+   1) addr=000F: diretto
+   2) addr=000E (X =0F): indiretto
+   3) addr=00CF (PS=00): paging
+  
+   [NB] altre combinazioni non funzionano perche' la MCU non e' un oggetto reattivo:
+   non si possono combinare due effetti contemporaneamente!
+   per esempio accesso addr=00CE (PS=00,X=0F) non puo' produrre 2 indirezioni 
+*) 
+  match eq_w16 addr 〈〈x0,x0〉:〈x0,xF〉〉 ⊕
+        (eq_w16 addr 〈〈x0,x0〉:〈x0,xE〉〉 ⊗ eq_b8 xm 〈x0,xF〉) ⊕
+        (eq_w16 addr 〈〈x0,x0〉:〈xC,xF〉〉 ⊗ eq_b8 psm 〈x0,x0〉) with
+   [ true ⇒ fREG xm
+   | false ⇒
+(* 
+   possibili accessi al registro PS
+   1) addr=001F: diretto
+   2) addr=000E (X =1F): indiretto
+   3) addr=00DF (PS=00): paging
+*)
+    match eq_w16 addr 〈〈x0,x0〉:〈x1,xF〉〉 ⊕
+         (eq_w16 addr 〈〈x0,x0〉:〈x0,xE〉〉 ⊗ eq_b8 xm 〈x1,xF〉) ⊕
+         (eq_w16 addr 〈〈x0,x0〉:〈xD,xF〉〉 ⊗ eq_b8 psm 〈x0,x0〉) with
+     [ true ⇒ fREG psm
+     | false ⇒
+(* 
+   accesso a D[X]: se accede a [00C0-00FF] e' la RAM fisica, non il paging 
+   altrimenti sarebbero 2 indirezioni
+*)
+      match eq_w16 addr 〈〈x0,x0〉:〈x0,xE〉〉 with
+       [ true ⇒ fMEM mem chk 〈〈x0,x0〉:xm〉
+       | false ⇒ 
+(* 
+   accesso al paging: [00pp pppp ppxx xxxx] con p=PS x=addr
+*)
+        match inrange_w16 addr 〈〈x0,x0〉:〈xC,x0〉〉 〈〈x0,x0〉:〈xF,xF〉〉 with
+         [ true ⇒ fMEM mem chk (or_w16 (fst … (shr_w16 (fst … (shr_w16 〈psm:〈x0,x0〉〉))))
+                                             (and_w16 addr 〈〈x0,x0〉:〈x3,xF〉〉))
+(*
+   accesso normale
+*)
+         | false ⇒ fMEM mem chk addr ]]]]]].
+
+(* lettura RS08 di un byte *)
+ndefinition RS08_memory_filter_read ≝
+λt:memory_impl.λs:any_status RS08 t.λaddr:word16.
+ RS08_memory_filter_read_aux t s addr byte8
+  (λb.Some byte8 b)
+  (λm:aux_mem_type t.λc:aux_chk_type t.λa:word16.mem_read t m c a).
+
+(* lettura RS08 di un bit *)
+ndefinition RS08_memory_filter_read_bit ≝
+λt:memory_impl.λs:any_status RS08 t.λaddr:word16.λsub:oct.
+ RS08_memory_filter_read_aux t s addr bool
+  (λb.Some bool (getn_array8T sub bool (bits_of_byte8 b)))
+  (λm:aux_mem_type t.λc:aux_chk_type t.λa:word16.mem_read_bit t m c a sub).
+
+(* in caso di RS08 si dirotta sul filtro, altrimenti si legge direttamente *)
+ndefinition memory_filter_read ≝
+λm:mcu_type.λt:memory_impl.match m return λm:mcu_type.any_status m t → word16 → option byte8 with
+ [ HC05 ⇒ λs:any_status HC05 t.λaddr:word16.
+  mem_read t (mem_desc ? t s) (chk_desc ? t s) addr
+ | HC08 ⇒ λs:any_status HC08 t.λaddr:word16.
+  mem_read t (mem_desc ? t s) (chk_desc ? t s) addr
+ | HCS08 ⇒ λs:any_status HCS08 t.λaddr:word16.
+  mem_read t (mem_desc ? t s) (chk_desc ? t s) addr
+ | RS08 ⇒ λs:any_status RS08 t.λaddr:word16.
+  RS08_memory_filter_read t s addr
+ ].
+
+ndefinition memory_filter_read_bit ≝
+λm:mcu_type.λt:memory_impl.match m return λm:mcu_type.any_status m t → word16 → oct → option bool with
+ [ HC05 ⇒ λs:any_status HC05 t.λaddr:word16.λsub:oct.
+  mem_read_bit t (mem_desc ? t s) (chk_desc ? t s) addr sub
+ | HC08 ⇒ λs:any_status HC08 t.λaddr:word16.λsub:oct.
+  mem_read_bit t (mem_desc ? t s) (chk_desc ? t s) addr sub
+ | HCS08 ⇒ λs:any_status HCS08 t.λaddr:word16.λsub:oct.
+  mem_read_bit t (mem_desc ? t s) (chk_desc ? t s) addr sub
+ | RS08 ⇒ λs:any_status RS08 t.λaddr:word16.λsub:oct.
+  RS08_memory_filter_read_bit t s addr sub
+ ].
+
+(* ausialiaria per RS08 write *)
+(* come anticipato in status, nell'RS08 ci sono 2 registri importanti
+   memory mapped, quindi bisona intercettare la scrittura.
+   NB: fare molta attenzione alle note sulle combinazioni possibili perche'
+       il comportamento della memoria nell'RS08 e' strano e ci sono
+       precise condizioni che impediscono una semantica circolare dell'accesso
+       (divergenza=assenza di definizione) *)
+ndefinition RS08_memory_filter_write_aux ≝
+λt:memory_impl.λs:any_status RS08 t.λaddr:word16.
+λfREG:byte8 → byte8.λfMEM:aux_mem_type t → aux_chk_type t → word16 → option (aux_mem_type t).
+match s with 
+ [ mk_any_status alu mem chk clk ⇒ match alu with
+  [ mk_alu_RS08 acclow pc pcm spc xm psm zfl cfl ⇒
+(* 
+   possibili accessi al registro X
+   1) addr=000F: diretto
+   2) addr=000E (X =0F): indiretto
+   3) addr=00CF (PS=00): paging
+  
+   [NB] altre combinazioni non funzionano perche' la MCU non e' un oggetto reattivo:
+   non si possono combinare due effetti contemporaneamente!
+   per esempio accesso addr=00CE (PS=00,X=0F) non puo' produrre 2 indirezioni 
+*) 
+  match eq_w16 addr 〈〈x0,x0〉:〈x0,xF〉〉 ⊕
+        (eq_w16 addr 〈〈x0,x0〉:〈x0,xE〉〉 ⊗ eq_b8 xm 〈x0,xF〉) ⊕
+        (eq_w16 addr 〈〈x0,x0〉:〈xC,xF〉〉 ⊗ eq_b8 psm 〈x0,x0〉) with
+   [ true ⇒ Some ? (mk_any_status RS08 t (mk_alu_RS08 acclow pc pcm spc (fREG xm) psm zfl cfl) mem chk clk)
+   | false ⇒
+(* 
+   possibili accessi al registro PS
+   1) addr=001F: diretto
+   2) addr=000E (X =1F): indiretto
+   3) addr=00DF (PS=00): paging
+*)
+    match eq_w16 addr 〈〈x0,x0〉:〈x1,xF〉〉 ⊕
+         (eq_w16 addr 〈〈x0,x0〉:〈x0,xE〉〉 ⊗ eq_b8 xm 〈x1,xF〉) ⊕
+         (eq_w16 addr 〈〈x0,x0〉:〈xD,xF〉〉 ⊗ eq_b8 psm 〈x0,x0〉) with
+     [ true ⇒ Some ? (mk_any_status RS08 t (mk_alu_RS08 acclow pc pcm spc xm (fREG psm) zfl cfl) mem chk clk)
+     | false ⇒
+(* 
+   accesso a D[X]: se accede a [00C0-00FF] e' la RAM fisica, non il paging 
+   altrimenti sarebbero 2 indirezioni
+*)
+      match eq_w16 addr 〈〈x0,x0〉:〈x0,xE〉〉 with
+       [ true ⇒ opt_map … (fMEM mem chk 〈〈x0,x0〉:xm〉)
+                 (λmem'.Some ? (mk_any_status RS08 t (mk_alu_RS08 acclow pc pcm spc xm psm zfl cfl) mem' chk clk))
+                                                      
+       | false ⇒
+(* 
+   accesso al paging: [00pp pppp ppxx xxxx] con p=PS x=addr
+*)
+        match inrange_w16 addr 〈〈x0,x0〉:〈xC,x0〉〉 〈〈x0,x0〉:〈xF,xF〉〉 with
+         [ true ⇒ opt_map … (fMEM mem chk (or_w16 (fst … (shr_w16 (fst … (shr_w16 〈psm:〈x0,x0〉〉))))
+                                                   (and_w16 addr 〈〈x0,x0〉:〈x3,xF〉〉)))
+                   (λmem'.Some ? (mk_any_status RS08 t (mk_alu_RS08 acclow pc pcm spc xm psm zfl cfl) mem' chk clk))
+(*
+   accesso normale
+*)
+         | false ⇒ opt_map … (fMEM mem chk addr)
+                    (λmem'.Some ? (mk_any_status RS08 t (mk_alu_RS08 acclow pc pcm spc xm psm zfl cfl) mem' chk clk)) ]]]]]].
+
+(* scrittura RS08 di un byte *)
+ndefinition RS08_memory_filter_write ≝
+λt:memory_impl.λs:any_status RS08 t.λaddr:word16.λval:byte8.
+ RS08_memory_filter_write_aux t s addr
+  (λb.val)
+  (λm:aux_mem_type t.λc:aux_chk_type t.λa:word16.mem_update t m c a val).
+
+(* scrittura RS08 di un bit *)
+ndefinition RS08_memory_filter_write_bit ≝
+λt:memory_impl.λs:any_status RS08 t.λaddr:word16.λsub:oct.λval:bool.
+ RS08_memory_filter_write_aux t s addr
+  (λb.byte8_of_bits (setn_array8T sub bool (bits_of_byte8 b) val))
+  (λm:aux_mem_type t.λc:aux_chk_type t.λa:word16.mem_update_bit t m c a sub val).
+
+(* in caso di RS08 si dirotta sul filtro, altrimenti si scrive direttamente *)
+ndefinition memory_filter_write ≝
+λm:mcu_type.λt:memory_impl.match m
+ return λm:mcu_type.any_status m t → word16 → byte8 → option (any_status m t) with
+ [ HC05 ⇒ λs:any_status HC05 t.λaddr:word16.λval:byte8.
+  opt_map … (mem_update t (mem_desc ? t s) (chk_desc ? t s) addr val)
+   (λmem.Some ? (set_mem_desc ? t s mem)) 
+ | HC08 ⇒ λs:any_status HC08 t.λaddr:word16.λval:byte8.
+  opt_map … (mem_update t (mem_desc ? t s) (chk_desc ? t s) addr val)
+   (λmem.Some ? (set_mem_desc ? t s mem))
+ | HCS08 ⇒ λs:any_status HCS08 t.λaddr:word16.λval:byte8.
+  opt_map … (mem_update t (mem_desc ? t s) (chk_desc ? t s) addr val)
+   (λmem.Some ? (set_mem_desc ? t s mem)) 
+ | RS08 ⇒ λs:any_status RS08 t.λaddr:word16.λval:byte8.
+  RS08_memory_filter_write t s addr val
+ ].
+
+ndefinition memory_filter_write_bit ≝
+λm:mcu_type.λt:memory_impl.match m
+ return λm:mcu_type.any_status m t → word16 → oct → bool → option (any_status m t) with
+ [ HC05 ⇒ λs:any_status HC05 t.λaddr:word16.λsub:oct.λval:bool.
+  opt_map … (mem_update_bit t (mem_desc ? t s) (chk_desc ? t s) addr sub val)
+   (λmem.Some ? (set_mem_desc ? t s mem)) 
+ | HC08 ⇒ λs:any_status HC08 t.λaddr:word16.λsub:oct.λval:bool.
+  opt_map … (mem_update_bit t (mem_desc ? t s) (chk_desc ? t s) addr sub val)
+   (λmem.Some ? (set_mem_desc ? t s mem))
+ | HCS08 ⇒ λs:any_status HCS08 t.λaddr:word16.λsub:oct.λval:bool.
+  opt_map … (mem_update_bit t (mem_desc ? t s) (chk_desc ? t s) addr sub val)
+   (λmem.Some ? (set_mem_desc ? t s mem)) 
+ | RS08 ⇒ λs:any_status RS08 t.λaddr:word16.λsub:oct.λval:bool.
+  RS08_memory_filter_write_bit t s addr sub val
+ ].
+
+(*
+   Da utilizzarsi solo per gli aggiornamenti di PC (per il fetch),
+   NON per il caricamento degli indiretti.
+   - il caricamento degli immediati spetta al fetcher
+     (incremento progressivo di PC ciclo per ciclo, e riempimento del prefetch
+      che a questo punto DEVE poter indirizzare qualsiasi locazione puntata da PC)
+   - il caricamento degli indiretti non spetta al fetcher
+*)
+ndefinition filtered_inc_w16 ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λw:word16.
+ get_pc_reg m t (set_pc_reg m t s (succ_w16 w)).
+
+nlet rec filtered_plus_w16 (m:mcu_type) (t:memory_impl) (s:any_status m t) (w:word16) (n:nat) on n ≝
+ match n with
+  [ O ⇒ w
+  | S n' ⇒ filtered_plus_w16 m t s (filtered_inc_w16 m t s w) n' ].
+
+(* 
+   errore1: non esiste traduzione ILL_OP
+   errore2: non e' riuscito a leggere ILL_FETCH_AD
+   altrimenti OK=info+new_pc
+*)
+ndefinition fetch ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ let pc ≝ get_pc_reg m t s in
+ let pc_next1 ≝ filtered_inc_w16 m t s pc in
+ let pc_next2 ≝ filtered_inc_w16 m t s pc_next1 in
+ match memory_filter_read m t s pc with
+  [ None ⇒ FetchERR ? ILL_FETCH_AD
+  | Some bh ⇒ match full_info_of_word16 m (Byte bh) with
+   (* non ha trovato una traduzione con 1 byte *)
+   [ None ⇒ match m with
+    (* HC05 non esistono op a 2 byte *)
+    [ HC05 ⇒ FetchERR ? ILL_OP
+    | HC08 ⇒ match eq_b8 bh 〈x9,xE〉 with
+     (* HC08 se il primo byte e' 0x9E il secondo puo' avere senso *)
+     [ true ⇒ match memory_filter_read m t s pc_next1 with
+      [ None ⇒ FetchERR ? ILL_FETCH_AD | Some bl ⇒ match full_info_of_word16 m (Word (mk_word16 bh bl)) with
+      [ None ⇒ FetchERR ? ILL_OP | Some info ⇒ FetchOK ? info pc_next2 ]]
+     (* HC08 se il primo byte non e' 0x9E il secondo non puo' avere senso *)
+     | false ⇒ FetchERR ? ILL_OP
+     ]
+    | HCS08 ⇒ match eq_b8 bh 〈x9,xE〉 with
+     (* HCS08 se il primo byte e' 0x9E il secondo puo' avere senso *)
+     [ true ⇒ match memory_filter_read m t s pc_next1 with
+      [ None ⇒ FetchERR ? ILL_FETCH_AD | Some bl ⇒ match full_info_of_word16 m (Word (mk_word16 bh bl)) with
+      [ None ⇒ FetchERR ? ILL_OP | Some info ⇒ FetchOK ? info pc_next2 ]]
+     (* HCS08 se il primo byte non e' 0x9E il secondo non puo' avere senso *)
+     | false ⇒ FetchERR ? ILL_OP
+     ]
+    (* RS08 non esistono op a 2 byte *)
+    | RS08 ⇒ FetchERR ? ILL_OP
+    ]
+   (* ha trovato una traduzione con 1 byte *)
+   | Some info ⇒ FetchOK ? info pc_next1 ]].
+
+(* ************************ *)
+(* MODALITA' INDIRIZZAMENTO *)
+(* ************************ *)
+
+(* mattoni base *)
+(* - incrementano l'indirizzo normalmente *)
+(* - incrementano PC attraverso il filtro *)
+
+(* lettura byte da addr *)
+ndefinition loadb_from ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λaddr:word16.λcur_pc:word16.λfetched:nat.
+ opt_map … (memory_filter_read m t s addr)
+  (λb.Some ? (triple … s b (filtered_plus_w16 m t s cur_pc fetched))).
+
+(* lettura bit da addr *)
+ndefinition loadbit_from ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λaddr:word16.λsub:oct.λcur_pc:word16.λfetched:nat.
+ opt_map … (memory_filter_read_bit m t s addr sub)
+  (λb.Some ? (triple … s b (filtered_plus_w16 m t s cur_pc fetched))).
+
+(* lettura word da addr *)
+ndefinition loadw_from ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λaddr:word16.λcur_pc:word16.λfetched:nat.
+ opt_map … (memory_filter_read m t s addr)
+  (λbh.opt_map … (memory_filter_read m t s (succ_w16 addr))
+   (λbl.Some ? (triple … s (mk_word16 bh bl) (filtered_plus_w16 m t s cur_pc fetched)))).
+
+(* scrittura byte su addr *)
+ndefinition writeb_to ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λaddr:word16.λcur_pc:word16.λfetched:nat.λwriteb:byte8.
+ opt_map … (memory_filter_write m t s addr writeb)
+  (λtmps.Some ? (pair … tmps (filtered_plus_w16 m t s cur_pc fetched))).
+
+(* scrittura bit su addr *)
+ndefinition writebit_to ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λaddr:word16.λsub:oct.λcur_pc:word16.λfetched:nat.λwriteb:bool.
+ opt_map … (memory_filter_write_bit m t s addr sub writeb)
+  (λtmps.Some ? (pair … tmps (filtered_plus_w16 m t s cur_pc fetched))).
+
+(* scrittura word su addr *) 
+ndefinition writew_to ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λaddr:word16.λcur_pc:word16.λfetched:nat.λwritew:word16.
+ opt_map … (memory_filter_write m t s addr (w16h writew))
+  (λtmps1.opt_map … (memory_filter_write m t tmps1 (succ_w16 addr) (w16l writew))
+    (λtmps2.Some ? (pair … tmps2 (filtered_plus_w16 m t tmps2 cur_pc fetched)))).
+
+(* ausiliari per definire i tipi e la lettura/scrittura *)
+
+(* ausiliaria per definire il tipo di aux_load *)
+ndefinition aux_load_typing ≝
+λm:mcu_type.λt:memory_impl.λbyteflag:bool.
+ any_status m t → word16 → word16 → nat →
+ option (Prod3T (any_status m t) match byteflag with [ true ⇒ byte8 | false ⇒ word16 ] word16).
+
+(* per non dover ramificare i vari load in byte/word *)
+ndefinition aux_load ≝
+λm:mcu_type.λt:memory_impl.λbyteflag:bool.match byteflag return aux_load_typing m t with
+ [ true ⇒ loadb_from m t | false ⇒ loadw_from m t ].
+
+(* ausiliaria per definire il tipo di aux_write *)
+ndefinition aux_write_typing ≝
+λm:mcu_type.λt:memory_impl.λbyteflag:bool.
+ any_status m t → word16 → word16 → nat →
+ match byteflag with [ true ⇒ byte8 | false ⇒ word16 ] →
+ option (ProdT (any_status m t) word16).
+
+(* per non dover ramificare i vari load in byte/word *)
+ndefinition aux_write ≝
+λm:mcu_type.λt:memory_impl.λbyteflag:bool.match byteflag return aux_write_typing m t with
+ [ true ⇒ writeb_to m t | false ⇒ writew_to m t ].
+
+(* modalita' vere e proprie *)
+
+(* lettura da [curpc]: IMM1 comportamento asimmetrico, quindi non si appoggia a loadb *)
+ndefinition mode_IMM1_load ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.
+ opt_map … (memory_filter_read m t s cur_pc)
+  (λb.Some ? (triple … s b (filtered_inc_w16 m t s cur_pc))).
+
+(* lettura da [curpc]: IMM1 + estensione a word *)
+ndefinition mode_IMM1EXT_load ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.
+ opt_map … (memory_filter_read m t s cur_pc)
+  (λb.Some ? (triple … s 〈〈x0,x0〉:b〉 (filtered_inc_w16 m t s cur_pc))).
+
+(* lettura da [curpc]: IMM2 comportamento asimmetrico, quindi non si appoggia a loadw *)
+ndefinition mode_IMM2_load ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.
+ opt_map … (memory_filter_read m t s cur_pc)
+  (λbh.opt_map … (memory_filter_read m t s (filtered_inc_w16 m t s cur_pc))
+   (λbl.Some ? (triple … s (mk_word16 bh bl) (filtered_plus_w16 m t s cur_pc nat2)))).
+
+(* lettura da [byte [curpc]]: true=DIR1 loadb, false=DIR1 loadw *)
+ndefinition mode_DIR1_load ≝
+λbyteflag:bool.λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.
+ opt_map … (memory_filter_read m t s cur_pc)
+  (λaddr.(aux_load m t byteflag) s 〈〈x0,x0〉:addr〉 cur_pc nat1).
+
+(* lettura da [byte [curpc]]: loadbit *)
+ndefinition mode_DIR1n_load ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.λsub:oct.
+ opt_map … (memory_filter_read m t s cur_pc)
+  (λaddr.loadbit_from m t  s 〈〈x0,x0〉:addr〉 sub cur_pc nat1).
+
+(* scrittura su [byte [curpc]]: true=DIR1 writeb, false=DIR1 writew *)
+ndefinition mode_DIR1_write ≝
+λbyteflag:bool.λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.
+λwritebw:match byteflag with [ true ⇒ byte8 | false ⇒ word16 ].
+ opt_map … (memory_filter_read m t s cur_pc)
+  (λaddr.(aux_write m t byteflag) s 〈〈x0,x0〉:addr〉 cur_pc nat1 writebw).
+
+(* scrittura su [byte [curpc]]: writebit *)
+ndefinition mode_DIR1n_write ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.λsub:oct.λwriteb:bool.
+ opt_map … (memory_filter_read m t s cur_pc)
+  (λaddr.writebit_to m t s 〈〈x0,x0〉:addr〉 sub cur_pc nat1 writeb).
+
+(* lettura da [word [curpc]]: true=DIR2 loadb, false=DIR2 loadw *)
+ndefinition mode_DIR2_load ≝
+λbyteflag:bool.λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.
+ opt_map … (memory_filter_read m t s cur_pc)
+  (λaddrh.opt_map … (memory_filter_read m t s (filtered_inc_w16 m t s cur_pc))
+   (λaddrl.(aux_load m t byteflag) s 〈addrh:addrl〉 cur_pc nat2)).
+
+(* scrittura su [word [curpc]]: true=DIR2 writeb, false=DIR2 writew *)
+ndefinition mode_DIR2_write ≝
+λbyteflag:bool.λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.
+λwritebw:match byteflag with [ true ⇒ byte8 | false ⇒ word16 ].
+ opt_map … (memory_filter_read m t s cur_pc)
+  (λaddrh.opt_map … (memory_filter_read m t s (filtered_inc_w16 m t s cur_pc))
+   (λaddrl.(aux_write m t byteflag) s 〈addrh:addrl〉 cur_pc nat2 writebw)).
+
+ndefinition get_IX ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ match m with
+  [ HC05 ⇒ opt_map … (get_indX_8_low_reg m t s) (λindx.Some ? 〈〈x0,x0〉:indx〉) 
+  | HC08 ⇒ opt_map … (get_indX_16_reg m t s) (λindx.Some ? indx) 
+  | HCS08 ⇒ opt_map … (get_indX_16_reg m t s) (λindx.Some ? indx) 
+  | RS08 ⇒ None ? ].
+
+(* lettura da [IX]: true=IX0 loadb, false=IX0 loadw *)
+ndefinition mode_IX0_load ≝
+λbyteflag:bool.λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.
+ opt_map … (get_IX m t s)
+  (λaddr.(aux_load m t byteflag) s addr cur_pc O).
+
+(* scrittura su [IX]: true=IX0 writeb, false=IX0 writew *)
+ndefinition mode_IX0_write ≝
+λbyteflag:bool.λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.
+λwritebw:match byteflag with [ true ⇒ byte8 | false ⇒ word16 ].
+ opt_map … (get_IX m t s)
+  (λaddr.(aux_write m t byteflag) s addr cur_pc O writebw).
+
+(* lettura da [IX+byte [pc]]: true=IX1 loadb, false=IX1 loadw *)
+ndefinition mode_IX1_load ≝
+λbyteflag:bool.λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.
+ opt_map … (get_IX m t s)
+  (λaddr.opt_map … (memory_filter_read m t s cur_pc)
+   (λoffs.(aux_load m t byteflag) s (plus_w16_d_d addr 〈〈x0,x0〉:offs〉) cur_pc nat1)).
+
+(* lettura da X+[byte curpc] *)
+ndefinition mode_IX1ADD_load ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.
+ opt_map … (memory_filter_read m t s cur_pc)
+  (λb.opt_map … (get_IX m t s)
+   (λaddr.Some ? (triple … s (plus_w16_d_d addr 〈〈x0,x0〉:b〉) (filtered_inc_w16 m t s cur_pc)))).
+
+(* scrittura su [IX+byte [pc]]: true=IX1 writeb, false=IX1 writew *)
+ndefinition mode_IX1_write ≝
+λbyteflag:bool.λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.
+λwritebw:match byteflag with [ true ⇒ byte8 | false ⇒ word16 ].
+ opt_map … (get_IX m t s)
+  (λaddr.opt_map … (memory_filter_read m t s cur_pc)
+   (λoffs.(aux_write m t byteflag) s (plus_w16_d_d addr 〈〈x0,x0〉:offs〉) cur_pc nat1 writebw)).
+
+(* lettura da [IX+word [pc]]: true=IX2 loadb, false=IX2 loadw *)
+ndefinition mode_IX2_load ≝
+λbyteflag:bool.λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.
+ opt_map … (get_IX m t s)
+  (λaddr.opt_map … (memory_filter_read m t s cur_pc)
+   (λoffsh.opt_map … (memory_filter_read m t s (filtered_inc_w16 m t s cur_pc))
+    (λoffsl.(aux_load m t byteflag) s (plus_w16_d_d addr 〈offsh:offsl〉) cur_pc nat2))).
+
+(* lettura da X+[word curpc] *)
+ndefinition mode_IX2ADD_load ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.
+ opt_map … (memory_filter_read m t s cur_pc)
+  (λbh.opt_map … (memory_filter_read m t s (filtered_inc_w16 m t s cur_pc))
+   (λbl.opt_map … (get_IX m t s)
+    (λaddr.Some ? (triple … s (plus_w16_d_d addr 〈bh:bl〉) (filtered_plus_w16 m t s cur_pc nat2))))).
+
+(* scrittura su [IX+word [pc]]: true=IX2 writeb, false=IX2 writew *)
+ndefinition mode_IX2_write ≝
+λbyteflag:bool.λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.
+λwritebw:match byteflag with [ true ⇒ byte8 | false ⇒ word16 ].
+ opt_map … (get_IX m t s)
+  (λaddr.opt_map … (memory_filter_read m t s cur_pc)
+   (λoffsh.opt_map … (memory_filter_read m t s (filtered_inc_w16 m t s cur_pc))
+    (λoffsl.(aux_write m t byteflag) s (plus_w16_d_d addr 〈offsh:offsl〉) cur_pc nat2 writebw))).
+
+(* lettura da [SP+byte [pc]]: true=SP1 loadb, false=SP1 loadw *)
+ndefinition mode_SP1_load ≝
+λbyteflag:bool.λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.
+ opt_map … (get_sp_reg m t s)
+  (λaddr.opt_map … (memory_filter_read m t s cur_pc)
+   (λoffs.(aux_load m t byteflag) s (plus_w16_d_d addr 〈〈x0,x0〉:offs〉) cur_pc nat1)).
+
+(* scrittura su [SP+byte [pc]]: true=SP1 writeb, false=SP1 writew *)
+ndefinition mode_SP1_write ≝
+λbyteflag:bool.λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.
+λwritebw:match byteflag with [ true ⇒ byte8 | false ⇒ word16 ].
+ opt_map … (get_sp_reg m t s)
+  (λaddr.opt_map … (memory_filter_read m t s cur_pc)
+   (λoffs.(aux_write m t byteflag) s (plus_w16_d_d addr 〈〈x0,x0〉:offs〉) cur_pc nat1 writebw)).
+
+(* lettura da [SP+word [pc]]: true=SP2 loadb, false=SP2 loadw *)
+ndefinition mode_SP2_load ≝
+λbyteflag:bool.λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.
+ opt_map … (get_sp_reg m t s)
+  (λaddr.opt_map … (memory_filter_read m t s cur_pc)
+   (λoffsh.opt_map … (memory_filter_read m t s (filtered_inc_w16 m t s cur_pc))
+    (λoffsl.(aux_load m t byteflag) s (plus_w16_d_d addr 〈offsh:offsl〉) cur_pc nat2))).
+
+(* scrittura su [SP+word [pc]]: true=SP2 writeb, false=SP2 writew *)
+ndefinition mode_SP2_write ≝
+λbyteflag:bool.λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.
+λwritebw:match byteflag with [ true ⇒ byte8 | false ⇒ word16 ].
+ opt_map … (get_sp_reg m t s)
+  (λaddr.opt_map … (memory_filter_read m t s cur_pc)
+   (λoffsh.opt_map … (memory_filter_read m t s (filtered_inc_w16 m t s cur_pc))
+    (λoffsl.(aux_write m t byteflag) s (plus_w16_d_d addr 〈offsh:offsl〉) cur_pc nat2 writebw))).
+
+(* ************************************** *)
+(* raccordo di tutte le possibili letture *)
+(* ************************************** *)
+
+(* H:X++ *)
+ndefinition aux_inc_indX_16 ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ opt_map … (get_indX_16_reg m t s)
+  (λX_op.opt_map … (set_indX_16_reg m t s (succ_w16 X_op))
+   (λs_tmp.Some ? s_tmp)).
+
+(* tutte le modalita' di lettura: false=loadb true=loadw *)
+ndefinition multi_mode_load ≝
+λbyteflag:bool.λm:mcu_type.λt:memory_impl.
+ match byteflag
+  return λbyteflag:bool.any_status m t → word16 → instr_mode → 
+                        option (Prod3T (any_status m t) match byteflag with [ true ⇒ byte8 | false ⇒ word16 ] word16)
+ with
+  (* lettura di un byte *)
+  [ true ⇒ λs:any_status m t.λcur_pc:word16.λi:instr_mode.match i with
+(* NO: non ci sono indicazioni *)
+   [ MODE_INH  ⇒ None ?
+(* restituisce A *)
+   | MODE_INHA ⇒ Some ? (triple … s (get_acc_8_low_reg m t s) cur_pc)
+(* restituisce X *)
+   | MODE_INHX ⇒ opt_map … (get_indX_8_low_reg m t s)
+                  (λindx.Some ? (triple … s indx cur_pc))
+(* restituisce H *)
+   | MODE_INHH ⇒ opt_map … (get_indX_8_high_reg m t s)
+                  (λindx.Some ? (triple … s indx cur_pc))
+
+(* NO: solo lettura word *)
+  | MODE_INHX0ADD ⇒ None ?
+(* NO: solo lettura word *)
+  | MODE_INHX1ADD ⇒ None ?
+(* NO: solo lettura word *)
+  | MODE_INHX2ADD ⇒ None ?
+
+(* preleva 1 byte immediato *) 
+   | MODE_IMM1 ⇒ mode_IMM1_load m t s cur_pc
+(* NO: solo lettura word *)
+   | MODE_IMM1EXT ⇒ None ?
+(* NO: solo lettura word *)
+   | MODE_IMM2 ⇒ None ?
+(* preleva 1 byte da indirizzo diretto 1 byte *) 
+   | MODE_DIR1 ⇒ mode_DIR1_load true m t s cur_pc
+(* preleva 1 byte da indirizzo diretto 1 word *)
+   | MODE_DIR2 ⇒ mode_DIR2_load true m t s cur_pc
+(* preleva 1 byte da H:X *)
+   | MODE_IX0  ⇒ mode_IX0_load true m t s cur_pc
+(* preleva 1 byte da H:X+1 byte offset *)
+   | MODE_IX1  ⇒ mode_IX1_load true m t s cur_pc
+(* preleva 1 byte da H:X+1 word offset *)
+   | MODE_IX2  ⇒ mode_IX2_load true m t s cur_pc
+(* preleva 1 byte da SP+1 byte offset *)
+   | MODE_SP1  ⇒ mode_SP1_load true m t s cur_pc
+(* preleva 1 byte da SP+1 word offset *)
+   | MODE_SP2  ⇒ mode_SP2_load true m t s cur_pc
+
+(* come DIR1, chiamare scrittura per passo2: scrittura su DIR1 *)
+   | MODE_DIR1_to_DIR1 ⇒ mode_DIR1_load true m t s cur_pc
+(* come IMM1, chiamare scrittura per passo2: scrittura su DIR1 *)
+   | MODE_IMM1_to_DIR1 ⇒ mode_IMM1_load m t s cur_pc
+(* come IX0, chiamare scrittura per passo2: scrittura su DIR1 e X++ *)
+   | MODE_IX0p_to_DIR1 ⇒ mode_IX0_load true m t s cur_pc
+(* come DIR1, chiamare scrittura per passo2: scrittura su IX0 e X++ *)
+   | MODE_DIR1_to_IX0p ⇒ mode_DIR1_load true m t s cur_pc
+
+(* NO: solo lettura word/scrittura byte *)
+   | MODE_INHA_and_IMM1 ⇒ None ?
+(* NO: solo lettura word/scrittura byte *)     
+   | MODE_INHX_and_IMM1 ⇒ None ?
+(* NO: solo lettura word *) 
+   | MODE_IMM1_and_IMM1 ⇒ None ?
+(* NO: solo lettura word/scrittura byte *) 
+   | MODE_DIR1_and_IMM1 ⇒ None ?
+(* NO: solo lettura word/scrittura byte *) 
+   | MODE_IX0_and_IMM1  ⇒ None ?
+(* NO: solo lettura word *) 
+   | MODE_IX0p_and_IMM1 ⇒ None ?
+(* NO: solo lettura word/scrittura byte *) 
+   | MODE_IX1_and_IMM1  ⇒ None ?
+(* NO: solo lettura word *) 
+   | MODE_IX1p_and_IMM1 ⇒ None ?
+(* NO: solo lettura word/scrittura byte *) 
+   | MODE_SP1_and_IMM1  ⇒ None ?
+
+(* NO: solo scrittura byte *)
+   | MODE_DIRn _          ⇒ None ?
+(* NO: solo lettura word *)
+   | MODE_DIRn_and_IMM1 _ ⇒ None ?
+(* preleva 1 byte da 0000 0000 0000 xxxxb *)
+   | MODE_TNY e           ⇒ opt_map … (memory_filter_read m t s 〈〈x0,x0〉:〈x0,e〉〉)
+                             (λb.Some ? (triple … s b cur_pc))
+(* preleva 1 byte da 0000 0000 000x xxxxb *)
+   | MODE_SRT e           ⇒ opt_map … (memory_filter_read m t s 〈〈x0,x0〉:(b8_of_bit e)〉)
+                             (λb.Some ? (triple … s b cur_pc))
+   ]
+(* lettura di una word *)
+  | false ⇒ λs:any_status m t.λcur_pc:word16.λi:instr_mode.match i with
+(* NO: non ci sono indicazioni *)
+   [ MODE_INH  ⇒ None ?
+(* NO: solo lettura/scrittura byte *)
+   | MODE_INHA ⇒ None ?
+(* NO: solo lettura/scrittura byte *)
+   | MODE_INHX ⇒ None ?
+(* NO: solo lettura/scrittura byte *)
+   | MODE_INHH ⇒ None ?
+
+(* preleva 1 word immediato *) 
+  | MODE_INHX0ADD ⇒ opt_map … (get_IX m t s)
+                     (λw.Some ? (triple … s w cur_pc))
+(* preleva 1 word immediato *) 
+  | MODE_INHX1ADD ⇒ mode_IX1ADD_load m t s cur_pc
+(* preleva 1 word immediato *) 
+  | MODE_INHX2ADD ⇒ mode_IX2ADD_load m t s cur_pc
+
+(* NO: solo lettura byte *)
+   | MODE_IMM1 ⇒ None ?
+(* preleva 1 word immediato *) 
+   | MODE_IMM1EXT ⇒ mode_IMM1EXT_load m t s cur_pc
+(* preleva 1 word immediato *) 
+   | MODE_IMM2 ⇒ mode_IMM2_load m t s cur_pc
+(* preleva 1 word da indirizzo diretto 1 byte *) 
+   | MODE_DIR1 ⇒ mode_DIR1_load false m t s cur_pc
+(* preleva 1 word da indirizzo diretto 1 word *) 
+   | MODE_DIR2 ⇒ mode_DIR2_load false m t s cur_pc
+(* preleva 1 word da H:X *)
+   | MODE_IX0  ⇒ mode_IX0_load false m t s cur_pc
+(* preleva 1 word da H:X+1 byte offset *)
+   | MODE_IX1  ⇒ mode_IX1_load false m t s cur_pc
+(* preleva 1 word da H:X+1 word offset *)
+   | MODE_IX2  ⇒ mode_IX2_load false m t s cur_pc
+(* preleva 1 word da SP+1 byte offset *)
+   | MODE_SP1  ⇒ mode_SP1_load false m t s cur_pc
+(* preleva 1 word da SP+1 word offset *)
+   | MODE_SP2  ⇒ mode_SP2_load false m t s cur_pc
+
+(* NO: solo lettura/scrittura byte *)
+   | MODE_DIR1_to_DIR1 ⇒ None ?
+(* NO: solo lettura/scrittura byte *)
+   | MODE_IMM1_to_DIR1 ⇒ None ?
+(* NO: solo lettura/scrittura byte *)
+   | MODE_IX0p_to_DIR1 ⇒ None ?
+(* NO: solo lettura/scrittura byte *)
+   | MODE_DIR1_to_IX0p ⇒ None ?
+
+(* preleva 2 byte, possibilita' modificare Io argomento *)
+   | MODE_INHA_and_IMM1 ⇒ opt_map … (mode_IMM1_load m t s cur_pc)
+                           (λS_immb_and_PC.match S_immb_and_PC with
+                            [ triple _ immb cur_pc' ⇒
+                             Some ? (triple … s 〈(get_acc_8_low_reg m t s):immb〉 cur_pc')])
+(* preleva 2 byte, possibilita' modificare Io argomento *)
+   | MODE_INHX_and_IMM1 ⇒ opt_map … (get_indX_8_low_reg m t s)
+                           (λX_op.opt_map … (mode_IMM1_load m t s cur_pc)
+                            (λS_immb_and_PC.match S_immb_and_PC with
+                             [ triple _ immb cur_pc' ⇒
+                              Some ? (triple … s 〈X_op:immb〉 cur_pc')]))
+(* preleva 2 byte, NO possibilita' modificare Io argomento *)               
+   | MODE_IMM1_and_IMM1 ⇒ opt_map … (mode_IMM1_load m t s cur_pc)
+                           (λS_immb1_and_PC.match S_immb1_and_PC with
+                            [ triple _ immb1 cur_pc' ⇒
+                             opt_map … (mode_IMM1_load m t s cur_pc')
+                              (λS_immb2_and_PC.match S_immb2_and_PC with
+                               [ triple _ immb2 cur_pc'' ⇒
+                                Some ? (triple … s 〈immb1:immb2〉 cur_pc'')])])
+(* preleva 2 byte, possibilita' modificare Io argomento *)
+   | MODE_DIR1_and_IMM1 ⇒ opt_map … (mode_DIR1_load true m t s cur_pc)
+                           (λS_dirb_and_PC.match S_dirb_and_PC with
+                            [ triple _ dirb cur_pc' ⇒
+                             opt_map … (mode_IMM1_load m t s cur_pc')
+                              (λS_immb_and_PC.match S_immb_and_PC with
+                               [ triple _ immb cur_pc'' ⇒
+                                Some ? (triple … s 〈dirb:immb〉 cur_pc'')])])
+(* preleva 2 byte, possibilita' modificare Io argomento *)
+   | MODE_IX0_and_IMM1  ⇒ opt_map … (mode_IX0_load true m t s cur_pc)
+                           (λS_ixb_and_PC.match S_ixb_and_PC with
+                            [ triple _ ixb cur_pc' ⇒
+                             opt_map … (mode_IMM1_load m t s cur_pc')
+                              (λS_immb_and_PC.match S_immb_and_PC with
+                               [ triple _ immb cur_pc'' ⇒
+                                Some ? (triple … s 〈ixb:immb〉 cur_pc'')])])
+(* preleva 2 byte, H:X++, NO possibilita' modificare Io argomento *)
+   | MODE_IX0p_and_IMM1 ⇒ opt_map … (mode_IX0_load true m t s cur_pc)
+                           (λS_ixb_and_PC.match S_ixb_and_PC with
+                            [ triple _ ixb cur_pc' ⇒
+                             opt_map … (mode_IMM1_load m t s cur_pc')
+                              (λS_immb_and_PC.match S_immb_and_PC with
+                               [ triple _ immb cur_pc'' ⇒
+                                (* H:X++ *)
+                                opt_map … (aux_inc_indX_16 m t s)
+                                 (λs'.Some ? (triple … s' 〈ixb:immb〉 cur_pc''))])])
+(* preleva 2 byte, possibilita' modificare Io argomento *)
+   | MODE_IX1_and_IMM1  ⇒ opt_map … (mode_IX1_load true m t s cur_pc)
+                           (λS_ixb_and_PC.match S_ixb_and_PC with
+                            [ triple _ ixb cur_pc' ⇒
+                             opt_map … (mode_IMM1_load m t s cur_pc')
+                              (λS_immb_and_PC.match S_immb_and_PC with
+                               [ triple _ immb cur_pc'' ⇒
+                                Some ? (triple … s 〈ixb:immb〉 cur_pc'')])])
+(* preleva 2 byte, H:X++, NO possibilita' modificare Io argomento *)
+   | MODE_IX1p_and_IMM1 ⇒ opt_map … (mode_IX1_load true m t s cur_pc)
+                           (λS_ixb_and_PC.match S_ixb_and_PC with
+                            [ triple _ ixb cur_pc' ⇒
+                             opt_map … (mode_IMM1_load m t s cur_pc')
+                              (λS_immb_and_PC.match S_immb_and_PC with
+                               [ triple _ immb cur_pc'' ⇒
+                                (* H:X++ *)
+                                opt_map … (aux_inc_indX_16 m t s)
+                                 (λs'.Some ? (triple … s' 〈ixb:immb〉 cur_pc''))])])
+(* preleva 2 byte, possibilita' modificare Io argomento *)
+   | MODE_SP1_and_IMM1  ⇒ opt_map … (mode_SP1_load true m t s cur_pc)
+                           (λS_spb_and_PC.match S_spb_and_PC with
+                            [ triple _ spb cur_pc' ⇒
+                             opt_map … (mode_IMM1_load m t s cur_pc')
+                              (λS_immb_and_PC.match S_immb_and_PC with
+                               [ triple _ immb cur_pc'' ⇒
+                                Some ? (triple … s 〈spb:immb〉 cur_pc'')])])
+
+(* NO: solo scrittura byte *)
+   | MODE_DIRn _            ⇒ None ?
+(* preleva 2 byte, il primo e' filtrato per azzerare tutti i bit tranne n-simo *)
+   | MODE_DIRn_and_IMM1 msk ⇒ opt_map … (mode_DIR1n_load m t s cur_pc msk)
+                               (λS_dirbn_and_PC.match S_dirbn_and_PC with
+                                [ triple _ dirbn cur_pc'   ⇒
+                                 opt_map … (mode_IMM1_load m t s cur_pc')
+                                  (λS_immb_and_PC.match S_immb_and_PC with
+                                   [ triple _ immb cur_pc'' ⇒
+                                     Some ? (triple … s 〈〈x0,match dirbn with [ true ⇒ x1 | false ⇒ x0 ]〉:immb〉 cur_pc'') ])])
+(* NO: solo lettura/scrittura byte *)
+   | MODE_TNY _             ⇒ None ?
+(* NO: solo lettura/scrittura byte *)
+   | MODE_SRT _             ⇒ None ?
+   ]
+  ].
+
+(* **************************************** *)
+(* raccordo di tutte le possibili scritture *)
+(* **************************************** *)
+
+(* tutte le modalita' di scrittura: true=writeb, false=writew *)
+ndefinition multi_mode_write ≝
+λbyteflag:bool.λm:mcu_type.λt:memory_impl.match byteflag
+ return λbyteflag:bool.any_status m t → word16 → instr_mode →
+  match byteflag with [ true ⇒ byte8 | false ⇒ word16 ] →
+  option (ProdT (any_status m t) word16) with
+ (* scrittura di un byte *)
+ [ true ⇒ λs:any_status m t.λcur_pc:word16.λi:instr_mode.λwriteb:byte8.match i with
+(* NO: non ci sono indicazioni *)
+  [ MODE_INH        ⇒ None ?
+(* scrive A *)
+  | MODE_INHA       ⇒ Some ? (pair … (set_acc_8_low_reg m t s writeb) cur_pc)
+(* scrive X *)
+  | MODE_INHX       ⇒ opt_map … (set_indX_8_low_reg m t s writeb)
+                      (λtmps.Some ? (pair … tmps cur_pc)) 
+(* scrive H *)
+  | MODE_INHH       ⇒ opt_map … (set_indX_8_high_reg m t s writeb)
+                       (λtmps.Some ? (pair … tmps cur_pc)) 
+
+(* NO: solo lettura word *)
+  | MODE_INHX0ADD ⇒ None ?
+(* NO: solo lettura word *)
+  | MODE_INHX1ADD ⇒ None ?
+(* NO: solo lettura word *)
+  | MODE_INHX2ADD ⇒ None ?
+
+(* NO: solo lettura byte *)
+  | MODE_IMM1       ⇒ None ?
+(* NO: solo lettura word *)
+  | MODE_IMM1EXT    ⇒ None ?
+(* NO: solo lettura word *)
+  | MODE_IMM2       ⇒ None ?
+(* scrive 1 byte su indirizzo diretto 1 byte *)
+  | MODE_DIR1       ⇒ mode_DIR1_write true m t s cur_pc writeb
+(* scrive 1 byte su indirizzo diretto 1 word *)
+  | MODE_DIR2       ⇒ mode_DIR2_write true m t s cur_pc writeb
+(* scrive 1 byte su H:X *)
+  | MODE_IX0        ⇒ mode_IX0_write true m t s cur_pc writeb
+(* scrive 1 byte su H:X+1 byte offset *)
+  | MODE_IX1        ⇒ mode_IX1_write true m t s cur_pc writeb
+(* scrive 1 byte su H:X+1 word offset *)
+  | MODE_IX2        ⇒ mode_IX2_write true m t s cur_pc writeb
+(* scrive 1 byte su SP+1 byte offset *)
+  | MODE_SP1        ⇒ mode_SP1_write true m t s cur_pc writeb
+(* scrive 1 byte su SP+1 word offset *)
+  | MODE_SP2        ⇒ mode_SP2_write true m t s cur_pc writeb
+
+(* passo2: scrittura su DIR1, passo1: lettura da DIR1 *)
+  | MODE_DIR1_to_DIR1   ⇒ mode_DIR1_write true m t s cur_pc writeb
+(* passo2: scrittura su DIR1, passo1: lettura da IMM1 *)
+  | MODE_IMM1_to_DIR1   ⇒ mode_DIR1_write true m t s cur_pc writeb
+(* passo2: scrittura su DIR1 e X++, passo1: lettura da IX0 *)
+  | MODE_IX0p_to_DIR1   ⇒ opt_map … (mode_DIR1_write true m t s cur_pc writeb)
+                           (λS_and_PC.match S_and_PC with [ pair S_op PC_op ⇒
+                            (* H:X++ *)
+                            opt_map … (aux_inc_indX_16 m t S_op)
+                             (λS_op'.Some ? (pair … S_op' PC_op))])
+(* passo2: scrittura su IX0 e X++, passo1: lettura da DIR1 *)
+  | MODE_DIR1_to_IX0p   ⇒ opt_map … (mode_IX0_write true m t s cur_pc writeb)
+                           (λS_and_PC.match S_and_PC with [ pair S_op PC_op ⇒
+                            (* H:X++ *)
+                            opt_map … (aux_inc_indX_16 m t S_op)
+                             (λS_op'.Some ? (pair … S_op' PC_op))])
+
+(* dopo aver prelevato 2 byte la possibilita' modificare Io argomento = INHA *)
+  | MODE_INHA_and_IMM1 ⇒ Some ? (pair … (set_acc_8_low_reg m t s writeb) cur_pc)
+(* dopo aver prelevato 2 byte la possibilita' modificare Io argomento = INHX *)  
+  | MODE_INHX_and_IMM1 ⇒ opt_map … (set_indX_8_low_reg m t s writeb)
+                           (λtmps.Some ? (pair … tmps cur_pc)) 
+(* NO: solo lettura word *) 
+  | MODE_IMM1_and_IMM1 ⇒ None ?
+(* dopo aver prelevato 2 byte la possibilita' modificare Io argomento = DIR1 *) 
+  | MODE_DIR1_and_IMM1 ⇒ mode_DIR1_write true m t s cur_pc writeb
+(* dopo aver prelevato 2 byte la possibilita' modificare Io argomento = IX0 *)
+  | MODE_IX0_and_IMM1  ⇒ mode_IX0_write true m t s cur_pc writeb
+(* NO: solo lettura word *) 
+  | MODE_IX0p_and_IMM1 ⇒ None ?
+(* dopo aver prelevato 2 byte la possibilita' modificare Io argomento = IX1 *)
+  | MODE_IX1_and_IMM1  ⇒ mode_IX1_write true m t s cur_pc writeb
+(* NO: solo lettura word *) 
+  | MODE_IX1p_and_IMM1 ⇒ None ?
+(* dopo aver prelevato 2 byte la possibilita' modificare Io argomento = SP1 *)
+  | MODE_SP1_and_IMM1  ⇒ mode_SP1_write true m t s cur_pc writeb
+
+(* scrive 1 byte, ma la scrittura avviene solo per n-simo bit = leggi/modifica bit/scrivi *)
+  | MODE_DIRn msk ⇒ mode_DIR1n_write m t s cur_pc msk (getn_array8T msk bool (bits_of_byte8 writeb))   
+(* NO: solo lettura word *)
+  | MODE_DIRn_and_IMM1 _ ⇒ None ?
+(* scrive 1 byte su 0000 0000 0000 xxxxb *)
+  | MODE_TNY e ⇒ opt_map … (memory_filter_write m t s 〈〈x0,x0〉:〈x0,e〉〉 writeb)
+                   (λtmps.Some ? (pair … tmps cur_pc))
+(* scrive 1 byte su 0000 0000 000x xxxxb *)
+  | MODE_SRT e ⇒ opt_map … (memory_filter_write m t s 〈〈x0,x0〉:(b8_of_bit e)〉 writeb)
+                      (λtmps.Some ? (pair … tmps cur_pc)) ]
+ (* scrittura di una word *)
+ | false ⇒ λs:any_status m t.λcur_pc:word16.λi:instr_mode.λwritew:word16.match i with
+(* NO: non ci sono indicazioni *)
+  [ MODE_INH        ⇒ None ?
+(* NO: solo lettura/scrittura byte *)
+  | MODE_INHA       ⇒ None ?
+(* NO: solo lettura/scrittura byte *)
+  | MODE_INHX       ⇒ None ?
+(* NO: solo lettura/scrittura byte *)
+  | MODE_INHH       ⇒ None ?
+
+(* NO: solo lettura word *)
+  | MODE_INHX0ADD ⇒ None ?
+(* NO: solo lettura word *)
+  | MODE_INHX1ADD ⇒ None ?
+(* NO: solo lettura word *)
+  | MODE_INHX2ADD ⇒ None ?
+
+(* NO: solo lettura byte *)
+  | MODE_IMM1       ⇒ None ?
+(* NO: solo lettura word *)
+  | MODE_IMM1EXT    ⇒ None ?
+(* NO: solo lettura word *)
+  | MODE_IMM2       ⇒ None ?
+(* scrive 1 word su indirizzo diretto 1 byte *) 
+  | MODE_DIR1       ⇒ mode_DIR1_write false m t s cur_pc writew
+(* scrive 1 word su indirizzo diretto 1 word *)
+  | MODE_DIR2       ⇒ mode_DIR2_write false m t s cur_pc writew
+(* scrive 1 word su H:X *)
+  | MODE_IX0        ⇒ mode_IX0_write false m t s cur_pc writew
+(* scrive 1 word su H:X+1 byte offset *)
+  | MODE_IX1        ⇒ mode_IX1_write false m t s cur_pc writew
+(* scrive 1 word su H:X+1 word offset *)
+  | MODE_IX2        ⇒ mode_IX2_write false m t s cur_pc writew
+(* scrive 1 word su SP+1 byte offset *)
+  | MODE_SP1        ⇒ mode_SP1_write false m t s cur_pc writew
+(* scrive 1 word su SP+1 word offset *)
+  | MODE_SP2        ⇒ mode_SP2_write false m t s cur_pc writew
+
+(* NO: solo lettura/scrittura byte *)
+  | MODE_DIR1_to_DIR1 ⇒ None ?
+(* NO: solo lettura/scrittura byte *)
+  | MODE_IMM1_to_DIR1 ⇒ None ?
+(* NO: solo lettura/scrittura byte *)
+  | MODE_IX0p_to_DIR1 ⇒ None ?
+(* NO: solo lettura/scrittura byte *)
+  | MODE_DIR1_to_IX0p ⇒ None ?
+
+(* NO: solo lettura word/scrittura byte *)
+  | MODE_INHA_and_IMM1 ⇒ None ?
+(* NO: solo lettura word/scrittura byte *)     
+  | MODE_INHX_and_IMM1 ⇒ None ?
+(* NO: solo lettura word *) 
+  | MODE_IMM1_and_IMM1 ⇒ None ?
+(* NO: solo lettura word/scrittura byte *) 
+  | MODE_DIR1_and_IMM1 ⇒ None ?
+(* NO: solo lettura word/scrittura byte *) 
+  | MODE_IX0_and_IMM1  ⇒ None ?
+(* NO: solo lettura word *) 
+  | MODE_IX0p_and_IMM1 ⇒ None ?
+(* NO: solo lettura word/scrittura byte *)
+  | MODE_IX1_and_IMM1  ⇒ None ?
+(* NO: solo lettura word *) 
+  | MODE_IX1p_and_IMM1 ⇒ None ?
+(* NO: solo lettura word/scrittura byte *) 
+  | MODE_SP1_and_IMM1  ⇒ None ?
+
+(* NO: solo scrittura byte *)
+  | MODE_DIRn _          ⇒ None ?
+(* NO: solo lettura word *)
+  | MODE_DIRn_and_IMM1 _ ⇒ None ?
+(* NO: solo lettura/scrittura byte *)
+  | MODE_TNY _           ⇒ None ?
+(* NO: solo lettura/scrittura byte *)
+  | MODE_SRT _           ⇒ None ?
+  ]
+ ].
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/memory_abs.ma b/helm/software/matita/contribs/ng_assembly/freescale/memory_abs.ma
new file mode 100755 (executable)
index 0000000..736f4aa
--- /dev/null
@@ -0,0 +1,231 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/memory_func.ma".
+include "freescale/memory_trees.ma".
+include "freescale/memory_bits.ma".
+
+(* ********************************************* *)
+(* ASTRAZIONE DALL'IMPLEMENTAZIONE DELLA MEMORIA *)
+(* ********************************************* *)
+
+(* tipi di implementazione della memoria *)
+ninductive memory_impl : Type ≝
+  MEM_FUNC: memory_impl
+| MEM_TREE: memory_impl
+| MEM_BITS: memory_impl.
+
+(* ausiliario per il tipo della memoria *)
+ndefinition aux_mem_type ≝
+λt:memory_impl.match t with
+ [ MEM_FUNC ⇒ word16 → byte8
+ | MEM_TREE ⇒ Array16T (Array16T (Array16T (Array16T byte8)))
+ | MEM_BITS ⇒ Array16T (Array16T (Array16T (Array16T (Array8T bool))))
+ ].
+
+(* ausiliario per il tipo del checker *)
+ndefinition aux_chk_type ≝
+λt:memory_impl.match t with
+ [ MEM_FUNC ⇒ word16 → memory_type
+ | MEM_TREE ⇒ Array16T (Array16T (Array16T (Array16T memory_type)))
+ | MEM_BITS ⇒ Array16T (Array16T (Array16T (Array16T (Array8T memory_type))))
+ ].
+
+(* unificazione di out_of_bound_memory *)
+ndefinition out_of_bound_memory ≝
+λt:memory_impl.
+ match t
+  return λt.aux_chk_type t
+ with
+  [ MEM_FUNC ⇒ mf_out_of_bound_memory
+  | MEM_TREE ⇒ mt_out_of_bound_memory
+  | MEM_BITS ⇒ mb_out_of_bound_memory
+  ].
+
+(* unificazione di zero_memory *)
+ndefinition zero_memory ≝
+λt:memory_impl.
+ match t
+  return λt.aux_mem_type t
+ with
+  [ MEM_FUNC ⇒ mf_zero_memory
+  | MEM_TREE ⇒ mt_zero_memory
+  | MEM_BITS ⇒ mb_zero_memory
+  ].
+
+(* unificazione della lettura senza chk: mem_read_abs mem addr *)
+ndefinition mem_read_abs ≝
+λt:memory_impl.
+ match t
+  return λt.aux_mem_type t → word16 → byte8 
+ with
+  [ MEM_FUNC ⇒ λm:aux_mem_type MEM_FUNC.
+               λaddr:word16.
+               m addr
+  | MEM_TREE ⇒ λm:aux_mem_type MEM_TREE.
+               λaddr:word16.
+               mt_visit byte8 m addr
+  | MEM_BITS ⇒ λm:aux_mem_type MEM_BITS.
+               λaddr:word16.
+               byte8_of_bits (mt_visit (Array8T bool) m addr)
+  ].
+
+(* unificazione del chk *)
+ndefinition chk_get ≝
+λt:memory_impl.λc:aux_chk_type t.λaddr:word16.
+ match t
+  return λt.aux_chk_type t → word16 → Array8T memory_type
+ with
+  [ MEM_FUNC ⇒ mf_chk_get
+  | MEM_TREE ⇒ mt_chk_get
+  | MEM_BITS ⇒ mb_chk_get
+  ] c addr.
+
+(* unificazione della lettura con chk: mem_read mem chk addr *)
+ndefinition mem_read ≝
+λt:memory_impl.λm:aux_mem_type t.λc:aux_chk_type t.λaddr:word16.
+ match t
+  return λt.aux_mem_type t → aux_chk_type t → word16 → option byte8 
+ with
+  [ MEM_FUNC ⇒ mf_mem_read
+  | MEM_TREE ⇒ mt_mem_read
+  | MEM_BITS ⇒ mb_mem_read
+  ] m c addr.
+
+(* unificazione della lettura di bit con chk: mem_read mem chk addr sub *)
+ndefinition mem_read_bit ≝
+λt:memory_impl.
+ match t
+  return λt.aux_mem_type t → aux_chk_type t → word16 → oct → option bool 
+ with
+  [ MEM_FUNC ⇒ λm:aux_mem_type MEM_FUNC.
+               λc:aux_chk_type MEM_FUNC.
+               λaddr:word16.
+               λo:oct.
+               opt_map … (mf_mem_read m c addr)
+                (λb.Some ? (getn_array8T o bool (bits_of_byte8 b))) 
+  | MEM_TREE ⇒ λm:aux_mem_type MEM_TREE.
+               λc:aux_chk_type MEM_TREE.
+               λaddr:word16.
+               λo:oct.
+               opt_map … (mt_mem_read m c addr)
+                (λb.Some ? (getn_array8T o bool (bits_of_byte8 b)))
+  | MEM_BITS ⇒ λm:aux_mem_type MEM_BITS.
+               λc:aux_chk_type MEM_BITS.
+               λaddr:word16.
+               λo:oct.
+               mb_mem_read_bit m c addr o
+  ].
+
+(* unificazione della scrittura con chk: mem_update mem chk addr val *)
+ndefinition mem_update ≝
+λt:memory_impl.λm:aux_mem_type t.λc:aux_chk_type t.λaddr:word16.λv:byte8.
+ match t
+  return λt.aux_mem_type t → Array8T memory_type → word16 → byte8 → option (aux_mem_type t)
+ with
+  [ MEM_FUNC ⇒ mf_mem_update
+  | MEM_TREE ⇒ mt_mem_update
+  | MEM_BITS ⇒ mb_mem_update
+  ] m (chk_get t c addr) addr v.
+
+(* unificazione della scrittura di bit con chk: mem_update mem chk addr sub val *)
+ndefinition mem_update_bit ≝
+λt:memory_impl.
+ match t
+  return λt.aux_mem_type t → aux_chk_type t → word16 → oct → bool → option (aux_mem_type t) 
+ with
+  [ MEM_FUNC ⇒ λm:aux_mem_type MEM_FUNC.
+               λc:aux_chk_type MEM_FUNC.
+               λaddr:word16.
+               λo:oct.
+               λv:bool.
+               opt_map … (mf_mem_read m c addr)
+                (λb.mf_mem_update m (chk_get MEM_FUNC c addr) addr (byte8_of_bits (setn_array8T o bool (bits_of_byte8 b) v)))
+  | MEM_TREE ⇒ λm:aux_mem_type MEM_TREE.
+               λc:aux_chk_type MEM_TREE.
+               λaddr:word16.
+               λo:oct.
+               λv:bool.
+               opt_map … (mt_mem_read m c addr)
+                (λb.mt_mem_update m (chk_get MEM_TREE c addr) addr (byte8_of_bits (setn_array8T o bool (bits_of_byte8 b) v)))
+  | MEM_BITS ⇒ λm:aux_mem_type MEM_BITS.
+               λc:aux_chk_type MEM_BITS.
+               λaddr:word16.
+               λo:oct.
+               λv:bool.
+               mb_mem_update_bit m c addr o v
+  ].
+
+(* unificazione del caricamento: load_from_source_at old_mem source addr *)
+ndefinition load_from_source_at ≝
+λt:memory_impl.λm:aux_mem_type t.λl:list byte8.λaddr:word16.
+ match t
+  return λt.aux_mem_type t → list byte8 → word16 → aux_mem_type t 
+ with
+  [ MEM_FUNC ⇒ mf_load_from_source_at
+  | MEM_TREE ⇒ mt_load_from_source_at
+  | MEM_BITS ⇒ mb_load_from_source_at
+  ] m l addr.
+
+(* unificazione dell'impostazione della memoria: chk_update_ranged chk inf sup v *)
+ndefinition check_update_ranged ≝
+λt:memory_impl.
+ match t
+  return λt.aux_chk_type t → word16 → word16 → memory_type → aux_chk_type t 
+ with
+  [ MEM_FUNC ⇒ λc:aux_chk_type MEM_FUNC.
+               λinf,sup:word16.
+               λv:memory_type.
+               mf_check_update_ranged c inf sup v
+  | MEM_TREE ⇒ λc:aux_chk_type MEM_TREE.
+               λinf,sup:word16.
+               λv:memory_type.
+               mt_update_ranged memory_type c inf sup v
+  | MEM_BITS ⇒ λc:aux_chk_type MEM_BITS.
+               λinf,sup:word16.
+               λv:memory_type.
+               mt_update_ranged (Array8T memory_type) c inf sup (array_8T memory_type v v v v v v v v)
+  ].
+
+(* unificazione dell'impostazione dei bit: chk_update_bit chk addr sub v *)
+(* NB: dove non esiste la granularita' del bit, lascio inalterato *)
+ndefinition check_update_bit ≝
+λt:memory_impl.
+ match t
+  return λt.aux_chk_type t → word16 → oct → memory_type → aux_chk_type t
+ with
+  [ MEM_FUNC ⇒ λc:aux_chk_type MEM_FUNC.
+               λaddr:word16.
+               λo:oct.
+               λv:memory_type.
+               c
+  | MEM_TREE ⇒ λc:aux_chk_type MEM_TREE.
+               λaddr:word16.
+               λo:oct.
+               λv:memory_type.
+               c
+  | MEM_BITS ⇒ λc:aux_chk_type MEM_BITS.
+               λaddr:word16.
+               λo:oct.
+               λv:memory_type.
+               mb_chk_update_bit c addr o v
+  ].
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/memory_bits.ma b/helm/software/matita/contribs/ng_assembly/freescale/memory_bits.ma
new file mode 100755 (executable)
index 0000000..c49be93
--- /dev/null
@@ -0,0 +1,223 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/memory_trees.ma".
+
+(* ********************* *)
+(* MEMORIA E DESCRITTORE *)
+(* ********************* *)
+
+(* tutta la memoria non installata *)
+ndefinition mb_out_of_bound_memory ≝
+let base ≝ array_8T memory_type MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND
+                                MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND in
+let lev4 ≝ array_16T ? 
+           base base base base base base base base
+           base base base base base base base base
+           in
+let lev3 ≝ array_16T ?
+           lev4 lev4 lev4 lev4 lev4 lev4 lev4 lev4
+           lev4 lev4 lev4 lev4 lev4 lev4 lev4 lev4
+           in
+let lev2 ≝ array_16T ?
+           lev3 lev3 lev3 lev3 lev3 lev3 lev3 lev3
+           lev3 lev3 lev3 lev3 lev3 lev3 lev3 lev3
+           in
+let lev1 ≝ array_16T ?
+           lev2 lev2 lev2 lev2 lev2 lev2 lev2 lev2
+           lev2 lev2 lev2 lev2 lev2 lev2 lev2 lev2
+           in
+lev1.
+
+(* tutta la memoria a 0 *)
+ndefinition mb_zero_memory ≝
+let base ≝ array_8T bool false false false false false false false false in
+let lev4 ≝ array_16T ? 
+           base base base base base base base base
+           base base base base base base base base
+           in
+let lev3 ≝ array_16T ?
+           lev4 lev4 lev4 lev4 lev4 lev4 lev4 lev4
+           lev4 lev4 lev4 lev4 lev4 lev4 lev4 lev4
+           in
+let lev2 ≝ array_16T ?
+           lev3 lev3 lev3 lev3 lev3 lev3 lev3 lev3
+           lev3 lev3 lev3 lev3 lev3 lev3 lev3 lev3
+           in
+let lev1 ≝ array_16T ?
+           lev2 lev2 lev2 lev2 lev2 lev2 lev2 lev2
+           lev2 lev2 lev2 lev2 lev2 lev2 lev2 lev2
+           in
+lev1.
+
+(* scrivi bit controllando il tipo di memoria *)
+ndefinition mb_mem_update_bit ≝
+λmem:Array16T (Array16T (Array16T (Array16T (Array8T bool)))).
+λchk:Array16T (Array16T (Array16T (Array16T (Array8T memory_type)))).
+λaddr:word16.λsub:oct.λv:bool.
+ match getn_array8T sub memory_type (mt_visit (Array8T memory_type) chk addr) with
+  (* ROM? ok, ma il valore viene perso *)
+  [ MEM_READ_ONLY ⇒ Some ? mem
+  (* RAM? ok *)
+  | MEM_READ_WRITE ⇒ Some ? (mt_update (Array8T bool) mem addr (setn_array8T sub bool (mt_visit (Array8T bool) mem addr) v))
+  (* NON INSTALLATA? no *)
+  | MEM_OUT_OF_BOUND ⇒ None ? ].
+
+(* scrivi tipo di bit *)
+ndefinition mb_chk_update_bit ≝
+λchk:Array16T (Array16T (Array16T (Array16T (Array8T memory_type)))).
+λaddr:word16.λsub:oct.λv:memory_type.
+ mt_update (Array8T memory_type) chk addr (setn_array8T sub memory_type (mt_visit (Array8T memory_type) chk addr) v).
+
+(* leggi bit controllando il tipo di memoria *)
+ndefinition mb_mem_read_bit ≝
+λmem:Array16T (Array16T (Array16T (Array16T (Array8T bool)))).
+λchk:Array16T (Array16T (Array16T (Array16T (Array8T memory_type)))).
+λaddr:word16.λsub:oct.
+ match getn_array8T sub memory_type (mt_visit (Array8T memory_type) chk addr) with
+  (* ROM? ok, ma il valore viene perso *)
+  [ MEM_READ_ONLY ⇒ Some ? (getn_array8T sub bool (mt_visit (Array8T bool) mem addr))
+  (* RAM? ok *)
+  | MEM_READ_WRITE ⇒ Some ? (getn_array8T sub bool (mt_visit (Array8T bool) mem addr))
+  (* NON INSTALLATA? no *)
+  | MEM_OUT_OF_BOUND ⇒ None ? ]. 
+
+ndefinition mb_chk_get ≝
+λchk:Array16T (Array16T (Array16T (Array16T (Array8T memory_type)))).λaddr:word16.
+let c ≝ mt_visit (Array8T memory_type) chk addr in
+array_8T ? (getn_array8T o7 ? c) (getn_array8T o6 ? c)
+           (getn_array8T o5 ? c) (getn_array8T o4 ? c)
+           (getn_array8T o3 ? c) (getn_array8T o2 ? c)
+           (getn_array8T o1 ? c) (getn_array8T o0 ? c).
+
+(* scrivi controllando il tipo di memoria *)
+(* NB: devono esistere tutti i bit *)
+ndefinition mb_mem_update ≝
+λmem:Array16T (Array16T (Array16T (Array16T (Array8T bool)))).
+λchk:Array8T memory_type.
+λaddr:word16.λv:byte8.
+let old_value ≝ mt_visit (Array8T bool) mem addr in
+let new_value ≝ bits_of_byte8 v in
+let newbit0 ≝ match getn_array8T o0 memory_type chk with
+ [ MEM_READ_ONLY ⇒ Some bool (getn_array8T o0 bool old_value)
+ | MEM_READ_WRITE ⇒ Some bool (getn_array8T o0 bool new_value)
+ | MEM_OUT_OF_BOUND ⇒ None bool ] in
+let newbit1 ≝ match getn_array8T o1 memory_type chk with
+ [ MEM_READ_ONLY ⇒ Some bool (getn_array8T o1 bool old_value)
+ | MEM_READ_WRITE ⇒ Some bool (getn_array8T o1 bool new_value)
+ | MEM_OUT_OF_BOUND ⇒ None bool ] in
+let newbit2 ≝ match getn_array8T o2 memory_type chk with
+ [ MEM_READ_ONLY ⇒ Some bool (getn_array8T o2 bool old_value)
+ | MEM_READ_WRITE ⇒ Some bool (getn_array8T o2 bool new_value)
+ | MEM_OUT_OF_BOUND ⇒ None bool ] in
+let newbit3 ≝ match getn_array8T o3 memory_type chk with
+ [ MEM_READ_ONLY ⇒ Some bool (getn_array8T o3 bool old_value)
+ | MEM_READ_WRITE ⇒ Some bool (getn_array8T o3 bool new_value)
+ | MEM_OUT_OF_BOUND ⇒ None bool ] in
+let newbit4 ≝ match getn_array8T o4 memory_type chk with
+ [ MEM_READ_ONLY ⇒ Some bool (getn_array8T o4 bool old_value)
+ | MEM_READ_WRITE ⇒ Some bool (getn_array8T o4 bool new_value)
+ | MEM_OUT_OF_BOUND ⇒ None bool ] in
+let newbit5 ≝ match getn_array8T o5 memory_type chk with
+ [ MEM_READ_ONLY ⇒ Some bool (getn_array8T o5 bool old_value)
+ | MEM_READ_WRITE ⇒ Some bool (getn_array8T o5 bool new_value)
+ | MEM_OUT_OF_BOUND ⇒ None bool ] in
+let newbit6 ≝ match getn_array8T o6 memory_type chk with
+ [ MEM_READ_ONLY ⇒ Some bool (getn_array8T o6 bool old_value)
+ | MEM_READ_WRITE ⇒ Some bool (getn_array8T o6 bool new_value)
+ | MEM_OUT_OF_BOUND ⇒ None bool ] in
+let newbit7 ≝ match getn_array8T o7 memory_type chk with
+ [ MEM_READ_ONLY ⇒ Some bool (getn_array8T o7 bool old_value)
+ | MEM_READ_WRITE ⇒ Some bool (getn_array8T o7 bool new_value)
+ | MEM_OUT_OF_BOUND ⇒ None bool ] in
+       opt_map … newbit0
+ (λnb0.opt_map … newbit1
+ (λnb1.opt_map … newbit2
+ (λnb2.opt_map … newbit3
+ (λnb3.opt_map … newbit4
+ (λnb4.opt_map … newbit5
+ (λnb5.opt_map … newbit6
+ (λnb6.opt_map … newbit7
+ (λnb7.Some ? (mt_update (Array8T bool) mem addr (array_8T bool nb7 nb6 nb5 nb4 nb3 nb2 nb1 nb0)))))))))).
+
+(* leggi controllando il tipo di memoria *)
+(* NB: devono esistere tutti i bit *)
+ndefinition mb_mem_read ≝
+λmem:Array16T (Array16T (Array16T (Array16T (Array8T bool)))).
+λchk:Array16T (Array16T (Array16T (Array16T (Array8T memory_type)))).
+λaddr:word16.
+let bit_types ≝ mt_visit (Array8T memory_type) chk addr in
+let value ≝ mt_visit (Array8T bool) mem addr in
+let newbit0 ≝ match getn_array8T o0 memory_type bit_types with
+ [ MEM_READ_ONLY ⇒ Some bool (getn_array8T o0 bool value)
+ | MEM_READ_WRITE ⇒ Some bool (getn_array8T o0 bool value)
+ | MEM_OUT_OF_BOUND ⇒ None bool ] in
+let newbit1 ≝ match getn_array8T o1 memory_type bit_types with
+ [ MEM_READ_ONLY ⇒ Some bool (getn_array8T o1 bool value)
+ | MEM_READ_WRITE ⇒ Some bool (getn_array8T o1 bool value)
+ | MEM_OUT_OF_BOUND ⇒ None bool ] in
+let newbit2 ≝ match getn_array8T o2 memory_type bit_types with
+ [ MEM_READ_ONLY ⇒ Some bool (getn_array8T o2 bool value)
+ | MEM_READ_WRITE ⇒ Some bool (getn_array8T o2 bool value)
+ | MEM_OUT_OF_BOUND ⇒ None bool ] in
+let newbit3 ≝ match getn_array8T o3 memory_type bit_types with
+ [ MEM_READ_ONLY ⇒ Some bool (getn_array8T o3 bool value)
+ | MEM_READ_WRITE ⇒ Some bool (getn_array8T o3 bool value)
+ | MEM_OUT_OF_BOUND ⇒ None bool ] in
+let newbit4 ≝ match getn_array8T o4 memory_type bit_types with
+ [ MEM_READ_ONLY ⇒ Some bool (getn_array8T o4 bool value)
+ | MEM_READ_WRITE ⇒ Some bool (getn_array8T o4 bool value)
+ | MEM_OUT_OF_BOUND ⇒ None bool ] in
+let newbit5 ≝ match getn_array8T o5 memory_type bit_types with
+ [ MEM_READ_ONLY ⇒ Some bool (getn_array8T o5 bool value)
+ | MEM_READ_WRITE ⇒ Some bool (getn_array8T o5 bool value)
+ | MEM_OUT_OF_BOUND ⇒ None bool ] in
+let newbit6 ≝ match getn_array8T o6 memory_type bit_types with
+ [ MEM_READ_ONLY ⇒ Some bool (getn_array8T o6 bool value)
+ | MEM_READ_WRITE ⇒ Some bool (getn_array8T o6 bool value)
+ | MEM_OUT_OF_BOUND ⇒ None bool ] in
+let newbit7 ≝ match getn_array8T o7 memory_type bit_types with
+ [ MEM_READ_ONLY ⇒ Some bool (getn_array8T o7 bool value)
+ | MEM_READ_WRITE ⇒ Some bool (getn_array8T o7 bool value)
+ | MEM_OUT_OF_BOUND ⇒ None bool ] in
+       opt_map … newbit0
+ (λnb0.opt_map … newbit1
+ (λnb1.opt_map … newbit2
+ (λnb2.opt_map … newbit3
+ (λnb3.opt_map … newbit4
+ (λnb4.opt_map … newbit5
+ (λnb5.opt_map … newbit6
+ (λnb6.opt_map … newbit7
+ (λnb7.Some ? (byte8_of_bits (array_8T bool nb7 nb6 nb5 nb4 nb3 nb2 nb1 nb0)))))))))).
+
+(* ************************** *)
+(* CARICAMENTO PROGRAMMA/DATI *)
+(* ************************** *)
+
+(* carica a paratire da addr, scartando source (pescando da old_mem) se si supera 0xFFFF... *)
+nlet rec mb_load_from_source_at (old_mem:Array16T (Array16T (Array16T (Array16T (Array8T bool)))))
+                                (src:list byte8) (addr:word16) on src ≝
+ match src with
+  (* fine di source: carica da old_mem *)
+  [ nil ⇒ old_mem
+  | cons hd tl ⇒ mb_load_from_source_at (mt_update ? old_mem addr (bits_of_byte8 hd)) tl (plus_w16_d_d addr 〈〈x0,x0〉:〈x0,x1〉〉)
+  ].
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/memory_func.ma b/helm/software/matita/contribs/ng_assembly/freescale/memory_func.ma
new file mode 100755 (executable)
index 0000000..831c75a
--- /dev/null
@@ -0,0 +1,87 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/memory_struct.ma".
+include "num/word16.ma".
+include "common/option.ma".
+include "common/list.ma".
+
+(* ********************* *)
+(* MEMORIA E DESCRITTORE *)
+(* ********************* *)
+
+(* (mf_check_update_ranged chk inf sup mode) = setta tipo memoria *)
+ndefinition mf_check_update_ranged ≝
+λf:word16 → memory_type.λinf.λsup.λv.
+ λx.match inrange_w16 x inf sup with
+  [ true ⇒ v
+  | false ⇒ f x ].
+
+(* tutta la memoria non installata *)
+ndefinition mf_out_of_bound_memory ≝ λ_:word16.MEM_OUT_OF_BOUND.
+
+ndefinition mf_chk_get ≝
+λc:word16 → memory_type.λa:word16.
+ match c a with
+  [ MEM_READ_ONLY ⇒ array_8T ? MEM_READ_ONLY MEM_READ_ONLY MEM_READ_ONLY MEM_READ_ONLY MEM_READ_ONLY MEM_READ_ONLY MEM_READ_ONLY MEM_READ_ONLY
+  | MEM_READ_WRITE ⇒ array_8T ? MEM_READ_WRITE MEM_READ_WRITE MEM_READ_WRITE MEM_READ_WRITE MEM_READ_WRITE MEM_READ_WRITE MEM_READ_WRITE MEM_READ_WRITE
+  | MEM_OUT_OF_BOUND ⇒ array_8T ? MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND
+  ].
+
+(* (mf_mem_update mem checked addr val) = scrivi controllando il tipo di memoria *)
+ndefinition mf_mem_update ≝
+λf:word16 → byte8.λc:Array8T memory_type.λa:word16.λv:byte8.
+ match getn_array8T o0 ? c with
+  (* ROM? ok, ma il valore viene perso *)
+  [ MEM_READ_ONLY ⇒ Some ? f
+  (* RAM? ok *)
+  | MEM_READ_WRITE ⇒ Some ? (λx.match eq_w16 x a with [ true ⇒ v | false ⇒ f x ])
+  (* NON INSTALLATA? no *)
+  | MEM_OUT_OF_BOUND ⇒ None ? ].  
+
+(* tutta la memoria a 0 *)
+ndefinition mf_zero_memory ≝ λ_:word16.〈x0,x0〉.
+
+(* (mf_mem_read mem check addr) = leggi controllando il tipo di memoria *)
+ndefinition mf_mem_read ≝
+λf:word16 → byte8.λc:word16 → memory_type.λa.
+ match c a with
+  [ MEM_READ_ONLY ⇒ Some ? (f a)
+  | MEM_READ_WRITE ⇒ Some ? (f a)
+  | MEM_OUT_OF_BOUND ⇒ None ? ].
+
+(* ************************** *)
+(* CARICAMENTO PROGRAMMA/DATI *)
+(* ************************** *)
+
+(* carica a paratire da addr, overflow se si supera 0xFFFF... *)
+nlet rec mf_load_from_source_at (old_mem:word16 → byte8) (src:list byte8) (addr:word16) on src ≝
+ match src with
+  (* fine di source: carica da old_mem *)
+  [ nil ⇒ old_mem
+  | cons hd tl ⇒ λx:word16.match eq_w16 addr x with
+   (* la locazione corrisponde al punto corrente di source *)
+   [ true ⇒ hd
+   (* la locazione e' piu' avanti? ricorsione *)
+   | false ⇒ (mf_load_from_source_at old_mem tl (plus_w16_d_d addr 〈〈x0,x0〉:〈x0,x1〉〉)) x
+   ]
+  ].
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/memory_struct.ma b/helm/software/matita/contribs/ng_assembly/freescale/memory_struct.ma
new file mode 100755 (executable)
index 0000000..4fc65ab
--- /dev/null
@@ -0,0 +1,624 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "num/oct.ma".
+include "num/byte8.ma".
+
+(* **************************** *)
+(* TIPI PER I MODULI DI MEMORIA *)
+(* **************************** *)
+
+(* tipi di memoria:RAM/ROM/non installata *)
+ninductive memory_type : Type ≝
+  MEM_READ_ONLY: memory_type
+| MEM_READ_WRITE: memory_type
+| MEM_OUT_OF_BOUND: memory_type.
+
+(* **************** *)
+(* TIPO ARRAY DA 16 *)
+(* **************** *)
+
+(* definizione di un array omogeneo di dimensione 16 *)
+ninductive Array16T (T:Type) : Type ≝
+array_16T : T → T → T → T → T → T → T → T →
+            T → T → T → T → T → T → T → T →
+            Array16T T.
+
+(* abbiamo gia' gli esadecimali come tipo induttivo quindi: *)
+(* posso definire un getter a matrice sull'array *)
+ndefinition getn_array16T ≝
+λn:exadecim.λT:Type.λp:Array16T T.
+ match p with 
+  [ array_16T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15 ⇒
+ match n with
+  [ x0 ⇒ e00 | x1 ⇒ e01 | x2 ⇒ e02 | x3 ⇒ e03 | x4 ⇒ e04 | x5 ⇒ e05 | x6 ⇒ e06 | x7 ⇒ e07
+  | x8 ⇒ e08 | x9 ⇒ e09 | xA ⇒ e10 | xB ⇒ e11 | xC ⇒ e12 | xD ⇒ e13 | xE ⇒ e14 | xF ⇒ e15
+  ]].
+
+(* abbiamo gia' gli esadecimali come tipo induttivo quindi: *)
+(* posso definire un setter a matrice sull'array *)
+ndefinition setn_array16T ≝
+λn:exadecim.λT:Type.λp:Array16T T.λv:T.
+ match p with 
+  [ array_16T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15 ⇒
+ match n with
+  [ x0 ⇒ array_16T T v   e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+  | x1 ⇒ array_16T T e00 v   e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+  | x2 ⇒ array_16T T e00 e01 v   e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+  | x3 ⇒ array_16T T e00 e01 e02 v   e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+  | x4 ⇒ array_16T T e00 e01 e02 e03 v   e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+  | x5 ⇒ array_16T T e00 e01 e02 e03 e04 v   e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+  | x6 ⇒ array_16T T e00 e01 e02 e03 e04 e05 v   e07 e08 e09 e10 e11 e12 e13 e14 e15
+  | x7 ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 v   e08 e09 e10 e11 e12 e13 e14 e15
+  | x8 ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 v   e09 e10 e11 e12 e13 e14 e15
+  | x9 ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 v   e10 e11 e12 e13 e14 e15
+  | xA ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 v   e11 e12 e13 e14 e15
+  | xB ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 v   e12 e13 e14 e15
+  | xC ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 v   e13 e14 e15
+  | xD ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 v   e14 e15
+  | xE ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 v   e15
+  | xF ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 v
+  ]].
+
+(* abbiamo gia' gli esadecimali come tipo induttivo quindi: *)
+(* posso definire un setter multiplo [m,n] a matrice sull'array *)
+ndefinition setmn_array16T ≝
+λm,n:exadecim.λT:Type.λp:Array16T T.λv:T.
+ match p with 
+  [ array_16T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15 ⇒
+ match m with
+  [ x0 ⇒ match n with
+   [ x0 ⇒ array_16T T v e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x1 ⇒ array_16T T v v   e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x2 ⇒ array_16T T v v   v   e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x3 ⇒ array_16T T v v   v   v   e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x4 ⇒ array_16T T v v   v   v   v   e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x5 ⇒ array_16T T v v   v   v   v   v   e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x6 ⇒ array_16T T v v   v   v   v   v   v   e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x7 ⇒ array_16T T v v   v   v   v   v   v   v   e08 e09 e10 e11 e12 e13 e14 e15
+   | x8 ⇒ array_16T T v v   v   v   v   v   v   v   v   e09 e10 e11 e12 e13 e14 e15
+   | x9 ⇒ array_16T T v v   v   v   v   v   v   v   v   v   e10 e11 e12 e13 e14 e15
+   | xA ⇒ array_16T T v v   v   v   v   v   v   v   v   v   v   e11 e12 e13 e14 e15
+   | xB ⇒ array_16T T v v   v   v   v   v   v   v   v   v   v   v   e12 e13 e14 e15
+   | xC ⇒ array_16T T v v   v   v   v   v   v   v   v   v   v   v   v   e13 e14 e15
+   | xD ⇒ array_16T T v v   v   v   v   v   v   v   v   v   v   v   v   v   e14 e15
+   | xE ⇒ array_16T T v v   v   v   v   v   v   v   v   v   v   v   v   v   v   e15
+   | xF ⇒ array_16T T v v   v   v   v   v   v   v   v   v   v   v   v   v   v   v ]
+  | x1 ⇒ match n with
+   [ x0 ⇒ p
+   | x1 ⇒ array_16T T e00 v e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x2 ⇒ array_16T T e00 v v   e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x3 ⇒ array_16T T e00 v v   v   e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x4 ⇒ array_16T T e00 v v   v   v   e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x5 ⇒ array_16T T e00 v v   v   v   v   e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x6 ⇒ array_16T T e00 v v   v   v   v   v   e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x7 ⇒ array_16T T e00 v v   v   v   v   v   v   e08 e09 e10 e11 e12 e13 e14 e15
+   | x8 ⇒ array_16T T e00 v v   v   v   v   v   v   v   e09 e10 e11 e12 e13 e14 e15
+   | x9 ⇒ array_16T T e00 v v   v   v   v   v   v   v   v   e10 e11 e12 e13 e14 e15
+   | xA ⇒ array_16T T e00 v v   v   v   v   v   v   v   v   v   e11 e12 e13 e14 e15
+   | xB ⇒ array_16T T e00 v v   v   v   v   v   v   v   v   v   v   e12 e13 e14 e15
+   | xC ⇒ array_16T T e00 v v   v   v   v   v   v   v   v   v   v   v   e13 e14 e15
+   | xD ⇒ array_16T T e00 v v   v   v   v   v   v   v   v   v   v   v   v   e14 e15
+   | xE ⇒ array_16T T e00 v v   v   v   v   v   v   v   v   v   v   v   v   v   e15
+   | xF ⇒ array_16T T e00 v v   v   v   v   v   v   v   v   v   v   v   v   v   v ]
+  | x2 ⇒ match n with
+   [ x0 ⇒ p | x1 ⇒ p
+   | x2 ⇒ array_16T T e00 e01 v e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x3 ⇒ array_16T T e00 e01 v v   e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x4 ⇒ array_16T T e00 e01 v v   v   e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x5 ⇒ array_16T T e00 e01 v v   v   v   e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x6 ⇒ array_16T T e00 e01 v v   v   v   v   e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x7 ⇒ array_16T T e00 e01 v v   v   v   v   v   e08 e09 e10 e11 e12 e13 e14 e15
+   | x8 ⇒ array_16T T e00 e01 v v   v   v   v   v   v   e09 e10 e11 e12 e13 e14 e15
+   | x9 ⇒ array_16T T e00 e01 v v   v   v   v   v   v   v   e10 e11 e12 e13 e14 e15
+   | xA ⇒ array_16T T e00 e01 v v   v   v   v   v   v   v   v   e11 e12 e13 e14 e15
+   | xB ⇒ array_16T T e00 e01 v v   v   v   v   v   v   v   v   v   e12 e13 e14 e15
+   | xC ⇒ array_16T T e00 e01 v v   v   v   v   v   v   v   v   v   v   e13 e14 e15
+   | xD ⇒ array_16T T e00 e01 v v   v   v   v   v   v   v   v   v   v   v   e14 e15
+   | xE ⇒ array_16T T e00 e01 v v   v   v   v   v   v   v   v   v   v   v   v   e15
+   | xF ⇒ array_16T T e00 e01 v v   v   v   v   v   v   v   v   v   v   v   v   v ]
+  | x3 ⇒ match n with
+   [ x0 ⇒ p | x1 ⇒ p | x2 ⇒ p
+   | x3 ⇒ array_16T T e00 e01 e02 v e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x4 ⇒ array_16T T e00 e01 e02 v v   e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x5 ⇒ array_16T T e00 e01 e02 v v   v   e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x6 ⇒ array_16T T e00 e01 e02 v v   v   v   e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x7 ⇒ array_16T T e00 e01 e02 v v   v   v   v   e08 e09 e10 e11 e12 e13 e14 e15
+   | x8 ⇒ array_16T T e00 e01 e02 v v   v   v   v   v   e09 e10 e11 e12 e13 e14 e15
+   | x9 ⇒ array_16T T e00 e01 e02 v v   v   v   v   v   v   e10 e11 e12 e13 e14 e15
+   | xA ⇒ array_16T T e00 e01 e02 v v   v   v   v   v   v   v   e11 e12 e13 e14 e15
+   | xB ⇒ array_16T T e00 e01 e02 v v   v   v   v   v   v   v   v   e12 e13 e14 e15
+   | xC ⇒ array_16T T e00 e01 e02 v v   v   v   v   v   v   v   v   v   e13 e14 e15
+   | xD ⇒ array_16T T e00 e01 e02 v v   v   v   v   v   v   v   v   v   v   e14 e15
+   | xE ⇒ array_16T T e00 e01 e02 v v   v   v   v   v   v   v   v   v   v   v   e15
+   | xF ⇒ array_16T T e00 e01 e02 v v   v   v   v   v   v   v   v   v   v   v   v ]
+  | x4 ⇒ match n with
+   [ x0 ⇒ p | x1 ⇒ p | x2 ⇒ p | x3 ⇒ p
+   | x4 ⇒ array_16T T e00 e01 e02 e03 v e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x5 ⇒ array_16T T e00 e01 e02 e03 v v   e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x6 ⇒ array_16T T e00 e01 e02 e03 v v   v   e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x7 ⇒ array_16T T e00 e01 e02 e03 v v   v   v   e08 e09 e10 e11 e12 e13 e14 e15
+   | x8 ⇒ array_16T T e00 e01 e02 e03 v v   v   v   v   e09 e10 e11 e12 e13 e14 e15
+   | x9 ⇒ array_16T T e00 e01 e02 e03 v v   v   v   v   v   e10 e11 e12 e13 e14 e15
+   | xA ⇒ array_16T T e00 e01 e02 e03 v v   v   v   v   v   v   e11 e12 e13 e14 e15
+   | xB ⇒ array_16T T e00 e01 e02 e03 v v   v   v   v   v   v   v   e12 e13 e14 e15
+   | xC ⇒ array_16T T e00 e01 e02 e03 v v   v   v   v   v   v   v   v   e13 e14 e15
+   | xD ⇒ array_16T T e00 e01 e02 e03 v v   v   v   v   v   v   v   v   v   e14 e15
+   | xE ⇒ array_16T T e00 e01 e02 e03 v v   v   v   v   v   v   v   v   v   v   e15
+   | xF ⇒ array_16T T e00 e01 e02 e03 v v   v   v   v   v   v   v   v   v   v   v ]
+  | x5 ⇒ match n with
+   [ x0 ⇒ p | x1 ⇒ p | x2 ⇒ p | x3 ⇒ p | x4 ⇒ p
+   | x5 ⇒ array_16T T e00 e01 e02 e03 e04 v e06 e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x6 ⇒ array_16T T e00 e01 e02 e03 e04 v v   e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x7 ⇒ array_16T T e00 e01 e02 e03 e04 v v   v   e08 e09 e10 e11 e12 e13 e14 e15
+   | x8 ⇒ array_16T T e00 e01 e02 e03 e04 v v   v   v   e09 e10 e11 e12 e13 e14 e15
+   | x9 ⇒ array_16T T e00 e01 e02 e03 e04 v v   v   v   v   e10 e11 e12 e13 e14 e15
+   | xA ⇒ array_16T T e00 e01 e02 e03 e04 v v   v   v   v   v   e11 e12 e13 e14 e15
+   | xB ⇒ array_16T T e00 e01 e02 e03 e04 v v   v   v   v   v   v   e12 e13 e14 e15
+   | xC ⇒ array_16T T e00 e01 e02 e03 e04 v v   v   v   v   v   v   v   e13 e14 e15
+   | xD ⇒ array_16T T e00 e01 e02 e03 e04 v v   v   v   v   v   v   v   v   e14 e15
+   | xE ⇒ array_16T T e00 e01 e02 e03 e04 v v   v   v   v   v   v   v   v   v   e15
+   | xF ⇒ array_16T T e00 e01 e02 e03 e04 v v   v   v   v   v   v   v   v   v   v ]
+  | x6 ⇒ match n with
+   [ x0 ⇒ p | x1 ⇒ p | x2 ⇒ p | x3 ⇒ p | x4 ⇒ p | x5 ⇒ p
+   | x6 ⇒ array_16T T e00 e01 e02 e03 e04 e05 v e07 e08 e09 e10 e11 e12 e13 e14 e15
+   | x7 ⇒ array_16T T e00 e01 e02 e03 e04 e05 v v   e08 e09 e10 e11 e12 e13 e14 e15
+   | x8 ⇒ array_16T T e00 e01 e02 e03 e04 e05 v v   v   e09 e10 e11 e12 e13 e14 e15
+   | x9 ⇒ array_16T T e00 e01 e02 e03 e04 e05 v v   v   v   e10 e11 e12 e13 e14 e15
+   | xA ⇒ array_16T T e00 e01 e02 e03 e04 e05 v v   v   v   v   e11 e12 e13 e14 e15
+   | xB ⇒ array_16T T e00 e01 e02 e03 e04 e05 v v   v   v   v   v   e12 e13 e14 e15
+   | xC ⇒ array_16T T e00 e01 e02 e03 e04 e05 v v   v   v   v   v   v   e13 e14 e15
+   | xD ⇒ array_16T T e00 e01 e02 e03 e04 e05 v v   v   v   v   v   v   v   e14 e15
+   | xE ⇒ array_16T T e00 e01 e02 e03 e04 e05 v v   v   v   v   v   v   v   v   e15
+   | xF ⇒ array_16T T e00 e01 e02 e03 e04 e05 v v   v   v   v   v   v   v   v   v ]
+  | x7 ⇒ match n with
+   [ x0 ⇒ p | x1 ⇒ p | x2 ⇒ p | x3 ⇒ p | x4 ⇒ p | x5 ⇒ p | x6 ⇒ p
+   | x7 ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 v e08 e09 e10 e11 e12 e13 e14 e15
+   | x8 ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 v v   e09 e10 e11 e12 e13 e14 e15
+   | x9 ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 v v   v   e10 e11 e12 e13 e14 e15
+   | xA ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 v v   v   v   e11 e12 e13 e14 e15
+   | xB ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 v v   v   v   v   e12 e13 e14 e15
+   | xC ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 v v   v   v   v   v   e13 e14 e15
+   | xD ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 v v   v   v   v   v   v   e14 e15
+   | xE ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 v v   v   v   v   v   v   v   e15
+   | xF ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 v v   v   v   v   v   v   v   v ]
+  | x8 ⇒ match n with
+   [ x0 ⇒ p | x1 ⇒ p | x2 ⇒ p | x3 ⇒ p | x4 ⇒ p | x5 ⇒ p | x6 ⇒ p | x7 ⇒ p
+   | x8 ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 v e09 e10 e11 e12 e13 e14 e15
+   | x9 ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 v v   e10 e11 e12 e13 e14 e15
+   | xA ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 v v   v   e11 e12 e13 e14 e15
+   | xB ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 v v   v   v   e12 e13 e14 e15
+   | xC ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 v v   v   v   v   e13 e14 e15
+   | xD ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 v v   v   v   v   v   e14 e15
+   | xE ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 v v   v   v   v   v   v   e15
+   | xF ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 v v   v   v   v   v   v   v ]
+  | x9 ⇒ match n with
+   [ x0 ⇒ p | x1 ⇒ p | x2 ⇒ p  | x3 ⇒ p | x4 ⇒ p | x5 ⇒ p | x6 ⇒ p | x7 ⇒ p
+   | x8 ⇒ p
+   | x9 ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 v e10 e11 e12 e13 e14 e15
+   | xA ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 v v   e11 e12 e13 e14 e15
+   | xB ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 v v   v   e12 e13 e14 e15
+   | xC ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 v v   v   v   e13 e14 e15
+   | xD ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 v v   v   v   v   e14 e15
+   | xE ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 v v   v   v   v   v   e15
+   | xF ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 v v   v   v   v   v   v ]
+  | xA ⇒ match n with
+   [ x0 ⇒ p | x1 ⇒ p | x2 ⇒ p | x3 ⇒ p | x4 ⇒ p | x5 ⇒ p | x6 ⇒ p | x7 ⇒ p
+   | x8 ⇒ p | x9 ⇒ p
+   | xA ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 v e11 e12 e13 e14 e15
+   | xB ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 v v   e12 e13 e14 e15
+   | xC ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 v v   v   e13 e14 e15
+   | xD ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 v v   v   v   e14 e15
+   | xE ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 v v   v   v   v   e15
+   | xF ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 v v   v   v   v   v ]
+  | xB ⇒ match n with
+   [ x0 ⇒ p | x1 ⇒ p | x2 ⇒ p | x3 ⇒ p | x4 ⇒ p | x5 ⇒ p | x6 ⇒ p | x7 ⇒ p
+   | x8 ⇒ p | x9 ⇒ p | xA ⇒ p
+   | xB ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 v e12 e13 e14 e15
+   | xC ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 v v   e13 e14 e15
+   | xD ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 v v   v   e14 e15
+   | xE ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 v v   v   v   e15
+   | xF ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 v v   v   v   v ]
+  | xC ⇒ match n with
+   [ x0 ⇒ p | x1 ⇒ p | x2 ⇒ p | x3 ⇒ p | x4 ⇒ p | x5 ⇒ p | x6 ⇒ p | x7 ⇒ p
+   | x8 ⇒ p | x9 ⇒ p | xA ⇒ p | xB ⇒ p
+   | xC ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 v e13 e14 e15
+   | xD ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 v v   e14 e15
+   | xE ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 v v   v   e15
+   | xF ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 v v   v   v ]
+  | xD ⇒ match n with
+   [ x0 ⇒ p | x1 ⇒ p | x2 ⇒ p | x3 ⇒ p | x4 ⇒ p | x5 ⇒ p | x6 ⇒ p | x7 ⇒ p
+   | x8 ⇒ p | x9 ⇒ p | xA ⇒ p | xB ⇒ p | xC ⇒ p
+   | xD ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 v e14 e15
+   | xE ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 v v   e15
+   | xF ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 v v   v ]
+  | xE ⇒ match n with
+   [ x0 ⇒ p | x1 ⇒ p | x2 ⇒ p | x3 ⇒ p | x4 ⇒ p | x5 ⇒ p | x6 ⇒ p | x7 ⇒ p
+   | x8 ⇒ p | x9 ⇒ p | xA ⇒ p | xB ⇒ p | xC ⇒ p | xD ⇒ p
+   | xE ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 v e15
+   | xF ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 v v ]
+  | xF ⇒ match n with
+   [ x0 ⇒ p | x1 ⇒ p | x2 ⇒ p | x3 ⇒ p | x4 ⇒ p | x5 ⇒ p | x6 ⇒ p | x7 ⇒ p
+   | x8 ⇒ p | x9 ⇒ p | xA ⇒ p | xB ⇒ p | xC ⇒ p | xD ⇒ p | xE ⇒ p
+   | xF ⇒ array_16T T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 v ]
+  ]].
+
+(* abbiamo gia' gli esadecimali come tipo induttivo quindi: *)
+(* posso definire un setter composto [m+1,n-1] a matrice sull'array *)
+(* NB: obbiettivo evitare l'overflow *)
+ndefinition setmn_array16T_succ_pred ≝
+λm,n:exadecim.λT:Type.λp:Array16T T.λv:T.
+ match lt_ex m xF with
+  [ true ⇒ match gt_ex n x0 with
+   [ true ⇒ setmn_array16T (succ_ex m) (pred_ex n) T p v
+   | false ⇒ p
+   ]
+  | false ⇒ p
+  ].
+
+(* abbiamo gia' gli esadecimali come tipo induttivo quindi: *)
+(* posso definire un setter composto [m+1,F] a matrice sull'array *)
+(* NB: obbiettivo evitare l'overflow *)
+ndefinition setmn_array16T_succ ≝
+λm:exadecim.λT:Type.λp:Array16T T.λv:T.
+ match lt_ex m xF with
+  [ true ⇒ setmn_array16T (succ_ex m) xF T p v
+  | false ⇒ p
+  ].
+
+(* abbiamo gia' gli esadecimali come tipo induttivo quindi: *)
+(* posso definire un setter composto [0,n-1] a matrice sull'array *)
+(* NB: obbiettivo evitare l'overflow *)
+ndefinition setmn_array16T_pred ≝
+λn:exadecim.λT:Type.λp:Array16T T.λv:T.
+ match gt_ex n x0 with
+  [ true ⇒ setmn_array16T x0 (pred_ex n) T p v
+  | false ⇒ p
+  ].
+
+(* ************************** *)
+(* TIPO BYTE COME INSIEME BIT *)
+(* ************************** *)
+
+(* definizione di un byte come 8 bit *)
+ninductive Array8T (T:Type) : Type ≝
+array_8T : T → T → T → T → T → T → T → T →
+           Array8T T.
+
+(* abbiamo gia' gli ottali come tipo induttivo quindi: *)
+(* posso definire un getter a matrice sull'array *)
+ndefinition getn_array8T ≝
+λn:oct.λT:Type.λp:Array8T T.
+ match p with 
+  [ array_8T e07 e06 e05 e04 e03 e02 e01 e00 ⇒
+ match n with
+  [ o0 ⇒ e00 | o1 ⇒ e01 | o2 ⇒ e02 | o3 ⇒ e03 | o4 ⇒ e04 | o5 ⇒ e05 | o6 ⇒ e06 | o7 ⇒ e07 ]].
+
+(* abbiamo gia' gli ottali come tipo induttivo quindi: *)
+(* posso definire un setter a matrice sull'array *)
+ndefinition setn_array8T ≝
+λn:oct.λT:Type.λp:Array8T T.λv:T.
+ match p with 
+  [ array_8T e07 e06 e05 e04 e03 e02 e01 e00 ⇒
+ match n with
+  [ o0 ⇒ array_8T T e07 e06 e05 e04 e03 e02 e01 v
+  | o1 ⇒ array_8T T e07 e06 e05 e04 e03 e02 v   e00
+  | o2 ⇒ array_8T T e07 e06 e05 e04 e03 v   e01 e00
+  | o3 ⇒ array_8T T e07 e06 e05 e04 v   e02 e01 e00
+  | o4 ⇒ array_8T T e07 e06 e05 v   e03 e02 e01 e00
+  | o5 ⇒ array_8T T e07 e06 v   e04 e03 e02 e01 e00
+  | o6 ⇒ array_8T T e07 v   e05 e04 e03 e02 e01 e00
+  | o7 ⇒ array_8T T v   e06 e05 e04 e03 e02 e01 e00
+  ]].
+
+(* lettura byte *)
+ndefinition byte8_of_bits ≝
+λp:Array8T bool.
+ match p with 
+  [ array_8T e07 e06 e05 e04 e03 e02 e01 e00 ⇒
+   mk_byte8
+   (or_ex (match e07 with [ true ⇒ x8 | false ⇒ x0 ])
+   (or_ex (match e06 with [ true ⇒ x4 | false ⇒ x0 ])
+   (or_ex (match e05 with [ true ⇒ x2 | false ⇒ x0 ])
+          (match e04 with [ true ⇒ x1 | false ⇒ x0 ]))))
+   (or_ex (match e03 with [ true ⇒ x8 | false ⇒ x0 ])
+   (or_ex (match e02 with [ true ⇒ x4 | false ⇒ x0 ])
+   (or_ex (match e01 with [ true ⇒ x2 | false ⇒ x0 ])
+          (match e00 with [ true ⇒ x1 | false ⇒ x0 ])))) ].
+
+(* scrittura byte *)
+ndefinition bits_of_byte8 ≝
+λp:byte8.
+ match b8h p with
+  [ x0 ⇒ match b8l p with
+   [ x0 ⇒ array_8T bool false false false false false false false false
+   | x1 ⇒ array_8T bool false false false false false false false true
+   | x2 ⇒ array_8T bool false false false false false false true  false
+   | x3 ⇒ array_8T bool false false false false false false true  true
+   | x4 ⇒ array_8T bool false false false false false true  false false
+   | x5 ⇒ array_8T bool false false false false false true  false true
+   | x6 ⇒ array_8T bool false false false false false true  true  false
+   | x7 ⇒ array_8T bool false false false false false true  true  true
+   | x8 ⇒ array_8T bool false false false false true  false false false
+   | x9 ⇒ array_8T bool false false false false true  false false true
+   | xA ⇒ array_8T bool false false false false true  false true  false
+   | xB ⇒ array_8T bool false false false false true  false true  true
+   | xC ⇒ array_8T bool false false false false true  true  false false
+   | xD ⇒ array_8T bool false false false false true  true  false true
+   | xE ⇒ array_8T bool false false false false true  true  true  false
+   | xF ⇒ array_8T bool false false false false true  true  true  true ]
+  | x1 ⇒ match b8l p with
+   [ x0 ⇒ array_8T bool false false false true  false false false false
+   | x1 ⇒ array_8T bool false false false true  false false false true
+   | x2 ⇒ array_8T bool false false false true  false false true  false
+   | x3 ⇒ array_8T bool false false false true  false false true  true
+   | x4 ⇒ array_8T bool false false false true  false true  false false
+   | x5 ⇒ array_8T bool false false false true  false true  false true
+   | x6 ⇒ array_8T bool false false false true  false true  true  false
+   | x7 ⇒ array_8T bool false false false true  false true  true  true
+   | x8 ⇒ array_8T bool false false false true  true  false false false
+   | x9 ⇒ array_8T bool false false false true  true  false false true
+   | xA ⇒ array_8T bool false false false true  true  false true  false
+   | xB ⇒ array_8T bool false false false true  true  false true  true
+   | xC ⇒ array_8T bool false false false true  true  true  false false
+   | xD ⇒ array_8T bool false false false true  true  true  false true
+   | xE ⇒ array_8T bool false false false true  true  true  true  false
+   | xF ⇒ array_8T bool false false false true  true  true  true  true ]
+  | x2 ⇒ match b8l p with
+   [ x0 ⇒ array_8T bool false false true  false false false false false
+   | x1 ⇒ array_8T bool false false true  false false false false true
+   | x2 ⇒ array_8T bool false false true  false false false true  false
+   | x3 ⇒ array_8T bool false false true  false false false true  true
+   | x4 ⇒ array_8T bool false false true  false false true  false false
+   | x5 ⇒ array_8T bool false false true  false false true  false true
+   | x6 ⇒ array_8T bool false false true  false false true  true  false
+   | x7 ⇒ array_8T bool false false true  false false true  true  true
+   | x8 ⇒ array_8T bool false false true  false true  false false false
+   | x9 ⇒ array_8T bool false false true  false true  false false true
+   | xA ⇒ array_8T bool false false true  false true  false true  false
+   | xB ⇒ array_8T bool false false true  false true  false true  true
+   | xC ⇒ array_8T bool false false true  false true  true  false false
+   | xD ⇒ array_8T bool false false true  false true  true  false true
+   | xE ⇒ array_8T bool false false true  false true  true  true  false
+   | xF ⇒ array_8T bool false false true  false true  true  true  true ]
+  | x3 ⇒ match b8l p with
+   [ x0 ⇒ array_8T bool false false true  true  false false false false
+   | x1 ⇒ array_8T bool false false true  true  false false false true
+   | x2 ⇒ array_8T bool false false true  true  false false true  false
+   | x3 ⇒ array_8T bool false false true  true  false false true  true
+   | x4 ⇒ array_8T bool false false true  true  false true  false false
+   | x5 ⇒ array_8T bool false false true  true  false true  false true
+   | x6 ⇒ array_8T bool false false true  true  false true  true  false
+   | x7 ⇒ array_8T bool false false true  true  false true  true  true
+   | x8 ⇒ array_8T bool false false true  true  true  false false false
+   | x9 ⇒ array_8T bool false false true  true  true  false false true
+   | xA ⇒ array_8T bool false false true  true  true  false true  false
+   | xB ⇒ array_8T bool false false true  true  true  false true  true
+   | xC ⇒ array_8T bool false false true  true  true  true  false false
+   | xD ⇒ array_8T bool false false true  true  true  true  false true
+   | xE ⇒ array_8T bool false false true  true  true  true  true  false
+   | xF ⇒ array_8T bool false false true  true  true  true  true  true ]
+  | x4 ⇒ match b8l p with
+   [ x0 ⇒ array_8T bool false true  false false false false false false
+   | x1 ⇒ array_8T bool false true  false false false false false true
+   | x2 ⇒ array_8T bool false true  false false false false true  false
+   | x3 ⇒ array_8T bool false true  false false false false true  true
+   | x4 ⇒ array_8T bool false true  false false false true  false false
+   | x5 ⇒ array_8T bool false true  false false false true  false true
+   | x6 ⇒ array_8T bool false true  false false false true  true  false
+   | x7 ⇒ array_8T bool false true  false false false true  true  true
+   | x8 ⇒ array_8T bool false true  false false true  false false false
+   | x9 ⇒ array_8T bool false true  false false true  false false true
+   | xA ⇒ array_8T bool false true  false false true  false true  false
+   | xB ⇒ array_8T bool false true  false false true  false true  true
+   | xC ⇒ array_8T bool false true  false false true  true  false false
+   | xD ⇒ array_8T bool false true  false false true  true  false true
+   | xE ⇒ array_8T bool false true  false false true  true  true  false
+   | xF ⇒ array_8T bool false true  false false true  true  true  true ]
+  | x5 ⇒ match b8l p with
+   [ x0 ⇒ array_8T bool false true  false true  false false false false
+   | x1 ⇒ array_8T bool false true  false true  false false false true
+   | x2 ⇒ array_8T bool false true  false true  false false true  false
+   | x3 ⇒ array_8T bool false true  false true  false false true  true
+   | x4 ⇒ array_8T bool false true  false true  false true  false false
+   | x5 ⇒ array_8T bool false true  false true  false true  false true
+   | x6 ⇒ array_8T bool false true  false true  false true  true  false
+   | x7 ⇒ array_8T bool false true  false true  false true  true  true
+   | x8 ⇒ array_8T bool false true  false true  true  false false false
+   | x9 ⇒ array_8T bool false true  false true  true  false false true
+   | xA ⇒ array_8T bool false true  false true  true  false true  false
+   | xB ⇒ array_8T bool false true  false true  true  false true  true
+   | xC ⇒ array_8T bool false true  false true  true  true  false false
+   | xD ⇒ array_8T bool false true  false true  true  true  false true
+   | xE ⇒ array_8T bool false true  false true  true  true  true  false
+   | xF ⇒ array_8T bool false true  false true  true  true  true  true ]
+  | x6 ⇒ match b8l p with
+   [ x0 ⇒ array_8T bool false true  true  false false false false false
+   | x1 ⇒ array_8T bool false true  true  false false false false true
+   | x2 ⇒ array_8T bool false true  true  false false false true  false
+   | x3 ⇒ array_8T bool false true  true  false false false true  true
+   | x4 ⇒ array_8T bool false true  true  false false true  false false
+   | x5 ⇒ array_8T bool false true  true  false false true  false true
+   | x6 ⇒ array_8T bool false true  true  false false true  true  false
+   | x7 ⇒ array_8T bool false true  true  false false true  true  true
+   | x8 ⇒ array_8T bool false true  true  false true  false false false
+   | x9 ⇒ array_8T bool false true  true  false true  false false true
+   | xA ⇒ array_8T bool false true  true  false true  false true  false
+   | xB ⇒ array_8T bool false true  true  false true  false true  true
+   | xC ⇒ array_8T bool false true  true  false true  true  false false
+   | xD ⇒ array_8T bool false true  true  false true  true  false true
+   | xE ⇒ array_8T bool false true  true  false true  true  true  false
+   | xF ⇒ array_8T bool false true  true  false true  true  true  true ]
+  | x7 ⇒ match b8l p with
+   [ x0 ⇒ array_8T bool false true  true  true  false false false false
+   | x1 ⇒ array_8T bool false true  true  true  false false false true
+   | x2 ⇒ array_8T bool false true  true  true  false false true  false
+   | x3 ⇒ array_8T bool false true  true  true  false false true  true
+   | x4 ⇒ array_8T bool false true  true  true  false true  false false
+   | x5 ⇒ array_8T bool false true  true  true  false true  false true
+   | x6 ⇒ array_8T bool false true  true  true  false true  true  false
+   | x7 ⇒ array_8T bool false true  true  true  false true  true  true
+   | x8 ⇒ array_8T bool false true  true  true  true  false false false
+   | x9 ⇒ array_8T bool false true  true  true  true  false false true
+   | xA ⇒ array_8T bool false true  true  true  true  false true  false
+   | xB ⇒ array_8T bool false true  true  true  true  false true  true
+   | xC ⇒ array_8T bool false true  true  true  true  true  false false
+   | xD ⇒ array_8T bool false true  true  true  true  true  false true
+   | xE ⇒ array_8T bool false true  true  true  true  true  true  false
+   | xF ⇒ array_8T bool false true  true  true  true  true  true  true ]
+  | x8 ⇒ match b8l p with
+   [ x0 ⇒ array_8T bool true  false false false false false false false
+   | x1 ⇒ array_8T bool true  false false false false false false true
+   | x2 ⇒ array_8T bool true  false false false false false true  false
+   | x3 ⇒ array_8T bool true  false false false false false true  true
+   | x4 ⇒ array_8T bool true  false false false false true  false false
+   | x5 ⇒ array_8T bool true  false false false false true  false true
+   | x6 ⇒ array_8T bool true  false false false false true  true  false
+   | x7 ⇒ array_8T bool true  false false false false true  true  true
+   | x8 ⇒ array_8T bool true  false false false true  false false false
+   | x9 ⇒ array_8T bool true  false false false true  false false true
+   | xA ⇒ array_8T bool true  false false false true  false true  false
+   | xB ⇒ array_8T bool true  false false false true  false true  true
+   | xC ⇒ array_8T bool true  false false false true  true  false false
+   | xD ⇒ array_8T bool true  false false false true  true  false true
+   | xE ⇒ array_8T bool true  false false false true  true  true  false
+   | xF ⇒ array_8T bool true  false false false true  true  true  true ]
+  | x9 ⇒ match b8l p with
+   [ x0 ⇒ array_8T bool true  false false true  false false false false
+   | x1 ⇒ array_8T bool true  false false true  false false false true
+   | x2 ⇒ array_8T bool true  false false true  false false true  false
+   | x3 ⇒ array_8T bool true  false false true  false false true  true
+   | x4 ⇒ array_8T bool true  false false true  false true  false false
+   | x5 ⇒ array_8T bool true  false false true  false true  false true
+   | x6 ⇒ array_8T bool true  false false true  false true  true  false
+   | x7 ⇒ array_8T bool true  false false true  false true  true  true
+   | x8 ⇒ array_8T bool true  false false true  true  false false false
+   | x9 ⇒ array_8T bool true  false false true  true  false false true
+   | xA ⇒ array_8T bool true  false false true  true  false true  false
+   | xB ⇒ array_8T bool true  false false true  true  false true  true
+   | xC ⇒ array_8T bool true  false false true  true  true  false false
+   | xD ⇒ array_8T bool true  false false true  true  true  false true
+   | xE ⇒ array_8T bool true  false false true  true  true  true  false
+   | xF ⇒ array_8T bool true  false false true  true  true  true  true ]
+  | xA ⇒ match b8l p with
+   [ x0 ⇒ array_8T bool true  false true  false false false false false
+   | x1 ⇒ array_8T bool true  false true  false false false false true
+   | x2 ⇒ array_8T bool true  false true  false false false true  false
+   | x3 ⇒ array_8T bool true  false true  false false false true  true
+   | x4 ⇒ array_8T bool true  false true  false false true  false false
+   | x5 ⇒ array_8T bool true  false true  false false true  false true
+   | x6 ⇒ array_8T bool true  false true  false false true  true  false
+   | x7 ⇒ array_8T bool true  false true  false false true  true  true
+   | x8 ⇒ array_8T bool true  false true  false true  false false false
+   | x9 ⇒ array_8T bool true  false true  false true  false false true
+   | xA ⇒ array_8T bool true  false true  false true  false true  false
+   | xB ⇒ array_8T bool true  false true  false true  false true  true
+   | xC ⇒ array_8T bool true  false true  false true  true  false false
+   | xD ⇒ array_8T bool true  false true  false true  true  false true
+   | xE ⇒ array_8T bool true  false true  false true  true  true  false
+   | xF ⇒ array_8T bool true  false true  false true  true  true  true ]
+  | xB ⇒ match b8l p with
+   [ x0 ⇒ array_8T bool true  false true  true  false false false false
+   | x1 ⇒ array_8T bool true  false true  true  false false false true
+   | x2 ⇒ array_8T bool true  false true  true  false false true  false
+   | x3 ⇒ array_8T bool true  false true  true  false false true  true
+   | x4 ⇒ array_8T bool true  false true  true  false true  false false
+   | x5 ⇒ array_8T bool true  false true  true  false true  false true
+   | x6 ⇒ array_8T bool true  false true  true  false true  true  false
+   | x7 ⇒ array_8T bool true  false true  true  false true  true  true
+   | x8 ⇒ array_8T bool true  false true  true  true  false false false
+   | x9 ⇒ array_8T bool true  false true  true  true  false false true
+   | xA ⇒ array_8T bool true  false true  true  true  false true  false
+   | xB ⇒ array_8T bool true  false true  true  true  false true  true
+   | xC ⇒ array_8T bool true  false true  true  true  true  false false
+   | xD ⇒ array_8T bool true  false true  true  true  true  false true
+   | xE ⇒ array_8T bool true  false true  true  true  true  true  false
+   | xF ⇒ array_8T bool true  false true  true  true  true  true  true ]
+  | xC ⇒ match b8l p with
+   [ x0 ⇒ array_8T bool true  true  false false false false false false
+   | x1 ⇒ array_8T bool true  true  false false false false false true
+   | x2 ⇒ array_8T bool true  true  false false false false true  false
+   | x3 ⇒ array_8T bool true  true  false false false false true  true
+   | x4 ⇒ array_8T bool true  true  false false false true  false false
+   | x5 ⇒ array_8T bool true  true  false false false true  false true
+   | x6 ⇒ array_8T bool true  true  false false false true  true  false
+   | x7 ⇒ array_8T bool true  true  false false false true  true  true
+   | x8 ⇒ array_8T bool true  true  false false true  false false false
+   | x9 ⇒ array_8T bool true  true  false false true  false false true
+   | xA ⇒ array_8T bool true  true  false false true  false true  false
+   | xB ⇒ array_8T bool true  true  false false true  false true  true
+   | xC ⇒ array_8T bool true  true  false false true  true  false false
+   | xD ⇒ array_8T bool true  true  false false true  true  false true
+   | xE ⇒ array_8T bool true  true  false false true  true  true  false
+   | xF ⇒ array_8T bool true  true  false false true  true  true  true ]
+  | xD ⇒ match b8l p with
+   [ x0 ⇒ array_8T bool true  true  false true  false false false false
+   | x1 ⇒ array_8T bool true  true  false true  false false false true
+   | x2 ⇒ array_8T bool true  true  false true  false false true  false
+   | x3 ⇒ array_8T bool true  true  false true  false false true  true
+   | x4 ⇒ array_8T bool true  true  false true  false true  false false
+   | x5 ⇒ array_8T bool true  true  false true  false true  false true
+   | x6 ⇒ array_8T bool true  true  false true  false true  true  false
+   | x7 ⇒ array_8T bool true  true  false true  false true  true  true
+   | x8 ⇒ array_8T bool true  true  false true  true  false false false
+   | x9 ⇒ array_8T bool true  true  false true  true  false false true
+   | xA ⇒ array_8T bool true  true  false true  true  false true  false
+   | xB ⇒ array_8T bool true  true  false true  true  false true  true
+   | xC ⇒ array_8T bool true  true  false true  true  true  false false
+   | xD ⇒ array_8T bool true  true  false true  true  true  false true
+   | xE ⇒ array_8T bool true  true  false true  true  true  true  false
+   | xF ⇒ array_8T bool true  true  false true  true  true  true  true ]
+  | xE ⇒ match b8l p with
+   [ x0 ⇒ array_8T bool true  true  true  false false false false false
+   | x1 ⇒ array_8T bool true  true  true  false false false false true
+   | x2 ⇒ array_8T bool true  true  true  false false false true  false
+   | x3 ⇒ array_8T bool true  true  true  false false false true  true
+   | x4 ⇒ array_8T bool true  true  true  false false true  false false
+   | x5 ⇒ array_8T bool true  true  true  false false true  false true
+   | x6 ⇒ array_8T bool true  true  true  false false true  true  false
+   | x7 ⇒ array_8T bool true  true  true  false false true  true  true
+   | x8 ⇒ array_8T bool true  true  true  false true  false false false
+   | x9 ⇒ array_8T bool true  true  true  false true  false false true
+   | xA ⇒ array_8T bool true  true  true  false true  false true  false
+   | xB ⇒ array_8T bool true  true  true  false true  false true  true
+   | xC ⇒ array_8T bool true  true  true  false true  true  false false
+   | xD ⇒ array_8T bool true  true  true  false true  true  false true
+   | xE ⇒ array_8T bool true  true  true  false true  true  true  false
+   | xF ⇒ array_8T bool true  true  true  false true  true  true  true ]
+  | xF ⇒ match b8l p with
+   [ x0 ⇒ array_8T bool true  true  true  true  false false false false
+   | x1 ⇒ array_8T bool true  true  true  true  false false false true
+   | x2 ⇒ array_8T bool true  true  true  true  false false true  false
+   | x3 ⇒ array_8T bool true  true  true  true  false false true  true
+   | x4 ⇒ array_8T bool true  true  true  true  false true  false false
+   | x5 ⇒ array_8T bool true  true  true  true  false true  false true
+   | x6 ⇒ array_8T bool true  true  true  true  false true  true  false
+   | x7 ⇒ array_8T bool true  true  true  true  false true  true  true
+   | x8 ⇒ array_8T bool true  true  true  true  true  false false false
+   | x9 ⇒ array_8T bool true  true  true  true  true  false false true
+   | xA ⇒ array_8T bool true  true  true  true  true  false true  false
+   | xB ⇒ array_8T bool true  true  true  true  true  false true  true
+   | xC ⇒ array_8T bool true  true  true  true  true  true  false false
+   | xD ⇒ array_8T bool true  true  true  true  true  true  false true
+   | xE ⇒ array_8T bool true  true  true  true  true  true  true  false
+   | xF ⇒ array_8T bool true  true  true  true  true  true  true  true ]
+  ].
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/memory_trees.ma b/helm/software/matita/contribs/ng_assembly/freescale/memory_trees.ma
new file mode 100755 (executable)
index 0000000..e1e338b
--- /dev/null
@@ -0,0 +1,227 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/memory_struct.ma".
+include "num/word16.ma".
+include "common/option.ma".
+include "common/list.ma".
+
+(* ********************* *)
+(* MEMORIA E DESCRITTORE *)
+(* ********************* *)
+
+(* tutta la memoria non installata *)
+ndefinition mt_out_of_bound_memory ≝
+let lev4 ≝ array_16T ? 
+           MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND
+           MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND
+           MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND
+           MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND
+           in
+let lev3 ≝ array_16T ?
+           lev4 lev4 lev4 lev4 lev4 lev4 lev4 lev4
+           lev4 lev4 lev4 lev4 lev4 lev4 lev4 lev4
+           in
+let lev2 ≝ array_16T ?
+           lev3 lev3 lev3 lev3 lev3 lev3 lev3 lev3
+           lev3 lev3 lev3 lev3 lev3 lev3 lev3 lev3
+           in
+let lev1 ≝ array_16T ?
+           lev2 lev2 lev2 lev2 lev2 lev2 lev2 lev2
+           lev2 lev2 lev2 lev2 lev2 lev2 lev2 lev2
+           in
+lev1.
+
+(* tutta la memoria a 0 *)
+ndefinition mt_zero_memory ≝
+let lev4 ≝ array_16T ? 
+           (mk_byte8 x0 x0) (mk_byte8 x0 x0) (mk_byte8 x0 x0) (mk_byte8 x0 x0)
+           (mk_byte8 x0 x0) (mk_byte8 x0 x0) (mk_byte8 x0 x0) (mk_byte8 x0 x0)
+           (mk_byte8 x0 x0) (mk_byte8 x0 x0) (mk_byte8 x0 x0) (mk_byte8 x0 x0)
+           (mk_byte8 x0 x0) (mk_byte8 x0 x0) (mk_byte8 x0 x0) (mk_byte8 x0 x0)
+           in
+let lev3 ≝ array_16T ?
+           lev4 lev4 lev4 lev4 lev4 lev4 lev4 lev4
+           lev4 lev4 lev4 lev4 lev4 lev4 lev4 lev4
+           in
+let lev2 ≝ array_16T ?
+           lev3 lev3 lev3 lev3 lev3 lev3 lev3 lev3
+           lev3 lev3 lev3 lev3 lev3 lev3 lev3 lev3
+           in
+let lev1 ≝ array_16T ?
+           lev2 lev2 lev2 lev2 lev2 lev2 lev2 lev2
+           lev2 lev2 lev2 lev2 lev2 lev2 lev2 lev2
+           in
+lev1.
+
+(* visita di un albero da 64KB di elementi: ln16(65536)=4 passaggi *)
+ndefinition mt_visit ≝
+λT:Type.λdata:Array16T (Array16T (Array16T (Array16T T))).λaddr:word16.
+ match addr with
+  [ mk_word16 wh wl ⇒
+ getn_array16T (b8l wl) ?
+  (getn_array16T (b8h wl) ?
+   (getn_array16T (b8l wh) ?
+    (getn_array16T (b8h wh) ? data))) ].
+
+(* scrittura di un elemento in un albero da 64KB *)
+ndefinition mt_update ≝
+λT:Type.λdata:Array16T (Array16T (Array16T (Array16T T))).λaddr:word16.λv:T.
+ match addr with
+  [ mk_word16 wh wl ⇒
+ let lev2 ≝ getn_array16T (b8h wh) ? data in
+ let lev3 ≝ getn_array16T (b8l wh) ? lev2 in
+ let lev4 ≝ getn_array16T (b8h wl) ? lev3 in
+ setn_array16T (b8h wh) ? data
+  (setn_array16T (b8l wh) ? lev2
+   (setn_array16T (b8h wl) ? lev3
+    (setn_array16T (b8l wl) T lev4 v))) ].
+
+(* scrittura di un range in un albero da 64KB *)
+ndefinition mt_update_ranged ≝
+λT:Type.λdata:Array16T (Array16T (Array16T (Array16T T))).λi,s:word16.λv:T.
+ (* ok i≤s *)
+ match le_w16 i s with
+  [ true ⇒
+ match i with
+  [ mk_word16 ih il ⇒
+ match s with
+  [ mk_word16 sh sl ⇒
+ let aux_4 ≝ Array16T T in
+ let aux_3 ≝ Array16T (Array16T T) in
+ let aux_2 ≝ Array16T (Array16T (Array16T T)) in
+
+ let ilev2 ≝ getn_array16T (b8h ih) aux_2 data in
+ let ilev3 ≝ getn_array16T (b8l ih) aux_3 ilev2 in
+ let ilev4 ≝ getn_array16T (b8h il) aux_4 ilev3 in
+
+ let slev2 ≝ getn_array16T (b8h sh) aux_2 data in
+ let slev3 ≝ getn_array16T (b8l sh) aux_3 slev2 in
+ let slev4 ≝ getn_array16T (b8h sl) aux_4 slev3 in
+
+ let vlev4 ≝ array_16T T v v v v v v v v v v v v v v v v in
+ let vlev3 ≝ array_16T aux_4 vlev4 vlev4 vlev4 vlev4 vlev4 vlev4 vlev4 vlev4
+                             vlev4 vlev4 vlev4 vlev4 vlev4 vlev4 vlev4 vlev4 in
+ let vlev2 ≝ array_16T aux_3 vlev3 vlev3 vlev3 vlev3 vlev3 vlev3 vlev3 vlev3
+                             vlev3 vlev3 vlev3 vlev3 vlev3 vlev3 vlev3 vlev3 in
+
+ match eq_ex (b8h ih) (b8h sh) with
+  [ true ⇒ match eq_ex (b8l ih) (b8l sh) with
+   [ true ⇒ match eq_ex (b8h il) (b8h sl) with
+    (* caso 0x...(X) a 0x...(Y) *)
+    [ true ⇒ setn_array16T (b8h ih) aux_2 data
+              (setn_array16T (b8l ih) aux_3 ilev2
+               (setn_array16T (b8h il) aux_4 ilev3
+                (* cambio a partire da livello 4 *)
+                (setmn_array16T (b8l il) (b8l sl) T ilev4 v))) (* ...X,...Y *)
+    (* caso 0x..(X1)(X2) a 0x..(Y1)(Y2) *)
+    | false ⇒ setn_array16T (b8h ih) aux_2 data
+               (setn_array16T (b8l ih) aux_3 ilev2
+                (* cambio a partire da livello 3 *)
+                (setn_array16T (b8h sl) aux_4 (* ..(Y1)0,..(Y1)(Y2) *)
+                 (setmn_array16T_succ_pred (b8h il) (b8h sl) aux_4 (* ..(X1+1).,..(Y1-1). *)
+                  (setn_array16T (b8h il) aux_4 ilev3
+                   (setmn_array16T (b8l il) xF T ilev4 v)) (* ..(X1)(X2),..(X1)F *)
+                  vlev4)
+                 (setmn_array16T x0 (b8l sl) T slev4 v))) ]
+   (* caso 0x.(X1)(X2)(X3) a 0x..(Y1)(Y2)(Y3) *)
+   | false ⇒ setn_array16T (b8h ih) aux_2 data
+              (* cambio a partire da livello 2 *)
+              (setn_array16T (b8l sh) aux_3
+               (setmn_array16T_succ_pred (b8l ih) (b8l sh) aux_3 (* .(X1+1)..,.(Y1-1).. *)
+                (setn_array16T (b8l ih) aux_3 ilev2
+                 (setmn_array16T_succ (b8h il) aux_4 (* .(X1)(X2+1).,.(X1)F. *)
+                  (setn_array16T (b8h il) aux_4 ilev3
+                   (setmn_array16T (b8l il) xF T ilev4 v)) (* .(X1)(X2)(X3),.(X1)(X2)F *)
+                  vlev4))
+                vlev3)
+               (setmn_array16T_pred (b8h sl) aux_4 (* .(Y1)0.,.(Y1)(Y2-1). *)
+                (setn_array16T (b8h sl) aux_4 slev3
+                 (setmn_array16T x0 (b8l sl) T slev4 v)) (* .(Y1)(Y2)0,.(Y1)(Y2)(Y3) *)
+                vlev4))
+   ]
+  (* caso 0x(X1)(X2)(X3)(X4) a 0x(Y1)(Y2)(Y3)(Y4) *)
+  | false ⇒ setn_array16T (b8h sh) aux_2
+             (setmn_array16T_succ_pred (b8h ih) (b8h sh) aux_2 (* (X+1)...,(Y-1)... *)
+              (setn_array16T (b8h ih) aux_2 data
+               (setmn_array16T_succ (b8l ih) aux_3 (* (X1)(X2+1)..,(X1)F.. *)
+                (setn_array16T (b8l ih) aux_3 ilev2
+                 (setmn_array16T_succ (b8h il) aux_4 (* (X1)(X2)(X3+1).,(X1)(X2)F. *)
+                  (setn_array16T (b8h il) aux_4 ilev3
+                   (setmn_array16T (b8l il) xF T ilev4 v)) (* (X1)(X2)(X3)(X4),(X1)(X2)(X3)F *)
+                  vlev4))
+                vlev3))
+               vlev2)
+             (setmn_array16T_pred (b8l sh) aux_3 (* (Y1)0..,(Y1)(Y2-1).. *)
+              (setn_array16T (b8l sh) aux_3 slev2
+               (setmn_array16T_pred (b8h sl) aux_4 (* (Y1)(Y2)0.,(Y1)(Y2)(Y3-1). *)
+                (setn_array16T (b8h sl) aux_4 slev3
+                 (setmn_array16T x0 (b8l sl) T slev4 v)) (* (Y1)(Y2)(Y3)0,(Y1)(Y2)(Y3)(Y4) *)
+                vlev4))
+              vlev3) ]]]
+ (* no i>s *)
+ | false ⇒ data
+ ].
+
+ndefinition mt_chk_get ≝
+λchk:Array16T (Array16T (Array16T (Array16T memory_type))).λaddr:word16.
+ match mt_visit ? chk addr with
+ [ MEM_READ_ONLY ⇒ array_8T ? MEM_READ_ONLY MEM_READ_ONLY MEM_READ_ONLY MEM_READ_ONLY MEM_READ_ONLY MEM_READ_ONLY MEM_READ_ONLY MEM_READ_ONLY
+ | MEM_READ_WRITE ⇒ array_8T ? MEM_READ_WRITE MEM_READ_WRITE MEM_READ_WRITE MEM_READ_WRITE MEM_READ_WRITE MEM_READ_WRITE MEM_READ_WRITE MEM_READ_WRITE
+ | MEM_OUT_OF_BOUND ⇒ array_8T ? MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND MEM_OUT_OF_BOUND
+ ].
+
+(* scrivi controllando il tipo di memoria *)
+ndefinition mt_mem_update ≝
+λmem:Array16T (Array16T (Array16T (Array16T byte8))).
+λchk:Array8T memory_type.
+λaddr:word16.λv:byte8.
+ match getn_array8T o0 ? chk with
+  (* ROM? ok, ma il valore viene perso *)
+  [ MEM_READ_ONLY ⇒ Some ? mem
+  (* RAM? ok *)
+  | MEM_READ_WRITE ⇒ Some ? (mt_update ? mem addr v)
+  (* NON INSTALLATA? no *)
+  | MEM_OUT_OF_BOUND ⇒ None ? ].  
+
+(* leggi controllando il tipo di memoria *)
+ndefinition mt_mem_read ≝
+λmem:Array16T (Array16T (Array16T (Array16T byte8))).
+λchk:Array16T (Array16T (Array16T (Array16T memory_type))).
+λaddr:word16.
+ match  mt_visit ? chk addr with
+  [ MEM_READ_ONLY ⇒ Some ? (mt_visit ? mem addr)
+  | MEM_READ_WRITE ⇒ Some ? (mt_visit ? mem addr)
+  | MEM_OUT_OF_BOUND ⇒ None ? ].
+
+(* ************************** *)
+(* CARICAMENTO PROGRAMMA/DATI *)
+(* ************************** *)
+
+(* carica a paratire da addr, overflow se si supera 0xFFFF... *)
+nlet rec mt_load_from_source_at (old_mem:Array16T (Array16T (Array16T (Array16T byte8))))
+                                (src:list byte8) (addr:word16) on src ≝
+ match src with
+  (* fine di source: carica da old_mem *)
+  [ nil ⇒ old_mem
+  | cons hd tl ⇒ mt_load_from_source_at (mt_update ? old_mem addr hd) tl (plus_w16_d_d addr 〈〈x0,x0〉:〈x0,x1〉〉)
+  ].
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/model.ma b/helm/software/matita/contribs/ng_assembly/freescale/model.ma
new file mode 100755 (executable)
index 0000000..fe01726
--- /dev/null
@@ -0,0 +1,357 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/status.ma".
+
+(* *********************************** *)
+(* IMPOSTAZIONI SPECIFICHE DEI MODELLI *)
+(* *********************************** *)
+
+(* modelli di HC05 *)
+ninductive HC05_mcu_model : Type ≝
+  MC68HC05J5A: HC05_mcu_model
+  (*..*).
+
+(* modelli di HC08 *)
+ninductive HC08_mcu_model : Type ≝
+  MC68HC08AB16A: HC08_mcu_model
+  (*..*). 
+
+(* modelli di HCS08 *)
+ninductive HCS08_mcu_model : Type ≝
+  MC9S08AW60 : HCS08_mcu_model
+| MC9S08GB60 : HCS08_mcu_model
+  (*..*).
+
+(* modelli di RS08 *)
+ninductive RS08_mcu_model : Type ≝
+  MC9RS08KA1 : RS08_mcu_model
+| MC9RS08KA2 : RS08_mcu_model.
+
+(* raggruppamento dei modelli *)
+ninductive any_mcu_model : Type ≝
+  FamilyHC05  : HC05_mcu_model → any_mcu_model
+| FamilyHC08  : HC08_mcu_model → any_mcu_model
+| FamilyHCS08 : HCS08_mcu_model → any_mcu_model
+| FamilyRS08  : RS08_mcu_model → any_mcu_model.
+
+(* 
+condizioni errore interne alla MCU
+(Il programma viene caricato dal produttore in ROM o impostato in EEPROM)
+HC05: +illegal address during opcode fetch
+HC08: +illegal address duting opcode fetch (ILAD mascherabile)
+      +illegal opcode (ILOP mascherabile)
+
+(Il programma viene programmato nella FLASH)       
+HCS08: +illegal address during opcode fetch (ILAD mascherabile)
+       +illegal opcode (ILOP mascherabile)
+       +security = accesso a RAM e zone FLASH dichiarate sicure da zone sicure
+                   da' 0 in lettura e ignore in scrittura, [FLASH]SEC00:SEC01 (1,0)
+                   corrisponde a OFF, altre ON, disattivabile solo da modalita' sicura se
+                   opzione [FLASH]KEYEN e' 1 passando chiave a 8byte da modalita' sicura.
+                   Altrimenti disattivabile solo con FLASH mass erase. Obbiettivo
+                   e' impedire duplicazione di software di controllo, dato che esiste
+                   modalita' debugging. A restart viene ricaricata da FLASH impostazione
+                   sicurezza!
+RS08: +illegal address durting opcode fetch (ILAD) mascherabile
+      +illegal opcode (ILOP mascherabile)
+      +security = solo la FLASH e' considerata sicura. Stesso meccanismo di HCS08
+                  ma governato solo da [FLASH]SECD (0) OFF.Una volta attivato l'unica
+                  disattivazione e' la cancellazione della FLASH.
+*)
+
+(* memoria degli HC05 *)
+ndefinition memory_type_of_FamilyHC05 ≝
+λm:HC05_mcu_model.match m with
+  [ MC68HC05J5A ⇒
+   [
+  (* astraggo molto *)
+  (* 0x0000-0x001F,0x0FF0: sarebbe memory mapped IO *)
+  
+     triple … 〈〈x0,x0〉:〈x8,x0〉〉 〈〈x0,x0〉:〈xF,xF〉〉 MEM_READ_WRITE (* 128B RAM+STACK *)
+   ; triple … 〈〈x0,x3〉:〈x0,x0〉〉 〈〈x0,xC〉:〈xF,xF〉〉 MEM_READ_ONLY  (* 2560B USER ROM *)
+   ; triple … 〈〈x0,xE〉:〈x0,x0〉〉 〈〈x0,xF〉:〈xF,xF〉〉 MEM_READ_ONLY  (* 512B INTERNAL ROM *)
+    ]
+   (*..*)
+  ].
+
+(* memoria degli HC08 *)
+ndefinition memory_type_of_FamilyHC08 ≝
+λm:HC08_mcu_model.match m with
+  [ MC68HC08AB16A ⇒
+   [
+  (* astraggo molto *) 
+  (* 0x0000-0x004F,0xFE00-0xFE01,0xFE03,
+     0xFE0C-0xFE11,0xFE1A-0xFE1D,0xFE1F: sarebbe memory mapped IO *)
+  (* 0x0500-0x057F,0xFE02,0xFE04-0xFE07,
+     0xFE09-0xFE0B,0xFE12-0xFE19,0xFE1E,0xFFC0-0xFFCF : sarebbe reserved *)
+      
+     triple … 〈〈x0,x0〉:〈x5,x0〉〉 〈〈x0,x2〉:〈x4,xF〉〉 MEM_READ_WRITE (* 512B RAM *)
+   ; triple … 〈〈x0,x8〉:〈x0,x0〉〉 〈〈x0,x9〉:〈xF,xF〉〉 MEM_READ_ONLY  (* 512B EEPROM *)
+   ; triple … 〈〈xB,xE〉:〈x0,x0〉〉 〈〈xF,xD〉:〈xF,xF〉〉 MEM_READ_ONLY  (* 16384B ROM *)
+   ; triple … 〈〈xF,xE〉:〈x2,x0〉〉 〈〈xF,xF〉:〈x5,x2〉〉 MEM_READ_ONLY  (* 307B ROM *)
+   ; triple … 〈〈xF,xF〉:〈xD,x0〉〉 〈〈xF,xF〉:〈xF,xF〉〉 MEM_READ_ONLY  (* 48B ROM *) ]
+   (*..*)
+  ].
+
+(* memoria degli HCS08 *)
+ndefinition memory_type_of_FamilyHCS08 ≝
+λm:HCS08_mcu_model.match m with
+  [ MC9S08AW60 ⇒
+   [ 
+  (* astraggo molto *)
+  (* 0x0000-0x006F,0x1800-0x185F: sarebbe memory mapped IO *)
+  
+     triple … 〈〈x0,x0〉:〈x7,x0〉〉 〈〈x0,x8〉:〈x6,xF〉〉 MEM_READ_WRITE (* 2048B RAM *)
+   ; triple … 〈〈x0,x8〉:〈x7,x0〉〉 〈〈x1,x7〉:〈xF,xF〉〉 MEM_READ_ONLY  (* 3984B FLASH *)
+   ; triple … 〈〈x1,x8〉:〈x6,x0〉〉 〈〈xF,xF〉:〈xF,xF〉〉 MEM_READ_ONLY  (* 59296B FLASH *) ]
+  | MC9S08GB60 ⇒
+   [ 
+  (* astraggo molto *)
+  (* 0x0000-0x006F,0x1800-0x185F: sarebbe memory mapped IO *)
+  
+     triple … 〈〈x0,x0〉:〈x8,x0〉〉 〈〈x1,x0〉:〈x7,xF〉〉 MEM_READ_WRITE (* 4096B RAM *)
+   ; triple … 〈〈x1,x0〉:〈x8,x0〉〉 〈〈x1,x7〉:〈xF,xF〉〉 MEM_READ_ONLY  (* 1920B FLASH *)
+   ; triple … 〈〈x1,x8〉:〈x2,xC〉〉 〈〈xF,xF〉:〈xF,xF〉〉 MEM_READ_ONLY  (* 59348B FLASH *) ]
+  ].
+
+(* memoria dei RS08 *)
+ndefinition memory_type_of_FamilyRS08 ≝
+λm:RS08_mcu_model.match m with
+  [ MC9RS08KA1 ⇒
+   [
+     triple … 〈〈x0,x0〉:〈x0,x0〉〉 〈〈x0,x0〉:〈x0,xE〉〉 MEM_READ_WRITE (* 15B RAM *)
+  (* [000F] e' il registro X *)
+  (* 0x0010-0x001E sarebbe memory mapped IO, proviamo per completezza con RAM *)
+   ; triple … 〈〈x0,x0〉:〈x1,x0〉〉 〈〈x0,x0〉:〈x1,xE〉〉 MEM_READ_WRITE (* 15B MEMORY MAPPED IO *)
+  (* [001F] e' il registro PAGESEL *)
+   ; triple … 〈〈x0,x0〉:〈x2,x0〉〉 〈〈x0,x0〉:〈x4,xF〉〉 MEM_READ_WRITE (* 48B RAM *)
+  (* [00C0-00FF] mappato da PAGESEL su [00pp pppp ppxx xxxx] *)
+   ; triple … 〈〈x0,x0〉:〈xC,x0〉〉 〈〈x0,x0〉:〈xF,xF〉〉 MEM_READ_WRITE (* 64B RAM PAGING *)
+  (* 0x0200-0x023F sarebbe memory mapped IO, proviamo per completezza con RAM *)
+   ; triple … 〈〈x0,x2〉:〈x0,x0〉〉 〈〈x0,x2〉:〈x3,xF〉〉 MEM_READ_WRITE (* 64B MEMORY MAPPED IO *)
+   ; triple … 〈〈x3,xC〉:〈x0,x0〉〉 〈〈x3,xF〉:〈xF,xF〉〉 MEM_READ_ONLY  (* 1024B FLASH *) ]
+  | MC9RS08KA2 ⇒
+   [ 
+     triple … 〈〈x0,x0〉:〈x0,x0〉〉 〈〈x0,x0〉:〈x0,xE〉〉 MEM_READ_WRITE (* 15B RAM *)
+  (* [000F] e' il registro X *)
+  (* 0x0010-0x001E sarebbe memory mapped IO, proviamo per completezza con RAM *)
+   ; triple … 〈〈x0,x0〉:〈x1,x0〉〉 〈〈x0,x0〉:〈x1,xE〉〉 MEM_READ_WRITE (* 15B MEMORY MAPPED IO *)
+  (* [001F] e' il registro PAGESEL *)
+   ; triple … 〈〈x0,x0〉:〈x2,x0〉〉 〈〈x0,x0〉:〈x4,xF〉〉 MEM_READ_WRITE (* 48B RAM *)
+  (* [00C0-00FF] mappato da PAGESEL su [00pp pppp ppxx xxxx] *)
+   ; triple … 〈〈x0,x0〉:〈xC,x0〉〉 〈〈x0,x0〉:〈xF,xF〉〉 MEM_READ_WRITE (* 64B RAM PAGING *)
+  (* 0x0200-0x023F sarebbe memory mapped IO, proviamo per completezza con RAM *)
+   ; triple … 〈〈x0,x2〉:〈x0,x0〉〉 〈〈x0,x2〉:〈x3,xF〉〉 MEM_READ_WRITE (* 64B MEMORY MAPPED IO *)
+   ; triple … 〈〈x3,x8〉:〈x0,x0〉〉 〈〈x3,xF〉:〈xF,xF〉〉 MEM_READ_ONLY  (* 2048B FLASH *) ]
+  ].
+
+(* ∀modello.descrizione della memoria installata *)
+ndefinition memory_type_of_mcu_version ≝
+λmcu:any_mcu_model.match mcu with
+ [ FamilyHC05  m ⇒ memory_type_of_FamilyHC05 m
+ | FamilyHC08  m ⇒ memory_type_of_FamilyHC08 m
+ | FamilyHCS08 m ⇒ memory_type_of_FamilyHCS08 m
+ | FamilyRS08  m ⇒ memory_type_of_FamilyRS08 m
+ ].
+
+(* dato un modello costruisce un descrittore a partire dalla lista precedente *)
+nlet rec build_memory_type_of_mcu_version_aux t param (result:aux_chk_type t) on param ≝
+ match param with
+  [ nil ⇒ result
+  | cons hd tl ⇒ 
+   build_memory_type_of_mcu_version_aux t tl
+    (check_update_ranged t result (fst3T ??? hd) (snd3T ??? hd) (thd3T ??? hd)) ].
+
+ndefinition build_memory_type_of_mcu_version ≝
+λmcu:any_mcu_model.λt:memory_impl.
+ build_memory_type_of_mcu_version_aux t (memory_type_of_mcu_version mcu) (out_of_bound_memory t).
+
+(* sarebbe programma da caricare/zero_memory, ora test *)
+ndefinition memory_of_mcu_version ≝
+λmcu:any_mcu_model.λt:memory_impl.match mcu with
+ [ FamilyHC05 m ⇒ match m with
+  [ MC68HC05J5A ⇒ zero_memory t
+    (*..*)
+  ]
+ | FamilyHC08 m ⇒ match m with
+  [ MC68HC08AB16A ⇒ zero_memory t
+    (*..*)
+  ]
+ (* tralascio l'enumerazione dei casi, per ora e' tutto 0 *)
+ | FamilyHCS08 _ ⇒ zero_memory t
+ | FamilyRS08 _ ⇒ zero_memory t
+ ].
+
+(* 
+   parametrizzati i non deterministici rispetto a tutti i valori casuali
+   che verranno dati dall'esterno di tipo byte8 (ndby1-2) e bool (ndbo1-5).
+   l'ACCENSIONE e' totalmente equivalente ad un reset causato da calo di tensione
+   (reset V-low), la memoria ed il check puo' essere passata, per esempio da
+   - (memory_of_mcu_version MC68HC05J5A)
+   - (build_memory_type_of_mcu_version MC68HC05J5A)
+*)
+ndefinition start_of_mcu_version_HC05 ≝
+λmcu:HC05_mcu_model.λt:memory_impl.
+λmem:aux_mem_type t.λchk:aux_chk_type t.
+λndby1,ndby2:byte8.λirqfl,ndbo1,ndbo2,ndbo3,ndbo4,ndbo5:bool.
+ let build ≝ λspm,spf,pcm:word16.
+ let fetched_pc ≝ mk_word16 (mem_read_abs t mem (and_w16 〈〈xF,xF〉:〈xF,xE〉〉 pcm)) 
+                            (mem_read_abs t mem (and_w16 〈〈xF,xF〉:〈xF,xF〉〉 pcm)) in
+  mk_any_status HC05 t
+   (mk_alu_HC05
+    (* acc_low: ? *) ndby1 (* indx_low: ? *) ndby2 
+    (* sp: reset *) (or_w16 (and_w16 〈〈x0,x0〉:〈xF,xF〉〉 spm) spf) spm spf
+    (* pc: reset+fetch *) (and_w16 fetched_pc pcm) pcm
+    (* H: ? *) ndbo1 (* I: reset *) true (* N: ? *) ndbo2
+    (* Z: ? *) ndbo3 (* C: ? *) ndbo4 (* IRQ: ? *) irqfl)
+    (* mem *) mem
+    (* chk *) chk
+    (* clk: reset *) (None ?) in
+ match mcu with
+  [ MC68HC05J5A ⇒ build 〈〈x0,x0〉:〈x3,xF〉〉 〈〈x0,x0〉:〈xC,x0〉〉 〈〈x0,xF〉:〈xF,xF〉〉
+    (*..*)
+  ].
+
+ndefinition start_of_mcu_version_HC08 ≝
+λmcu:HC08_mcu_model.λt:memory_impl.
+λmem:aux_mem_type t.λchk:aux_chk_type t.
+λndby1,ndby2:byte8.λirqfl,ndbo1,ndbo2,ndbo3,ndbo4,ndbo5:bool.
+ let fetched_pc ≝ mk_word16 (mem_read_abs t mem 〈〈xF,xF〉:〈xF,xE〉〉) 
+                            (mem_read_abs t mem 〈〈xF,xF〉:〈xF,xF〉〉) in
+  mk_any_status HC08 t
+   (mk_alu_HC08
+    (* acc_low: ? *) ndby1 (* indw_low: ? *) ndby2 (* indx_high: reset *)  〈x0,x0〉
+    (* sp: reset *) 〈〈x0,x0〉:〈xF,xF〉〉 (* pc: reset+fetch *) fetched_pc
+    (* V: ? *) ndbo1 (* H: ? *) ndbo2 (* I: reset *) true
+    (* N: ? *) ndbo3 (* Z: ? *) ndbo4 (* C: ? *) ndbo5 (* IRQ: ? *) irqfl)
+    (* mem *) mem
+    (* chk *) chk
+    (* clk: reset *) (None ?).
+
+ndefinition start_of_mcu_version_HCS08 ≝
+λmcu:HCS08_mcu_model.λt:memory_impl.
+λmem:aux_mem_type t.λchk:aux_chk_type t.
+λndby1,ndby2:byte8.λirqfl,ndbo1,ndbo2,ndbo3,ndbo4,ndbo5:bool.
+ let fetched_pc ≝ mk_word16 (mem_read_abs t mem 〈〈xF,xF〉:〈xF,xE〉〉) 
+                            (mem_read_abs t mem 〈〈xF,xF〉:〈xF,xF〉〉) in
+  mk_any_status HCS08 t
+   (mk_alu_HC08
+    (* acc_low: ? *) ndby1 (* indw_low: ? *) ndby2 (* indx_high: reset *)  〈x0,x0〉
+    (* sp: reset *) 〈〈x0,x0〉:〈xF,xF〉〉 (* pc: reset+fetch *) fetched_pc
+    (* V: ? *) ndbo1 (* H: ? *) ndbo2 (* I: reset *) true
+    (* N: ? *) ndbo3 (* Z: ? *) ndbo4 (* C: ? *) ndbo5 (* IRQ: ? *) irqfl)
+    (* mem *) mem
+    (* chk *) chk
+    (* clk: reset *) (None ?).
+
+ndefinition start_of_mcu_version_RS08 ≝
+λmcu:RS08_mcu_model.λt:memory_impl.
+λmem:aux_mem_type t.λchk:aux_chk_type t.
+λndby1,ndby2:byte8.λirqfl,ndbo1,ndbo2,ndbo3,ndbo4,ndbo5:bool.
+ let build ≝ λpcm.
+   mk_any_status RS08 t
+    (mk_alu_RS08
+     (* acc_low: reset *)  〈x0,x0〉
+     (* pc: reset *) (and_w16 〈〈xF,xF〉:〈xF,xD〉〉 pcm) pcm
+     (* spc: reset *) (and_w16 〈〈xF,xF〉:〈xF,xD〉〉 pcm)
+     (* xm: reset *) 〈x0,x0〉 (* psm: *) 〈x8,x0〉
+     (* Z: reset *) false (* C: reset *) false)
+     (* mem *) mem
+     (* chk *) chk
+     (* clk: reset *) (None ?) in
+  (* tralascio l'enumerazione dei casi, tanto i valori sono uguali *)
+  build 〈〈x3,xF〉:〈xF,xF〉〉.
+
+(* 
+   cio' che non viene resettato mantiene il valore precedente: nella documentazione
+   viene riportato come "unaffected"/"indeterminate"/"unpredictable"
+   il soft RESET e' diverso da un calo di tensione e la ram non variera'
+*)
+ndefinition reset_of_mcu ≝
+λm:mcu_type.λt:memory_impl.
+let pc_reset_h ≝ 〈〈xF,xF〉:〈xF,xE〉〉 in
+let pc_reset_l ≝ 〈〈xF,xF〉:〈xF,xF〉〉 in
+let pc_RS08_reset ≝ 〈〈xF,xF〉:〈xF,xD〉〉 in
+let sp_reset ≝ 〈〈x0,x0〉:〈xF,xF〉〉 in
+ match m return λm:mcu_type.(any_status m t) → (any_status m t) with
+(* HC05: parzialmente non deterministico *)
+  [ HC05 ⇒ λs:any_status HC05 t.match s with
+   [ mk_any_status alu mem chk clk ⇒ match alu with
+    [ mk_alu_HC05 acclow indxlow _ spm spf _ pcm hfl _ nfl zfl cfl irqfl ⇒
+    let fetched_pc ≝ mk_word16 (mem_read_abs t mem (and_w16 pc_reset_h pcm))
+                               (mem_read_abs t mem (and_w16 pc_reset_l pcm)) in
+    mk_any_status HC05 t
+     (mk_alu_HC05
+      (* acc_low: inv. *) acclow (* indx_low: inv. *) indxlow
+      (* sp: reset *) (or_w16 (and_w16 sp_reset spm) spf) spm spf
+      (* pc: reset+fetch *) (and_w16 fetched_pc pcm) pcm
+      (* H: inv. *) hfl (* I: reset *) true (* N: inv. *) nfl
+      (* Z: inv. *) zfl (* C: inv. *) cfl (* IRQ: inv *) irqfl)
+      (* mem: inv. *) mem
+      (* chk: inv. *) chk
+      (* clk: reset *) (None ?) ]]
+(* HC08: parzialmente non deterministico *)
+  | HC08 ⇒ λs:any_status HC08 t.match s with
+   [ mk_any_status alu mem chk clk ⇒ match alu with
+    [ mk_alu_HC08 acclow indxlow _ _ _ vfl hfl _ nfl zfl cfl irqfl ⇒ 
+    let fetched_pc ≝ mk_word16 (mem_read_abs t mem pc_reset_h)
+                               (mem_read_abs t mem pc_reset_l) in
+    mk_any_status HC08 t
+     (mk_alu_HC08
+      (* acc_low: inv. *) acclow (* indx_low: inv. *) indxlow (* indx_high: reset *) 〈x0,x0〉
+      (* sp: reset *) sp_reset (* pc: reset+fetch *) fetched_pc
+      (* V: inv. *) vfl (* H: inv. *) hfl (* I: reset *) true
+      (* N: inv. *) nfl (* Z: inv. *) zfl (* C: inv. *) cfl (* IRQ: inv *) irqfl)
+      (* mem: inv. *) mem
+      (* chk: inv. *) chk
+      (* clk: reset *) (None ?) ]]
+(* HCS08: parzialmente non deterministico *)
+  | HCS08 ⇒ λs:any_status HCS08 t.match s with
+   [ mk_any_status alu mem chk clk ⇒ match alu with
+    [ mk_alu_HC08 acclow indxlow _ _ _ vfl hfl _ nfl zfl cfl irqfl ⇒ 
+    let fetched_pc ≝ mk_word16 (mem_read_abs t mem pc_reset_h)
+                               (mem_read_abs t mem pc_reset_l) in
+    mk_any_status HCS08 t
+     (mk_alu_HC08
+      (* acc_low: inv. *) acclow (* indx_low: inv. *) indxlow (* indx_high: reset *) 〈x0,x0〉
+      (* sp: reset *) sp_reset (* pc: reset+fetch *) fetched_pc
+      (* V: inv. *) vfl (* H: inv. *) hfl (* I: reset *) true
+      (* N: inv. *) nfl (* Z: inv. *) zfl (* C: inv. *) cfl (* IRQ: inv *) irqfl)
+      (* mem: inv. *) mem
+      (* chk: inv. *) chk
+      (* clk: reset *) (None ?) ]]
+(* RS08: deterministico *)
+  | RS08 ⇒ λs:any_status RS08 t.match s with
+   [ mk_any_status alu mem chk clk ⇒ match alu with
+    [ mk_alu_RS08 _ _ pcm _ _ _ _ _ ⇒
+    mk_any_status RS08 t
+     (mk_alu_RS08 
+      (* acc_low: reset *) 〈x0,x0〉
+      (* pc: reset *) (and_w16 pc_RS08_reset pcm) pcm
+      (* spc: reset *) (and_w16 pc_RS08_reset pcm)
+      (* xm: reset *) 〈x0,x0〉 (* psm: reset *) 〈x8,x0〉
+      (* Z: reset *) false (* C: reset *) false)
+      (* mem: inv. *) mem
+      (* chk: inv. *) chk
+      (* clk: reset *) (None ?) ]]
+  ].
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/multivm.ma b/helm/software/matita/contribs/ng_assembly/freescale/multivm.ma
new file mode 100755 (executable)
index 0000000..44dacea
--- /dev/null
@@ -0,0 +1,1307 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/load_write.ma".
+
+(* ************************************************ *)
+(* LOGICHE AUSILIARE CHE ACCOMUNANO PIU' OPERAZIONI *)
+(* ************************************************ *)
+
+(* NB: dentro il codice i commenti cercano di spiegare la logica
+       secondo quanto riportato dalle specifiche delle mcu *)
+
+(* NB: notare che tranne nei casi in cui PC viene modificato esplicitamente
+       il suo avanzamento viene delegato totalmente agli strati inferiori
+       I) avanzamento dovuto al decode degli op (fetch)
+       II) avanzamento dovuto al caricamento degli argomenti (multi_mode_load/write)
+       la modifica effettiva avviene poi centralizzata in tick *)
+
+(* A = [true] fAMC(A,M,C), [false] A *)
+(* cioe' in caso di false l'operazione viene eseguita ma modifica solo i flag *)
+(* fAMC e' la logica da applicare: somma con/senza carry *)
+ndefinition execute_ADC_ADD_aux ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.λsetflag:bool.
+λfAMC:byte8 → byte8 → bool → ProdT byte8 bool.
+ opt_map … (multi_mode_load true m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op new_pc ⇒
+    let A_op ≝ get_acc_8_low_reg m t s_tmp1 in
+    match fAMC A_op M_op (get_c_flag m t s_tmp1) with
+     [ pair R_op carry ⇒
+      let A7 ≝ MSB_b8 A_op in let M7 ≝ MSB_b8 M_op in let R7 ≝ MSB_b8 R_op in
+      let A3 ≝ MSB_ex (b8l A_op) in let M3 ≝ MSB_ex (b8l M_op) in let R3 ≝ MSB_ex (b8l R_op) in
+      (* A = [true] fAMC(A,M,C), [false] A *)
+      let s_tmp2 ≝ match setflag with [ true ⇒ set_acc_8_low_reg m t s_tmp1 R_op | false ⇒ s_tmp1 ] in
+      (* Z = nR7&nR6&nR5&nR4&nR3&nR2&nR1&nR0 *)
+      let s_tmp3 ≝ set_z_flag m t s_tmp2 (eq_b8 R_op 〈x0,x0〉) in
+      (* C = A7&M7 | M7&nR7 | nR7&A7 *)
+      let s_tmp4 ≝ set_c_flag m t s_tmp3 ((A7⊗M7) ⊕ (M7⊗(⊖R7)) ⊕ ((⊖R7)⊗A7)) in
+      (* N = R7 *)
+      let s_tmp5 ≝ setweak_n_flag m t s_tmp4 R7 in
+      (* H = A3&M3 | M3&nR3 | nR3&A3 *)
+      let s_tmp6 ≝ setweak_h_flag m t s_tmp5 ((A3⊗M3) ⊕ (M3⊗(⊖R3)) ⊕ ((⊖R3)⊗A3)) in
+      (* V = A7&M7&nR7 | nA7&nM7&R7 *)
+      let s_tmp7 ≝ setweak_v_flag m t s_tmp6 ((A7⊗M7⊗(⊖R7)) ⊕ ((⊖A7)⊗(⊖M7)⊗R7)) in
+      (* newpc = nextpc *)
+      Some ? (pair … s_tmp7 new_pc) ]]).
+
+(* A = [true] fAM(A,M), [false] A *)
+(* cioe' in caso di false l'operazione viene eseguita ma modifica solo i flag *)
+(* fAM e' la logica da applicare: and/xor/or *)
+ndefinition execute_AND_BIT_EOR_ORA_aux ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.λsetflag:bool.
+λfAM:byte8 → byte8 → byte8.
+ opt_map … (multi_mode_load true m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op new_pc ⇒
+    let R_op ≝ fAM (get_acc_8_low_reg m t s_tmp1) M_op in
+    (* A = [true] fAM(A,M), [false] A *) 
+    let s_tmp2 ≝ match setflag with [ true ⇒ set_acc_8_low_reg m t s_tmp1 R_op | false ⇒ s_tmp1 ] in
+    (* Z = nR7&nR6&nR5&nR4&nR3&nR2&nR1&nR0 *)
+    let s_tmp3 ≝ set_z_flag m t s_tmp2 (eq_b8 R_op 〈x0,x0〉) in
+    (* N = R7 *) 
+    let s_tmp4 ≝ setweak_n_flag m t s_tmp3 (MSB_b8 R_op) in
+    (* V = 0 *) 
+    let s_tmp5 ≝ setweak_v_flag m t s_tmp4 false in
+    (* newpc = nextpc *)
+    Some ? (pair … s_tmp5 new_pc) ]).
+
+(* M = fMC(M,C) *)
+(* fMC e' la logica da applicare: rc_/ro_/sh_ *)
+ndefinition execute_ASL_ASR_LSR_ROL_ROR_aux ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+λfMC:byte8 → bool → ProdT byte8 bool.
+ opt_map … (multi_mode_load true m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op _ ⇒
+    match fMC M_op (get_c_flag m t s_tmp1) with [ pair R_op carry ⇒
+    (* M = fMC(M,C) *)
+    opt_map … (multi_mode_write true m t s_tmp1 cur_pc i R_op)
+     (λS_PC.match S_PC with
+      [ pair s_tmp2 new_pc ⇒
+      (* C = carry *)
+      let s_tmp3 ≝ set_c_flag m t s_tmp2 carry in
+      (* Z = nR7&nR6&nR5&nR4&nR3&nR2&nR1&nR0 *)
+      let s_tmp4 ≝ set_z_flag m t s_tmp3 (eq_b8 R_op 〈x0,x0〉) in
+      (* N = R7 *)
+      let s_tmp5 ≝ setweak_n_flag m t s_tmp4 (MSB_b8 R_op) in
+      (* V = R7 ⊙ carry *)
+      let s_tmp6 ≝ setweak_v_flag m t s_tmp5 ((MSB_b8 R_op) ⊙ carry) in
+      (* newpc = nextpc *)
+      Some ? (pair … s_tmp6 new_pc) ])]]).
+
+(* estensione del segno byte → word *)
+ndefinition byte_extension ≝
+λb:byte8.〈match MSB_b8 b with [ true ⇒ 〈xF,xF〉 | false ⇒ 〈x0,x0〉 ]:b〉.
+
+(* branch con byte+estensione segno *)
+ndefinition branched_pc ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λcur_pc:word16.λb:byte8.
+ get_pc_reg m t (set_pc_reg m t s (plus_w16_d_d cur_pc (byte_extension b))).
+
+(* if COND=1 branch *)
+(* tutti i branch calcoleranno la condizione e la passeranno qui *)
+ndefinition execute_any_BRANCH ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.λfCOND:bool.
+ opt_map … (multi_mode_load true m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op new_pc ⇒
+    (* if true, branch *) 
+    match fCOND with
+     (* newpc = nextpc + rel *)
+     [ true ⇒ Some ? (pair … s_tmp1 (branched_pc m t s_tmp1 new_pc M_op))
+     (* newpc = nextpc *)
+     | false ⇒ Some ? (pair … s_tmp1 new_pc) ]]).
+
+(* Mn = filtered optval *) 
+(* il chiamante passa 0x00 per azzerare, 0xFF per impostare il bit di M *)
+ndefinition execute_BCLRn_BSETn_aux ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.λoptval:byte8.
+ (* Mn = filtered optval *)
+ opt_map … (multi_mode_write true m t s cur_pc i optval)
+  (λS_PC.match S_PC with
+   (* newpc = nextpc *)
+   [ pair s_tmp1 new_pc ⇒ Some ? (pair … s_tmp1 new_pc) ]).
+
+(* if COND(Mn) branch *)
+(* il chiamante passa la logica da testare (0x00,¬0x00) e poi si salta *)
+ndefinition execute_BRCLRn_BRSETn_aux ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.λfCOND:byte8 → bool.
+ opt_map … (multi_mode_load false m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op new_pc ⇒ match M_op with
+    [ mk_word16 MH_op ML_op ⇒
+     (* if COND(Mn) branch *)
+     match fCOND MH_op with
+      (* newpc = nextpc + rel *)
+      [ true ⇒ Some ? (pair … s_tmp1 (branched_pc m t s_tmp1 new_pc ML_op))
+      (* newpc = nextpc *)
+      | false ⇒ Some ? (pair … s_tmp1 new_pc) ]]]).
+
+(* M = fM(M) *)
+(* fM e' la logica da applicare: not/neg/++/-- *)
+ndefinition execute_COM_DEC_INC_NEG_aux ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+λfM:byte8 → byte8.λfV:bool → bool → bool.λfC:bool → byte8 → bool.
+ opt_map … (multi_mode_load true m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op _ ⇒
+    let R_op ≝ fM M_op in
+    (* M = fM(M) *)
+    opt_map … (multi_mode_write true m t s_tmp1 cur_pc i R_op)
+     (λS_PC.match S_PC with
+      [ pair s_tmp2 new_pc ⇒
+      (* C = fCR (C,R) *)
+      let s_tmp3 ≝ set_c_flag m t s_tmp2 (fC (get_c_flag m t s_tmp2) R_op) in
+      (* Z = nR7&nR6&nR5&nR4&nR3&nR2&nR1&nR0 *)
+      let s_tmp4 ≝ set_z_flag m t s_tmp3 (eq_b8 R_op 〈x0,x0〉) in
+      (* N = R7 *)
+      let s_tmp5 ≝ setweak_n_flag m t s_tmp4 (MSB_b8 R_op) in
+      (* V = fV (M7,R7) *)
+      let s_tmp6 ≝ setweak_v_flag m t s_tmp5 (fV (MSB_b8 M_op) (MSB_b8 R_op)) in
+      (* newpc = nextpc *)
+      Some ? (pair … s_tmp6 new_pc) ])]).
+
+(* A = [true] fAMC(A,M,C), [false] A *)
+(* cioe' in caso di false l'operazione viene eseguita ma modifica solo i flag *)
+(* fAMC e' la logica da applicare: sottrazione con/senza carry *)
+ndefinition execute_SBC_SUB_aux ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.λsetflag:bool.
+λfAMC:byte8 → byte8 → bool → ProdT byte8 bool.
+ opt_map … (multi_mode_load true m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op new_pc ⇒
+    let A_op ≝ get_acc_8_low_reg m t s_tmp1 in
+    match fAMC A_op M_op (get_c_flag m t s_tmp1) with
+     [ pair R_op carry ⇒
+      let A7 ≝ MSB_b8 A_op in let M7 ≝ MSB_b8 M_op in let R7 ≝ MSB_b8 R_op in
+      (* A = [true] fAMC(A,M,C), [false] A *)
+      let s_tmp2 ≝ match setflag with [ true ⇒ set_acc_8_low_reg m t s_tmp1 R_op | false ⇒ s_tmp1 ] in
+      (* Z = nR7&nR6&nR5&nR4&nR3&nR2&nR1&nR0 *)
+      let s_tmp3 ≝ set_z_flag m t s_tmp2 (eq_b8 R_op 〈x0,x0〉) in
+      (* C = nA7&M7 | M7&R7 | R7&nA7 *)
+      let s_tmp4 ≝ set_c_flag m t s_tmp3 (((⊖A7)⊗M7) ⊕ (M7⊗R7) ⊕ (R7⊗(⊖A7))) in
+      (* N = R7 *) 
+      let s_tmp5 ≝ setweak_n_flag m t s_tmp4 R7 in
+      (* V = A7&nM7&nR7 | nA7&M7&R7 *)
+      let s_tmp6 ≝ setweak_v_flag m t s_tmp5 ((A7⊗(⊖M7)⊗(⊖R7)) ⊕ ((⊖A7)⊗M7⊗R7)) in
+      (* newpc = nextpc *)
+      Some ? (pair … s_tmp6 new_pc) ]]).
+
+(* il classico push *)
+ndefinition aux_push ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λval:byte8.
+ opt_map … (get_sp_reg m t s)
+  (* [SP] = val *)
+  (λSP_op.opt_map … (memory_filter_write m t s SP_op val)
+   (* SP -- *)
+   (λs_tmp1.opt_map … (set_sp_reg m t s_tmp1 (pred_w16 SP_op))
+    (λs_tmp2.Some ? s_tmp2))).
+
+(* il classico pop *)
+(* NB: l'incremento di SP deve essere filtrato dalla ALU, quindi get(set(SP)) *)
+ndefinition aux_pop ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ opt_map … (get_sp_reg m t s)
+  (* SP ++ *)
+  (λSP_op.opt_map … (set_sp_reg m t s (succ_w16 SP_op))
+   (λs_tmp1.opt_map … (get_sp_reg m t s_tmp1)
+    (* val = [SP] *)
+    (λSP_op'.opt_map … (memory_filter_read m t s_tmp1 SP_op')
+     (λval.Some ? (pair … s_tmp1 val))))).
+
+(* CCR corrisponde a V11HINZC e cmq 1 se un flag non esiste *)
+(* i flag mantengono posizione costante nelle varie ALU, e se non sono
+   implementati corrispondono a 1 *)
+ndefinition aux_get_CCR ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+let V_comp ≝ match get_v_flag m t s with
+ [ None ⇒ 〈x8,x0〉  | Some V_val ⇒ match V_val with [ true ⇒ 〈x8,x0〉  | false ⇒ 〈x0,x0〉 ]] in
+let H_comp ≝ match get_h_flag m t s with
+ [ None ⇒ 〈x1,x0〉  | Some H_val ⇒ match H_val with [ true ⇒ 〈x1,x0〉  | false ⇒ 〈x0,x0〉 ]] in
+let I_comp ≝ match get_i_flag m t s with
+ [ None ⇒ 〈x0,x8〉  | Some I_val ⇒ match I_val with [ true ⇒ 〈x0,x8〉  | false ⇒ 〈x0,x0〉 ]] in
+let N_comp ≝ match get_n_flag m t s with
+ [ None ⇒ 〈x0,x4〉  | Some N_val ⇒ match N_val with [ true ⇒ 〈x0,x4〉  | false ⇒ 〈x0,x0〉 ]] in
+let Z_comp ≝ match get_z_flag m t s with
+ [ true ⇒ 〈x0,x2〉  | false ⇒ 〈x0,x0〉 ] in
+let C_comp ≝ match get_c_flag m t s with
+ [ true ⇒ 〈x0,x1〉  | false ⇒ 〈x0,x0〉 ] in
+or_b8 〈x6,x0〉 (or_b8 V_comp (or_b8 H_comp (or_b8 I_comp (or_b8 N_comp (or_b8 Z_comp C_comp))))).
+
+(* CCR corrisponde a V11HINZC *)
+(* i flag mantengono posizione costante nelle varie ALU, e se non sono
+   implementati si puo' usare tranquillamente setweak *)
+ndefinition aux_set_CCR ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λCCR:byte8.
+ let s_tmp1 ≝ set_c_flag m t s          (eq_b8 〈x0,x1〉 (and_b8 〈x0,x1〉 CCR)) in
+ let s_tmp2 ≝ set_z_flag m t s_tmp1     (eq_b8 〈x0,x2〉 (and_b8 〈x0,x2〉 CCR)) in
+ let s_tmp3 ≝ setweak_n_flag m t s_tmp2 (eq_b8 〈x0,x4〉 (and_b8 〈x0,x4〉 CCR)) in
+ let s_tmp4 ≝ setweak_i_flag m t s_tmp3 (eq_b8 〈x0,x8〉 (and_b8 〈x0,x8〉 CCR)) in
+ let s_tmp5 ≝ setweak_h_flag m t s_tmp4 (eq_b8 〈x1,x0〉 (and_b8 〈x1,x0〉 CCR)) in
+ let s_tmp6 ≝ setweak_v_flag m t s_tmp5 (eq_b8 〈x8,x0〉 (and_b8 〈x8,x0〉 CCR)) in
+ s_tmp6.
+
+(* **************** *)
+(* LOGICA DELLA ALU *)
+(* **************** *)
+
+(* A = A + M + C *)
+ndefinition execute_ADC ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_ADC_ADD_aux m t s i cur_pc true (λA_op.λM_op.λC_op.plus_b8_dc_dc A_op M_op C_op).
+
+(* A = A + M *)
+ndefinition execute_ADD ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_ADC_ADD_aux m t s i cur_pc true (λA_op.λM_op.λC_op.plus_b8_dc_dc A_op M_op false).
+
+(* SP += extended M *)
+ndefinition execute_AIS ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (multi_mode_load true m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op new_pc ⇒
+   opt_map … (get_sp_reg m t s_tmp1)
+    (* SP += extended M *)
+    (λSP_op.opt_map … (set_sp_reg m t s_tmp1 (plus_w16_d_d SP_op (byte_extension M_op)))
+     (λs_tmp2.Some ? (pair … s_tmp2 new_pc))) ]).
+
+(* H:X += extended M *)
+ndefinition execute_AIX ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (multi_mode_load true m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op new_pc ⇒
+   opt_map … (get_indX_16_reg m t s_tmp1)
+    (* H:X += extended M *)
+    (λHX_op.opt_map … (set_indX_16_reg m t s_tmp1 (plus_w16_d_d HX_op (byte_extension M_op)))
+     (λs_tmp2.Some ? (pair … s_tmp2 new_pc))) ]).
+
+(* A = A & M *)
+ndefinition execute_AND ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_AND_BIT_EOR_ORA_aux m t s i cur_pc true and_b8.
+
+(* M = C' <- rcl M <- 0 *)
+ndefinition execute_ASL ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_ASL_ASR_LSR_ROL_ROR_aux m t s i cur_pc (λM_op.λC_op.rcl_b8 M_op false).
+
+(* M = M7 -> rcr M -> C' *)
+ndefinition execute_ASR ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_ASL_ASR_LSR_ROL_ROR_aux m t s i cur_pc (λM_op.λC_op.rcr_b8 M_op (MSB_b8 M_op)).
+
+(* if C=0, branch *) 
+ndefinition execute_BCC ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_any_BRANCH m t s i cur_pc (⊖(get_c_flag m t s)).
+
+(* Mn = 0 *)
+ndefinition execute_BCLRn ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_BCLRn_BSETn_aux m t s i cur_pc 〈x0,x0〉.
+
+(* if C=1, branch *) 
+ndefinition execute_BCS ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_any_BRANCH m t s i cur_pc (get_c_flag m t s).
+
+(* if Z=1, branch *)
+ndefinition execute_BEQ ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_any_BRANCH m t s i cur_pc (get_z_flag m t s).
+
+(* if N⊙V=0, branch *)
+ndefinition execute_BGE ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_n_flag m t s)
+  (λN_op.opt_map … (get_v_flag m t s)
+   (λV_op.execute_any_BRANCH m t s i cur_pc (⊖(N_op ⊙ V_op)))).
+
+(* BGND mode *)
+ndefinition execute_BGND ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ Some ? (pair … s cur_pc).
+
+(* if Z|N⊙V=0, branch *)
+ndefinition execute_BGT ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_n_flag m t s)
+  (λN_op.opt_map … (get_v_flag m t s)
+   (λV_op.execute_any_BRANCH m t s i cur_pc (⊖((get_z_flag m t s) ⊕ (N_op ⊙ V_op))))).
+
+(* if H=0, branch *)
+ndefinition execute_BHCC ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_h_flag m t s)
+  (λH_op.execute_any_BRANCH m t s i cur_pc (⊖H_op)).
+
+(* if H=1, branch *)
+ndefinition execute_BHCS ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_h_flag m t s)
+  (λH_op.execute_any_BRANCH m t s i cur_pc H_op).
+
+(* if C|Z=0, branch *)
+ndefinition execute_BHI ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_any_BRANCH m t s i cur_pc (⊖((get_c_flag m t s) ⊕ (get_z_flag m t s))).
+
+(* if nIRQ=1, branch NB: irqflag e' un negato del pin *)
+ndefinition execute_BIH ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_irq_flag m t s)
+  (λIRQ_op.execute_any_BRANCH m t s i cur_pc (⊖IRQ_op)).
+
+(* if nIRQ=0, branch NB: irqflag e' un negato del pin *)
+ndefinition execute_BIL ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_irq_flag m t s)
+  (λIRQ_op.execute_any_BRANCH m t s i cur_pc IRQ_op).
+
+(* flags = A & M *)
+ndefinition execute_BIT ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_AND_BIT_EOR_ORA_aux m t s i cur_pc false and_b8.
+
+(* if Z|N⊙V=1, branch *)
+ndefinition execute_BLE ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_n_flag m t s)
+  (λN_op.opt_map … (get_v_flag m t s)
+   (λV_op.execute_any_BRANCH m t s i cur_pc ((get_z_flag m t s) ⊕ (N_op ⊙ V_op)))).
+
+(* if C|Z=1, branch *)
+ndefinition execute_BLS ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_any_BRANCH m t s i cur_pc ((get_c_flag m t s) ⊕ (get_z_flag m t s)).
+
+(* if N⊙V=1, branch *)
+ndefinition execute_BLT ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_n_flag m t s)
+  (λN_op.opt_map … (get_v_flag m t s)
+   (λV_op.execute_any_BRANCH m t s i cur_pc (N_op ⊙ V_op))).
+
+(* if I=0, branch *)
+ndefinition execute_BMC ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_i_flag m t s)
+  (λI_op.execute_any_BRANCH m t s i cur_pc (⊖I_op)).
+
+(* if N=1, branch *)
+ndefinition execute_BMI ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_n_flag m t s)
+  (λN_op.execute_any_BRANCH m t s i cur_pc N_op).
+
+(* if I=1, branch *)
+ndefinition execute_BMS ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_i_flag m t s)
+  (λI_op.execute_any_BRANCH m t s i cur_pc I_op).
+
+(* if Z=0, branch *)
+ndefinition execute_BNE ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_any_BRANCH m t s i cur_pc (⊖(get_z_flag m t s)).
+
+(* if N=0, branch *)
+ndefinition execute_BPL ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_n_flag m t s)
+  (λN_op.execute_any_BRANCH m t s i cur_pc (⊖N_op)).
+
+(* branch always *)
+ndefinition execute_BRA ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_any_BRANCH m t s i cur_pc true.
+
+(* if Mn=0 branch *)
+ndefinition execute_BRCLRn ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_BRCLRn_BRSETn_aux m t s i cur_pc
+  (λMn_op.eq_b8 Mn_op 〈x0,x0〉).
+
+(* branch never... come se fosse un nop da 2 byte *)
+ndefinition execute_BRN ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_any_BRANCH m t s i cur_pc false.
+
+(* if Mn=1 branch *)
+ndefinition execute_BRSETn ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_BRCLRn_BRSETn_aux m t s i cur_pc
+  (λMn_op.⊖(eq_b8 Mn_op 〈x0,x0〉)).
+
+(* Mn = 1 *)
+ndefinition execute_BSETn ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_BCLRn_BSETn_aux m t s i cur_pc 〈xF,xF〉.
+
+(* branch to subroutine *)
+(* HC05/HC08/HCS08 si appoggiano allo stack, RS08 a SPC *)
+ndefinition execute_BSR ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t .λi:instr_mode.λcur_pc:word16.
+ opt_map … (multi_mode_load true m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op new_pc ⇒ let aux ≝
+    (* push (new_pc low) *)
+    opt_map … (aux_push m t s_tmp1 (w16l new_pc))
+     (* push (new_pc high) *)
+     (λs_tmp2.opt_map … (aux_push m t s_tmp2 (w16h new_pc))
+      (* new_pc = new_pc + rel *)
+      (λs_tmp3.Some ? (pair … s_tmp3 (branched_pc m t s_tmp3 new_pc M_op))))
+     in match m with
+    [ HC05 ⇒ aux | HC08 ⇒ aux | HCS08 ⇒ aux
+    | RS08 ⇒
+     (* SPC = new_pc *) 
+     opt_map … (set_spc_reg m t s_tmp1 new_pc)
+      (* new_pc = new_pc + rel *)
+      (λs_tmp2.Some ? (pair … s_tmp2 (branched_pc m t s_tmp2 new_pc M_op)))
+    ]]).
+
+(* if A=M, branch *)
+ndefinition execute_CBEQA ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (multi_mode_load false m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op new_pc ⇒
+    match M_op with
+     [ mk_word16 MH_op ML_op ⇒
+      (* if A=M, branch *)
+      match eq_b8 (get_acc_8_low_reg m t s_tmp1) MH_op with
+       (* new_pc = new_pc + rel *)
+       [ true ⇒ Some ? (pair … s_tmp1 (branched_pc m t s_tmp1 new_pc ML_op))
+       (* new_pc = new_pc *)
+       | false ⇒ Some ? (pair … s_tmp1 new_pc)
+       ]]]).
+
+(* if X=M, branch *)
+ndefinition execute_CBEQX ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (multi_mode_load false m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op new_pc ⇒
+    match M_op with
+     [ mk_word16 MH_op ML_op ⇒
+      opt_map … (get_indX_8_low_reg m t s_tmp1)
+       (* if X=M, branch *)
+       (λX_op.match eq_b8 X_op MH_op with
+        (* new_pc = new_pc + rel *)
+        [ true ⇒ Some ? (pair … s_tmp1 (branched_pc m t s_tmp1 new_pc ML_op))
+        (* new_pc = new_pc *)
+        | false ⇒ Some ? (pair … s_tmp1 new_pc)
+        ])]]).
+
+(* C = 0 *)
+ndefinition execute_CLC ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ Some ? (pair … (set_c_flag m t s false) cur_pc).
+
+(* I = 0 *)
+ndefinition execute_CLI ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (set_i_flag m t s false)
+  (λs_tmp.Some ? (pair … s_tmp cur_pc)).
+
+(* M = 0 *)
+ndefinition execute_CLR ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ (* M = 0 *)
+ opt_map … (multi_mode_write true m t s cur_pc i 〈x0,x0〉)
+  (λS_PC.match S_PC with
+   [ pair s_tmp1 new_pc ⇒
+   (* Z = 1 *)
+   let s_tmp2 ≝ set_z_flag m t s_tmp1 true in
+   (* N = 0 *)
+   let s_tmp3 ≝ setweak_n_flag m t s_tmp2 false in
+   (* V = 0 *)
+   let s_tmp4 ≝ setweak_v_flag m t s_tmp3 false in
+   (* newpc = nextpc *)
+   Some ? (pair … s_tmp4 new_pc) ]).
+
+(* flags = A - M *)
+ndefinition execute_CMP ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_SBC_SUB_aux m t s i cur_pc false (λA_op.λM_op.λC_op.plus_b8_dc_dc A_op (compl_b8 M_op) false). 
+
+(* M = not M *)
+ndefinition execute_COM ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_COM_DEC_INC_NEG_aux m t s i cur_pc not_b8
+ (* fV = 0 *)
+ (λM7.λR7.false)
+ (* fC = 1 *)
+ (λC_op.λR_op.true).
+
+(* flags = H:X - M *)
+ndefinition execute_CPHX ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (multi_mode_load false m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op new_pc ⇒
+    opt_map … (get_indX_16_reg m t s_tmp1)
+     (λX_op. 
+      match plus_w16_dc_dc X_op (compl_w16 M_op) false with
+       [ pair R_op carry ⇒
+        let X15 ≝ MSB_w16 X_op in let M15 ≝ MSB_w16 M_op in let R15 ≝ MSB_w16 R_op in
+        (* Z = nR15&nR14&nR13&nR12&nR11&nR10&nR9&nR8&nR7&nR6&nR5&nR4&nR3&nR2&nR1&nR0 *)
+        let s_tmp2 ≝ set_z_flag m t s_tmp1 (eq_w16 R_op 〈〈x0,x0〉:〈x0,x0〉〉) in
+        (* C = nX15&M15 | M15&R15 | R15&nX15 *)
+        let s_tmp3 ≝ set_c_flag m t s_tmp2 (((⊖X15)⊗M15) ⊕ (M15⊗R15) ⊕ (R15⊗(⊖X15))) in
+        (* N = R15 *) 
+        let s_tmp4 ≝ setweak_n_flag m t s_tmp3 R15 in
+        (* V = X15&nM15&nR15 | nX15&M15&R15 *)
+        let s_tmp5 ≝ setweak_v_flag m t s_tmp4 ((X15⊗(⊖M15)⊗(⊖R15)) ⊕ ((⊖X15)⊗M15⊗R15)) in
+        (* newpc = nextpc *)
+        Some ? (pair … s_tmp5 new_pc) ] ) ]).
+
+(* flags = X - M *)
+ndefinition execute_CPX ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (multi_mode_load true m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op new_pc ⇒
+    opt_map … (get_indX_8_low_reg m t s_tmp1)
+     (λX_op. 
+      match plus_b8_dc_dc X_op (compl_b8 M_op) false with
+       [ pair R_op carry ⇒
+        let X7 ≝ MSB_b8 X_op in let M7 ≝ MSB_b8 M_op in let R7 ≝ MSB_b8 R_op in
+        (* Z = nR7&nR6&nR5&nR4&nR3&nR2&nR1&nR0 *)
+        let s_tmp2 ≝ set_z_flag m t s_tmp1 (eq_b8 R_op 〈x0,x0〉) in
+        (* C = nX7&M7 | M7&R7 | R7&nX7 *)
+        let s_tmp3 ≝ set_c_flag m t s_tmp2 (((⊖X7)⊗M7) ⊕ (M7⊗R7) ⊕ (R7⊗(⊖X7))) in
+        (* N = R7 *) 
+        let s_tmp4 ≝ setweak_n_flag m t s_tmp3 R7 in
+        (* V = X7&nM7&nR7 | nX7&M7&R7 *)
+        let s_tmp5 ≝ setweak_v_flag m t s_tmp4 ((X7⊗(⊖M7)⊗(⊖R7)) ⊕ ((⊖X7)⊗M7⊗R7)) in
+        (* newpc = nextpc *)
+        Some ? (pair … s_tmp5 new_pc) ] ) ]).
+
+(* decimal adjiust A *)
+(* per i dettagli vedere daa_b8 (modulo byte8) *)
+ndefinition execute_DAA ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_h_flag m t s)
+  (λH.
+   let M_op ≝ get_acc_8_low_reg m t s in
+   match daa_b8 H (get_c_flag m t s) M_op with
+    [ pair R_op carry ⇒
+     (* A = R *)
+     let s_tmp1 ≝ set_acc_8_low_reg m t s R_op in
+     (* Z = nR7&nR6&nR5&nR4&nR3&nR2&nR1&nR0 *)
+     let s_tmp2 ≝ set_z_flag m t s_tmp1 (eq_b8 R_op 〈x0,x0〉) in
+     (* C = carry *)
+     let s_tmp3 ≝ set_c_flag m t s_tmp2 carry in
+     (* N = R7 *) 
+     let s_tmp4 ≝ setweak_n_flag m t s_tmp3 (MSB_b8 R_op) in
+     (* V = M7 ⊙ R7 *)
+     let s_tmp5 ≝ setweak_v_flag m t s_tmp4 ((MSB_b8 M_op) ⊙ (MSB_b8 R_op)) in
+     (* newpc = curpc *)
+     Some ? (pair … s_tmp5 cur_pc) ]).
+
+(* if (--M)≠0, branch *)
+ndefinition execute_DBNZ ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (multi_mode_load false m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op new_pc ⇒
+    match M_op with
+     [ mk_word16 MH_op ML_op ⇒
+     (* --M *)
+     let MH_op' ≝ pred_b8 MH_op in
+     opt_map … (multi_mode_write true m t s_tmp1 cur_pc i MH_op')
+      (λS_PC.match S_PC with
+       [ pair s_tmp2 _ ⇒
+        (* if (--M)≠0, branch *)
+        match eq_b8 MH_op' 〈x0,x0〉 with
+         (* new_pc = new_pc *)
+         [ true ⇒ Some ? (pair … s_tmp2 new_pc)
+         (* new_pc = new_pc + rel *)
+         | false ⇒ Some ? (pair … s_tmp2 (branched_pc m t s_tmp2 new_pc ML_op)) ]])]]).
+
+(* M = M - 1 *)
+ndefinition execute_DEC ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_COM_DEC_INC_NEG_aux m t s i cur_pc pred_b8
+ (* fV = M7&nR7 *)
+ (λM7.λR7.M7⊗(⊖R7))
+ (* fC = C *)
+ (λC_op.λR_op.C_op).
+
+(* A = H:A/X, H = H:AmodX se non c'e' overflow, altrimenti invariati *)
+(* per i dettagli vedere div_b8 (modulo word16) *)
+ndefinition execute_DIV ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_indX_8_high_reg m t s)
+  (λH_op.opt_map … (get_indX_8_low_reg m t s)
+   (λX_op.match div_b8 〈H_op:(get_acc_8_low_reg m t s)〉 X_op with
+    [ triple quoz rest overflow ⇒
+     (* C = overflow *)
+     let s_tmp1 ≝ set_c_flag m t s overflow in
+     (* A = A o H:A/X *)
+     let s_tmp2 ≝ match overflow with
+      [ true ⇒ s_tmp1
+      | false ⇒ set_acc_8_low_reg m t s_tmp1 quoz ] in
+     (* Z = nA7&nA6&nA5&nA4&nA3&nA2&nA1&nA0 *)
+     (* NB: che A sia cambiato o no, lo testa *)
+     let s_tmp3 ≝ set_z_flag m t s_tmp2 (eq_b8 (get_acc_8_low_reg m t s_tmp2) 〈x0,x0〉) in
+     (* H = H o H:AmodX *)
+     opt_map … (match overflow with
+                 [ true ⇒ Some ? s_tmp3
+                 | false ⇒ set_indX_8_high_reg m t s_tmp3 rest])
+      (λs_tmp4.Some ? (pair … s_tmp4 cur_pc)) ])).
+
+(* A = A ⊙ M *)
+ndefinition execute_EOR ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_AND_BIT_EOR_ORA_aux m t s i cur_pc true xor_b8.
+
+(* M = M + 1 *)
+ndefinition execute_INC ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_COM_DEC_INC_NEG_aux m t s i cur_pc succ_b8
+ (* fV = nM7&R7 *)
+ (λM7.λR7.(⊖M7)⊗R7)
+ (* fC = C *)
+ (λC_op.λR_op.C_op).
+
+(* jmp, il nuovo indirizzo e' una WORD *)
+ndefinition execute_JMP ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (multi_mode_load false m t s cur_pc i)
+  (λS_M_PC.
+   (* newpc = M_op *)
+   Some ? (pair … (fst3T ??? S_M_PC) (snd3T ??? S_M_PC))).
+
+(* jump to subroutine *)
+(* HC05/HC08/HCS08 si appoggiano allo stack, RS08 a SPC *)
+ndefinition execute_JSR ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (multi_mode_load false m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op new_pc ⇒ let aux ≝
+    (* push (new_pc low) *)
+    opt_map … (aux_push m t s_tmp1 (w16l new_pc))
+     (* push (new_pc high) *)
+     (λs_tmp2.opt_map … (aux_push m t s_tmp2 (w16h new_pc))
+      (* newpc = M_op *)
+      (λs_tmp3.Some ? (pair … s_tmp3 M_op)))
+     in match m with
+    [ HC05 ⇒ aux | HC08 ⇒ aux | HCS08 ⇒ aux
+    | RS08 ⇒
+     (* SPC = new_pc *) 
+     opt_map … (set_spc_reg m t s_tmp1 new_pc)
+      (* newpc = M_op *)
+      (λs_tmp2.Some ? (pair … s_tmp2 M_op))
+    ]]).
+
+(* A = M *)
+ndefinition execute_LDA ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (multi_mode_load true m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op new_pc ⇒
+    (* A = M *) 
+    let s_tmp2 ≝ set_acc_8_low_reg m t s_tmp1 M_op in
+    (* Z = nR7&nR6&nR5&nR4&nR3&nR2&nR1&nR0 *)
+    let s_tmp3 ≝ set_z_flag m t s_tmp2 (eq_b8 M_op 〈x0,x0〉) in
+    (* N = R7 *) 
+    let s_tmp4 ≝ setweak_n_flag m t s_tmp3 (MSB_b8 M_op) in
+    (* V = 0 *) 
+    let s_tmp5 ≝ setweak_v_flag m t s_tmp4 false in
+    (* newpc = nextpc *)
+    Some ? (pair … s_tmp5 new_pc) ]).
+
+(* H:X = M *)
+ndefinition execute_LDHX ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (multi_mode_load false m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op new_pc ⇒
+    opt_map … (set_indX_16_reg m t s_tmp1 M_op)
+     (λs_tmp2.
+      (* Z = nR15&nR14&nR13nR12&nR11&nR10&nR9&nR8nR7&nR6&nR5&nR4&nR3&nR2&nR1&nR0 *)
+      let s_tmp3 ≝ set_z_flag m t s_tmp2 (eq_w16 M_op 〈〈x0,x0〉:〈x0,x0〉〉) in
+      (* N = R15 *)
+      let s_tmp4 ≝ setweak_n_flag m t s_tmp3 (MSB_w16 M_op) in
+      (* V = 0 *) 
+      let s_tmp5 ≝ setweak_v_flag m t s_tmp4 false in
+      (* newpc = nextpc *)
+      Some ? (pair … s_tmp5 new_pc)) ]).
+
+(* X = M *)
+ndefinition execute_LDX ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (multi_mode_load true m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op new_pc ⇒
+    opt_map … (set_indX_8_low_reg m t s_tmp1 M_op)
+     (λs_tmp2.
+      (* Z = nR7&nR6&nR5&nR4&nR3&nR2&nR1&nR0 *)
+      let s_tmp3 ≝ set_z_flag m t s_tmp2 (eq_b8 M_op 〈x0,x0〉) in
+      (* N = R7 *)
+      let s_tmp4 ≝ setweak_n_flag m t s_tmp3 (MSB_b8 M_op) in
+      (* V = 0 *) 
+      let s_tmp5 ≝ setweak_v_flag m t s_tmp4 false in
+      (* newpc = nextpc *)
+      Some ? (pair … s_tmp5 new_pc)) ]).
+
+(* M = 0 -> rcr M -> C' *)
+ndefinition execute_LSR ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_ASL_ASR_LSR_ROL_ROR_aux m t s i cur_pc (λM_op.λC_op.rcr_b8 M_op false).
+
+(* M2 = M1 *)
+ndefinition execute_MOV ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ (* R_op = M1 *)
+ opt_map … (multi_mode_load true m t s cur_pc i)
+  (λS_R_PC.match S_R_PC with
+   [ triple s_tmp1 R_op tmp_pc ⇒
+    (* M2 = R_op *)
+    opt_map … (multi_mode_write true m t s_tmp1 tmp_pc i R_op)
+     (λS_PC.match S_PC with
+      [ pair s_tmp2 new_pc ⇒
+       (* Z = nR7&nR6&nR5&nR4&nR3&nR2&nR1&nR0 *)
+       let s_tmp3 ≝ set_z_flag m t s_tmp2 (eq_b8 R_op 〈x0,x0〉) in
+       (* N = R7 *)
+       let s_tmp4 ≝ setweak_n_flag m t s_tmp3 (MSB_b8 R_op) in
+       (* V = 0 *) 
+       let s_tmp5 ≝ setweak_v_flag m t s_tmp4 false in
+       (* newpc = nextpc *)
+       Some ? (pair … s_tmp5 new_pc)])]).
+
+(* X:A = X * A *)
+ndefinition execute_MUL ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_indX_8_low_reg m t s)
+  (λX_op.let R_op ≝ mul_b8 X_op (get_acc_8_low_reg m t s) in
+   opt_map … (set_indX_8_low_reg m t s (w16h R_op))
+    (λs_tmp.Some ? (pair … (set_acc_8_low_reg m t s_tmp (w16l R_op)) cur_pc))).
+
+(* M = compl M *)
+ndefinition execute_NEG ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_COM_DEC_INC_NEG_aux m t s i cur_pc compl_b8
+ (* fV = M7&R7 *)
+ (λM7.λR7.M7⊗R7)
+ (* fC = R7|R6|R5|R4|R3|R2|R1|R0 *)
+ (λC_op.λR_op.⊖(eq_b8 R_op 〈x0,x0〉)).
+
+(* nulla *)
+ndefinition execute_NOP ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ Some ? (pair … s cur_pc).
+
+(* A = (mk_byte8 (b8l A) (b8h A)) *)
+(* cioe' swap del nibble alto/nibble basso di A *)
+ndefinition execute_NSA ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ match get_acc_8_low_reg m t s with [ mk_byte8 ah al ⇒
+  (* A = (mk_byte8 (b8l A) (b8h A)) *)
+  Some ? (pair … (set_acc_8_low_reg m t s 〈al,ah〉) cur_pc) ].
+
+(* A = A | M *)
+ndefinition execute_ORA ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_AND_BIT_EOR_ORA_aux m t s i cur_pc true or_b8.
+
+(* push A *)
+ndefinition execute_PSHA ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (aux_push m t s (get_acc_8_low_reg m t s))
+  (λs_tmp1.Some ? (pair … s_tmp1 cur_pc)).
+
+(* push H *)
+ndefinition execute_PSHH ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_indX_8_high_reg m t s)
+  (λH_op.opt_map … (aux_push m t s H_op)
+   (λs_tmp1.Some ? (pair … s_tmp1 cur_pc))).
+
+(* push X *)
+ndefinition execute_PSHX ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_indX_8_low_reg m t s)
+  (λH_op.opt_map … (aux_push m t s H_op)
+   (λs_tmp1.Some ? (pair … s_tmp1 cur_pc))).
+
+(* pop A *)
+ndefinition execute_PULA ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (aux_pop m t s)
+  (λS_and_A.match S_and_A with [ pair s_tmp1 A_op ⇒
+   Some ? (pair … (set_acc_8_low_reg m t s_tmp1 A_op) cur_pc) ]).
+
+(* pop H *)
+ndefinition execute_PULH ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (aux_pop m t s)
+  (λS_and_H.match S_and_H with [ pair s_tmp1 H_op ⇒
+   opt_map … (set_indX_8_high_reg m t s_tmp1 H_op)
+    (λs_tmp2.Some ? (pair … s_tmp2 cur_pc))]).
+
+(* pop X *)
+ndefinition execute_PULX ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (aux_pop m t s)
+  (λS_and_X.match S_and_X with [ pair s_tmp1 X_op ⇒
+   opt_map … (set_indX_8_low_reg m t s_tmp1 X_op)
+    (λs_tmp2.Some ? (pair … s_tmp2 cur_pc))]).
+
+(* M = C' <- rcl M <- C *)
+ndefinition execute_ROL ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_ASL_ASR_LSR_ROL_ROR_aux m t s i cur_pc (λM_op.λC_op.rcl_b8 M_op C_op).
+
+(* M = C -> rcr M -> C' *)
+ndefinition execute_ROR ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_ASL_ASR_LSR_ROL_ROR_aux m t s i cur_pc (λM_op.λC_op.rcr_b8 M_op C_op).
+
+(* SP = 0xuuFF *)
+(* lascia inalterato il byte superiore di SP *)
+ndefinition execute_RSP ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_sp_reg m t s)
+  (λSP_op.match SP_op with [ mk_word16 sph spl ⇒
+   opt_map … (set_sp_reg m t s 〈sph:〈xF,xF〉〉)
+    (λs_tmp.Some ? (pair … s_tmp cur_pc))]).
+
+(* return from interrupt *)
+ndefinition execute_RTI ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ (* pop (CCR) *)
+ opt_map … (aux_pop m t s)
+  (λS_and_CCR.match S_and_CCR with [ pair s_tmp1 CCR_op ⇒
+   let s_tmp2 ≝ aux_set_CCR m t s_tmp1 CCR_op in
+   (* pop (A) *)
+   opt_map … (aux_pop m t s_tmp2)
+    (λS_and_A.match S_and_A with [ pair s_tmp3 A_op ⇒
+     let s_tmp4 ≝ set_acc_8_low_reg m t s_tmp3 A_op in
+     (* pop (X) *)
+     opt_map … (aux_pop m t s_tmp4)
+      (λS_and_X.match S_and_X with [ pair s_tmp5 X_op ⇒
+       opt_map … (set_indX_8_low_reg m t s_tmp5 X_op)
+        (* pop (PC high) *)
+        (λs_tmp6.opt_map … (aux_pop m t s_tmp6)
+         (λS_and_PCH.match S_and_PCH with [ pair s_tmp7 PCH_op ⇒
+          (* pop (PC low) *)
+          opt_map … (aux_pop m t s_tmp7)
+           (λS_and_PCL.match S_and_PCL with [ pair s_tmp8 PCL_op ⇒
+            Some ? (pair … s_tmp8 〈PCH_op:PCL_op〉)])]))])])]).
+
+(* return from subroutine *)
+(* HC05/HC08/HCS08 si appoggia allo stack, RS08 si appoggia a SPC *)
+ndefinition execute_RTS ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ let aux ≝
+  (* pop (PC high) *)
+  opt_map … (aux_pop m t s)
+   (λS_and_PCH.match S_and_PCH with [ pair s_tmp1 PCH_op ⇒
+    (* pop (PC low) *)
+    opt_map … (aux_pop m t s_tmp1)
+     (λS_and_PCL.match S_and_PCL with [ pair s_tmp2 PCL_op ⇒
+      Some ? (pair … s_tmp2 〈PCH_op:PCL_op〉)])])
+ in match m with
+  [ HC05 ⇒ aux | HC08 ⇒ aux | HCS08 ⇒ aux
+  | RS08 ⇒
+   (* new_pc = SPC *)
+   opt_map … (get_spc_reg m t s)
+    (λSPC_op.Some ? (pair … s SPC_op))
+  ].
+
+(* A = A - M - C *)
+ndefinition execute_SBC ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_SBC_SUB_aux m t s i cur_pc true
+ (λA_op.λM_op.λC_op.match plus_b8_dc_dc A_op (compl_b8 M_op) false with
+  [ pair resb resc ⇒ match C_op with
+   [ true ⇒ plus_b8_dc_dc resb 〈xF,xF〉 false
+   | false ⇒ pair … resb resc ]]).
+
+(* C = 1 *)
+ndefinition execute_SEC ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ Some ? (pair … (set_c_flag m t s true) cur_pc).
+
+(* I = 1 *)
+ndefinition execute_SEI ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (set_i_flag m t s true)
+  (λs_tmp.Some ? (pair … s_tmp cur_pc)).
+
+(* swap SPCh,A *)
+(* senso: nell'RS08 SPC non e' accessibile direttamente e come si possono
+          fare subroutine annidate se RA (return address) e' salvato sempre in SPC?
+          occore accedere a SPC e salvarne il contenuto *)
+ndefinition execute_SHA ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_spc_reg m t s)
+  (λSPC_op.opt_map … (set_spc_reg m t s 〈(get_acc_8_low_reg m t s):(w16l SPC_op)〉)
+   (λs_tmp1.Some ? (pair … (set_acc_8_low_reg m t s_tmp1 (w16h SPC_op)) cur_pc))).
+
+(* swap SPCl,A *)
+(* senso: nell'RS08 SPC non e' accessibile direttamente e come si possono
+          fare subroutine annidate se RA (return address) e' salvato sempre in SPC?
+          occore accedere a SPC e salvarne il contenuto *)
+ndefinition execute_SLA ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_spc_reg m t s)
+  (λSPC_op.opt_map … (set_spc_reg m t s 〈(w16h SPC_op):(get_acc_8_low_reg m t s)〉)
+   (λs_tmp1.Some ? (pair … (set_acc_8_low_reg m t s_tmp1 (w16l SPC_op)) cur_pc))).
+
+(* M = A *)
+ndefinition execute_STA ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ (* M = A *)
+ let A_op ≝ (get_acc_8_low_reg m t s) in
+ opt_map … (multi_mode_write true m t s cur_pc i A_op)
+  (λS_op_and_PC.match S_op_and_PC with
+   [ pair s_tmp1 new_pc ⇒
+   (* Z = nA7&nA6&nA5&nA4&nA3&nA2&nA1&nA0 *)
+   let s_tmp2 ≝ set_z_flag m t s_tmp1 (eq_b8 A_op 〈x0,x0〉) in
+   (* N = A7 *)
+   let s_tmp3 ≝ setweak_n_flag m t s_tmp2 (MSB_b8 A_op) in
+   (* V = 0 *)
+   let s_tmp4 ≝ setweak_v_flag m t s_tmp3 false in
+   (* newpc = nextpc *)
+   Some ? (pair … s_tmp4 new_pc) ]).
+
+(* M = H:X *)
+ndefinition execute_STHX ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ (* M = H:X *)
+ opt_map … (get_indX_16_reg m t s)
+  (λX_op.opt_map … (multi_mode_write false m t s cur_pc i X_op)
+   (λS_op_and_PC.match S_op_and_PC with
+    [ pair s_tmp1 new_pc ⇒
+     (* Z = nR15&nR14&nR13nR12&nR11&nR10&nR9&nR8nR7&nR6&nR5&nR4&nR3&nR2&nR1&nR0 *)
+     let s_tmp2 ≝ set_z_flag m t s_tmp1 (eq_w16 X_op 〈〈x0,x0〉:〈x0,x0〉〉) in
+     (* N = R15 *)
+     let s_tmp3 ≝ setweak_n_flag m t s_tmp2 (MSB_w16 X_op) in
+     (* V = 0 *)
+     let s_tmp4 ≝ setweak_v_flag m t s_tmp3 false in
+     (* newpc = nextpc *)
+      Some ? (pair … s_tmp4 new_pc) ])).
+
+(* I = 0 *)
+ndefinition execute_STOP ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ Some ? (pair … (setweak_i_flag m t s false) cur_pc).
+
+(* M = X *)
+ndefinition execute_STX ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ (* M = X *)
+ opt_map … (get_indX_8_low_reg m t s)
+  (λX_op.opt_map … (multi_mode_write true m t s cur_pc i X_op)
+   (λS_op_and_PC.match S_op_and_PC with
+    [ pair s_tmp1 new_pc ⇒
+     (* Z = nR7&nR6&nR5&nR4&nR3&nR2&nR1&nR0 *)
+     let s_tmp2 ≝ set_z_flag m t s_tmp1 (eq_b8 X_op 〈x0,x0〉) in
+     (* N = R7 *)
+     let s_tmp3 ≝ setweak_n_flag m t s_tmp2 (MSB_b8 X_op) in
+     (* V = 0 *)
+     let s_tmp4 ≝ setweak_v_flag m t s_tmp3 false in
+     (* newpc = nextpc *)
+     Some ? (pair … s_tmp4 new_pc) ])).
+
+(* A = A - M *)
+ndefinition execute_SUB ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ execute_SBC_SUB_aux m t s i cur_pc true (λA_op.λM_op.λC_op.plus_b8_dc_dc A_op (compl_b8 M_op) false). 
+
+(* software interrupt *)
+ndefinition execute_SWI ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ (* indirizzo da cui caricare il nuovo pc *)
+ let vector ≝ get_pc_reg m t (set_pc_reg m t s 〈〈xF,xF〉:〈xF,xC〉〉) in
+ (* push (cur_pc low) *)
+ opt_map … (aux_push m t s (w16l cur_pc))
+  (* push (cur_pc high *)
+  (λs_tmp1.opt_map … (aux_push m t s_tmp1 (w16h cur_pc))
+   (λs_tmp2.opt_map … (get_indX_8_low_reg m t s_tmp2)
+    (* push (X) *)
+    (λX_op.opt_map … (aux_push m t s_tmp2 X_op)
+     (* push (A) *)
+     (λs_tmp3.opt_map … (aux_push m t s_tmp3 (get_acc_8_low_reg m t s_tmp3))
+      (* push (CCR) *)
+      (λs_tmp4.opt_map … (aux_push m t s_tmp4 (aux_get_CCR m t s_tmp4))
+       (* I = 1 *)
+       (λs_tmp5.opt_map … (set_i_flag m t s_tmp5 true)
+        (* load from vector high *)
+        (λs_tmp6.opt_map … (memory_filter_read m t s_tmp6 vector)
+         (* load from vector low *)
+         (λaddrh.opt_map … (memory_filter_read m t s_tmp6 (succ_w16 vector))
+          (* newpc = [vector] *)
+          (λaddrl.Some ? (pair … s_tmp6 〈addrh:addrl〉)))))))))).
+
+(* flags = A *)
+ndefinition execute_TAP ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ Some ? (pair … (aux_set_CCR m t s (get_acc_8_low_reg m t s)) cur_pc). 
+
+(* X = A *)
+ndefinition execute_TAX ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (set_indX_8_low_reg m t s (get_acc_8_low_reg m t s))
+  (λs_tmp.Some ? (pair … s_tmp cur_pc)).
+
+(* A = flags *)
+ndefinition execute_TPA ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ Some ? (pair … (set_acc_8_low_reg m t s (aux_get_CCR m t s)) cur_pc).
+
+(* flags = M - 0 *)
+(* implementata senza richiamare la sottrazione, la modifica dei flag
+   e' immediata *)
+ndefinition execute_TST ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (multi_mode_load true m t s cur_pc i)
+  (λS_M_PC.match S_M_PC with
+   [ triple s_tmp1 M_op new_pc ⇒
+    (* Z = nR7&nR6&nR5&nR4&nR3&nR2&nR1&nR0 *)
+    let s_tmp2 ≝ set_z_flag m t s_tmp1 (eq_b8 M_op 〈x0,x0〉) in
+    (* N = R7 *) 
+    let s_tmp3 ≝ setweak_n_flag m t s_tmp2 (MSB_b8 M_op) in
+    (* V = 0 *) 
+    let s_tmp4 ≝ setweak_v_flag m t s_tmp3 false in
+    (* newpc = nextpc *)
+    Some ? (pair … s_tmp4 new_pc) ]).
+
+(* H:X = SP + 1 *)
+ndefinition execute_TSX ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_sp_reg m t s )
+  (λSP_op.opt_map … (set_indX_16_reg m t s (succ_w16 SP_op))
+   (* H:X = SP + 1 *)
+   (λs_tmp.Some ? (pair … s_tmp cur_pc))).
+
+(* A = X *)
+ndefinition execute_TXA ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_indX_8_low_reg m t s)
+  (λX_op.Some ? (pair … (set_acc_8_low_reg m t s X_op) cur_pc)).
+
+(* SP = H:X - 1 *)
+ndefinition execute_TXS ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ opt_map … (get_indX_16_reg m t s )
+  (λX_op.opt_map … (set_sp_reg m t s (pred_w16 X_op))
+   (* SP = H:X - 1 *)
+   (λs_tmp.Some ? (pair … s_tmp cur_pc))).
+
+(* I = 0 *)
+ndefinition execute_WAIT ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λi:instr_mode.λcur_pc:word16.
+ Some ? (pair … (setweak_i_flag m t s false) cur_pc).
+
+(* **** *)
+(* TICK *)
+(* **** *)
+
+(* enumerazione delle possibili modalita' di sospensione *)
+ninductive susp_type : Type ≝
+  BGND_MODE: susp_type
+| STOP_MODE: susp_type
+| WAIT_MODE: susp_type.
+
+(* un tipo opzione ad hoc
+   - errore: errore+stato (seguira' reset o …, cmq lo stato non va buttato)
+   - sospensione: sospensione+stato (seguira' resume o …)
+   - ok: stato
+*)
+ninductive tick_result (A:Type) : Type ≝
+  TickERR   : A → error_type → tick_result A
+| TickSUSP  : A → susp_type → tick_result A
+| TickOK    : A → tick_result A.
+
+(* sostanazialmente simula
+   - fetch/decode/execute
+   - l'esecuzione e' considerata atomica quindi nel caso di un'instruzione
+     da 3 cicli la successione sara'
+       ([fetch/decode] s,clk:None) →
+       (               s,clk:Some 1,pseudo,mode,3,cur_pc) →
+       (               s,clk:Some 2,pseudo,mode,3,cur_pc) →
+       ([execute]      s',clk:None) *)
+
+ndefinition tick_execute ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+λpseudo:any_opcode m.λmode:instr_mode.λcur_pc:word16.
+ let abs_pseudo ≝ match pseudo with [ anyOP pseudo' ⇒ pseudo' ] in
+ let a_status_and_fetch ≝ match abs_pseudo with
+  [ ADC    ⇒ execute_ADC    m t s mode cur_pc (* add with carry *)
+  | ADD    ⇒ execute_ADD    m t s mode cur_pc (* add *)
+  | AIS    ⇒ execute_AIS    m t s mode cur_pc (* add immediate to SP *)
+  | AIX    ⇒ execute_AIX    m t s mode cur_pc (* add immediate to X *)
+  | AND    ⇒ execute_AND    m t s mode cur_pc (* and *)
+  | ASL    ⇒ execute_ASL    m t s mode cur_pc (* aritmetic shift left *)
+  | ASR    ⇒ execute_ASR    m t s mode cur_pc (* aritmetic shift right *)
+  | BCC    ⇒ execute_BCC    m t s mode cur_pc (* branch if C=0 *)
+  | BCLRn  ⇒ execute_BCLRn  m t s mode cur_pc (* clear bit n *)
+  | BCS    ⇒ execute_BCS    m t s mode cur_pc (* branch if C=1 *)
+  | BEQ    ⇒ execute_BEQ    m t s mode cur_pc (* branch if Z=1 *)
+  | BGE    ⇒ execute_BGE    m t s mode cur_pc (* branch if N⊙V=0 (great or equal) *)
+  | BGND   ⇒ execute_BGND   m t s mode cur_pc (* !!background mode!!*)
+  | BGT    ⇒ execute_BGT    m t s mode cur_pc (* branch if Z|N⊙V=0 clear (great) *)
+  | BHCC   ⇒ execute_BHCC   m t s mode cur_pc (* branch if H=0 *)
+  | BHCS   ⇒ execute_BHCS   m t s mode cur_pc (* branch if H=1 *)
+  | BHI    ⇒ execute_BHI    m t s mode cur_pc (* branch if C|Z=0, (higher) *)
+  | BIH    ⇒ execute_BIH    m t s mode cur_pc (* branch if nIRQ=1 *)
+  | BIL    ⇒ execute_BIL    m t s mode cur_pc (* branch if nIRQ=0 *)
+  | BIT    ⇒ execute_BIT    m t s mode cur_pc (* flag = and (bit test) *)
+  | BLE    ⇒ execute_BLE    m t s mode cur_pc (* branch if Z|N⊙V=1 (less or equal) *)
+  | BLS    ⇒ execute_BLS    m t s mode cur_pc (* branch if C|Z=1 (lower or same) *)
+  | BLT    ⇒ execute_BLT    m t s mode cur_pc (* branch if N⊙1=1 (less) *)
+  | BMC    ⇒ execute_BMC    m t s mode cur_pc (* branch if I=0 (interrupt mask clear) *)
+  | BMI    ⇒ execute_BMI    m t s mode cur_pc (* branch if N=1 (minus) *)
+  | BMS    ⇒ execute_BMS    m t s mode cur_pc (* branch if I=1 (interrupt mask set) *)
+  | BNE    ⇒ execute_BNE    m t s mode cur_pc (* branch if Z=0 *)
+  | BPL    ⇒ execute_BPL    m t s mode cur_pc (* branch if N=0 (plus) *)
+  | BRA    ⇒ execute_BRA    m t s mode cur_pc (* branch always *)
+  | BRCLRn ⇒ execute_BRCLRn m t s mode cur_pc (* branch if bit n clear *)
+  | BRN    ⇒ execute_BRN    m t s mode cur_pc (* branch never (nop) *)
+  | BRSETn ⇒ execute_BRSETn m t s mode cur_pc (* branch if bit n set *)
+  | BSETn  ⇒ execute_BSETn  m t s mode cur_pc (* set bit n *)
+  | BSR    ⇒ execute_BSR    m t s mode cur_pc (* branch to subroutine *)
+  | CBEQA  ⇒ execute_CBEQA  m t s mode cur_pc (* compare (A) and BEQ *)
+  | CBEQX  ⇒ execute_CBEQX  m t s mode cur_pc (* compare (X) and BEQ *)
+  | CLC    ⇒ execute_CLC    m t s mode cur_pc (* C=0 *)
+  | CLI    ⇒ execute_CLI    m t s mode cur_pc (* I=0 *)
+  | CLR    ⇒ execute_CLR    m t s mode cur_pc (* operand=0 *)
+  | CMP    ⇒ execute_CMP    m t s mode cur_pc (* flag = sub (compare A) *)
+  | COM    ⇒ execute_COM    m t s mode cur_pc (* not (1 complement) *)
+  | CPHX   ⇒ execute_CPHX   m t s mode cur_pc (* flag = sub (compare H:X) *)
+  | CPX    ⇒ execute_CPX    m t s mode cur_pc (* flag = sub (compare X) *)
+  | DAA    ⇒ execute_DAA    m t s mode cur_pc (* decimal adjust A *)
+  | DBNZ   ⇒ execute_DBNZ   m t s mode cur_pc (* dec and BNE *)
+  | DEC    ⇒ execute_DEC    m t s mode cur_pc (* operand=operand-1 (decrement) *)
+  | DIV    ⇒ execute_DIV    m t s mode cur_pc (* div *)
+  | EOR    ⇒ execute_EOR    m t s mode cur_pc (* xor *)
+  | INC    ⇒ execute_INC    m t s mode cur_pc (* operand=operand+1 (increment) *)
+  | JMP    ⇒ execute_JMP    m t s mode cur_pc (* jmp word [operand] *)
+  | JSR    ⇒ execute_JSR    m t s mode cur_pc (* jmp to subroutine *)
+  | LDA    ⇒ execute_LDA    m t s mode cur_pc (* load in A *)
+  | LDHX   ⇒ execute_LDHX   m t s mode cur_pc (* load in H:X *)
+  | LDX    ⇒ execute_LDX    m t s mode cur_pc (* load in X *)
+  | LSR    ⇒ execute_LSR    m t s mode cur_pc (* logical shift right *)
+  | MOV    ⇒ execute_MOV    m t s mode cur_pc (* move *)
+  | MUL    ⇒ execute_MUL    m t s mode cur_pc (* mul *)
+  | NEG    ⇒ execute_NEG    m t s mode cur_pc (* neg (2 complement) *)
+  | NOP    ⇒ execute_NOP    m t s mode cur_pc (* nop *)
+  | NSA    ⇒ execute_NSA    m t s mode cur_pc (* nibble swap A (al:ah <- ah:al) *)
+  | ORA    ⇒ execute_ORA    m t s mode cur_pc (* or *)
+  | PSHA   ⇒ execute_PSHA   m t s mode cur_pc (* push A *)
+  | PSHH   ⇒ execute_PSHH   m t s mode cur_pc (* push H *)
+  | PSHX   ⇒ execute_PSHX   m t s mode cur_pc (* push X *)
+  | PULA   ⇒ execute_PULA   m t s mode cur_pc (* pop A *)
+  | PULH   ⇒ execute_PULH   m t s mode cur_pc (* pop H *)
+  | PULX   ⇒ execute_PULX   m t s mode cur_pc (* pop X *)
+  | ROL    ⇒ execute_ROL    m t s mode cur_pc (* rotate left *)
+  | ROR    ⇒ execute_ROR    m t s mode cur_pc (* rotate right *)
+  | RSP    ⇒ execute_RSP    m t s mode cur_pc (* reset SP (0x00FF) *)
+  | RTI    ⇒ execute_RTI    m t s mode cur_pc (* return from interrupt *)
+  | RTS    ⇒ execute_RTS    m t s mode cur_pc (* return from subroutine *)
+  | SBC    ⇒ execute_SBC    m t s mode cur_pc (* sub with carry*)
+  | SEC    ⇒ execute_SEC    m t s mode cur_pc (* C=1 *)
+  | SEI    ⇒ execute_SEI    m t s mode cur_pc (* I=1 *)
+  | SHA    ⇒ execute_SHA    m t s mode cur_pc (* swap spc_high,A *)
+  | SLA    ⇒ execute_SLA    m t s mode cur_pc (* swap spc_low,A *)
+  | STA    ⇒ execute_STA    m t s mode cur_pc (* store from A *)
+  | STHX   ⇒ execute_STHX   m t s mode cur_pc (* store from H:X *)
+  | STOP   ⇒ execute_STOP   m t s mode cur_pc (* !!stop mode!! *)
+  | STX    ⇒ execute_STX    m t s mode cur_pc (* store from X *)
+  | SUB    ⇒ execute_SUB    m t s mode cur_pc (* sub *)
+  | SWI    ⇒ execute_SWI    m t s mode cur_pc (* software interrupt *)
+  | TAP    ⇒ execute_TAP    m t s mode cur_pc (* flag=A (transfer A to process status byte *)
+  | TAX    ⇒ execute_TAX    m t s mode cur_pc (* X=A (transfer A to X) *)
+  | TPA    ⇒ execute_TPA    m t s mode cur_pc (* A=flag (transfer process status byte to A) *)
+  | TST    ⇒ execute_TST    m t s mode cur_pc (* flag = sub (test) *)
+  | TSX    ⇒ execute_TSX    m t s mode cur_pc (* X:H=SP (transfer SP to H:X) *)
+  | TXA    ⇒ execute_TXA    m t s mode cur_pc (* A=X (transfer X to A) *)
+  | TXS    ⇒ execute_TXS    m t s mode cur_pc (* SP=X:H (transfer H:X to SP) *)
+  | WAIT   ⇒ execute_WAIT   m t s mode cur_pc (* !!wait mode!!*)
+  ] in match a_status_and_fetch with
+(* errore nell'execute (=caricamento argomenti)? riportato in output *)
+(* nessun avanzamento e clk a None *)
+   [ None ⇒ TickERR ? (set_clk_desc m t s (None ?)) ILL_EX_AD
+   | Some status_and_newpc ⇒
+(* aggiornamento centralizzato di pc e clk *)
+     match status_and_newpc with
+      [ pair s_tmp1 new_pc ⇒
+       let s_tmp2 ≝ set_pc_reg m t s_tmp1 new_pc in
+       let s_tmp3 ≝ set_clk_desc m t s_tmp2 (None ?) in
+(* distinzione fra le 4 modalita' possibili, normale/BGND/STOP/WAIT *)
+        match eq_op abs_pseudo BGND with
+         [ true ⇒ TickSUSP ? s_tmp3 BGND_MODE
+         | false ⇒ match eq_op abs_pseudo STOP with
+          [ true ⇒ TickSUSP ? s_tmp3 STOP_MODE
+          | false ⇒ match eq_op abs_pseudo WAIT with
+           [ true ⇒ TickSUSP ? s_tmp3 WAIT_MODE
+           | false ⇒ TickOK ? s_tmp3
+           ]]]]].
+
+ndefinition tick ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ let opt_info ≝ clk_desc m t s in
+ match opt_info with
+  (* e' il momento del fetch *)
+  [ None ⇒ match fetch m t s with
+   (* errore nel fetch/decode? riportato in output, nessun avanzamento *)
+   [ FetchERR err ⇒ TickERR ? s err
+   (* nessun errore nel fetch *)
+   | FetchOK fetch_info cur_pc ⇒ match fetch_info with
+    [ quadruple pseudo mode _ tot_clk ⇒
+      match eq_b8 〈x0,x1〉 tot_clk with
+       (* un solo clk, execute subito *)
+       [ true ⇒ tick_execute m t s pseudo mode cur_pc
+       (* piu' clk, execute rimandata *)
+       | false ⇒ TickOK ? (set_clk_desc m t s (Some ? (quintuple … 〈x0,x1〉 pseudo mode tot_clk cur_pc)))
+       ]
+      ]
+    ]
+  (* il fetch e' gia' stato eseguito, e' il turno di execute? *)
+  | Some info ⇒ match info with [ quintuple cur_clk pseudo mode tot_clk cur_pc ⇒ 
+   match eq_b8 (succ_b8 cur_clk) tot_clk with
+    (* si *)
+    [ true ⇒ tick_execute m t s pseudo mode cur_pc
+    (* no, avanzamento cur_clk *)
+    | false ⇒ TickOK ? (set_clk_desc m t s (Some ? (quintuple … (succ_b8 cur_clk) pseudo mode tot_clk cur_pc)))
+    ]
+   ]
+  ].
+
+(* ********** *)
+(* ESECUZIONE *)
+(* ********** *)
+
+nlet rec execute (m:mcu_type) (t:memory_impl) (s:tick_result (any_status m t)) (n:nat) on n ≝
+ match s with
+  [ TickERR s' error ⇒ TickERR ? s' error
+  | TickSUSP s' susp ⇒ TickSUSP ? s' susp
+  | TickOK s'        ⇒ match n with [ O ⇒ TickOK ? s' | S n' ⇒ execute m t (tick m t s') n' ]
+  ].
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/multivm_lemmas.ma b/helm/software/matita/contribs/ng_assembly/freescale/multivm_lemmas.ma
new file mode 100755 (executable)
index 0000000..d0d7475
--- /dev/null
@@ -0,0 +1,57 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/multivm.ma".
+include "common/nat_lemmas.ma".
+
+nlemma breakpoint_err : ∀m,t,s,err,n.execute m t (TickERR ? s err) n = TickERR ? s err.
+ #m; #t; #s; #err; #n;
+ ncases n;
+ ##[ ##2: #n1; ##]
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma breakpoint_susp : ∀m,t,s,susp,n.execute m t (TickSUSP ? s susp) n = TickSUSP ? s susp.
+ #m; #t; #s; #susp; #n;
+ ncases n;
+ ##[ ##2: #n1; ##]
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma breakpoint :
+ ∀m,t,n1,n2,s. execute m t s (n1 + n2) = execute m t (execute m t s n1) n2.
+ #m; #t; #n1;
+ nelim n1;
+ ##[ ##1: nnormalize; #n2; #s; ncases s; nnormalize; ##[ ##1,2: #x ##] #y; napply refl_eq
+ ##| ##2: #n3; #H; #n2; #s; ncases s;
+          ##[ ##1: #x; #y; nnormalize; nrewrite > (breakpoint_err m t x y n2); napply refl_eq
+          ##| ##2: #x; #y; nnormalize; nrewrite > (breakpoint_susp m t x y n2); napply refl_eq
+          ##| ##3: #x; nrewrite > (Sn_p_n_to_S_npn n3 n2);
+                   nchange with ((execute m t (tick m t x) (n3+n2)) =
+                                 (execute m t (execute m t (tick m t x) n3) n2));
+                   nrewrite > (H n2 (tick m t x));
+                   napply refl_eq
+          ##]
+ ##]
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/opcode.ma b/helm/software/matita/contribs/ng_assembly/freescale/opcode.ma
new file mode 100755 (executable)
index 0000000..aeaaa8a
--- /dev/null
@@ -0,0 +1,180 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/opcode_base.ma".
+include "common/list.ma".
+
+(* ********************************************* *)
+(* STRUMENTI PER LE DIMOSTRAZIONI DI CORRETTEZZA *)
+(* ********************************************* *)
+
+(* su tutta la lista quante volte compare il byte *)
+nlet rec get_byte_count (m:mcu_type) (b:byte8) (c:word16)
+ (l:list (Prod4T (any_opcode m) instr_mode byte8_or_word16 byte8)) on l ≝
+ match l with
+  [ nil ⇒ c
+  | cons hd tl ⇒ match thd4T … hd with
+   [ Byte b' ⇒ match eq_b8 b b' with
+    [ true ⇒ get_byte_count m b (succ_w16 c) tl
+    | false ⇒ get_byte_count m b c tl
+    ]
+   | Word _ ⇒ get_byte_count m b c tl
+   ]
+  ].
+
+(* su tutta la lista quante volte compare la word (0x9E+byte) *)
+nlet rec get_word_count (m:mcu_type) (b:byte8) (c:word16)
+ (l:list (Prod4T (any_opcode m) instr_mode byte8_or_word16 byte8)) on l ≝
+ match l with
+  [ nil ⇒ c
+  | cons hd tl ⇒ match thd4T … hd with
+   [ Byte _ ⇒ get_word_count m b c tl
+   | Word w ⇒ match eq_w16 〈〈x9,xE〉:b〉 w with
+    [ true ⇒ get_word_count m b (succ_w16 c) tl
+    | false ⇒ get_word_count m b c tl
+    ]
+   ]
+  ].
+
+(* su tutta la lista quante volte compare lo pseudocodice *)
+nlet rec get_pseudo_count (m:mcu_type) (o:opcode) (c:word16)
+ (l:list (Prod4T (any_opcode m) instr_mode byte8_or_word16 byte8)) on l ≝
+ match l with
+  [ nil ⇒ c
+  | cons hd tl ⇒ match fst4T … hd with
+   [ anyOP o' ⇒ match eq_op o o' with
+    [ true ⇒ get_pseudo_count m o (succ_w16 c) tl
+    | false ⇒ get_pseudo_count m o c tl
+    ]
+   ]
+  ].
+
+(* su tutta la lista quante volte compare la modalita' *)
+nlet rec get_mode_count (m:mcu_type) (i:instr_mode) (c:word16)
+ (l:list (Prod4T (any_opcode m) instr_mode byte8_or_word16 byte8)) on l ≝
+ match l with
+  [ nil ⇒ c
+  | cons hd tl ⇒ match eq_im (snd4T … hd) i with
+   [ true ⇒ get_mode_count m i (succ_w16 c) tl
+   | false ⇒ get_mode_count m i c tl
+   ]
+  ].
+
+(* b e' non implementato? *)
+nlet rec test_not_impl_byte (b:byte8) (l:list byte8) on l ≝
+ match l with
+  [ nil ⇒ false
+  | cons hd tl ⇒ match eq_b8 b hd with
+   [ true ⇒ true
+   | false ⇒ test_not_impl_byte b tl
+   ]
+  ].
+
+(* o e' non implementato? *)
+nlet rec test_not_impl_pseudo (o:opcode) (l:list opcode) on l ≝
+ match l with
+  [ nil ⇒ false
+  | cons hd tl ⇒ match eq_op o hd with
+   [ true ⇒ true
+   | false ⇒ test_not_impl_pseudo o tl
+   ]
+  ].
+
+(* i e' non implementato? *)
+nlet rec test_not_impl_mode (i:instr_mode) (l:list instr_mode) on l ≝
+ match l with
+  [ nil ⇒ false
+  | cons hd tl ⇒ match eq_im i hd with
+   [ true ⇒ true
+   | false ⇒ test_not_impl_mode i tl
+   ]
+  ].
+
+(* su tutta la lista quante volte compare la coppia opcode,instr_mode *)
+nlet rec get_OpIm_count (m:mcu_type) (o:any_opcode m) (i:instr_mode) (c:word16)
+ (l:list (Prod4T (any_opcode m) instr_mode byte8_or_word16 byte8)) on l ≝
+ match l with
+  [ nil ⇒ c
+  | cons hd tl ⇒
+   match (eq_anyop m o (fst4T … hd)) ⊗
+         (eq_im i (snd4T … hd)) with
+    [ true ⇒ get_OpIm_count m o i (succ_w16 c) tl
+    | false ⇒ get_OpIm_count m o i c tl
+    ] 
+  ].
+
+(* iteratore sugli opcode *)
+ndefinition forall_op ≝ λP.
+ P ADC    ⊗ P ADD    ⊗ P AIS    ⊗ P AIX    ⊗ P AND    ⊗ P ASL    ⊗ P ASR    ⊗ P BCC    ⊗
+ P BCLRn  ⊗ P BCS    ⊗ P BEQ    ⊗ P BGE    ⊗ P BGND   ⊗ P BGT    ⊗ P BHCC   ⊗ P BHCS   ⊗
+ P BHI    ⊗ P BIH    ⊗ P BIL    ⊗ P BIT    ⊗ P BLE    ⊗ P BLS    ⊗ P BLT    ⊗ P BMC    ⊗
+ P BMI    ⊗ P BMS    ⊗ P BNE    ⊗ P BPL    ⊗ P BRA    ⊗ P BRCLRn ⊗ P BRN    ⊗ P BRSETn ⊗
+ P BSETn  ⊗ P BSR    ⊗ P CBEQA  ⊗ P CBEQX  ⊗ P CLC    ⊗ P CLI    ⊗ P CLR    ⊗ P CMP    ⊗
+ P COM    ⊗ P CPHX   ⊗ P CPX    ⊗ P DAA    ⊗ P DBNZ   ⊗ P DEC    ⊗ P DIV    ⊗ P EOR    ⊗
+ P INC    ⊗ P JMP    ⊗ P JSR    ⊗ P LDA    ⊗ P LDHX   ⊗ P LDX    ⊗ P LSR    ⊗ P MOV    ⊗
+ P MUL    ⊗ P NEG    ⊗ P NOP    ⊗ P NSA    ⊗ P ORA    ⊗ P PSHA   ⊗ P PSHH   ⊗ P PSHX   ⊗
+ P PULA   ⊗ P PULH   ⊗ P PULX   ⊗ P ROL    ⊗ P ROR    ⊗ P RSP    ⊗ P RTI    ⊗ P RTS    ⊗
+ P SBC    ⊗ P SEC    ⊗ P SEI    ⊗ P SHA    ⊗ P SLA    ⊗ P STA    ⊗ P STHX   ⊗ P STOP   ⊗
+ P STX    ⊗ P SUB    ⊗ P SWI    ⊗ P TAP    ⊗ P TAX    ⊗ P TPA    ⊗ P TST    ⊗ P TSX    ⊗
+ P TXA    ⊗ P TXS    ⊗ P WAIT.
+
+(* iteratore sulle modalita' *)
+ndefinition forall_im ≝ λP.
+  P MODE_INH
+⊗ P MODE_INHA
+⊗ P MODE_INHX
+⊗ P MODE_INHH
+
+⊗ P MODE_INHX0ADD
+⊗ P MODE_INHX1ADD
+⊗ P MODE_INHX2ADD
+
+⊗ P MODE_IMM1
+⊗ P MODE_IMM1EXT
+⊗ P MODE_IMM2
+⊗ P MODE_DIR1
+⊗ P MODE_DIR2
+⊗ P MODE_IX0
+⊗ P MODE_IX1
+⊗ P MODE_IX2
+⊗ P MODE_SP1
+⊗ P MODE_SP2
+
+⊗ P MODE_DIR1_to_DIR1
+⊗ P MODE_IMM1_to_DIR1
+⊗ P MODE_IX0p_to_DIR1
+⊗ P MODE_DIR1_to_IX0p
+
+⊗ P MODE_INHA_and_IMM1
+⊗ P MODE_INHX_and_IMM1
+⊗ P MODE_IMM1_and_IMM1
+⊗ P MODE_DIR1_and_IMM1
+⊗ P MODE_IX0_and_IMM1
+⊗ P MODE_IX0p_and_IMM1
+⊗ P MODE_IX1_and_IMM1
+⊗ P MODE_IX1p_and_IMM1
+⊗ P MODE_SP1_and_IMM1
+
+⊗ forall_oct (λo. P (MODE_DIRn o))
+⊗ forall_oct (λo. P (MODE_DIRn_and_IMM1 o))
+⊗ forall_ex (λe. P (MODE_TNY e))
+⊗ forall_bit (λt. P (MODE_SRT t)).
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/opcode_base.ma b/helm/software/matita/contribs/ng_assembly/freescale/opcode_base.ma
new file mode 100755 (executable)
index 0000000..f1bb166
--- /dev/null
@@ -0,0 +1,330 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "num/word16.ma".
+
+(* ********************************************** *)
+(* MATTONI BASE PER DEFINIRE LE TABELLE DELLE MCU *)
+(* ********************************************** *)
+
+(* enumerazione delle ALU *)
+ninductive mcu_type: Type ≝
+  HC05  : mcu_type
+| HC08  : mcu_type
+| HCS08 : mcu_type
+| RS08  : mcu_type.
+
+ndefinition eq_mcutype ≝
+λm1,m2:mcu_type.
+ match m1 with
+  [ HC05 ⇒ match m2 with [ HC05 ⇒ true | _ ⇒ false ]
+  | HC08 ⇒ match m2 with [ HC08 ⇒ true | _ ⇒ false ]
+  | HCS08 ⇒ match m2 with [ HCS08 ⇒ true | _ ⇒ false ]
+  | RS08 ⇒ match m2 with [ RS08 ⇒ true | _ ⇒ false ]
+  ].
+
+(* enumerazione delle modalita' di indirizzamento = caricamento degli operandi *)
+ninductive instr_mode: Type ≝
+  (* INHERENT = nessun operando *)
+  MODE_INH  : instr_mode
+  (* INHERENT = nessun operando (A implicito) *)
+| MODE_INHA : instr_mode
+  (* INHERENT = nessun operando (X implicito) *)
+| MODE_INHX : instr_mode
+  (* INHERENT = nessun operando (H implicito) *)
+| MODE_INHH : instr_mode
+
+  (* INHERENT_ADDRESS = nessun operando (HX implicito) *)
+| MODE_INHX0ADD : instr_mode
+  (* INHERENT_ADDRESS = nessun operando (HX implicito+0x00bb) *)
+| MODE_INHX1ADD : instr_mode
+  (* INHERENT_ADDRESS = nessun operando (HX implicito+0xwwww) *)
+| MODE_INHX2ADD : instr_mode
+
+  (* IMMEDIATE = operando valore immediato byte = 0xbb *)
+| MODE_IMM1 : instr_mode
+  (* IMMEDIATE_EXT = operando valore immediato byte = 0xbb -> esteso a word *)
+| MODE_IMM1EXT : instr_mode
+  (* IMMEDIATE = operando valore immediato word = 0xwwww *)
+| MODE_IMM2 : instr_mode
+  (* DIRECT = operando offset byte = [0x00bb] *)
+| MODE_DIR1 : instr_mode
+  (* DIRECT = operando offset word = [0xwwww] *)
+| MODE_DIR2 : instr_mode
+  (* INDEXED = nessun operando (implicito [X] *)
+| MODE_IX0  : instr_mode
+  (* INDEXED = operando offset relativo byte = [X+0x00bb] *)
+| MODE_IX1  : instr_mode
+  (* INDEXED = operando offset relativo word = [X+0xwwww] *)
+| MODE_IX2  : instr_mode
+  (* INDEXED = operando offset relativo byte = [SP+0x00bb] *)
+| MODE_SP1  : instr_mode
+  (* INDEXED = operando offset relativo word = [SP+0xwwww] *)
+| MODE_SP2  : instr_mode
+
+  (* DIRECT → DIRECT = carica da diretto/scrive su diretto *)
+| MODE_DIR1_to_DIR1 : instr_mode
+  (* IMMEDIATE → DIRECT = carica da immediato/scrive su diretto *)
+| MODE_IMM1_to_DIR1 : instr_mode
+  (* INDEXED++ → DIRECT = carica da [X]/scrive su diretto/H:X++ *)
+| MODE_IX0p_to_DIR1 : instr_mode
+  (* DIRECT → INDEXED++ = carica da diretto/scrive su [X]/H:X++ *)
+| MODE_DIR1_to_IX0p : instr_mode
+
+  (* INHERENT(A) + IMMEDIATE *)
+| MODE_INHA_and_IMM1 : instr_mode
+  (* INHERENT(X) + IMMEDIATE *)
+| MODE_INHX_and_IMM1 : instr_mode
+  (* IMMEDIATE + IMMEDIATE *)
+| MODE_IMM1_and_IMM1 : instr_mode
+  (* DIRECT + IMMEDIATE *)
+| MODE_DIR1_and_IMM1 : instr_mode
+  (* INDEXED + IMMEDIATE *)
+| MODE_IX0_and_IMM1  : instr_mode
+  (* INDEXED++ + IMMEDIATE *)
+| MODE_IX0p_and_IMM1 : instr_mode
+  (* INDEXED + IMMEDIATE *)
+| MODE_IX1_and_IMM1  : instr_mode
+  (* INDEXED++ + IMMEDIATE *)
+| MODE_IX1p_and_IMM1 : instr_mode
+  (* INDEXED + IMMEDIATE *)
+| MODE_SP1_and_IMM1  : instr_mode
+
+  (* DIRECT(mTNY) = operando offset byte(maschera scrittura implicita 3 bit) *)
+  (* ex: DIR3 e' carica b, scrivi b con n-simo bit modificato *)
+| MODE_DIRn          : oct → instr_mode
+  (* DIRECT(mTNY) + IMMEDIATE = operando offset byte(maschera lettura implicita 3 bit) *)
+  (*                            + operando valore immediato byte  *)
+  (* ex: DIR2_and_IMM1 e' carica b, carica imm, restituisci n-simo bit di b + imm *)
+| MODE_DIRn_and_IMM1 : oct → instr_mode
+  (* TINY = nessun operando (diretto implicito 4bit = [0x00000000:0000iiii]) *)
+| MODE_TNY           : exadecim → instr_mode
+  (* SHORT = nessun operando (diretto implicito 5bit = [0x00000000:000iiiii]) *)
+| MODE_SRT           : bitrigesim → instr_mode
+.
+
+ndefinition eq_im ≝
+λi1,i2:instr_mode.
+ match i1 with
+  [ MODE_INH ⇒ match i2 with [ MODE_INH ⇒ true | _ ⇒ false ]
+  | MODE_INHA ⇒ match i2 with [ MODE_INHA ⇒ true | _ ⇒ false ]
+  | MODE_INHX ⇒ match i2 with [ MODE_INHX ⇒ true | _ ⇒ false ]
+  | MODE_INHH ⇒ match i2 with [ MODE_INHH ⇒ true | _ ⇒ false ]
+  | MODE_INHX0ADD ⇒ match i2 with [ MODE_INHX0ADD ⇒ true | _ ⇒ false ]
+  | MODE_INHX1ADD ⇒ match i2 with [ MODE_INHX1ADD ⇒ true | _ ⇒ false ]
+  | MODE_INHX2ADD ⇒ match i2 with [ MODE_INHX2ADD ⇒ true | _ ⇒ false ]
+  | MODE_IMM1 ⇒ match i2 with [ MODE_IMM1 ⇒ true | _ ⇒ false ]
+  | MODE_IMM1EXT ⇒ match i2 with [ MODE_IMM1EXT ⇒ true | _ ⇒ false ]
+  | MODE_IMM2 ⇒ match i2 with [ MODE_IMM2 ⇒ true | _ ⇒ false ]
+  | MODE_DIR1 ⇒ match i2 with [ MODE_DIR1 ⇒ true | _ ⇒ false ]
+  | MODE_DIR2 ⇒ match i2 with [ MODE_DIR2 ⇒ true | _ ⇒ false ]
+  | MODE_IX0 ⇒ match i2 with [ MODE_IX0 ⇒ true | _ ⇒ false ]
+  | MODE_IX1 ⇒ match i2 with [ MODE_IX1 ⇒ true | _ ⇒ false ]
+  | MODE_IX2 ⇒ match i2 with [ MODE_IX2 ⇒ true | _ ⇒ false ]
+  | MODE_SP1 ⇒ match i2 with [ MODE_SP1 ⇒ true | _ ⇒ false ]
+  | MODE_SP2 ⇒ match i2 with [ MODE_SP2 ⇒ true | _ ⇒ false ]  
+  | MODE_DIR1_to_DIR1 ⇒ match i2 with [ MODE_DIR1_to_DIR1 ⇒ true | _ ⇒ false ]
+  | MODE_IMM1_to_DIR1 ⇒ match i2 with [ MODE_IMM1_to_DIR1 ⇒ true | _ ⇒ false ]
+  | MODE_IX0p_to_DIR1 ⇒ match i2 with [ MODE_IX0p_to_DIR1 ⇒ true | _ ⇒ false ]
+  | MODE_DIR1_to_IX0p ⇒ match i2 with [ MODE_DIR1_to_IX0p ⇒ true | _ ⇒ false ]
+  | MODE_INHA_and_IMM1 ⇒ match i2 with [ MODE_INHA_and_IMM1 ⇒ true | _ ⇒ false ]
+  | MODE_INHX_and_IMM1 ⇒ match i2 with [ MODE_INHX_and_IMM1 ⇒ true | _ ⇒ false ]
+  | MODE_IMM1_and_IMM1 ⇒ match i2 with [ MODE_IMM1_and_IMM1 ⇒ true | _ ⇒ false ]  
+  | MODE_DIR1_and_IMM1 ⇒ match i2 with [ MODE_DIR1_and_IMM1 ⇒ true | _ ⇒ false ]  
+  | MODE_IX0_and_IMM1 ⇒ match i2 with [ MODE_IX0_and_IMM1 ⇒ true | _ ⇒ false ]  
+  | MODE_IX0p_and_IMM1 ⇒ match i2 with [ MODE_IX0p_and_IMM1 ⇒ true | _ ⇒ false ]  
+  | MODE_IX1_and_IMM1 ⇒ match i2 with [ MODE_IX1_and_IMM1 ⇒ true | _ ⇒ false ]  
+  | MODE_IX1p_and_IMM1 ⇒ match i2 with [ MODE_IX1p_and_IMM1 ⇒ true | _ ⇒ false ]
+  | MODE_SP1_and_IMM1 ⇒ match i2 with [ MODE_SP1_and_IMM1 ⇒ true | _ ⇒ false ]
+  | MODE_DIRn n1 ⇒ match i2 with [ MODE_DIRn n2 ⇒ eq_oct n1 n2 | _ ⇒ false ]  
+  | MODE_DIRn_and_IMM1 n1 ⇒ match i2 with [ MODE_DIRn_and_IMM1 n2  ⇒ eq_oct n1 n2 | _ ⇒ false ]
+  | MODE_TNY e1 ⇒ match i2 with [ MODE_TNY e2 ⇒ eq_ex e1 e2 | _ ⇒ false ]  
+  | MODE_SRT t1 ⇒ match i2 with [ MODE_SRT t2 ⇒ eq_bit t1 t2 | _ ⇒ false ]  
+  ].        
+
+(* enumerazione delle istruzioni di tutte le ALU *)
+ninductive opcode: Type ≝
+  ADC    : opcode (* add with carry *)
+| ADD    : opcode (* add *)
+| AIS    : opcode (* add immediate to SP *)
+| AIX    : opcode (* add immediate to X *)
+| AND    : opcode (* and *)
+| ASL    : opcode (* aritmetic shift left *)
+| ASR    : opcode (* aritmetic shift right *)
+| BCC    : opcode (* branch if C=0 *)
+| BCLRn  : opcode (* clear bit n *)
+| BCS    : opcode (* branch if C=1 *)
+| BEQ    : opcode (* branch if Z=1 *)
+| BGE    : opcode (* branch if N⊙V=0 (great or equal) *)
+| BGND   : opcode (* !!background mode!! *)
+| BGT    : opcode (* branch if Z|N⊙V=0 clear (great) *)
+| BHCC   : opcode (* branch if H=0 *)
+| BHCS   : opcode (* branch if H=1 *)
+| BHI    : opcode (* branch if C|Z=0, (higher) *)
+| BIH    : opcode (* branch if nIRQ=1 *)
+| BIL    : opcode (* branch if nIRQ=0 *)
+| BIT    : opcode (* flag = and (bit test) *)
+| BLE    : opcode (* branch if Z|N⊙V=1 (less or equal) *)
+| BLS    : opcode (* branch if C|Z=1 (lower or same) *)
+| BLT    : opcode (* branch if N⊙1=1 (less) *)
+| BMC    : opcode (* branch if I=0 (interrupt mask clear) *)
+| BMI    : opcode (* branch if N=1 (minus) *)
+| BMS    : opcode (* branch if I=1 (interrupt mask set) *)
+| BNE    : opcode (* branch if Z=0 *)
+| BPL    : opcode (* branch if N=0 (plus) *)
+| BRA    : opcode (* branch always *)
+| BRCLRn : opcode (* branch if bit n clear *)
+| BRN    : opcode (* branch never (nop) *)
+| BRSETn : opcode (* branch if bit n set *)
+| BSETn  : opcode (* set bit n *)
+| BSR    : opcode (* branch to subroutine *)
+| CBEQA  : opcode (* compare (A) and BEQ *)
+| CBEQX  : opcode (* compare (X) and BEQ *)
+| CLC    : opcode (* C=0 *)
+| CLI    : opcode (* I=0 *)
+| CLR    : opcode (* operand=0 *)
+| CMP    : opcode (* flag = sub (compare A) *)
+| COM    : opcode (* not (1 complement) *)
+| CPHX   : opcode (* flag = sub (compare H:X) *)
+| CPX    : opcode (* flag = sub (compare X) *)
+| DAA    : opcode (* decimal adjust A *)
+| DBNZ   : opcode (* dec and BNE *)
+| DEC    : opcode (* operand=operand-1 (decrement) *)
+| DIV    : opcode (* div *)
+| EOR    : opcode (* xor *)
+| INC    : opcode (* operand=operand+1 (increment) *)
+| JMP    : opcode (* jmp word [operand] *)
+| JSR    : opcode (* jmp to subroutine *)
+| LDA    : opcode (* load in A *)
+| LDHX   : opcode (* load in H:X *)
+| LDX    : opcode (* load in X *)
+| LSR    : opcode (* logical shift right *)
+| MOV    : opcode (* move *)
+| MUL    : opcode (* mul *)
+| NEG    : opcode (* neg (2 complement) *)
+| NOP    : opcode (* nop *)
+| NSA    : opcode (* nibble swap A (al:ah <- ah:al) *)
+| ORA    : opcode (* or *)
+| PSHA   : opcode (* push A *)
+| PSHH   : opcode (* push H *)
+| PSHX   : opcode (* push X *)
+| PULA   : opcode (* pop A *)
+| PULH   : opcode (* pop H *)
+| PULX   : opcode (* pop X *)
+| ROL    : opcode (* rotate left *)
+| ROR    : opcode (* rotate right *)
+| RSP    : opcode (* reset SP (0x00FF) *)
+| RTI    : opcode (* return from interrupt *)
+| RTS    : opcode (* return from subroutine *)
+| SBC    : opcode (* sub with carry*)
+| SEC    : opcode (* C=1 *)
+| SEI    : opcode (* I=1 *)
+| SHA    : opcode (* swap spc_high,A *)
+| SLA    : opcode (* swap spc_low,A *)
+| STA    : opcode (* store from A *)
+| STHX   : opcode (* store from H:X *)
+| STOP   : opcode (* !!stop mode!! *)
+| STX    : opcode (* store from X *)
+| SUB    : opcode (* sub *)
+| SWI    : opcode (* software interrupt *)
+| TAP    : opcode (* flag=A (transfer A to process status byte *)
+| TAX    : opcode (* X=A (transfer A to X) *)
+| TPA    : opcode (* A=flag (transfer process status byte to A) *)
+| TST    : opcode (* flag = sub (test) *)
+| TSX    : opcode (* X:H=SP (transfer SP to H:X) *)
+| TXA    : opcode (* A=X (transfer X to A) *)
+| TXS    : opcode (* SP=X:H (transfer H:X to SP) *)
+| WAIT   : opcode (* !!wait mode!! *)
+.
+
+ndefinition eq_op ≝
+λop1,op2:opcode.
+ match op1 with
+  [ ADC ⇒ match op2 with [ ADC ⇒ true | _ ⇒ false ] | ADD ⇒ match op2 with [ ADD ⇒ true | _ ⇒ false ]
+  | AIS ⇒ match op2 with [ AIS ⇒ true | _ ⇒ false ] | AIX ⇒ match op2 with [ AIX ⇒ true | _ ⇒ false ]
+  | AND ⇒ match op2 with [ AND ⇒ true | _ ⇒ false ] | ASL ⇒ match op2 with [ ASL ⇒ true | _ ⇒ false ]
+  | ASR ⇒ match op2 with [ ASR ⇒ true | _ ⇒ false ] | BCC ⇒ match op2 with [ BCC ⇒ true | _ ⇒ false ]
+  | BCLRn ⇒ match op2 with [ BCLRn ⇒ true | _ ⇒ false ] | BCS ⇒ match op2 with [ BCS ⇒ true | _ ⇒ false ]
+  | BEQ ⇒ match op2 with [ BEQ ⇒ true | _ ⇒ false ] | BGE ⇒ match op2 with [ BGE ⇒ true | _ ⇒ false ]
+  | BGND ⇒ match op2 with [ BGND ⇒ true | _ ⇒ false ] | BGT ⇒ match op2 with [ BGT ⇒ true | _ ⇒ false ]
+  | BHCC ⇒ match op2 with [ BHCC ⇒ true | _ ⇒ false ] | BHCS ⇒ match op2 with [ BHCS ⇒ true | _ ⇒ false ]
+  | BHI ⇒ match op2 with [ BHI ⇒ true | _ ⇒ false ] | BIH ⇒ match op2 with [ BIH ⇒ true | _ ⇒ false ]
+  | BIL ⇒ match op2 with [ BIL ⇒ true | _ ⇒ false ] | BIT ⇒ match op2 with [ BIT ⇒ true | _ ⇒ false ]
+  | BLE ⇒ match op2 with [ BLE ⇒ true | _ ⇒ false ] | BLS ⇒ match op2 with [ BLS ⇒ true | _ ⇒ false ]
+  | BLT ⇒ match op2 with [ BLT ⇒ true | _ ⇒ false ] | BMC ⇒ match op2 with [ BMC ⇒ true | _ ⇒ false ]
+  | BMI ⇒ match op2 with [ BMI ⇒ true | _ ⇒ false ] | BMS ⇒ match op2 with [ BMS ⇒ true | _ ⇒ false ]
+  | BNE ⇒ match op2 with [ BNE ⇒ true | _ ⇒ false ] | BPL ⇒ match op2 with [ BPL ⇒ true | _ ⇒ false ]
+  | BRA ⇒ match op2 with [ BRA ⇒ true | _ ⇒ false ] | BRCLRn ⇒ match op2 with [ BRCLRn ⇒ true | _ ⇒ false ]
+  | BRN ⇒ match op2 with [ BRN ⇒ true | _ ⇒ false ] | BRSETn ⇒ match op2 with [ BRSETn ⇒ true | _ ⇒ false ]
+  | BSETn ⇒ match op2 with [ BSETn ⇒ true | _ ⇒ false ] | BSR ⇒ match op2 with [ BSR ⇒ true | _ ⇒ false ]
+  | CBEQA ⇒ match op2 with [ CBEQA ⇒ true | _ ⇒ false ] | CBEQX ⇒ match op2 with [ CBEQX ⇒ true | _ ⇒ false ]
+  | CLC ⇒ match op2 with [ CLC ⇒ true | _ ⇒ false ] | CLI ⇒ match op2 with [ CLI ⇒ true | _ ⇒ false ]
+  | CLR ⇒ match op2 with [ CLR ⇒ true | _ ⇒ false ] | CMP ⇒ match op2 with [ CMP ⇒ true | _ ⇒ false ]
+  | COM ⇒ match op2 with [ COM ⇒ true | _ ⇒ false ] | CPHX ⇒ match op2 with [ CPHX ⇒ true | _ ⇒ false ]
+  | CPX ⇒ match op2 with [ CPX ⇒ true | _ ⇒ false ] | DAA ⇒ match op2 with [ DAA ⇒ true | _ ⇒ false ]
+  | DBNZ ⇒ match op2 with [ DBNZ ⇒ true | _ ⇒ false ] | DEC ⇒ match op2 with [ DEC ⇒ true | _ ⇒ false ]
+  | DIV ⇒ match op2 with [ DIV ⇒ true | _ ⇒ false ] | EOR ⇒ match op2 with [ EOR ⇒ true | _ ⇒ false ]
+  | INC ⇒ match op2 with [ INC ⇒ true | _ ⇒ false ] | JMP ⇒ match op2 with [ JMP ⇒ true | _ ⇒ false ]
+  | JSR ⇒ match op2 with [ JSR ⇒ true | _ ⇒ false ] | LDA ⇒ match op2 with [ LDA ⇒ true | _ ⇒ false ]
+  | LDHX ⇒ match op2 with [ LDHX ⇒ true | _ ⇒ false ] | LDX ⇒ match op2 with [ LDX ⇒ true | _ ⇒ false ]
+  | LSR ⇒ match op2 with [ LSR ⇒ true | _ ⇒ false ] | MOV ⇒ match op2 with [ MOV ⇒ true | _ ⇒ false ]
+  | MUL ⇒ match op2 with [ MUL ⇒ true | _ ⇒ false ] | NEG ⇒ match op2 with [ NEG ⇒ true | _ ⇒ false ]
+  | NOP ⇒ match op2 with [ NOP ⇒ true | _ ⇒ false ] | NSA ⇒ match op2 with [ NSA ⇒ true | _ ⇒ false ]
+  | ORA ⇒ match op2 with [ ORA ⇒ true | _ ⇒ false ] | PSHA ⇒ match op2 with [ PSHA ⇒ true | _ ⇒ false ]
+  | PSHH ⇒ match op2 with [ PSHH ⇒ true | _ ⇒ false ] | PSHX ⇒ match op2 with [ PSHX ⇒ true | _ ⇒ false ]
+  | PULA ⇒ match op2 with [ PULA ⇒ true | _ ⇒ false ] | PULH ⇒ match op2 with [ PULH ⇒ true | _ ⇒ false ]
+  | PULX ⇒ match op2 with [ PULX ⇒ true | _ ⇒ false ] | ROL ⇒ match op2 with [ ROL ⇒ true | _ ⇒ false ]
+  | ROR ⇒ match op2 with [ ROR ⇒ true | _ ⇒ false ] | RSP ⇒ match op2 with [ RSP ⇒ true | _ ⇒ false ]
+  | RTI ⇒ match op2 with [ RTI ⇒ true | _ ⇒ false ] | RTS ⇒ match op2 with [ RTS ⇒ true | _ ⇒ false ]
+  | SBC ⇒ match op2 with [ SBC ⇒ true | _ ⇒ false ] | SEC ⇒ match op2 with [ SEC ⇒ true | _ ⇒ false ]
+  | SEI ⇒ match op2 with [ SEI ⇒ true | _ ⇒ false ] | SHA ⇒ match op2 with [ SHA ⇒ true | _ ⇒ false ]
+  | SLA ⇒ match op2 with [ SLA ⇒ true | _ ⇒ false ] | STA ⇒ match op2 with [ STA ⇒ true | _ ⇒ false ]
+  | STHX ⇒ match op2 with [ STHX ⇒ true | _ ⇒ false ] | STOP ⇒ match op2 with [ STOP ⇒ true | _ ⇒ false ]
+  | STX ⇒ match op2 with [ STX ⇒ true | _ ⇒ false ] | SUB ⇒ match op2 with [ SUB ⇒ true | _ ⇒ false ]
+  | SWI ⇒ match op2 with [ SWI ⇒ true | _ ⇒ false ] | TAP ⇒ match op2 with [ TAP ⇒ true | _ ⇒ false ]
+  | TAX ⇒ match op2 with [ TAX ⇒ true | _ ⇒ false ] | TPA ⇒ match op2 with [ TPA ⇒ true | _ ⇒ false ]
+  | TST ⇒ match op2 with [ TST ⇒ true | _ ⇒ false ] | TSX ⇒ match op2 with [ TSX ⇒ true | _ ⇒ false ]
+  | TXA ⇒ match op2 with [ TXA ⇒ true | _ ⇒ false ] | TXS ⇒ match op2 with [ TXS ⇒ true | _ ⇒ false ]
+  | WAIT ⇒ match op2 with [ WAIT ⇒ true | _ ⇒ false ]
+  ].
+
+(* introduzione di un tipo opcode dipendente dall'mcu_type (phantom type) *)
+ninductive any_opcode (m:mcu_type) : Type ≝
+ anyOP : opcode → any_opcode m.
+
+ndefinition eq_anyop ≝
+λm:mcu_type.λop1,op2:any_opcode m.
+ match op1 with [ anyOP op1' ⇒
+  match op2 with [ anyOP op2' ⇒
+   eq_op op1' op2' ]].
+
+(* raggruppamento di byte e word in un tipo unico *)
+ninductive byte8_or_word16 : Type ≝
+  Byte: byte8  → byte8_or_word16
+| Word: word16 → byte8_or_word16.
+
+ndefinition eq_b8w16 ≝
+λbw1,bw2:byte8_or_word16.
+ match bw1 with
+  [ Byte b1 ⇒ match bw2 with [ Byte b2 ⇒ eq_b8 b1 b2 | Word _ ⇒ false ]
+  | Word w1 ⇒ match bw2 with [ Byte _ ⇒ false | Word w2 ⇒ eq_w16 w1 w2 ]
+  ].
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas.ma b/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas.ma
new file mode 100755 (executable)
index 0000000..ebaf9ae
--- /dev/null
@@ -0,0 +1,101 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "num/bool_lemmas.ma".
+include "freescale/opcode_base.ma".
+
+(* ********************************************** *)
+(* MATTONI BASE PER DEFINIRE LE TABELLE DELLE MCU *)
+(* ********************************************** *)
+
+ndefinition mcu_type_destruct_aux ≝
+Πm1,m2:mcu_type.ΠP:Prop.m1 = m2 →
+ match eq_mcutype m1 m2 with [ true ⇒ P → P | false ⇒ P ].
+
+ndefinition mcutype_destruct : mcu_type_destruct_aux.
+ #m1; #m2; #P; #H;
+ nrewrite < H;
+ nelim m1;
+ nnormalize;
+ napply (λx.x).
+nqed.
+
+nlemma symmetric_eqmcutype : symmetricT mcu_type bool eq_mcutype.
+ #m1; #m2;
+ nelim m1;
+ nelim m2;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma eqmcutype_to_eq : ∀m1,m2:mcu_type.(eq_mcutype m1 m2 = true) → (m1 = m2).
+ #m1; #m2;
+ ncases m1;
+ ncases m2;
+ nnormalize;
+ ##[ ##1,6,11,16: #H; napply refl_eq
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eq_to_eqmcutype : ∀m1,m2.m1 = m2 → eq_mcutype m1 m2 = true.
+ #m1; #m2;
+ ncases m1;
+ ncases m2;
+ nnormalize;
+ ##[ ##1,6,11,16: #H; napply refl_eq
+ ##| ##*: #H; napply (mcutype_destruct … H)
+ ##]
+nqed.
+
+nlemma decidable_mcutype : ∀x,y:mcu_type.decidable (x = y).
+ #x; #y;
+ nnormalize;
+ nelim x;
+ nelim y;
+ ##[ ##1,6,11,16: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq
+ ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …);
+          nnormalize; #H;
+          napply False_ind;
+          napply (mcutype_destruct … H)
+ ##]
+nqed.
+
+nlemma neqmcutype_to_neq : ∀m1,m2:mcu_type.(eq_mcutype m1 m2 = false) → (m1 ≠ m2).
+ #m1; #m2;
+ ncases m1;
+ ncases m2;
+ nnormalize;
+ ##[ ##1,6,11,16: #H; napply (bool_destruct … H)
+ ##| ##*: #H; #H1; napply (mcutype_destruct … H1)
+ ##]
+nqed.
+
+nlemma neq_to_neqmcutype : ∀m1,m2.m1 ≠ m2 → eq_mcutype m1 m2 = false.
+ #m1; #m2;
+ ncases m1;
+ ncases m2;
+ nnormalize;
+ ##[ ##1,6,11,16: #H; nelim (H (refl_eq …))
+ ##| ##*: #H; napply refl_eq
+ ##]
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas1.ma b/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas1.ma
new file mode 100755 (executable)
index 0000000..78a284c
--- /dev/null
@@ -0,0 +1,208 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/opcode_base_lemmas_opcode.ma".
+include "freescale/opcode_base_lemmas_instrmode.ma".
+include "num/word16_lemmas.ma".
+
+(* ********************************************** *)
+(* MATTONI BASE PER DEFINIRE LE TABELLE DELLE MCU *)
+(* ********************************************** *)
+
+nlemma anyop_destruct : ∀m.∀x1,x2:opcode.anyOP m x1 = anyOP m x2 → x1 = x2.
+ #m; #x1; #x2; #H;
+ nchange with (match anyOP m x2 with [ anyOP a ⇒ x1 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma symmetric_eqanyop : ∀m.∀op1,op2:any_opcode m.eq_anyop m op1 op2 = eq_anyop m op2 op1.
+ #m;
+ ncases m;
+ #op1; #op2;
+ ncases op1;
+ #x1;
+ ncases op2;
+ #x2;
+ nchange with (eq_op x1 x2 = eq_op x2 x1);
+ nrewrite > (symmetric_eqop x1 x2);
+ napply refl_eq.
+nqed.
+
+nlemma eqanyop_to_eq : ∀m.∀op1,op2:any_opcode m.eq_anyop m op1 op2 = true → op1 = op2.
+ #m;
+ ncases m;
+ #op1; #op2;
+ ncases op1;
+ #x1;
+ ncases op2;
+ #x2;
+ nchange with ((eq_op x1 x2 = true) → ?);
+ #H;
+ nrewrite > (eqop_to_eq … H);
+ napply refl_eq.
+nqed.
+
+nlemma eq_to_eqanyop : ∀m.∀op1,op2:any_opcode m.op1 = op2 → eq_anyop m op1 op2 = true.
+ #m;
+ ncases m;
+ #op1; #op2;
+ ncases op1;
+ #p1;
+ ncases op2;
+ #p2; #H;
+ nrewrite > (anyop_destruct … H);
+ nchange with (eq_op p2 p2 = true);
+ nrewrite > (eq_to_eqop p2 p2 (refl_eq opcode p2));
+ napply refl_eq.
+nqed.
+
+nlemma decidable_anyop : ∀m.∀x,y:any_opcode m.decidable (x = y).
+ #m; #x; nelim x; #e1; #y; nelim y; #e2;
+ nnormalize;
+ napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_op e1 e2) …);
+ ##[ ##2: #H; napply (or2_intro2 (? = ?) (? ≠ ?) … ); nnormalize; #H1; napply (H (anyop_destruct m … H1))
+ ##| ##1: #H; nrewrite > H; napply (or2_intro1 (? = ?) (? ≠ ?) (refl_eq …))
+ ##]
+nqed.
+
+nlemma neqanyop_to_neq : ∀m.∀op1,op2:any_opcode m.(eq_anyop m op1 op2 = false) → (op1 ≠ op2).
+ #m; #op1; nelim op1; #e1; #op2; nelim op2; #e2;
+ nchange with (((eq_op e1 e2) = false) → ?);
+ #H;
+ nnormalize;
+ #H1;
+ napply (neqop_to_neq … H);
+ napply (anyop_destruct m … H1).
+nqed.
+
+nlemma neq_to_neqanyop : ∀m.∀op1,op2:any_opcode m.op1 ≠ op2 → eq_anyop m op1 op2 = false.
+ #m; #op1; nelim op1; #e1; #op2; nelim op2; #e2;
+ #H; nchange with ((eq_op e1 e2) = false);
+ napply (neq_to_neqop e1 e2 ?);
+ nnormalize;
+ #H1;
+ nrewrite > H1 in H:(%); #H;
+ napply (H (refl_eq …)).
+nqed.
+
+nlemma b8w16_destruct_b8_b8 : ∀x1,x2.Byte x1 = Byte x2 → x1 = x2.
+ #x1; #x2; #H;
+ nchange with (match Byte x2 with [ Byte a ⇒ x1 = a | Word _ ⇒ False ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma b8w16_destruct_w16_w16 : ∀x1,x2.Word x1 = Word x2 → x1 = x2.
+ #x1; #x2; #H;
+ nchange with (match Word x2 with [ Word a ⇒ x1 = a | Byte _ ⇒ False ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma b8w16_destruct_b8_w16 : ∀x1,x2.Byte x1 = Word x2 → False.
+ #x1; #x2; #H;
+ nchange with (match Byte x1 with [ Word _ ⇒ True | Byte a ⇒ False ]);
+ nrewrite > H;
+ nnormalize;
+ napply I.
+nqed.
+
+nlemma b8w16_destruct_w16_b8 : ∀x1,x2.Word x1 = Byte x2 → False.
+ #x1; #x2; #H;
+ nchange with (match Word x1 with [ Word a ⇒ False | Byte _ ⇒ True ]);
+ nrewrite > H;
+ nnormalize;
+ napply I.
+nqed.
+
+nlemma symmetric_eqb8w16 : ∀bw1,bw2.eq_b8w16 bw1 bw2 = eq_b8w16 bw2 bw1.
+ #bw1; #bw2;
+ ncases bw1;
+ #x1;
+ ncases bw2;
+ #x2;
+ ##[ ##1: nchange with (eq_b8 x1 x2 = eq_b8 x2 x1);
+          nrewrite > (symmetric_eqb8 x1 x2);
+          napply refl_eq
+ ##| ##2,3: nnormalize; napply refl_eq
+ ##| ##4: nchange with (eq_w16 x1 x2 = eq_w16 x2 x1);
+          nrewrite > (symmetric_eqw16 x1 x2);
+          napply refl_eq
+ ##]
+nqed.
+
+nlemma eqb8w16_to_eq : ∀bw1,bw2.eq_b8w16 bw1 bw2 = true → bw1 = bw2.
+ #bw1; #bw2;
+ ncases bw1; #e1; ncases bw2; #e2;
+ ##[ ##1: nchange with ((eq_b8 e1 e2 = true) → ?); #H; nrewrite > (eqb8_to_eq … H); napply refl_eq
+ ##| ##2,3: nnormalize; #H; napply (bool_destruct … H)
+ ##| ##4: nchange with ((eq_w16 e1 e2 = true) → ?); #H; nrewrite > (eqw16_to_eq … H); napply refl_eq
+ ##]
+nqed.
+
+nlemma eq_to_eqb8w16 : ∀bw1,bw2.bw1 = bw2 → eq_b8w16 bw1 bw2 = true.
+ #bw1; #bw2;
+ ncases bw1; #e1; ncases bw2; #e2;
+ ##[ ##1: #H; nrewrite > (b8w16_destruct_b8_b8 … H);
+          nchange with (eq_b8 e2 e2 = true);
+          nrewrite > (eq_to_eqb8 e2 e2 (refl_eq …));
+          napply refl_eq
+ ##| ##2: #H; nelim (b8w16_destruct_b8_w16 … H)
+ ##| ##3: #H; nelim (b8w16_destruct_w16_b8 … H);
+ ##| ##4: #H; nrewrite > (b8w16_destruct_w16_w16 … H);
+          nchange with (eq_w16 e2 e2 = true);
+          nrewrite > (eq_to_eqw16 e2 e2 (refl_eq …));
+          napply refl_eq
+ ##]
+nqed.
+
+nlemma decidable_b8w16 : ∀x,y:byte8_or_word16.decidable (x = y).
+ #x; nelim x; #e1; #y; nelim y; #e2;
+ nnormalize;
+ ##[ ##1: napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_b8 e1 e2) …);
+          ##[ ##2: #H; napply (or2_intro2 (? = ?) (? ≠ ?) … ); nnormalize; #H1; napply (H (b8w16_destruct_b8_b8 … H1))
+          ##| ##1: #H; nrewrite > H; napply (or2_intro1 (? = ?) (? ≠ ?) (refl_eq …))
+          ##]
+ ##| ##2: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply (b8w16_destruct_b8_w16 … H)
+ ##| ##3: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply (b8w16_destruct_w16_b8 … H)
+ ##| ##4: napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_w16 e1 e2) …);
+          ##[ ##2: #H; napply (or2_intro2 (? = ?) (? ≠ ?) … ); nnormalize; #H1; napply (H (b8w16_destruct_w16_w16 … H1))
+          ##| ##1: #H; nrewrite > H; napply (or2_intro1 (? = ?) (? ≠ ?) (refl_eq …))
+          ##]
+ ##]
+nqed.
+
+nlemma neqb8w16_to_neq : ∀bw1,bw2.eq_b8w16 bw1 bw2 = false → bw1 ≠ bw2.
+ #bw1; #bw2;
+ ncases bw1; #e1; ncases bw2; #e2;
+ ##[ ##1: nchange with ((eq_b8 e1 e2 = false) → ?); #H;
+          nnormalize; #H1; napply (neqb8_to_neq … H); napply (b8w16_destruct_b8_b8 … H1)
+ ##| ##2: nnormalize; #H; #H1; napply (b8w16_destruct_b8_w16 … H1)
+ ##| ##3: nnormalize; #H; #H1; napply (b8w16_destruct_w16_b8 … H1)
+ ##| ##4: nchange with ((eq_w16 e1 e2 = false) → ?); #H;
+          nnormalize; #H1; napply (neqw16_to_neq … H); napply (b8w16_destruct_w16_w16 … H1)
+ ##]
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_instrmode.ma b/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_instrmode.ma
new file mode 100755 (executable)
index 0000000..26d0bb7
--- /dev/null
@@ -0,0 +1,425 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "num/oct_lemmas.ma".
+include "num/bitrigesim_lemmas.ma".
+include "num/exadecim_lemmas.ma".
+include "freescale/opcode_base.ma".
+
+(* ********************************************** *)
+(* MATTONI BASE PER DEFINIRE LE TABELLE DELLE MCU *)
+(* ********************************************** *)
+
+nlemma instrmode_destruct_MODE_DIRn : ∀n1,n2.MODE_DIRn n1 = MODE_DIRn n2 → n1 = n2.
+ #n1; #n2; #H;
+ nchange with (match MODE_DIRn n2 with [ MODE_DIRn a ⇒ n1 = a | _ ⇒ False ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma instrmode_destruct_MODE_DIRn_and_IMM1 : ∀n1,n2.MODE_DIRn_and_IMM1 n1 = MODE_DIRn_and_IMM1 n2 → n1 = n2.
+ #n1; #n2; #H;
+ nchange with (match MODE_DIRn_and_IMM1 n2 with [ MODE_DIRn_and_IMM1 a ⇒ n1 = a | _ ⇒ False ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma instrmode_destruct_MODE_TNY : ∀e1,e2.MODE_TNY e1 = MODE_TNY e2 → e1 = e2.
+ #e1; #e2; #H;
+ nchange with (match MODE_TNY e2 with [ MODE_TNY a ⇒ e1 = a | _ ⇒ False ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma instrmode_destruct_MODE_SRT : ∀t1,t2.MODE_SRT t1 = MODE_SRT t2 → t1 = t2.
+ #t1; #t2; #H;
+ nchange with (match MODE_SRT t2 with [ MODE_SRT a ⇒ t1 = a | _ ⇒ False ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+ndefinition instrmode_destruct_aux ≝
+Πi1,i2.ΠP:Prop.i1 = i2 →
+ match eq_im i1 i2 with [ true ⇒ P → P | false ⇒ P ].
+
+ndefinition instrmode_destruct : instrmode_destruct_aux.
+ #t1; #t2; #P; #H;
+ nrewrite < H;
+ nelim t1;
+ nnormalize;
+ ##[ ##31,32,33,34: #sub; nelim sub; nnormalize ##]
+ napply (λx.x).
+nqed.
+
+nlemma eq_to_eqim : ∀n1,n2.n1 = n2 → eq_im n1 n2 = true.
+ #n1; #n2; #H;
+ nrewrite > H;
+ nelim n2;
+ ##[ ##31,32: #n; nchange with (eq_oct n n = true); napply (eq_to_eqoct n n (refl_eq …))
+ ##| ##33: #n; nchange with (eq_ex n n = true); napply (eq_to_eqex n n (refl_eq …))
+ ##| ##34: #n; nchange with (eq_bit n n = true); napply (eq_to_eqbit n n (refl_eq …))
+ ##| ##*: nnormalize; napply refl_eq
+ ##]
+nqed.
+
+nlemma neqim_to_neq : ∀n1,n2.eq_im n1 n2 = false → n1 ≠ n2.
+ #n1; #n2; #H;
+ napply (not_to_not (n1 = n2) (eq_im n1 n2 = true) …);
+ ##[ ##1: napply (eq_to_eqim n1 n2)
+ ##| ##2: napply (eqfalse_to_neqtrue … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq1 : ∀i2.eq_im MODE_INH i2 = true → MODE_INH = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##1: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq2 : ∀i2.eq_im MODE_INHA i2 = true → MODE_INHA = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##2: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq3 : ∀i2.eq_im MODE_INHX i2 = true → MODE_INHX = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##3: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq4 : ∀i2.eq_im MODE_INHH i2 = true → MODE_INHH = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##4: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq5 : ∀i2.eq_im MODE_INHX0ADD i2 = true → MODE_INHX0ADD = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##5: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq6 : ∀i2.eq_im MODE_INHX1ADD i2 = true → MODE_INHX1ADD = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##6: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq7 : ∀i2.eq_im MODE_INHX2ADD i2 = true → MODE_INHX2ADD = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##7: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq8 : ∀i2.eq_im MODE_IMM1 i2 = true → MODE_IMM1 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##8: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq9 : ∀i2.eq_im MODE_IMM1EXT i2 = true → MODE_IMM1EXT = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##9: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq10 : ∀i2.eq_im MODE_IMM2 i2 = true → MODE_IMM2 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##10: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq11 : ∀i2.eq_im MODE_DIR1 i2 = true → MODE_DIR1 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##11: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq12 : ∀i2.eq_im MODE_DIR2 i2 = true → MODE_DIR2 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##12: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq13 : ∀i2.eq_im MODE_IX0 i2 = true → MODE_IX0 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##13: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq14 : ∀i2.eq_im MODE_IX1 i2 = true → MODE_IX1 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##14: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq15 : ∀i2.eq_im MODE_IX2 i2 = true → MODE_IX2 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##15: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq16 : ∀i2.eq_im MODE_SP1 i2 = true → MODE_SP1 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##16: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq17 : ∀i2.eq_im MODE_SP2 i2 = true → MODE_SP2 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##17: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq18 : ∀i2.eq_im MODE_DIR1_to_DIR1 i2 = true → MODE_DIR1_to_DIR1 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##18: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq19 : ∀i2.eq_im MODE_IMM1_to_DIR1 i2 = true → MODE_IMM1_to_DIR1 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##19: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq20 : ∀i2.eq_im MODE_IX0p_to_DIR1 i2 = true → MODE_IX0p_to_DIR1 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##20: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq21 : ∀i2.eq_im MODE_DIR1_to_IX0p i2 = true → MODE_DIR1_to_IX0p = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##21: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq22 : ∀i2.eq_im MODE_INHA_and_IMM1 i2 = true → MODE_INHA_and_IMM1 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##22: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq23 : ∀i2.eq_im MODE_INHX_and_IMM1 i2 = true → MODE_INHX_and_IMM1 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##23: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq24 : ∀i2.eq_im MODE_IMM1_and_IMM1 i2 = true → MODE_IMM1_and_IMM1 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##24: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq25 : ∀i2.eq_im MODE_DIR1_and_IMM1 i2 = true → MODE_DIR1_and_IMM1 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##25: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq26 : ∀i2.eq_im MODE_IX0_and_IMM1 i2 = true → MODE_IX0_and_IMM1 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##26: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq27 : ∀i2.eq_im MODE_IX0p_and_IMM1 i2 = true → MODE_IX0p_and_IMM1 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##27: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq28 : ∀i2.eq_im MODE_IX1_and_IMM1 i2 = true → MODE_IX1_and_IMM1 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##28: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq29 : ∀i2.eq_im MODE_IX1p_and_IMM1 i2 = true → MODE_IX1p_and_IMM1 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##29: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq30 : ∀i2.eq_im MODE_SP1_and_IMM1 i2 = true → MODE_SP1_and_IMM1 = i2.
+ #i2; ncases i2; nnormalize;
+ ##[ ##30: #H; napply refl_eq
+ ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H)
+ ##| ##*: #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq31 : ∀n1,i2.eq_im (MODE_DIRn n1) i2 = true → MODE_DIRn n1 = i2.
+ #n1; #i2; ncases i2;
+ ##[ ##31: #n2; #H;
+     nchange in H:(%) with (eq_oct n1 n2 = true);
+     nrewrite > (eqoct_to_eq … H);
+     napply refl_eq
+ ##| ##32,33,34: nnormalize; #n2; #H; napply (bool_destruct … H)
+ ##| ##*: nnormalize; #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq32 : ∀n1,i2.eq_im (MODE_DIRn_and_IMM1 n1) i2 = true → MODE_DIRn_and_IMM1 n1 = i2.
+ #n1; #i2; ncases i2;
+ ##[ ##32: #n2; #H;
+     nchange in H:(%) with (eq_oct n1 n2 = true);
+     nrewrite > (eqoct_to_eq … H);
+     napply refl_eq
+ ##| ##31,33,34: nnormalize; #n2; #H; napply (bool_destruct … H)
+ ##| ##*: nnormalize; #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq33 : ∀n1,i2.eq_im (MODE_TNY n1) i2 = true → MODE_TNY n1 = i2.
+ #n1; #i2; ncases i2;
+ ##[ ##33: #n2; #H;
+     nchange in H:(%) with (eq_ex n1 n2 = true);
+     nrewrite > (eqex_to_eq … H);
+     napply refl_eq
+ ##| ##31,32,34: nnormalize; #n2; #H; napply (bool_destruct … H)
+ ##| ##*: nnormalize; #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq34 : ∀n1,i2.eq_im (MODE_SRT n1) i2 = true → MODE_SRT n1 = i2.
+ #n1; #i2; ncases i2;
+ ##[ ##34: #n2; #H;
+     nchange in H:(%) with (eq_bit n1 n2 = true);
+     nrewrite > (eqbit_to_eq … H);
+     napply refl_eq
+ ##| ##31,32,33: nnormalize; #n2; #H; napply (bool_destruct … H)
+ ##| ##*: nnormalize; #H; napply (bool_destruct … H)
+ ##]
+nqed.
+
+nlemma eqim_to_eq : ∀i1,i2.eq_im i1 i2 = true → i1 = i2.
+ #i1; ncases i1;
+ ##[ ##1: napply eqim_to_eq1 ##| ##2: napply eqim_to_eq2
+ ##| ##3: napply eqim_to_eq3 ##| ##4: napply eqim_to_eq4
+ ##| ##5: napply eqim_to_eq5 ##| ##6: napply eqim_to_eq6
+ ##| ##7: napply eqim_to_eq7 ##| ##8: napply eqim_to_eq8
+ ##| ##9: napply eqim_to_eq9 ##| ##10: napply eqim_to_eq10
+ ##| ##11: napply eqim_to_eq11 ##| ##12: napply eqim_to_eq12
+ ##| ##13: napply eqim_to_eq13 ##| ##14: napply eqim_to_eq14
+ ##| ##15: napply eqim_to_eq15 ##| ##16: napply eqim_to_eq16
+ ##| ##17: napply eqim_to_eq17 ##| ##18: napply eqim_to_eq18
+ ##| ##19: napply eqim_to_eq19 ##| ##20: napply eqim_to_eq20
+ ##| ##21: napply eqim_to_eq21 ##| ##22: napply eqim_to_eq22
+ ##| ##23: napply eqim_to_eq23 ##| ##24: napply eqim_to_eq24
+ ##| ##25: napply eqim_to_eq25 ##| ##26: napply eqim_to_eq26
+ ##| ##27: napply eqim_to_eq27 ##| ##28: napply eqim_to_eq28
+ ##| ##29: napply eqim_to_eq29 ##| ##30: napply eqim_to_eq30
+ ##| ##31: napply eqim_to_eq31 ##| ##32: napply eqim_to_eq32
+ ##| ##33: napply eqim_to_eq33 ##| ##34: napply eqim_to_eq34
+ ##]
+nqed.
+
+nlemma neq_to_neqim : ∀n1,n2.n1 ≠ n2 → eq_im n1 n2 = false.
+ #n1; #n2; #H;
+ napply (neqtrue_to_eqfalse (eq_im n1 n2));
+ napply (not_to_not (eq_im n1 n2 = true) (n1 = n2) ? H);
+ napply (eqim_to_eq n1 n2).
+nqed.
+
+nlemma decidable_im : ∀x,y:instr_mode.decidable (x = y).
+ #x; #y; nnormalize;
+ napply (or2_elim (eq_im x y = true) (eq_im x y = false) ? (decidable_bexpr ?));
+ ##[ ##1: #H; napply (or2_intro1 (x = y) (x ≠ y) (eqim_to_eq … H))
+ ##| ##2: #H; napply (or2_intro2 (x = y) (x ≠ y) (neqim_to_neq … H))
+ ##]
+nqed.
+
+nlemma symmetric_eqim : symmetricT instr_mode bool eq_im.
+ #n1; #n2;
+ napply (or2_elim (n1 = n2) (n1 ≠ n2) ? (decidable_im n1 n2));
+ ##[ ##1: #H; nrewrite > H; napply refl_eq
+ ##| ##2: #H; nrewrite > (neq_to_neqim n1 n2 H);
+          napply (symmetric_eq ? (eq_im n2 n1) false);
+          napply (neq_to_neqim n2 n1 (symmetric_neq ? n1 n2 H))
+ ##]
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_opcode.ma b/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_opcode.ma
new file mode 100755 (executable)
index 0000000..d91fa05
--- /dev/null
@@ -0,0 +1,200 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "num/bool_lemmas.ma".
+include "freescale/opcode_base.ma".
+
+(* ********************************************** *)
+(* MATTONI BASE PER DEFINIRE LE TABELLE DELLE MCU *)
+(* ********************************************** *)
+
+ndefinition opcode_destruct_aux ≝
+Πop1,op2.ΠP:Prop.op1 = op2 →
+ match eq_op op1 op2 with [ true ⇒ P → P | false ⇒ P ].
+
+ndefinition opcode_destruct : opcode_destruct_aux.
+ #op1; #op2; #P; #H;
+ nrewrite < H;
+ nelim op1;
+ nnormalize;
+ napply (λx.x).
+nqed.
+
+nlemma eq_to_eqop : ∀n1,n2.n1 = n2 → eq_op n1 n2 = true.
+ #n1; #n2; #H;
+ nrewrite > H;
+ nelim n2;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma neqop_to_neq : ∀n1,n2.eq_op n1 n2 = false → n1 ≠ n2.
+ #n1; #n2; #H;
+ napply (not_to_not (n1 = n2) (eq_op n1 n2 = true) …);
+ ##[ ##1: napply (eq_to_eqop n1 n2)
+ ##| ##2: napply (eqfalse_to_neqtrue … H)
+ ##]
+nqed.
+
+nlemma eqop_to_eq1 : ∀op2.eq_op ADC op2 = true → ADC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##1: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq2 : ∀op2.eq_op ADD op2 = true → ADD = op2. #op2; ncases op2; nnormalize; #H; ##[ ##2: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq3 : ∀op2.eq_op AIS op2 = true → AIS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##3: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq4 : ∀op2.eq_op AIX op2 = true → AIX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##4: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq5 : ∀op2.eq_op AND op2 = true → AND = op2. #op2; ncases op2; nnormalize; #H; ##[ ##5: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq6 : ∀op2.eq_op ASL op2 = true → ASL = op2. #op2; ncases op2; nnormalize; #H; ##[ ##6: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq7 : ∀op2.eq_op ASR op2 = true → ASR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##7: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq8 : ∀op2.eq_op BCC op2 = true → BCC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##8: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq9 : ∀op2.eq_op BCLRn op2 = true → BCLRn = op2. #op2; ncases op2; nnormalize; #H; ##[ ##9: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq10 : ∀op2.eq_op BCS op2 = true → BCS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##10: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq11 : ∀op2.eq_op BEQ op2 = true → BEQ = op2. #op2; ncases op2; nnormalize; #H; ##[ ##11: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq12 : ∀op2.eq_op BGE op2 = true → BGE = op2. #op2; ncases op2; nnormalize; #H; ##[ ##12: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq13 : ∀op2.eq_op BGND op2 = true → BGND = op2. #op2; ncases op2; nnormalize; #H; ##[ ##13: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq14 : ∀op2.eq_op BGT op2 = true → BGT = op2. #op2; ncases op2; nnormalize; #H; ##[ ##14: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq15 : ∀op2.eq_op BHCC op2 = true → BHCC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##15: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq16 : ∀op2.eq_op BHCS op2 = true → BHCS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##16: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq17 : ∀op2.eq_op BHI op2 = true → BHI = op2. #op2; ncases op2; nnormalize; #H; ##[ ##17: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq18 : ∀op2.eq_op BIH op2 = true → BIH = op2. #op2; ncases op2; nnormalize; #H; ##[ ##18: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq19 : ∀op2.eq_op BIL op2 = true → BIL = op2. #op2; ncases op2; nnormalize; #H; ##[ ##19: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq20 : ∀op2.eq_op BIT op2 = true → BIT = op2. #op2; ncases op2; nnormalize; #H; ##[ ##20: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq21 : ∀op2.eq_op BLE op2 = true → BLE = op2. #op2; ncases op2; nnormalize; #H; ##[ ##21: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq22 : ∀op2.eq_op BLS op2 = true → BLS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##22: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq23 : ∀op2.eq_op BLT op2 = true → BLT = op2. #op2; ncases op2; nnormalize; #H; ##[ ##23: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq24 : ∀op2.eq_op BMC op2 = true → BMC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##24: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq25 : ∀op2.eq_op BMI op2 = true → BMI = op2. #op2; ncases op2; nnormalize; #H; ##[ ##25: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq26 : ∀op2.eq_op BMS op2 = true → BMS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##26: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq27 : ∀op2.eq_op BNE op2 = true → BNE = op2. #op2; ncases op2; nnormalize; #H; ##[ ##27: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq28 : ∀op2.eq_op BPL op2 = true → BPL = op2. #op2; ncases op2; nnormalize; #H; ##[ ##28: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq29 : ∀op2.eq_op BRA op2 = true → BRA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##29: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq30 : ∀op2.eq_op BRCLRn op2 = true → BRCLRn = op2. #op2; ncases op2; nnormalize; #H; ##[ ##30: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq31 : ∀op2.eq_op BRN op2 = true → BRN = op2. #op2; ncases op2; nnormalize; #H; ##[ ##31: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq32 : ∀op2.eq_op BRSETn op2 = true → BRSETn = op2. #op2; ncases op2; nnormalize; #H; ##[ ##32: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq33 : ∀op2.eq_op BSETn op2 = true → BSETn = op2. #op2; ncases op2; nnormalize; #H; ##[ ##33: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq34 : ∀op2.eq_op BSR op2 = true → BSR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##34: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq35 : ∀op2.eq_op CBEQA op2 = true → CBEQA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##35: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq36 : ∀op2.eq_op CBEQX op2 = true → CBEQX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##36: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq37 : ∀op2.eq_op CLC op2 = true → CLC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##37: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq38 : ∀op2.eq_op CLI op2 = true → CLI = op2. #op2; ncases op2; nnormalize; #H; ##[ ##38: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq39 : ∀op2.eq_op CLR op2 = true → CLR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##39: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq40 : ∀op2.eq_op CMP op2 = true → CMP = op2. #op2; ncases op2; nnormalize; #H; ##[ ##40: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq41 : ∀op2.eq_op COM op2 = true → COM = op2. #op2; ncases op2; nnormalize; #H; ##[ ##41: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq42 : ∀op2.eq_op CPHX op2 = true → CPHX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##42: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq43 : ∀op2.eq_op CPX op2 = true → CPX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##43: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq44 : ∀op2.eq_op DAA op2 = true → DAA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##44: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq45 : ∀op2.eq_op DBNZ op2 = true → DBNZ = op2. #op2; ncases op2; nnormalize; #H; ##[ ##45: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq46 : ∀op2.eq_op DEC op2 = true → DEC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##46: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq47 : ∀op2.eq_op DIV op2 = true → DIV = op2. #op2; ncases op2; nnormalize; #H; ##[ ##47: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq48 : ∀op2.eq_op EOR op2 = true → EOR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##48: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq49 : ∀op2.eq_op INC op2 = true → INC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##49: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq50 : ∀op2.eq_op JMP op2 = true → JMP = op2. #op2; ncases op2; nnormalize; #H; ##[ ##50: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq51 : ∀op2.eq_op JSR op2 = true → JSR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##51: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq52 : ∀op2.eq_op LDA op2 = true → LDA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##52: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq53 : ∀op2.eq_op LDHX op2 = true → LDHX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##53: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq54 : ∀op2.eq_op LDX op2 = true → LDX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##54: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq55 : ∀op2.eq_op LSR op2 = true → LSR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##55: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq56 : ∀op2.eq_op MOV op2 = true → MOV = op2. #op2; ncases op2; nnormalize; #H; ##[ ##56: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq57 : ∀op2.eq_op MUL op2 = true → MUL = op2. #op2; ncases op2; nnormalize; #H; ##[ ##57: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq58 : ∀op2.eq_op NEG op2 = true → NEG = op2. #op2; ncases op2; nnormalize; #H; ##[ ##58: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq59 : ∀op2.eq_op NOP op2 = true → NOP = op2. #op2; ncases op2; nnormalize; #H; ##[ ##59: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq60 : ∀op2.eq_op NSA op2 = true → NSA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##60: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq61 : ∀op2.eq_op ORA op2 = true → ORA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##61: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq62 : ∀op2.eq_op PSHA op2 = true → PSHA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##62: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq63 : ∀op2.eq_op PSHH op2 = true → PSHH = op2. #op2; ncases op2; nnormalize; #H; ##[ ##63: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq64 : ∀op2.eq_op PSHX op2 = true → PSHX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##64: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq65 : ∀op2.eq_op PULA op2 = true → PULA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##65: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq66 : ∀op2.eq_op PULH op2 = true → PULH = op2. #op2; ncases op2; nnormalize; #H; ##[ ##66: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq67 : ∀op2.eq_op PULX op2 = true → PULX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##67: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq68 : ∀op2.eq_op ROL op2 = true → ROL = op2. #op2; ncases op2; nnormalize; #H; ##[ ##68: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq69 : ∀op2.eq_op ROR op2 = true → ROR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##69: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq70 : ∀op2.eq_op RSP op2 = true → RSP = op2. #op2; ncases op2; nnormalize; #H; ##[ ##70: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq71 : ∀op2.eq_op RTI op2 = true → RTI = op2. #op2; ncases op2; nnormalize; #H; ##[ ##71: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq72 : ∀op2.eq_op RTS op2 = true → RTS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##72: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq73 : ∀op2.eq_op SBC op2 = true → SBC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##73: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq74 : ∀op2.eq_op SEC op2 = true → SEC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##74: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq75 : ∀op2.eq_op SEI op2 = true → SEI = op2. #op2; ncases op2; nnormalize; #H; ##[ ##75: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq76 : ∀op2.eq_op SHA op2 = true → SHA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##76: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq77 : ∀op2.eq_op SLA op2 = true → SLA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##77: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq78 : ∀op2.eq_op STA op2 = true → STA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##78: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq79 : ∀op2.eq_op STHX op2 = true → STHX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##79: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq80 : ∀op2.eq_op STOP op2 = true → STOP = op2. #op2; ncases op2; nnormalize; #H; ##[ ##80: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq81 : ∀op2.eq_op STX op2 = true → STX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##81: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq82 : ∀op2.eq_op SUB op2 = true → SUB = op2. #op2; ncases op2; nnormalize; #H; ##[ ##82: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq83 : ∀op2.eq_op SWI op2 = true → SWI = op2. #op2; ncases op2; nnormalize; #H; ##[ ##83: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq84 : ∀op2.eq_op TAP op2 = true → TAP = op2. #op2; ncases op2; nnormalize; #H; ##[ ##84: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq85 : ∀op2.eq_op TAX op2 = true → TAX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##85: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq86 : ∀op2.eq_op TPA op2 = true → TPA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##86: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq87 : ∀op2.eq_op TST op2 = true → TST = op2. #op2; ncases op2; nnormalize; #H; ##[ ##87: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq88 : ∀op2.eq_op TSX op2 = true → TSX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##88: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq89 : ∀op2.eq_op TXA op2 = true → TXA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##89: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq90 : ∀op2.eq_op TXS op2 = true → TXS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##90: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+nlemma eqop_to_eq91 : ∀op2.eq_op WAIT op2 = true → WAIT = op2. #op2; ncases op2; nnormalize; #H; ##[ ##91: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed.
+
+nlemma eqop_to_eq : ∀op1,op2.eq_op op1 op2 = true → op1 = op2.
+ #op1; ncases op1;
+ ##[ ##1: napply eqop_to_eq1 ##| ##2: napply eqop_to_eq2 ##| ##3: napply eqop_to_eq3 ##| ##4: napply eqop_to_eq4
+ ##| ##5: napply eqop_to_eq5 ##| ##6: napply eqop_to_eq6 ##| ##7: napply eqop_to_eq7 ##| ##8: napply eqop_to_eq8
+ ##| ##9: napply eqop_to_eq9 ##| ##10: napply eqop_to_eq10 ##| ##11: napply eqop_to_eq11 ##| ##12: napply eqop_to_eq12
+ ##| ##13: napply eqop_to_eq13 ##| ##14: napply eqop_to_eq14 ##| ##15: napply eqop_to_eq15 ##| ##16: napply eqop_to_eq16
+ ##| ##17: napply eqop_to_eq17 ##| ##18: napply eqop_to_eq18 ##| ##19: napply eqop_to_eq19 ##| ##20: napply eqop_to_eq20
+ ##| ##21: napply eqop_to_eq21 ##| ##22: napply eqop_to_eq22 ##| ##23: napply eqop_to_eq23 ##| ##24: napply eqop_to_eq24
+ ##| ##25: napply eqop_to_eq25 ##| ##26: napply eqop_to_eq26 ##| ##27: napply eqop_to_eq27 ##| ##28: napply eqop_to_eq28
+ ##| ##29: napply eqop_to_eq29 ##| ##30: napply eqop_to_eq30 ##| ##31: napply eqop_to_eq31 ##| ##32: napply eqop_to_eq32
+ ##| ##33: napply eqop_to_eq33 ##| ##34: napply eqop_to_eq34 ##| ##35: napply eqop_to_eq35 ##| ##36: napply eqop_to_eq36
+ ##| ##37: napply eqop_to_eq37 ##| ##38: napply eqop_to_eq38 ##| ##39: napply eqop_to_eq39 ##| ##40: napply eqop_to_eq40
+ ##| ##41: napply eqop_to_eq41 ##| ##42: napply eqop_to_eq42 ##| ##43: napply eqop_to_eq43 ##| ##44: napply eqop_to_eq44
+ ##| ##45: napply eqop_to_eq45 ##| ##46: napply eqop_to_eq46 ##| ##47: napply eqop_to_eq47 ##| ##48: napply eqop_to_eq48
+ ##| ##49: napply eqop_to_eq49 ##| ##50: napply eqop_to_eq50 ##| ##51: napply eqop_to_eq51 ##| ##52: napply eqop_to_eq52
+ ##| ##53: napply eqop_to_eq53 ##| ##54: napply eqop_to_eq54 ##| ##55: napply eqop_to_eq55 ##| ##56: napply eqop_to_eq56
+ ##| ##57: napply eqop_to_eq57 ##| ##58: napply eqop_to_eq58 ##| ##59: napply eqop_to_eq59 ##| ##60: napply eqop_to_eq60
+ ##| ##61: napply eqop_to_eq61 ##| ##62: napply eqop_to_eq62 ##| ##63: napply eqop_to_eq63 ##| ##64: napply eqop_to_eq64
+ ##| ##65: napply eqop_to_eq65 ##| ##66: napply eqop_to_eq66 ##| ##67: napply eqop_to_eq67 ##| ##68: napply eqop_to_eq68
+ ##| ##69: napply eqop_to_eq69 ##| ##70: napply eqop_to_eq70 ##| ##71: napply eqop_to_eq71 ##| ##72: napply eqop_to_eq72
+ ##| ##73: napply eqop_to_eq73 ##| ##74: napply eqop_to_eq74 ##| ##75: napply eqop_to_eq75 ##| ##76: napply eqop_to_eq76
+ ##| ##77: napply eqop_to_eq77 ##| ##78: napply eqop_to_eq78 ##| ##79: napply eqop_to_eq79 ##| ##80: napply eqop_to_eq80
+ ##| ##81: napply eqop_to_eq81 ##| ##82: napply eqop_to_eq82 ##| ##83: napply eqop_to_eq83 ##| ##84: napply eqop_to_eq84
+ ##| ##85: napply eqop_to_eq85 ##| ##86: napply eqop_to_eq86 ##| ##87: napply eqop_to_eq87 ##| ##88: napply eqop_to_eq88
+ ##| ##89: napply eqop_to_eq89 ##| ##90: napply eqop_to_eq90 ##| ##91: napply eqop_to_eq91 ##]
+nqed.
+
+nlemma neq_to_neqop : ∀n1,n2.n1 ≠ n2 → eq_op n1 n2 = false.
+ #n1; #n2; #H;
+ napply (neqtrue_to_eqfalse (eq_op n1 n2));
+ napply (not_to_not (eq_op n1 n2 = true) (n1 = n2) ? H);
+ napply (eqop_to_eq n1 n2).
+nqed.
+
+nlemma decidable_op : ∀x,y:opcode.decidable (x = y).
+ #x; #y; nnormalize;
+ napply (or2_elim (eq_op x y = true) (eq_op x y = false) ? (decidable_bexpr ?));
+ ##[ ##1: #H; napply (or2_intro1 (x = y) (x ≠ y) (eqop_to_eq … H))
+ ##| ##2: #H; napply (or2_intro2 (x = y) (x ≠ y) (neqop_to_neq … H))
+ ##]
+nqed.
+
+nlemma symmetric_eqop : symmetricT opcode bool eq_op.
+ #n1; #n2;
+ napply (or2_elim (n1 = n2) (n1 ≠ n2) ? (decidable_op n1 n2));
+ ##[ ##1: #H; nrewrite > H; napply refl_eq
+ ##| ##2: #H; nrewrite > (neq_to_neqop n1 n2 H);
+          napply (symmetric_eq ? (eq_op n2 n1) false);
+          napply (neq_to_neqop n2 n1 (symmetric_neq ? n1 n2 H))
+ ##]
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/status.ma b/helm/software/matita/contribs/ng_assembly/freescale/status.ma
new file mode 100755 (executable)
index 0000000..1354861
--- /dev/null
@@ -0,0 +1,1275 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/memory_abs.ma".
+include "freescale/opcode_base.ma".
+
+(* *********************************** *)
+(* STATUS INTERNO DEL PROCESSORE (ALU) *)
+(* *********************************** *)
+
+(* ALU dell'HC05 *)
+nrecord alu_HC05: Type ≝
+ {
+ (* A: registo accumulatore *)
+ acc_low_reg_HC05 : byte8;
+ (* X: registro indice *)
+ indX_low_reg_HC05 : byte8;
+ (* SP: registo stack pointer *)
+ sp_reg_HC05 : word16;
+ (* modificatori di SP: per esempio e' definito come 0000000011xxxxxxb *)
+ (* la logica della sua costruzione e' quindi (SP∧mask)∨fix *)
+ (* totalmente racchiusa nella ALU, bastera' fare get(set(SP)) *)
+ sp_mask_HC05 : word16;
+ sp_fix_HC05 : word16;
+ (* PC: registro program counter *)
+ pc_reg_HC05 : word16;
+ (* modificatore di PC: per esempio e' definito come 00xxxxxxxxxxxxxxb *)
+ (* la logica della sua costruzione e' quindi (PC∧mask) *)
+ (* totalmente racchiusa nella ALU, bastera' fare get(set(PC)) *)
+ pc_mask_HC05 : word16;
+ (* H: flag semi-carry (somma nibble basso) *)
+ h_flag_HC05 : bool;
+ (* I: flag mascheramento degli interrupt mascherabili: 1=mascherati *)
+ i_flag_HC05 : bool;
+ (* N: flag segno/negativita' *)
+ n_flag_HC05 : bool;
+ (* Z: flag zero *)
+ z_flag_HC05 : bool;
+ (* C: flag carry *)
+ c_flag_HC05 : bool;
+ (* IRQ: flag che simula il pin esterno IRQ *)
+ irq_flag_HC05 : bool
+ }.
+
+notation "{hvbox('A_Reg' ≝ acclow ; break 'X_Reg' ≝ indxlow ; break 'Sp_Reg' ≝ sp ; break 'Sp_Mask' ≝ spm ; break 'Sp_Fix' ≝ spf ; break 'Pc_Reg' ≝ pc ; break 'Pc_Mask' ≝ pcm ; break 'H_Flag' ≝ hfl ; break 'I_Flag' ≝ ifl ; break 'N_Flag' ≝ nfl ; break 'Z_Flag' ≝ zfl ; break 'C_Flag' ≝ cfl ; break 'IRQ_Flag' ≝ irqfl)}"
+ non associative with precedence 80 for
+ @{ 'mk_alu_HC05 $acclow $indxlow $sp $spm $spf $pc $pcm $hfl $ifl $nfl $zfl $cfl $irqfl }.
+interpretation "mk_alu_HC05" 'mk_alu_HC05 acclow indxlow sp spm spf pc pcm hfl ifl nfl zfl cfl irqfl =
+ (mk_alu_HC05 acclow indxlow sp spm spf pc pcm hfl ifl nfl zfl cfl irqfl).
+(* ALU dell'HC08/HCS08 *) 
+nrecord alu_HC08: Type ≝
+ {
+ (* A: registo accumulatore *)
+ acc_low_reg_HC08 : byte8;
+ (* X: registro indice parte bassa *)
+ indX_low_reg_HC08 : byte8;
+ (* H: registro indice parte alta *)
+ indX_high_reg_HC08 : byte8;
+ (* SP: registo stack pointer *)
+ sp_reg_HC08 : word16;
+ (* PC: registro program counter *)
+ pc_reg_HC08 : word16;
+ (* V: flag overflow *)
+ v_flag_HC08 : bool;
+ (* H: flag semi-carry (somma nibble basso) *)
+ h_flag_HC08 : bool;
+ (* I: flag mascheramento degli interrupt mascherabili: 1=mascherati *)
+ i_flag_HC08 : bool;
+ (* N: flag segno/negativita' *)
+ n_flag_HC08 : bool;
+ (* Z: flag zero *)
+ z_flag_HC08 : bool;
+ (* C: flag carry *)
+ c_flag_HC08 : bool;
+ (* IRQ: flag che simula il pin esterno IRQ *)
+ irq_flag_HC08 : bool
+ }.
+
+notation "{hvbox('A_Reg' ≝ acclow ; break 'X_Reg' ≝ indxlow ; break 'H_Reg' ≝ indxhigh ; break 'Sp_Reg' ≝ sp ; break 'Pc_Reg' ≝ pc ; break 'V_Flag' ≝ vfl ; break 'H_Flag' ≝ hfl ; break 'I_Flag' ≝ ifl ; break 'N_Flag' ≝ nfl ; break 'Z_Flag' ≝ zfl ; break 'C_Flag' ≝ cfl ; break 'IRQ_Flag' ≝ irqfl)}"
+ non associative with precedence 80 for
+ @{ 'mk_alu_HC08 $acclow $indxlow $indxhigh $sp $pc $vfl $hfl $ifl $nfl $zfl $cfl $irqfl }.
+interpretation "mk_alu_HC08" 'mk_alu_HC08 acclow indxlow indxhigh sp pc vfl hfl ifl nfl zfl cfl irqfl =
+ (mk_alu_HC08 acclow indxlow indxhigh sp pc vfl hfl ifl nfl zfl cfl irqfl).
+
+(* ALU dell'RS08 *)
+nrecord alu_RS08: Type ≝
+ {
+ (* A: registo accumulatore *)
+ acc_low_reg_RS08 : byte8;
+ (* PC: registro program counter *)
+ pc_reg_RS08 : word16;
+ (* modificatore di PC: per esempio e' definito come 00xxxxxxxxxxxxxxb *)
+ (* la logica della sua costruzione e' quindi (PC∧mask) *)
+ (* totalmente racchiusa nella ALU, bastera' fare get(set(PC)) *)
+ pc_mask_RS08 : word16;
+ (* SPC: registro shadow program counter *)
+ (* NB: il suo modificatore e' lo stesso di PC *)
+ spc_reg_RS08 : word16;
+
+ (* X: registro indice parte bassa *)
+ (* NB: in realta' e' mappato in memoria e non risiede nella ALU *)
+ (* la lettura/scrittura avviene tramite la locazione [0x000F] *)
+ (* la funzione memory_filter_read/write si occupera' di intercettare *)
+ (* e deviare sul registro le letture/scritture (modulo load_write) *)
+ x_map_RS08 : byte8;
+ (* PS: registro selezione di pagina *)
+ (* serve a indirizzare la finestra RAM di 64b [0x00C0-0x00FF] *)
+ (* su tutta la memoria installata [0x0000-0x3FFF]: [00pp pppp ppxx xxxx] *)
+ (* NB: in realta' e' mappato in memoria e non risiede nella ALU *)
+ (* la lettura/scrittura avviene tramite la locazione [0x001F] *)
+ (* la funzione memory_filter_read/write si occupera' di intercettare *)
+ (* e deviare sul registro le letture/scritture (modulo load_write) *)
+ ps_map_RS08 : byte8;
+ (* Z: flag zero *)
+ z_flag_RS08 : bool;
+ (* C: flag carry *)
+ c_flag_RS08 : bool
+ }.
+
+notation "{hvbox('A_Reg' ≝ acclow ; break 'Pc_Reg' ≝ pc ; break 'Pc_Mask' ≝ pcm ; break 'Spc_Reg' ≝ spc ; break 'X_Map' ≝ xm ; break 'Ps_Map' ≝ psm ; break 'Z_Flag' ≝ zfl ; break 'C_Flag' ≝ cfl)}"
+ non associative with precedence 80 for
+ @{ 'mk_alu_RS08 $acclow $pc $pcm $spc $xm $psm $zfl $cfl }.
+interpretation "mk_alu_RS08" 'mk_alu_RS08 acclow pc pcm spc xm psm zfl cfl =
+ (mk_alu_RS08 acclow pc pcm spc xm psm zfl cfl).
+
+(* tipo processore dipendente dalla mcu, varia solo la ALU *)
+nrecord any_status (mcu:mcu_type) (t:memory_impl): Type ≝
+ {
+ alu : match mcu with
+  [ HC05 ⇒ alu_HC05 | HC08 ⇒ alu_HC08 | HCS08 ⇒ alu_HC08 | RS08 ⇒ alu_RS08 ];
+
+ (* descritore della memoria *)
+ mem_desc : aux_mem_type t;
+ (* descrittore del tipo di memoria installata *)
+ chk_desc : aux_chk_type t;
+ (* descrittore del click = stato di avanzamento dell'esecuzione+cur_pc conseguente a fetch *)
+ (* 1) None = istruzione eseguita, attesa del fetch *)
+ (* 2) Some cur_clk,pseudo,mode,clks,cur_pc = fetch eseguito, countup a esecuzione *) 
+ clk_desc : option (Prod5T byte8 (any_opcode mcu) (instr_mode) byte8 word16)
+ }.
+
+(* evitare di mostrare la memoria/descrittore che impalla il visualizzatore *)
+notation > "{hvbox('Alu' ≝ alu ; break 'Clk' ≝ clk)}" non associative with precedence 80 
+ for @{ 'mk_any_status $alu $mem $chk $clk }.
+interpretation "mk_any_status" 'mk_any_status alu mem chk clk =
+ (mk_any_status alu mem chk clk).
+
+(* **************** *)
+(* GETTER SPECIFICI *)
+(* **************** *)
+
+(* funzione ausiliaria per il tipaggio dei getter *)
+ndefinition aux_get_typing ≝ λx:Type.λm:mcu_type.match m with
+ [ HC05 ⇒ alu_HC05 | HC08 ⇒ alu_HC08 | HCS08 ⇒ alu_HC08 | RS08 ⇒ alu_RS08 ] → x.
+
+(* REGISTRI *)
+
+(* getter di A, esiste sempre *)
+ndefinition get_acc_8_low_reg ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ match m
+  return aux_get_typing byte8 with
+ [ HC05 ⇒ acc_low_reg_HC05
+ | HC08 ⇒ acc_low_reg_HC08
+ | HCS08 ⇒ acc_low_reg_HC08
+ | RS08 ⇒ acc_low_reg_RS08 ]
+ (alu m t s).
+
+(* getter di X, non esiste sempre *)
+ndefinition get_indX_8_low_reg ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ match m
+  return aux_get_typing (option byte8) with 
+ [ HC05 ⇒ λalu.Some ? (indX_low_reg_HC05 alu)
+ | HC08 ⇒ λalu.Some ? (indX_low_reg_HC08 alu)
+ | HCS08 ⇒ λalu.Some ? (indX_low_reg_HC08 alu)
+ | RS08 ⇒ λalu.None ? ]
+ (alu m t s).
+
+(* getter di H, non esiste sempre *)
+ndefinition get_indX_8_high_reg ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ match m
+  return aux_get_typing (option byte8) with 
+ [ HC05 ⇒ λalu.None ?
+ | HC08 ⇒ λalu.Some ? (indX_high_reg_HC08 alu)
+ | HCS08 ⇒ λalu.Some ? (indX_high_reg_HC08 alu)
+ | RS08 ⇒ λalu.None ? ]
+ (alu m t s).
+
+(* getter di H:X, non esiste sempre *)
+ndefinition get_indX_16_reg ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ match m
+  return aux_get_typing (option word16) with 
+ [ HC05 ⇒ λalu.None ?
+ | HC08 ⇒ λalu.Some ? (mk_word16 (indX_high_reg_HC08 alu) (indX_low_reg_HC08 alu))
+ | HCS08 ⇒ λalu.Some ? (mk_word16 (indX_high_reg_HC08 alu) (indX_low_reg_HC08 alu))
+ | RS08 ⇒ λalu.None ? ]
+ (alu m t s).
+
+(* getter di SP, non esiste sempre *)
+ndefinition get_sp_reg ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ match m
+  return aux_get_typing (option word16) with 
+ [ HC05 ⇒ λalu.Some ? (sp_reg_HC05 alu)
+ | HC08 ⇒ λalu.Some ? (sp_reg_HC08 alu)
+ | HCS08 ⇒ λalu.Some ? (sp_reg_HC08 alu)
+ | RS08 ⇒ λalu.None ? ]
+ (alu m t s).
+
+(* getter di PC, esiste sempre *)
+ndefinition get_pc_reg ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ match m
+  return aux_get_typing word16 with 
+ [ HC05 ⇒ pc_reg_HC05
+ | HC08 ⇒ pc_reg_HC08
+ | HCS08 ⇒ pc_reg_HC08
+ | RS08 ⇒ pc_reg_RS08 ]
+ (alu m t s).
+
+(* getter di SPC, non esiste sempre *)
+ndefinition get_spc_reg ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ match m
+  return aux_get_typing (option word16) with 
+ [ HC05 ⇒ λalu.None ?
+ | HC08 ⇒ λalu.None ?
+ | HCS08 ⇒ λalu.None ?
+ | RS08 ⇒ λalu.Some ? (spc_reg_RS08 alu) ]
+ (alu m t s).
+
+(* REGISTRI MEMORY MAPPED *)
+
+(* getter di memory mapped X, non esiste sempre *)
+ndefinition get_x_map ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ match m
+  return aux_get_typing (option byte8) with 
+ [ HC05 ⇒ λalu.None ?
+ | HC08 ⇒ λalu.None ?
+ | HCS08 ⇒ λalu.None ?
+ | RS08 ⇒ λalu.Some ? (x_map_RS08 alu) ]
+ (alu m t s).
+
+(* getter di memory mapped PS, non esiste sempre *)
+ndefinition get_ps_map ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ match m
+  return aux_get_typing (option byte8) with 
+ [ HC05 ⇒ λalu.None ?
+ | HC08 ⇒ λalu.None ?
+ | HCS08 ⇒ λalu.None ?
+ | RS08 ⇒ λalu.Some ? (ps_map_RS08 alu) ]
+ (alu m t s).
+
+(* FLAG *)
+
+(* getter di V, non esiste sempre *)
+ndefinition get_v_flag ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ match m
+  return aux_get_typing (option bool) with 
+ [ HC05 ⇒ λalu.None ?
+ | HC08 ⇒ λalu.Some ? (v_flag_HC08 alu)
+ | HCS08 ⇒ λalu.Some ? (v_flag_HC08 alu)
+ | RS08 ⇒ λalu.None ? ]
+ (alu m t s).
+
+(* getter di H, non esiste sempre *)
+ndefinition get_h_flag ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ match m
+  return aux_get_typing (option bool) with 
+ [ HC05 ⇒ λalu.Some ? (h_flag_HC05 alu)
+ | HC08 ⇒ λalu.Some ? (h_flag_HC08 alu)
+ | HCS08 ⇒ λalu.Some ? (h_flag_HC08 alu)
+ | RS08 ⇒ λalu.None ? ]
+ (alu m t s).
+
+(* getter di I, non esiste sempre *)
+ndefinition get_i_flag ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ match m
+  return aux_get_typing (option bool) with 
+ [ HC05 ⇒ λalu.Some ? (i_flag_HC05 alu)
+ | HC08 ⇒ λalu.Some ? (i_flag_HC08 alu)
+ | HCS08 ⇒ λalu.Some ? (i_flag_HC08 alu)
+ | RS08 ⇒ λalu.None ? ]
+ (alu m t s).
+
+(* getter di N, non esiste sempre *)
+ndefinition get_n_flag ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ match m
+  return aux_get_typing (option bool) with 
+ [ HC05 ⇒ λalu.Some ? (n_flag_HC05 alu)
+ | HC08 ⇒ λalu.Some ? (n_flag_HC08 alu)
+ | HCS08 ⇒ λalu.Some ? (n_flag_HC08 alu)
+ | RS08 ⇒ λalu.None ? ]
+ (alu m t s).
+
+(* getter di Z, esiste sempre *)
+ndefinition get_z_flag ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ match m
+  return aux_get_typing bool with 
+ [ HC05 ⇒ z_flag_HC05
+ | HC08 ⇒ z_flag_HC08
+ | HCS08 ⇒ z_flag_HC08
+ | RS08 ⇒ z_flag_RS08 ]
+ (alu m t s).
+
+(* getter di C, esiste sempre *)
+ndefinition get_c_flag ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ match m
+  return aux_get_typing bool with 
+ [ HC05 ⇒ c_flag_HC05
+ | HC08 ⇒ c_flag_HC08
+ | HCS08 ⇒ c_flag_HC08
+ | RS08 ⇒ c_flag_RS08 ]
+ (alu m t s).
+
+(* getter di IRQ, non esiste sempre *)
+ndefinition get_irq_flag ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+ match m
+  return aux_get_typing (option bool) with 
+ [ HC05 ⇒ λalu.Some ? (irq_flag_HC05 alu)
+ | HC08 ⇒ λalu.Some ? (irq_flag_HC08 alu)
+ | HCS08 ⇒ λalu.Some ? (irq_flag_HC08 alu)
+ | RS08 ⇒ λalu.None ? ]
+ (alu m t s).
+
+(* ***************************** *)
+(* SETTER SPECIFICI FORTI/DEBOLI *)
+(* ***************************** *)
+
+(* funzione ausiliaria per il tipaggio dei setter forti *)
+ndefinition aux_set_typing ≝ λx:Type.λm:mcu_type.
+  match m with [ HC05 ⇒ alu_HC05 | HC08 ⇒ alu_HC08 | HCS08 ⇒ alu_HC08 | RS08 ⇒ alu_RS08 ]
+  → x →
+  match m with [ HC05 ⇒ alu_HC05 | HC08 ⇒ alu_HC08 | HCS08 ⇒ alu_HC08 | RS08 ⇒ alu_RS08 ].
+
+(* funzione ausiliaria per il tipaggio dei setter deboli *)
+ndefinition aux_set_typing_opt ≝ λx:Type.λm:mcu_type.option
+ (match m with [ HC05 ⇒ alu_HC05 | HC08 ⇒ alu_HC08 | HCS08 ⇒ alu_HC08 | RS08 ⇒ alu_RS08 ]
+  → x →
+  match m with [ HC05 ⇒ alu_HC05 | HC08 ⇒ alu_HC08 | HCS08 ⇒ alu_HC08 | RS08 ⇒ alu_RS08 ]).
+
+(* DESCRITTORI ESTERNI ALLA ALU *)
+
+(* setter forte della ALU *)
+ndefinition set_alu ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λalu'.
+ mk_any_status m t alu' (mem_desc m t s) (chk_desc m t s) (clk_desc m t s).
+
+(* setter forte della memoria *)
+ndefinition set_mem_desc ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λmem':aux_mem_type t.
+ mk_any_status m t (alu m t s) mem' (chk_desc m t s) (clk_desc m t s).
+
+(* setter forte del descrittore *)
+ndefinition set_chk_desc ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λchk':aux_chk_type t.
+ mk_any_status m t (alu m t s) (mem_desc m t s) chk' (clk_desc m t s).
+
+(* setter forte del clik *)
+ndefinition set_clk_desc ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.
+λclk':option (Prod5T byte8 (any_opcode m) (instr_mode) byte8 word16).
+ mk_any_status m t (alu m t s) (mem_desc m t s) (chk_desc m t s) clk'.
+
+(* REGISTRO A *)
+
+(* setter specifico HC05 di A *)
+ndefinition set_acc_8_low_reg_HC05 ≝
+λalu.λacclow':byte8.
+ mk_alu_HC05
+  acclow'
+  (indX_low_reg_HC05 alu)
+  (sp_reg_HC05 alu)
+  (sp_mask_HC05 alu)
+  (sp_fix_HC05 alu)
+  (pc_reg_HC05 alu)
+  (pc_mask_HC05 alu)
+  (h_flag_HC05 alu)
+  (i_flag_HC05 alu)
+  (n_flag_HC05 alu)
+  (z_flag_HC05 alu)
+  (c_flag_HC05 alu)
+  (irq_flag_HC05 alu).
+
+(* setter specifico HC08/HCS08 di A *)
+ndefinition set_acc_8_low_reg_HC08 ≝
+λalu.λacclow':byte8.
+ mk_alu_HC08
+  acclow'
+  (indX_low_reg_HC08 alu)
+  (indX_high_reg_HC08 alu)
+  (sp_reg_HC08 alu)
+  (pc_reg_HC08 alu)
+  (v_flag_HC08 alu)
+  (h_flag_HC08 alu)
+  (i_flag_HC08 alu)
+  (n_flag_HC08 alu)
+  (z_flag_HC08 alu)
+  (c_flag_HC08 alu)
+  (irq_flag_HC08 alu).
+
+(* setter specifico RS08 di A *)
+ndefinition set_acc_8_low_reg_RS08 ≝ 
+λalu.λacclow':byte8.
+ mk_alu_RS08
+  acclow'
+  (pc_reg_RS08 alu)
+  (pc_mask_RS08 alu)
+  (spc_reg_RS08 alu)
+  (x_map_RS08 alu)
+  (ps_map_RS08 alu)
+  (z_flag_RS08 alu)
+  (c_flag_RS08 alu).
+
+(* setter forte di A *)
+ndefinition set_acc_8_low_reg ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λacclow':byte8.
+ set_alu m t s 
+ (match m return aux_set_typing byte8 with
+  [ HC05 ⇒ set_acc_8_low_reg_HC05
+  | HC08 ⇒ set_acc_8_low_reg_HC08
+  | HCS08 ⇒ set_acc_8_low_reg_HC08
+  | RS08 ⇒ set_acc_8_low_reg_RS08
+  ] (alu m t s) acclow').
+
+(* REGISTRO X *)
+
+(* setter specifico HC05 di X *)
+ndefinition set_indX_8_low_reg_HC05 ≝
+λalu.λindxlow':byte8.
+ mk_alu_HC05
+  (acc_low_reg_HC05 alu)
+  indxlow'
+  (sp_reg_HC05 alu)
+  (sp_mask_HC05 alu)
+  (sp_fix_HC05 alu)
+  (pc_reg_HC05 alu)
+  (pc_mask_HC05 alu)
+  (h_flag_HC05 alu)
+  (i_flag_HC05 alu)
+  (n_flag_HC05 alu)
+  (z_flag_HC05 alu)
+  (c_flag_HC05 alu)
+  (irq_flag_HC05 alu).
+
+(* setter specifico HC08/HCS08 di X *)
+ndefinition set_indX_8_low_reg_HC08 ≝
+λalu.λindxlow':byte8.
+ mk_alu_HC08
+  (acc_low_reg_HC08 alu)
+  indxlow'
+  (indX_high_reg_HC08 alu)
+  (sp_reg_HC08 alu)
+  (pc_reg_HC08 alu)
+  (v_flag_HC08 alu)
+  (h_flag_HC08 alu)
+  (i_flag_HC08 alu)
+  (n_flag_HC08 alu)
+  (z_flag_HC08 alu)
+  (c_flag_HC08 alu)
+  (irq_flag_HC08 alu).
+
+(* setter forte di X *)
+ndefinition set_indX_8_low_reg ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λindxlow':byte8.
+ opt_map … (match m return aux_set_typing_opt byte8 with
+             [ HC05 ⇒ Some ? set_indX_8_low_reg_HC05
+             | HC08 ⇒ Some ? set_indX_8_low_reg_HC08
+             | HCS08 ⇒ Some ? set_indX_8_low_reg_HC08
+             | RS08 ⇒ None ? ])
+ (λf.Some ? (set_alu m t s (f (alu m t s) indxlow'))).
+
+(* setter debole di X *)
+ndefinition setweak_indX_8_low_reg ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λindxlow':byte8.
+ match set_indX_8_low_reg m t s indxlow' with
+  [ None ⇒ s | Some s' ⇒ s' ].
+
+(* REGISTRO H *)
+
+(* setter specifico HC08/HCS08 di H *)
+ndefinition set_indX_8_high_reg_HC08 ≝
+λalu.λindxhigh':byte8.
+ mk_alu_HC08
+  (acc_low_reg_HC08 alu)
+  (indX_low_reg_HC08 alu)
+  indxhigh'
+  (sp_reg_HC08 alu)
+  (pc_reg_HC08 alu)
+  (v_flag_HC08 alu)
+  (h_flag_HC08 alu)
+  (i_flag_HC08 alu)
+  (n_flag_HC08 alu)
+  (z_flag_HC08 alu)
+  (c_flag_HC08 alu)
+  (irq_flag_HC08 alu).
+
+(* setter forte di H *)
+ndefinition set_indX_8_high_reg ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λindxhigh':byte8.
+ opt_map … (match m return aux_set_typing_opt byte8 with
+             [ HC05 ⇒ None ?
+             | HC08 ⇒ Some ? set_indX_8_high_reg_HC08
+             | HCS08 ⇒ Some ? set_indX_8_high_reg_HC08
+             | RS08 ⇒ None ? ])
+ (λf.Some ? (set_alu m t s (f (alu m t s) indxhigh'))).
+
+(* setter debole di H *)
+ndefinition setweak_indX_8_high_reg ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λindxhigh':byte8.
+ match set_indX_8_high_reg m t s indxhigh' with
+  [ None ⇒ s | Some s' ⇒ s' ].
+
+(* REGISTRO H:X *)
+
+(* setter specifico HC08/HCS08 di H:X *)
+ndefinition set_indX_16_reg_HC08 ≝
+λalu.λindx16:word16.
+ mk_alu_HC08
+  (acc_low_reg_HC08 alu)
+  (w16l indx16)
+  (w16h indx16)
+  (sp_reg_HC08 alu)
+  (pc_reg_HC08 alu)
+  (v_flag_HC08 alu)
+  (h_flag_HC08 alu)
+  (i_flag_HC08 alu)
+  (n_flag_HC08 alu)
+  (z_flag_HC08 alu)
+  (c_flag_HC08 alu)
+  (irq_flag_HC08 alu).
+
+(* setter forte di H:X *)
+ndefinition set_indX_16_reg ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λindx16:word16.
+ opt_map … (match m return aux_set_typing_opt word16 with
+             [ HC05 ⇒ None ?
+             | HC08 ⇒ Some ? set_indX_16_reg_HC08
+             | HCS08 ⇒ Some ? set_indX_16_reg_HC08
+             | RS08 ⇒ None ? ])
+ (λf.Some ? (set_alu m t s (f (alu m t s) indx16))).
+
+(* setter debole di H:X *)
+ndefinition setweak_indX_16_reg ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λindx16:word16.
+ match set_indX_16_reg m t s indx16 with
+  [ None ⇒ s | Some s' ⇒ s' ].
+
+(* REGISTRO SP *)
+
+(* setter specifico HC05 di SP, effettua (SP∧mask)∨fix *)
+ndefinition set_sp_reg_HC05 ≝
+λalu.λsp':word16.
+ mk_alu_HC05
+  (acc_low_reg_HC05 alu)
+  (indX_low_reg_HC05 alu)
+  (or_w16 (and_w16 sp' (sp_mask_HC05 alu)) (sp_fix_HC05 alu))
+  (sp_mask_HC05 alu)
+  (sp_fix_HC05 alu)
+  (pc_reg_HC05 alu)
+  (pc_mask_HC05 alu)
+  (h_flag_HC05 alu)
+  (i_flag_HC05 alu)
+  (n_flag_HC05 alu)
+  (z_flag_HC05 alu)
+  (c_flag_HC05 alu)
+  (irq_flag_HC05 alu).
+
+(* setter specifico HC08/HCS08 di SP *)
+ndefinition set_sp_reg_HC08 ≝
+λalu.λsp':word16.
+ mk_alu_HC08
+  (acc_low_reg_HC08 alu)
+  (indX_low_reg_HC08 alu)
+  (indX_high_reg_HC08 alu)
+  sp'
+  (pc_reg_HC08 alu)
+  (v_flag_HC08 alu)
+  (h_flag_HC08 alu)
+  (i_flag_HC08 alu)
+  (n_flag_HC08 alu)
+  (z_flag_HC08 alu)
+  (c_flag_HC08 alu)
+  (irq_flag_HC08 alu).
+
+(* setter forte di SP *)
+ndefinition set_sp_reg ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λsp':word16.
+ opt_map … (match m return aux_set_typing_opt word16 with
+             [ HC05 ⇒ Some ? set_sp_reg_HC05
+             | HC08 ⇒ Some ? set_sp_reg_HC08
+             | HCS08 ⇒ Some ? set_sp_reg_HC08
+             | RS08 ⇒ None ? ])
+ (λf.Some ? (set_alu m t s (f (alu m t s) sp'))).
+
+(* setter debole di SP *)
+ndefinition setweak_sp_reg ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λsp':word16.
+ match set_sp_reg m t s sp' with
+  [ None ⇒ s | Some s' ⇒ s' ].
+
+(* REGISTRO PC *)
+
+(* setter specifico HC05 di PC, effettua PC∧mask *)
+ndefinition set_pc_reg_HC05 ≝
+λalu.λpc':word16.
+ mk_alu_HC05
+  (acc_low_reg_HC05 alu)
+  (indX_low_reg_HC05 alu)
+  (sp_reg_HC05 alu)
+  (sp_mask_HC05 alu)
+  (sp_fix_HC05 alu)
+  (and_w16 pc' (pc_mask_HC05 alu))
+  (pc_mask_HC05 alu)
+  (h_flag_HC05 alu)
+  (i_flag_HC05 alu)
+  (n_flag_HC05 alu)
+  (z_flag_HC05 alu)
+  (c_flag_HC05 alu)
+  (irq_flag_HC05 alu).
+
+(* setter specifico HC08/HCS08 di PC *)
+ndefinition set_pc_reg_HC08 ≝
+λalu.λpc':word16.
+ mk_alu_HC08
+  (acc_low_reg_HC08 alu)
+  (indX_low_reg_HC08 alu)
+  (indX_high_reg_HC08 alu)
+  (sp_reg_HC08 alu)
+  pc'
+  (v_flag_HC08 alu)
+  (h_flag_HC08 alu)
+  (i_flag_HC08 alu)
+  (n_flag_HC08 alu)
+  (z_flag_HC08 alu)
+  (c_flag_HC08 alu)
+  (irq_flag_HC08 alu).
+
+(* setter specifico RS08 di PC, effettua PC∧mask *)
+ndefinition set_pc_reg_RS08 ≝ 
+λalu.λpc':word16.
+ mk_alu_RS08
+  (acc_low_reg_RS08 alu)
+  (and_w16 pc' (pc_mask_RS08 alu))
+  (pc_mask_RS08 alu)
+  (spc_reg_RS08 alu)
+  (x_map_RS08 alu)
+  (ps_map_RS08 alu)
+  (z_flag_RS08 alu)
+  (c_flag_RS08 alu).
+
+(* setter forte di PC *)
+ndefinition set_pc_reg ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λpc':word16.
+ set_alu m t s 
+ (match m return aux_set_typing word16 with
+  [ HC05 ⇒ set_pc_reg_HC05
+  | HC08 ⇒ set_pc_reg_HC08
+  | HCS08 ⇒ set_pc_reg_HC08
+  | RS08 ⇒ set_pc_reg_RS08
+  ] (alu m t s) pc').
+
+(* REGISTRO SPC *)
+
+(* setter specifico RS08 di SPC, effettua SPC∧mask *)
+ndefinition set_spc_reg_RS08 ≝ 
+λalu.λspc':word16.
+ mk_alu_RS08
+  (acc_low_reg_RS08 alu)
+  (pc_reg_RS08 alu)
+  (pc_mask_RS08 alu)
+  (and_w16 spc' (pc_mask_RS08 alu))
+  (x_map_RS08 alu)
+  (ps_map_RS08 alu)
+  (z_flag_RS08 alu)
+  (c_flag_RS08 alu).
+
+(* setter forte di SPC *)
+ndefinition set_spc_reg ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λspc':word16.
+ opt_map … (match m return aux_set_typing_opt word16 with
+             [ HC05 ⇒ None ?
+             | HC08 ⇒ None ?
+             | HCS08 ⇒ None ?
+             | RS08 ⇒ Some ? set_spc_reg_RS08 ])
+ (λf.Some ? (set_alu m t s (f (alu m t s) spc'))).
+
+(* setter debole di SPC *)
+ndefinition setweak_spc_reg ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λspc':word16.
+ match set_spc_reg m t s spc' with
+  [ None ⇒ s | Some s' ⇒ s' ].
+
+(* REGISTRO MEMORY MAPPED X *)
+
+(* setter specifico RS08 di memory mapped X *)
+ndefinition set_x_map_RS08 ≝ 
+λalu.λxm':byte8.
+ mk_alu_RS08
+  (acc_low_reg_RS08 alu)
+  (pc_reg_RS08 alu)
+  (pc_mask_RS08 alu)
+  (spc_reg_RS08 alu)
+  xm'
+  (ps_map_RS08 alu)
+  (z_flag_RS08 alu)
+  (c_flag_RS08 alu).
+
+(* setter forte di memory mapped X *)
+ndefinition set_x_map ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λxm':byte8.
+ opt_map … (match m return aux_set_typing_opt byte8 with
+             [ HC05 ⇒ None ?
+             | HC08 ⇒ None ?
+             | HCS08 ⇒ None ?
+             | RS08 ⇒ Some ? set_x_map_RS08 ])
+ (λf.Some ? (set_alu m t s (f (alu m t s) xm'))).
+
+(* setter debole di memory mapped X *)
+ndefinition setweak_x_map ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λxm':byte8.
+ match set_x_map m t s xm' with
+  [ None ⇒ s | Some s' ⇒ s' ].
+
+(* REGISTRO MEMORY MAPPED PS *)
+
+(* setter specifico RS08 di memory mapped PS *)
+ndefinition set_ps_map_RS08 ≝ 
+λalu.λpsm':byte8.
+ mk_alu_RS08
+  (acc_low_reg_RS08 alu)
+  (pc_reg_RS08 alu)
+  (pc_mask_RS08 alu)
+  (spc_reg_RS08 alu)
+  (x_map_RS08 alu)
+  psm'
+  (z_flag_RS08 alu)
+  (c_flag_RS08 alu).
+
+(* setter forte di memory mapped PS *)
+ndefinition set_ps_map ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λpsm':byte8.
+ opt_map … (match m return aux_set_typing_opt byte8 with
+             [ HC05 ⇒ None ?
+             | HC08 ⇒ None ?
+             | HCS08 ⇒ None ?
+             | RS08 ⇒ Some ? set_ps_map_RS08 ])
+ (λf.Some ? (set_alu m t s (f (alu m t s) psm'))).
+
+(* setter debole di memory mapped PS *)
+ndefinition setweak_ps_map ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λpsm':byte8.
+ match set_ps_map m t s psm' with
+  [ None ⇒ s | Some s' ⇒ s' ].
+
+(* FLAG V *)
+
+(* setter specifico HC08/HCS08 di V *)
+ndefinition set_v_flag_HC08 ≝
+λalu.λvfl':bool.
+ mk_alu_HC08
+  (acc_low_reg_HC08 alu)
+  (indX_low_reg_HC08 alu)
+  (indX_high_reg_HC08 alu)
+  (sp_reg_HC08 alu)
+  (pc_reg_HC08 alu)
+  vfl'
+  (h_flag_HC08 alu)
+  (i_flag_HC08 alu)
+  (n_flag_HC08 alu)
+  (z_flag_HC08 alu)
+  (c_flag_HC08 alu)
+  (irq_flag_HC08 alu).
+
+(* setter forte di V *)
+ndefinition set_v_flag ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λvfl':bool.
+ opt_map … (match m return aux_set_typing_opt bool with
+             [ HC05 ⇒ None ?
+             | HC08 ⇒ Some ? set_v_flag_HC08
+             | HCS08 ⇒ Some ? set_v_flag_HC08
+             | RS08 ⇒ None ? ])
+ (λf.Some ? (set_alu m t s (f (alu m t s) vfl'))).
+
+(* setter debole  di V *)
+ndefinition setweak_v_flag ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λvfl':bool.
+ match set_v_flag m t s vfl' with
+  [ None ⇒ s | Some s' ⇒ s' ].
+
+(* FLAG H *)
+
+(* setter specifico HC05 di H *)
+ndefinition set_h_flag_HC05 ≝
+λalu.λhfl':bool.
+ mk_alu_HC05
+  (acc_low_reg_HC05 alu)
+  (indX_low_reg_HC05 alu)
+  (sp_reg_HC05 alu)
+  (sp_mask_HC05 alu)
+  (sp_fix_HC05 alu)
+  (pc_reg_HC05 alu)
+  (pc_mask_HC05 alu)
+  hfl'
+  (i_flag_HC05 alu)
+  (n_flag_HC05 alu)
+  (z_flag_HC05 alu)
+  (c_flag_HC05 alu)
+  (irq_flag_HC05 alu).
+
+(* setter specifico HC08/HCS08 di H *)
+ndefinition set_h_flag_HC08 ≝
+λalu.λhfl':bool.
+ mk_alu_HC08
+  (acc_low_reg_HC08 alu)
+  (indX_low_reg_HC08 alu)
+  (indX_high_reg_HC08 alu)
+  (sp_reg_HC08 alu)
+  (pc_reg_HC08 alu)
+  (v_flag_HC08 alu)
+  hfl'
+  (i_flag_HC08 alu)
+  (n_flag_HC08 alu)
+  (z_flag_HC08 alu)
+  (c_flag_HC08 alu)
+  (irq_flag_HC08 alu).
+
+(* setter forte di H *)
+ndefinition set_h_flag ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λhfl':bool.
+ opt_map … (match m return aux_set_typing_opt bool with
+             [ HC05 ⇒ Some ? set_h_flag_HC05
+             | HC08 ⇒ Some ? set_h_flag_HC08
+             | HCS08 ⇒ Some ? set_h_flag_HC08
+             | RS08 ⇒ None ? ])
+ (λf.Some ? (set_alu m t s (f (alu m t s) hfl'))).
+
+(* setter debole di H *)
+ndefinition setweak_h_flag ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λhfl':bool.
+ match set_h_flag m t s hfl' with
+  [ None ⇒ s | Some s' ⇒ s' ].
+
+(* FLAG I *)
+
+(* setter specifico HC05 di I *)
+ndefinition set_i_flag_HC05 ≝
+λalu.λifl':bool.
+ mk_alu_HC05
+  (acc_low_reg_HC05 alu)
+  (indX_low_reg_HC05 alu)
+  (sp_reg_HC05 alu)
+  (sp_mask_HC05 alu)
+  (sp_fix_HC05 alu)
+  (pc_reg_HC05 alu)
+  (pc_mask_HC05 alu)
+  (h_flag_HC05 alu)
+  ifl'
+  (n_flag_HC05 alu)
+  (z_flag_HC05 alu)
+  (c_flag_HC05 alu)
+  (irq_flag_HC05 alu).
+
+(* setter specifico HC08/HCS08 di I *)
+ndefinition set_i_flag_HC08 ≝
+λalu.λifl':bool.
+ mk_alu_HC08
+  (acc_low_reg_HC08 alu)
+  (indX_low_reg_HC08 alu)
+  (indX_high_reg_HC08 alu)
+  (sp_reg_HC08 alu)
+  (pc_reg_HC08 alu)
+  (v_flag_HC08 alu)
+  (h_flag_HC08 alu)
+  ifl'
+  (n_flag_HC08 alu)
+  (z_flag_HC08 alu)
+  (c_flag_HC08 alu)
+  (irq_flag_HC08 alu).
+
+(* setter forte di I *)
+ndefinition set_i_flag ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λifl':bool.
+ opt_map … (match m return aux_set_typing_opt bool with
+             [ HC05 ⇒ Some ? set_i_flag_HC05
+             | HC08 ⇒ Some ? set_i_flag_HC08
+             | HCS08 ⇒ Some ? set_i_flag_HC08
+             | RS08 ⇒ None ? ])
+ (λf.Some ? (set_alu m t s (f (alu m t s) ifl'))).
+
+(* setter debole di I *)
+ndefinition setweak_i_flag ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λifl':bool.
+ match set_i_flag m t s ifl' with
+  [ None ⇒ s | Some s' ⇒ s' ].
+
+(* FLAG N *)
+
+(* setter specifico HC05 di N *)
+ndefinition set_n_flag_HC05 ≝
+λalu.λnfl':bool.
+ mk_alu_HC05
+  (acc_low_reg_HC05 alu)
+  (indX_low_reg_HC05 alu)
+  (sp_reg_HC05 alu)
+  (sp_mask_HC05 alu)
+  (sp_fix_HC05 alu)
+  (pc_reg_HC05 alu)
+  (pc_mask_HC05 alu)
+  (h_flag_HC05 alu)
+  (i_flag_HC05 alu)
+  nfl'
+  (z_flag_HC05 alu)
+  (c_flag_HC05 alu)
+  (irq_flag_HC05 alu).
+
+(* setter specifico HC08/HCS08 di N *)
+ndefinition set_n_flag_HC08 ≝
+λalu.λnfl':bool.
+ mk_alu_HC08
+  (acc_low_reg_HC08 alu)
+  (indX_low_reg_HC08 alu)
+  (indX_high_reg_HC08 alu)
+  (sp_reg_HC08 alu)
+  (pc_reg_HC08 alu)
+  (v_flag_HC08 alu)
+  (h_flag_HC08 alu)
+  (i_flag_HC08 alu)
+  nfl'
+  (z_flag_HC08 alu)
+  (c_flag_HC08 alu)
+  (irq_flag_HC08 alu).
+
+(* setter forte di N *)
+ndefinition set_n_flag ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λnfl':bool.
+ opt_map … (match m return aux_set_typing_opt bool with
+             [ HC05 ⇒ Some ? set_n_flag_HC05
+             | HC08 ⇒ Some ? set_n_flag_HC08
+             | HCS08 ⇒ Some ? set_n_flag_HC08
+             | RS08 ⇒ None ? ])
+ (λf.Some ? (set_alu m t s (f (alu m t s) nfl'))).
+
+(* setter debole di N *)
+ndefinition setweak_n_flag ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λnfl':bool.
+ match set_n_flag m t s nfl' with
+  [ None ⇒ s | Some s' ⇒ s' ].
+
+(* FLAG Z *)
+
+(* setter specifico HC05 di Z *)
+ndefinition set_z_flag_HC05 ≝
+λalu.λzfl':bool.
+ mk_alu_HC05
+  (acc_low_reg_HC05 alu)
+  (indX_low_reg_HC05 alu)
+  (sp_reg_HC05 alu)
+  (sp_mask_HC05 alu)
+  (sp_fix_HC05 alu)
+  (pc_reg_HC05 alu)
+  (pc_mask_HC05 alu)
+  (h_flag_HC05 alu)
+  (i_flag_HC05 alu)
+  (n_flag_HC05 alu)
+  zfl'
+  (c_flag_HC05 alu)
+  (irq_flag_HC05 alu).
+
+(* setter specifico HC08/HCS08 di Z *)
+ndefinition set_z_flag_HC08 ≝
+λalu.λzfl':bool.
+ mk_alu_HC08
+  (acc_low_reg_HC08 alu)
+  (indX_low_reg_HC08 alu)
+  (indX_high_reg_HC08 alu)
+  (sp_reg_HC08 alu)
+  (pc_reg_HC08 alu)
+  (v_flag_HC08 alu)
+  (h_flag_HC08 alu)
+  (i_flag_HC08 alu)
+  (n_flag_HC08 alu)
+  zfl'
+  (c_flag_HC08 alu)
+  (irq_flag_HC08 alu).
+
+(* setter sprcifico RS08 di Z *)
+ndefinition set_z_flag_RS08 ≝ 
+λalu.λzfl':bool.
+ mk_alu_RS08
+  (acc_low_reg_RS08 alu)
+  (pc_reg_RS08 alu)
+  (pc_mask_RS08 alu)
+  (spc_reg_RS08 alu)
+  (x_map_RS08 alu)
+  (ps_map_RS08 alu)
+  zfl'
+  (c_flag_RS08 alu).
+
+(* setter forte di Z *)
+ndefinition set_z_flag ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λzfl':bool.
+ set_alu m t s 
+ (match m return aux_set_typing bool with
+  [ HC05 ⇒ set_z_flag_HC05
+  | HC08 ⇒ set_z_flag_HC08
+  | HCS08 ⇒ set_z_flag_HC08
+  | RS08 ⇒ set_z_flag_RS08
+  ] (alu m t s) zfl').
+
+(* FLAG C *)
+
+(* setter specifico HC05 di C *)
+ndefinition set_c_flag_HC05 ≝
+λalu.λcfl':bool.
+ mk_alu_HC05
+  (acc_low_reg_HC05 alu)
+  (indX_low_reg_HC05 alu)
+  (sp_reg_HC05 alu)
+  (sp_mask_HC05 alu)
+  (sp_fix_HC05 alu)
+  (pc_reg_HC05 alu)
+  (pc_mask_HC05 alu)
+  (h_flag_HC05 alu)
+  (i_flag_HC05 alu)
+  (n_flag_HC05 alu)
+  (z_flag_HC05 alu)
+  cfl'
+  (irq_flag_HC05 alu).
+
+(* setter specifico HC08/HCS08 di C *)
+ndefinition set_c_flag_HC08 ≝
+λalu.λcfl':bool.
+ mk_alu_HC08
+  (acc_low_reg_HC08 alu)
+  (indX_low_reg_HC08 alu)
+  (indX_high_reg_HC08 alu)
+  (sp_reg_HC08 alu)
+  (pc_reg_HC08 alu)
+  (v_flag_HC08 alu)
+  (h_flag_HC08 alu)
+  (i_flag_HC08 alu)
+  (n_flag_HC08 alu)
+  (z_flag_HC08 alu)
+  cfl'
+  (irq_flag_HC08 alu).
+
+(* setter specifico RS08 di C *)
+ndefinition set_c_flag_RS08 ≝ 
+λalu.λcfl':bool.
+ mk_alu_RS08
+  (acc_low_reg_RS08 alu)
+  (pc_reg_RS08 alu)
+  (pc_mask_RS08 alu)
+  (spc_reg_RS08 alu)
+  (x_map_RS08 alu)
+  (ps_map_RS08 alu)
+  (z_flag_RS08 alu)
+  cfl'.
+
+(* setter forte di C *)
+ndefinition set_c_flag ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λcfl':bool.
+ set_alu m t s 
+ (match m return aux_set_typing bool with
+  [ HC05 ⇒ set_c_flag_HC05
+  | HC08 ⇒ set_c_flag_HC08
+  | HCS08 ⇒ set_c_flag_HC08
+  | RS08 ⇒ set_c_flag_RS08
+  ] (alu m t s) cfl').
+
+(* FLAG IRQ *)
+
+(* setter specifico HC05 di IRQ *)
+ndefinition set_irq_flag_HC05 ≝
+λalu.λirqfl':bool.
+ mk_alu_HC05
+  (acc_low_reg_HC05 alu)
+  (indX_low_reg_HC05 alu)
+  (sp_reg_HC05 alu)
+  (sp_mask_HC05 alu)
+  (sp_fix_HC05 alu)
+  (pc_reg_HC05 alu)
+  (pc_mask_HC05 alu)
+  (h_flag_HC05 alu)
+  (i_flag_HC05 alu)
+  (n_flag_HC05 alu)
+  (z_flag_HC05 alu)
+  (c_flag_HC05 alu)
+  irqfl'.
+
+(* setter specifico HC08/HCS08 di IRQ *)
+ndefinition set_irq_flag_HC08 ≝
+λalu.λirqfl':bool.
+ mk_alu_HC08
+  (acc_low_reg_HC08 alu)
+  (indX_low_reg_HC08 alu)
+  (indX_high_reg_HC08 alu)
+  (sp_reg_HC08 alu)
+  (pc_reg_HC08 alu)
+  (v_flag_HC08 alu)
+  (h_flag_HC08 alu)
+  (i_flag_HC08 alu)
+  (n_flag_HC08 alu)
+  (z_flag_HC08 alu)
+  (c_flag_HC08 alu)
+  irqfl'.
+
+(* setter forte di IRQ *)
+ndefinition set_irq_flag ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λirqfl':bool.
+ opt_map … (match m return aux_set_typing_opt bool with
+             [ HC05 ⇒ Some ? set_irq_flag_HC05
+             | HC08 ⇒ Some ? set_irq_flag_HC08
+             | HCS08 ⇒ Some ? set_irq_flag_HC08
+             | RS08 ⇒ None ? ])
+ (λf.Some ? (set_alu m t s (f (alu m t s) irqfl'))).
+
+(* setter debole di IRQ *)
+ndefinition setweak_irq_flag ≝
+λm:mcu_type.λt:memory_impl.λs:any_status m t.λirqfl':bool.
+ match set_irq_flag m t s irqfl' with
+  [ None ⇒ s | Some s' ⇒ s' ].
+
+(* ***************** *)
+(* CONFRONTO FRA ALU *)
+(* ***************** *)
+
+(* confronto registro per registro dell'HC05 *)
+ndefinition eq_aluHC05 ≝
+λalu1,alu2:alu_HC05.
+ match alu1 with
+  [ mk_alu_HC05 acclow1 indxlow1 sp1 spm1 spf1 pc1 pcm1 hfl1 ifl1 nfl1 zfl1 cfl1 irqfl1 ⇒
+ match alu2 with
+  [ mk_alu_HC05 acclow2 indxlow2 sp2 spm2 spf2 pc2 pcm2 hfl2 ifl2 nfl2 zfl2 cfl2 irqfl2 ⇒
+   (eq_b8 acclow1 acclow2) ⊗
+   (eq_b8 indxlow1 indxlow2) ⊗
+   (eq_w16 sp1 sp2) ⊗
+   (eq_w16 spm1 spm2) ⊗
+   (eq_w16 spf1 spf2) ⊗
+   (eq_w16 pc1 pc2) ⊗
+   (eq_w16 pcm1 pcm2) ⊗
+   (eq_bool hfl1 hfl2) ⊗
+   (eq_bool ifl1 ifl2) ⊗
+   (eq_bool nfl1 nfl2) ⊗
+   (eq_bool zfl1 zfl2) ⊗
+   (eq_bool cfl1 cfl2) ⊗
+   (eq_bool irqfl1 irqfl2) ]].
+
+(* confronto registro per registro dell'HC08 *)
+ndefinition eq_aluHC08 ≝
+λalu1,alu2:alu_HC08.
+ match alu1 with
+  [ mk_alu_HC08 acclow1 indxlow1 indxhigh1 sp1 pc1 vfl1 hfl1 ifl1 nfl1 zfl1 cfl1 irqfl1 ⇒
+ match alu2 with
+  [ mk_alu_HC08 acclow2 indxlow2 indxhigh2 sp2 pc2 vfl2 hfl2 ifl2 nfl2 zfl2 cfl2 irqfl2 ⇒
+   (eq_b8 acclow1 acclow2) ⊗
+   (eq_b8 indxlow1 indxlow2) ⊗
+   (eq_b8 indxhigh1 indxhigh2) ⊗
+   (eq_w16 sp1 sp2) ⊗
+   (eq_w16 pc1 pc2) ⊗
+   (eq_bool vfl1 vfl2) ⊗
+   (eq_bool hfl1 hfl2) ⊗
+   (eq_bool ifl1 ifl2) ⊗
+   (eq_bool nfl1 nfl2) ⊗
+   (eq_bool zfl1 zfl2) ⊗
+   (eq_bool cfl1 cfl2) ⊗
+   (eq_bool irqfl1 irqfl2) ]].
+
+(* confronto registro per registro dell'RS08 *)
+ndefinition eq_aluRS08 ≝
+λalu1,alu2:alu_RS08.
+ match alu1 with
+  [ mk_alu_RS08 acclow1 pc1 pcm1 spc1 xm1 psm1 zfl1 cfl1 ⇒
+ match alu2 with
+  [ mk_alu_RS08 acclow2 pc2 pcm2 spc2 xm2 psm2 zfl2 cfl2 ⇒
+   (eq_b8 acclow1 acclow2) ⊗
+   (eq_w16 pc1 pc2) ⊗
+   (eq_w16 pcm1 pcm2) ⊗
+   (eq_w16 spc1 spc2) ⊗
+   (eq_b8 xm1 xm2) ⊗
+   (eq_b8 psm1 psm2) ⊗
+   (eq_bool zfl1 zfl2) ⊗
+   (eq_bool cfl1 cfl2) ]].
+
+(* ******************** *)
+(* CONFRONTO FRA STATUS *)
+(* ******************** *)
+
+(* confronto di una regione di memoria [addr1 ; ... ; addrn] *)
+nlet rec forall_memory_ranged
+ (t:memory_impl)
+ (chk1:aux_chk_type t) (chk2:aux_chk_type t)
+ (mem1:aux_mem_type t) (mem2:aux_mem_type t)
+ (addrl:list word16) on addrl ≝
+ match addrl return λ_.bool with
+  [ nil ⇒ true
+  | cons hd tl ⇒ (eq_option byte8 (mem_read t mem1 chk1 hd)
+                            (mem_read t mem2 chk2 hd) eq_b8) ⊗
+                 (forall_memory_ranged t chk1 chk2 mem1 mem2 tl)
+  ].
+
+(* il clk e' option (Prod5T byte8 (any_opcode m) (instr_mode) byte8 word16) *)
+ndefinition eq_clk ≝
+λm:mcu_type.λc1,c2:option (Prod5T byte8 (any_opcode m) (instr_mode) byte8 word16).
+ match c1 with
+  [ None ⇒ match c2 with
+   [ None ⇒ true | Some _ ⇒ false ]
+  | Some c1' ⇒ match c2 with
+   [ None ⇒ false | Some c2' ⇒ (eq_b8 (fst5T … c1') (fst5T … c2')) ⊗
+                               (eq_anyop m (snd5T … c1') (snd5T … c2')) ⊗
+                               (eq_im (thd5T … c1') (thd5T … c2')) ⊗
+                               (eq_b8 (frth5T … c1') (frth5T … c2')) ⊗
+                               (eq_w16 (ffth5T … c1') (ffth5T … c2')) ]
+  ].
+
+(* generalizzazione del confronto fra stati *)
+ndefinition eq_anystatus ≝
+λm:mcu_type.λt:memory_impl.λs1,s2:any_status m t.λaddrl:list word16.
+ match s1 with [ mk_any_status alu1 mem1 chk1 clk1 ⇒
+ match s2 with [ mk_any_status alu2 mem2 chk2 clk2 ⇒
+
+ (* 1) confronto della ALU *)
+ (match m return λm:mcu_type.
+   match m with
+    [ HC05 ⇒ alu_HC05 | HC08 ⇒ alu_HC08 | HCS08 ⇒ alu_HC08 | RS08 ⇒ alu_RS08 ] →
+   match m with
+    [ HC05 ⇒ alu_HC05 | HC08 ⇒ alu_HC08 | HCS08 ⇒ alu_HC08 | RS08 ⇒ alu_RS08 ] →
+   bool with
+  [ HC05 ⇒ eq_aluHC05 | HC08 ⇒ eq_aluHC08 | HCS08 ⇒ eq_aluHC08 | RS08 ⇒ eq_aluRS08 ]
+ alu1 alu2) ⊗
+
+ (* 2) confronto della memoria in [inf,inf+n] *)
+ (forall_memory_ranged t chk1 chk2 mem1 mem2 addrl) ⊗
+
+ (* 3) confronto del clik *)
+ (eq_clk m clk1 clk2)
+ ]].
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/status_lemmas.ma b/helm/software/matita/contribs/ng_assembly/freescale/status_lemmas.ma
new file mode 100755 (executable)
index 0000000..0be7272
--- /dev/null
@@ -0,0 +1,1536 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "num/word16_lemmas.ma".
+include "freescale/opcode_base_lemmas1.ma".
+include "freescale/status.ma".
+include "common/option_lemmas.ma".
+include "common/prod_lemmas.ma".
+
+(* *********************************** *)
+(* STATUS INTERNO DEL PROCESSORE (ALU) *)
+(* *********************************** *)
+
+nlemma aluHC05_destruct_1 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 = mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 →
+ x1 = y1.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13; #H;
+ nchange with (match mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13
+                with [ mk_alu_HC05 a _ _ _ _ _ _ _ _ _ _ _ _ ⇒ x1 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC05_destruct_2 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 = mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 →
+ x2 = y2.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13; #H;
+ nchange with (match mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13
+                with [ mk_alu_HC05 _ a _ _ _ _ _ _ _ _ _ _ _ ⇒ x2 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC05_destruct_3 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 = mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 →
+ x3 = y3.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13; #H;
+ nchange with (match mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13
+                with [ mk_alu_HC05 _ _ a _ _ _ _ _ _ _ _ _ _ ⇒ x3 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC05_destruct_4 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 = mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 →
+ x4 = y4.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13; #H;
+ nchange with (match mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13
+                with [ mk_alu_HC05 _ _ _ a _ _ _ _ _ _ _ _ _ ⇒ x4 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC05_destruct_5 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 = mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 →
+ x5 = y5.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13; #H;
+ nchange with (match mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13
+                with [ mk_alu_HC05 _ _ _ _ a _ _ _ _ _ _ _ _ ⇒ x5 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC05_destruct_6 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 = mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 →
+ x6 = y6.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13; #H;
+ nchange with (match mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13
+                with [ mk_alu_HC05 _ _ _ _ _ a _ _ _ _ _ _ _ ⇒ x6 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC05_destruct_7 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 = mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 →
+ x7 = y7.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13; #H;
+ nchange with (match mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13
+                with [ mk_alu_HC05 _ _ _ _ _ _ a _ _ _ _ _ _ ⇒ x7 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC05_destruct_8 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 = mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 →
+ x8 = y8.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13; #H;
+ nchange with (match mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13
+                with [ mk_alu_HC05 _ _ _ _ _ _ _ a _ _ _ _ _ ⇒ x8 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC05_destruct_9 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 = mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 →
+ x9 = y9.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13; #H;
+ nchange with (match mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13
+                with [ mk_alu_HC05 _ _ _ _ _ _ _ _ a _ _ _ _ ⇒ x9 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC05_destruct_10 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 = mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 →
+ x10 = y10.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13; #H;
+ nchange with (match mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13
+                with [ mk_alu_HC05 _ _ _ _ _ _ _ _ _ a _ _ _ ⇒ x10 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC05_destruct_11 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 = mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 →
+ x11 = y11.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13; #H;
+ nchange with (match mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13
+                with [ mk_alu_HC05 _ _ _ _ _ _ _ _ _ _ a _ _ ⇒ x11 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC05_destruct_12 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 = mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 →
+ x12 = y12.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13; #H;
+ nchange with (match mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13
+                with [ mk_alu_HC05 _ _ _ _ _ _ _ _ _ _ _ a _ ⇒ x12 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC05_destruct_13 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 = mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 →
+ x13 = y13.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13; #H;
+ nchange with (match mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13
+                with [ mk_alu_HC05 _ _ _ _ _ _ _ _ _ _ _ _ a ⇒ x13 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma symmetric_eqaluHC05 : symmetricT alu_HC05 bool eq_aluHC05.
+ #alu1; #alu2;
+ ncases alu1;
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ ncases alu2;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13;
+ nchange with (
+  ((eq_b8 x1 y1) ⊗ (eq_b8 x2 y2) ⊗ (eq_w16 x3 y3) ⊗ (eq_w16 x4 y4) ⊗
+  (eq_w16 x5 y5) ⊗ (eq_w16 x6 y6) ⊗  (eq_w16 x7 y7) ⊗ (eq_bool x8 y8) ⊗
+  (eq_bool x9 y9) ⊗ (eq_bool x10 y10) ⊗  (eq_bool x11 y11) ⊗ (eq_bool x12 y12) ⊗
+  (eq_bool x13 y13)) = ((eq_b8 y1 x1) ⊗  (eq_b8 y2 x2) ⊗ (eq_w16 y3 x3) ⊗
+  (eq_w16 y4 x4) ⊗ (eq_w16 y5 x5) ⊗  (eq_w16 y6 x6) ⊗ (eq_w16 y7 x7) ⊗
+  (eq_bool y8 x8) ⊗ (eq_bool y9 x9) ⊗  (eq_bool y10 x10) ⊗ (eq_bool y11 x11) ⊗
+  (eq_bool y12 x12) ⊗ (eq_bool y13 x13)));
+ nrewrite > (symmetric_eqb8 x1 y1);
+ nrewrite > (symmetric_eqb8 x2 y2);
+ nrewrite > (symmetric_eqw16 x3 y3);
+ nrewrite > (symmetric_eqw16 x4 y4);
+ nrewrite > (symmetric_eqw16 x5 y5);
+ nrewrite > (symmetric_eqw16 x6 y6);
+ nrewrite > (symmetric_eqw16 x7 y7);
+ nrewrite > (symmetric_eqbool x8 y8);
+ nrewrite > (symmetric_eqbool x9 y9);
+ nrewrite > (symmetric_eqbool x10 y10);
+ nrewrite > (symmetric_eqbool x11 y11);
+ nrewrite > (symmetric_eqbool x12 y12);
+ nrewrite > (symmetric_eqbool x13 y13);
+ napply refl_eq.
+nqed.
+
+nlemma eqaluHC05_to_eq : ∀alu1,alu2.eq_aluHC05 alu1 alu2 = true → alu1 = alu2.
+ #alu1; #alu2;
+ ncases alu1;
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ ncases alu2;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13; #H;
+ nchange in H:(%) with (
+ ((eq_b8 x1 y1) ⊗ (eq_b8 x2 y2) ⊗
+  (eq_w16 x3 y3) ⊗ (eq_w16 x4 y4) ⊗
+  (eq_w16 x5 y5) ⊗ (eq_w16 x6 y6) ⊗
+  (eq_w16 x7 y7) ⊗ (eq_bool x8 y8) ⊗
+  (eq_bool x9 y9) ⊗ (eq_bool x10 y10) ⊗
+  (eq_bool x11 y11) ⊗ (eq_bool x12 y12) ⊗
+  (eq_bool x13 y13)) = true);  
+ nrewrite > (eqbool_to_eq … (andb_true_true_r … H));
+ nletin H1 ≝ (andb_true_true_l … H);
+ nrewrite > (eqbool_to_eq x12 y12 (andb_true_true_r … (andb_true_true_l … H)));
+ nletin H2 ≝ (andb_true_true_l … H1);
+ nrewrite > (eqbool_to_eq … (andb_true_true_r … H2));
+ nletin H3 ≝ (andb_true_true_l … H2);
+ nrewrite > (eqbool_to_eq … (andb_true_true_r … H3));
+ nletin H4 ≝ (andb_true_true_l … H3);
+ nrewrite > (eqbool_to_eq … (andb_true_true_r … H4));
+ nletin H5 ≝ (andb_true_true_l … H4);
+ nrewrite > (eqbool_to_eq … (andb_true_true_r … H5));
+ nletin H6 ≝ (andb_true_true_l … H5);
+ nrewrite > (eqw16_to_eq … (andb_true_true_r … H6));
+ nletin H7 ≝ (andb_true_true_l … H6);
+ nrewrite > (eqw16_to_eq … (andb_true_true_r … H7));
+ nletin H8 ≝ (andb_true_true_l … H7);
+ nrewrite > (eqw16_to_eq … (andb_true_true_r … H8));
+ nletin H9 ≝ (andb_true_true_l … H8);
+ nrewrite > (eqw16_to_eq … (andb_true_true_r … H9));
+ nletin H10 ≝ (andb_true_true_l … H9);
+ nrewrite > (eqw16_to_eq … (andb_true_true_r … H10));
+ nletin H11 ≝ (andb_true_true_l … H10);
+ nrewrite > (eqb8_to_eq … (andb_true_true_r … H11));
+ nrewrite > (eqb8_to_eq … (andb_true_true_l … H11));
+ napply refl_eq.
+nqed.
+
+nlemma eq_to_eqaluHC05 : ∀alu1,alu2.alu1 = alu2 → eq_aluHC05 alu1 alu2 = true.
+ #alu1; #alu2;
+ ncases alu1;
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ ncases alu2;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13; #H;
+ nrewrite > (aluHC05_destruct_1 … H);
+ nrewrite > (aluHC05_destruct_2 … H);
+ nrewrite > (aluHC05_destruct_3 … H);
+ nrewrite > (aluHC05_destruct_4 … H);
+ nrewrite > (aluHC05_destruct_5 … H);
+ nrewrite > (aluHC05_destruct_6 … H);
+ nrewrite > (aluHC05_destruct_7 … H);
+ nrewrite > (aluHC05_destruct_8 … H);
+ nrewrite > (aluHC05_destruct_9 … H);
+ nrewrite > (aluHC05_destruct_10 … H);
+ nrewrite > (aluHC05_destruct_11 … H);
+ nrewrite > (aluHC05_destruct_12 … H);
+ nrewrite > (aluHC05_destruct_13 … H);
+ nchange with (
+ ((eq_b8 y1 y1) ⊗ (eq_b8 y2 y2) ⊗
+  (eq_w16 y3 y3) ⊗ (eq_w16 y4 y4) ⊗
+  (eq_w16 y5 y5) ⊗ (eq_w16 y6 y6) ⊗
+  (eq_w16 y7 y7) ⊗ (eq_bool y8 y8) ⊗
+  (eq_bool y9 y9) ⊗ (eq_bool y10 y10) ⊗
+  (eq_bool y11 y11) ⊗ (eq_bool y12 y12) ⊗
+  (eq_bool y13 y13)) = true); 
+ nrewrite > (eq_to_eqb8 y1 y1 (refl_eq …));
+ nrewrite > (eq_to_eqb8 y2 y2 (refl_eq …));
+ nrewrite > (eq_to_eqw16 y3 y3 (refl_eq …));
+ nrewrite > (eq_to_eqw16 y4 y4 (refl_eq …));
+ nrewrite > (eq_to_eqw16 y5 y5 (refl_eq …));
+ nrewrite > (eq_to_eqw16 y6 y6 (refl_eq …));
+ nrewrite > (eq_to_eqw16 y7 y7 (refl_eq …));
+ nrewrite > (eq_to_eqbool y8 y8 (refl_eq …));
+ nrewrite > (eq_to_eqbool y9 y9 (refl_eq …));
+ nrewrite > (eq_to_eqbool y10 y10 (refl_eq …));
+ nrewrite > (eq_to_eqbool y11 y11 (refl_eq …));
+ nrewrite > (eq_to_eqbool y12 y12 (refl_eq …));
+ nrewrite > (eq_to_eqbool y13 y13 (refl_eq …));
+ napply refl_eq.
+nqed.
+
+nlemma decidable_aluHC05_aux1
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ (x1 ≠ y1) →
+ (mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) ≠
+ (mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13;
+ nnormalize; #H; #H1;
+ napply (H (aluHC05_destruct_1 … H1)).
+nqed.
+
+nlemma decidable_aluHC05_aux2
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ (x2 ≠ y2) →
+ (mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) ≠
+ (mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13;
+ nnormalize; #H; #H1;
+ napply (H (aluHC05_destruct_2 … H1)).
+nqed.
+
+nlemma decidable_aluHC05_aux3
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ (x3 ≠ y3) →
+ (mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) ≠
+ (mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13;
+ nnormalize; #H; #H1;
+ napply (H (aluHC05_destruct_3 … H1)).
+nqed.
+
+nlemma decidable_aluHC05_aux4
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ (x4 ≠ y4) →
+ (mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) ≠
+ (mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13;
+ nnormalize; #H; #H1;
+ napply (H (aluHC05_destruct_4 … H1)).
+nqed.
+
+nlemma decidable_aluHC05_aux5
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ (x5 ≠ y5) →
+ (mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) ≠
+ (mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13;
+ nnormalize; #H; #H1;
+ napply (H (aluHC05_destruct_5 … H1)).
+nqed.
+
+nlemma decidable_aluHC05_aux6
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ (x6 ≠ y6) →
+ (mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) ≠
+ (mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13;
+ nnormalize; #H; #H1;
+ napply (H (aluHC05_destruct_6 … H1)).
+nqed.
+
+nlemma decidable_aluHC05_aux7
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ (x7 ≠ y7) →
+ (mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) ≠
+ (mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13;
+ nnormalize; #H; #H1;
+ napply (H (aluHC05_destruct_7 … H1)).
+nqed.
+
+nlemma decidable_aluHC05_aux8
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ (x8 ≠ y8) →
+ (mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) ≠
+ (mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13;
+ nnormalize; #H; #H1;
+ napply (H (aluHC05_destruct_8 … H1)).
+nqed.
+
+nlemma decidable_aluHC05_aux9
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ (x9 ≠ y9) →
+ (mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) ≠
+ (mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13;
+ nnormalize; #H; #H1;
+ napply (H (aluHC05_destruct_9 … H1)).
+nqed.
+
+nlemma decidable_aluHC05_aux10
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ (x10 ≠ y10) →
+ (mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) ≠
+ (mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13;
+ nnormalize; #H; #H1;
+ napply (H (aluHC05_destruct_10 … H1)).
+nqed.
+
+nlemma decidable_aluHC05_aux11
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ (x11 ≠ y11) →
+ (mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) ≠
+ (mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13;
+ nnormalize; #H; #H1;
+ napply (H (aluHC05_destruct_11 … H1)).
+nqed.
+
+nlemma decidable_aluHC05_aux12
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ (x12 ≠ y12) →
+ (mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) ≠
+ (mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13;
+ nnormalize; #H; #H1;
+ napply (H (aluHC05_destruct_12 … H1)).
+nqed.
+
+nlemma decidable_aluHC05_aux13
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13.
+ (x13 ≠ y13) →
+ (mk_alu_HC05 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) ≠
+ (mk_alu_HC05 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13;
+ nnormalize; #H; #H1;
+ napply (H (aluHC05_destruct_13 … H1)).
+nqed.
+
+nlemma decidable_aluHC05 : ∀x,y:alu_HC05.decidable (x = y).
+ #x; nelim x; #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12; #x13;
+ #y; nelim y; #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #y13;
+ nnormalize;
+ napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_b8 x1 y1) …);
+ ##[ ##2: #H; napply (or2_intro2 … (decidable_aluHC05_aux1 … H))
+ ##| ##1: #H; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_b8 x2 y2) …);
+  ##[ ##2: #H1; napply (or2_intro2 … (decidable_aluHC05_aux2 … H1))
+  ##| ##1: #H1; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_w16 x3 y3) …);
+   ##[ ##2: #H2; napply (or2_intro2 … (decidable_aluHC05_aux3 … H2))
+   ##| ##1: #H2; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_w16 x4 y4) …);
+    ##[ ##2: #H3; napply (or2_intro2 … (decidable_aluHC05_aux4 … H3))
+    ##| ##1: #H3; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_w16 x5 y5) …);
+     ##[ ##2: #H4; napply (or2_intro2 … (decidable_aluHC05_aux5 … H4))
+     ##| ##1: #H4; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_w16 x6 y6) …);
+      ##[ ##2: #H5; napply (or2_intro2 … (decidable_aluHC05_aux6 … H5))
+      ##| ##1: #H5; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_w16 x7 y7) …);
+       ##[ ##2: #H6; napply (or2_intro2 … (decidable_aluHC05_aux7 … H6))
+       ##| ##1: #H6; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_bool x8 y8) …);
+        ##[ ##2: #H7; napply (or2_intro2 … (decidable_aluHC05_aux8 … H7))
+        ##| ##1: #H7; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_bool x9 y9) …);
+         ##[ ##2: #H8; napply (or2_intro2 … (decidable_aluHC05_aux9 … H8))
+         ##| ##1: #H8; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_bool x10 y10) …);
+          ##[ ##2: #H9; napply (or2_intro2 … (decidable_aluHC05_aux10 … H9))
+          ##| ##1: #H9; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_bool x11 y11) …);
+           ##[ ##2: #H10; napply (or2_intro2 … (decidable_aluHC05_aux11 … H10))
+           ##| ##1: #H10; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_bool x12 y12) …);
+            ##[ ##2: #H11; napply (or2_intro2 … (decidable_aluHC05_aux12 … H11))
+            ##| ##1: #H11; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_bool x13 y13) …);
+             ##[ ##2: #H12; napply (or2_intro2 … (decidable_aluHC05_aux13 … H12))
+             ##| ##1: #H12; nrewrite > H; nrewrite > H1; nrewrite > H2; nrewrite > H3;
+                      nrewrite > H4; nrewrite > H5; nrewrite > H6; nrewrite > H7;
+                      nrewrite > H8; nrewrite > H9; nrewrite > H10; nrewrite > H11;
+                      nrewrite > H12; napply (or2_intro1 (? = ?) (? ≠ ?) (refl_eq …))
+             ##]
+            ##]
+           ##]
+          ##]
+         ##]
+        ##]
+       ##]
+      ##]
+     ##]
+    ##]
+   ##]
+  ##]
+ ##]
+nqed.
+
+nlemma aluHC08_destruct_1 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 = mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 →
+ x1 = y1.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #H;
+ nchange with (match mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12
+                with [ mk_alu_HC08 a _ _ _ _ _ _ _ _ _ _ _ ⇒ x1 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC08_destruct_2 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 = mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 →
+ x2 = y2.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #H;
+ nchange with (match mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12
+                with [ mk_alu_HC08 _ a _ _ _ _ _ _ _ _ _ _ ⇒ x2 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC08_destruct_3 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 = mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 →
+ x3 = y3.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #H;
+ nchange with (match mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12
+                with [ mk_alu_HC08 _ _ a _ _ _ _ _ _ _ _ _ ⇒ x3 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC08_destruct_4 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 = mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 →
+ x4 = y4.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #H;
+ nchange with (match mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12
+                with [ mk_alu_HC08 _ _ _ a _ _ _ _ _ _ _ _ ⇒ x4 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC08_destruct_5 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 = mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 →
+ x5 = y5.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #H;
+ nchange with (match mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12
+                with [ mk_alu_HC08 _ _ _ _ a _ _ _ _ _ _ _ ⇒ x5 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC08_destruct_6 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 = mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 →
+ x6 = y6.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #H;
+ nchange with (match mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12
+                with [ mk_alu_HC08 _ _ _ _ _ a _ _ _ _ _ _ ⇒ x6 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC08_destruct_7 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 = mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 →
+ x7 = y7.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #H;
+ nchange with (match mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12
+                with [ mk_alu_HC08 _ _ _ _ _ _ a _ _ _ _ _ ⇒ x7 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC08_destruct_8 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 = mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 →
+ x8 = y8.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #H;
+ nchange with (match mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12
+                with [ mk_alu_HC08 _ _ _ _ _ _ _ a _ _ _ _ ⇒ x8 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC08_destruct_9 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 = mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 →
+ x9 = y9.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #H;
+ nchange with (match mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12
+                with [ mk_alu_HC08 _ _ _ _ _ _ _ _ a _ _ _ ⇒ x9 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC08_destruct_10 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 = mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 →
+ x10 = y10.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #H;
+ nchange with (match mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12
+                with [ mk_alu_HC08 _ _ _ _ _ _ _ _ _ a _ _ ⇒ x10 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC08_destruct_11 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 = mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 →
+ x11 = y11.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #H;
+ nchange with (match mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12
+                with [ mk_alu_HC08 _ _ _ _ _ _ _ _ _ _ a _ ⇒ x11 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluHC08_destruct_12 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 = mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 →
+ x12 = y12.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #H;
+ nchange with (match mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12
+                with [ mk_alu_HC08 _ _ _ _ _ _ _ _ _ _ _ a ⇒ x12 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma symmetric_eqaluHC08 : symmetricT alu_HC08 bool eq_aluHC08.
+ #alu1; #alu2;
+ ncases alu1;
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ ncases alu2;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12;
+ nchange with (
+  ((eq_b8 x1 y1) ⊗ (eq_b8 x2 y2) ⊗ (eq_b8 x3 y3) ⊗ (eq_w16 x4 y4) ⊗
+   (eq_w16 x5 y5) ⊗ (eq_bool x6 y6) ⊗ (eq_bool x7 y7) ⊗ (eq_bool x8 y8) ⊗
+   (eq_bool x9 y9) ⊗ (eq_bool x10 y10) ⊗ (eq_bool x11 y11) ⊗ (eq_bool x12 y12)) =
+   ((eq_b8 y1 x1) ⊗ (eq_b8 y2 x2) ⊗ (eq_b8 y3 x3) ⊗ (eq_w16 y4 x4) ⊗
+   (eq_w16 y5 x5) ⊗ (eq_bool y6 x6) ⊗ (eq_bool y7 x7) ⊗ (eq_bool y8 x8) ⊗
+   (eq_bool y9 x9) ⊗ (eq_bool y10 x10) ⊗ (eq_bool y11 x11) ⊗ (eq_bool y12 x12))); 
+ nrewrite > (symmetric_eqb8 x1 y1);
+ nrewrite > (symmetric_eqb8 x2 y2);
+ nrewrite > (symmetric_eqb8 x3 y3);
+ nrewrite > (symmetric_eqw16 x4 y4);
+ nrewrite > (symmetric_eqw16 x5 y5);
+ nrewrite > (symmetric_eqbool x6 y6);
+ nrewrite > (symmetric_eqbool x7 y7);
+ nrewrite > (symmetric_eqbool x8 y8);
+ nrewrite > (symmetric_eqbool x9 y9);
+ nrewrite > (symmetric_eqbool x10 y10);
+ nrewrite > (symmetric_eqbool x11 y11);
+ nrewrite > (symmetric_eqbool x12 y12);
+ napply refl_eq.
+nqed.
+
+nlemma eqaluHC08_to_eq : ∀alu1,alu2.eq_aluHC08 alu1 alu2 = true → alu1 = alu2.
+ #alu1; #alu2;
+ ncases alu1;
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ ncases alu2;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #H;
+ nchange in H:(%) with (
+ ((eq_b8 x1 y1) ⊗ (eq_b8 x2 y2) ⊗ (eq_b8 x3 y3) ⊗ (eq_w16 x4 y4) ⊗
+  (eq_w16 x5 y5) ⊗ (eq_bool x6 y6) ⊗ (eq_bool x7 y7) ⊗ (eq_bool x8 y8) ⊗
+  (eq_bool x9 y9) ⊗ (eq_bool x10 y10) ⊗ (eq_bool x11 y11) ⊗ (eq_bool x12 y12)) = true);  
+ nrewrite > (eqbool_to_eq … (andb_true_true_r … H));
+ nletin H1 ≝ (andb_true_true_l … H);
+ nrewrite > (eqbool_to_eq … (andb_true_true_r … H1));
+ nletin H2 ≝ (andb_true_true_l … H1);
+ nrewrite > (eqbool_to_eq … (andb_true_true_r … H2));
+ nletin H3 ≝ (andb_true_true_l … H2);
+ nrewrite > (eqbool_to_eq … (andb_true_true_r … H3));
+ nletin H4 ≝ (andb_true_true_l … H3);
+ nrewrite > (eqbool_to_eq … (andb_true_true_r … H4));
+ nletin H5 ≝ (andb_true_true_l … H4);
+ nrewrite > (eqbool_to_eq … (andb_true_true_r … H5));
+ nletin H6 ≝ (andb_true_true_l … H5);
+ nrewrite > (eqbool_to_eq … (andb_true_true_r … H6));
+ nletin H7 ≝ (andb_true_true_l … H6);
+ nrewrite > (eqw16_to_eq … (andb_true_true_r … H7));
+ nletin H8 ≝ (andb_true_true_l … H7);
+ nrewrite > (eqw16_to_eq … (andb_true_true_r … H8));
+ nletin H9 ≝ (andb_true_true_l … H8);
+ nrewrite > (eqb8_to_eq … (andb_true_true_r … H9));
+ nletin H10 ≝ (andb_true_true_l … H9);
+ nrewrite > (eqb8_to_eq … (andb_true_true_r … H10));
+ nrewrite > (eqb8_to_eq … (andb_true_true_l … H10));
+ napply refl_eq.
+nqed.
+
+nlemma eq_to_eqaluHC08 : ∀alu1,alu2.alu1 = alu2 → eq_aluHC08 alu1 alu2 = true.
+ #alu1; #alu2;
+ ncases alu1;
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ ncases alu2;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12; #H;
+ nrewrite > (aluHC08_destruct_1 … H);
+ nrewrite > (aluHC08_destruct_2 … H);
+ nrewrite > (aluHC08_destruct_3 … H);
+ nrewrite > (aluHC08_destruct_4 … H);
+ nrewrite > (aluHC08_destruct_5 … H);
+ nrewrite > (aluHC08_destruct_6 … H);
+ nrewrite > (aluHC08_destruct_7 … H);
+ nrewrite > (aluHC08_destruct_8 … H);
+ nrewrite > (aluHC08_destruct_9 … H);
+ nrewrite > (aluHC08_destruct_10 … H);
+ nrewrite > (aluHC08_destruct_11 … H);
+ nrewrite > (aluHC08_destruct_12 … H);
+ nchange with (
+ ((eq_b8 y1 y1) ⊗ (eq_b8 y2 y2) ⊗ (eq_b8 y3 y3) ⊗ (eq_w16 y4 y4) ⊗
+  (eq_w16 y5 y5) ⊗ (eq_bool y6 y6) ⊗ (eq_bool y7 y7) ⊗ (eq_bool y8 y8) ⊗
+  (eq_bool y9 y9) ⊗ (eq_bool y10 y10) ⊗ (eq_bool y11 y11) ⊗ (eq_bool y12 y12)) = true); 
+ nrewrite > (eq_to_eqb8 y1 y1 (refl_eq …));
+ nrewrite > (eq_to_eqb8 y2 y2 (refl_eq …));
+ nrewrite > (eq_to_eqb8 y3 y3 (refl_eq …));
+ nrewrite > (eq_to_eqw16 y4 y4 (refl_eq …));
+ nrewrite > (eq_to_eqw16 y5 y5 (refl_eq …));
+ nrewrite > (eq_to_eqbool y6 y6 (refl_eq …));
+ nrewrite > (eq_to_eqbool y7 y7 (refl_eq …));
+ nrewrite > (eq_to_eqbool y8 y8 (refl_eq …));
+ nrewrite > (eq_to_eqbool y9 y9 (refl_eq …));
+ nrewrite > (eq_to_eqbool y10 y10 (refl_eq …));
+ nrewrite > (eq_to_eqbool y11 y11 (refl_eq …));
+ nrewrite > (eq_to_eqbool y12 y12 (refl_eq …));
+ napply refl_eq.
+nqed.
+
+nlemma decidable_aluHC08_aux1
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ (x1 ≠ y1) →
+ (mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) ≠
+ (mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12;
+ nnormalize; #H; #H1;
+ napply (H (aluHC08_destruct_1 … H1)).
+nqed.
+
+nlemma decidable_aluHC08_aux2
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ (x2 ≠ y2) →
+ (mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) ≠
+ (mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12;
+ nnormalize; #H; #H1;
+ napply (H (aluHC08_destruct_2 … H1)).
+nqed.
+
+nlemma decidable_aluHC08_aux3
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ (x3 ≠ y3) →
+ (mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) ≠
+ (mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12;
+ nnormalize; #H; #H1;
+ napply (H (aluHC08_destruct_3 … H1)).
+nqed.
+
+nlemma decidable_aluHC08_aux4
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ (x4 ≠ y4) →
+ (mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) ≠
+ (mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12;
+ nnormalize; #H; #H1;
+ napply (H (aluHC08_destruct_4 … H1)).
+nqed.
+
+nlemma decidable_aluHC08_aux5
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ (x5 ≠ y5) →
+ (mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) ≠
+ (mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12;
+ nnormalize; #H; #H1;
+ napply (H (aluHC08_destruct_5 … H1)).
+nqed.
+
+nlemma decidable_aluHC08_aux6
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ (x6 ≠ y6) →
+ (mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) ≠
+ (mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12;
+ nnormalize; #H; #H1;
+ napply (H (aluHC08_destruct_6 … H1)).
+nqed.
+
+nlemma decidable_aluHC08_aux7
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ (x7 ≠ y7) →
+ (mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) ≠
+ (mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12;
+ nnormalize; #H; #H1;
+ napply (H (aluHC08_destruct_7 … H1)).
+nqed.
+
+nlemma decidable_aluHC08_aux8
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ (x8 ≠ y8) →
+ (mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) ≠
+ (mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12;
+ nnormalize; #H; #H1;
+ napply (H (aluHC08_destruct_8 … H1)).
+nqed.
+
+nlemma decidable_aluHC08_aux9
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ (x9 ≠ y9) →
+ (mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) ≠
+ (mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12;
+ nnormalize; #H; #H1;
+ napply (H (aluHC08_destruct_9 … H1)).
+nqed.
+
+nlemma decidable_aluHC08_aux10
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ (x10 ≠ y10) →
+ (mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) ≠
+ (mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12;
+ nnormalize; #H; #H1;
+ napply (H (aluHC08_destruct_10 … H1)).
+nqed.
+
+nlemma decidable_aluHC08_aux11
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ (x11 ≠ y11) →
+ (mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) ≠
+ (mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12;
+ nnormalize; #H; #H1;
+ napply (H (aluHC08_destruct_11 … H1)).
+nqed.
+
+nlemma decidable_aluHC08_aux12
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12.
+ (x12 ≠ y12) →
+ (mk_alu_HC08 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) ≠
+ (mk_alu_HC08 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12;
+ nnormalize; #H; #H1;
+ napply (H (aluHC08_destruct_12 … H1)).
+nqed.
+
+nlemma decidable_aluHC08 : ∀x,y:alu_HC08.decidable (x = y).
+ #x; nelim x; #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8; #x9; #x10; #x11; #x12;
+ #y; nelim y; #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #y9; #y10; #y11; #y12;
+ nnormalize;
+ napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_b8 x1 y1) …);
+ ##[ ##2: #H; napply (or2_intro2 … (decidable_aluHC08_aux1 … H))
+ ##| ##1: #H; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_b8 x2 y2) …);
+  ##[ ##2: #H1; napply (or2_intro2 … (decidable_aluHC08_aux2 … H1))
+  ##| ##1: #H1; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_b8 x3 y3) …);
+   ##[ ##2: #H2; napply (or2_intro2 … (decidable_aluHC08_aux3 … H2))
+   ##| ##1: #H2; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_w16 x4 y4) …);
+    ##[ ##2: #H3; napply (or2_intro2 … (decidable_aluHC08_aux4 … H3))
+    ##| ##1: #H3; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_w16 x5 y5) …);
+     ##[ ##2: #H4; napply (or2_intro2 … (decidable_aluHC08_aux5 … H4))
+     ##| ##1: #H4; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_bool x6 y6) …);
+      ##[ ##2: #H5; napply (or2_intro2 … (decidable_aluHC08_aux6 … H5))
+      ##| ##1: #H5; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_bool x7 y7) …);
+       ##[ ##2: #H6; napply (or2_intro2 … (decidable_aluHC08_aux7 … H6))
+       ##| ##1: #H6; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_bool x8 y8) …);
+        ##[ ##2: #H7; napply (or2_intro2 … (decidable_aluHC08_aux8 … H7))
+        ##| ##1: #H7; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_bool x9 y9) …);
+         ##[ ##2: #H8; napply (or2_intro2 … (decidable_aluHC08_aux9 … H8))
+         ##| ##1: #H8; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_bool x10 y10) …);
+          ##[ ##2: #H9; napply (or2_intro2 … (decidable_aluHC08_aux10 … H9))
+          ##| ##1: #H9; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_bool x11 y11) …);
+           ##[ ##2: #H10; napply (or2_intro2 … (decidable_aluHC08_aux11 … H10))
+           ##| ##1: #H10; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_bool x12 y12) …);
+            ##[ ##2: #H11; napply (or2_intro2 … (decidable_aluHC08_aux12 … H11))
+            ##| ##1: #H11; nrewrite > H; nrewrite > H1; nrewrite > H2; nrewrite > H3;
+                      nrewrite > H4; nrewrite > H5; nrewrite > H6; nrewrite > H7;
+                      nrewrite > H8; nrewrite > H9; nrewrite > H10; nrewrite > H11;
+                      napply (or2_intro1 (? = ?) (? ≠ ?) (refl_eq …))
+            ##]
+           ##]
+          ##]
+         ##]
+        ##]
+       ##]
+      ##]
+     ##]
+    ##]
+   ##]
+  ##]
+ ##]
+nqed.
+
+nlemma aluRS08_destruct_1 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,y1,y2,y3,y4,y5,y6,y7,y8.
+ mk_alu_RS08 x1 x2 x3 x4 x5 x6 x7 x8 = mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8 →
+ x1 = y1.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #H;
+ nchange with (match mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8
+                with [ mk_alu_RS08 a _ _ _ _ _ _ _ ⇒ x1 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluRS08_destruct_2 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,y1,y2,y3,y4,y5,y6,y7,y8.
+ mk_alu_RS08 x1 x2 x3 x4 x5 x6 x7 x8 = mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8 →
+ x2 = y2.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #H;
+ nchange with (match mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8
+                with [ mk_alu_RS08 _ a _ _ _ _ _ _ ⇒ x2 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluRS08_destruct_3 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,y1,y2,y3,y4,y5,y6,y7,y8.
+ mk_alu_RS08 x1 x2 x3 x4 x5 x6 x7 x8 = mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8 →
+ x3 = y3.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #H;
+ nchange with (match mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8
+                with [ mk_alu_RS08 _ _ a _ _ _ _ _ ⇒ x3 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluRS08_destruct_4 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,y1,y2,y3,y4,y5,y6,y7,y8.
+ mk_alu_RS08 x1 x2 x3 x4 x5 x6 x7 x8 = mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8 →
+ x4 = y4.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #H;
+ nchange with (match mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8
+                with [ mk_alu_RS08 _ _ _ a _ _ _ _ ⇒ x4 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluRS08_destruct_5 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,y1,y2,y3,y4,y5,y6,y7,y8.
+ mk_alu_RS08 x1 x2 x3 x4 x5 x6 x7 x8 = mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8 →
+ x5 = y5.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #H;
+ nchange with (match mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8
+                with [ mk_alu_RS08 _ _ _ _ a _ _ _ ⇒ x5 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluRS08_destruct_6 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,y1,y2,y3,y4,y5,y6,y7,y8.
+ mk_alu_RS08 x1 x2 x3 x4 x5 x6 x7 x8 = mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8 →
+ x6 = y6.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #H;
+ nchange with (match mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8
+                with [ mk_alu_RS08 _ _ _ _ _ a _ _ ⇒ x6 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluRS08_destruct_7 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,y1,y2,y3,y4,y5,y6,y7,y8.
+ mk_alu_RS08 x1 x2 x3 x4 x5 x6 x7 x8 = mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8 →
+ x7 = y7.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #H;
+ nchange with (match mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8
+                with [ mk_alu_RS08 _ _ _ _ _ _ a _ ⇒ x7 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma aluRS08_destruct_8 :
+∀x1,x2,x3,x4,x5,x6,x7,x8,y1,y2,y3,y4,y5,y6,y7,y8.
+ mk_alu_RS08 x1 x2 x3 x4 x5 x6 x7 x8 = mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8 →
+ x8 = y8.
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #H;
+ nchange with (match mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8
+                with [ mk_alu_RS08 _ _ _ _ _ _ _ a ⇒ x8 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma symmetric_eqaluRS08 : symmetricT alu_RS08 bool eq_aluRS08.
+ #alu1; #alu2;
+ ncases alu1;
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ ncases alu2;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8;
+ nchange with (
+  ((eq_b8 x1 y1) ⊗ (eq_w16 x2 y2) ⊗
+   (eq_w16 x3 y3) ⊗ (eq_w16 x4 y4) ⊗
+   (eq_b8 x5 y5) ⊗ (eq_b8 x6 y6) ⊗
+   (eq_bool x7 y7) ⊗ (eq_bool x8 y8)) =
+  ((eq_b8 y1 x1) ⊗ (eq_w16 y2 x2) ⊗
+   (eq_w16 y3 x3) ⊗ (eq_w16 y4 x4) ⊗
+   (eq_b8 y5 x5) ⊗ (eq_b8 y6 x6) ⊗
+   (eq_bool y7 x7) ⊗ (eq_bool y8 x8)));
+ nrewrite > (symmetric_eqb8 x1 y1);
+ nrewrite > (symmetric_eqw16 x2 y2);
+ nrewrite > (symmetric_eqw16 x3 y3);
+ nrewrite > (symmetric_eqw16 x4 y4);
+ nrewrite > (symmetric_eqb8 x5 y5);
+ nrewrite > (symmetric_eqb8 x6 y6);
+ nrewrite > (symmetric_eqbool x7 y7);
+ nrewrite > (symmetric_eqbool x8 y8);
+ napply refl_eq.
+nqed.
+
+nlemma eqaluRS08_to_eq : ∀alu1,alu2.eq_aluRS08 alu1 alu2 = true → alu1 = alu2.
+ #alu1; #alu2;
+ ncases alu1;
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ ncases alu2;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #H;
+ nchange in H:(%) with (
+  ((eq_b8 x1 y1) ⊗ (eq_w16 x2 y2) ⊗
+   (eq_w16 x3 y3) ⊗ (eq_w16 x4 y4) ⊗
+   (eq_b8 x5 y5) ⊗ (eq_b8 x6 y6) ⊗
+   (eq_bool x7 y7) ⊗ (eq_bool x8 y8)) = true);
+ nrewrite > (eqbool_to_eq … (andb_true_true_r … H));
+ nletin H1 ≝ (andb_true_true_l … H);
+ nrewrite > (eqbool_to_eq … (andb_true_true_r … H1));
+ nletin H2 ≝ (andb_true_true_l … H1);
+ nrewrite > (eqb8_to_eq … (andb_true_true_r … H2));
+ nletin H3 ≝ (andb_true_true_l … H2);
+ nrewrite > (eqb8_to_eq … (andb_true_true_r … H3));
+ nletin H4 ≝ (andb_true_true_l … H3);
+ nrewrite > (eqw16_to_eq … (andb_true_true_r … H4));
+ nletin H5 ≝ (andb_true_true_l … H4);
+ nrewrite > (eqw16_to_eq … (andb_true_true_r … H5));
+ nletin H6 ≝ (andb_true_true_l … H5);
+ nrewrite > (eqw16_to_eq … (andb_true_true_r … H6));
+ nrewrite > (eqb8_to_eq … (andb_true_true_l … H6));
+ napply refl_eq.
+nqed.
+
+nlemma eq_to_eqaluRS08 : ∀alu1,alu2.alu1 = alu2 → eq_aluRS08 alu1 alu2 = true.
+ #alu1; #alu2;
+ ncases alu1;
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ ncases alu2;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8; #H;
+ nrewrite > (aluRS08_destruct_1 … H);
+ nrewrite > (aluRS08_destruct_2 … H);
+ nrewrite > (aluRS08_destruct_3 … H);
+ nrewrite > (aluRS08_destruct_4 … H);
+ nrewrite > (aluRS08_destruct_5 … H);
+ nrewrite > (aluRS08_destruct_6 … H);
+ nrewrite > (aluRS08_destruct_7 … H);
+ nrewrite > (aluRS08_destruct_8 … H);
+ nchange with (
+  ((eq_b8 y1 y1) ⊗ (eq_w16 y2 y2) ⊗
+   (eq_w16 y3 y3) ⊗ (eq_w16 y4 y4) ⊗
+   (eq_b8 y5 y5) ⊗ (eq_b8 y6 y6) ⊗
+   (eq_bool y7 y7) ⊗ (eq_bool y8 y8)) = true);
+ nrewrite > (eq_to_eqb8 y1 y1 (refl_eq …));
+ nrewrite > (eq_to_eqw16 y2 y2 (refl_eq …));
+ nrewrite > (eq_to_eqw16 y3 y3 (refl_eq …));
+ nrewrite > (eq_to_eqw16 y4 y4 (refl_eq …));
+ nrewrite > (eq_to_eqb8 y5 y5 (refl_eq …));
+ nrewrite > (eq_to_eqb8 y6 y6 (refl_eq …));
+ nrewrite > (eq_to_eqbool y7 y7 (refl_eq …));
+ nrewrite > (eq_to_eqbool y8 y8 (refl_eq …));
+ napply refl_eq.
+nqed.
+
+nlemma decidable_aluRS08_aux1
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,y1,y2,y3,y4,y5,y6,y7,y8.
+ (x1 ≠ y1) →
+ (mk_alu_RS08 x1 x2 x3 x4 x5 x6 x7 x8) ≠
+ (mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8;
+ nnormalize; #H; #H1;
+ napply (H (aluRS08_destruct_1 … H1)).
+nqed.
+
+nlemma decidable_aluRS08_aux2
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,y1,y2,y3,y4,y5,y6,y7,y8.
+ (x2 ≠ y2) →
+ (mk_alu_RS08 x1 x2 x3 x4 x5 x6 x7 x8) ≠
+ (mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8;
+ nnormalize; #H; #H1;
+ napply (H (aluRS08_destruct_2 … H1)).
+nqed.
+
+nlemma decidable_aluRS08_aux3
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,y1,y2,y3,y4,y5,y6,y7,y8.
+ (x3 ≠ y3) →
+ (mk_alu_RS08 x1 x2 x3 x4 x5 x6 x7 x8) ≠
+ (mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8;
+ nnormalize; #H; #H1;
+ napply (H (aluRS08_destruct_3 … H1)).
+nqed.
+
+nlemma decidable_aluRS08_aux4
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,y1,y2,y3,y4,y5,y6,y7,y8.
+ (x4 ≠ y4) →
+ (mk_alu_RS08 x1 x2 x3 x4 x5 x6 x7 x8) ≠
+ (mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8;
+ nnormalize; #H; #H1;
+ napply (H (aluRS08_destruct_4 … H1)).
+nqed.
+
+nlemma decidable_aluRS08_aux5
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,y1,y2,y3,y4,y5,y6,y7,y8.
+ (x5 ≠ y5) →
+ (mk_alu_RS08 x1 x2 x3 x4 x5 x6 x7 x8) ≠
+ (mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8;
+ nnormalize; #H; #H1;
+ napply (H (aluRS08_destruct_5 … H1)).
+nqed.
+
+nlemma decidable_aluRS08_aux6
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,y1,y2,y3,y4,y5,y6,y7,y8.
+ (x6 ≠ y6) →
+ (mk_alu_RS08 x1 x2 x3 x4 x5 x6 x7 x8) ≠
+ (mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8;
+ nnormalize; #H; #H1;
+ napply (H (aluRS08_destruct_6 … H1)).
+nqed.
+
+nlemma decidable_aluRS08_aux7
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,y1,y2,y3,y4,y5,y6,y7,y8.
+ (x7 ≠ y7) →
+ (mk_alu_RS08 x1 x2 x3 x4 x5 x6 x7 x8) ≠
+ (mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8;
+ nnormalize; #H; #H1;
+ napply (H (aluRS08_destruct_7 … H1)).
+nqed.
+
+nlemma decidable_aluRS08_aux8
+ : ∀x1,x2,x3,x4,x5,x6,x7,x8,y1,y2,y3,y4,y5,y6,y7,y8.
+ (x8 ≠ y8) →
+ (mk_alu_RS08 x1 x2 x3 x4 x5 x6 x7 x8) ≠
+ (mk_alu_RS08 y1 y2 y3 y4 y5 y6 y7 y8).
+ #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8;
+ nnormalize; #H; #H1;
+ napply (H (aluRS08_destruct_8 … H1)).
+nqed.
+
+nlemma decidable_aluRS08 : ∀x,y:alu_RS08.decidable (x = y).
+ #x; nelim x; #x1; #x2; #x3; #x4; #x5; #x6; #x7; #x8;
+ #y; nelim y; #y1; #y2; #y3; #y4; #y5; #y6; #y7; #y8;
+ nnormalize;
+ napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_b8 x1 y1) …);
+ ##[ ##2: #H; napply (or2_intro2 … (decidable_aluRS08_aux1 … H))
+ ##| ##1: #H; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_w16 x2 y2) …);
+  ##[ ##2: #H1; napply (or2_intro2 … (decidable_aluRS08_aux2 … H1))
+  ##| ##1: #H1; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_w16 x3 y3) …);
+   ##[ ##2: #H2; napply (or2_intro2 … (decidable_aluRS08_aux3 … H2))
+   ##| ##1: #H2; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_w16 x4 y4) …);
+    ##[ ##2: #H3; napply (or2_intro2 … (decidable_aluRS08_aux4 … H3))
+    ##| ##1: #H3; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_b8 x5 y5) …);
+     ##[ ##2: #H4; napply (or2_intro2 … (decidable_aluRS08_aux5 … H4))
+     ##| ##1: #H4; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_b8 x6 y6) …);
+      ##[ ##2: #H5; napply (or2_intro2 … (decidable_aluRS08_aux6 … H5))
+      ##| ##1: #H5; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_bool x7 y7) …);
+       ##[ ##2: #H6; napply (or2_intro2 … (decidable_aluRS08_aux7 … H6))
+       ##| ##1: #H6; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_bool x8 y8) …);
+        ##[ ##2: #H7; napply (or2_intro2 … (decidable_aluRS08_aux8 … H7))
+        ##| ##1: #H7; nrewrite > H; nrewrite > H1; nrewrite > H2; nrewrite > H3;
+                      nrewrite > H4; nrewrite > H5; nrewrite > H6; nrewrite > H7;
+                      napply (or2_intro1 (? = ?) (? ≠ ?) (refl_eq …))
+        ##]
+       ##]
+      ##]
+     ##]
+    ##]
+   ##]
+  ##]
+ ##]
+nqed.
+
+nlemma symmetric_eqclk : ∀mcu,clk1,clk2.eq_clk mcu clk1 clk2 = eq_clk mcu clk2 clk1.
+ #mcu; #clk1; #clk2;
+ ncases clk1;
+ ncases clk2;
+ ##[ ##1: napply refl_eq
+ ##| ##2,3: nnormalize; #H; napply refl_eq
+ ##| ##4: #p1; ncases p1; #x1; #x2; #x3; #x4; #x5;
+          #p2; ncases p2; #y1; #y2; #y3; #y4; #y5;
+          nchange with (
+           ((eq_b8 y1 x1) ⊗ (eq_anyop ? y2 x2) ⊗ (eq_im y3 x3) ⊗ (eq_b8 y4 x4) ⊗ (eq_w16 y5 x5)) =
+           ((eq_b8 x1 y1) ⊗ (eq_anyop ? x2 y2) ⊗ (eq_im x3 y3) ⊗ (eq_b8 x4 y4) ⊗ (eq_w16 x5 y5)));
+          nrewrite > (symmetric_eqb8 x1 y1);
+          nrewrite > (symmetric_eqanyop ? x2 y2);
+          nrewrite > (symmetric_eqim x3 y3);
+          nrewrite > (symmetric_eqb8 x4 y4);
+          nrewrite > (symmetric_eqw16 x5 y5);
+          napply refl_eq
+ ##]
+nqed.
+
+nlemma eqclk_to_eq : ∀mcu,clk1,clk2.eq_clk mcu clk1 clk2 = true → clk1 = clk2.
+ #mcu; #clk1; #clk2;
+ ncases clk1;
+ ncases clk2;
+ ##[ ##1: nnormalize; #H; napply refl_eq
+ ##| ##2,3: nnormalize; #H; #H1; napply (bool_destruct … H1)
+ ##| ##4: #p1; ncases p1; #x1; #x2; #x3; #x4; #x5;
+          #p2; ncases p2; #y1; #y2; #y3; #y4; #y5; #H;
+          nchange in H:(%) with (
+           ((eq_b8 y1 x1) ⊗ (eq_anyop ? y2 x2) ⊗ (eq_im y3 x3) ⊗ (eq_b8 y4 x4) ⊗ (eq_w16 y5 x5)) = true);
+           nrewrite > (eqw16_to_eq … (andb_true_true_r … H));
+           nletin H1 ≝ (andb_true_true_l … H);
+           nrewrite > (eqb8_to_eq … (andb_true_true_r … H1));
+           nletin H2 ≝ (andb_true_true_l … H1);
+           nrewrite > (eqim_to_eq … (andb_true_true_r … H2));
+           nletin H3 ≝ (andb_true_true_l … H2);
+           nrewrite > (eqanyop_to_eq … (andb_true_true_r … H3));
+           nrewrite > (eqb8_to_eq … (andb_true_true_l … H3));
+           napply refl_eq
+ ##]
+nqed.
+
+nlemma eq_to_eqclk : ∀mcu,clk1,clk2.clk1 = clk2 → eq_clk mcu clk1 clk2 = true.
+ #mcu; #clk1; #clk2;
+ ncases clk1;
+ ncases clk2;
+ ##[ ##1: nnormalize; #H; napply refl_eq
+ ##| ##2: nnormalize; #p; #H1; nelim (option_destruct_none_some ? p … H1)
+ ##| ##3: nnormalize; #p; #H1; nelim (option_destruct_some_none ? p … H1)
+ ##| ##4: #p1; ncases p1; #x1; #x2; #x3; #x4; #x5;
+          #p2; ncases p2; #y1; #y2; #y3; #y4; #y5; #H;
+          nrewrite > (quintuple_destruct_1 … (option_destruct_some_some … H));
+          nrewrite > (quintuple_destruct_2 … (option_destruct_some_some … H));
+          nrewrite > (quintuple_destruct_3 … (option_destruct_some_some … H));
+          nrewrite > (quintuple_destruct_4 … (option_destruct_some_some … H));
+          nrewrite > (quintuple_destruct_5 … (option_destruct_some_some … H));
+          nchange with (
+           ((eq_b8 x1 x1) ⊗ (eq_anyop ? x2 x2) ⊗ (eq_im x3 x3) ⊗ (eq_b8 x4 x4) ⊗ (eq_w16 x5 x5)) = true);
+          nrewrite > (eq_to_eqb8 x1 x1 (refl_eq …));
+          nrewrite > (eq_to_eqanyop mcu x2 x2 (refl_eq ? x2));
+          nrewrite > (eq_to_eqim x3 x3 (refl_eq …));
+          nrewrite > (eq_to_eqb8 x4 x4 (refl_eq …));
+          nrewrite > (eq_to_eqw16 x5 x5 (refl_eq …));
+          nnormalize;
+          napply refl_eq
+ ##]
+nqed.
+
+nlemma symmetric_forallmemoryranged :
+∀t.∀chk1,chk2:aux_chk_type t.∀mem1,mem2:aux_mem_type t.∀addrl.
+ forall_memory_ranged t chk1 chk2 mem1 mem2 addrl =
+ forall_memory_ranged t chk2 chk1 mem2 mem1 addrl.
+ #t; #chk1; #chk2; #mem1; #mem2; #addrl;
+ napply (list_ind word16 … addrl);
+ ##[ ##1: nnormalize; napply refl_eq
+ ##| ##2: #a; #l; #H;
+          nchange with (
+           ((eq_option byte8 (mem_read t mem1 chk1 a)
+                            (mem_read t mem2 chk2 a) eq_b8) ⊗
+           (forall_memory_ranged t chk1 chk2 mem1 mem2 l)) =
+           ((eq_option byte8 (mem_read t mem2 chk2 a)
+                            (mem_read t mem1 chk1 a) eq_b8) ⊗
+           (forall_memory_ranged t chk2 chk1 mem2 mem1 l)));
+           nrewrite > H;
+           nrewrite > (symmetric_eqoption ? (mem_read t mem1 chk1 a) (mem_read t mem2 chk2 a) eq_b8 symmetric_eqb8);
+           napply refl_eq
+ ##]
+nqed.
+
+nlemma anystatus_destruct_1 :
+∀m,t.∀x1,x2,x3,x4,y1,y2,y3,y4.
+ mk_any_status m t x1 x2 x3 x4 = mk_any_status m t y1 y2 y3 y4 →
+ x1 = y1.
+ #m; #t;
+ #x1; #x2; #x3; #x4;
+ #y1; #y2; #y3; #y4; #H;
+ nchange with (match mk_any_status m t y1 y2 y3 y4
+                with [ mk_any_status a _ _ _ ⇒ x1 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma anystatus_destruct_2 :
+∀m,t.∀x1,x2,x3,x4,y1,y2,y3,y4.
+ mk_any_status m t x1 x2 x3 x4 = mk_any_status m t y1 y2 y3 y4 →
+ x2 = y2.
+ #m; #t;
+ #x1; #x2; #x3; #x4;
+ #y1; #y2; #y3; #y4; #H;
+ nchange with (match mk_any_status m t y1 y2 y3 y4
+                with [ mk_any_status _ a _ _ ⇒ x2 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma anystatus_destruct_3 :
+∀m,t.∀x1,x2,x3,x4,y1,y2,y3,y4.
+ mk_any_status m t x1 x2 x3 x4 = mk_any_status m t y1 y2 y3 y4 →
+ x3 = y3.
+ #m; #t;
+ #x1; #x2; #x3; #x4;
+ #y1; #y2; #y3; #y4; #H;
+ nchange with (match mk_any_status m t y1 y2 y3 y4
+                with [ mk_any_status _ _ a _ ⇒ x3 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma anystatus_destruct_4 :
+∀m,t.∀x1,x2,x3,x4,y1,y2,y3,y4.
+ mk_any_status m t x1 x2 x3 x4 = mk_any_status m t y1 y2 y3 y4 →
+ x4 = y4.
+ #m; #t;
+ #x1; #x2; #x3; #x4;
+ #y1; #y2; #y3; #y4; #H;
+ nchange with (match mk_any_status m t y1 y2 y3 y4
+                with [ mk_any_status _ _ _ a ⇒ x4 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma symmetric_eqanystatus :
+∀addrl:list word16.∀m:mcu_type.∀t:memory_impl.∀s1,s2:any_status m t.
+ eq_anystatus m t s1 s2 addrl = eq_anystatus m t s2 s1 addrl.
+ #addrl; #m;
+ ncases m; #t; #s1;
+ ##[ ##1: ncases s1; #x1; #x2; #x3; #x4;
+          #s2; ncases s2; #y1; #y2; #y3; #y4;
+          nchange with (
+           ((eq_aluHC05 x1 y1) ⊗ (forall_memory_ranged t x3 y3 x2 y2 addrl) ⊗ (eq_clk HC05 x4 y4)) =
+           ((eq_aluHC05 y1 x1) ⊗ (forall_memory_ranged t y3 x3 y2 x2 addrl) ⊗ (eq_clk HC05 y4 x4)));
+           nrewrite > (symmetric_eqaluHC05 x1 y1)
+ ##| ##2,3: ncases s1; #x1; #x2; #x3; #x4;
+          #s2; ncases s2; #y1; #y2; #y3; #y4;
+          nchange with (
+           ((eq_aluHC08 x1 y1) ⊗ (forall_memory_ranged t x3 y3 x2 y2 addrl) ⊗ (eq_clk ? x4 y4)) =
+           ((eq_aluHC08 y1 x1) ⊗ (forall_memory_ranged t y3 x3 y2 x2 addrl) ⊗ (eq_clk ? y4 x4)));
+           nrewrite > (symmetric_eqaluHC08 x1 y1)
+ ##| ##4: ncases s1; #x1; #x2; #x3; #x4;
+          #s2; ncases s2; #y1; #y2; #y3; #y4;
+          nchange with (
+           ((eq_aluRS08 x1 y1) ⊗ (forall_memory_ranged t x3 y3 x2 y2 addrl) ⊗ (eq_clk RS08 x4 y4)) =
+           ((eq_aluRS08 y1 x1) ⊗ (forall_memory_ranged t y3 x3 y2 x2 addrl) ⊗ (eq_clk RS08 y4 x4)));
+           nrewrite > (symmetric_eqaluRS08 x1 y1)
+ ##]
+ nrewrite > (symmetric_forallmemoryranged t x3 y3 x2 y2 addrl);
+ nrewrite > (symmetric_eqclk ? x4 y4);
+ napply refl_eq.
+nqed.
+
+nlemma eqanystatus_to_eq :
+∀addrl:list word16.∀m:mcu_type.∀t:memory_impl.∀s1,s2:any_status m t.
+ (eq_anystatus m t s1 s2 addrl = true) →
+  And3 (alu m t s1 = alu m t s2) 
+       (clk_desc m t s1 = clk_desc m t s2)
+       ((forall_memory_ranged t (chk_desc m t s1) (chk_desc m t s2)
+                                (mem_desc m t s1) (mem_desc m t s2) addrl) = true).
+ #addrl; #m; #t;
+ ncases m; #s1;
+ ##[ ##1: ncases s1; #x1; #x2; #x3; #x4;
+          #s2; ncases s2; #y1; #y2; #y3; #y4; #H;
+          nchange in H:(%) with (
+           ((eq_aluHC05 x1 y1) ⊗ (forall_memory_ranged t x3 y3 x2 y2 addrl) ⊗ (eq_clk ? x4 y4)) = true);
+           nrewrite > (eqaluHC05_to_eq … (andb_true_true_l … (andb_true_true_l … H)))
+ ##| ##2,3: ncases s1; #x1; #x2; #x3; #x4;
+          #s2; ncases s2; #y1; #y2; #y3; #y4; #H;
+          nchange in H:(%) with (
+           ((eq_aluHC08 x1 y1) ⊗ (forall_memory_ranged t x3 y3 x2 y2 addrl) ⊗ (eq_clk ? x4 y4)) = true);
+           nrewrite > (eqaluHC08_to_eq … (andb_true_true_l … (andb_true_true_l … H)))
+ ##| ##4: ncases s1; #x1; #x2; #x3; #x4;
+          #s2; ncases s2; #y1; #y2; #y3; #y4; #H;
+          nchange in H:(%) with (
+           ((eq_aluRS08 x1 y1) ⊗ (forall_memory_ranged t x3 y3 x2 y2 addrl) ⊗ (eq_clk ? x4 y4)) = true);
+           nrewrite > (eqaluRS08_to_eq … (andb_true_true_l … (andb_true_true_l … H)))
+ ##]
+ nchange with (And3 (y1 = y1) (x4 = y4) (forall_memory_ranged t x3 y3 x2 y2 addrl = true));
+ nrewrite > (andb_true_true_r … (andb_true_true_l … H));
+ nrewrite > (eqclk_to_eq … (andb_true_true_r … H));
+ napply (conj3 … (refl_eq ? y1) (refl_eq ? y4) (refl_eq ? true)).
+nqed.
+
+nlemma eq_to_eqanystatus_strong :
+∀addrl:list word16.∀m:mcu_type.∀t:memory_impl.∀s1,s2:any_status m t.
+ s1 = s2 → (eq_anystatus m t s1 s2 addrl = true).
+ #addrl; #m; #t;
+ ncases m;
+ ##[ ##1: #s1; ncases s1; #x1; #x2; #x3; #x4;
+          #s2; ncases s2; #y1; #y2; #y3; #y4; #H;
+          nchange with (
+           ((eq_aluHC05 x1 y1) ⊗ (forall_memory_ranged t x3 y3 x2 y2 addrl) ⊗ (eq_clk ? x4 y4)) = true);
+          nrewrite > (anystatus_destruct_1 … H);
+          nrewrite > (eq_to_eqaluHC05 y1 y1 (refl_eq …))
+ ##| ##2,3:  #s1; ncases s1; #x1; #x2; #x3; #x4;
+          #s2; ncases s2; #y1; #y2; #y3; #y4; #H;
+          nchange with (
+           ((eq_aluHC08 x1 y1) ⊗ (forall_memory_ranged t x3 y3 x2 y2 addrl) ⊗ (eq_clk ? x4 y4)) = true);
+          nrewrite > (anystatus_destruct_1 … H);
+          nrewrite > (eq_to_eqaluHC08 y1 y1 (refl_eq …))
+ ##| ##4: #s1; ncases s1; #x1; #x2; #x3; #x4;
+          #s2; ncases s2; #y1; #y2; #y3; #y4; #H;
+          nchange with (
+           ((eq_aluRS08 x1 y1) ⊗ (forall_memory_ranged t x3 y3 x2 y2 addrl) ⊗ (eq_clk ? x4 y4)) = true);
+          nrewrite > (anystatus_destruct_1 … H);
+          nrewrite > (eq_to_eqaluRS08 y1 y1 (refl_eq …))
+ ##]
+ nrewrite > (anystatus_destruct_2 … H);
+ nrewrite > (anystatus_destruct_3 … H);
+ nrewrite > (anystatus_destruct_4 … H);
+ nrewrite > (eq_to_eqclk ? y4 y4 (refl_eq …));
+ nchange with ((forall_memory_ranged … ⊗ true) =true);
+ nrewrite > (symmetric_andbool (forall_memory_ranged t y3 y3 y2 y2 addrl) true);
+ nchange with ((forall_memory_ranged t y3 y3 y2 y2 ?) = true);
+ napply (list_ind word16 … addrl);
+ ##[ ##1,3,5,7: nnormalize; napply refl_eq
+ ##| ##2,4,6,8: #a; #l'; #H;
+          nchange with (
+          ((eq_option byte8 (mem_read t y2 y3 a)
+                            (mem_read t y2 y3 a) eq_b8) ⊗
+           (forall_memory_ranged t y3 y3 y2 y2 l')) = true);
+          nrewrite > H;
+          nrewrite > (eq_to_eqoption ? (mem_read t y2 y3 a) (mem_read t y2 y3 a) eq_b8 eq_to_eqb8 (refl_eq …));
+          nnormalize;
+          napply refl_eq
+ ##]
+nqed.
+
+nlemma eq_to_eqanystatus_weak :
+∀addrl:list word16.∀m:mcu_type.∀t:memory_impl.∀s1,s2:any_status m t.
+ (alu m t s1 = alu m t s2) →
+ (clk_desc m t s1 = clk_desc m t s2) →
+ ((forall_memory_ranged t (chk_desc m t s1) (chk_desc m t s2)
+                            (mem_desc m t s1) (mem_desc m t s2) addrl) = true) →
+ (eq_anystatus m t s1 s2 addrl = true).
+ #addrl; #m; #t;
+ ncases m;
+ ##[ ##1: #s1; ncases s1; #x1; #x2; #x3; #x4;
+          #s2; ncases s2; #y1; #y2; #y3; #y4; #H; #H1; #H2;
+          nchange with (((eq_aluHC05 x1 y1) ⊗ (forall_memory_ranged t x3 y3 x2 y2 addrl) ⊗ (eq_clk ? x4 y4)) = true);
+          nchange in H:(%) with (x1 = y1);
+          nrewrite > H; 
+          nrewrite > (eq_to_eqaluHC05 y1 y1 (refl_eq …))
+ ##| ##2,3: #s1; ncases s1; #x1; #x2; #x3; #x4;
+          #s2; ncases s2; #y1; #y2; #y3; #y4; #H; #H1; #H2;
+          nchange with (((eq_aluHC08 x1 y1) ⊗ (forall_memory_ranged t x3 y3 x2 y2 addrl) ⊗ (eq_clk ? x4 y4)) = true);
+          nchange in H:(%) with (x1 = y1);
+          nrewrite > H; 
+          nrewrite > (eq_to_eqaluHC08 y1 y1 (refl_eq …))
+ ##| ##4: #s1; ncases s1; #x1; #x2; #x3; #x4;
+          #s2; ncases s2; #y1; #y2; #y3; #y4; #H; #H1; #H2;
+          nchange with (((eq_aluRS08 x1 y1) ⊗ (forall_memory_ranged t x3 y3 x2 y2 addrl) ⊗ (eq_clk ? x4 y4)) = true);
+          nchange in H:(%) with (x1 = y1);
+          nrewrite > H; 
+          nrewrite > (eq_to_eqaluRS08 y1 y1 (refl_eq …))
+ ##]
+ nchange in H2:(%) with (forall_memory_ranged t x3 y3 x2 y2 addrl = true);
+ nrewrite > H2;
+ nchange in H1:(%) with (x4 = y4);
+ nrewrite > H1;
+ nrewrite > (eq_to_eqclk ? y4 y4 (refl_eq …));
+ nnormalize;
+ napply refl_eq.
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/table_HC05.ma b/helm/software/matita/contribs/ng_assembly/freescale/table_HC05.ma
new file mode 100755 (executable)
index 0000000..d02f4f3
--- /dev/null
@@ -0,0 +1,377 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/opcode_base.ma".
+include "common/list.ma".
+
+(* ***************** *)
+(* TABELLA DELL'HC05 *)
+(* ***************** *)
+
+(* definizione come concatenazione finale di liste per velocizzare il parsing *)
+(* ogni riga e' (any_opcode m) (instr_mode) (opcode esadecimale) (#cicli esecuzione) *)
+(* NB: l'uso di any_opcode m + concatenazione finale tutte liste
+       impedisce di introdurre opcode disomogenei (per mcu) *)
+
+ndefinition opcode_table_HC05_1 ≝
+[
+  quadruple … (anyOP HC05 ADC) MODE_IMM1 (Byte 〈xA,x9〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 ADC) MODE_DIR1 (Byte 〈xB,x9〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 ADC) MODE_DIR2 (Byte 〈xC,x9〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 ADC) MODE_IX2  (Byte 〈xD,x9〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 ADC) MODE_IX1  (Byte 〈xE,x9〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 ADC) MODE_IX0  (Byte 〈xF,x9〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC05_2 ≝
+[
+  quadruple … (anyOP HC05 ADD) MODE_IMM1 (Byte 〈xA,xB〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 ADD) MODE_DIR1 (Byte 〈xB,xB〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 ADD) MODE_DIR2 (Byte 〈xC,xB〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 ADD) MODE_IX2  (Byte 〈xD,xB〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 ADD) MODE_IX1  (Byte 〈xE,xB〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 ADD) MODE_IX0  (Byte 〈xF,xB〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_HC05_3 ≝
+[
+  quadruple … (anyOP HC05 AND) MODE_IMM1 (Byte 〈xA,x4〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 AND) MODE_DIR1 (Byte 〈xB,x4〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 AND) MODE_DIR2 (Byte 〈xC,x4〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 AND) MODE_IX2  (Byte 〈xD,x4〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 AND) MODE_IX1  (Byte 〈xE,x4〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 AND) MODE_IX0  (Byte 〈xF,x4〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_HC05_4 ≝
+[
+  quadruple … (anyOP HC05 ASL) MODE_DIR1 (Byte 〈x3,x8〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 ASL) MODE_INHA (Byte 〈x4,x8〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 ASL) MODE_INHX (Byte 〈x5,x8〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 ASL) MODE_IX1  (Byte 〈x6,x8〉) 〈x0,x6〉
+; quadruple … (anyOP HC05 ASL) MODE_IX0  (Byte 〈x7,x8〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC05_5 ≝
+[
+  quadruple … (anyOP HC05 ASR) MODE_DIR1 (Byte 〈x3,x7〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 ASR) MODE_INHA (Byte 〈x4,x7〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 ASR) MODE_INHX (Byte 〈x5,x7〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 ASR) MODE_IX1  (Byte 〈x6,x7〉) 〈x0,x6〉
+; quadruple … (anyOP HC05 ASR) MODE_IX0  (Byte 〈x7,x7〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC05_6 ≝
+[
+  quadruple … (anyOP HC05 BRA ) MODE_IMM1 (Byte 〈x2,x0〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 BRN ) MODE_IMM1 (Byte 〈x2,x1〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 BHI ) MODE_IMM1 (Byte 〈x2,x2〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 BLS ) MODE_IMM1 (Byte 〈x2,x3〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 BCC ) MODE_IMM1 (Byte 〈x2,x4〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 BCS ) MODE_IMM1 (Byte 〈x2,x5〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 BNE ) MODE_IMM1 (Byte 〈x2,x6〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 BEQ ) MODE_IMM1 (Byte 〈x2,x7〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 BHCC) MODE_IMM1 (Byte 〈x2,x8〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 BHCS) MODE_IMM1 (Byte 〈x2,x9〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 BPL ) MODE_IMM1 (Byte 〈x2,xA〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 BMI ) MODE_IMM1 (Byte 〈x2,xB〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 BMC ) MODE_IMM1 (Byte 〈x2,xC〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 BMS ) MODE_IMM1 (Byte 〈x2,xD〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 BIL ) MODE_IMM1 (Byte 〈x2,xE〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 BIH ) MODE_IMM1 (Byte 〈x2,xF〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_HC05_7 ≝
+[
+  quadruple … (anyOP HC05 BSETn) (MODE_DIRn o0) (Byte 〈x1,x0〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BCLRn) (MODE_DIRn o0) (Byte 〈x1,x1〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BSETn) (MODE_DIRn o1) (Byte 〈x1,x2〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BCLRn) (MODE_DIRn o1) (Byte 〈x1,x3〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BSETn) (MODE_DIRn o2) (Byte 〈x1,x4〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BCLRn) (MODE_DIRn o2) (Byte 〈x1,x5〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BSETn) (MODE_DIRn o3) (Byte 〈x1,x6〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BCLRn) (MODE_DIRn o3) (Byte 〈x1,x7〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BSETn) (MODE_DIRn o4) (Byte 〈x1,x8〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BCLRn) (MODE_DIRn o4) (Byte 〈x1,x9〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BSETn) (MODE_DIRn o5) (Byte 〈x1,xA〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BCLRn) (MODE_DIRn o5) (Byte 〈x1,xB〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BSETn) (MODE_DIRn o6) (Byte 〈x1,xC〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BCLRn) (MODE_DIRn o6) (Byte 〈x1,xD〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BSETn) (MODE_DIRn o7) (Byte 〈x1,xE〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BCLRn) (MODE_DIRn o7) (Byte 〈x1,xF〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC05_8 ≝
+[
+  quadruple … (anyOP HC05 BRSETn) (MODE_DIRn_and_IMM1 o0) (Byte 〈x0,x0〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BRCLRn) (MODE_DIRn_and_IMM1 o0) (Byte 〈x0,x1〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BRSETn) (MODE_DIRn_and_IMM1 o1) (Byte 〈x0,x2〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BRCLRn) (MODE_DIRn_and_IMM1 o1) (Byte 〈x0,x3〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BRSETn) (MODE_DIRn_and_IMM1 o2) (Byte 〈x0,x4〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BRCLRn) (MODE_DIRn_and_IMM1 o2) (Byte 〈x0,x5〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BRSETn) (MODE_DIRn_and_IMM1 o3) (Byte 〈x0,x6〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BRCLRn) (MODE_DIRn_and_IMM1 o3) (Byte 〈x0,x7〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BRSETn) (MODE_DIRn_and_IMM1 o4) (Byte 〈x0,x8〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BRCLRn) (MODE_DIRn_and_IMM1 o4) (Byte 〈x0,x9〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BRSETn) (MODE_DIRn_and_IMM1 o5) (Byte 〈x0,xA〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BRCLRn) (MODE_DIRn_and_IMM1 o5) (Byte 〈x0,xB〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BRSETn) (MODE_DIRn_and_IMM1 o6) (Byte 〈x0,xC〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BRCLRn) (MODE_DIRn_and_IMM1 o6) (Byte 〈x0,xD〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BRSETn) (MODE_DIRn_and_IMM1 o7) (Byte 〈x0,xE〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BRCLRn) (MODE_DIRn_and_IMM1 o7) (Byte 〈x0,xF〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC05_9 ≝
+[
+  quadruple … (anyOP HC05 BIT) MODE_IMM1 (Byte 〈xA,x5〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 BIT) MODE_DIR1 (Byte 〈xB,x5〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 BIT) MODE_DIR2 (Byte 〈xC,x5〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 BIT) MODE_IX2  (Byte 〈xD,x5〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 BIT) MODE_IX1  (Byte 〈xE,x5〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 BIT) MODE_IX0  (Byte 〈xF,x5〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_HC05_10 ≝
+[
+  quadruple … (anyOP HC05 MUL ) MODE_INH (Byte 〈x4,x2〉) 〈x0,xB〉
+; quadruple … (anyOP HC05 RTI ) MODE_INH (Byte 〈x8,x0〉) 〈x0,x9〉
+; quadruple … (anyOP HC05 RTS ) MODE_INH (Byte 〈x8,x1〉) 〈x0,x6〉
+; quadruple … (anyOP HC05 SWI ) MODE_INH (Byte 〈x8,x3〉) 〈x0,xA〉
+; quadruple … (anyOP HC05 STOP) MODE_INH (Byte 〈x8,xE〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 WAIT) MODE_INH (Byte 〈x8,xF〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 TAX ) MODE_INH (Byte 〈x9,x7〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 CLC ) MODE_INH (Byte 〈x9,x8〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 SEC ) MODE_INH (Byte 〈x9,x9〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 CLI ) MODE_INH (Byte 〈x9,xA〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 SEI ) MODE_INH (Byte 〈x9,xB〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 RSP ) MODE_INH (Byte 〈x9,xC〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 NOP ) MODE_INH (Byte 〈x9,xD〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 TXA ) MODE_INH (Byte 〈x9,xF〉) 〈x0,x2〉
+].
+
+ndefinition opcode_table_HC05_11 ≝
+[
+  quadruple … (anyOP HC05 CLR) MODE_DIR1 (Byte 〈x3,xF〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 CLR) MODE_INHA (Byte 〈x4,xF〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 CLR) MODE_INHX (Byte 〈x5,xF〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 CLR) MODE_IX1  (Byte 〈x6,xF〉) 〈x0,x6〉
+; quadruple … (anyOP HC05 CLR) MODE_IX0  (Byte 〈x7,xF〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC05_12 ≝
+[
+  quadruple … (anyOP HC05 CMP) MODE_IMM1 (Byte 〈xA,x1〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 CMP) MODE_DIR1 (Byte 〈xB,x1〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 CMP) MODE_DIR2 (Byte 〈xC,x1〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 CMP) MODE_IX2  (Byte 〈xD,x1〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 CMP) MODE_IX1  (Byte 〈xE,x1〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 CMP) MODE_IX0  (Byte 〈xF,x1〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_HC05_13 ≝
+[
+  quadruple … (anyOP HC05 COM) MODE_DIR1 (Byte 〈x3,x3〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 COM) MODE_INHA (Byte 〈x4,x3〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 COM) MODE_INHX (Byte 〈x5,x3〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 COM) MODE_IX1  (Byte 〈x6,x3〉) 〈x0,x6〉
+; quadruple … (anyOP HC05 COM) MODE_IX0  (Byte 〈x7,x3〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC05_14 ≝
+[
+  quadruple … (anyOP HC05 CPX) MODE_IMM1 (Byte 〈xA,x3〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 CPX) MODE_DIR1 (Byte 〈xB,x3〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 CPX) MODE_DIR2 (Byte 〈xC,x3〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 CPX) MODE_IX2  (Byte 〈xD,x3〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 CPX) MODE_IX1  (Byte 〈xE,x3〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 CPX) MODE_IX0  (Byte 〈xF,x3〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_HC05_15 ≝
+[
+  quadruple … (anyOP HC05 DEC) MODE_DIR1 (Byte 〈x3,xA〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 DEC) MODE_INHA (Byte 〈x4,xA〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 DEC) MODE_INHX (Byte 〈x5,xA〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 DEC) MODE_IX1  (Byte 〈x6,xA〉) 〈x0,x6〉
+; quadruple … (anyOP HC05 DEC) MODE_IX0  (Byte 〈x7,xA〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC05_16 ≝
+[
+  quadruple … (anyOP HC05 EOR) MODE_IMM1 (Byte 〈xA,x8〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 EOR) MODE_DIR1 (Byte 〈xB,x8〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 EOR) MODE_DIR2 (Byte 〈xC,x8〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 EOR) MODE_IX2  (Byte 〈xD,x8〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 EOR) MODE_IX1  (Byte 〈xE,x8〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 EOR) MODE_IX0  (Byte 〈xF,x8〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_HC05_17 ≝
+[
+  quadruple … (anyOP HC05 INC) MODE_DIR1 (Byte 〈x3,xC〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 INC) MODE_INHA (Byte 〈x4,xC〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 INC) MODE_INHX (Byte 〈x5,xC〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 INC) MODE_IX1  (Byte 〈x6,xC〉) 〈x0,x6〉
+; quadruple … (anyOP HC05 INC) MODE_IX0  (Byte 〈x7,xC〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC05_18 ≝
+[
+  quadruple … (anyOP HC05 JMP) MODE_IMM1EXT  (Byte 〈xB,xC〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 JMP) MODE_IMM2     (Byte 〈xC,xC〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 JMP) MODE_INHX2ADD (Byte 〈xD,xC〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 JMP) MODE_INHX1ADD (Byte 〈xE,xC〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 JMP) MODE_INHX0ADD (Byte 〈xF,xC〉) 〈x0,x2〉
+].
+
+ndefinition opcode_table_HC05_19 ≝
+[
+  quadruple … (anyOP HC05 BSR) MODE_IMM1     (Byte 〈xA,xD〉) 〈x0,x6〉
+; quadruple … (anyOP HC05 JSR) MODE_IMM1EXT  (Byte 〈xB,xD〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 JSR) MODE_IMM2     (Byte 〈xC,xD〉) 〈x0,x6〉
+; quadruple … (anyOP HC05 JSR) MODE_INHX2ADD (Byte 〈xD,xD〉) 〈x0,x7〉
+; quadruple … (anyOP HC05 JSR) MODE_INHX1ADD (Byte 〈xE,xD〉) 〈x0,x6〉
+; quadruple … (anyOP HC05 JSR) MODE_INHX0ADD (Byte 〈xF,xD〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC05_20 ≝
+[
+  quadruple … (anyOP HC05 LDA) MODE_IMM1 (Byte 〈xA,x6〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 LDA) MODE_DIR1 (Byte 〈xB,x6〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 LDA) MODE_DIR2 (Byte 〈xC,x6〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 LDA) MODE_IX2  (Byte 〈xD,x6〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 LDA) MODE_IX1  (Byte 〈xE,x6〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 LDA) MODE_IX0  (Byte 〈xF,x6〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_HC05_21 ≝
+[
+  quadruple … (anyOP HC05 LDX) MODE_IMM1 (Byte 〈xA,xE〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 LDX) MODE_DIR1 (Byte 〈xB,xE〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 LDX) MODE_DIR2 (Byte 〈xC,xE〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 LDX) MODE_IX2  (Byte 〈xD,xE〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 LDX) MODE_IX1  (Byte 〈xE,xE〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 LDX) MODE_IX0  (Byte 〈xF,xE〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_HC05_22 ≝
+[
+  quadruple … (anyOP HC05 LSR) MODE_DIR1 (Byte 〈x3,x4〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 LSR) MODE_INHA (Byte 〈x4,x4〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 LSR) MODE_INHX (Byte 〈x5,x4〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 LSR) MODE_IX1  (Byte 〈x6,x4〉) 〈x0,x6〉
+; quadruple … (anyOP HC05 LSR) MODE_IX0  (Byte 〈x7,x4〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC05_23 ≝
+[
+  quadruple … (anyOP HC05 NEG) MODE_DIR1 (Byte 〈x3,x0〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 NEG) MODE_INHA (Byte 〈x4,x0〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 NEG) MODE_INHX (Byte 〈x5,x0〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 NEG) MODE_IX1  (Byte 〈x6,x0〉) 〈x0,x6〉
+; quadruple … (anyOP HC05 NEG) MODE_IX0  (Byte 〈x7,x0〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC05_24 ≝
+[
+  quadruple … (anyOP HC05 ORA) MODE_IMM1 (Byte 〈xA,xA〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 ORA) MODE_DIR1 (Byte 〈xB,xA〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 ORA) MODE_DIR2 (Byte 〈xC,xA〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 ORA) MODE_IX2  (Byte 〈xD,xA〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 ORA) MODE_IX1  (Byte 〈xE,xA〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 ORA) MODE_IX0  (Byte 〈xF,xA〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_HC05_25 ≝
+[
+  quadruple … (anyOP HC05 ROL) MODE_DIR1 (Byte 〈x3,x9〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 ROL) MODE_INHA (Byte 〈x4,x9〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 ROL) MODE_INHX (Byte 〈x5,x9〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 ROL) MODE_IX1  (Byte 〈x6,x9〉) 〈x0,x6〉
+; quadruple … (anyOP HC05 ROL) MODE_IX0  (Byte 〈x7,x9〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC05_26 ≝
+[
+  quadruple … (anyOP HC05 ROR) MODE_DIR1 (Byte 〈x3,x6〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 ROR) MODE_INHA (Byte 〈x4,x6〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 ROR) MODE_INHX (Byte 〈x5,x6〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 ROR) MODE_IX1  (Byte 〈x6,x6〉) 〈x0,x6〉
+; quadruple … (anyOP HC05 ROR) MODE_IX0  (Byte 〈x7,x6〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC05_27 ≝
+[
+  quadruple … (anyOP HC05 SBC) MODE_IMM1 (Byte 〈xA,x2〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 SBC) MODE_DIR1 (Byte 〈xB,x2〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 SBC) MODE_DIR2 (Byte 〈xC,x2〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 SBC) MODE_IX2  (Byte 〈xD,x2〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 SBC) MODE_IX1  (Byte 〈xE,x2〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 SBC) MODE_IX0  (Byte 〈xF,x2〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_HC05_28 ≝
+[
+  quadruple … (anyOP HC05 STA) MODE_DIR1 (Byte 〈xB,x7〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 STA) MODE_DIR2 (Byte 〈xC,x7〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 STA) MODE_IX2  (Byte 〈xD,x7〉) 〈x0,x6〉
+; quadruple … (anyOP HC05 STA) MODE_IX1  (Byte 〈xE,x7〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 STA) MODE_IX0  (Byte 〈xF,x7〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC05_29 ≝
+[
+  quadruple … (anyOP HC05 STX) MODE_DIR1 (Byte 〈xB,xF〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 STX) MODE_DIR2 (Byte 〈xC,xF〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 STX) MODE_IX2  (Byte 〈xD,xF〉) 〈x0,x6〉
+; quadruple … (anyOP HC05 STX) MODE_IX1  (Byte 〈xE,xF〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 STX) MODE_IX0  (Byte 〈xF,xF〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC05_30 ≝
+[
+  quadruple … (anyOP HC05 SUB) MODE_IMM1 (Byte 〈xA,x0〉) 〈x0,x2〉
+; quadruple … (anyOP HC05 SUB) MODE_DIR1 (Byte 〈xB,x0〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 SUB) MODE_DIR2 (Byte 〈xC,x0〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 SUB) MODE_IX2  (Byte 〈xD,x0〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 SUB) MODE_IX1  (Byte 〈xE,x0〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 SUB) MODE_IX0  (Byte 〈xF,x0〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_HC05_31 ≝
+[
+  quadruple … (anyOP HC05 TST) MODE_DIR1 (Byte 〈x3,xD〉) 〈x0,x4〉
+; quadruple … (anyOP HC05 TST) MODE_INHA (Byte 〈x4,xD〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 TST) MODE_INHX (Byte 〈x5,xD〉) 〈x0,x3〉
+; quadruple … (anyOP HC05 TST) MODE_IX1  (Byte 〈x6,xD〉) 〈x0,x5〉
+; quadruple … (anyOP HC05 TST) MODE_IX0  (Byte 〈x7,xD〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC05 ≝
+ opcode_table_HC05_1  @ opcode_table_HC05_2  @ opcode_table_HC05_3  @ opcode_table_HC05_4  @
+ opcode_table_HC05_5  @ opcode_table_HC05_6  @ opcode_table_HC05_7  @ opcode_table_HC05_8  @
+ opcode_table_HC05_9  @ opcode_table_HC05_10 @ opcode_table_HC05_11 @ opcode_table_HC05_12 @
+ opcode_table_HC05_13 @ opcode_table_HC05_14 @ opcode_table_HC05_15 @ opcode_table_HC05_16 @
+ opcode_table_HC05_17 @ opcode_table_HC05_18 @ opcode_table_HC05_19 @ opcode_table_HC05_20 @
+ opcode_table_HC05_21 @ opcode_table_HC05_22 @ opcode_table_HC05_23 @ opcode_table_HC05_24 @
+ opcode_table_HC05_25 @ opcode_table_HC05_26 @ opcode_table_HC05_27 @ opcode_table_HC05_28 @
+ opcode_table_HC05_29 @ opcode_table_HC05_30 @ opcode_table_HC05_31.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/table_HC05_tests.ma b/helm/software/matita/contribs/ng_assembly/freescale/table_HC05_tests.ma
new file mode 100755 (executable)
index 0000000..75bb840
--- /dev/null
@@ -0,0 +1,94 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/table_HC05.ma".
+include "freescale/opcode.ma".
+
+(* ***************** *)
+(* TABELLA DELL'HC05 *)
+(* ***************** *)
+
+(* HC05: opcode non implementati come da manuale *)
+ndefinition HC05_not_impl_byte ≝
+ [〈x3,x1〉;〈x3,x2〉;〈x3,x5〉;〈x3,xB〉;〈x3,xE〉
+ ;〈x4,x1〉;〈x4,x5〉;〈x4,xB〉;〈x4,xE〉
+ ;〈x5,x1〉;〈x5,x2〉;〈x5,x5〉;〈x5,xB〉;〈x5,xE〉
+ ;〈x6,x1〉;〈x6,x2〉;〈x6,x5〉;〈x6,xB〉;〈x6,xE〉
+ ;〈x7,x1〉;〈x7,x2〉;〈x7,x5〉;〈x7,xB〉;〈x7,xE〉
+ ;〈x8,x2〉;〈x8,x4〉;〈x8,x5〉;〈x8,x6〉;〈x8,x7〉;〈x8,x8〉;〈x8,x9〉;〈x8,xA〉;〈x8,xB〉;〈x8,xC〉;〈x8,xD〉
+ ;〈x9,x0〉;〈x9,x1〉;〈x9,x2〉;〈x9,x3〉;〈x9,x4〉;〈x9,x5〉;〈x9,x6〉;〈x9,xE〉
+ ;〈xA,x7〉;〈xA,xC〉;〈xA,xF〉
+ ].
+
+nlemma ok_byte_table_HC05 : forall_b8 (λb.
+ (test_not_impl_byte b HC05_not_impl_byte     ⊙ eq_w16 (get_byte_count HC05 b 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HC05) 〈〈x0,x0〉:〈x0,x1〉〉) ⊗
+ (⊖ (test_not_impl_byte b HC05_not_impl_byte) ⊙ eq_w16 (get_byte_count HC05 b 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HC05) 〈〈x0,x0〉:〈x0,x0〉〉))
+ = true.
+ napply refl_eq.
+nqed.
+
+(* HC05: pseudocodici non implementati come da manuale *)
+ndefinition HC05_not_impl_pseudo ≝
+ [ AIS ; AIX ; BGE ; BGND ; BGT ; BLE ; BLT ; CBEQA ; CBEQX ; CPHX ; DAA
+ ; DBNZ ; DIV ; LDHX ; MOV ; NSA ; PSHA ; PSHH ; PSHX ; PULA ; PULH ; PULX
+ ; SHA ; SLA ; STHX ; TAP ; TPA ; TSX ; TXS ].
+
+nlemma ok_pseudo_table_HC05 : forall_op (λo.
+ (test_not_impl_pseudo o HC05_not_impl_pseudo     ⊙ le_w16 〈〈x0,x0〉:〈x0,x1〉〉 (get_pseudo_count HC05 o 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HC05)) ⊗
+ (⊖ (test_not_impl_pseudo o HC05_not_impl_pseudo) ⊙ eq_w16 (get_pseudo_count HC05 o 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HC05) 〈〈x0,x0〉:〈x0,x0〉〉))
+ = true.
+ napply refl_eq.
+nqed.
+
+(* HC05: modalita' non implementate come da manuale *)
+ndefinition HC05_not_impl_mode ≝
+ [ MODE_INHH ; MODE_SP1 ; MODE_SP2 ; MODE_DIR1_to_DIR1
+ ; MODE_IMM1_to_DIR1 ; MODE_IX0p_to_DIR1 ; MODE_DIR1_to_IX0p
+ ; MODE_INHA_and_IMM1 ; MODE_INHX_and_IMM1 ; MODE_IMM1_and_IMM1
+ ; MODE_DIR1_and_IMM1 ; MODE_IX0_and_IMM1 ; MODE_IX0p_and_IMM1
+ ; MODE_IX1_and_IMM1 ; MODE_IX1p_and_IMM1 ; MODE_SP1_and_IMM1
+ ; MODE_TNY x0 ; MODE_TNY x1 ; MODE_TNY x2 ; MODE_TNY x3
+ ; MODE_TNY x4 ; MODE_TNY x5 ; MODE_TNY x6 ; MODE_TNY x7
+ ; MODE_TNY x8 ; MODE_TNY x9 ; MODE_TNY xA ; MODE_TNY xB
+ ; MODE_TNY xC ; MODE_TNY xD ; MODE_TNY xE ; MODE_TNY xF
+ ; MODE_SRT t00 ; MODE_SRT t01 ; MODE_SRT t02 ; MODE_SRT t03
+ ; MODE_SRT t04 ; MODE_SRT t05 ; MODE_SRT t06 ; MODE_SRT t07
+ ; MODE_SRT t08 ; MODE_SRT t09 ; MODE_SRT t0A ; MODE_SRT t0B
+ ; MODE_SRT t0C ; MODE_SRT t0D ; MODE_SRT t0E ; MODE_SRT t0F
+ ; MODE_SRT t10 ; MODE_SRT t11 ; MODE_SRT t12 ; MODE_SRT t13
+ ; MODE_SRT t14 ; MODE_SRT t15 ; MODE_SRT t16 ; MODE_SRT t17
+ ; MODE_SRT t18 ; MODE_SRT t19 ; MODE_SRT t1A ; MODE_SRT t1B
+ ; MODE_SRT t1C ; MODE_SRT t1D ; MODE_SRT t1E ; MODE_SRT t1F ].
+
+nlemma ok_mode_table_HC05 : forall_im (λi.
+ (test_not_impl_mode i HC05_not_impl_mode     ⊙ le_w16 〈〈x0,x0〉:〈x0,x1〉〉 (get_mode_count HC05 i 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HC05)) ⊗
+ (⊖ (test_not_impl_mode i HC05_not_impl_mode) ⊙ eq_w16 (get_mode_count HC05 i 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HC05) 〈〈x0,x0〉:〈x0,x0〉〉))
+ = true.
+ napply refl_eq.
+nqed.
+
+nlemma ok_OpIm_table_HC05 :
+ forall_im (λi:instr_mode.
+ forall_op (λop:opcode.
+  le_w16 (get_OpIm_count HC05 (anyOP HC05 op) i 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HC05) 〈〈x0,x0〉:〈x0,x1〉〉)) = true.
+ napply refl_eq.
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/table_HC08.ma b/helm/software/matita/contribs/ng_assembly/freescale/table_HC08.ma
new file mode 100755 (executable)
index 0000000..bf4f48c
--- /dev/null
@@ -0,0 +1,474 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/opcode_base.ma".
+include "common/list.ma".
+
+(* ***************** *)
+(* TABELLA DELL'HC08 *)
+(* ***************** *)
+
+(* definizione come concatenazione finale di liste per velocizzare il parsing *)
+(* ogni riga e' (any_opcode m) (instr_mode) (opcode esadecimale) (#cicli esecuzione) *)
+(* NB: l'uso di any_opcode m + concatenazione finale tutte liste
+       impedisce di introdurre opcode disomogenei (per mcu) *)
+
+ndefinition opcode_table_HC08_1 ≝
+[
+  quadruple … (anyOP HC08 ADC) MODE_IMM1 (Byte 〈xA,x9〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 ADC) MODE_DIR1 (Byte 〈xB,x9〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 ADC) MODE_DIR2 (Byte 〈xC,x9〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 ADC) MODE_IX2  (Byte 〈xD,x9〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 ADC) MODE_IX1  (Byte 〈xE,x9〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 ADC) MODE_IX0  (Byte 〈xF,x9〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 ADC) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x9〉〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 ADC) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x9〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08_2 ≝
+[
+  quadruple … (anyOP HC08 ADD) MODE_IMM1 (Byte 〈xA,xB〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 ADD) MODE_DIR1 (Byte 〈xB,xB〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 ADD) MODE_DIR2 (Byte 〈xC,xB〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 ADD) MODE_IX2  (Byte 〈xD,xB〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 ADD) MODE_IX1  (Byte 〈xE,xB〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 ADD) MODE_IX0  (Byte 〈xF,xB〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 ADD) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,xB〉〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 ADD) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,xB〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08_3 ≝
+[
+  quadruple … (anyOP HC08 AND) MODE_IMM1 (Byte 〈xA,x4〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 AND) MODE_DIR1 (Byte 〈xB,x4〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 AND) MODE_DIR2 (Byte 〈xC,x4〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 AND) MODE_IX2  (Byte 〈xD,x4〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 AND) MODE_IX1  (Byte 〈xE,x4〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 AND) MODE_IX0  (Byte 〈xF,x4〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 AND) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x4〉〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 AND) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x4〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08_4 ≝
+[
+  quadruple … (anyOP HC08 ASL) MODE_DIR1 (Byte 〈x3,x8〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 ASL) MODE_INHA (Byte 〈x4,x8〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 ASL) MODE_INHX (Byte 〈x5,x8〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 ASL) MODE_IX1  (Byte 〈x6,x8〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 ASL) MODE_IX0  (Byte 〈x7,x8〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 ASL) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,x8〉〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC08_5 ≝
+[
+  quadruple … (anyOP HC08 ASR) MODE_DIR1 (Byte 〈x3,x7〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 ASR) MODE_INHA (Byte 〈x4,x7〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 ASR) MODE_INHX (Byte 〈x5,x7〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 ASR) MODE_IX1  (Byte 〈x6,x7〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 ASR) MODE_IX0  (Byte 〈x7,x7〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 ASR) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,x7〉〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC08_6 ≝
+[
+  quadruple … (anyOP HC08 BRA ) MODE_IMM1 (Byte 〈x2,x0〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BRN ) MODE_IMM1 (Byte 〈x2,x1〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BHI ) MODE_IMM1 (Byte 〈x2,x2〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BLS ) MODE_IMM1 (Byte 〈x2,x3〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BCC ) MODE_IMM1 (Byte 〈x2,x4〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BCS ) MODE_IMM1 (Byte 〈x2,x5〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BNE ) MODE_IMM1 (Byte 〈x2,x6〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BEQ ) MODE_IMM1 (Byte 〈x2,x7〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BHCC) MODE_IMM1 (Byte 〈x2,x8〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BHCS) MODE_IMM1 (Byte 〈x2,x9〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BPL ) MODE_IMM1 (Byte 〈x2,xA〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BMI ) MODE_IMM1 (Byte 〈x2,xB〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BMC ) MODE_IMM1 (Byte 〈x2,xC〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BMS ) MODE_IMM1 (Byte 〈x2,xD〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BIL ) MODE_IMM1 (Byte 〈x2,xE〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BIH ) MODE_IMM1 (Byte 〈x2,xF〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BGE ) MODE_IMM1 (Byte 〈x9,x0〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BLT ) MODE_IMM1 (Byte 〈x9,x1〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BGT ) MODE_IMM1 (Byte 〈x9,x2〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BLE ) MODE_IMM1 (Byte 〈x9,x3〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_HC08_7 ≝
+[
+  quadruple … (anyOP HC08 BSETn) (MODE_DIRn o0) (Byte 〈x1,x0〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 BCLRn) (MODE_DIRn o0) (Byte 〈x1,x1〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 BSETn) (MODE_DIRn o1) (Byte 〈x1,x2〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 BCLRn) (MODE_DIRn o1) (Byte 〈x1,x3〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 BSETn) (MODE_DIRn o2) (Byte 〈x1,x4〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 BCLRn) (MODE_DIRn o2) (Byte 〈x1,x5〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 BSETn) (MODE_DIRn o3) (Byte 〈x1,x6〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 BCLRn) (MODE_DIRn o3) (Byte 〈x1,x7〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 BSETn) (MODE_DIRn o4) (Byte 〈x1,x8〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 BCLRn) (MODE_DIRn o4) (Byte 〈x1,x9〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 BSETn) (MODE_DIRn o5) (Byte 〈x1,xA〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 BCLRn) (MODE_DIRn o5) (Byte 〈x1,xB〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 BSETn) (MODE_DIRn o6) (Byte 〈x1,xC〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 BCLRn) (MODE_DIRn o6) (Byte 〈x1,xD〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 BSETn) (MODE_DIRn o7) (Byte 〈x1,xE〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 BCLRn) (MODE_DIRn o7) (Byte 〈x1,xF〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08_8 ≝
+[
+  quadruple … (anyOP HC08 BRSETn) (MODE_DIRn_and_IMM1 o0) (Byte 〈x0,x0〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 BRCLRn) (MODE_DIRn_and_IMM1 o0) (Byte 〈x0,x1〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 BRSETn) (MODE_DIRn_and_IMM1 o1) (Byte 〈x0,x2〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 BRCLRn) (MODE_DIRn_and_IMM1 o1) (Byte 〈x0,x3〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 BRSETn) (MODE_DIRn_and_IMM1 o2) (Byte 〈x0,x4〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 BRCLRn) (MODE_DIRn_and_IMM1 o2) (Byte 〈x0,x5〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 BRSETn) (MODE_DIRn_and_IMM1 o3) (Byte 〈x0,x6〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 BRCLRn) (MODE_DIRn_and_IMM1 o3) (Byte 〈x0,x7〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 BRSETn) (MODE_DIRn_and_IMM1 o4) (Byte 〈x0,x8〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 BRCLRn) (MODE_DIRn_and_IMM1 o4) (Byte 〈x0,x9〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 BRSETn) (MODE_DIRn_and_IMM1 o5) (Byte 〈x0,xA〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 BRCLRn) (MODE_DIRn_and_IMM1 o5) (Byte 〈x0,xB〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 BRSETn) (MODE_DIRn_and_IMM1 o6) (Byte 〈x0,xC〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 BRCLRn) (MODE_DIRn_and_IMM1 o6) (Byte 〈x0,xD〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 BRSETn) (MODE_DIRn_and_IMM1 o7) (Byte 〈x0,xE〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 BRCLRn) (MODE_DIRn_and_IMM1 o7) (Byte 〈x0,xF〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC08_9 ≝
+[
+  quadruple … (anyOP HC08 BIT) MODE_IMM1 (Byte 〈xA,x5〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 BIT) MODE_DIR1 (Byte 〈xB,x5〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BIT) MODE_DIR2 (Byte 〈xC,x5〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 BIT) MODE_IX2  (Byte 〈xD,x5〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 BIT) MODE_IX1  (Byte 〈xE,x5〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 BIT) MODE_IX0  (Byte 〈xF,x5〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 BIT) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x5〉〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 BIT) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x5〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08_10 ≝
+[
+  quadruple … (anyOP HC08 MUL ) MODE_INH  (Byte 〈x4,x2〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 DIV ) MODE_INH  (Byte 〈x5,x2〉) 〈x0,x7〉
+; quadruple … (anyOP HC08 NSA ) MODE_INH  (Byte 〈x6,x2〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 DAA ) MODE_INH  (Byte 〈x7,x2〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 RTI ) MODE_INH  (Byte 〈x8,x0〉) 〈x0,x7〉
+; quadruple … (anyOP HC08 RTS ) MODE_INH  (Byte 〈x8,x1〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 SWI ) MODE_INH  (Byte 〈x8,x3〉) 〈x0,x9〉
+; quadruple … (anyOP HC08 TAP ) MODE_INH  (Byte 〈x8,x4〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 TPA ) MODE_INH  (Byte 〈x8,x5〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 PULA) MODE_INH  (Byte 〈x8,x6〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 PSHA) MODE_INH  (Byte 〈x8,x7〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 PULX) MODE_INH  (Byte 〈x8,x8〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 PSHX) MODE_INH  (Byte 〈x8,x9〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 PULH) MODE_INH  (Byte 〈x8,xA〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 PSHH) MODE_INH  (Byte 〈x8,xB〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 STOP) MODE_INH  (Byte 〈x8,xE〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 WAIT) MODE_INH  (Byte 〈x8,xF〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 TXS ) MODE_INH  (Byte 〈x9,x4〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 TSX ) MODE_INH  (Byte 〈x9,x5〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 TAX ) MODE_INH  (Byte 〈x9,x7〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 CLC ) MODE_INH  (Byte 〈x9,x8〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 SEC ) MODE_INH  (Byte 〈x9,x9〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 CLI ) MODE_INH  (Byte 〈x9,xA〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 SEI ) MODE_INH  (Byte 〈x9,xB〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 RSP ) MODE_INH  (Byte 〈x9,xC〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 NOP ) MODE_INH  (Byte 〈x9,xD〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 TXA ) MODE_INH  (Byte 〈x9,xF〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 AIS ) MODE_IMM1 (Byte 〈xA,x7〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 AIX ) MODE_IMM1 (Byte 〈xA,xF〉) 〈x0,x2〉
+].
+
+ndefinition opcode_table_HC08_11 ≝
+[
+  quadruple … (anyOP HC08 CBEQA) MODE_DIR1_and_IMM1 (Byte 〈x3,x1〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 CBEQA) MODE_IMM1_and_IMM1 (Byte 〈x4,x1〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 CBEQX) MODE_IMM1_and_IMM1 (Byte 〈x5,x1〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 CBEQA) MODE_IX1p_and_IMM1 (Byte 〈x6,x1〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 CBEQA) MODE_IX0p_and_IMM1 (Byte 〈x7,x1〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 CBEQA) MODE_SP1_and_IMM1  (Word 〈〈x9,xE〉:〈x6,x1〉〉) 〈x0,x6〉
+].
+
+ndefinition opcode_table_HC08_12 ≝
+[
+  quadruple … (anyOP HC08 CLR) MODE_DIR1 (Byte 〈x3,xF〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 CLR) MODE_INHA (Byte 〈x4,xF〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 CLR) MODE_INHX (Byte 〈x5,xF〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 CLR) MODE_IX1  (Byte 〈x6,xF〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 CLR) MODE_IX0  (Byte 〈x7,xF〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 CLR) MODE_INHH (Byte 〈x8,xC〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 CLR) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,xF〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08_13 ≝
+[
+  quadruple … (anyOP HC08 CMP) MODE_IMM1 (Byte 〈xA,x1〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 CMP) MODE_DIR1 (Byte 〈xB,x1〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 CMP) MODE_DIR2 (Byte 〈xC,x1〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 CMP) MODE_IX2  (Byte 〈xD,x1〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 CMP) MODE_IX1  (Byte 〈xE,x1〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 CMP) MODE_IX0  (Byte 〈xF,x1〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 CMP) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x1〉〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 CMP) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x1〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08_14 ≝
+[
+  quadruple … (anyOP HC08 COM) MODE_DIR1 (Byte 〈x3,x3〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 COM) MODE_INHA (Byte 〈x4,x3〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 COM) MODE_INHX (Byte 〈x5,x3〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 COM) MODE_IX1  (Byte 〈x6,x3〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 COM) MODE_IX0  (Byte 〈x7,x3〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 COM) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,x3〉〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC08_15 ≝
+[
+  quadruple … (anyOP HC08 STHX) MODE_DIR1 (Byte 〈x3,x5〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 LDHX) MODE_IMM2 (Byte 〈x4,x5〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 LDHX) MODE_DIR1 (Byte 〈x5,x5〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 CPHX) MODE_IMM2 (Byte 〈x6,x5〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 CPHX) MODE_DIR1 (Byte 〈x7,x5〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08_16 ≝
+[
+  quadruple … (anyOP HC08 CPX) MODE_IMM1 (Byte 〈xA,x3〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 CPX) MODE_DIR1 (Byte 〈xB,x3〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 CPX) MODE_DIR2 (Byte 〈xC,x3〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 CPX) MODE_IX2  (Byte 〈xD,x3〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 CPX) MODE_IX1  (Byte 〈xE,x3〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 CPX) MODE_IX0  (Byte 〈xF,x3〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 CPX) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x3〉〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 CPX) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x3〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08_17 ≝
+[
+  quadruple … (anyOP HC08 DBNZ) MODE_DIR1_and_IMM1 (Byte 〈x3,xB〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 DBNZ) MODE_INHA_and_IMM1 (Byte 〈x4,xB〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 DBNZ) MODE_INHX_and_IMM1 (Byte 〈x5,xB〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 DBNZ) MODE_IX1_and_IMM1  (Byte 〈x6,xB〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 DBNZ) MODE_IX0_and_IMM1  (Byte 〈x7,xB〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 DBNZ) MODE_SP1_and_IMM1  (Word 〈〈x9,xE〉:〈x6,xB〉〉) 〈x0,x6〉
+].
+
+ndefinition opcode_table_HC08_18 ≝
+[
+  quadruple … (anyOP HC08 DEC) MODE_DIR1 (Byte 〈x3,xA〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 DEC) MODE_INHA (Byte 〈x4,xA〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 DEC) MODE_INHX (Byte 〈x5,xA〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 DEC) MODE_IX1  (Byte 〈x6,xA〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 DEC) MODE_IX0  (Byte 〈x7,xA〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 DEC) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,xA〉〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC08_19 ≝
+[
+  quadruple … (anyOP HC08 EOR) MODE_IMM1 (Byte 〈xA,x8〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 EOR) MODE_DIR1 (Byte 〈xB,x8〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 EOR) MODE_DIR2 (Byte 〈xC,x8〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 EOR) MODE_IX2  (Byte 〈xD,x8〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 EOR) MODE_IX1  (Byte 〈xE,x8〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 EOR) MODE_IX0  (Byte 〈xF,x8〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 EOR) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x8〉〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 EOR) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x8〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08_20 ≝
+[
+  quadruple … (anyOP HC08 INC) MODE_DIR1 (Byte 〈x3,xC〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 INC) MODE_INHA (Byte 〈x4,xC〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 INC) MODE_INHX (Byte 〈x5,xC〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 INC) MODE_IX1  (Byte 〈x6,xC〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 INC) MODE_IX0  (Byte 〈x7,xC〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 INC) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,xC〉〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC08_21 ≝
+[
+  quadruple … (anyOP HC08 JMP) MODE_IMM1EXT  (Byte 〈xB,xC〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 JMP) MODE_IMM2     (Byte 〈xC,xC〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 JMP) MODE_INHX2ADD (Byte 〈xD,xC〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 JMP) MODE_INHX1ADD (Byte 〈xE,xC〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 JMP) MODE_INHX0ADD (Byte 〈xF,xC〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_HC08_22 ≝
+[
+  quadruple … (anyOP HC08 BSR) MODE_IMM1     (Byte 〈xA,xD〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 JSR) MODE_IMM1EXT  (Byte 〈xB,xD〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 JSR) MODE_IMM2     (Byte 〈xC,xD〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 JSR) MODE_INHX2ADD (Byte 〈xD,xD〉) 〈x0,x6〉
+; quadruple … (anyOP HC08 JSR) MODE_INHX1ADD (Byte 〈xE,xD〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 JSR) MODE_INHX0ADD (Byte 〈xF,xD〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08_23 ≝
+[
+  quadruple … (anyOP HC08 LDA) MODE_IMM1 (Byte 〈xA,x6〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 LDA) MODE_DIR1 (Byte 〈xB,x6〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 LDA) MODE_DIR2 (Byte 〈xC,x6〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 LDA) MODE_IX2  (Byte 〈xD,x6〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 LDA) MODE_IX1  (Byte 〈xE,x6〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 LDA) MODE_IX0  (Byte 〈xF,x6〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 LDA) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x6〉〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 LDA) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x6〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08_24 ≝
+[
+  quadruple … (anyOP HC08 LDX) MODE_IMM1 (Byte 〈xA,xE〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 LDX) MODE_DIR1 (Byte 〈xB,xE〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 LDX) MODE_DIR2 (Byte 〈xC,xE〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 LDX) MODE_IX2  (Byte 〈xD,xE〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 LDX) MODE_IX1  (Byte 〈xE,xE〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 LDX) MODE_IX0  (Byte 〈xF,xE〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 LDX) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,xE〉〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 LDX) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,xE〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08_25 ≝
+[
+  quadruple … (anyOP HC08 LSR) MODE_DIR1 (Byte 〈x3,x4〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 LSR) MODE_INHA (Byte 〈x4,x4〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 LSR) MODE_INHX (Byte 〈x5,x4〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 LSR) MODE_IX1  (Byte 〈x6,x4〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 LSR) MODE_IX0  (Byte 〈x7,x4〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 LSR) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,x4〉〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC08_26 ≝
+[
+  quadruple … (anyOP HC08 MOV) MODE_DIR1_to_DIR1 (Byte 〈x4,xE〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 MOV) MODE_DIR1_to_IX0p (Byte 〈x5,xE〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 MOV) MODE_IMM1_to_DIR1 (Byte 〈x6,xE〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 MOV) MODE_IX0p_to_DIR1 (Byte 〈x7,xE〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08_27 ≝
+[
+  quadruple … (anyOP HC08 NEG) MODE_DIR1 (Byte 〈x3,x0〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 NEG) MODE_INHA (Byte 〈x4,x0〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 NEG) MODE_INHX (Byte 〈x5,x0〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 NEG) MODE_IX1  (Byte 〈x6,x0〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 NEG) MODE_IX0  (Byte 〈x7,x0〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 NEG) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,x0〉〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC08_28 ≝
+[
+  quadruple … (anyOP HC08 ORA) MODE_IMM1 (Byte 〈xA,xA〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 ORA) MODE_DIR1 (Byte 〈xB,xA〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 ORA) MODE_DIR2 (Byte 〈xC,xA〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 ORA) MODE_IX2  (Byte 〈xD,xA〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 ORA) MODE_IX1  (Byte 〈xE,xA〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 ORA) MODE_IX0  (Byte 〈xF,xA〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 ORA) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,xA〉〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 ORA) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,xA〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08_29 ≝
+[
+  quadruple … (anyOP HC08 ROL) MODE_DIR1 (Byte 〈x3,x9〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 ROL) MODE_INHA (Byte 〈x4,x9〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 ROL) MODE_INHX (Byte 〈x5,x9〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 ROL) MODE_IX1  (Byte 〈x6,x9〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 ROL) MODE_IX0  (Byte 〈x7,x9〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 ROL) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,x9〉〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC08_30 ≝
+[
+  quadruple … (anyOP HC08 ROR) MODE_DIR1 (Byte 〈x3,x6〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 ROR) MODE_INHA (Byte 〈x4,x6〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 ROR) MODE_INHX (Byte 〈x5,x6〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 ROR) MODE_IX1  (Byte 〈x6,x6〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 ROR) MODE_IX0  (Byte 〈x7,x6〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 ROR) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,x6〉〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HC08_31 ≝
+[
+  quadruple … (anyOP HC08 SBC) MODE_IMM1 (Byte 〈xA,x2〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 SBC) MODE_DIR1 (Byte 〈xB,x2〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 SBC) MODE_DIR2 (Byte 〈xC,x2〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 SBC) MODE_IX2  (Byte 〈xD,x2〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 SBC) MODE_IX1  (Byte 〈xE,x2〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 SBC) MODE_IX0  (Byte 〈xF,x2〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 SBC) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x2〉〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 SBC) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x2〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08_32 ≝
+[
+  quadruple … (anyOP HC08 STA) MODE_DIR1 (Byte 〈xB,x7〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 STA) MODE_DIR2 (Byte 〈xC,x7〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 STA) MODE_IX2  (Byte 〈xD,x7〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 STA) MODE_IX1  (Byte 〈xE,x7〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 STA) MODE_IX0  (Byte 〈xF,x7〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 STA) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x7〉〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 STA) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x7〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08_33 ≝
+[
+  quadruple … (anyOP HC08 STX) MODE_DIR1 (Byte 〈xB,xF〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 STX) MODE_DIR2 (Byte 〈xC,xF〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 STX) MODE_IX2  (Byte 〈xD,xF〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 STX) MODE_IX1  (Byte 〈xE,xF〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 STX) MODE_IX0  (Byte 〈xF,xF〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 STX) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,xF〉〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 STX) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,xF〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08_34 ≝
+[
+  quadruple … (anyOP HC08 SUB) MODE_IMM1 (Byte 〈xA,x0〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 SUB) MODE_DIR1 (Byte 〈xB,x0〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 SUB) MODE_DIR2 (Byte 〈xC,x0〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 SUB) MODE_IX2  (Byte 〈xD,x0〉) 〈x0,x4〉
+; quadruple … (anyOP HC08 SUB) MODE_IX1  (Byte 〈xE,x0〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 SUB) MODE_IX0  (Byte 〈xF,x0〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 SUB) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x0〉〉) 〈x0,x5〉
+; quadruple … (anyOP HC08 SUB) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x0〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08_35 ≝
+[
+  quadruple … (anyOP HC08 TST) MODE_DIR1 (Byte 〈x3,xD〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 TST) MODE_INHA (Byte 〈x4,xD〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 TST) MODE_INHX (Byte 〈x5,xD〉) 〈x0,x1〉
+; quadruple … (anyOP HC08 TST) MODE_IX1  (Byte 〈x6,xD〉) 〈x0,x3〉
+; quadruple … (anyOP HC08 TST) MODE_IX0  (Byte 〈x7,xD〉) 〈x0,x2〉
+; quadruple … (anyOP HC08 TST) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,xD〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HC08 ≝
+opcode_table_HC08_1  @ opcode_table_HC08_2  @ opcode_table_HC08_3  @ opcode_table_HC08_4  @
+opcode_table_HC08_5  @ opcode_table_HC08_6  @ opcode_table_HC08_7  @ opcode_table_HC08_8  @
+opcode_table_HC08_9  @ opcode_table_HC08_10 @ opcode_table_HC08_11 @ opcode_table_HC08_12 @
+opcode_table_HC08_13 @ opcode_table_HC08_14 @ opcode_table_HC08_15 @ opcode_table_HC08_16 @
+opcode_table_HC08_17 @ opcode_table_HC08_18 @ opcode_table_HC08_19 @ opcode_table_HC08_20 @
+opcode_table_HC08_21 @ opcode_table_HC08_22 @ opcode_table_HC08_23 @ opcode_table_HC08_24 @
+opcode_table_HC08_25 @ opcode_table_HC08_26 @ opcode_table_HC08_27 @ opcode_table_HC08_28 @
+opcode_table_HC08_29 @ opcode_table_HC08_30 @ opcode_table_HC08_31 @ opcode_table_HC08_32 @
+opcode_table_HC08_33 @ opcode_table_HC08_34 @ opcode_table_HC08_35.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/table_HC08_tests.ma b/helm/software/matita/contribs/ng_assembly/freescale/table_HC08_tests.ma
new file mode 100755 (executable)
index 0000000..8c85e3c
--- /dev/null
@@ -0,0 +1,123 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/table_HC08.ma".
+include "freescale/opcode.ma".
+
+(* ***************** *)
+(* TABELLA DELL'HC08 *)
+(* ***************** *)
+
+(* HC08: opcode non implementati come da manuale (byte) *)
+ndefinition HC08_not_impl_byte ≝
+ [〈x3,x2〉;〈x3,xE〉
+ ;〈x8,x2〉;〈x8,xD〉
+ ;〈x9,x6〉;〈x9,xE〉
+ ;〈xA,xC〉
+ ].
+
+nlemma ok_byte_table_HC08 : forall_b8 (λb.
+ (test_not_impl_byte b HC08_not_impl_byte     ⊙ eq_w16 (get_byte_count HC08 b 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HC08) 〈〈x0,x0〉:〈x0,x1〉〉) ⊗
+ (⊖ (test_not_impl_byte b HC08_not_impl_byte) ⊙ eq_w16 (get_byte_count HC08 b 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HC08) 〈〈x0,x0〉:〈x0,x0〉〉))
+ = true.
+ napply refl_eq.
+nqed.
+
+(* HC08: opcode non implementati come da manuale (0x9E+byte) *)
+ndefinition HC08_not_impl_word ≝
+ [〈x0,x0〉;〈x0,x1〉;〈x0,x2〉;〈x0,x3〉;〈x0,x4〉;〈x0,x5〉;〈x0,x6〉;〈x0,x7〉
+ ;〈x0,x8〉;〈x0,x9〉;〈x0,xA〉;〈x0,xB〉;〈x0,xC〉;〈x0,xD〉;〈x0,xE〉;〈x0,xF〉
+ ;〈x1,x0〉;〈x1,x1〉;〈x1,x2〉;〈x1,x3〉;〈x1,x4〉;〈x1,x5〉;〈x1,x6〉;〈x1,x7〉
+ ;〈x1,x8〉;〈x1,x9〉;〈x1,xA〉;〈x1,xB〉;〈x1,xC〉;〈x1,xD〉;〈x1,xE〉;〈x1,xF〉
+ ;〈x2,x0〉;〈x2,x1〉;〈x2,x2〉;〈x2,x3〉;〈x2,x4〉;〈x2,x5〉;〈x2,x6〉;〈x2,x7〉
+ ;〈x2,x8〉;〈x2,x9〉;〈x2,xA〉;〈x2,xB〉;〈x2,xC〉;〈x2,xD〉;〈x2,xE〉;〈x2,xF〉
+ ;〈x3,x0〉;〈x3,x1〉;〈x3,x2〉;〈x3,x3〉;〈x3,x4〉;〈x3,x5〉;〈x3,x6〉;〈x3,x7〉
+ ;〈x3,x8〉;〈x3,x9〉;〈x3,xA〉;〈x3,xB〉;〈x3,xC〉;〈x3,xD〉;〈x3,xE〉;〈x3,xF〉
+ ;〈x4,x0〉;〈x4,x1〉;〈x4,x2〉;〈x4,x3〉;〈x4,x4〉;〈x4,x5〉;〈x4,x6〉;〈x4,x7〉
+ ;〈x4,x8〉;〈x4,x9〉;〈x4,xA〉;〈x4,xB〉;〈x4,xC〉;〈x4,xD〉;〈x4,xE〉;〈x4,xF〉
+ ;〈x5,x0〉;〈x5,x1〉;〈x5,x2〉;〈x5,x3〉;〈x5,x4〉;〈x5,x5〉;〈x5,x6〉;〈x5,x7〉
+ ;〈x5,x8〉;〈x5,x9〉;〈x5,xA〉;〈x5,xB〉;〈x5,xC〉;〈x5,xD〉;〈x5,xE〉;〈x5,xF〉
+ ;〈x6,x2〉;〈x6,x5〉;〈x6,xE〉
+ ;〈x7,x0〉;〈x7,x1〉;〈x7,x2〉;〈x7,x3〉;〈x7,x4〉;〈x7,x5〉;〈x7,x6〉;〈x7,x7〉
+ ;〈x7,x8〉;〈x7,x9〉;〈x7,xA〉;〈x7,xB〉;〈x7,xC〉;〈x7,xD〉;〈x7,xE〉;〈x7,xF〉
+ ;〈x8,x0〉;〈x8,x1〉;〈x8,x2〉;〈x8,x3〉;〈x8,x4〉;〈x8,x5〉;〈x8,x6〉;〈x8,x7〉
+ ;〈x8,x8〉;〈x8,x9〉;〈x8,xA〉;〈x8,xB〉;〈x8,xC〉;〈x8,xD〉;〈x8,xE〉;〈x8,xF〉
+ ;〈x9,x0〉;〈x9,x1〉;〈x9,x2〉;〈x9,x3〉;〈x9,x4〉;〈x9,x5〉;〈x9,x6〉;〈x9,x7〉
+ ;〈x9,x8〉;〈x9,x9〉;〈x9,xA〉;〈x9,xB〉;〈x9,xC〉;〈x9,xD〉;〈x9,xE〉;〈x9,xF〉
+ ;〈xA,x0〉;〈xA,x1〉;〈xA,x2〉;〈xA,x3〉;〈xA,x4〉;〈xA,x5〉;〈xA,x6〉;〈xA,x7〉
+ ;〈xA,x8〉;〈xA,x9〉;〈xA,xA〉;〈xA,xB〉;〈xA,xC〉;〈xA,xD〉;〈xA,xE〉;〈xA,xF〉
+ ;〈xB,x0〉;〈xB,x1〉;〈xB,x2〉;〈xB,x3〉;〈xB,x4〉;〈xB,x5〉;〈xB,x6〉;〈xB,x7〉
+ ;〈xB,x8〉;〈xB,x9〉;〈xB,xA〉;〈xB,xB〉;〈xB,xC〉;〈xB,xD〉;〈xB,xE〉;〈xB,xF〉
+ ;〈xC,x0〉;〈xC,x1〉;〈xC,x2〉;〈xC,x3〉;〈xC,x4〉;〈xC,x5〉;〈xC,x6〉;〈xC,x7〉
+ ;〈xC,x8〉;〈xC,x9〉;〈xC,xA〉;〈xC,xB〉;〈xC,xC〉;〈xC,xD〉;〈xC,xE〉;〈xC,xF〉
+ ;〈xD,xC〉;〈xD,xD〉
+ ;〈xE,xC〉;〈xE,xD〉
+ ;〈xF,x0〉;〈xF,x1〉;〈xF,x2〉;〈xF,x3〉;〈xF,x4〉;〈xF,x5〉;〈xF,x6〉;〈xF,x7〉
+ ;〈xF,x8〉;〈xF,x9〉;〈xF,xA〉;〈xF,xB〉;〈xF,xC〉;〈xF,xD〉;〈xF,xE〉;〈xF,xF〉
+ ].
+
+nlemma ok_word_table_HC08 : forall_b8 (λb.
+ (test_not_impl_byte b HC08_not_impl_word     ⊙ eq_w16 (get_word_count HC08 b 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HC08) 〈〈x0,x0〉:〈x0,x1〉〉) ⊗
+ (⊖ (test_not_impl_byte b HC08_not_impl_word) ⊙ eq_w16 (get_word_count HC08 b 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HC08) 〈〈x0,x0〉:〈x0,x0〉〉))
+ = true.
+ napply refl_eq.
+nqed.
+
+(* HC08: pseudocodici non implementati come da manuale *)
+ndefinition HC08_not_impl_pseudo ≝
+ [ BGND ; SHA ; SLA ].
+
+nlemma ok_pseudo_table_HC08 : forall_op (λo.
+ (test_not_impl_pseudo o HC08_not_impl_pseudo     ⊙ le_w16 〈〈x0,x0〉:〈x0,x1〉〉 (get_pseudo_count HC08 o 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HC08)) ⊗
+ (⊖ (test_not_impl_pseudo o HC08_not_impl_pseudo) ⊙ eq_w16 (get_pseudo_count HC08 o 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HC08) 〈〈x0,x0〉:〈x0,x0〉〉))
+ = true.
+ napply refl_eq.
+nqed.
+
+(* HC08: modalita' non implementate come da manuale *)
+ndefinition HC08_not_impl_mode ≝
+ [ MODE_TNY x0 ; MODE_TNY x1 ; MODE_TNY x2 ; MODE_TNY x3
+ ; MODE_TNY x4 ; MODE_TNY x5 ; MODE_TNY x6 ; MODE_TNY x7
+ ; MODE_TNY x8 ; MODE_TNY x9 ; MODE_TNY xA ; MODE_TNY xB
+ ; MODE_TNY xC ; MODE_TNY xD ; MODE_TNY xE ; MODE_TNY xF
+ ; MODE_SRT t00 ; MODE_SRT t01 ; MODE_SRT t02 ; MODE_SRT t03
+ ; MODE_SRT t04 ; MODE_SRT t05 ; MODE_SRT t06 ; MODE_SRT t07
+ ; MODE_SRT t08 ; MODE_SRT t09 ; MODE_SRT t0A ; MODE_SRT t0B
+ ; MODE_SRT t0C ; MODE_SRT t0D ; MODE_SRT t0E ; MODE_SRT t0F
+ ; MODE_SRT t10 ; MODE_SRT t11 ; MODE_SRT t12 ; MODE_SRT t13
+ ; MODE_SRT t14 ; MODE_SRT t15 ; MODE_SRT t16 ; MODE_SRT t17
+ ; MODE_SRT t18 ; MODE_SRT t19 ; MODE_SRT t1A ; MODE_SRT t1B
+ ; MODE_SRT t1C ; MODE_SRT t1D ; MODE_SRT t1E ; MODE_SRT t1F ].
+
+nlemma ok_mode_table_HC08 : forall_im (λi.
+ (test_not_impl_mode i HC08_not_impl_mode     ⊙ le_w16 〈〈x0,x0〉:〈x0,x1〉〉 (get_mode_count HC08 i 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HC08)) ⊗
+ (⊖ (test_not_impl_mode i HC08_not_impl_mode) ⊙ eq_w16 (get_mode_count HC08 i 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HC08) 〈〈x0,x0〉:〈x0,x0〉〉))
+ = true.
+ napply refl_eq.
+nqed.
+
+nlemma ok_OpIm_table_HC08 :
+ forall_im (λi:instr_mode.
+ forall_op (λop:opcode.
+  le_w16 (get_OpIm_count HC08 (anyOP HC08 op) i 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HC08) 〈〈x0,x0〉:〈x0,x1〉〉)) = true.
+ napply refl_eq.
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/table_HCS08.ma b/helm/software/matita/contribs/ng_assembly/freescale/table_HCS08.ma
new file mode 100755 (executable)
index 0000000..165ee11
--- /dev/null
@@ -0,0 +1,486 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/opcode_base.ma".
+include "common/list.ma".
+
+(* ****************** *)
+(* TABELLA DELL'HCS08 *)
+(* ****************** *)
+
+(* definizione come concatenazione finale di liste per velocizzare il parsing *)
+(* ogni riga e' (any_opcode m) (instr_mode) (opcode esadecimale) (#cicli esecuzione) *)
+(* NB: l'uso di any_opcode m + concatenazione finale tutte liste
+       impedisce di introdurre opcode disomogenei (per mcu) *)
+
+ndefinition opcode_table_HCS08_1 ≝
+[
+  quadruple … (anyOP HCS08 ADC) MODE_IMM1 (Byte 〈xA,x9〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 ADC) MODE_DIR1 (Byte 〈xB,x9〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 ADC) MODE_DIR2 (Byte 〈xC,x9〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 ADC) MODE_IX2  (Byte 〈xD,x9〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 ADC) MODE_IX1  (Byte 〈xE,x9〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 ADC) MODE_IX0  (Byte 〈xF,x9〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 ADC) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x9〉〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 ADC) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x9〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HCS08_2 ≝
+[
+  quadruple … (anyOP HCS08 ADD) MODE_IMM1 (Byte 〈xA,xB〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 ADD) MODE_DIR1 (Byte 〈xB,xB〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 ADD) MODE_DIR2 (Byte 〈xC,xB〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 ADD) MODE_IX2  (Byte 〈xD,xB〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 ADD) MODE_IX1  (Byte 〈xE,xB〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 ADD) MODE_IX0  (Byte 〈xF,xB〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 ADD) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,xB〉〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 ADD) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,xB〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HCS08_3 ≝
+[
+  quadruple … (anyOP HCS08 AND) MODE_IMM1 (Byte 〈xA,x4〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 AND) MODE_DIR1 (Byte 〈xB,x4〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 AND) MODE_DIR2 (Byte 〈xC,x4〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 AND) MODE_IX2  (Byte 〈xD,x4〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 AND) MODE_IX1  (Byte 〈xE,x4〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 AND) MODE_IX0  (Byte 〈xF,x4〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 AND) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x4〉〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 AND) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x4〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HCS08_4 ≝
+[
+  quadruple … (anyOP HCS08 ASL) MODE_DIR1 (Byte 〈x3,x8〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 ASL) MODE_INHA (Byte 〈x4,x8〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 ASL) MODE_INHX (Byte 〈x5,x8〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 ASL) MODE_IX1  (Byte 〈x6,x8〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 ASL) MODE_IX0  (Byte 〈x7,x8〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 ASL) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,x8〉〉) 〈x0,x6〉
+].
+
+ndefinition opcode_table_HCS08_5 ≝
+[
+  quadruple … (anyOP HCS08 ASR) MODE_DIR1 (Byte 〈x3,x7〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 ASR) MODE_INHA (Byte 〈x4,x7〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 ASR) MODE_INHX (Byte 〈x5,x7〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 ASR) MODE_IX1  (Byte 〈x6,x7〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 ASR) MODE_IX0  (Byte 〈x7,x7〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 ASR) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,x7〉〉) 〈x0,x6〉
+].
+
+ndefinition opcode_table_HCS08_6 ≝
+[
+  quadruple … (anyOP HCS08 BRA ) MODE_IMM1 (Byte 〈x2,x0〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BRN ) MODE_IMM1 (Byte 〈x2,x1〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BHI ) MODE_IMM1 (Byte 〈x2,x2〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BLS ) MODE_IMM1 (Byte 〈x2,x3〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BCC ) MODE_IMM1 (Byte 〈x2,x4〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BCS ) MODE_IMM1 (Byte 〈x2,x5〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BNE ) MODE_IMM1 (Byte 〈x2,x6〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BEQ ) MODE_IMM1 (Byte 〈x2,x7〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BHCC) MODE_IMM1 (Byte 〈x2,x8〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BHCS) MODE_IMM1 (Byte 〈x2,x9〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BPL ) MODE_IMM1 (Byte 〈x2,xA〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BMI ) MODE_IMM1 (Byte 〈x2,xB〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BMC ) MODE_IMM1 (Byte 〈x2,xC〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BMS ) MODE_IMM1 (Byte 〈x2,xD〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BIL ) MODE_IMM1 (Byte 〈x2,xE〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BIH ) MODE_IMM1 (Byte 〈x2,xF〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BGE ) MODE_IMM1 (Byte 〈x9,x0〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BLT ) MODE_IMM1 (Byte 〈x9,x1〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BGT ) MODE_IMM1 (Byte 〈x9,x2〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BLE ) MODE_IMM1 (Byte 〈x9,x3〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_HCS08_7 ≝
+[
+  quadruple … (anyOP HCS08 BSETn) (MODE_DIRn o0) (Byte 〈x1,x0〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BCLRn) (MODE_DIRn o0) (Byte 〈x1,x1〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BSETn) (MODE_DIRn o1) (Byte 〈x1,x2〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BCLRn) (MODE_DIRn o1) (Byte 〈x1,x3〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BSETn) (MODE_DIRn o2) (Byte 〈x1,x4〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BCLRn) (MODE_DIRn o2) (Byte 〈x1,x5〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BSETn) (MODE_DIRn o3) (Byte 〈x1,x6〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BCLRn) (MODE_DIRn o3) (Byte 〈x1,x7〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BSETn) (MODE_DIRn o4) (Byte 〈x1,x8〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BCLRn) (MODE_DIRn o4) (Byte 〈x1,x9〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BSETn) (MODE_DIRn o5) (Byte 〈x1,xA〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BCLRn) (MODE_DIRn o5) (Byte 〈x1,xB〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BSETn) (MODE_DIRn o6) (Byte 〈x1,xC〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BCLRn) (MODE_DIRn o6) (Byte 〈x1,xD〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BSETn) (MODE_DIRn o7) (Byte 〈x1,xE〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BCLRn) (MODE_DIRn o7) (Byte 〈x1,xF〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HCS08_8 ≝
+[
+  quadruple … (anyOP HCS08 BRSETn) (MODE_DIRn_and_IMM1 o0) (Byte 〈x0,x0〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BRCLRn) (MODE_DIRn_and_IMM1 o0) (Byte 〈x0,x1〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BRSETn) (MODE_DIRn_and_IMM1 o1) (Byte 〈x0,x2〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BRCLRn) (MODE_DIRn_and_IMM1 o1) (Byte 〈x0,x3〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BRSETn) (MODE_DIRn_and_IMM1 o2) (Byte 〈x0,x4〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BRCLRn) (MODE_DIRn_and_IMM1 o2) (Byte 〈x0,x5〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BRSETn) (MODE_DIRn_and_IMM1 o3) (Byte 〈x0,x6〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BRCLRn) (MODE_DIRn_and_IMM1 o3) (Byte 〈x0,x7〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BRSETn) (MODE_DIRn_and_IMM1 o4) (Byte 〈x0,x8〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BRCLRn) (MODE_DIRn_and_IMM1 o4) (Byte 〈x0,x9〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BRSETn) (MODE_DIRn_and_IMM1 o5) (Byte 〈x0,xA〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BRCLRn) (MODE_DIRn_and_IMM1 o5) (Byte 〈x0,xB〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BRSETn) (MODE_DIRn_and_IMM1 o6) (Byte 〈x0,xC〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BRCLRn) (MODE_DIRn_and_IMM1 o6) (Byte 〈x0,xD〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BRSETn) (MODE_DIRn_and_IMM1 o7) (Byte 〈x0,xE〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BRCLRn) (MODE_DIRn_and_IMM1 o7) (Byte 〈x0,xF〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HCS08_9 ≝
+[
+  quadruple … (anyOP HCS08 BIT) MODE_IMM1 (Byte 〈xA,x5〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 BIT) MODE_DIR1 (Byte 〈xB,x5〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BIT) MODE_DIR2 (Byte 〈xC,x5〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 BIT) MODE_IX2  (Byte 〈xD,x5〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 BIT) MODE_IX1  (Byte 〈xE,x5〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BIT) MODE_IX0  (Byte 〈xF,x5〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 BIT) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x5〉〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 BIT) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x5〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HCS08_10 ≝
+[
+  quadruple … (anyOP HCS08 MUL ) MODE_INH  (Byte 〈x4,x2〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 DIV ) MODE_INH  (Byte 〈x5,x2〉) 〈x0,x6〉
+; quadruple … (anyOP HCS08 NSA ) MODE_INH  (Byte 〈x6,x2〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 DAA ) MODE_INH  (Byte 〈x7,x2〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 RTI ) MODE_INH  (Byte 〈x8,x0〉) 〈x0,x9〉
+; quadruple … (anyOP HCS08 RTS ) MODE_INH  (Byte 〈x8,x1〉) 〈x0,x6〉
+; quadruple … (anyOP HCS08 SWI ) MODE_INH  (Byte 〈x8,x3〉) 〈x0,xB〉
+; quadruple … (anyOP HCS08 BGND) MODE_INH  (Byte 〈x8,x2〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 TAP ) MODE_INH  (Byte 〈x8,x4〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 TPA ) MODE_INH  (Byte 〈x8,x5〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 PULA) MODE_INH  (Byte 〈x8,x6〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 PSHA) MODE_INH  (Byte 〈x8,x7〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 PULX) MODE_INH  (Byte 〈x8,x8〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 PSHX) MODE_INH  (Byte 〈x8,x9〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 PULH) MODE_INH  (Byte 〈x8,xA〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 PSHH) MODE_INH  (Byte 〈x8,xB〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 STOP) MODE_INH  (Byte 〈x8,xE〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 WAIT) MODE_INH  (Byte 〈x8,xF〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 TXS ) MODE_INH  (Byte 〈x9,x4〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 TSX ) MODE_INH  (Byte 〈x9,x5〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 TAX ) MODE_INH  (Byte 〈x9,x7〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 CLC ) MODE_INH  (Byte 〈x9,x8〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 SEC ) MODE_INH  (Byte 〈x9,x9〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 CLI ) MODE_INH  (Byte 〈x9,xA〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 SEI ) MODE_INH  (Byte 〈x9,xB〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 RSP ) MODE_INH  (Byte 〈x9,xC〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 NOP ) MODE_INH  (Byte 〈x9,xD〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 TXA ) MODE_INH  (Byte 〈x9,xF〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 AIS ) MODE_IMM1 (Byte 〈xA,x7〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 AIX ) MODE_IMM1 (Byte 〈xA,xF〉) 〈x0,x2〉
+].
+
+ndefinition opcode_table_HCS08_11 ≝
+[
+  quadruple … (anyOP HCS08 CBEQA) MODE_DIR1_and_IMM1 (Byte 〈x3,x1〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 CBEQA) MODE_IMM1_and_IMM1 (Byte 〈x4,x1〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 CBEQX) MODE_IMM1_and_IMM1 (Byte 〈x5,x1〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 CBEQA) MODE_IX1p_and_IMM1 (Byte 〈x6,x1〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 CBEQA) MODE_IX0p_and_IMM1 (Byte 〈x7,x1〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 CBEQA) MODE_SP1_and_IMM1  (Word 〈〈x9,xE〉:〈x6,x1〉〉) 〈x0,x6〉
+].
+
+ndefinition opcode_table_HCS08_12 ≝
+[
+  quadruple … (anyOP HCS08 CLR) MODE_DIR1 (Byte 〈x3,xF〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 CLR) MODE_INHA (Byte 〈x4,xF〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 CLR) MODE_INHX (Byte 〈x5,xF〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 CLR) MODE_IX1  (Byte 〈x6,xF〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 CLR) MODE_IX0  (Byte 〈x7,xF〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 CLR) MODE_INHH (Byte 〈x8,xC〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 CLR) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,xF〉〉) 〈x0,x6〉
+].
+
+ndefinition opcode_table_HCS08_13 ≝
+[
+  quadruple … (anyOP HCS08 CMP) MODE_IMM1 (Byte 〈xA,x1〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 CMP) MODE_DIR1 (Byte 〈xB,x1〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 CMP) MODE_DIR2 (Byte 〈xC,x1〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 CMP) MODE_IX2  (Byte 〈xD,x1〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 CMP) MODE_IX1  (Byte 〈xE,x1〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 CMP) MODE_IX0  (Byte 〈xF,x1〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 CMP) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x1〉〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 CMP) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x1〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HCS08_14 ≝
+[
+  quadruple … (anyOP HCS08 COM) MODE_DIR1 (Byte 〈x3,x3〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 COM) MODE_INHA (Byte 〈x4,x3〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 COM) MODE_INHX (Byte 〈x5,x3〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 COM) MODE_IX1  (Byte 〈x6,x3〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 COM) MODE_IX0  (Byte 〈x7,x3〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 COM) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,x3〉〉) 〈x0,x6〉
+].
+
+ndefinition opcode_table_HCS08_15 ≝
+[
+  quadruple … (anyOP HCS08 CPHX) MODE_DIR2 (Byte 〈x3,xE〉) 〈x0,x6〉
+; quadruple … (anyOP HCS08 CPHX) MODE_IMM2 (Byte 〈x6,x5〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 CPHX) MODE_DIR1 (Byte 〈x7,x5〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 CPHX) MODE_SP1  (Word 〈〈x9,xE〉:〈xF,x3〉〉) 〈x0,x6〉
+
+; quadruple … (anyOP HCS08 LDHX) MODE_DIR2 (Byte 〈x3,x2〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 LDHX) MODE_IMM2 (Byte 〈x4,x5〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 LDHX) MODE_DIR1 (Byte 〈x5,x5〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 LDHX) MODE_IX0  (Word 〈〈x9,xE〉:〈xA,xE〉〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 LDHX) MODE_IX2  (Word 〈〈x9,xE〉:〈xB,xE〉〉) 〈x0,x6〉
+; quadruple … (anyOP HCS08 LDHX) MODE_IX1  (Word 〈〈x9,xE〉:〈xC,xE〉〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 LDHX) MODE_SP1  (Word 〈〈x9,xE〉:〈xF,xE〉〉) 〈x0,x5〉
+
+; quadruple … (anyOP HCS08 STHX) MODE_DIR1 (Byte 〈x3,x5〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 STHX) MODE_DIR2 (Byte 〈x9,x6〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 STHX) MODE_SP1  (Word 〈〈x9,xE〉:〈xF,xF〉〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HCS08_16 ≝
+[
+  quadruple … (anyOP HCS08 CPX) MODE_IMM1 (Byte 〈xA,x3〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 CPX) MODE_DIR1 (Byte 〈xB,x3〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 CPX) MODE_DIR2 (Byte 〈xC,x3〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 CPX) MODE_IX2  (Byte 〈xD,x3〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 CPX) MODE_IX1  (Byte 〈xE,x3〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 CPX) MODE_IX0  (Byte 〈xF,x3〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 CPX) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x3〉〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 CPX) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x3〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HCS08_17 ≝
+[
+  quadruple … (anyOP HCS08 DBNZ) MODE_DIR1_and_IMM1 (Byte 〈x3,xB〉) 〈x0,x7〉
+; quadruple … (anyOP HCS08 DBNZ) MODE_INHA_and_IMM1 (Byte 〈x4,xB〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 DBNZ) MODE_INHX_and_IMM1 (Byte 〈x5,xB〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 DBNZ) MODE_IX1_and_IMM1  (Byte 〈x6,xB〉) 〈x0,x7〉
+; quadruple … (anyOP HCS08 DBNZ) MODE_IX0_and_IMM1  (Byte 〈x7,xB〉) 〈x0,x6〉
+; quadruple … (anyOP HCS08 DBNZ) MODE_SP1_and_IMM1  (Word 〈〈x9,xE〉:〈x6,xB〉〉) 〈x0,x8〉
+].
+
+ndefinition opcode_table_HCS08_18 ≝
+[
+  quadruple … (anyOP HCS08 DEC) MODE_DIR1 (Byte 〈x3,xA〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 DEC) MODE_INHA (Byte 〈x4,xA〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 DEC) MODE_INHX (Byte 〈x5,xA〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 DEC) MODE_IX1  (Byte 〈x6,xA〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 DEC) MODE_IX0  (Byte 〈x7,xA〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 DEC) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,xA〉〉) 〈x0,x6〉
+].
+
+ndefinition opcode_table_HCS08_19 ≝
+[
+  quadruple … (anyOP HCS08 EOR) MODE_IMM1 (Byte 〈xA,x8〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 EOR) MODE_DIR1 (Byte 〈xB,x8〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 EOR) MODE_DIR2 (Byte 〈xC,x8〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 EOR) MODE_IX2  (Byte 〈xD,x8〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 EOR) MODE_IX1  (Byte 〈xE,x8〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 EOR) MODE_IX0  (Byte 〈xF,x8〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 EOR) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x8〉〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 EOR) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x8〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HCS08_20 ≝
+[
+  quadruple … (anyOP HCS08 INC) MODE_DIR1 (Byte 〈x3,xC〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 INC) MODE_INHA (Byte 〈x4,xC〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 INC) MODE_INHX (Byte 〈x5,xC〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 INC) MODE_IX1  (Byte 〈x6,xC〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 INC) MODE_IX0  (Byte 〈x7,xC〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 INC) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,xC〉〉) 〈x0,x6〉
+].
+
+ndefinition opcode_table_HCS08_21 ≝
+[
+  quadruple … (anyOP HCS08 JMP) MODE_IMM1EXT  (Byte 〈xB,xC〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 JMP) MODE_IMM2     (Byte 〈xC,xC〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 JMP) MODE_INHX2ADD (Byte 〈xD,xC〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 JMP) MODE_INHX1ADD (Byte 〈xE,xC〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 JMP) MODE_INHX0ADD (Byte 〈xF,xC〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_HCS08_22 ≝
+[
+  quadruple … (anyOP HCS08 BSR) MODE_IMM1     (Byte 〈xA,xD〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 JSR) MODE_IMM1EXT  (Byte 〈xB,xD〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 JSR) MODE_IMM2     (Byte 〈xC,xD〉) 〈x0,x6〉
+; quadruple … (anyOP HCS08 JSR) MODE_INHX2ADD (Byte 〈xD,xD〉) 〈x0,x6〉
+; quadruple … (anyOP HCS08 JSR) MODE_INHX1ADD (Byte 〈xE,xD〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 JSR) MODE_INHX0ADD (Byte 〈xF,xD〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HCS08_23 ≝
+[
+  quadruple … (anyOP HCS08 LDA) MODE_IMM1 (Byte 〈xA,x6〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 LDA) MODE_DIR1 (Byte 〈xB,x6〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 LDA) MODE_DIR2 (Byte 〈xC,x6〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 LDA) MODE_IX2  (Byte 〈xD,x6〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 LDA) MODE_IX1  (Byte 〈xE,x6〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 LDA) MODE_IX0  (Byte 〈xF,x6〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 LDA) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x6〉〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 LDA) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x6〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HCS08_24 ≝
+[
+  quadruple … (anyOP HCS08 LDX) MODE_IMM1 (Byte 〈xA,xE〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 LDX) MODE_DIR1 (Byte 〈xB,xE〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 LDX) MODE_DIR2 (Byte 〈xC,xE〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 LDX) MODE_IX2  (Byte 〈xD,xE〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 LDX) MODE_IX1  (Byte 〈xE,xE〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 LDX) MODE_IX0  (Byte 〈xF,xE〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 LDX) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,xE〉〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 LDX) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,xE〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HCS08_25 ≝
+[
+  quadruple … (anyOP HCS08 LSR) MODE_DIR1 (Byte 〈x3,x4〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 LSR) MODE_INHA (Byte 〈x4,x4〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 LSR) MODE_INHX (Byte 〈x5,x4〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 LSR) MODE_IX1  (Byte 〈x6,x4〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 LSR) MODE_IX0  (Byte 〈x7,x4〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 LSR) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,x4〉〉) 〈x0,x6〉
+].
+
+ndefinition opcode_table_HCS08_26 ≝
+[
+  quadruple … (anyOP HCS08 MOV) MODE_DIR1_to_DIR1 (Byte 〈x4,xE〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 MOV) MODE_DIR1_to_IX0p (Byte 〈x5,xE〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 MOV) MODE_IMM1_to_DIR1 (Byte 〈x6,xE〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 MOV) MODE_IX0p_to_DIR1 (Byte 〈x7,xE〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HCS08_27 ≝
+[
+  quadruple … (anyOP HCS08 NEG) MODE_DIR1 (Byte 〈x3,x0〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 NEG) MODE_INHA (Byte 〈x4,x0〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 NEG) MODE_INHX (Byte 〈x5,x0〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 NEG) MODE_IX1  (Byte 〈x6,x0〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 NEG) MODE_IX0  (Byte 〈x7,x0〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 NEG) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,x0〉〉) 〈x0,x6〉
+].
+
+ndefinition opcode_table_HCS08_28 ≝
+[
+  quadruple … (anyOP HCS08 ORA) MODE_IMM1 (Byte 〈xA,xA〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 ORA) MODE_DIR1 (Byte 〈xB,xA〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 ORA) MODE_DIR2 (Byte 〈xC,xA〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 ORA) MODE_IX2  (Byte 〈xD,xA〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 ORA) MODE_IX1  (Byte 〈xE,xA〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 ORA) MODE_IX0  (Byte 〈xF,xA〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 ORA) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,xA〉〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 ORA) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,xA〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HCS08_29 ≝
+[
+  quadruple … (anyOP HCS08 ROL) MODE_DIR1 (Byte 〈x3,x9〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 ROL) MODE_INHA (Byte 〈x4,x9〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 ROL) MODE_INHX (Byte 〈x5,x9〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 ROL) MODE_IX1  (Byte 〈x6,x9〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 ROL) MODE_IX0  (Byte 〈x7,x9〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 ROL) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,x9〉〉) 〈x0,x6〉
+].
+
+ndefinition opcode_table_HCS08_30 ≝
+[
+  quadruple … (anyOP HCS08 ROR) MODE_DIR1 (Byte 〈x3,x6〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 ROR) MODE_INHA (Byte 〈x4,x6〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 ROR) MODE_INHX (Byte 〈x5,x6〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 ROR) MODE_IX1  (Byte 〈x6,x6〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 ROR) MODE_IX0  (Byte 〈x7,x6〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 ROR) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,x6〉〉) 〈x0,x6〉
+].
+
+ndefinition opcode_table_HCS08_31 ≝
+[
+  quadruple … (anyOP HCS08 SBC) MODE_IMM1 (Byte 〈xA,x2〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 SBC) MODE_DIR1 (Byte 〈xB,x2〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 SBC) MODE_DIR2 (Byte 〈xC,x2〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 SBC) MODE_IX2  (Byte 〈xD,x2〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 SBC) MODE_IX1  (Byte 〈xE,x2〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 SBC) MODE_IX0  (Byte 〈xF,x2〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 SBC) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x2〉〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 SBC) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x2〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HCS08_32 ≝
+[
+  quadruple … (anyOP HCS08 STA) MODE_DIR1 (Byte 〈xB,x7〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 STA) MODE_DIR2 (Byte 〈xC,x7〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 STA) MODE_IX2  (Byte 〈xD,x7〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 STA) MODE_IX1  (Byte 〈xE,x7〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 STA) MODE_IX0  (Byte 〈xF,x7〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 STA) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x7〉〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 STA) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x7〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HCS08_33 ≝
+[
+  quadruple … (anyOP HCS08 STX) MODE_DIR1 (Byte 〈xB,xF〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 STX) MODE_DIR2 (Byte 〈xC,xF〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 STX) MODE_IX2  (Byte 〈xD,xF〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 STX) MODE_IX1  (Byte 〈xE,xF〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 STX) MODE_IX0  (Byte 〈xF,xF〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 STX) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,xF〉〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 STX) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,xF〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HCS08_34 ≝
+[
+  quadruple … (anyOP HCS08 SUB) MODE_IMM1 (Byte 〈xA,x0〉) 〈x0,x2〉
+; quadruple … (anyOP HCS08 SUB) MODE_DIR1 (Byte 〈xB,x0〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 SUB) MODE_DIR2 (Byte 〈xC,x0〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 SUB) MODE_IX2  (Byte 〈xD,x0〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 SUB) MODE_IX1  (Byte 〈xE,x0〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 SUB) MODE_IX0  (Byte 〈xF,x0〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 SUB) MODE_SP2  (Word 〈〈x9,xE〉:〈xD,x0〉〉) 〈x0,x5〉
+; quadruple … (anyOP HCS08 SUB) MODE_SP1  (Word 〈〈x9,xE〉:〈xE,x0〉〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_HCS08_35 ≝
+[
+  quadruple … (anyOP HCS08 TST) MODE_DIR1 (Byte 〈x3,xD〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 TST) MODE_INHA (Byte 〈x4,xD〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 TST) MODE_INHX (Byte 〈x5,xD〉) 〈x0,x1〉
+; quadruple … (anyOP HCS08 TST) MODE_IX1  (Byte 〈x6,xD〉) 〈x0,x4〉
+; quadruple … (anyOP HCS08 TST) MODE_IX0  (Byte 〈x7,xD〉) 〈x0,x3〉
+; quadruple … (anyOP HCS08 TST) MODE_SP1  (Word 〈〈x9,xE〉:〈x6,xD〉〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_HCS08 ≝
+opcode_table_HCS08_1  @ opcode_table_HCS08_2  @ opcode_table_HCS08_3  @ opcode_table_HCS08_4  @
+opcode_table_HCS08_5  @ opcode_table_HCS08_6  @ opcode_table_HCS08_7  @ opcode_table_HCS08_8  @
+opcode_table_HCS08_9  @ opcode_table_HCS08_10 @ opcode_table_HCS08_11 @ opcode_table_HCS08_12 @
+opcode_table_HCS08_13 @ opcode_table_HCS08_14 @ opcode_table_HCS08_15 @ opcode_table_HCS08_16 @
+opcode_table_HCS08_17 @ opcode_table_HCS08_18 @ opcode_table_HCS08_19 @ opcode_table_HCS08_20 @
+opcode_table_HCS08_21 @ opcode_table_HCS08_22 @ opcode_table_HCS08_23 @ opcode_table_HCS08_24 @
+opcode_table_HCS08_25 @ opcode_table_HCS08_26 @ opcode_table_HCS08_27 @ opcode_table_HCS08_28 @
+opcode_table_HCS08_29 @ opcode_table_HCS08_30 @ opcode_table_HCS08_31 @ opcode_table_HCS08_32 @
+opcode_table_HCS08_33 @ opcode_table_HCS08_34 @ opcode_table_HCS08_35.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/table_HCS08_tests.ma b/helm/software/matita/contribs/ng_assembly/freescale/table_HCS08_tests.ma
new file mode 100755 (executable)
index 0000000..bd4c8cd
--- /dev/null
@@ -0,0 +1,118 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/table_HCS08.ma".
+include "freescale/opcode.ma".
+
+(* ****************** *)
+(* TABELLA DELL'HCS08 *)
+(* ****************** *)
+
+(* HCS08: opcode non implementati come da manuale (byte) *)
+ndefinition HCS08_not_impl_byte ≝
+ [〈x8,xD〉
+ ;〈x9,xE〉
+ ;〈xA,xC〉
+ ].
+
+nlemma ok_byte_table_HCS08 : forall_b8 (λb.
+ (test_not_impl_byte b HCS08_not_impl_byte     ⊙ eq_w16 (get_byte_count HCS08 b 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HCS08) 〈〈x0,x0〉:〈x0,x1〉〉) ⊗
+ (⊖ (test_not_impl_byte b HCS08_not_impl_byte) ⊙ eq_w16 (get_byte_count HCS08 b 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HCS08) 〈〈x0,x0〉:〈x0,x0〉〉))
+ = true.
+ napply refl_eq.
+nqed.
+
+(* HCS08: opcode non implementati come da manuale (0x9E+byte) *)
+ndefinition HCS08_not_impl_word ≝
+ [〈x0,x0〉;〈x0,x1〉;〈x0,x2〉;〈x0,x3〉;〈x0,x4〉;〈x0,x5〉;〈x0,x6〉;〈x0,x7〉
+ ;〈x0,x8〉;〈x0,x9〉;〈x0,xA〉;〈x0,xB〉;〈x0,xC〉;〈x0,xD〉;〈x0,xE〉;〈x0,xF〉
+ ;〈x1,x0〉;〈x1,x1〉;〈x1,x2〉;〈x1,x3〉;〈x1,x4〉;〈x1,x5〉;〈x1,x6〉;〈x1,x7〉
+ ;〈x1,x8〉;〈x1,x9〉;〈x1,xA〉;〈x1,xB〉;〈x1,xC〉;〈x1,xD〉;〈x1,xE〉;〈x1,xF〉
+ ;〈x2,x0〉;〈x2,x1〉;〈x2,x2〉;〈x2,x3〉;〈x2,x4〉;〈x2,x5〉;〈x2,x6〉;〈x2,x7〉
+ ;〈x2,x8〉;〈x2,x9〉;〈x2,xA〉;〈x2,xB〉;〈x2,xC〉;〈x2,xD〉;〈x2,xE〉;〈x2,xF〉
+ ;〈x3,x0〉;〈x3,x1〉;〈x3,x2〉;〈x3,x3〉;〈x3,x4〉;〈x3,x5〉;〈x3,x6〉;〈x3,x7〉
+ ;〈x3,x8〉;〈x3,x9〉;〈x3,xA〉;〈x3,xB〉;〈x3,xC〉;〈x3,xD〉;〈x3,xE〉;〈x3,xF〉
+ ;〈x4,x0〉;〈x4,x1〉;〈x4,x2〉;〈x4,x3〉;〈x4,x4〉;〈x4,x5〉;〈x4,x6〉;〈x4,x7〉
+ ;〈x4,x8〉;〈x4,x9〉;〈x4,xA〉;〈x4,xB〉;〈x4,xC〉;〈x4,xD〉;〈x4,xE〉;〈x4,xF〉
+ ;〈x5,x0〉;〈x5,x1〉;〈x5,x2〉;〈x5,x3〉;〈x5,x4〉;〈x5,x5〉;〈x5,x6〉;〈x5,x7〉
+ ;〈x5,x8〉;〈x5,x9〉;〈x5,xA〉;〈x5,xB〉;〈x5,xC〉;〈x5,xD〉;〈x5,xE〉;〈x5,xF〉
+ ;〈x6,x2〉;〈x6,x5〉;〈x6,xE〉
+ ;〈x7,x0〉;〈x7,x1〉;〈x7,x2〉;〈x7,x3〉;〈x7,x4〉;〈x7,x5〉;〈x7,x6〉;〈x7,x7〉
+ ;〈x7,x8〉;〈x7,x9〉;〈x7,xA〉;〈x7,xB〉;〈x7,xC〉;〈x7,xD〉;〈x7,xE〉;〈x7,xF〉
+ ;〈x8,x0〉;〈x8,x1〉;〈x8,x2〉;〈x8,x3〉;〈x8,x4〉;〈x8,x5〉;〈x8,x6〉;〈x8,x7〉
+ ;〈x8,x8〉;〈x8,x9〉;〈x8,xA〉;〈x8,xB〉;〈x8,xC〉;〈x8,xD〉;〈x8,xE〉;〈x8,xF〉
+ ;〈x9,x0〉;〈x9,x1〉;〈x9,x2〉;〈x9,x3〉;〈x9,x4〉;〈x9,x5〉;〈x9,x6〉;〈x9,x7〉
+ ;〈x9,x8〉;〈x9,x9〉;〈x9,xA〉;〈x9,xB〉;〈x9,xC〉;〈x9,xD〉;〈x9,xE〉;〈x9,xF〉
+ ;〈xA,x0〉;〈xA,x1〉;〈xA,x2〉;〈xA,x3〉;〈xA,x4〉;〈xA,x5〉;〈xA,x6〉;〈xA,x7〉;〈xA,x8〉;〈xA,x9〉;〈xA,xA〉;〈xA,xB〉;〈xA,xC〉;〈xA,xD〉;〈xA,xF〉
+ ;〈xB,x0〉;〈xB,x1〉;〈xB,x2〉;〈xB,x3〉;〈xB,x4〉;〈xB,x5〉;〈xB,x6〉;〈xB,x7〉;〈xB,x8〉;〈xB,x9〉;〈xB,xA〉;〈xB,xB〉;〈xB,xC〉;〈xB,xD〉;〈xB,xF〉
+ ;〈xC,x0〉;〈xC,x1〉;〈xC,x2〉;〈xC,x3〉;〈xC,x4〉;〈xC,x5〉;〈xC,x6〉;〈xC,x7〉;〈xC,x8〉;〈xC,x9〉;〈xC,xA〉;〈xC,xB〉;〈xC,xC〉;〈xC,xD〉;〈xC,xF〉
+ ;〈xD,xC〉;〈xD,xD〉
+ ;〈xE,xC〉;〈xE,xD〉
+ ;〈xF,x0〉;〈xF,x1〉;〈xF,x2〉;〈xF,x4〉;〈xF,x5〉;〈xF,x6〉;〈xF,x7〉;〈xF,x8〉;〈xF,x9〉;〈xF,xA〉;〈xF,xB〉;〈xF,xC〉;〈xF,xD〉
+ ].
+
+nlemma ok_word_table_HCS08 : forall_b8 (λb.
+ (test_not_impl_byte b HCS08_not_impl_word     ⊙ eq_w16 (get_word_count HCS08 b 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HCS08) 〈〈x0,x0〉:〈x0,x1〉〉) ⊗
+ (⊖ (test_not_impl_byte b HCS08_not_impl_word) ⊙ eq_w16 (get_word_count HCS08 b 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HCS08) 〈〈x0,x0〉:〈x0,x0〉〉))
+ = true.
+ napply refl_eq.
+nqed.
+
+(* HCS08: pseudocodici non implementati come da manuale *)
+ndefinition HCS08_not_impl_pseudo ≝
+ [ SHA ; SLA ].
+
+nlemma ok_pseudo_table_HCS08 : forall_op (λo.
+ (test_not_impl_pseudo o HCS08_not_impl_pseudo     ⊙ le_w16 〈〈x0,x0〉:〈x0,x1〉〉 (get_pseudo_count HCS08 o 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HCS08)) ⊗
+ (⊖ (test_not_impl_pseudo o HCS08_not_impl_pseudo) ⊙ eq_w16 (get_pseudo_count HCS08 o 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HCS08) 〈〈x0,x0〉:〈x0,x0〉〉))
+ = true.
+ napply refl_eq.
+nqed.
+
+(* HCS08: modalita' non implementate come da manuale *)
+ndefinition HCS08_not_impl_mode ≝
+ [ MODE_TNY x0 ; MODE_TNY x1 ; MODE_TNY x2 ; MODE_TNY x3
+ ; MODE_TNY x4 ; MODE_TNY x5 ; MODE_TNY x6 ; MODE_TNY x7
+ ; MODE_TNY x8 ; MODE_TNY x9 ; MODE_TNY xA ; MODE_TNY xB
+ ; MODE_TNY xC ; MODE_TNY xD ; MODE_TNY xE ; MODE_TNY xF
+ ; MODE_SRT t00 ; MODE_SRT t01 ; MODE_SRT t02 ; MODE_SRT t03
+ ; MODE_SRT t04 ; MODE_SRT t05 ; MODE_SRT t06 ; MODE_SRT t07
+ ; MODE_SRT t08 ; MODE_SRT t09 ; MODE_SRT t0A ; MODE_SRT t0B
+ ; MODE_SRT t0C ; MODE_SRT t0D ; MODE_SRT t0E ; MODE_SRT t0F
+ ; MODE_SRT t10 ; MODE_SRT t11 ; MODE_SRT t12 ; MODE_SRT t13
+ ; MODE_SRT t14 ; MODE_SRT t15 ; MODE_SRT t16 ; MODE_SRT t17
+ ; MODE_SRT t18 ; MODE_SRT t19 ; MODE_SRT t1A ; MODE_SRT t1B
+ ; MODE_SRT t1C ; MODE_SRT t1D ; MODE_SRT t1E ; MODE_SRT t1F ].
+
+nlemma ok_mode_table_HCS08 : forall_im (λi.
+ (test_not_impl_mode i HCS08_not_impl_mode     ⊙ le_w16 〈〈x0,x0〉:〈x0,x1〉〉 (get_mode_count HCS08 i 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HCS08)) ⊗
+ (⊖ (test_not_impl_mode i HCS08_not_impl_mode) ⊙ eq_w16 (get_mode_count HCS08 i 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HCS08) 〈〈x0,x0〉:〈x0,x0〉〉))
+ = true.
+ napply refl_eq.
+nqed.
+
+nlemma ok_OpIm_table_HCS08 :
+ forall_im (λi:instr_mode.
+ forall_op (λop:opcode.
+  le_w16 (get_OpIm_count HCS08 (anyOP HCS08 op) i 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_HCS08) 〈〈x0,x0〉:〈x0,x1〉〉)) = true.
+ napply refl_eq.
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/table_RS08.ma b/helm/software/matita/contribs/ng_assembly/freescale/table_RS08.ma
new file mode 100755 (executable)
index 0000000..8398e96
--- /dev/null
@@ -0,0 +1,395 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/opcode_base.ma".
+include "common/list.ma".
+
+(* ***************** *)
+(* TABELLA DELL'RS08 *)
+(* ***************** *)
+
+(* definizione come concatenazione finale di liste per velocizzare il parsing *)
+(* ogni riga e' (any_opcode m) (instr_mode) (opcode esadecimale) (#cicli esecuzione) *)
+(* NB: l'uso di any_opcode m + concatenazione finale tutte liste
+       impedisce di introdurre opcode disomogenei (per mcu) *)
+
+ndefinition opcode_table_RS08_1 ≝
+[ 
+  quadruple … (anyOP RS08 ADC) MODE_IMM1 (Byte 〈xA,x9〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 ADC) MODE_DIR1 (Byte 〈xB,x9〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_RS08_2 ≝
+[ 
+  quadruple … (anyOP RS08 ADD) MODE_IMM1     (Byte 〈xA,xB〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 ADD) MODE_DIR1     (Byte 〈xB,xB〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 ADD) (MODE_TNY x0) (Byte 〈x6,x0〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 ADD) (MODE_TNY x1) (Byte 〈x6,x1〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 ADD) (MODE_TNY x2) (Byte 〈x6,x2〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 ADD) (MODE_TNY x3) (Byte 〈x6,x3〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 ADD) (MODE_TNY x4) (Byte 〈x6,x4〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 ADD) (MODE_TNY x5) (Byte 〈x6,x5〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 ADD) (MODE_TNY x6) (Byte 〈x6,x6〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 ADD) (MODE_TNY x7) (Byte 〈x6,x7〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 ADD) (MODE_TNY x8) (Byte 〈x6,x8〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 ADD) (MODE_TNY x9) (Byte 〈x6,x9〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 ADD) (MODE_TNY xA) (Byte 〈x6,xA〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 ADD) (MODE_TNY xB) (Byte 〈x6,xB〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 ADD) (MODE_TNY xC) (Byte 〈x6,xC〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 ADD) (MODE_TNY xD) (Byte 〈x6,xD〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 ADD) (MODE_TNY xE) (Byte 〈x6,xE〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 ADD) (MODE_TNY xF) (Byte 〈x6,xF〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_RS08_3 ≝
+[ 
+  quadruple … (anyOP RS08 AND) MODE_IMM1 (Byte 〈xA,x4〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 AND) MODE_DIR1 (Byte 〈xB,x4〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_RS08_4 ≝
+[
+  quadruple … (anyOP RS08 ASL) MODE_INHA (Byte 〈x4,x8〉) 〈x0,x1〉
+].
+
+ndefinition opcode_table_RS08_5 ≝
+[
+  quadruple … (anyOP RS08 BRA) MODE_IMM1 (Byte 〈x3,x0〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 BCC) MODE_IMM1 (Byte 〈x3,x4〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 BCS) MODE_IMM1 (Byte 〈x3,x5〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 BNE) MODE_IMM1 (Byte 〈x3,x6〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 BEQ) MODE_IMM1 (Byte 〈x3,x7〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_RS08_6 ≝
+[
+  quadruple … (anyOP RS08 BSETn) (MODE_DIRn o0) (Byte 〈x1,x0〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BCLRn) (MODE_DIRn o0) (Byte 〈x1,x1〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BSETn) (MODE_DIRn o1) (Byte 〈x1,x2〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BCLRn) (MODE_DIRn o1) (Byte 〈x1,x3〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BSETn) (MODE_DIRn o2) (Byte 〈x1,x4〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BCLRn) (MODE_DIRn o2) (Byte 〈x1,x5〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BSETn) (MODE_DIRn o3) (Byte 〈x1,x6〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BCLRn) (MODE_DIRn o3) (Byte 〈x1,x7〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BSETn) (MODE_DIRn o4) (Byte 〈x1,x8〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BCLRn) (MODE_DIRn o4) (Byte 〈x1,x9〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BSETn) (MODE_DIRn o5) (Byte 〈x1,xA〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BCLRn) (MODE_DIRn o5) (Byte 〈x1,xB〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BSETn) (MODE_DIRn o6) (Byte 〈x1,xC〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BCLRn) (MODE_DIRn o6) (Byte 〈x1,xD〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BSETn) (MODE_DIRn o7) (Byte 〈x1,xE〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BCLRn) (MODE_DIRn o7) (Byte 〈x1,xF〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_RS08_7 ≝
+[
+  quadruple … (anyOP RS08 BRSETn) (MODE_DIRn_and_IMM1 o0) (Byte 〈x0,x0〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BRCLRn) (MODE_DIRn_and_IMM1 o0) (Byte 〈x0,x1〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BRSETn) (MODE_DIRn_and_IMM1 o1) (Byte 〈x0,x2〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BRCLRn) (MODE_DIRn_and_IMM1 o1) (Byte 〈x0,x3〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BRSETn) (MODE_DIRn_and_IMM1 o2) (Byte 〈x0,x4〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BRCLRn) (MODE_DIRn_and_IMM1 o2) (Byte 〈x0,x5〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BRSETn) (MODE_DIRn_and_IMM1 o3) (Byte 〈x0,x6〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BRCLRn) (MODE_DIRn_and_IMM1 o3) (Byte 〈x0,x7〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BRSETn) (MODE_DIRn_and_IMM1 o4) (Byte 〈x0,x8〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BRCLRn) (MODE_DIRn_and_IMM1 o4) (Byte 〈x0,x9〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BRSETn) (MODE_DIRn_and_IMM1 o5) (Byte 〈x0,xA〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BRCLRn) (MODE_DIRn_and_IMM1 o5) (Byte 〈x0,xB〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BRSETn) (MODE_DIRn_and_IMM1 o6) (Byte 〈x0,xC〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BRCLRn) (MODE_DIRn_and_IMM1 o6) (Byte 〈x0,xD〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BRSETn) (MODE_DIRn_and_IMM1 o7) (Byte 〈x0,xE〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 BRCLRn) (MODE_DIRn_and_IMM1 o7) (Byte 〈x0,xF〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_RS08_8 ≝
+[
+  quadruple … (anyOP RS08 CLC ) MODE_INH (Byte 〈x3,x8〉) 〈x0,x1〉
+; quadruple … (anyOP RS08 SEC ) MODE_INH (Byte 〈x3,x9〉) 〈x0,x1〉
+; quadruple … (anyOP RS08 SLA ) MODE_INH (Byte 〈x4,x2〉) 〈x0,x1〉
+; quadruple … (anyOP RS08 SHA ) MODE_INH (Byte 〈x4,x5〉) 〈x0,x1〉
+; quadruple … (anyOP RS08 NOP ) MODE_INH (Byte 〈xA,xC〉) 〈x0,x1〉
+; quadruple … (anyOP RS08 STOP) MODE_INH (Byte 〈xA,xE〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 WAIT) MODE_INH (Byte 〈xA,xF〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 RTS ) MODE_INH (Byte 〈xB,xE〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 BGND) MODE_INH (Byte 〈xB,xF〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_RS08_9 ≝
+[
+  quadruple … (anyOP RS08 CBEQA) MODE_DIR1_and_IMM1 (Byte 〈x3,x1〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 CBEQA) MODE_IMM1_and_IMM1 (Byte 〈x4,x1〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_RS08_10 ≝
+[
+  quadruple … (anyOP RS08 CLR) MODE_DIR1      (Byte 〈x3,xF〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 CLR) MODE_INHA      (Byte 〈x4,xF〉) 〈x0,x1〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t00) (Byte 〈x8,x0〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t01) (Byte 〈x8,x1〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t02) (Byte 〈x8,x2〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t03) (Byte 〈x8,x3〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t04) (Byte 〈x8,x4〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t05) (Byte 〈x8,x5〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t06) (Byte 〈x8,x6〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t07) (Byte 〈x8,x7〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t08) (Byte 〈x8,x8〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t09) (Byte 〈x8,x9〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t0A) (Byte 〈x8,xA〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t0B) (Byte 〈x8,xB〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t0C) (Byte 〈x8,xC〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t0D) (Byte 〈x8,xD〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t0E) (Byte 〈x8,xE〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t0F) (Byte 〈x8,xF〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t10) (Byte 〈x9,x0〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t11) (Byte 〈x9,x1〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t12) (Byte 〈x9,x2〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t13) (Byte 〈x9,x3〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t14) (Byte 〈x9,x4〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t15) (Byte 〈x9,x5〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t16) (Byte 〈x9,x6〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t17) (Byte 〈x9,x7〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t18) (Byte 〈x9,x8〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t19) (Byte 〈x9,x9〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t1A) (Byte 〈x9,xA〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t1B) (Byte 〈x9,xB〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t1C) (Byte 〈x9,xC〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t1D) (Byte 〈x9,xD〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t1E) (Byte 〈x9,xE〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CLR) (MODE_SRT t1F) (Byte 〈x9,xF〉) 〈x0,x2〉
+].
+
+ndefinition opcode_table_RS08_11 ≝
+[
+  quadruple … (anyOP RS08 CMP) MODE_IMM1 (Byte 〈xA,x1〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 CMP) MODE_DIR1 (Byte 〈xB,x1〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_RS08_12 ≝
+[
+  quadruple … (anyOP RS08 COM) MODE_INHA (Byte 〈x4,x3〉) 〈x0,x1〉
+].
+
+ndefinition opcode_table_RS08_13 ≝
+[
+  quadruple … (anyOP RS08 DBNZ) MODE_DIR1_and_IMM1 (Byte 〈x3,xB〉) 〈x0,x7〉
+; quadruple … (anyOP RS08 DBNZ) MODE_INHA_and_IMM1 (Byte 〈x4,xB〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_RS08_14 ≝
+[
+  quadruple … (anyOP RS08 DEC) MODE_DIR1     (Byte 〈x3,xA〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 DEC) MODE_INHA     (Byte 〈x4,xA〉) 〈x0,x1〉
+; quadruple … (anyOP RS08 DEC) (MODE_TNY x0) (Byte 〈x5,x0〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 DEC) (MODE_TNY x1) (Byte 〈x5,x1〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 DEC) (MODE_TNY x2) (Byte 〈x5,x2〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 DEC) (MODE_TNY x3) (Byte 〈x5,x3〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 DEC) (MODE_TNY x4) (Byte 〈x5,x4〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 DEC) (MODE_TNY x5) (Byte 〈x5,x5〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 DEC) (MODE_TNY x6) (Byte 〈x5,x6〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 DEC) (MODE_TNY x7) (Byte 〈x5,x7〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 DEC) (MODE_TNY x8) (Byte 〈x5,x8〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 DEC) (MODE_TNY x9) (Byte 〈x5,x9〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 DEC) (MODE_TNY xA) (Byte 〈x5,xA〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 DEC) (MODE_TNY xB) (Byte 〈x5,xB〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 DEC) (MODE_TNY xC) (Byte 〈x5,xC〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 DEC) (MODE_TNY xD) (Byte 〈x5,xD〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 DEC) (MODE_TNY xE) (Byte 〈x5,xE〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 DEC) (MODE_TNY xF) (Byte 〈x5,xF〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_RS08_15 ≝
+[ 
+  quadruple … (anyOP RS08 EOR) MODE_IMM1 (Byte 〈xA,x8〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 EOR) MODE_DIR1 (Byte 〈xB,x8〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_RS08_16 ≝
+[
+  quadruple … (anyOP RS08 INC) MODE_DIR1     (Byte 〈x3,xC〉) 〈x0,x5〉
+; quadruple … (anyOP RS08 INC) MODE_INHA     (Byte 〈x4,xC〉) 〈x0,x1〉
+; quadruple … (anyOP RS08 INC) (MODE_TNY x0) (Byte 〈x2,x0〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 INC) (MODE_TNY x1) (Byte 〈x2,x1〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 INC) (MODE_TNY x2) (Byte 〈x2,x2〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 INC) (MODE_TNY x3) (Byte 〈x2,x3〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 INC) (MODE_TNY x4) (Byte 〈x2,x4〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 INC) (MODE_TNY x5) (Byte 〈x2,x5〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 INC) (MODE_TNY x6) (Byte 〈x2,x6〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 INC) (MODE_TNY x7) (Byte 〈x2,x7〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 INC) (MODE_TNY x8) (Byte 〈x2,x8〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 INC) (MODE_TNY x9) (Byte 〈x2,x9〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 INC) (MODE_TNY xA) (Byte 〈x2,xA〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 INC) (MODE_TNY xB) (Byte 〈x2,xB〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 INC) (MODE_TNY xC) (Byte 〈x2,xC〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 INC) (MODE_TNY xD) (Byte 〈x2,xD〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 INC) (MODE_TNY xE) (Byte 〈x2,xE〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 INC) (MODE_TNY xF) (Byte 〈x2,xF〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_RS08_17 ≝
+[
+  quadruple … (anyOP RS08 JMP) MODE_IMM2 (Byte 〈xB,xC〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_RS08_18 ≝
+[
+  quadruple … (anyOP RS08 BSR) MODE_IMM1 (Byte 〈xA,xD〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 JSR) MODE_IMM2 (Byte 〈xB,xD〉) 〈x0,x4〉
+].
+
+ndefinition opcode_table_RS08_19 ≝
+[
+  quadruple … (anyOP RS08 LDA) MODE_IMM1      (Byte 〈xA,x6〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 LDA) MODE_DIR1      (Byte 〈xB,x6〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t00) (Byte 〈xC,x0〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t01) (Byte 〈xC,x1〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t02) (Byte 〈xC,x2〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t03) (Byte 〈xC,x3〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t04) (Byte 〈xC,x4〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t05) (Byte 〈xC,x5〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t06) (Byte 〈xC,x6〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t07) (Byte 〈xC,x7〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t08) (Byte 〈xC,x8〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t09) (Byte 〈xC,x9〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t0A) (Byte 〈xC,xA〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t0B) (Byte 〈xC,xB〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t0C) (Byte 〈xC,xC〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t0D) (Byte 〈xC,xD〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t0E) (Byte 〈xC,xE〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t0F) (Byte 〈xC,xF〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t10) (Byte 〈xD,x0〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t11) (Byte 〈xD,x1〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t12) (Byte 〈xD,x2〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t13) (Byte 〈xD,x3〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t14) (Byte 〈xD,x4〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t15) (Byte 〈xD,x5〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t16) (Byte 〈xD,x6〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t17) (Byte 〈xD,x7〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t18) (Byte 〈xD,x8〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t19) (Byte 〈xD,x9〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t1A) (Byte 〈xD,xA〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t1B) (Byte 〈xD,xB〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t1C) (Byte 〈xD,xC〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t1D) (Byte 〈xD,xD〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t1E) (Byte 〈xD,xE〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 LDA) (MODE_SRT t1F) (Byte 〈xD,xF〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_RS08_20 ≝
+[
+  quadruple … (anyOP RS08 LSR) MODE_INHA (Byte 〈x4,x4〉) 〈x0,x1〉
+].
+
+ndefinition opcode_table_RS08_21 ≝
+[
+  quadruple … (anyOP RS08 MOV) MODE_IMM1_to_DIR1 (Byte 〈x3,xE〉) 〈x0,x4〉
+; quadruple … (anyOP RS08 MOV) MODE_DIR1_to_DIR1 (Byte 〈x4,xE〉) 〈x0,x5〉
+].
+
+ndefinition opcode_table_RS08_22 ≝
+[ 
+  quadruple … (anyOP RS08 ORA) MODE_IMM1 (Byte 〈xA,xA〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 ORA) MODE_DIR1 (Byte 〈xB,xA〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_RS08_23 ≝
+[
+  quadruple … (anyOP RS08 ROL) MODE_INHA (Byte 〈x4,x9〉) 〈x0,x1〉
+].
+
+ndefinition opcode_table_RS08_24 ≝
+[
+  quadruple … (anyOP RS08 ROR) MODE_INHA (Byte 〈x4,x6〉) 〈x0,x1〉
+].
+
+ndefinition opcode_table_RS08_25 ≝
+[
+  quadruple … (anyOP RS08 SBC) MODE_IMM1 (Byte 〈xA,x2〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 SBC) MODE_DIR1 (Byte 〈xB,x2〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_RS08_26 ≝
+[
+  quadruple … (anyOP RS08 STA) MODE_DIR1      (Byte 〈xB,x7〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t00) (Byte 〈xE,x0〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t01) (Byte 〈xE,x1〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t02) (Byte 〈xE,x2〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t03) (Byte 〈xE,x3〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t04) (Byte 〈xE,x4〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t05) (Byte 〈xE,x5〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t06) (Byte 〈xE,x6〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t07) (Byte 〈xE,x7〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t08) (Byte 〈xE,x8〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t09) (Byte 〈xE,x9〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t0A) (Byte 〈xE,xA〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t0B) (Byte 〈xE,xB〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t0C) (Byte 〈xE,xC〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t0D) (Byte 〈xE,xD〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t0E) (Byte 〈xE,xE〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t0F) (Byte 〈xE,xF〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t10) (Byte 〈xF,x0〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t11) (Byte 〈xF,x1〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t12) (Byte 〈xF,x2〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t13) (Byte 〈xF,x3〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t14) (Byte 〈xF,x4〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t15) (Byte 〈xF,x5〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t16) (Byte 〈xF,x6〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t17) (Byte 〈xF,x7〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t18) (Byte 〈xF,x8〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t19) (Byte 〈xF,x9〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t1A) (Byte 〈xF,xA〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t1B) (Byte 〈xF,xB〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t1C) (Byte 〈xF,xC〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t1D) (Byte 〈xF,xD〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t1E) (Byte 〈xF,xE〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 STA) (MODE_SRT t1F) (Byte 〈xF,xF〉) 〈x0,x2〉
+].
+
+ndefinition opcode_table_RS08_27 ≝
+[ 
+  quadruple … (anyOP RS08 SUB) MODE_IMM1     (Byte 〈xA,x0〉) 〈x0,x2〉
+; quadruple … (anyOP RS08 SUB) MODE_DIR1     (Byte 〈xB,x0〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 SUB) (MODE_TNY x0) (Byte 〈x7,x0〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 SUB) (MODE_TNY x1) (Byte 〈x7,x1〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 SUB) (MODE_TNY x2) (Byte 〈x7,x2〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 SUB) (MODE_TNY x3) (Byte 〈x7,x3〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 SUB) (MODE_TNY x4) (Byte 〈x7,x4〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 SUB) (MODE_TNY x5) (Byte 〈x7,x5〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 SUB) (MODE_TNY x6) (Byte 〈x7,x6〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 SUB) (MODE_TNY x7) (Byte 〈x7,x7〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 SUB) (MODE_TNY x8) (Byte 〈x7,x8〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 SUB) (MODE_TNY x9) (Byte 〈x7,x9〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 SUB) (MODE_TNY xA) (Byte 〈x7,xA〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 SUB) (MODE_TNY xB) (Byte 〈x7,xB〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 SUB) (MODE_TNY xC) (Byte 〈x7,xC〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 SUB) (MODE_TNY xD) (Byte 〈x7,xD〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 SUB) (MODE_TNY xE) (Byte 〈x7,xE〉) 〈x0,x3〉
+; quadruple … (anyOP RS08 SUB) (MODE_TNY xF) (Byte 〈x7,xF〉) 〈x0,x3〉
+].
+
+ndefinition opcode_table_RS08 ≝
+opcode_table_RS08_1  @ opcode_table_RS08_2  @ opcode_table_RS08_3  @ opcode_table_RS08_4  @
+opcode_table_RS08_5  @ opcode_table_RS08_6  @ opcode_table_RS08_7  @ opcode_table_RS08_8  @
+opcode_table_RS08_9  @ opcode_table_RS08_10 @ opcode_table_RS08_11 @ opcode_table_RS08_12 @
+opcode_table_RS08_13 @ opcode_table_RS08_14 @ opcode_table_RS08_15 @ opcode_table_RS08_16 @
+opcode_table_RS08_17 @ opcode_table_RS08_18 @ opcode_table_RS08_19 @ opcode_table_RS08_20 @
+opcode_table_RS08_21 @ opcode_table_RS08_22 @ opcode_table_RS08_23 @ opcode_table_RS08_24 @
+opcode_table_RS08_25 @ opcode_table_RS08_26 @ opcode_table_RS08_27.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/table_RS08_tests.ma b/helm/software/matita/contribs/ng_assembly/freescale/table_RS08_tests.ma
new file mode 100755 (executable)
index 0000000..759d1bf
--- /dev/null
@@ -0,0 +1,78 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/table_RS08.ma".
+include "freescale/opcode.ma".
+
+(* ***************** *)
+(* TABELLA DELL'RS08 *)
+(* ***************** *)
+
+(* RS08: opcode non implementati come da manuale *)
+ndefinition RS08_not_impl_byte ≝
+ [〈x3,x2〉;〈x3,x3〉;〈x3,xD〉
+ ;〈x4,x0〉;〈x4,x7〉;〈x4,xD〉
+ ;〈xA,x3〉;〈xA,x5〉;〈xA,x7〉
+ ;〈xB,x3〉;〈xB,x5〉
+ ].
+
+nlemma ok_byte_table_RS08 : forall_b8 (λb.
+ (test_not_impl_byte b RS08_not_impl_byte     ⊙ eq_w16 (get_byte_count RS08 b 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_RS08) 〈〈x0,x0〉:〈x0,x1〉〉) ⊗
+ (⊖ (test_not_impl_byte b RS08_not_impl_byte) ⊙ eq_w16 (get_byte_count RS08 b 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_RS08) 〈〈x0,x0〉:〈x0,x0〉〉))
+ = true.
+ napply refl_eq.
+nqed.
+
+(* RS08: pseudocodici non implementati come da manuale *)
+ndefinition RS08_not_impl_pseudo ≝
+ [ AIS ; AIX ; ASR ; BGE ; BGT ; BHCC ; BHCS ; BHI ; BIH ; BIL ; BIT ; BLE ; BLS
+ ; BLT ; BMC ; BMI ; BMS ; BPL ; BRN ; CBEQX ; CLI ; CPHX ; CPX ; DAA ; DIV
+ ; LDHX ; LDX ; MUL ; NEG ; NSA ; PSHA ; PSHH ; PSHX ; PULA ; PULH ; PULX ; RSP  
+ ; RTI ; SEI ; STHX ; STX ; SWI ; TAP ; TAX ; TPA ; TST ; TSX ; TXA ; TXS ].
+
+nlemma ok_pseudo_table_RS08 : forall_op (λo.
+ (test_not_impl_pseudo o RS08_not_impl_pseudo     ⊙ le_w16 〈〈x0,x0〉:〈x0,x1〉〉 (get_pseudo_count RS08 o 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_RS08)) ⊗
+ (⊖ (test_not_impl_pseudo o RS08_not_impl_pseudo) ⊙ eq_w16 (get_pseudo_count RS08 o 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_RS08) 〈〈x0,x0〉:〈x0,x0〉〉))
+ = true.
+ napply refl_eq.
+nqed.
+
+(* RS08: modalita' non implementate come da manuale *)
+ndefinition RS08_not_impl_mode ≝
+ [ MODE_INHX ; MODE_INHH ; MODE_INHX0ADD ; MODE_INHX1ADD ; MODE_INHX2ADD ; MODE_IMM1EXT
+ ; MODE_DIR2 ; MODE_IX0 ; MODE_IX1 ; MODE_IX2 ; MODE_SP1 ; MODE_SP2
+ ; MODE_IX0p_to_DIR1 ; MODE_DIR1_to_IX0p ; MODE_INHX_and_IMM1 ; MODE_IX0_and_IMM1
+ ; MODE_IX0p_and_IMM1 ; MODE_IX1_and_IMM1 ; MODE_IX1p_and_IMM1 ; MODE_SP1_and_IMM1 ].
+
+nlemma ok_mode_table_RS08 : forall_im (λi.
+ (test_not_impl_mode i RS08_not_impl_mode     ⊙ le_w16 〈〈x0,x0〉:〈x0,x1〉〉 (get_mode_count RS08 i 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_RS08)) ⊗
+ (⊖ (test_not_impl_mode i RS08_not_impl_mode) ⊙ eq_w16 (get_mode_count RS08 i 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_RS08) 〈〈x0,x0〉:〈x0,x0〉〉))
+ = true.
+ napply refl_eq.
+nqed.
+
+nlemma ok_OpIm_table_RS08 :
+ forall_im (λi:instr_mode.
+ forall_op (λop:opcode.
+  le_w16 (get_OpIm_count RS08 (anyOP RS08 op) i 〈〈x0,x0〉:〈x0,x0〉〉 opcode_table_RS08) 〈〈x0,x0〉:〈x0,x1〉〉)) = true.
+ napply refl_eq.
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/translation.ma b/helm/software/matita/contribs/ng_assembly/freescale/translation.ma
new file mode 100755 (executable)
index 0000000..0996948
--- /dev/null
@@ -0,0 +1,247 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/table_HC05.ma".
+include "freescale/table_HC08.ma".
+include "freescale/table_HCS08.ma".
+include "freescale/table_RS08.ma".
+include "common/option.ma".
+
+(* ***************************** *)
+(* TRADUZIONE ESADECIMALE → INFO *)
+(* ***************************** *)
+
+(* accesso alla tabella della ALU prescelta *)
+ndefinition opcode_table ≝
+λm:mcu_type.
+ match m
+  return λm:mcu_type.list (Prod4T (any_opcode m) instr_mode byte8_or_word16 byte8)
+ with
+  [ HC05  ⇒ opcode_table_HC05
+  | HC08  ⇒ opcode_table_HC08
+  | HCS08 ⇒ opcode_table_HCS08
+  | RS08  ⇒ opcode_table_RS08
+ ].
+
+(* traduzione mcu+esadecimale → info *)
+(* NB: la ricerca per byte non matcha con una word con lo stesso byte superiore uguale *)
+(* NB: per matchare una word (precode+code) bisogna passare una word *)
+(* NB: il risultato e' sempre un'opzione, NON esiste un dummy opcode tipo UNKNOWN/ILLEGAL *)
+nlet rec full_info_of_word16_aux (m:mcu_type) (borw:byte8_or_word16)
+                                (param:list (Prod4T (any_opcode m) instr_mode byte8_or_word16 byte8)) on param ≝
+ match param with
+  [ nil ⇒ None ?
+  | cons hd tl ⇒
+   match thd4T … hd with
+    [ Byte b ⇒ match borw with
+     [ Byte borw' ⇒ match eq_b8 borw' b with
+      [ true ⇒ Some ? hd
+      | false ⇒ full_info_of_word16_aux m borw tl ]
+     | Word _ ⇒ full_info_of_word16_aux m borw tl ]
+    | Word w ⇒ match borw with
+     [ Byte _ ⇒ full_info_of_word16_aux m borw tl
+     | Word borw' ⇒ match eq_w16 borw' w with
+      [ true ⇒ Some ? hd
+      | false ⇒ full_info_of_word16_aux m borw tl ]            
+    ]]].
+
+ndefinition full_info_of_word16 ≝
+λm:mcu_type.λborw:byte8_or_word16.
+full_info_of_word16_aux m borw (opcode_table m).
+
+(* ******************************************************* *)
+(* TRADUZIONE MCU+OPCODE+MODALITA'+ARGOMENTI → ESADECIMALE *)
+(* ******************************************************* *)
+
+(* introduzione di un tipo byte8 dipendente dall'mcu_type (phantom type) *)
+ninductive t_byte8 (m:mcu_type) : Type ≝
+ TByte : byte8 → t_byte8 m.
+
+ndefinition eq_tbyte8 ≝
+λm.λtb1,tb2:t_byte8 m.
+ match tb1 with
+  [ TByte b1 ⇒ match tb2 with
+   [ TByte b2 ⇒ eq_b8 b1 b2 ]].
+
+(* introduzione di un tipo dipendente (dalla modalita') per gli argomenti *)
+ninductive MA_check : instr_mode → Type ≝
+  maINH              : MA_check MODE_INH
+| maINHA             : MA_check MODE_INHA
+| maINHX             : MA_check MODE_INHX
+| maINHH             : MA_check MODE_INHH
+| maINHX0ADD         : MA_check MODE_INHX0ADD
+| maINHX1ADD         : byte8 → MA_check MODE_INHX1ADD
+| maINHX2ADD         : word16 → MA_check MODE_INHX2ADD
+| maIMM1             : byte8  → MA_check MODE_IMM1
+| maIMM1EXT          : byte8  → MA_check MODE_IMM1EXT
+| maIMM2             : word16 → MA_check MODE_IMM2
+| maDIR1             : byte8  → MA_check MODE_DIR1
+| maDIR2             : word16 → MA_check MODE_DIR2
+| maIX0              : MA_check MODE_IX0
+| maIX1              : byte8  → MA_check MODE_IX1
+| maIX2              : word16 → MA_check MODE_IX2
+| maSP1              : byte8  → MA_check MODE_SP1
+| maSP2              : word16 → MA_check MODE_SP2
+| maDIR1_to_DIR1     : byte8 → byte8 → MA_check MODE_DIR1_to_DIR1
+| maIMM1_to_DIR1     : byte8 → byte8 → MA_check MODE_IMM1_to_DIR1
+| maIX0p_to_DIR1     : byte8 → MA_check MODE_IX0p_to_DIR1
+| maDIR1_to_IX0p     : byte8 → MA_check MODE_DIR1_to_IX0p
+| maINHA_and_IMM1    : byte8 → MA_check MODE_INHA_and_IMM1
+| maINHX_and_IMM1    : byte8 → MA_check MODE_INHX_and_IMM1
+| maIMM1_and_IMM1    : byte8 → byte8 → MA_check MODE_IMM1_and_IMM1
+| maDIR1_and_IMM1    : byte8 → byte8 → MA_check MODE_DIR1_and_IMM1
+| maIX0_and_IMM1     : byte8 → MA_check MODE_IX0_and_IMM1
+| maIX0p_and_IMM1    : byte8 → MA_check MODE_IX0p_and_IMM1
+| maIX1_and_IMM1     : byte8 → byte8 → MA_check MODE_IX1_and_IMM1
+| maIX1p_and_IMM1    : byte8 → byte8 → MA_check MODE_IX1p_and_IMM1
+| maSP1_and_IMM1     : byte8 → byte8 → MA_check MODE_SP1_and_IMM1
+| maDIRn             : ∀n.byte8 → MA_check (MODE_DIRn n)
+| maDIRn_and_IMM1    : ∀n.byte8 → byte8 → MA_check (MODE_DIRn_and_IMM1 n)
+| maTNY              : ∀e.MA_check (MODE_TNY e)
+| maSRT              : ∀t.MA_check (MODE_SRT t)
+.
+
+(* picker: trasforma l'argomento necessario in input a bytes_of_pseudo_instr_mode_param:
+   MA_check i → list (t_byte8 m) *)
+ndefinition args_picker ≝
+λm:mcu_type.λi:instr_mode.λargs:MA_check i.
+ match args with
+  (* inherent: legale se nessun operando *) 
+  [ maINH    ⇒ nil ? 
+  | maINHA   ⇒ nil ? 
+  | maINHX   ⇒ nil ? 
+  | maINHH   ⇒ nil ?
+  (* inherent address: legale se nessun operando/1 byte/1 word *)
+  | maINHX0ADD ⇒ nil ?
+  | maINHX1ADD b ⇒ [ TByte m b ]
+  | maINHX2ADD w ⇒ [ TByte m (w16h w); TByte m (w16l w) ]    
+  (* _0/1/2: legale se nessun operando/1 byte/1 word *)
+  | maIMM1 b ⇒ [ TByte m b ]
+  | maIMM1EXT b ⇒ [ TByte m b ]
+  | maIMM2 w ⇒ [ TByte m (w16h w); TByte m (w16l w) ]
+  | maDIR1 b ⇒ [ TByte m b ]
+  | maDIR2 w ⇒ [ TByte m (w16h w); TByte m (w16l w) ]
+  | maIX0    ⇒ nil ?
+  | maIX1 b  ⇒ [ TByte m b ]
+  | maIX2 w  ⇒ [ TByte m (w16h w); TByte m (w16l w) ]
+  | maSP1 b  ⇒ [ TByte m b ]
+  | maSP2 w  ⇒ [ TByte m (w16h w); TByte m (w16l w) ]
+  (* movimento: legale se 2 operandi byte *)
+  | maDIR1_to_DIR1 b1 b2  ⇒ [ TByte m b1 ; TByte m b2 ]
+  | maIMM1_to_DIR1 b1 b2  ⇒ [ TByte m b1 ; TByte m b2 ]
+  | maIX0p_to_DIR1 b      ⇒ [ TByte m b]
+  | maDIR1_to_IX0p b      ⇒ [ TByte m b]
+  (* cbeq/dbnz: legale se 1/2 operandi byte *)
+  | maINHA_and_IMM1 b     ⇒ [ TByte m b]
+  | maINHX_and_IMM1 b     ⇒ [ TByte m b]
+  | maIMM1_and_IMM1 b1 b2 ⇒ [ TByte m b1 ; TByte m b2 ]
+  | maDIR1_and_IMM1 b1 b2 ⇒ [ TByte m b1 ; TByte m b2 ]
+  | maIX0_and_IMM1  b     ⇒ [ TByte m b]
+  | maIX0p_and_IMM1 b     ⇒ [ TByte m b]
+  | maIX1_and_IMM1  b1 b2 ⇒ [ TByte m b1 ; TByte m b2 ]
+  | maIX1p_and_IMM1 b1 b2 ⇒ [ TByte m b1 ; TByte m b2 ]
+  | maSP1_and_IMM1  b1 b2 ⇒ [ TByte m b1 ; TByte m b2 ]
+  (* DIRn: legale se 1 operando byte *)
+  | maDIRn _ b ⇒ [ TByte m b]
+  (* DIRn_and_IMM1: legale se 2 operandi byte *)
+  | maDIRn_and_IMM1 _ b1 b2 ⇒ [ TByte m b1 ; TByte m b2 ]
+  (* TNY: legale se nessun operando *)
+  | maTNY _ ⇒ nil ?
+  (* SRT: legale se nessun operando *)
+  | maSRT _ ⇒ nil ?
+  ].
+
+(* trasformatore finale: mcu+opcode+instr_mode+args → list (t_byte8 m) *)
+nlet rec bytes_of_pseudo_instr_mode_param_aux (m:mcu_type) (o:any_opcode m) (i:instr_mode) (p:MA_check i)
+                                             (param:list (Prod4T (any_opcode m) instr_mode byte8_or_word16 byte8)) on param ≝
+ match param with
+ [ nil ⇒ None ? | cons hd tl ⇒
+  match (eq_anyop m o (fst4T … hd)) ⊗ (eq_im i (snd4T … hd)) with
+   [ true ⇒ match thd4T … hd with 
+    [ Byte isab ⇒ 
+     Some ? ([ (TByte m isab) ]@(args_picker m i p))
+    | Word isaw ⇒
+     Some ? ([ (TByte m (w16h isaw)) ; (TByte m (w16l isaw)) ]@(args_picker m i p))
+    ]
+   | false ⇒ bytes_of_pseudo_instr_mode_param_aux m o i p tl ]].
+
+ndefinition bytes_of_pseudo_instr_mode_param ≝
+λm:mcu_type.λo:any_opcode m.λi:instr_mode.λp:MA_check i.
+bytes_of_pseudo_instr_mode_param_aux m o i p (opcode_table m).
+
+(* ****************************** *)
+(* APPROCCIO COMPILAZIONE AL VOLO *)
+(* ****************************** *)
+
+(* ausiliario di compile *)
+ndefinition defined_option ≝
+ λT:Type.λo:option T.
+  match o with
+   [ None ⇒ False
+   | Some _ ⇒ True
+   ].
+
+(* compila solo se l'intera istruzione+modalita'+argomenti ha riscontro nelle tabelle *)
+ndefinition compile ≝
+λmcu:mcu_type.λi:instr_mode.λop:opcode.λarg:MA_check i.
+ match bytes_of_pseudo_instr_mode_param mcu (anyOP mcu op) i arg
+  return λres:option ?.defined_option ? res → ?
+ with
+  [ None ⇒ λp:defined_option ? (None ?).False_rect_Type0 ? p
+  | Some x ⇒ λp:defined_option ? (Some ? x).x
+  ].
+
+(* detipatore del compilato: (t_byte8 m) → byte8 *)
+nlet rec source_to_byte8_HC05_aux (p1:list (t_byte8 HC05)) (p2:list byte8) ≝
+ match p1 with
+  [ nil ⇒ p2
+  | cons hd tl ⇒ match hd with [ TByte b ⇒ source_to_byte8_HC05_aux tl (p2@[b]) ]
+  ].
+
+nlet rec source_to_byte8_HC08_aux (p1:list (t_byte8 HC08)) (p2:list byte8) ≝
+ match p1 with
+  [ nil ⇒ p2
+  | cons hd tl ⇒ match hd with [ TByte b ⇒ source_to_byte8_HC08_aux tl (p2@[b]) ]
+  ].
+
+nlet rec source_to_byte8_HCS08_aux (p1:list (t_byte8 HCS08)) (p2:list byte8) ≝
+ match p1 with
+  [ nil ⇒ p2
+  | cons hd tl ⇒ match hd with [ TByte b ⇒ source_to_byte8_HCS08_aux tl (p2@[b]) ]
+  ].
+
+nlet rec source_to_byte8_RS08_aux (p1:list (t_byte8 RS08)) (p2:list byte8) ≝
+ match p1 with
+  [ nil ⇒ p2
+  | cons hd tl ⇒ match hd with [ TByte b ⇒ source_to_byte8_RS08_aux tl (p2@[b]) ]
+  ].
+
+ndefinition source_to_byte8 ≝
+λm:mcu_type.
+ match m
+  return λm:mcu_type.list (t_byte8 m) → list byte8
+ with
+  [ HC05 ⇒ λl:list (t_byte8 HC05).source_to_byte8_HC05_aux l []
+  | HC08 ⇒ λl:list (t_byte8 HC08).source_to_byte8_HC08_aux l []
+  | HCS08 ⇒ λl:list (t_byte8 HCS08).source_to_byte8_HCS08_aux l []
+  | RS08 ⇒ λl:list (t_byte8 RS08).source_to_byte8_RS08_aux l []
+  ].
diff --git a/helm/software/matita/contribs/ng_assembly/freescale/translation_lemmas.ma b/helm/software/matita/contribs/ng_assembly/freescale/translation_lemmas.ma
new file mode 100755 (executable)
index 0000000..18db2df
--- /dev/null
@@ -0,0 +1,88 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/translation.ma".
+include "num/byte8_lemmas.ma".
+
+(* ******************************************************* *)
+(* TRADUZIONE MCU+OPCODE+MODALITA'+ARGOMENTI → ESADECIMALE *)
+(* ******************************************************* *)
+
+nlemma tbyte8_destruct : ∀m,b1,b2.TByte m b1 = TByte m b2 → b1 = b2.
+ #m; #b1; #b2; #H;
+ nchange with (match TByte m b2 with [ TByte a ⇒ b1 = a ]);
+ nrewrite < H;
+ nnormalize;
+ napply refl_eq.
+nqed.
+
+nlemma symmetric_eqtbyte8 : ∀m.∀tb1,tb2:t_byte8 m.eq_tbyte8 m tb1 tb2 = eq_tbyte8 m tb2 tb1.
+ #m; #tb1; nelim tb1; #b1; #tb2; nelim tb2; #b2;
+ nchange with ((eq_b8 b1 b2) = (eq_b8 b2 b1));
+ napply (symmetric_eqb8 b1 b2).
+nqed.
+
+nlemma eqtbyte8_to_eq : ∀m.∀tb1,tb2:t_byte8 m.eq_tbyte8 m tb1 tb2 = true → tb1 = tb2.
+ #m; #tb1; nelim tb1; #b1; #tb2; nelim tb2; #b2;
+ nchange with ((eq_b8 b1 b2 = true) → ?);
+ #H;
+ nrewrite > (eqb8_to_eq b1 b2 H);
+ napply refl_eq.
+nqed.
+
+nlemma eq_to_eqtbyte8 : ∀m.∀tb1,tb2:t_byte8 m.tb1 = tb2 → eq_tbyte8 m tb1 tb2 = true.
+ #m; #tb1; nelim tb1; #b1; #tb2; nelim tb2; #b2;
+ nchange with (? → (eq_b8 b1 b2 = true));
+ #H;
+ nrewrite > (tbyte8_destruct m … H);
+ nrewrite > (eq_to_eqb8 b2 b2 (refl_eq …));
+ napply refl_eq.
+nqed.
+
+nlemma decidable_tbyte8 : ∀m.∀x,y:t_byte8 m.decidable (x = y).
+ #m; #x; nelim x; #e1; #y; nelim y; #e2;
+ nnormalize;
+ napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_b8 e1 e2) …);
+ ##[ ##2: #H; napply (or2_intro2 (? = ?) (? ≠ ?) … ); nnormalize; #H1; napply (H (tbyte8_destruct m … H1))
+ ##| ##1: #H; nrewrite > H; napply (or2_intro1 (? = ?) (? ≠ ?) (refl_eq …))
+ ##]
+nqed.
+
+nlemma neqtbyte8_to_neq : ∀m.∀tb1,tb2:t_byte8 m.(eq_tbyte8 m tb1 tb2 = false) → (tb1 ≠ tb2).
+ #m; #tb1; nelim tb1; #b1; #tb2; nelim tb2; #b2;
+ nchange with (((eq_b8 b1 b2) = false) → ?);
+ #H;
+ nnormalize;
+ #H1;
+ napply (neqb8_to_neq … H);
+ napply (tbyte8_destruct m … H1).
+nqed.
+
+nlemma neq_to_neqtbyte8 : ∀m.∀tb1,tb2:t_byte8 m.tb1 ≠ tb2 → eq_tbyte8 m tb1 tb2 = false.
+ #m; #tb1; nelim tb1; #b1; #tb2; nelim tb2; #b2;
+ #H; nchange with ((eq_b8 b1 b2) = false);
+ napply (neq_to_neqb8 b1 b2 ?);
+ nnormalize;
+ #H1;
+ nrewrite > H1 in H:(%); #H;
+ napply (H (refl_eq …)).
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale_tests/medium_tests.ma b/helm/software/matita/contribs/ng_assembly/freescale_tests/medium_tests.ma
new file mode 100755 (executable)
index 0000000..68db649
--- /dev/null
@@ -0,0 +1,887 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale_tests/medium_tests_tools.ma".
+include "common/list_utility.ma".
+include "common/nat_to_num.ma".
+(* ************************ *)
+(* HCS08GB60 String Reverse *)
+(* ************************ *)
+
+(* versione ridotta, in cui non si riazzerano gli elementi di counters *)
+ndefinition dTest_HCS08_sReverse_source : word16 → (list byte8) ≝
+λelems:word16.
+let m ≝ HCS08 in source_to_byte8 m (
+(* BEFORE: A=0x00 H:X=0x0D4B SP=0x0D4A PC=0x18E0 Z=true *)
+
+(* static unsigned char dati[3072]={...};
+
+   void swap(unsigned char *a, unsigned char *b)
+    { unsigned char tmp=*a; *a=*b; *b=tmp; return; } *)
+
+(* [0x18C8]    allineamento *) (compile m ? NOP maINH I) @
+
+(* argomenti: HX e [0x0D49-A], passaggio ibrido reg, stack *)
+(* [0x18C9] PSHX      *) (compile m ? PSHX maINH I) @
+(* [0x18CA] PSHH      *) (compile m ? PSHH maINH I) @
+(* [0x18CB] LDHX 5,SP *) (compile m ? LDHX (maSP1 〈x0,x5〉) I) @
+(* [0x18CE] LDA ,X    *) (compile m ? LDA maIX0 I) @
+(* [0x18CF] LDHX 1,SP *) (compile m ? LDHX (maSP1 〈x0,x1〉) I) @
+(* [0x18D2] PSHA      *) (compile m ? PSHA maINH I) @
+(* [0x18D3] LDA ,X    *) (compile m ? LDA maIX0 I) @
+(* [0x18D4] LDHX 6,SP *) (compile m ? LDHX (maSP1 〈x0,x6〉) I) @
+(* [0x18D7] STA ,X    *) (compile m ? STA maIX0 I) @
+(* [0x18D8] LDHX 2,SP *) (compile m ? LDHX (maSP1 〈x0,x2〉) I) @
+(* [0x18DB] PULA      *) (compile m ? PULA maINH I) @
+(* [0x18DC] STA ,X    *) (compile m ? STA maIX0 I) @
+(* [0x18DD] AIS #2    *) (compile m ? AIS (maIMM1 〈x0,x2〉) I) @
+(* [0x18DF] RTS       *) (compile m ? RTS maINH I) @
+
+(* void main(void)
+   {
+   unsigned int pos=0,limit=0;
+   for(limit=3072;pos<(limit/2);pos++)
+    { swap(&dati[pos],&dati[limit-pos-1]); } *)
+
+(* [0x18E0] LDHX #elems     *) (compile m ? LDHX (maIMM2 elems) I) @
+(* [0x18E3] STHX 4,SP       *) (compile m ? STHX (maSP1 〈x0,x4〉) I) @
+(* [0x18E6] BRA *+52 ; 191A *) (compile m ? BRA (maIMM1 〈x3,x2〉) I) @
+(* [0x18E8] TSX             *) (compile m ? TSX maINH I) @
+(* [0x18E9] LDA 2,X         *) (compile m ? LDA (maIX1 〈x0,x2〉) I) @
+(* [0x18EB] ADD #0x00       *) (compile m ? ADD (maIMM1 〈x0,x0〉) I) @
+(* [0x18ED] PSHA            *) (compile m ? PSHA maINH I) @
+(* [0x18EE] LDA 1,X         *) (compile m ? LDA (maIX1 〈x0,x1〉) I) @
+(* [0x18F0] ADC #0x01       *) (compile m ? ADC (maIMM1 〈x0,x1〉) I) @
+(* [0x18F2] PSHA            *) (compile m ? PSHA maINH I) @
+(* [0x18F3] LDA 4,X         *) (compile m ? LDA (maIX1 〈x0,x4〉) I) @
+(* [0x18F5] SUB 2,X         *) (compile m ? SUB (maIX1 〈x0,x2〉) I) @
+(* [0x18F7] STA ,X          *) (compile m ? STA maIX0 I) @
+(* [0x18F8] LDA 3,X         *) (compile m ? LDA (maIX1 〈x0,x3〉) I) @
+(* [0x18FA] SBC 1,X         *) (compile m ? SBC (maIX1 〈x0,x1〉) I) @
+(* [0x18FC] PSHA            *) (compile m ? PSHA maINH I) @
+(* [0x18FD] LDX ,X          *) (compile m ? LDX maIX0 I) @
+(* [0x18FE] PULH            *) (compile m ? PULH maINH I) @
+(* [0x18FF] AIX #-1         *) (compile m ? AIX (maIMM1 〈xF,xF〉) I) @
+(* [0x1901] TXA             *) (compile m ? TXA maINH I) @
+(* [0x1902] ADD #0x00       *) (compile m ? ADD (maIMM1 〈x0,x0〉) I) @
+(* [0x1904] PSHH            *) (compile m ? PSHH maINH I) @
+(* [0x1905] TSX             *) (compile m ? TSX maINH I) @
+(* [0x1906] STA 3,X         *) (compile m ? STA (maIX1 〈x0,x3〉) I) @
+(* [0x1908] PULA            *) (compile m ? PULA maINH I) @
+(* [0x1909] ADC #0x01       *) (compile m ? ADC (maIMM1 〈x0,x1〉) I) @
+(* [0x190B] LDX 3,X         *) (compile m ? LDX (maIX1 〈x0,x3〉) I) @
+(* [0x190D] PSHA            *) (compile m ? PSHA maINH I) @
+(* [0x190E] PULH            *) (compile m ? PULH maINH I) @
+(* [0x190F] BSR *-70 ; 18C9 *) (compile m ? BSR (maIMM1 〈xB,x8〉) I) @
+(* [0x1911] AIS #2          *) (compile m ? AIS (maIMM1 〈x0,x2〉) I) @
+(* [0x1913] TSX             *) (compile m ? TSX maINH I) @
+(* [0x1914] INC 2,X         *) (compile m ? INC (maIX1 〈x0,x2〉) I) @
+(* [0x1916] BNE *+4 ; 191A  *) (compile m ? BNE (maIMM1 〈x0,x2〉) I) @
+(* [0x1918] INC 1,X         *) (compile m ? INC (maIX1 〈x0,x1〉) I) @
+(* [0x191A] TSX             *) (compile m ? TSX maINH I) @
+(* [0x191B] LDA 3,X         *) (compile m ? LDA (maIX1 〈x0,x3〉) I) @
+(* [0x191D] PSHA            *) (compile m ? PSHA maINH I) @
+(* [0x191E] PULH            *) (compile m ? PULH maINH I) @
+(* [0x191F] LSRA            *) (compile m ? LSR maINHA I) @
+(* [0x1920] TSX             *) (compile m ? TSX maINH I) @
+(* [0x1921] LDX 4,X         *) (compile m ? LDX (maIX1 〈x0,x4〉) I) @
+(* [0x1923] RORX            *) (compile m ? ROR maINHX I) @
+(* [0x1924] PSHA            *) (compile m ? PSHA maINH I) @
+(* [0x1925] PULH            *) (compile m ? PULH maINH I) @
+(* [0x1926] CPHX 2,SP       *) (compile m ? CPHX (maSP1 〈x0,x2〉) I) @
+(* [0x1929] BHI *-65 ; 18E8 *) (compile m ? BHI (maIMM1 〈xB,xD〉) I)
+
+(* [0x192B] !FINE!
+            attraverso simulazione in CodeWarrior si puo' enunciare che dopo
+            42+79*n+5*(n>>9) ci sara' il reverse di n byte (PARI) e
+            H:X=n/2 *)
+ ).
+
+(* creazione del processore+caricamento+impostazione registri *)
+ndefinition dTest_HCS08_sReverse_status ≝
+λt:memory_impl.
+λA_op:byte8.
+λHX_op:word16.
+λelems:word16.
+λdata:list byte8.
+ set_acc_8_low_reg HCS08 t (* A<-A_op *)
+ (set_z_flag HCS08 t (* Z<-true *)
+  (setweak_sp_reg HCS08 t (* SP<-0x0D4A *)
+   (setweak_indX_16_reg HCS08 t (* H:X<-HX_op *)
+    (set_pc_reg HCS08 t (* PC<-0x18E0 *)
+     (start_of_mcu_version_HCS08 MC9S08GB60 t
+      (load_from_source_at t (* carica data in RAM:dTest_HCS08_RAM *)
+       (load_from_source_at t (zero_memory t) (* carica source in ROM:dTest_HCS08_prog *)
+         (dTest_HCS08_sReverse_source elems) dTest_HCS08_prog)
+        data dTest_HCS08_RAM)
+      (build_memory_type_of_mcu_version (FamilyHCS08 MC9S08GB60) t)
+      (mk_byte8 x0 x0) (mk_byte8 x0 x0) (* non deterministici tutti a 0 *)
+      false false false false false false) (* non deterministici tutti a 0 *)
+     (mk_word16 (mk_byte8 x1 x8) (mk_byte8 xE x0)))
+    HX_op)
+   (mk_word16 (mk_byte8 x0 xD) (mk_byte8 x4 xA)))
+  true)
+ A_op.
+
+(* parametrizzazione dell'enunciato del teorema *)
+(* primo sbozzo: confronto esecuzione con hexdump... *)
+nlemma dTest_HCS08_sReverse_dump_aux ≝
+λt:memory_impl.λstring:list byte8.
+ (* 1) la stringa deve avere una lunghezza ∈ [0,3072] *)
+ (byte8_bounded_strlen string 〈〈x0,xC〉:〈x0,x0〉〉) ∧
+ (* 2) la stringa deve avere lunghezza pari *)
+ ((and_b8 (w16l (byte8_strlen string)) 〈x0,x1〉) = 〈x0,x0〉) ∧
+ (* 3) match di esecuzione su tempo in forma di tempo esatto *)
+ (match execute HCS08 t
+  (* parametri IN: t,H:X,strlen(string),string *)
+  (TickOK ? (dTest_HCS08_sReverse_status t 〈x0,x0〉 〈〈x0,xD〉:〈x4,xB〉〉 (byte8_strlen string) string))
+  (* tempo di esecuzione 42+79*n+5*(n>>9) *)
+  (nat42 + (nat79 * (len_list ? string))+(nat5 * ((len_list ? string) / nat512))) with
+   [ TickERR s _ ⇒ None ?
+   (* azzeramento tutta RAM tranne dati *)
+   | TickSUSP s _ ⇒ None ? 
+   | TickOK s ⇒ Some ? (byte8_hexdump t (mem_desc HCS08 t s) dTest_HCS08_RAM (len_list ? string))
+   ] =
+  Some ? (reverse_list ? string)).
+
+(* confronto esecuzione con hexdump... *)
+(*
+lemma dTest_HCS08_sReverse_dump :
+ dTest_HCS08_sReverse_dump_aux MEM_TREE dTest_random_32.
+ unfold dTest_HCS08_sReverse_dump_aux;
+ split;
+ [ split; [ normalize in ⊢ (%); autobatch ] reflexivity ]
+ reflexivity.
+qed.
+*)
+
+(* parametrizzazione dell'enunciato del teorema *)
+(* dimostrazione senza svolgimento degli stati *)
+nlemma dTest_HCS08_sReverse_aux ≝
+λt:memory_impl.λstring:list byte8.
+ (* 1) la stringa deve avere una lunghezza ∈ [0,3072] *)
+ (byte8_bounded_strlen string 〈〈x0,xC〉:〈x0,x0〉〉) ∧
+ (* 2) la stringa deve avere lunghezza pari *)
+ ((and_b8 (w16l (byte8_strlen string)) 〈x0,x1〉) = 〈x0,x0〉) ∧
+ (* 3) match di esecuzione su tempo in forma di tempo esatto *)
+ (match execute HCS08 t
+  (* parametri IN: t,H:X,strlen(string),string *)
+  (TickOK ? (dTest_HCS08_sReverse_status t 〈x0,x0〉 〈〈x0,xD〉:〈x4,xB〉〉 (byte8_strlen string) string))
+  (* tempo di esecuzione 42+79*n+5*(n>>9) *)
+  (nat42 + (nat79 * (len_list ? string))+(nat5 * ((len_list ? string) / nat512))) with
+   [ TickERR s _ ⇒ None ?
+   (* azzeramento tutta RAM tranne dati *)
+   | TickSUSP s _ ⇒ None ? 
+   | TickOK s ⇒ Some ? (set_mem_desc HCS08 t s (load_from_source_at t (mem_desc HCS08 t s) dTest_zeros 〈〈x0,xD〉:〈x0,x0〉〉))
+   ] =
+  Some ? (set_pc_reg HCS08 t
+   (dTest_HCS08_sReverse_status t (fst … (shr_b8 (w16h (byte8_strlen string)))) (fst … (shr_w16 (byte8_strlen string))) (byte8_strlen string) (reverse_list ? string)) 
+   (mk_word16 (mk_byte8 x1 x9) (mk_byte8 x2 xB)))).
+
+(*
+lemma dTest_HCS08_sReverse :
+ dTest_HCS08_sReverse_aux MEM_TREE dTest_random_32.
+ unfold dTest_HCS08_sReverse_aux;
+ split;
+ [ split; [ normalize in ⊢ (%); autobatch ] reflexivity ]
+
+ rewrite > (breakpoint HCS08 MEM_TREE (TickOK ? (dTest_HCS08_sReverse_status MEM_TREE 〈〈x0,xD〉:〈x4,xB〉〉   (byte8_strlen dTest_random_32) dTest_random_32)) 3 (39+79*byte8_strlen dTest_random_32+5*(byte8_strlen dTest_random_32/512))) in ⊢ (? ? match % in tick_result return ? with [TickERR⇒?|TickSUSP⇒?|TickOK⇒?] ?);
+ letin status0 ≝ (dTest_HCS08_sReverse_status MEM_TREE 〈〈x0,xD〉:〈x4,xB〉〉 (byte8_strlen dTest_random_32) dTest_random_32);
+ change in ⊢ (? ? match ? ? ? (? ? ? % ?) ? in tick_result return ? with [TickERR⇒?|TickSUSP⇒?|TickOK⇒?] ?) with
+  (TickOK ? status0); 
+ rewrite > (execute_HCS08_LDHX_maIMM2 MEM_TREE status0 〈x0,x0〉 〈x2,x0〉) in ⊢ (? ? match ? ? ? % ? in tick_result return ? with [TickERR⇒?|TickSUSP⇒?|TickOK⇒?] ?);
+ [ 2,3,4,5: reflexivity; ]
+
+ letin status1 ≝ (set_pc_reg HCS08 MEM_TREE (setweak_v_flag HCS08 MEM_TREE (setweak_n_flag HCS08 MEM_TREE (set_z_flag HCS08 MEM_TREE (set_alu HCS08 MEM_TREE (dTest_HCS08_sReverse_status MEM_TREE 〈〈x0,xD〉:〈x4,xB〉〉 (byte8_strlen dTest_random_32) dTest_random_32) (set_indX_16_reg_HC08 (alu HCS08 MEM_TREE (dTest_HCS08_sReverse_status MEM_TREE 〈〈x0,xD〉:〈x4,xB〉〉 (byte8_strlen dTest_random_32) dTest_random_32)) 〈〈x0,x0〉:〈x2,x0〉〉)) (eq_w16 〈〈x0,x0〉:〈x2,x0〉〉 〈〈x0,x0〉:〈x0,x0〉〉)) (MSB_w16 〈〈x0,x0〉:〈x2,x0〉〉)) false) (filtered_plus_w16 HCS08 MEM_TREE (dTest_HCS08_sReverse_status MEM_TREE 〈〈x0,xD〉:〈x4,xB〉〉 (byte8_strlen dTest_random_32) dTest_random_32) (get_pc_reg HCS08 MEM_TREE (dTest_HCS08_sReverse_status MEM_TREE 〈〈x0,xD〉:〈x4,xB〉〉 (byte8_strlen dTest_random_32) dTest_random_32)) 3));
+ change in ⊢ (? ? match ? ? ? % ? in tick_result return ? with [TickERR⇒?|TickSUSP⇒?|TickOK⇒?] ?) with (TickOK ? status1);
+
+ rewrite > (breakpoint HCS08 MEM_TREE (TickOK ? status1) 5 (34+79*byte8_strlen dTest_random_32+5*(byte8_strlen dTest_random_32/512))) in ⊢ (? ? match % in tick_result return ? with [TickERR⇒?|TickSUSP⇒?|TickOK⇒?] ?);
+ change in ⊢ (? ? match ? ? ? (? ? ? % ?) ? in tick_result return ? with [TickERR⇒?|TickSUSP⇒?|TickOK⇒?] ?) with (TickOK ? status1);
+ rewrite > (execute_HCS08_STHX_maSP1 status1 〈x0,x4〉)
+  in ⊢ (? ? match ? ? ? % ? in tick_result return ? with [TickERR⇒?|TickSUSP⇒?|TickOK⇒?] ?);
+ [ 2,3,4,5,6,7: reflexivity; ]
+
+ elim daemon.
+
+qed.
+*)
+
+ndefinition sReverseCalc ≝
+λstring:list byte8.
+ match execute HCS08 MEM_TREE
+  (TickOK ? (dTest_HCS08_sReverse_status MEM_TREE 〈x0,x0〉 〈〈x0,xD〉:〈x4,xB〉〉 (byte8_strlen string) string))
+  (nat42 + (nat79 * (len_list ? string))+(nat5 * ((len_list ? string) / nat512))) with
+   [ TickERR s _ ⇒ None ?
+   | TickSUSP s _ ⇒ None ? 
+   | TickOK s ⇒ Some ? (set_mem_desc HCS08 MEM_TREE s (load_from_source_at MEM_TREE (mem_desc HCS08 MEM_TREE s) dTest_zeros 〈〈x0,xD〉:〈x0,x0〉〉))
+   ]. 
+
+ndefinition sReverseNoCalc ≝
+λstring:list byte8.
+ Some ? (set_pc_reg HCS08 MEM_TREE
+   (dTest_HCS08_sReverse_status MEM_TREE (fst … (shr_b8 (w16h (byte8_strlen string))))
+                                         (fst … (shr_w16 (byte8_strlen string)))
+                                         (byte8_strlen string) (reverse_list ? string)) 
+   (mk_word16 (mk_byte8 x1 x9) (mk_byte8 x2 xB))).
+
+ndefinition sReverseCalc32   ≝ sReverseCalc dTest_random_32.
+ndefinition sReverseCalc64   ≝ sReverseCalc dTest_random_64.
+ndefinition sReverseCalc128  ≝ sReverseCalc dTest_random_128.
+ndefinition sReverseCalc256  ≝ sReverseCalc dTest_random_256.
+ndefinition sReverseCalc512  ≝ sReverseCalc dTest_random_512.
+ndefinition sReverseCalc1024 ≝ sReverseCalc dTest_random_1024.
+ndefinition sReverseCalc2048 ≝ sReverseCalc dTest_random_2048.
+ndefinition sReverseCalc3072 ≝ sReverseCalc dTest_random_3072.
+
+ndefinition sReverseNoCalc32   ≝ sReverseNoCalc dTest_random_32.
+ndefinition sReverseNoCalc64   ≝ sReverseNoCalc dTest_random_64.
+ndefinition sReverseNoCalc128  ≝ sReverseNoCalc dTest_random_128.
+ndefinition sReverseNoCalc256  ≝ sReverseNoCalc dTest_random_256.
+ndefinition sReverseNoCalc512  ≝ sReverseNoCalc dTest_random_512.
+ndefinition sReverseNoCalc1024 ≝ sReverseNoCalc dTest_random_1024.
+ndefinition sReverseNoCalc2048 ≝ sReverseNoCalc dTest_random_2048.
+ndefinition sReverseNoCalc3072 ≝ sReverseNoCalc dTest_random_3072.
+
+(* *********************** *)
+(* HCS08GB60 Counting Sort *)
+(* *********************** *)
+
+(* versione ridotta, in cui non si riazzerano gli elementi di counters *)
+ndefinition dTest_HCS08_cSort_source : word16 → (list byte8) ≝
+λelems:word16.
+let m ≝ HCS08 in source_to_byte8 m (
+(* BEFORE: A=0x00 H:X=0x0F4C SP=0x0F4B PC=0x18C8 Z=true *)
+
+(* /* IPOTESI: INIT VARIABILI+ARRAY GIA' ESEGUITO */
+   static unsigned int counters[256]={ campitura di 0 };
+   static unsigned char dati[3072]={ dati random };
+
+   void CountingSort(void)
+    {
+    unsigned int index=0,position=0; *)
+
+(* /* TESI: CODICE DA ESEGUIRE
+
+    /* calcolo del # ripetizioni degli elementi byte */
+    for(;index<3072;index++)
+     { counters[dati[index]]++; } *)
+
+(* [0x18C8] BRA *+31;18E7 *) (compile m ? BRA (maIMM1 〈x1,xD〉) I) @
+(* [0x18CA] LDHX 1,SP     *) (compile m ? LDHX (maSP1 〈x0,x1〉) I) @
+(* [0x18CD] LDA 256,X     *) (compile m ? LDA (maIX2 〈〈x0,x1〉:〈x0,x0〉〉) I) @
+(* [0x18D0] LSLA          *) (compile m ? ASL maINHA I) @
+(* [0x18D1] CLRX          *) (compile m ? CLR maINHX I) @
+(* [0x18D2] ROLX          *) (compile m ? ROL maINHX I) @
+(* [0x18D3] ADD #0x00     *) (compile m ? ADD (maIMM1 〈x0,x0〉) I) @
+(* [0x18D5] PSHA          *) (compile m ? PSHA maINH I) @
+(* [0x18D6] TXA           *) (compile m ? TXA maINH I) @
+(* [0x18D7] ADC #0x0D     *) (compile m ? ADC (maIMM1 〈x0,xD〉) I) @
+(* [0x18D9] PSHA          *) (compile m ? PSHA maINH I) @
+(* [0x18DA] PULH          *) (compile m ? PULH maINH I) @
+(* [0x18DB] PULX          *) (compile m ? PULX maINH I) @
+(* [0x18DC] INC 1,X       *) (compile m ? INC (maIX1 〈x0,x1〉) I) @
+(* [0x18DE] BNE *+3       *) (compile m ? BNE (maIMM1 〈x0,x1〉) I) @
+(* [0x18E0] INC ,X        *) (compile m ? INC maIX0 I) @
+(* [0x18E1] TSX           *) (compile m ? TSX maINH I) @
+(* [0x18E2] INC 1,X       *) (compile m ? INC (maIX1 〈x0,x1〉) I) @
+(* [0x18E4] BNE *+3       *) (compile m ? BNE (maIMM1 〈x0,x1〉) I) @
+(* [0x18E6] INC ,X        *) (compile m ? INC maIX0 I) @
+(* [0x18E7] LDHX 1,SP     *) (compile m ? LDHX (maSP1 〈x0,x1〉) I) @
+(* [0x18EA] CPHX #elems   *) (compile m ? CPHX (maIMM2 elems) I) @ (* dimensione dei dati al massimo 0x0C00 *)
+(* [0x18ED] BCS *-35;18CA *) (compile m ? BCS (maIMM1 〈xD,xB〉) I) @
+
+(* /* sovrascrittura di dati per produrre la versione ordinata */
+   for(index=0;index<256;index++)
+    {
+    while(counters[index]--)
+     { dati[position++]=index; }
+    } *)
+
+(* [0x18EF] TSX          *) (compile m ? TSX maINH I) @
+(* [0x18F0] CLR 1,X      *) (compile m ? CLR (maIX1 〈x0,x1〉) I) @
+(* [0x18F2] CLR ,X       *) (compile m ? CLR maIX0 I) @
+(* [0x18F3] BRA *+16     *) (compile m ? BRA (maIMM1 〈x0,xE〉) I) @
+(* [0x18F5] TSX          *) (compile m ? TSX maINH I) @
+(* [0x18F6] LDA 1,X      *) (compile m ? LDA (maIX1 〈x0,x1〉) I) @
+(* [0x18F8] LDHX 3,SP    *) (compile m ? LDHX (maSP1 〈x0,x3〉) I) @
+(* [0x18FB] STA 256,X    *) (compile m ? STA (maIX2 〈〈x0,x1〉:〈x0,x0〉〉) I) @
+(* [0x18FE] AIX #1       *) (compile m ? AIX (maIMM1 〈x0,x1〉) I) @
+(* [0x1900] STHX 3,SP    *) (compile m ? STHX (maSP1 〈x0,x3〉) I) @
+(* [0x1903] TSX          *) (compile m ? TSX maINH I) @
+(* [0x1904] LDX 1,X      *) (compile m ? LDX (maIX1 〈x0,x1〉) I) @
+(* [0x1906] LSLX         *) (compile m ? ASL maINHX I) @
+(* [0x1907] LDA 1,SP     *) (compile m ? LDA (maSP1 〈x0,x1〉) I) @
+(* [0x190A] ROLA         *) (compile m ? ROL maINHA I) @
+(* [0x190B] PSHA         *) (compile m ? PSHA maINH I) @
+(* [0x190C] PULH         *) (compile m ? PULH maINH I) @
+(* [0x190D] PSHX         *) (compile m ? PSHX maINH I) @
+(* [0x190E] LDHX 3328,X  *) (compile m ? LDHX (maIX2 〈〈x0,xD〉:〈x0,x0〉〉) I) @
+(* [0x1912] PSHX         *) (compile m ? PSHX maINH I) @
+(* [0x1913] PSHH         *) (compile m ? PSHH maINH I) @
+(* [0x1914] AIX #-1      *) (compile m ? AIX (maIMM1 〈xF,xF〉) I) @
+(* [0x1916] PSHH         *) (compile m ? PSHH maINH I) @
+(* [0x1917] PSHA         *) (compile m ? PSHA maINH I) @
+(* [0x1918] PULH         *) (compile m ? PULH maINH I) @
+(* [0x1919] PSHX         *) (compile m ? PSHX maINH I) @
+(* [0x191A] LDX 5,SP     *) (compile m ? LDX (maSP1 〈x0,x5〉) I) @
+(* [0x191D] PULA         *) (compile m ? PULA maINH I) @
+(* [0x191E] STA 3329,X   *) (compile m ? STA (maIX2 〈〈x0,xD〉:〈x0,x1〉〉) I) @
+(* [0x1921] PULA         *) (compile m ? PULA maINH I) @
+(* [0x1922] STA 3328,X   *) (compile m ? STA (maIX2 〈〈x0,xD〉:〈x0,x0〉〉) I) @
+(* [0x1925] PULH         *) (compile m ? PULH maINH I) @
+(* [0x1926] PULX         *) (compile m ? PULX maINH I) @
+(* [0x1927] CPHX #0x0000 *) (compile m ? CPHX (maIMM2 〈〈x0,x0〉:〈x0,x0〉〉) I) @
+(* [0x192A] PULH         *) (compile m ? PULH maINH I) @
+(* [0x192B] BNE *-54     *) (compile m ? BNE (maIMM1 〈xC,x8〉) I) @
+(* [0x192D] TSX          *) (compile m ? TSX maINH I) @
+(* [0x192E] INC 1,X      *) (compile m ? INC (maIX1 〈x0,x1〉) I) @
+(* [0x1930] BNE *+3      *) (compile m ? BNE (maIMM1 〈x0,x1〉) I) @
+(* [0x1932] INC ,X       *) (compile m ? INC maIX0 I) @
+(* [0x1933] LDHX 1,SP    *) (compile m ? LDHX (maSP1 〈x0,x1〉) I) @
+(* [0x1936] CPHX #0x0100 *) (compile m ? CPHX (maIMM2 〈〈x0,x1〉:〈x0,x0〉〉) I) @
+(* [0x1939] BNE *-54     *) (compile m ? BNE (maIMM1 〈xC,x8〉) I) @
+(* [0x193B] STOP         *) (compile m ? STOP maINH I)
+
+(* [0x193C] !FINE!
+            attraverso simulazione in CodeWarrior si puo' enunciare che dopo
+            25700+150n si sara' entrati in stato STOP corrispondente con ordinamento
+            di n byte, A=0xFF H:X=0x0100 *)
+ ).
+
+(* creazione del processore+caricamento+impostazione registri *)
+ndefinition dTest_HCS08_cSort_status ≝
+λt:memory_impl.
+λI_op:bool.
+λA_op:byte8.
+λHX_op:word16.
+λelems:word16.
+λdata:list byte8.
+ setweak_i_flag HCS08 t (* I<-I_op *)
+  (set_acc_8_low_reg HCS08 t (* A<-A_op *)
+   (set_z_flag HCS08 t (* Z<-true *)
+    (setweak_sp_reg HCS08 t (* SP<-0x0F4B *)
+     (setweak_indX_16_reg HCS08 t (* H:X<-HX_op *)
+      (set_pc_reg HCS08 t (* PC<-dTest_HCS08_prog *)
+       (start_of_mcu_version_HCS08
+        MC9S08GB60 t
+        (load_from_source_at t (* carica data in RAM:dTest_HCS08_RAM *)
+         (load_from_source_at t (zero_memory t) (* carica source in ROM:dTest_HCS08_prog *)
+           (dTest_HCS08_cSort_source elems) dTest_HCS08_prog)
+          data dTest_HCS08_RAM)
+        (build_memory_type_of_mcu_version (FamilyHCS08 MC9S08GB60) t)
+        (mk_byte8 x0 x0) (mk_byte8 x0 x0) (* non deterministici tutti a 0 *)
+        false false false false false false) (* non deterministici tutti a 0 *)
+       dTest_HCS08_prog)
+      HX_op)
+     (mk_word16 (mk_byte8 x0 xF) (mk_byte8 x4 xB)))
+    true)
+   A_op)
+  I_op.
+
+(* parametrizzazione dell'enunciato del teorema parziale *)
+nlemma dTest_HCS08_cSort_aux ≝
+λt:memory_impl.λstring:list byte8.
+ (* 1) la stringa deve avere una lunghezza ∈ [0,3072] *)
+ (byte8_bounded_strlen string 〈〈x0,xC〉:〈x0,x0〉〉) ∧
+ (* 2) match di esecuzione su tempo in forma di upperbound *)
+ (match execute HCS08 t
+  (* parametri IN: t,A,H:X,strlen(string),string *)
+  (TickOK ? (dTest_HCS08_cSort_status t true 〈x0,x0〉 〈〈x0,xF〉:〈x4,xC〉〉 (byte8_strlen string) string))
+  (* tempo di esecuzione 25700+150*n *)
+  (((nat256 + nat1) * nat100)+((nat50 * nat3) * (len_list ? string))) with
+   [ TickERR s _ ⇒ None ?
+   (* azzeramento tutta RAM tranne dati *)
+   | TickSUSP s _ ⇒ Some ? (set_mem_desc HCS08 t s (load_from_source_at t (mem_desc HCS08 t s) dTest_zeros 〈〈x0,xD〉:〈x0,x0〉〉))
+   | TickOK s ⇒ None ?
+   ] =
+  Some ? (set_pc_reg HCS08 t
+   (dTest_HCS08_cSort_status t false 〈xF,xF〉 〈〈x0,x1〉:〈x0,x0〉〉 (byte8_strlen string) (byte8_list_ordering string)) 
+   (mk_word16 (mk_byte8 x1 x9) (mk_byte8 x3 xC)))).
+
+(* dimostrazione senza svolgimento degli stati *)
+(*
+lemma dTest_HCS08_cSort :
+ dTest_HCS08_cSort_aux MEM_TREE dTest_random_32.
+ unfold dTest_HCS08_cSort_aux;
+ split;
+ [ normalize in ⊢ (%); autobatch ]
+ reflexivity.
+qed.
+*)
+
+ndefinition cSortCalc ≝
+λstring:list byte8.
+ match execute HCS08 MEM_TREE
+  (TickOK ? (dTest_HCS08_cSort_status MEM_TREE true 〈x0,x0〉 〈〈x0,xF〉:〈x4,xC〉〉 (byte8_strlen string) string))
+  (((nat256 + nat1) * nat100)+((nat50 * nat3) * (len_list ? string))) with
+   [ TickERR s _ ⇒ None ?
+   | TickSUSP s _ ⇒ Some ? (set_mem_desc HCS08 MEM_TREE s (load_from_source_at MEM_TREE (mem_desc HCS08 MEM_TREE s) dTest_zeros 〈〈x0,xD〉:〈x0,x0〉〉))
+   | TickOK s ⇒ None ?
+   ].
+
+ndefinition cSortNoCalc ≝
+λstring:list byte8.
+ Some ? (set_pc_reg HCS08 MEM_TREE
+   (dTest_HCS08_cSort_status MEM_TREE false 〈xF,xF〉 〈〈x0,x1〉:〈x0,x0〉〉 (byte8_strlen string) (byte8_list_ordering string)) 
+   (mk_word16 (mk_byte8 x1 x9) (mk_byte8 x3 xC))).
+
+ndefinition cSortCalc32   ≝ cSortCalc dTest_random_32.
+ndefinition cSortCalc64   ≝ cSortCalc dTest_random_64.
+ndefinition cSortCalc128  ≝ cSortCalc dTest_random_128.
+ndefinition cSortCalc256  ≝ cSortCalc dTest_random_256.
+ndefinition cSortCalc512  ≝ cSortCalc dTest_random_512.
+ndefinition cSortCalc1024 ≝ cSortCalc dTest_random_1024.
+ndefinition cSortCalc2048 ≝ cSortCalc dTest_random_2048.
+ndefinition cSortCalc3072 ≝ cSortCalc dTest_random_3072.
+
+ndefinition cSortNoCalc32   ≝ cSortNoCalc dTest_random_32.
+ndefinition cSortNoCalc64   ≝ cSortNoCalc dTest_random_64.
+ndefinition cSortNoCalc128  ≝ cSortNoCalc dTest_random_128.
+ndefinition cSortNoCalc256  ≝ cSortNoCalc dTest_random_256.
+ndefinition cSortNoCalc512  ≝ cSortNoCalc dTest_random_512.
+ndefinition cSortNoCalc1024 ≝ cSortNoCalc dTest_random_1024.
+ndefinition cSortNoCalc2048 ≝ cSortNoCalc dTest_random_2048.
+ndefinition cSortNoCalc3072 ≝ cSortNoCalc dTest_random_3072.
+
+(* ********************** *)
+(* HCS08GB60 numeri aurei *)
+(* ********************** *)
+
+(* versione ridotta, in cui non si riazzerano gli elementi di counters *)
+ndefinition dTest_HCS08_gNum_source : word16 → (list byte8) ≝
+λelems:word16.
+let m ≝ HCS08 in source_to_byte8 m (
+(* BEFORE: A=0x00 HX=0x1A00 PC=0x18BE SP=0x016F Z=1 (I=1) *)
+
+(*
+static unsigned int result[16]={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
+word result[16] = 0x0100
+
+void goldenNumbers(void)
+{
+unsigned int res_pos=0,tested_num=0,divisor=0;
+unsigned long int acc=0;
+*)
+
+(* [0x18BE] AIS #-10   *) (compile m ? AIS (maIMM1 〈xF,x6〉) I) @
+(* [0x18C0] TSX        *) (compile m ? TSX maINH I) @
+(* [0x18C1] CLR 9,x    *) (compile m ? CLR (maIX1 〈x0,x9〉) I) @
+(* [0x18C3] CLR 8,X    *) (compile m ? CLR (maIX1 〈x0,x8〉) I) @
+(* [0x18C5] CLR 1,X    *) (compile m ? CLR (maIX1 〈x0,x1〉) I) @
+(* [0x18C7] CLR ,X     *) (compile m ? CLR maIX0 I) @
+(* [0x18C8] CLR 3,X    *) (compile m ? CLR (maIX1 〈x0,x3〉) I) @
+(* [0x18CA] CLR 2,X    *) (compile m ? CLR (maIX1 〈x0,x2〉) I) @
+(* [0x18CC] JSR 0x1951 *) (compile m ? JSR (maIMM2 〈〈x1,x9〉:〈x5,x1〉〉) I) @
+
+(*
+for(tested_num=1;tested_num<2;tested_num++)
+ {
+*)
+
+(* [0x18CF] STHX 1,SP          *) (compile m ? STHX (maSP1 〈x0,x1〉) I) @
+(* [0x18D2] BRA *+116 ; 0x1946 *) (compile m ? BRA (maIMM1 〈x7,x2〉) I) @
+(* [0x18D4] BSR *+125 ; 0x1951 *) (compile m ? BSR (maIMM1 〈x7,xB〉) I) @
+(* [0x18D6] STHX 3,SP          *) (compile m ? STHX (maSP1 〈x0,x3〉) I) @
+
+(*
+ for(acc=0,divisor=1;divisor<tested_num;divisor++)
+  {
+  if(!(tested_num%divisor))
+   { acc+=divisor; }
+  }
+*)
+
+(* [0x18D9] BRA *+61 ; 0x1916 *) (compile m ? BRA (maIMM1 〈x3,xB〉) I) @
+(* [0x18DB] LDHX 1,SP         *) (compile m ? LDHX (maSP1 〈x0,x1〉) I) @
+(* [0x18DE] PSHX              *) (compile m ? PSHX maINH I) @
+(* [0x18DF] PSHH              *) (compile m ? PSHH maINH I) @
+(* [0x18E0] LDHX 5,SP         *) (compile m ? LDHX (maSP1 〈x0,x5〉) I) @
+(* [0x18E3] JSR 0x1A1A        *) (compile m ? JSR (maIMM2 〈〈x1,xA〉:〈x1,xA〉〉) I) @
+(* [0x18E6] AIS #2            *) (compile m ? AIS (maIMM1 〈x0,x2〉) I) @
+(* [0x18E8] CPHX #0x0000      *) (compile m ? CPHX (maIMM2 〈〈x0,x0〉:〈x0,x0〉〉) I) @
+(* [0x18EB] BNE *+33 ; 0x190C *) (compile m ? BNE (maIMM1 〈x1,xF〉) I) @
+(* [0x18ED] TSX               *) (compile m ? TSX maINH I) @
+(* [0x18EE] LDA 3,X           *) (compile m ? LDA (maIX1 〈x0,x3〉) I) @
+(* [0x18F0] LDX 2,X           *) (compile m ? LDX (maIX1 〈x0,x2〉) I) @
+(* [0x18F2] PSHA              *) (compile m ? PSHA maINH I) @
+(* [0x18F3] PSHX              *) (compile m ? PSHX maINH I) @
+(* [0x18F4] CLRA              *) (compile m ? CLR maINHA I) @
+(* [0x18F5] PSHA              *) (compile m ? PSHA maINH I) @
+(* [0x18F6] PSHA              *) (compile m ? PSHA maINH I) @
+(* [0x18F7] TSX               *) (compile m ? TSX maINH I) @
+(* [0x18F8] PSHX              *) (compile m ? PSHX maINH I) @
+(* [0x19F9] PSHH              *) (compile m ? PSHH maINH I) @
+(* [0x18FA] AIX #8            *) (compile m ? AIX (maIMM1 〈x0,x8〉) I) @
+(* [0x18FC] PSHX              *) (compile m ? PSHX maINH I) @
+(* [0x18FD] PSHH              *) (compile m ? PSHH maINH I) @
+(* [0x18FE] LDHX 3,SP         *) (compile m ? LDHX (maSP1 〈x0,x3〉) I) @
+(* [0x1901] JSR 0x1A2A        *) (compile m ? JSR (maIMM2 〈〈x1,xA〉:〈x2,xA〉〉) I) @
+(* [0x1904] TSX               *) (compile m ? TSX maINH I) @
+(* [0x1905] AIX #14           *) (compile m ? AIX (maIMM1 〈x0,xE〉) I) @
+(* [0x1907] JSR 0x1A30        *) (compile m ? JSR (maIMM2 〈〈x1,xA〉:〈x3,x0〉〉) I) @
+(* [0x190A] AIS #6            *) (compile m ? AIS (maIMM1 〈x0,x6〉) I) @
+(* [0x190C] STA 0x1800  !COP! *) (compile m ? STA (maDIR2 〈〈x0,xC〉:〈x0,x0〉〉) I) @
+(* [0x190F] TSX               *) (compile m ? TSX maINH I) @
+(* [0x1910] INC 3,X           *) (compile m ? INC (maIX1 〈x0,x3〉) I) @
+(* [0x1912] BNE *+4 ; 0x1916  *) (compile m ? BNE (maIMM1 〈x0,x2〉) I) @
+(* [0x1914] INC 2,X           *) (compile m ? INC (maIX1 〈x0,x2〉) I) @
+(* [0x1916] LDHX 1,SP         *) (compile m ? LDHX (maSP1 〈x0,x1〉) I) @
+(* [0x1919] CPHX 3,SP         *) (compile m ? CPHX (maSP1 〈x0,x3〉) I) @
+(* [0x191C] BHI *-65 ; 0x18DB *) (compile m ? BHI (maIMM1 〈xB,xD〉) I) @
+
+(*
+ if(acc==tested_num)
+  { result[res_pos++]=tested_num; }
+ }
+}
+*)
+
+(* [0x191E] CPHX 7,SP          *) (compile m ? CPHX (maSP1 〈x0,x7〉) I) @
+(* [0x1921] BNE *+31 ; 0x1940  *) (compile m ? BNE (maIMM1 〈x1,xD〉) I) @
+(* [0x1923] LDHX 5,SP          *) (compile m ? LDHX (maSP1 〈x0,x5〉) I) @
+(* [0x1926] BNE *+26 ; 0x1940  *) (compile m ? BNE (maIMM1 〈x1,x8〉) I) @
+(* [0x1928] LDHX 9,SP          *) (compile m ? LDHX (maSP1 〈x0,x9〉) I) @
+(* [0x192B] PSHX               *) (compile m ? PSHX maINH I) @
+(* [0x192C] AIX #1             *) (compile m ? AIX (maIMM1 〈x0,x1〉) I) @
+(* [0x192E] STHX 10,SP         *) (compile m ? STHX (maSP1 〈x0,xA〉) I) @
+(* [0x1931] PULX               *) (compile m ? PULX maINH I) @
+(* [0x1932] LSLX               *) (compile m ? ASL maINHX I) @
+(* [0x1933] LDA 2,SP           *) (compile m ? LDA (maSP1 〈x0,x2〉) I) @
+(* [0x1936] CLRH               *) (compile m ? CLR maINHH I) @
+(* [0x1937] STA 257,X          *) (compile m ? STA (maIX2 〈〈x0,x1〉:〈x0,x1〉〉) I) @
+(* [0x193A] LDA 1,SP           *) (compile m ? LDA (maSP1 〈x0,x1〉) I) @
+(* [0x193D] STA 256,X          *) (compile m ? STA (maIX2 〈〈x0,x1〉:〈x0,x0〉〉) I) @
+(* [0x1940] TSX                *) (compile m ? TSX maINH I) @
+(* [0x1941] INC 1,X            *) (compile m ? INC (maIX1 〈x0,x1〉) I) @
+(* [0x1943] BNE *+3 ; 0x1946   *) (compile m ? BNE (maIMM1 〈x0,x1〉) I) @
+(* [0x1945] INC ,X             *) (compile m ? INC maIX0 I) @
+(* [0x1946] LDHX 1,SP          *) (compile m ? LDHX (maSP1 〈x0,x1〉) I) @
+(* [0x1949] CPHX #elems        *) (compile m ? CPHX (maIMM2 elems) I) @
+(* [0x194C] BCS *-120 ; 0x18D4 *) (compile m ? BCS (maIMM1 〈x8,x6〉) I) @
+(* [0x194E] AIS #10            *) (compile m ? AIS (maIMM1 〈x0,xA〉) I) @
+(* [0x1950] STOP ->1951 !FINE! *) (compile m ? STOP maINH I) @
+(* [0x1951] CLRX               *) (compile m ? CLR maINHX I) @
+(* [0x1952] CLRH               *) (compile m ? CLR maINHH I) @
+(* [0x1953] STHX 9,SP          *) (compile m ? STHX (maSP1 〈x0,x9〉) I) @
+(* [0x1956] CLRH               *) (compile m ? CLR maINHH I) @
+(* [0x1957] STHX 7,SP          *) (compile m ? STHX (maSP1 〈x0,x7〉) I) @
+(* [0x195A] INCX               *) (compile m ? INC maINHX I) @
+(* [0x195B] RTS                *) (compile m ? RTS maINH I) @
+
+(*
+static void _PUSH_ARGS_L(void) { ... }
+*)
+
+(* [0x195C] LDA 3,X    *) (compile m ? LDA (maIX1 〈x0,x3〉) I) @
+(* [0x195E] PSHA       *) (compile m ? PSHA maINH I) @
+(* [0x195F] LDA 2,X    *) (compile m ? LDA (maIX1 〈x0,x2〉) I) @
+(* [0x1961] PSHA       *) (compile m ? PSHA maINH I) @
+(* [0x1962] LDHX ,X    *) (compile m ? LDHX maIX0 I) @
+(* [0x1964] PSHX       *) (compile m ? PSHX maINH I) @
+(* [0x1965] PSHH       *) (compile m ? PSHH maINH I) @
+(* [0x1966] LDHX 7,SP  *) (compile m ? LDHX (maSP1 〈x0,x7〉) I) @
+(* [0x1969] LDA 3,X    *) (compile m ? LDA (maIX1 〈x0,x3〉) I) @
+(* [0x196B] STA 17,SP  *) (compile m ? STA (maSP1 〈x1,x1〉) I) @
+(* [0x196E] LDA 2,X    *) (compile m ? LDA (maIX1 〈x0,x2〉) I) @
+(* [0x1970] STA 16,SP  *) (compile m ? STA (maSP1 〈x1,x0〉) I) @
+(* [0x1973] LDHX ,X    *) (compile m ? LDHX maIX0 I) @
+(* [0x1975] STHX 14,SP *) (compile m ? STHX (maSP1 〈x0,xE〉) I) @
+(* [0x1978] LDHX 5,SP  *) (compile m ? LDHX (maSP1 〈x0,x5〉) I) @
+(* [0x197B] JMP ,X     *) (compile m ? JMP maINHX0ADD I) @
+
+(*
+static void _ENTER_BINARY_L(void) { ... }
+*)
+
+(* [0x197C] PSHA       *) (compile m ? PSHA maINH I) @
+(* [0x197D] PSHX       *) (compile m ? PSHX maINH I) @
+(* [0x197E] PSHH       *) (compile m ? PSHH maINH I) @
+(* [0x197F] PSHX       *) (compile m ? PSHX maINH I) @
+(* [0x1980] PSHH       *) (compile m ? PSHH maINH I) @
+(* [0x1981] LDHX 6,SP  *) (compile m ? LDHX (maSP1 〈x0,x6〉) I) @
+(* [0x1984] PSHX       *) (compile m ? PSHX maINH I) @
+(* [0x1985] PSHH       *) (compile m ? PSHH maINH I) @
+(* [0x1986] LDHX 10,SP *) (compile m ? LDHX (maSP1 〈x0,xA〉) I) @
+(* [0x1989] STHX 8,SP  *) (compile m ? STHX (maSP1 〈x0,x8〉) I) @
+(* [0x198C] LDHX 12,SP *) (compile m ? LDHX (maSP1 〈x0,xC〉) I) @
+(* [0x198F] JMP 0x195C *) (compile m ? JMP (maIMM2 〈〈x1,x9〉:〈x5,xC〉〉) I) @
+
+(*
+static void _IDIVMOD (char dummy_sgn, int j, int dummy, int i, ...) { ... }
+*)
+
+(* [0x1992] TST 4,SP            *) (compile m ? TST (maSP1 〈x0,x4〉) I) @
+(* [0x1995] BNE *+28 ; 0x19B1   *) (compile m ? BNE (maIMM1 〈x1,xA〉) I) @
+(* [0x1997] TSX                 *) (compile m ? TSX maINH I) @
+(* [0x1998] LDA 7,X             *) (compile m ? LDA (maIX1 〈x0,x7〉) I) @
+(* [0x199A] LDX 4,X             *) (compile m ? LDX (maIX1 〈x0,x4〉) I) @
+(* [0x199C] CLRH                *) (compile m ? CLR maINHH I) @
+(* [0x199D] DIV                 *) (compile m ? DIV maINH I) @
+(* [0x199E] STA 4,SP            *) (compile m ? STA (maSP1 〈x0,x4〉) I) @
+(* [0x19A1] LDA 9,SP            *) (compile m ? LDA (maSP1 〈x0,x9〉) I) @
+(* [0x19A4] DIV                 *) (compile m ? DIV maINH I) @
+(* [0x19A5] STA 5,SP            *) (compile m ? STA (maSP1 〈x0,x5〉) I) @
+(* [0x19A8] CLR 8,SP            *) (compile m ? CLR (maSP1 〈x0,x8〉) I) @
+(* [0x19AB] PSHH                *) (compile m ? PSHH maINH I) @
+(* [0x19AC] PULA                *) (compile m ? PULA maINH I) @
+(* [0x19AD] STA 9,SP            *) (compile m ? STA (maSP1 〈x0,x9〉) I) @
+(* [0x19B0] RTS                 *) (compile m ? RTS maINH I) @
+(* [0x19B1] CLRA                *) (compile m ? CLR maINHA I) @
+(* [0x19B2] PSHA                *) (compile m ? PSHA maINH I) @
+(* [0x19B3] LDX #0x08           *) (compile m ? LDX (maIMM1 〈x0,x8〉) I) @
+(* [0x19B5] CLC                 *) (compile m ? CLC maINH I) @
+(* [0x19B6] ROL 10,SP           *) (compile m ? ROL (maSP1 〈x0,xA〉) I) @
+(* [0x19B9] ROL 9,SP            *) (compile m ? ROL (maSP1 〈x0,x9〉) I) @
+(* [0x19BC] ROL 1,SP            *) (compile m ? ROL (maSP1 〈x0,x1〉) I) @
+(* [0x19BF] LDA 5,SP            *) (compile m ? LDA (maSP1 〈x0,x5〉) I) @
+(* [0x19C2] CMP 1,SP            *) (compile m ? CMP (maSP1 〈x0,x1〉) I) @
+(* [0x19C5] BHI *+31 ; 0x19E4   *) (compile m ? BHI (maIMM1 〈x1,xD〉) I) @
+(* [0x19C7] BNE *+10 ; 0x19D1   *) (compile m ? BNE (maIMM1 〈x0,x8〉) I) @
+(* [0x19C9] LDA 6,SP            *) (compile m ? LDA (maSP1 〈x0,x6〉) I) @
+(* [0x19CC] CMP 9,SP            *) (compile m ? CMP (maSP1 〈x0,x9〉) I) @
+(* [0x19CF] BHI *+21 ; 0x19E4   *) (compile m ? BHI (maIMM1 〈x1,x3〉) I) @
+(* [0x19D1] LDA 9,SP            *) (compile m ? LDA (maSP1 〈x0,x9〉) I) @
+(* [0x19D4] SUB 6,SP            *) (compile m ? SUB (maSP1 〈x0,x6〉) I) @
+(* [0x19D7] STA 9,SP            *) (compile m ? STA (maSP1 〈x0,x9〉) I) @
+(* [0x19DA] LDA 1,SP            *) (compile m ? LDA (maSP1 〈x0,x1〉) I) @
+(* [0x19DD] SBC 5,SP            *) (compile m ? SBC (maSP1 〈x0,x5〉) I) @
+(* [0x19E0] STA 1,SP            *) (compile m ? STA (maSP1 〈x0,x1〉) I) @
+(* [0x19E3] SEC                 *) (compile m ? SEC maINH I) @
+(* [0x19E4] DBNZX *-46 ; 0x19B6 *) (compile m ? DBNZ (maINHX_and_IMM1 〈xD,x0〉) I) @
+(* [0x19E6] LDA 10,SP           *) (compile m ? LDA (maSP1 〈x0,xA〉) I) @
+(* [0x19E9] ROLA                *) (compile m ? ROL maINHA I) @
+(* [0x19EA] STA 6,SP            *) (compile m ? STA (maSP1 〈x0,x6〉) I) @
+(* [0x19ED] LDA 9,SP            *) (compile m ? LDA (maSP1 〈x0,x9〉) I) @
+(* [0x19F0] STA 10,SP           *) (compile m ? STA (maSP1 〈x0,xA〉) I) @
+(* [0x19F3] PULA                *) (compile m ? PULA maINH I) @
+(* [0x19F4] STA 8,SP            *) (compile m ? STA (maSP1 〈x0,x8〉) I) @
+(* [0x19F7] CLR 4,SP            *) (compile m ? CLR (maSP1 〈x0,x4〉) I) @
+(* [0x19FA] RTS                 *) (compile m ? RTS maINH I) @
+
+(*
+static void _LADD_k_is_k_plus_j(_PARAM_BINARY_L) { ... }
+*)
+
+(* [0x19FB] TSX      *) (compile m ? TSX maINH I) @
+(* [0x19FC] LDA 18,X *) (compile m ? LDA (maIX1 〈x1,x2〉) I) @
+(* [0x19FE] ADD 5,X  *) (compile m ? ADD (maIX1 〈x0,x5〉) I) @
+(* [0x1A00] STA 18,X *) (compile m ? STA (maIX1 〈x1,x2〉) I) @
+(* [0x1A02] LDA 17,X *) (compile m ? LDA (maIX1 〈x1,x1〉) I) @
+(* [0x1A04] ADC 4,X  *) (compile m ? ADC (maIX1 〈x0,x4〉) I) @
+(* [0x1A06] STA 17,X *) (compile m ? STA (maIX1 〈x1,x1〉) I) @
+(* [0x1A08] LDA 16,X *) (compile m ? LDA (maIX1 〈x1,x0〉) I) @
+(* [0x1A0A] ADC 3,X  *) (compile m ? ADC (maIX1 〈x0,x3〉) I) @
+(* [0x1A0C] STA 16,X *) (compile m ? STA (maIX1 〈x1,x0〉) I) @
+(* [0x1A0E] LDA 15,X *) (compile m ? LDA (maIX1 〈x0,xF〉) I) @
+(* [0x1A10] ADC 2,X  *) (compile m ? ADC (maIX1 〈x0,x2〉) I) @
+(* [0x1A12] STA 15,X *) (compile m ? STA (maIX1 〈x0,xF〉) I) @
+(* [0x1A14] AIS #10  *) (compile m ? AIS (maIMM1 〈x0,xA〉) I) @
+(* [0x1A16] PULH     *) (compile m ? PULH maINH I) @
+(* [0x1A17] PULX     *) (compile m ? PULX maINH I) @
+(* [0x1A18] PULA     *) (compile m ? PULA maINH I) @
+(* [0x1A19] RTS      *) (compile m ? RTS maINH I) @
+
+(*
+void _IMODU_STAR08(int i, ...) { ... }
+*)
+
+(* [0x1A1A] AIS #-2    *) (compile m ? AIS (maIMM1 〈xF,xE〉) I) @
+(* [0x1A1C] STHX 1,SP  *) (compile m ? STHX (maSP1 〈x0,x1〉) I) @
+(* [0x1A1F] PSHA       *) (compile m ? PSHA maINH I) @
+(* [0x1A20] JSR 0x1992 *) (compile m ? JSR (maIMM2 〈〈x1,x9〉:〈x9,x2〉〉) I) @
+(* [0x1A23] PULA       *) (compile m ? PULA maINH I) @
+(* [0x1A24] AIS #2     *) (compile m ? AIS (maIMM1 〈x0,x2〉) I) @
+(* [0x1A26] LDHX 3,SP  *) (compile m ? LDHX (maSP1 〈x0,x3〉) I) @
+(* [0x1A29] RTS        *) (compile m ? RTS maINH I) @
+
+(*
+void _LADD(void) { ... }
+*)
+
+(* [0x1A2A] JSR 0x197C *) (compile m ? JSR (maIMM2 〈〈x1,x9〉:〈x7,xC〉〉) I) @
+(* [0x1A2D] JSR 0x19FB *) (compile m ? JSR (maIMM2 〈〈x1,x9〉:〈xF,xB〉〉) I) @
+
+(*
+void _POP32(void) { ... }
+*)
+
+(* [0x1A30] PSHA     *) (compile m ? PSHA maINH I) @
+(* [0x1A31] LDA 4,SP *) (compile m ? LDA (maSP1 〈x0,x4〉) I) @
+(* [0x1A34] STA ,X   *) (compile m ? STA maIX0 I) @
+(* [0x1A35] LDA 5,SP *) (compile m ? LDA (maSP1 〈x0,x5〉) I) @
+(* [0x1A38] STA 1,X  *) (compile m ? STA (maIX1 〈x0,x1〉) I) @
+(* [0x1A3A] LDA 6,SP *) (compile m ? LDA (maSP1 〈x0,x6〉) I) @
+(* [0x1A3D] STA 2,X  *) (compile m ? STA (maIX1 〈x0,x2〉) I) @
+(* [0x1A3F] LDA 7,SP *) (compile m ? LDA (maSP1 〈x0,x7〉) I) @
+(* [0x1A42] STA 3,X  *) (compile m ? STA (maIX1 〈x0,x3〉) I) @
+(* [0x1A44] PULA     *) (compile m ? PULA maINH I) @
+(* [0x1A45] PULH     *) (compile m ? PULH maINH I) @
+(* [0x1A46] PULX     *) (compile m ? PULX maINH I) @
+(* [0x1A47] AIS #4   *) (compile m ? AIS (maIMM1 〈x0,x4〉) I) @
+(* [0x1A49] JMP ,X   *) (compile m ? JMP maINHX0ADD I)
+
+(* attraverso simulazione in CodeWarrior si puo' enunciare che dopo
+   80+(65*n*(n+1)*(n+2))/6 si sara' entrati in stato STOP corrispondente
+   AFTER: HX=num PC=0x1951 I=0 *)
+ ).
+
+(* creazione del processore+caricamento+impostazione registri *)
+ndefinition dTest_HCS08_gNum_status ≝
+λt:memory_impl.
+λI_op:bool.
+λA_op:byte8.
+λHX_op:word16.
+λPC_op:word16.
+λaddr:word16.
+λelems:word16.
+λdata:list byte8.
+ setweak_i_flag HCS08 t (* I<-I_op *)
+  (set_acc_8_low_reg HCS08 t (* A<-A_op *)
+   (set_z_flag HCS08 t (* Z<-true *)
+    (setweak_sp_reg HCS08 t (* SP<-0x016F *)
+     (setweak_indX_16_reg HCS08 t (* H:X<-HX_op *)
+      (set_pc_reg HCS08 t (* PC<-PC_op *)
+       (start_of_mcu_version_HCS08
+        MC9S08GB60 t
+        (load_from_source_at t (* carica data in RAM:dTest_HCS08_RAM *)
+         (load_from_source_at t (zero_memory t) (* carica source in ROM:addr *)
+           (dTest_HCS08_cSort_source elems) addr)
+          data dTest_HCS08_RAM)
+        (build_memory_type_of_mcu_version (FamilyHCS08 MC9S08GB60) t)
+        (mk_byte8 x0 x0) (mk_byte8 x0 x0) (* non deterministici tutti a 0 *)
+        false false false false false false) (* non deterministici tutti a 0 *)
+       PC_op)
+      HX_op)
+     (mk_word16 (mk_byte8 x0 x1) (mk_byte8 x6 xF)))
+    true)
+   A_op)
+  I_op.
+
+(* NUMERI AUREI: Somma divisori(x)=x, fino a 0xFFFF sono 6/28/496/8128 *)
+ndefinition dTest_HCS08_gNum_aurei ≝
+λnum:word16.match gt_w16 num 〈〈x1,xF〉:〈xC,x0〉〉 with
+ [ true ⇒ [ 〈x0,x0〉 ; 〈x0,x6〉 ; 〈x0,x0〉 ; 〈x1,xC〉 ; 〈x0,x1〉 ; 〈xF,x0〉 ; 〈x1,xF〉 ; 〈xC,x0〉 ]
+ | false ⇒ match gt_w16 num 〈〈x0,x1〉:〈xF,x0〉〉 with
+  [ true ⇒ [ 〈x0,x0〉 ; 〈x0,x6〉 ; 〈x0,x0〉 ; 〈x1,xC〉 ; 〈x0,x1〉 ; 〈xF,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ]
+  | false ⇒ match gt_w16 num 〈〈x0,x0〉:〈x1,xC〉〉 with
+   [ true ⇒ [ 〈x0,x0〉 ; 〈x0,x6〉 ; 〈x0,x0〉 ; 〈x1,xC〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ]
+   | false ⇒ match gt_w16 num 〈〈x0,x0〉:〈x0,x6〉〉 with
+    [ true ⇒ [ 〈x0,x0〉 ; 〈x0,x6〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ]
+    | false ⇒ [ 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ]
+    ]
+   ]
+  ]
+ ] @ [ 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉
+     ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉
+     ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ; 〈x0,x0〉 ].
+
+(* esecuzione execute k*(n+2) *)
+nlet rec dTest_HCS08_gNum_execute1 (m:mcu_type) (t:memory_impl) (s:tick_result (any_status m t)) (n,ntot:nat) on n ≝
+ match s with
+  [ TickERR s' error ⇒ TickERR ? s' error
+  | TickSUSP s' susp ⇒ TickSUSP ? s' susp
+  | TickOK s' ⇒ match n with
+   [ O ⇒ TickOK ? s'
+   | S n' ⇒ dTest_HCS08_gNum_execute1 m t (execute m t (TickOK ? s') (ntot + nat2)) n' ntot ]
+  ].
+
+(* esecuzione execute k*(n+1)*(n+2) *)
+nlet rec dTest_HCS08_gNum_execute2 (m:mcu_type) (t:memory_impl) (s:tick_result (any_status m t)) (n,ntot:nat) on n ≝
+ match s with
+  [ TickERR s' error ⇒ TickERR ? s' error
+  | TickSUSP s' susp ⇒ TickSUSP ? s' susp
+  | TickOK s' ⇒ match n with
+   [ O ⇒ TickOK ? s'
+   | S n' ⇒ dTest_HCS08_gNum_execute2 m t (dTest_HCS08_gNum_execute1 m t (TickOK ? s') (ntot + nat1) ntot) n' ntot ]
+  ].
+
+(* esecuzione execute k*n*(n+1)*(n+2) *)
+nlet rec dTest_HCS08_gNum_execute3 (m:mcu_type) (t:memory_impl) (s:tick_result (any_status m t)) (n,ntot:nat) on n ≝
+ match s with
+  [ TickERR s' error ⇒ TickERR ? s' error
+  | TickSUSP s' susp ⇒ TickSUSP ? s' susp
+  | TickOK s' ⇒ match n with
+   [ O ⇒ TickOK ? s'
+   | S n' ⇒ dTest_HCS08_gNum_execute3 m t (dTest_HCS08_gNum_execute2 m t (TickOK ? s') ntot ntot) n' ntot ]
+  ].
+
+(* esecuzione execute 80+11*n*(n+1)*(n+2) *)
+ndefinition dTest_HCS08_gNum_execute4 ≝
+λm:mcu_type.λt:memory_impl.λs:tick_result (any_status m t).λntot:nat.
+ match s with
+  [ TickERR s' error ⇒ TickERR ? s' error
+  | TickSUSP s' susp ⇒ TickSUSP ? s' susp
+  | TickOK s' ⇒ execute m t (dTest_HCS08_gNum_execute3 m t (TickOK ? s') nat11 ntot) nat80
+  ].
+
+(* parametrizzazione dell'enunciato del teorema parziale *)
+nlemma dTest_HCS08_gNum_aux ≝
+λt:memory_impl.λnum:word16.
+ (* 2) match di esecuzione su tempo in forma di upperbound *)
+ match dTest_HCS08_gNum_execute4 HCS08 t
+  (TickOK ? (dTest_HCS08_gNum_status t true 〈x0,x0〉 〈〈x1,xA〉:〈x0,x0〉〉 〈〈x1,x8〉:〈xB,xE〉〉 〈〈x1,x8〉:〈xB,xE〉〉 num dTest_zeros))
+  (* tempo di esecuzione 80+11*n*(n+1)*(n+2) *)
+  (nat_of_w16 num) with
+   [ TickERR s _ ⇒ None ?
+   (* azzeramento tutta RAM tranne dati *)
+   | TickSUSP s _ ⇒ Some ? (set_mem_desc HCS08 t s (load_from_source_at t (mem_desc HCS08 t s) dTest_zeros3K 〈〈x0,x1〉:〈x2,x0〉〉))
+   | TickOK s ⇒ None ?
+   ] =
+  Some ? (dTest_HCS08_gNum_status t false 〈x0,x0〉 num 〈〈x1,x9〉:〈x5,x1〉〉 〈〈x1,x8〉:〈xB,xE〉〉 num (dTest_HCS08_gNum_aurei num)).
+
+ndefinition gNumCalc ≝
+λnum:word16.
+ match dTest_HCS08_gNum_execute4 HCS08 MEM_TREE
+  (TickOK ? (dTest_HCS08_gNum_status MEM_TREE true 〈x0,x0〉 〈〈x1,xA〉:〈x0,x0〉〉 〈〈x1,x8〉:〈xB,xE〉〉 〈〈x1,x8〉:〈xB,xE〉〉 num dTest_zeros))
+  (nat_of_w16 num) with
+   [ TickERR s _ ⇒ None ?
+   | TickSUSP s _ ⇒ Some ? (set_mem_desc HCS08 MEM_TREE s (load_from_source_at MEM_TREE (mem_desc HCS08 MEM_TREE s) dTest_zeros3K 〈〈x0,x1〉:〈x2,x0〉〉))
+   | TickOK s ⇒ None ?
+   ].
+
+ndefinition gNumNoCalc ≝
+λnum:word16.
+ Some ? (dTest_HCS08_gNum_status MEM_TREE false 〈x0,x0〉 num 〈〈x1,x9〉:〈x5,x1〉〉 〈〈x1,x8〉:〈xB,xE〉〉 num (dTest_HCS08_gNum_aurei num)).
+
+ndefinition gNumCalc1    ≝ gNumCalc 〈〈x0,x0〉:〈x0,x1〉〉.
+ndefinition gNumCalc2    ≝ gNumCalc 〈〈x0,x0〉:〈x0,x2〉〉.
+ndefinition gNumCalc5    ≝ gNumCalc 〈〈x0,x0〉:〈x0,x5〉〉.
+ndefinition gNumCalc10   ≝ gNumCalc 〈〈x0,x0〉:〈x0,xA〉〉.
+ndefinition gNumCalc20   ≝ gNumCalc 〈〈x0,x0〉:〈x1,x4〉〉.
+ndefinition gNumCalc50   ≝ gNumCalc 〈〈x0,x0〉:〈x3,x2〉〉.
+ndefinition gNumCalc100  ≝ gNumCalc 〈〈x0,x0〉:〈x6,x4〉〉.
+ndefinition gNumCalc250  ≝ gNumCalc 〈〈x0,x0〉:〈xF,xA〉〉.
+ndefinition gNumCalc500  ≝ gNumCalc 〈〈x0,x1〉:〈xF,x4〉〉.
+ndefinition gNumCalc1000 ≝ gNumCalc 〈〈x0,x3〉:〈xE,x8〉〉.
+
+ndefinition gNumNoCalc1    ≝ gNumNoCalc 〈〈x0,x0〉:〈x0,x1〉〉.
+ndefinition gNumNoCalc2    ≝ gNumNoCalc 〈〈x0,x0〉:〈x0,x2〉〉.
+ndefinition gNumNoCalc5    ≝ gNumNoCalc 〈〈x0,x0〉:〈x0,x5〉〉.
+ndefinition gNumNoCalc10   ≝ gNumNoCalc 〈〈x0,x0〉:〈x0,xA〉〉.
+ndefinition gNumNoCalc20   ≝ gNumNoCalc 〈〈x0,x0〉:〈x1,x4〉〉.
+ndefinition gNumNoCalc50   ≝ gNumNoCalc 〈〈x0,x0〉:〈x3,x2〉〉.
+ndefinition gNumNoCalc100  ≝ gNumNoCalc 〈〈x0,x0〉:〈x6,x4〉〉.
+ndefinition gNumNoCalc250  ≝ gNumNoCalc 〈〈x0,x0〉:〈xF,xA〉〉.
+ndefinition gNumNoCalc500  ≝ gNumNoCalc 〈〈x0,x1〉:〈xF,x4〉〉.
+ndefinition gNumNoCalc1000 ≝ gNumNoCalc 〈〈x0,x3〉:〈xE,x8〉〉.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale_tests/medium_tests_tools.ma b/helm/software/matita/contribs/ng_assembly/freescale_tests/medium_tests_tools.ma
new file mode 100755 (executable)
index 0000000..da59879
--- /dev/null
@@ -0,0 +1,592 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale/multivm.ma".
+
+(* ********* *)
+(* INDIRIZZI *)
+(* ********* *)
+
+(* specifico per MC9S08GB60 in modo da caricare codice compilato da CodeWarrior *)
+(* l'obbiettivo e' dimostrare una routine scritta in C *)
+(* passo 1 e' formalizzare l'uso di 3Kb dei 4Kb di RAM [0x0100-0x0CFF] *)
+ndefinition dTest_HCS08_RAM ≝ 〈〈x0,x1〉:〈x0,x0〉〉.
+ndefinition dTest_HCS08_prog ≝ 〈〈x1,x8〉:〈xC,x8〉〉.
+
+(* ***** *)
+(* TOOLS *)
+(* ***** *)
+
+(* visita di un albero da 256B di elementi: ln16(256)=2 passaggi *)
+ndefinition dTest_visit ≝
+λdata:Array16T (Array16T (list byte8)).λaddr:byte8.
+ getn_array16T (b8l addr) ?
+  (getn_array16T (b8h addr) ? data).
+
+(* scrittura di un elemento in un albero da 256B *)
+ndefinition dTest_update ≝
+λdata:Array16T (Array16T (list byte8)).λaddr:byte8.λv:list byte8.
+ let lev2 ≝ getn_array16T (b8h addr) ? data in
+ setn_array16T (b8h addr) ? data
+  (setn_array16T (b8l addr) ? lev2 v) .
+
+(* array a 0 *)
+ndefinition dTest_zero_array ≝
+let elem ≝ nil byte8 in
+let lev2 ≝ array_16T ? 
+           elem elem elem elem elem elem elem elem
+           elem elem elem elem elem elem elem elem
+           in
+let lev1 ≝ array_16T ?
+           lev2 lev2 lev2 lev2 lev2 lev2 lev2 lev2
+           lev2 lev2 lev2 lev2 lev2 lev2 lev2 lev2
+           in
+lev1.
+
+(* incrementa n-simo elemento *)
+ndefinition dTest_inc ≝
+λdata:Array16T (Array16T (list byte8)).λaddr:byte8.
+ dTest_update data addr ((dTest_visit data addr)@[ addr ]).
+
+(* costruisce una lista a partire dai conteggi per elemento *)
+ndefinition dTest_build_list_from_count ≝
+λdata:Array16T (Array16T (list byte8)).
+ let aux1 ≝ λparam1:Array16T (list byte8).
+  match param1 with
+   [ array_16T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15 ⇒
+    e00@e01@e02@e03@e04@e05@e06@e07@e08@e09@e10@e11@e12@e13@e14@e15 ] in
+ let aux2 ≝ λparam2:Array16T (Array16T (list byte8)).
+  match param2 with
+   [ array_16T e00 e01 e02 e03 e04 e05 e06 e07 e08 e09 e10 e11 e12 e13 e14 e15 ⇒
+    (aux1 e00)@(aux1 e01)@(aux1 e02)@(aux1 e03)@(aux1 e04)@(aux1 e05)@(aux1 e06)@(aux1 e07)@
+    (aux1 e08)@(aux1 e09)@(aux1 e10)@(aux1 e11)@(aux1 e12)@(aux1 e13)@(aux1 e14)@(aux1 e15) ] in
+ aux2 data.
+
+(* ci sono ora tutti gli elementi per definire l'ordinamento *)
+(* di una lista di byte8 secondo il counting sort *)
+nlet rec byte8_list_ordering_aux (source:list byte8) (count:Array16T (Array16T (list byte8))) on source ≝
+ match source with
+  [ nil ⇒ dTest_build_list_from_count count
+  | cons hd tl ⇒ byte8_list_ordering_aux tl (dTest_inc count hd)
+  ].
+
+ndefinition byte8_list_ordering ≝
+λsource:list byte8.byte8_list_ordering_aux source dTest_zero_array.
+
+(* strlen esadecimale limitato, considerando overflow! *)
+nlet rec byte8_bounded_strlen_aux (source:list byte8) (count,limit:word16) on source ≝
+ match source with
+  [ nil ⇒ True
+  | cons _ tl ⇒ match eq_w16 count 〈〈xF,xF〉:〈xF,xF〉〉 with
+   [ true ⇒ False
+   | false ⇒ match le_w16 (succ_w16 count) limit with
+    [ true ⇒ byte8_bounded_strlen_aux tl (succ_w16 count) limit
+    | false ⇒ False
+    ]
+   ]
+  ].
+
+ndefinition byte8_bounded_strlen ≝
+λsource:list byte8.λlimit:word16.
+ byte8_bounded_strlen_aux source 〈〈x0,x0〉:〈x0,x0〉〉 limit.
+
+(* strlen esadecimale normale *)
+nlet rec byte8_strlen_aux (source:list byte8) (count:word16) on source ≝
+ match source with
+  [ nil ⇒ count
+  | cons _ tl ⇒ byte8_strlen_aux tl (succ_w16 count)
+  ].
+
+ndefinition byte8_strlen ≝
+λsource:list byte8.
+ byte8_strlen_aux source 〈〈x0,x0〉:〈x0,x0〉〉.
+
+(* hex dump: memory -> list byte8 *)
+nlet rec byte8_hexdump_aux (t:memory_impl) (mem:aux_mem_type t) (inf:word16) (count:nat) (out:list byte8) on count ≝
+ match count with
+  [ O ⇒ out
+  | S n ⇒ byte8_hexdump_aux t mem (succ_w16 inf) n (out@[ mem_read_abs t mem inf ])
+  ].
+
+ndefinition byte8_hexdump ≝
+λt:memory_impl.λmem:aux_mem_type t.λinf:word16.λcount:nat.
+ byte8_hexdump_aux t mem inf count [].
+
+(* ************* *)
+(* TEST PATTERNS *)
+(* ************* *)
+
+(* lista di 3072 numeri random generati da Mathematica, in blocchi da 32 *)
+ndefinition dTest_random_ex00 ≝
+[〈x8,x1〉;〈x5,xE〉;〈x7,x6〉;〈xD,x1〉;〈x7,x5〉;〈x1,x0〉;〈x8,x5〉;〈x9,x0〉;〈x1,xF〉;〈x1,x2〉;〈xE,x2〉;〈x3,xC〉;〈x1,xD〉;〈x0,x6〉;〈x3,xC〉;〈xD,x1〉
+;〈x8,x3〉;〈xE,xB〉;〈x7,x2〉;〈x1,xF〉;〈x9,x0〉;〈xF,x0〉;〈x4,x7〉;〈xA,x3〉;〈xD,x0〉;〈x4,x6〉;〈xC,x5〉;〈x3,x2〉;〈xC,x9〉;〈x0,xB〉;〈x1,xB〉;〈x7,x3〉 ].
+
+ndefinition dTest_random_ex01 ≝
+[〈x1,x1〉;〈xA,xF〉;〈xD,x2〉;〈xB,xF〉;〈x0,xB〉;〈xB,xC〉;〈x0,x8〉;〈xE,x5〉;〈xF,xE〉;〈xA,xC〉;〈xF,xC〉;〈x9,x4〉;〈x3,x4〉;〈x8,x8〉;〈x2,x8〉;〈xD,xB〉
+;〈xD,x3〉;〈x3,xD〉;〈x3,x8〉;〈x6,xA〉;〈x4,xD〉;〈x7,x4〉;〈x4,x9〉;〈x7,xE〉;〈x6,xF〉;〈x4,xD〉;〈x3,xD〉;〈x3,xA〉;〈xC,x2〉;〈xD,x3〉;〈x3,x6〉;〈x7,x0〉 ].
+
+ndefinition dTest_random_ex02 ≝
+[〈x8,x0〉;〈xC,x9〉;〈x3,xB〉;〈x5,x2〉;〈x8,xF〉;〈x1,xE〉;〈x8,x4〉;〈x5,x2〉;〈x2,xD〉;〈xA,xF〉;〈x1,xB〉;〈x0,x1〉;〈x3,x5〉;〈x7,x2〉;〈x1,x0〉;〈x0,x7〉
+;〈x5,xD〉;〈xA,xB〉;〈xE,x0〉;〈x7,x6〉;〈xB,xD〉;〈x3,xC〉;〈x0,xD〉;〈xC,xE〉;〈xB,x7〉;〈x9,xD〉;〈xA,x9〉;〈xF,x3〉;〈xC,x1〉;〈x9,x3〉;〈x8,xC〉;〈x4,xE〉 ].
+
+ndefinition dTest_random_ex03 ≝
+[〈xF,x8〉;〈xC,x3〉;〈x1,x3〉;〈x3,xA〉;〈xA,x2〉;〈xB,xD〉;〈x1,x0〉;〈x9,xB〉;〈x5,xC〉;〈xC,x8〉;〈xE,x5〉;〈xC,x8〉;〈xA,x6〉;〈xF,xB〉;〈x1,x3〉;〈xC,x8〉
+;〈x6,x4〉;〈x0,x9〉;〈xD,x6〉;〈xD,x7〉;〈x3,x9〉;〈xF,x9〉;〈xE,x4〉;〈x0,x3〉;〈x4,x9〉;〈xC,xE〉;〈x7,x1〉;〈x5,x7〉;〈x3,x4〉;〈x2,xE〉;〈xA,x3〉;〈x5,x3〉 ].
+
+ndefinition dTest_random_ex04 ≝
+[〈xF,x9〉;〈x2,xA〉;〈xF,x0〉;〈xE,x1〉;〈x6,x6〉;〈x8,x9〉;〈x2,xE〉;〈x8,x6〉;〈xC,x7〉;〈x2,xD〉;〈x1,x2〉;〈xD,x5〉;〈x4,xA〉;〈x7,x9〉;〈x6,xD〉;〈x1,xB〉
+;〈x4,x1〉;〈x9,x4〉;〈x6,xC〉;〈x6,xD〉;〈xF,x4〉;〈x5,xD〉;〈x8,xB〉;〈xB,xE〉;〈xC,x8〉;〈xE,x5〉;〈xA,x4〉;〈xB,xA〉;〈xB,x1〉;〈x2,x1〉;〈x5,x0〉;〈x6,xB〉 ].
+
+ndefinition dTest_random_ex05 ≝
+[〈x9,x5〉;〈x0,x6〉;〈x4,x5〉;〈xE,x0〉;〈x0,xF〉;〈x5,xA〉;〈xC,xE〉;〈xC,x8〉;〈x8,x2〉;〈x4,xF〉;〈xC,x2〉;〈xF,x5〉;〈xF,x8〉;〈x1,x3〉;〈xD,xA〉;〈x2,xB〉
+;〈x7,x9〉;〈xB,xF〉;〈xA,x4〉;〈x5,xA〉;〈xD,x2〉;〈x7,x6〉;〈x8,xD〉;〈x1,xF〉;〈x1,x5〉;〈x5,xA〉;〈xD,xE〉;〈x2,x3〉;〈x9,xD〉;〈x7,xE〉;〈x6,x7〉;〈x6,x3〉 ].
+
+ndefinition dTest_random_ex06 ≝
+[〈x1,x1〉;〈xF,x5〉;〈x2,x4〉;〈xD,x6〉;〈x6,xA〉;〈x0,xC〉;〈x7,xF〉;〈x1,x2〉;〈xD,x6〉;〈xE,xE〉;〈xB,xA〉;〈x4,x4〉;〈x3,x9〉;〈x9,x2〉;〈x6,x6〉;〈xE,xA〉
+;〈x2,x3〉;〈x4,x4〉;〈xC,xF〉;〈x7,x4〉;〈x6,xB〉;〈x8,x3〉;〈x7,x7〉;〈x0,x4〉;〈x6,x4〉;〈xB,x3〉;〈x3,xC〉;〈x2,x6〉;〈xF,xC〉;〈xD,x5〉;〈x4,x1〉;〈xB,x7〉 ].
+
+ndefinition dTest_random_ex07 ≝
+[〈x2,x4〉;〈xE,x0〉;〈xB,x4〉;〈x1,x3〉;〈x3,x2〉;〈x4,x5〉;〈x1,x8〉;〈xD,xB〉;〈x0,x0〉;〈xB,x6〉;〈x5,xF〉;〈x3,xA〉;〈xB,x7〉;〈x4,xF〉;〈xB,x4〉;〈xD,xF〉
+;〈xF,x4〉;〈x1,xA〉;〈x1,x0〉;〈xE,x9〉;〈xC,x5〉;〈x2,xC〉;〈xB,xC〉;〈x5,xB〉;〈x0,x5〉;〈x4,xA〉;〈x5,x2〉;〈xC,x0〉;〈x1,xF〉;〈x5,x9〉;〈xF,x2〉;〈xE,x5〉 ].
+
+ndefinition dTest_random_ex08 ≝
+[〈x9,x7〉;〈x5,x1〉;〈xF,x7〉;〈x3,xC〉;〈x7,x7〉;〈x8,x1〉;〈x7,xC〉;〈xB,x0〉;〈x1,xD〉;〈x1,xA〉;〈x7,xB〉;〈x4,x7〉;〈x7,x9〉;〈xC,x2〉;〈x3,xF〉;〈xD,x3〉
+;〈xB,x6〉;〈xD,x7〉;〈xC,x9〉;〈x9,x2〉;〈x0,xD〉;〈x7,xF〉;〈x0,xB〉;〈x7,x5〉;〈x0,xE〉;〈x5,x1〉;〈x9,xF〉;〈x4,xC〉;〈xE,x5〉;〈xD,x0〉;〈xC,x1〉;〈x3,x9〉 ].
+
+ndefinition dTest_random_ex09 ≝
+[〈x7,xF〉;〈xE,xA〉;〈x4,x1〉;〈x0,x5〉;〈x0,x8〉;〈x7,xE〉;〈x7,x6〉;〈x2,xF〉;〈x6,x2〉;〈x7,x1〉;〈xF,x8〉;〈x3,x8〉;〈xB,x6〉;〈x7,x0〉;〈xD,xD〉;〈xD,x0〉
+;〈xA,xD〉;〈x7,x8〉;〈x3,xD〉;〈x7,xB〉;〈xC,xC〉;〈x6,xD〉;〈x3,xF〉;〈xA,xC〉;〈xC,x7〉;〈x6,xE〉;〈xF,xF〉;〈x4,x5〉;〈xC,x1〉;〈x7,x4〉;〈xB,xF〉;〈x2,x9〉 ].
+
+ndefinition dTest_random_ex0A ≝
+[〈x4,x9〉;〈xC,x5〉;〈x7,xC〉;〈x2,xD〉;〈xF,x2〉;〈xC,xC〉;〈xF,xA〉;〈x5,x8〉;〈xA,xC〉;〈x5,x8〉;〈x5,x1〉;〈x0,xE〉;〈x4,x8〉;〈x7,x0〉;〈x4,x1〉;〈xE,xD〉
+;〈x9,x5〉;〈xB,x4〉;〈x4,x7〉;〈xF,x1〉;〈x8,x1〉;〈xE,x4〉;〈x4,x0〉;〈x5,x4〉;〈x7,xB〉;〈xA,x1〉;〈xD,x2〉;〈x0,x2〉;〈xC,x5〉;〈x7,xD〉;〈x7,xA〉;〈xF,x1〉 ].
+
+ndefinition dTest_random_ex0B ≝
+[〈x0,x0〉;〈x8,xD〉;〈x6,x6〉;〈xB,x0〉;〈xA,x9〉;〈x7,xA〉;〈x2,xB〉;〈x2,xC〉;〈x6,xF〉;〈x5,xF〉;〈x6,xF〉;〈x4,xE〉;〈x2,xB〉;〈x1,x1〉;〈xF,xF〉;〈x4,x7〉
+;〈x7,xF〉;〈xC,xF〉;〈xD,x3〉;〈x8,x5〉;〈xB,x8〉;〈x4,xD〉;〈x9,x9〉;〈x8,x3〉;〈x7,x6〉;〈xE,x8〉;〈x3,x0〉;〈xF,x8〉;〈xD,x0〉;〈x5,x9〉;〈xB,x8〉;〈x7,x1〉 ].
+
+ndefinition dTest_random_ex0C ≝
+[〈x5,x7〉;〈xA,xF〉;〈xB,x5〉;〈xD,x5〉;〈xF,xC〉;〈x8,x2〉;〈x1,x6〉;〈x1,x0〉;〈xB,x3〉;〈xC,x1〉;〈x1,xA〉;〈x0,x1〉;〈x1,x1〉;〈xF,xF〉;〈x5,x9〉;〈x2,x4〉
+;〈xC,x5〉;〈x7,x2〉;〈xD,x8〉;〈xD,x0〉;〈xA,xD〉;〈xF,xE〉;〈xD,x7〉;〈x1,x1〉;〈xC,xE〉;〈xF,x9〉;〈xB,x8〉;〈x7,x7〉;〈x3,xA〉;〈x1,xF〉;〈x6,x1〉;〈x1,xB〉 ].
+
+ndefinition dTest_random_ex0D ≝
+[〈xB,xB〉;〈x5,x5〉;〈x8,x0〉;〈x7,xC〉;〈x2,x5〉;〈x3,x4〉;〈x8,x9〉;〈xF,x2〉;〈xC,x9〉;〈xD,xF〉;〈x3,x5〉;〈xC,x5〉;〈x1,x2〉;〈xF,x0〉;〈x0,x5〉;〈xD,xE〉
+;〈x2,x6〉;〈x4,x9〉;〈xB,x7〉;〈x3,x9〉;〈x0,x5〉;〈xC,x2〉;〈xD,xB〉;〈xF,xC〉;〈x9,xF〉;〈xA,x9〉;〈x6,x6〉;〈xA,xD〉;〈x4,xA〉;〈x3,xF〉;〈xB,xF〉;〈x6,xD〉 ].
+
+ndefinition dTest_random_ex0E ≝
+[〈x8,x7〉;〈x6,xA〉;〈xB,x1〉;〈x3,xE〉;〈xB,x6〉;〈x0,xE〉;〈x7,xA〉;〈x3,xB〉;〈x4,x5〉;〈xE,x9〉;〈xC,xE〉;〈x6,xA〉;〈x6,xA〉;〈x7,x0〉;〈x6,x0〉;〈x6,xA〉
+;〈x2,xC〉;〈xD,x2〉;〈xB,x8〉;〈x3,x6〉;〈x2,x1〉;〈x0,x0〉;〈x5,x4〉;〈x3,x1〉;〈x6,x0〉;〈x1,xB〉;〈x4,xC〉;〈xC,xA〉;〈xB,xE〉;〈x5,xF〉;〈x8,x1〉;〈xB,x7〉 ].
+
+ndefinition dTest_random_ex0F ≝
+[〈x9,xB〉;〈x2,x6〉;〈x9,x4〉;〈x2,xB〉;〈x4,x1〉;〈x2,xB〉;〈x9,x8〉;〈x6,x3〉;〈x6,x6〉;〈x6,x5〉;〈x4,x6〉;〈x2,x3〉;〈xE,x5〉;〈x0,x7〉;〈x9,xE〉;〈x1,xC〉
+;〈x3,x8〉;〈x5,xC〉;〈x9,x7〉;〈x6,x3〉;〈x5,x3〉;〈x6,x6〉;〈x0,x8〉;〈x5,xD〉;〈x0,x8〉;〈xD,xB〉;〈x6,xE〉;〈x5,x6〉;〈x7,x0〉;〈x3,x2〉;〈x4,x5〉;〈x0,x2〉 ].
+
+ndefinition dTest_random_ex10 ≝
+[〈x6,x3〉;〈x7,x2〉;〈x9,xC〉;〈xD,x9〉;〈x5,x0〉;〈x0,x6〉;〈x5,x9〉;〈x1,x7〉;〈x6,x8〉;〈xD,x2〉;〈xD,x7〉;〈x8,xE〉;〈x6,x9〉;〈x5,xF〉;〈x8,x1〉;〈x8,x4〉
+;〈x8,x7〉;〈xD,xC〉;〈x9,x8〉;〈xE,x5〉;〈xB,x5〉;〈xC,x3〉;〈x2,x5〉;〈x6,xC〉;〈x9,x2〉;〈xD,xD〉;〈x2,xA〉;〈xD,x1〉;〈x1,x4〉;〈x7,xE〉;〈x1,x7〉;〈xB,x2〉 ].
+
+ndefinition dTest_random_ex11 ≝
+[〈x9,x8〉;〈x5,x5〉;〈xF,xC〉;〈x3,xD〉;〈x8,xD〉;〈xE,xF〉;〈x8,x1〉;〈xB,x8〉;〈xB,xB〉;〈x5,x1〉;〈x0,x0〉;〈xB,x4〉;〈x2,xE〉;〈x3,x0〉;〈x6,x0〉;〈x7,xE〉
+;〈x9,x0〉;〈xE,x3〉;〈xF,x4〉;〈x7,x2〉;〈x1,xC〉;〈xB,x3〉;〈x7,x8〉;〈x1,xB〉;〈x9,xF〉;〈x1,xB〉;〈x0,x3〉;〈xA,x3〉;〈x0,x5〉;〈xD,xE〉;〈x3,x8〉;〈xB,xA〉 ].
+
+ndefinition dTest_random_ex12 ≝
+[〈x0,xE〉;〈xE,xD〉;〈xE,xC〉;〈x1,xF〉;〈x3,x8〉;〈xE,x3〉;〈xF,x7〉;〈xA,xA〉;〈xE,x9〉;〈x3,xD〉;〈xF,xF〉;〈xF,x3〉;〈x1,x4〉;〈x2,xC〉;〈x8,x8〉;〈x6,x1〉
+;〈x3,x0〉;〈xA,xB〉;〈x1,x8〉;〈xD,xC〉;〈xF,xE〉;〈x6,xA〉;〈x2,x9〉;〈xF,x1〉;〈xC,xB〉;〈x9,x0〉;〈x7,x8〉;〈x9,x9〉;〈x1,xF〉;〈x2,x8〉;〈xF,x9〉;〈xC,xB〉 ].
+
+ndefinition dTest_random_ex13 ≝
+[〈x1,x4〉;〈x8,x4〉;〈xF,x3〉;〈xD,x6〉;〈x7,xE〉;〈xE,xC〉;〈x5,x6〉;〈xC,xE〉;〈xD,xA〉;〈x5,xE〉;〈x6,x1〉;〈xF,x1〉;〈x6,x6〉;〈x6,x9〉;〈x9,x3〉;〈x5,x9〉
+;〈x3,xC〉;〈x1,xD〉;〈x6,xB〉;〈xF,x4〉;〈x5,x9〉;〈x4,xD〉;〈x3,x8〉;〈xA,x9〉;〈x3,xB〉;〈x7,xF〉;〈xB,x2〉;〈xE,xC〉;〈xA,xE〉;〈xF,x6〉;〈xB,x2〉;〈x2,x2〉 ].
+
+ndefinition dTest_random_ex14 ≝
+[〈x6,x4〉;〈x2,x7〉;〈x6,xC〉;〈x2,x0〉;〈xE,xE〉;〈x5,x1〉;〈x3,xE〉;〈x8,x8〉;〈xD,xD〉;〈xC,x1〉;〈xD,xC〉;〈xC,x1〉;〈x6,x6〉;〈x6,x1〉;〈x4,x2〉;〈x7,x7〉
+;〈x3,x6〉;〈x0,x8〉;〈x2,x9〉;〈x6,x0〉;〈xA,x9〉;〈xF,xC〉;〈x7,xC〉;〈xA,x7〉;〈xB,x4〉;〈xF,xC〉;〈x8,x7〉;〈x1,xD〉;〈x6,xC〉;〈xA,x2〉;〈x3,xF〉;〈x1,xD〉 ].
+
+ndefinition dTest_random_ex15 ≝
+[〈x1,x7〉;〈x0,xF〉;〈x0,x2〉;〈x2,x6〉;〈xA,x2〉;〈x6,xA〉;〈x5,xC〉;〈xE,xD〉;〈x2,x7〉;〈xC,x5〉;〈x7,xB〉;〈xF,x5〉;〈x9,xC〉;〈x8,x5〉;〈x6,x3〉;〈x5,x6〉
+;〈xC,x3〉;〈x4,xB〉;〈x1,xB〉;〈xA,x0〉;〈x1,xB〉;〈x8,x9〉;〈x3,x5〉;〈xD,x6〉;〈xD,x9〉;〈xD,xD〉;〈x2,xE〉;〈x6,x2〉;〈x7,x5〉;〈xE,x7〉;〈x1,x8〉;〈x4,xD〉 ].
+
+ndefinition dTest_random_ex16 ≝
+[〈xD,x7〉;〈x5,x8〉;〈xA,x7〉;〈x5,xF〉;〈x9,x4〉;〈x8,x7〉;〈xA,x8〉;〈xE,x7〉;〈x2,xB〉;〈xF,x2〉;〈xE,x7〉;〈xB,x9〉;〈x0,x6〉;〈xA,xF〉;〈xD,xA〉;〈xD,xC〉
+;〈xC,x6〉;〈x3,xF〉;〈x8,xD〉;〈x7,x9〉;〈x9,x5〉;〈xD,xA〉;〈x5,xB〉;〈x9,x2〉;〈xE,xE〉;〈x3,xC〉;〈xF,xE〉;〈x4,x9〉;〈x5,xA〉;〈x1,x0〉;〈x4,xD〉;〈x8,x9〉 ].
+
+ndefinition dTest_random_ex17 ≝
+[〈x8,x3〉;〈x2,x6〉;〈xE,xC〉;〈x8,xD〉;〈xC,x9〉;〈x7,x7〉;〈xE,xE〉;〈xF,x1〉;〈x4,x0〉;〈x6,xD〉;〈x4,x9〉;〈x5,x7〉;〈x9,xB〉;〈xC,x4〉;〈x1,xF〉;〈x8,x0〉
+;〈x9,x5〉;〈xB,xC〉;〈xE,x8〉;〈xF,x9〉;〈xD,x7〉;〈x1,x4〉;〈x3,xE〉;〈xC,x3〉;〈x6,xF〉;〈x8,xF〉;〈x7,x2〉;〈xD,x5〉;〈xB,xE〉;〈x8,xA〉;〈xA,x3〉;〈xF,x7〉 ].
+
+ndefinition dTest_random_ex18 ≝
+[〈x6,x0〉;〈x3,xA〉;〈x7,x4〉;〈xF,xB〉;〈xB,xD〉;〈x7,x4〉;〈x8,x3〉;〈xE,x3〉;〈x9,xD〉;〈xD,x9〉;〈xB,x8〉;〈x1,x3〉;〈x5,x0〉;〈x4,x0〉;〈x8,xA〉;〈x9,x6〉
+;〈x3,xA〉;〈xA,x6〉;〈xE,xC〉;〈x7,xC〉;〈x1,x5〉;〈x8,x7〉;〈x4,xD〉;〈x6,xA〉;〈xA,xA〉;〈xE,x0〉;〈xB,xA〉;〈xF,xF〉;〈x3,xB〉;〈xE,x2〉;〈x5,x1〉;〈x2,x2〉 ].
+
+ndefinition dTest_random_ex19 ≝
+[〈x2,x2〉;〈x1,xF〉;〈xA,x1〉;〈x2,x1〉;〈xA,xF〉;〈x3,x7〉;〈x8,xA〉;〈xD,xF〉;〈xE,x3〉;〈x6,x9〉;〈xE,xE〉;〈xC,x4〉;〈xE,x7〉;〈x7,x1〉;〈x9,x6〉;〈x1,x1〉
+;〈xE,x4〉;〈x3,x9〉;〈xE,x5〉;〈xA,xF〉;〈xF,x5〉;〈x5,x7〉;〈xE,xB〉;〈x5,x5〉;〈x6,x5〉;〈x8,xB〉;〈x3,xE〉;〈x8,xD〉;〈x4,x6〉;〈x5,x3〉;〈xB,x2〉;〈x1,x9〉 ].
+
+ndefinition dTest_random_ex1A ≝
+[〈x3,x4〉;〈xE,x9〉;〈x4,xA〉;〈x4,xB〉;〈x5,x2〉;〈x3,x0〉;〈x3,xF〉;〈xA,x7〉;〈x4,xF〉;〈x1,xA〉;〈xB,x8〉;〈x6,x4〉;〈x5,xB〉;〈xD,x9〉;〈x6,xD〉;〈x6,x1〉
+;〈xA,x5〉;〈xC,xF〉;〈x8,xC〉;〈xD,xD〉;〈xE,x6〉;〈xD,x5〉;〈x3,x6〉;〈x0,xC〉;〈x8,xD〉;〈xF,x7〉;〈x4,xE〉;〈x9,xC〉;〈xB,xF〉;〈x2,xB〉;〈x4,x4〉;〈xD,x1〉 ].
+
+ndefinition dTest_random_ex1B ≝
+[〈xC,x0〉;〈x8,x0〉;〈x0,x8〉;〈xA,xD〉;〈xC,xE〉;〈xB,xD〉;〈x4,xC〉;〈x5,x3〉;〈x6,x5〉;〈xB,x6〉;〈x4,x8〉;〈xF,x6〉;〈x6,x4〉;〈x7,xC〉;〈x9,x8〉;〈x1,x0〉
+;〈x9,xD〉;〈xF,xD〉;〈x4,x9〉;〈xC,x4〉;〈xD,xD〉;〈x1,x4〉;〈xB,x6〉;〈x6,xF〉;〈x3,xB〉;〈x4,x6〉;〈xD,x7〉;〈x1,xA〉;〈x4,x4〉;〈xA,x4〉;〈x8,x1〉;〈x3,x1〉 ].
+
+ndefinition dTest_random_ex1C ≝
+[〈xA,x2〉;〈x4,x0〉;〈x7,x0〉;〈x3,x9〉;〈x9,xA〉;〈x4,xC〉;〈x4,xF〉;〈x9,x3〉;〈x9,xD〉;〈xD,x4〉;〈x9,x7〉;〈x3,x9〉;〈xA,x8〉;〈xA,x8〉;〈xF,x9〉;〈xB,x3〉
+;〈xE,x7〉;〈xD,x8〉;〈x4,xD〉;〈x6,xD〉;〈x8,x8〉;〈x6,xB〉;〈x5,x4〉;〈x5,x5〉;〈x9,x2〉;〈x1,x9〉;〈xE,x4〉;〈xB,x1〉;〈xE,x3〉;〈x4,x6〉;〈xD,x5〉;〈x6,xC〉 ].
+
+ndefinition dTest_random_ex1D ≝
+[〈xF,x9〉;〈x3,x3〉;〈xE,x5〉;〈xD,x2〉;〈x7,x7〉;〈x1,x8〉;〈x8,x6〉;〈x1,x4〉;〈x7,xE〉;〈x1,xE〉;〈xC,x8〉;〈xB,x4〉;〈xC,xE〉;〈xC,x7〉;〈x5,x7〉;〈x2,xD〉
+;〈x5,x2〉;〈xE,x7〉;〈x5,x7〉;〈x9,xB〉;〈x1,xA〉;〈x4,x9〉;〈x0,x9〉;〈x4,xB〉;〈xF,x6〉;〈xB,x5〉;〈x0,xA〉;〈x2,xC〉;〈xB,xA〉;〈x1,xF〉;〈x2,x6〉;〈x3,x8〉 ].
+
+ndefinition dTest_random_ex1E ≝
+[〈x6,x0〉;〈x3,x4〉;〈xC,x4〉;〈x8,x9〉;〈xB,xF〉;〈x0,x4〉;〈x5,xF〉;〈xF,x4〉;〈x1,x1〉;〈xF,x3〉;〈x4,xA〉;〈xE,x2〉;〈xD,x8〉;〈x3,x6〉;〈xF,xA〉;〈x4,x3〉
+;〈x0,xC〉;〈x6,x0〉;〈x5,x1〉;〈x2,xD〉;〈x0,x3〉;〈xF,xC〉;〈x9,x2〉;〈x2,x1〉;〈xC,xA〉;〈x7,x5〉;〈x6,x6〉;〈xD,xC〉;〈x8,x4〉;〈xC,x4〉;〈x6,xF〉;〈xF,x0〉 ].
+
+ndefinition dTest_random_ex1F ≝
+[〈x0,x4〉;〈x5,x2〉;〈xA,xB〉;〈x9,xA〉;〈xC,xE〉;〈xA,xA〉;〈x2,xF〉;〈x3,x6〉;〈xF,x3〉;〈xA,x7〉;〈x4,x2〉;〈x0,x7〉;〈x5,xE〉;〈xB,x6〉;〈x5,xB〉;〈x9,x8〉
+;〈x7,x9〉;〈x4,x3〉;〈x8,x8〉;〈x9,xA〉;〈x0,xA〉;〈x5,x5〉;〈xE,x3〉;〈x9,x8〉;〈x7,x5〉;〈xA,x2〉;〈xE,xA〉;〈xB,x9〉;〈x3,x2〉;〈x4,x1〉;〈x0,x7〉;〈x3,x8〉 ].
+
+ndefinition dTest_random_ex20 ≝
+[〈xB,x1〉;〈x0,x3〉;〈x4,xE〉;〈x6,xF〉;〈x9,x7〉;〈x3,xC〉;〈x5,x4〉;〈xB,xB〉;〈xB,xC〉;〈x0,xB〉;〈x0,xC〉;〈xA,xB〉;〈x3,xB〉;〈x2,x8〉;〈xA,xA〉;〈x0,x4〉
+;〈x5,x0〉;〈xA,x3〉;〈x6,xB〉;〈xF,xA〉;〈xF,x0〉;〈xE,x6〉;〈x1,x8〉;〈xD,x8〉;〈x7,xA〉;〈x5,xF〉;〈x0,x3〉;〈x8,x2〉;〈x9,x6〉;〈x9,xA〉;〈xB,xF〉;〈x1,x5〉 ].
+
+ndefinition dTest_random_ex21 ≝
+[〈x8,x5〉;〈xE,xF〉;〈xB,x3〉;〈x7,xB〉;〈xE,xE〉;〈xE,xF〉;〈x1,x0〉;〈x6,x9〉;〈xC,x2〉;〈xF,x9〉;〈x2,xD〉;〈x8,x1〉;〈xF,x3〉;〈x0,xE〉;〈xC,x3〉;〈x7,xF〉
+;〈xD,xD〉;〈x2,xE〉;〈x2,xA〉;〈xB,xD〉;〈xE,xA〉;〈x9,x2〉;〈xF,xF〉;〈xF,xA〉;〈x7,xB〉;〈xD,x3〉;〈x3,x0〉;〈x7,x5〉;〈x6,x7〉;〈xA,x8〉;〈x0,xF〉;〈x2,x1〉 ].
+
+ndefinition dTest_random_ex22 ≝
+[〈xD,xC〉;〈xE,x5〉;〈xE,x2〉;〈x8,x9〉;〈x2,x9〉;〈xC,x5〉;〈xA,x3〉;〈xA,x2〉;〈x4,x2〉;〈x3,xF〉;〈xA,x3〉;〈x5,x8〉;〈xE,x0〉;〈x7,xC〉;〈x0,x3〉;〈xF,xF〉
+;〈x2,x8〉;〈x8,xB〉;〈x8,xB〉;〈x1,x2〉;〈xD,x8〉;〈xA,x8〉;〈x7,x6〉;〈xB,x9〉;〈xE,x2〉;〈xF,xE〉;〈x2,x1〉;〈x3,xF〉;〈xA,xC〉;〈x4,x6〉;〈xB,xC〉;〈xF,x8〉 ].
+
+ndefinition dTest_random_ex23 ≝
+[〈xD,x3〉;〈xE,xB〉;〈xF,xC〉;〈x9,xF〉;〈xE,x7〉;〈x6,x1〉;〈xC,xB〉;〈xB,xF〉;〈x4,xE〉;〈xC,x4〉;〈x9,x7〉;〈x1,xE〉;〈x0,xD〉;〈x7,x9〉;〈x8,x3〉;〈xA,xB〉
+;〈x4,xC〉;〈x2,x6〉;〈x6,x3〉;〈x6,xF〉;〈xE,xE〉;〈x5,x9〉;〈x8,x1〉;〈x0,x2〉;〈x2,xC〉;〈xE,xD〉;〈x6,xF〉;〈x0,x4〉;〈x1,x0〉;〈xE,x0〉;〈xD,xA〉;〈xB,xE〉 ].
+
+ndefinition dTest_random_ex24 ≝
+[〈xE,xE〉;〈x5,x7〉;〈xB,x0〉;〈x3,x1〉;〈x4,x1〉;〈xD,xC〉;〈x3,xC〉;〈xC,xC〉;〈x5,x8〉;〈x2,x8〉;〈x2,xC〉;〈x1,xB〉;〈x8,x6〉;〈xD,x6〉;〈xF,x9〉;〈xD,x5〉
+;〈x4,xA〉;〈xE,xA〉;〈x0,xB〉;〈x2,x0〉;〈x2,xC〉;〈x4,x2〉;〈xC,xE〉;〈x4,x5〉;〈x2,xB〉;〈x0,x1〉;〈xA,xA〉;〈xB,x1〉;〈x6,xE〉;〈xB,x7〉;〈xB,x7〉;〈x2,x8〉 ].
+
+ndefinition dTest_random_ex25 ≝
+[〈x9,x5〉;〈x1,x9〉;〈xA,x7〉;〈x5,xC〉;〈x4,xE〉;〈x7,xB〉;〈x3,xE〉;〈xD,x3〉;〈x9,x0〉;〈x8,x6〉;〈x7,x1〉;〈x1,x4〉;〈xD,x2〉;〈xD,x4〉;〈xB,x4〉;〈xF,x2〉
+;〈x3,x1〉;〈x2,x8〉;〈x4,x5〉;〈xF,xD〉;〈x7,x8〉;〈x5,xD〉;〈xF,xA〉;〈xF,x3〉;〈x9,x5〉;〈x4,xD〉;〈x3,x1〉;〈xB,x8〉;〈xC,xC〉;〈x2,x1〉;〈x1,x9〉;〈x4,x2〉 ].
+
+ndefinition dTest_random_ex26 ≝
+[〈x2,xA〉;〈xF,x2〉;〈xB,xA〉;〈x0,x4〉;〈x9,xF〉;〈x4,x3〉;〈x4,x5〉;〈x1,xC〉;〈x7,x4〉;〈xB,xB〉;〈x7,x0〉;〈x5,xE〉;〈x0,x1〉;〈xA,xC〉;〈x6,xD〉;〈xD,x7〉
+;〈x9,xC〉;〈x9,xD〉;〈x1,xA〉;〈x9,x8〉;〈xB,x1〉;〈xF,xC〉;〈x6,x1〉;〈xA,x3〉;〈x4,x1〉;〈x4,x1〉;〈xA,xF〉;〈x1,xD〉;〈xE,x1〉;〈x3,x2〉;〈x1,x9〉;〈x6,x0〉 ].
+
+ndefinition dTest_random_ex27 ≝
+[〈x2,x9〉;〈x9,x7〉;〈x8,x5〉;〈x5,x3〉;〈x5,x3〉;〈x9,x1〉;〈xB,x3〉;〈x9,x4〉;〈xD,x5〉;〈x9,xD〉;〈x4,xC〉;〈x3,x6〉;〈x0,xE〉;〈x8,x4〉;〈xA,x1〉;〈x4,x6〉
+;〈x6,xA〉;〈x1,xF〉;〈xF,x3〉;〈x6,xB〉;〈xB,xE〉;〈x4,xA〉;〈x1,x9〉;〈x7,x5〉;〈xF,xC〉;〈xC,x6〉;〈xE,xA〉;〈x7,xE〉;〈xD,x1〉;〈x3,x3〉;〈x6,x7〉;〈xB,x7〉 ].
+
+ndefinition dTest_random_ex28 ≝
+[〈xE,xE〉;〈x5,x9〉;〈xE,x2〉;〈xD,xD〉;〈x2,x2〉;〈x8,xC〉;〈x9,xB〉;〈x3,xE〉;〈x9,x8〉;〈xF,xC〉;〈x1,x3〉;〈xE,x2〉;〈x0,xC〉;〈x4,xE〉;〈x3,x1〉;〈x8,x7〉
+;〈x6,x7〉;〈x6,xA〉;〈x4,xC〉;〈x4,xC〉;〈x7,x2〉;〈x0,x0〉;〈x0,x5〉;〈x1,xF〉;〈xF,x6〉;〈x3,x0〉;〈xE,xE〉;〈xD,xE〉;〈xB,x1〉;〈x4,xC〉;〈xF,x7〉;〈xE,xC〉 ].
+
+ndefinition dTest_random_ex29 ≝
+[〈x2,xC〉;〈x4,x0〉;〈x6,xB〉;〈x6,x8〉;〈x9,x0〉;〈x8,x8〉;〈x6,xF〉;〈xB,x3〉;〈x4,x7〉;〈x6,x2〉;〈x9,x2〉;〈x9,xB〉;〈x2,xB〉;〈x3,x2〉;〈x4,x0〉;〈xA,x7〉
+;〈x8,x9〉;〈x4,x0〉;〈x2,x3〉;〈x5,xC〉;〈xF,x9〉;〈x2,x9〉;〈x6,x2〉;〈xA,xE〉;〈x5,xB〉;〈xC,x9〉;〈x2,xC〉;〈x9,x2〉;〈x6,xF〉;〈xF,x5〉;〈xA,x0〉;〈x0,xE〉 ].
+
+ndefinition dTest_random_ex2A ≝
+[〈xD,xE〉;〈xF,x9〉;〈x0,x9〉;〈x1,x0〉;〈x3,x9〉;〈x4,x6〉;〈xC,x5〉;〈xE,x2〉;〈x8,x3〉;〈xD,x5〉;〈x8,xE〉;〈x4,x6〉;〈x4,xC〉;〈xA,xC〉;〈x7,xF〉;〈x4,xF〉
+;〈xC,x1〉;〈x4,xF〉;〈x1,xA〉;〈x6,x1〉;〈x9,x6〉;〈x0,xB〉;〈x0,x0〉;〈x6,xF〉;〈x2,x6〉;〈x8,xC〉;〈xE,xE〉;〈x9,x3〉;〈x1,xB〉;〈x9,xE〉;〈xA,x5〉;〈x9,x6〉 ].
+
+ndefinition dTest_random_ex2B ≝
+[〈x2,xA〉;〈xE,xB〉;〈x4,x6〉;〈x5,xF〉;〈x3,xC〉;〈xD,x6〉;〈x2,xD〉;〈x9,x4〉;〈x6,xB〉;〈xF,x4〉;〈xD,xA〉;〈x6,x9〉;〈x5,x9〉;〈xA,xC〉;〈xB,xD〉;〈x9,xE〉
+;〈x4,x8〉;〈x0,x2〉;〈xD,xC〉;〈x5,xC〉;〈x6,x0〉;〈x2,xA〉;〈x6,xE〉;〈xC,xA〉;〈x6,xE〉;〈x1,xF〉;〈xD,x4〉;〈x3,xA〉;〈xB,x0〉;〈x9,xE〉;〈x8,xF〉;〈xA,xB〉 ].
+
+ndefinition dTest_random_ex2C ≝
+[〈xB,x2〉;〈x0,x2〉;〈x4,x7〉;〈x7,xD〉;〈xA,xB〉;〈xD,xB〉;〈xB,x5〉;〈x6,xD〉;〈xE,x2〉;〈x8,x9〉;〈x4,xD〉;〈x0,x4〉;〈xB,xE〉;〈xF,xA〉;〈x2,x2〉;〈x1,x4〉
+;〈x7,x1〉;〈x1,x2〉;〈x1,xB〉;〈x0,xD〉;〈xB,xA〉;〈x5,xA〉;〈x6,xC〉;〈x1,xE〉;〈x3,xA〉;〈x0,xF〉;〈x6,xE〉;〈x4,x4〉;〈xC,x8〉;〈xB,x5〉;〈x8,xC〉;〈x0,x3〉 ].
+
+ndefinition dTest_random_ex2D ≝
+[〈x0,x6〉;〈x6,x4〉;〈x8,x5〉;〈x2,x8〉;〈x6,x4〉;〈x2,x2〉;〈x8,x1〉;〈x7,x6〉;〈xF,xE〉;〈xF,xA〉;〈x6,x2〉;〈x9,x1〉;〈xB,xE〉;〈xB,xC〉;〈x6,x1〉;〈x4,xB〉
+;〈x7,xE〉;〈x5,x0〉;〈xB,xC〉;〈xE,xE〉;〈x6,x3〉;〈xC,xF〉;〈x1,xD〉;〈xF,xD〉;〈x6,x2〉;〈x5,xC〉;〈x8,x5〉;〈x9,xE〉;〈xA,x5〉;〈x2,x6〉;〈xE,x7〉;〈x4,x6〉 ].
+
+ndefinition dTest_random_ex2E ≝
+[〈x3,xB〉;〈xE,xA〉;〈xB,xE〉;〈x0,x4〉;〈x8,x8〉;〈xF,x2〉;〈x9,x2〉;〈x0,xB〉;〈xD,x9〉;〈xE,x9〉;〈x2,x9〉;〈x3,x8〉;〈x8,x8〉;〈x8,xA〉;〈x6,x9〉;〈x1,x7〉
+;〈x4,xB〉;〈xB,xF〉;〈x0,xC〉;〈xF,x2〉;〈xF,xD〉;〈x7,x3〉;〈x5,x9〉;〈xB,xE〉;〈x5,x4〉;〈x1,xC〉;〈xD,x3〉;〈x3,x1〉;〈x6,x2〉;〈x1,xB〉;〈xB,x7〉;〈x3,x2〉 ].
+
+ndefinition dTest_random_ex2F ≝
+[〈xA,x4〉;〈xF,x1〉;〈x7,x0〉;〈x9,xA〉;〈x4,x6〉;〈xA,x1〉;〈x1,xC〉;〈x0,x4〉;〈x6,xC〉;〈xF,x2〉;〈xE,x6〉;〈xC,x1〉;〈xA,x4〉;〈xF,x2〉;〈x2,xA〉;〈x4,xB〉
+;〈x3,x5〉;〈x9,xB〉;〈x9,x9〉;〈xF,xF〉;〈x0,x1〉;〈x1,x3〉;〈xF,x9〉;〈x5,xC〉;〈x3,xC〉;〈x5,x1〉;〈x8,xA〉;〈xA,x5〉;〈x5,xF〉;〈x9,xE〉;〈x5,xE〉;〈xC,x6〉 ].
+
+ndefinition dTest_random_ex30 ≝
+[〈x2,x1〉;〈x3,x7〉;〈xD,x2〉;〈xB,x9〉;〈x9,x8〉;〈xA,x1〉;〈x6,x0〉;〈xE,x9〉;〈x4,x5〉;〈xC,xA〉;〈xD,x7〉;〈xB,xD〉;〈xC,xF〉;〈x0,xF〉;〈x2,x4〉;〈xE,x5〉
+;〈x7,x9〉;〈x4,xB〉;〈x1,xC〉;〈x5,x7〉;〈x3,xA〉;〈x2,x4〉;〈x2,x2〉;〈x0,x8〉;〈x3,x3〉;〈xE,x2〉;〈xA,x2〉;〈x5,x8〉;〈x2,x5〉;〈x5,x4〉;〈x7,x1〉;〈x2,xB〉 ].
+
+ndefinition dTest_random_ex31 ≝
+[〈xF,xF〉;〈xE,xD〉;〈x4,x8〉;〈xF,x6〉;〈x2,x3〉;〈x3,x1〉;〈xB,xA〉;〈x5,x1〉;〈x9,xF〉;〈xA,xA〉;〈xC,xC〉;〈x0,x3〉;〈x1,x5〉;〈xC,x7〉;〈x2,xD〉;〈xD,x3〉
+;〈xE,xB〉;〈x8,xF〉;〈x8,x4〉;〈x4,x0〉;〈x5,x3〉;〈xA,xD〉;〈x6,x7〉;〈xE,xC〉;〈xA,xF〉;〈xD,xC〉;〈x1,xC〉;〈x7,x4〉;〈x6,xB〉;〈xA,xD〉;〈xC,xD〉;〈xA,x7〉 ].
+
+ndefinition dTest_random_ex32 ≝
+[〈x1,x1〉;〈x1,x0〉;〈xC,xF〉;〈xB,xE〉;〈xA,x1〉;〈x0,x1〉;〈x3,xF〉;〈xC,x0〉;〈x8,x5〉;〈x2,x8〉;〈x6,xB〉;〈xC,x3〉;〈x6,xD〉;〈xD,x8〉;〈x7,x5〉;〈x5,xA〉
+;〈xF,x0〉;〈x2,x2〉;〈x4,xB〉;〈x9,xC〉;〈x3,x1〉;〈xE,x4〉;〈xE,x7〉;〈xC,x6〉;〈xF,xC〉;〈x3,x0〉;〈xD,x5〉;〈xF,x9〉;〈x1,xA〉;〈x4,x0〉;〈x1,xF〉;〈x6,xD〉 ].
+
+ndefinition dTest_random_ex33 ≝
+[〈xD,x5〉;〈x7,x8〉;〈xB,x5〉;〈x7,x6〉;〈xC,x9〉;〈xE,x1〉;〈xD,xF〉;〈x1,x2〉;〈x6,x1〉;〈xD,xF〉;〈x9,xF〉;〈x5,x7〉;〈x7,xD〉;〈x0,xB〉;〈xA,xD〉;〈x5,xA〉
+;〈xA,x1〉;〈x8,x4〉;〈xE,x5〉;〈xF,x7〉;〈xB,xC〉;〈xD,x3〉;〈xA,x5〉;〈xB,x4〉;〈x8,x5〉;〈x6,x7〉;〈x3,x6〉;〈xF,xC〉;〈xB,x1〉;〈xB,x3〉;〈xC,xB〉;〈x1,xE〉 ].
+
+ndefinition dTest_random_ex34 ≝
+[〈xE,xC〉;〈x6,xE〉;〈xE,x1〉;〈x1,xC〉;〈xA,x5〉;〈x5,x3〉;〈x9,x8〉;〈xF,x6〉;〈xD,xF〉;〈x4,x1〉;〈x1,x3〉;〈x2,xE〉;〈x7,xF〉;〈x0,xE〉;〈x3,x8〉;〈x3,xC〉
+;〈xD,x4〉;〈x8,xC〉;〈x2,xA〉;〈x2,x8〉;〈x4,xE〉;〈x7,xE〉;〈x0,xE〉;〈xF,x7〉;〈xC,xA〉;〈x3,xE〉;〈xE,x4〉;〈xB,x4〉;〈x0,x5〉;〈x5,x8〉;〈xD,xC〉;〈x7,x8〉 ].
+
+ndefinition dTest_random_ex35 ≝
+[〈xD,x9〉;〈xF,x9〉;〈x7,x9〉;〈x8,x4〉;〈x0,x2〉;〈x3,xF〉;〈xC,xF〉;〈x3,x8〉;〈xD,x7〉;〈x2,x6〉;〈x1,xD〉;〈x1,x8〉;〈x4,xD〉;〈xE,xA〉;〈x7,xA〉;〈xD,x4〉
+;〈x2,x4〉;〈x0,xD〉;〈x4,xD〉;〈x9,x0〉;〈x1,x7〉;〈x1,xE〉;〈x6,xE〉;〈xB,x6〉;〈xC,xC〉;〈xC,x0〉;〈xB,x0〉;〈x5,xE〉;〈x9,x9〉;〈x6,xD〉;〈xC,xF〉;〈xE,xE〉 ].
+
+ndefinition dTest_random_ex36 ≝
+[〈x2,x9〉;〈xC,xF〉;〈xA,x2〉;〈x0,xC〉;〈xA,xB〉;〈x7,x4〉;〈x2,x9〉;〈x4,xE〉;〈x8,x2〉;〈x9,x3〉;〈x6,x9〉;〈x7,xB〉;〈xE,xC〉;〈xC,x7〉;〈x8,x9〉;〈xC,xA〉
+;〈xD,xD〉;〈xA,xC〉;〈x6,x5〉;〈x8,x0〉;〈x1,x4〉;〈x0,x9〉;〈x5,x5〉;〈x0,xE〉;〈x8,x4〉;〈x5,xE〉;〈x6,xF〉;〈x3,x4〉;〈x1,x8〉;〈xC,x9〉;〈x8,xB〉;〈xE,x4〉 ].
+
+ndefinition dTest_random_ex37 ≝
+[〈x3,xE〉;〈xC,x4〉;〈x1,x6〉;〈xA,x4〉;〈x1,x9〉;〈x3,x4〉;〈x0,xE〉;〈x5,xE〉;〈xF,x9〉;〈x0,x3〉;〈x1,x3〉;〈x7,x2〉;〈x2,x7〉;〈x2,x8〉;〈xA,x7〉;〈x6,xD〉
+;〈xC,x1〉;〈x1,xD〉;〈xF,x0〉;〈x2,x8〉;〈xF,xB〉;〈xF,x6〉;〈x3,x8〉;〈x0,x1〉;〈xF,x9〉;〈xB,xC〉;〈x6,x6〉;〈xF,x8〉;〈x6,xE〉;〈xD,x1〉;〈xB,x5〉;〈x3,x8〉 ].
+
+ndefinition dTest_random_ex38 ≝
+[〈x4,x3〉;〈xB,x6〉;〈x6,x8〉;〈xA,xC〉;〈x0,x9〉;〈xF,xD〉;〈x0,x9〉;〈x6,x8〉;〈xE,x0〉;〈x2,x2〉;〈xA,xF〉;〈x4,x0〉;〈x2,x6〉;〈x0,xC〉;〈x5,x2〉;〈xA,x7〉
+;〈xA,xD〉;〈xC,x3〉;〈x8,x2〉;〈xD,xC〉;〈x3,xC〉;〈x6,x5〉;〈xF,x2〉;〈xE,x8〉;〈xC,x0〉;〈x0,x6〉;〈x6,x4〉;〈xB,x1〉;〈x2,x0〉;〈x9,x5〉;〈x2,x2〉;〈xD,xD〉 ].
+
+ndefinition dTest_random_ex39 ≝
+[〈xA,xD〉;〈xF,xF〉;〈x1,xB〉;〈x8,xB〉;〈xB,x6〉;〈x4,xA〉;〈xB,xB〉;〈x9,x8〉;〈x1,xA〉;〈xE,xC〉;〈x7,xB〉;〈xA,x6〉;〈x2,xC〉;〈xE,x1〉;〈xC,x7〉;〈xD,xC〉
+;〈x1,x9〉;〈x0,x6〉;〈x0,xA〉;〈x9,xF〉;〈x5,x2〉;〈x2,xB〉;〈xC,xA〉;〈x2,xF〉;〈x4,x0〉;〈xF,x8〉;〈xE,xA〉;〈x8,x7〉;〈x8,x9〉;〈xF,xD〉;〈x5,xD〉;〈x0,x0〉 ].
+
+ndefinition dTest_random_ex3A ≝
+[〈x6,xE〉;〈x0,x0〉;〈x0,xD〉;〈x3,x0〉;〈x4,x3〉;〈x5,xA〉;〈x8,xF〉;〈x8,xA〉;〈xA,x4〉;〈x5,x0〉;〈x8,xF〉;〈x0,xC〉;〈x7,x7〉;〈xF,x2〉;〈x6,x5〉;〈xE,x4〉
+;〈x2,xD〉;〈xE,x5〉;〈xA,x8〉;〈x7,xF〉;〈x7,x8〉;〈xE,x3〉;〈x9,x5〉;〈xD,xA〉;〈x0,x7〉;〈x2,x9〉;〈x5,x1〉;〈x9,x4〉;〈xE,x4〉;〈x0,x1〉;〈xB,xF〉;〈x6,xE〉 ].
+
+ndefinition dTest_random_ex3B ≝
+[〈x9,x8〉;〈x9,xC〉;〈x9,x0〉;〈xA,x8〉;〈x0,xA〉;〈x3,xD〉;〈x3,xC〉;〈x5,x0〉;〈xE,xB〉;〈x1,x2〉;〈xC,x4〉;〈x5,xF〉;〈x4,x7〉;〈x7,xB〉;〈x2,xC〉;〈xD,xF〉
+;〈x7,x8〉;〈x1,x3〉;〈x7,x4〉;〈xE,x0〉;〈x7,xB〉;〈x7,x1〉;〈x4,x7〉;〈x4,x8〉;〈x1,xB〉;〈xE,x3〉;〈x6,xB〉;〈x0,xB〉;〈x4,xB〉;〈x5,x9〉;〈x9,x3〉;〈xD,xF〉 ].
+
+ndefinition dTest_random_ex3C ≝
+[〈xE,x1〉;〈x1,xB〉;〈xD,x0〉;〈xE,xD〉;〈x4,x7〉;〈x4,xD〉;〈xC,x2〉;〈xD,xE〉;〈x5,xC〉;〈xD,xA〉;〈x9,x5〉;〈xC,x8〉;〈x1,x0〉;〈x7,x7〉;〈x7,xF〉;〈xC,x0〉
+;〈xA,x7〉;〈xD,x3〉;〈xD,x3〉;〈xD,x8〉;〈x3,x4〉;〈xA,x1〉;〈x1,x5〉;〈xE,x0〉;〈x0,x4〉;〈x1,xE〉;〈x8,x2〉;〈xC,xA〉;〈xD,x9〉;〈x1,x1〉;〈xB,x1〉;〈xC,x9〉 ].
+
+ndefinition dTest_random_ex3D ≝
+[〈x4,xC〉;〈x4,xB〉;〈x0,x9〉;〈x4,x8〉;〈xF,xC〉;〈xD,xD〉;〈x6,xE〉;〈xC,xA〉;〈x7,x6〉;〈xA,xE〉;〈x8,xE〉;〈x3,xB〉;〈xF,xB〉;〈x6,x5〉;〈x8,x3〉;〈x1,xD〉
+;〈xD,xB〉;〈xA,xE〉;〈x4,xF〉;〈xC,x6〉;〈x1,xE〉;〈xC,x5〉;〈xC,xC〉;〈x7,xC〉;〈x2,x8〉;〈xF,x9〉;〈xD,x2〉;〈x8,x6〉;〈x1,x5〉;〈xF,xA〉;〈x4,x1〉;〈x4,x5〉 ].
+
+ndefinition dTest_random_ex3E ≝
+[〈x2,xE〉;〈x9,x5〉;〈xB,xF〉;〈x0,xD〉;〈x8,xB〉;〈x8,xD〉;〈x1,x1〉;〈x9,xC〉;〈xB,x8〉;〈xF,xB〉;〈x2,x6〉;〈xD,x6〉;〈x9,x1〉;〈x0,xD〉;〈xC,xD〉;〈x0,x7〉
+;〈x5,x0〉;〈xF,xA〉;〈x2,x9〉;〈x3,xF〉;〈x0,xC〉;〈x2,xB〉;〈xF,xE〉;〈x9,x7〉;〈x5,x5〉;〈x5,xA〉;〈x6,xD〉;〈x9,x6〉;〈x0,x5〉;〈x0,x9〉;〈x4,x5〉;〈xE,xF〉 ].
+
+ndefinition dTest_random_ex3F ≝
+[〈x0,xF〉;〈x7,x4〉;〈x9,x3〉;〈x6,xC〉;〈x8,x2〉;〈x3,x7〉;〈xE,xB〉;〈x5,x0〉;〈xF,x5〉;〈xC,x4〉;〈x0,xB〉;〈x3,x8〉;〈x2,xD〉;〈x8,xA〉;〈x9,x3〉;〈x6,xD〉
+;〈x1,xD〉;〈xE,x5〉;〈xF,x7〉;〈xE,x7〉;〈xD,x7〉;〈x5,xC〉;〈xB,x4〉;〈x5,x0〉;〈x7,x5〉;〈x0,xD〉;〈xF,x3〉;〈xC,xE〉;〈x3,x1〉;〈xF,x1〉;〈x8,xE〉;〈x8,xF〉 ].
+
+ndefinition dTest_random_ex40 ≝
+[〈xD,xB〉;〈x1,x4〉;〈xF,x6〉;〈x0,x3〉;〈xA,xB〉;〈xA,xE〉;〈xB,xC〉;〈xE,xB〉;〈xC,x8〉;〈x6,x7〉;〈xC,xC〉;〈xF,xF〉;〈x4,xF〉;〈xC,x6〉;〈x2,x9〉;〈x9,x5〉
+;〈xB,xC〉;〈x6,x5〉;〈x5,x2〉;〈xF,x2〉;〈x3,x5〉;〈xC,x4〉;〈xF,x4〉;〈x9,xB〉;〈x4,x5〉;〈x1,xC〉;〈xD,xB〉;〈x6,x1〉;〈xF,xE〉;〈x3,xF〉;〈xB,x9〉;〈xD,x8〉 ].
+
+ndefinition dTest_random_ex41 ≝
+[〈xF,x1〉;〈xA,xC〉;〈x0,x7〉;〈xA,x4〉;〈xB,x8〉;〈x8,x8〉;〈x9,x5〉;〈xB,x8〉;〈x5,x6〉;〈x3,x2〉;〈x5,xA〉;〈x3,xE〉;〈x2,x2〉;〈x0,xB〉;〈x9,x6〉;〈xE,xE〉
+;〈x6,xF〉;〈x1,xE〉;〈x3,x2〉;〈x4,x9〉;〈x4,xF〉;〈xC,xC〉;〈xD,xB〉;〈x5,x1〉;〈x4,xD〉;〈xD,x1〉;〈x4,xF〉;〈x0,x9〉;〈x5,xA〉;〈xA,xC〉;〈xE,x7〉;〈x8,x6〉 ].
+
+ndefinition dTest_random_ex42 ≝
+[〈x5,x8〉;〈xA,x5〉;〈xA,x7〉;〈x5,xE〉;〈x3,x6〉;〈x1,x1〉;〈x3,xA〉;〈x8,x9〉;〈x8,x2〉;〈xD,xC〉;〈x6,x2〉;〈x0,xE〉;〈xA,xB〉;〈x2,xB〉;〈x2,x5〉;〈xF,x9〉
+;〈x7,x7〉;〈x8,x6〉;〈x1,xD〉;〈x7,x9〉;〈x5,x1〉;〈xB,xD〉;〈x9,x8〉;〈xB,x7〉;〈xB,xB〉;〈xF,x6〉;〈xD,x9〉;〈x6,x6〉;〈x0,x1〉;〈x1,x2〉;〈xE,xB〉;〈x0,xA〉 ].
+
+ndefinition dTest_random_ex43 ≝
+[〈xC,xD〉;〈x1,xA〉;〈xA,xA〉;〈xC,xC〉;〈x6,x5〉;〈x4,x2〉;〈x8,xF〉;〈x2,xA〉;〈x4,x8〉;〈xC,x6〉;〈xB,xA〉;〈xD,x8〉;〈x2,xD〉;〈x2,x9〉;〈xE,x8〉;〈x5,x7〉
+;〈x7,x7〉;〈x7,xA〉;〈xB,x4〉;〈x4,x9〉;〈x6,x5〉;〈x4,x3〉;〈x5,x7〉;〈xF,xE〉;〈xC,x6〉;〈xC,x7〉;〈x6,x2〉;〈x6,x7〉;〈x5,x8〉;〈xD,x6〉;〈x9,xA〉;〈xC,x8〉 ].
+
+ndefinition dTest_random_ex44 ≝
+[〈xE,x8〉;〈x3,x0〉;〈x6,x0〉;〈x7,x3〉;〈x8,x9〉;〈x2,x3〉;〈x0,x8〉;〈x7,xA〉;〈xA,xC〉;〈x5,xD〉;〈x6,xD〉;〈xC,xE〉;〈x0,xC〉;〈x1,xB〉;〈x1,x7〉;〈xC,x1〉
+;〈x4,x2〉;〈x5,x3〉;〈x1,x5〉;〈x7,xC〉;〈x7,x4〉;〈x2,xB〉;〈x2,x5〉;〈x5,x6〉;〈x6,x1〉;〈xE,xC〉;〈x0,xB〉;〈x4,x2〉;〈x0,x4〉;〈xC,xA〉;〈x0,x9〉;〈xA,xB〉 ].
+
+ndefinition dTest_random_ex45 ≝
+[〈x1,xB〉;〈xD,x0〉;〈x9,xF〉;〈x6,xA〉;〈x7,xF〉;〈x4,x1〉;〈xF,x8〉;〈xE,xA〉;〈x8,x2〉;〈x8,x1〉;〈x4,x1〉;〈xC,xE〉;〈xC,xE〉;〈x0,xD〉;〈x2,xB〉;〈x3,x3〉
+;〈xA,x3〉;〈x6,x4〉;〈xF,xA〉;〈xA,x6〉;〈x3,x9〉;〈x7,xF〉;〈xF,x6〉;〈xB,x2〉;〈x5,x5〉;〈x6,xB〉;〈xA,xC〉;〈x3,x3〉;〈x9,x3〉;〈xE,x7〉;〈xB,xE〉;〈x3,x4〉 ].
+
+ndefinition dTest_random_ex46 ≝
+[〈xC,xF〉;〈xE,xF〉;〈xA,x2〉;〈xE,xE〉;〈xE,xD〉;〈xC,xB〉;〈xB,x0〉;〈x8,x9〉;〈xD,xA〉;〈x3,xB〉;〈xB,xE〉;〈x3,xE〉;〈x3,x3〉;〈x5,x1〉;〈xA,x5〉;〈x3,xC〉
+;〈xC,xC〉;〈xA,x0〉;〈xF,xD〉;〈x3,x9〉;〈xC,xB〉;〈xF,xC〉;〈x1,xF〉;〈x8,xD〉;〈x6,x8〉;〈xD,x4〉;〈x8,xC〉;〈xA,xA〉;〈x8,xE〉;〈x3,xA〉;〈x9,x7〉;〈x2,x6〉 ].
+
+ndefinition dTest_random_ex47 ≝
+[〈x6,xB〉;〈xA,xC〉;〈x8,xA〉;〈x4,xB〉;〈x7,x4〉;〈x3,xF〉;〈xB,x7〉;〈xB,xF〉;〈x0,xC〉;〈xE,x6〉;〈xC,xD〉;〈x4,x2〉;〈xF,xA〉;〈xE,xE〉;〈xF,x9〉;〈x0,xC〉
+;〈x2,xC〉;〈x7,x9〉;〈x7,xE〉;〈xD,x8〉;〈x4,x0〉;〈x7,xC〉;〈x3,x8〉;〈x4,x9〉;〈x7,x1〉;〈x7,x5〉;〈xB,x7〉;〈x3,x6〉;〈x0,x7〉;〈x1,xA〉;〈x2,xC〉;〈x1,xE〉 ].
+
+ndefinition dTest_random_ex48 ≝
+[〈x3,xC〉;〈x7,xA〉;〈x3,x8〉;〈x4,xA〉;〈x3,x4〉;〈x2,x0〉;〈x9,x5〉;〈x6,x0〉;〈xF,x7〉;〈xC,x3〉;〈xB,x1〉;〈x6,xE〉;〈xB,x1〉;〈x7,x0〉;〈x7,x4〉;〈x3,xB〉
+;〈x0,xD〉;〈x6,xD〉;〈xF,xB〉;〈xE,x5〉;〈xE,x2〉;〈x6,x6〉;〈x6,x8〉;〈x0,x8〉;〈xF,xB〉;〈x3,xC〉;〈x8,xC〉;〈xD,xD〉;〈x0,x2〉;〈x2,xE〉;〈x6,xE〉;〈xF,x1〉 ].
+
+ndefinition dTest_random_ex49 ≝
+[〈xA,xF〉;〈x7,x9〉;〈x6,x7〉;〈xE,x2〉;〈x4,xC〉;〈xA,x5〉;〈x7,x9〉;〈xC,x6〉;〈xB,x5〉;〈xA,xF〉;〈x1,x5〉;〈xF,xE〉;〈xE,x2〉;〈x2,xB〉;〈xC,xA〉;〈xE,x6〉
+;〈x3,xE〉;〈x2,xC〉;〈x5,x8〉;〈x7,x2〉;〈xC,xE〉;〈x7,x1〉;〈x8,xC〉;〈xB,xE〉;〈x2,x0〉;〈x6,x6〉;〈x0,x7〉;〈x6,xF〉;〈xD,x1〉;〈x8,x2〉;〈x3,x1〉;〈xF,x3〉 ].
+
+ndefinition dTest_random_ex4A ≝
+[〈x9,x5〉;〈x9,x1〉;〈x1,x2〉;〈xF,x3〉;〈x4,xF〉;〈x6,xC〉;〈xA,x6〉;〈x8,xE〉;〈xB,x2〉;〈x7,x8〉;〈xD,xE〉;〈x7,x9〉;〈xC,x5〉;〈x2,x2〉;〈xF,x3〉;〈x0,x7〉
+;〈xE,x7〉;〈x9,xE〉;〈x9,x2〉;〈x7,x3〉;〈x3,xC〉;〈xA,x1〉;〈xD,xA〉;〈x2,x1〉;〈x2,x3〉;〈x4,x5〉;〈xE,x5〉;〈x7,x4〉;〈x8,x4〉;〈xC,x2〉;〈x6,x8〉;〈x3,x5〉 ].
+
+ndefinition dTest_random_ex4B ≝
+[〈x9,xA〉;〈xC,x8〉;〈x2,xE〉;〈x1,xD〉;〈xD,x1〉;〈xA,x6〉;〈xD,xF〉;〈x0,x6〉;〈x7,xF〉;〈x8,xC〉;〈x2,x8〉;〈xF,x6〉;〈xC,x3〉;〈xF,x8〉;〈x6,x2〉;〈xF,x9〉
+;〈x5,x7〉;〈x2,x7〉;〈xD,x1〉;〈xD,x3〉;〈x0,xB〉;〈xA,x3〉;〈x8,x7〉;〈x8,x3〉;〈xC,x9〉;〈x1,x4〉;〈xB,x4〉;〈xC,x5〉;〈xE,xD〉;〈x5,x4〉;〈xE,x1〉;〈xB,x9〉 ].
+
+ndefinition dTest_random_ex4C ≝
+[〈x2,x9〉;〈x6,xF〉;〈xE,x3〉;〈x0,xD〉;〈xC,xC〉;〈xF,x6〉;〈x0,xD〉;〈x2,x4〉;〈x4,x5〉;〈x6,xE〉;〈xE,x4〉;〈xD,xB〉;〈xF,x9〉;〈xC,x1〉;〈xD,x4〉;〈xB,x4〉
+;〈xB,x5〉;〈x6,x6〉;〈x1,xC〉;〈x6,xE〉;〈xA,xF〉;〈x4,x0〉;〈xE,x6〉;〈x4,x9〉;〈x7,xE〉;〈x4,x1〉;〈x1,x8〉;〈x8,x7〉;〈xD,xF〉;〈xB,xB〉;〈x6,x0〉;〈x0,x5〉 ].
+
+ndefinition dTest_random_ex4D ≝
+[〈xF,x4〉;〈x5,xD〉;〈xA,x1〉;〈xD,x6〉;〈x6,x7〉;〈x2,xA〉;〈xC,x8〉;〈x7,x7〉;〈xF,x9〉;〈x8,xA〉;〈xF,x9〉;〈x2,x6〉;〈xE,xF〉;〈x7,x4〉;〈x5,x8〉;〈x6,xA〉
+;〈xC,x8〉;〈x3,x5〉;〈x1,x0〉;〈xC,x5〉;〈x1,xE〉;〈x0,xB〉;〈x8,x3〉;〈x6,xA〉;〈x4,x4〉;〈x8,xD〉;〈x5,xC〉;〈xF,xB〉;〈xF,xE〉;〈x9,x2〉;〈x0,x3〉;〈x4,x3〉 ].
+
+ndefinition dTest_random_ex4E ≝
+[〈x0,x5〉;〈xA,xF〉;〈xC,x0〉;〈xF,x3〉;〈x0,x4〉;〈x2,x8〉;〈x9,xD〉;〈x0,x9〉;〈x3,x5〉;〈xE,x3〉;〈x5,xF〉;〈x4,x5〉;〈xA,xB〉;〈xC,xD〉;〈x8,xC〉;〈xF,xD〉
+;〈x2,xC〉;〈x9,xD〉;〈xA,xF〉;〈x6,x4〉;〈x4,x3〉;〈x8,x0〉;〈x8,x2〉;〈xE,x5〉;〈x8,xE〉;〈x3,xD〉;〈x2,xD〉;〈xD,xB〉;〈xD,xF〉;〈xA,xB〉;〈x0,x8〉;〈x1,x6〉 ].
+
+ndefinition dTest_random_ex4F ≝
+[〈xE,xC〉;〈x7,xE〉;〈xA,x7〉;〈xC,xB〉;〈xD,x8〉;〈x5,xC〉;〈x2,xC〉;〈x8,x8〉;〈x9,x8〉;〈xC,x2〉;〈xA,xD〉;〈x1,xD〉;〈xB,x0〉;〈xB,x1〉;〈xC,xE〉;〈x9,x3〉
+;〈xE,x2〉;〈xF,x4〉;〈xD,xB〉;〈xA,x5〉;〈xB,x6〉;〈x4,x9〉;〈x8,x7〉;〈x1,xD〉;〈xA,x2〉;〈x7,x9〉;〈x3,x5〉;〈xB,xE〉;〈x5,x5〉;〈xC,xD〉;〈x6,x3〉;〈x2,xC〉 ].
+
+ndefinition dTest_random_ex50 ≝
+[〈x1,x0〉;〈x1,xF〉;〈xE,xC〉;〈x3,xB〉;〈x8,xA〉;〈x3,xF〉;〈x3,x8〉;〈x8,x0〉;〈x1,xC〉;〈x2,xD〉;〈x9,x2〉;〈x5,xF〉;〈xE,x1〉;〈xB,x5〉;〈xB,xC〉;〈x8,x3〉
+;〈xB,x6〉;〈x1,xB〉;〈xE,xD〉;〈x4,xF〉;〈x3,xA〉;〈xC,x4〉;〈xF,xE〉;〈xF,xF〉;〈xC,xB〉;〈x8,x1〉;〈x6,x7〉;〈xC,x2〉;〈x5,x9〉;〈xD,xA〉;〈x0,xA〉;〈x9,xC〉 ].
+
+ndefinition dTest_random_ex51 ≝
+[〈x2,x2〉;〈xE,xB〉;〈x9,x3〉;〈xE,x2〉;〈x7,xF〉;〈xA,xC〉;〈x4,xA〉;〈x8,x2〉;〈x8,x1〉;〈x3,xF〉;〈xE,xB〉;〈x8,xB〉;〈x0,xF〉;〈x9,xC〉;〈x4,x1〉;〈x8,x2〉
+;〈x9,xB〉;〈x7,xC〉;〈x5,x1〉;〈xA,x7〉;〈xA,xB〉;〈xA,xD〉;〈x9,x2〉;〈x1,x9〉;〈xF,x0〉;〈xF,xD〉;〈x9,x3〉;〈xF,x6〉;〈xA,xD〉;〈x2,x4〉;〈xC,xB〉;〈xD,xE〉 ].
+
+ndefinition dTest_random_ex52 ≝
+[〈xB,x5〉;〈xA,xB〉;〈x8,x1〉;〈x5,x4〉;〈xA,xE〉;〈x2,x4〉;〈x6,x4〉;〈xD,x2〉;〈xD,x0〉;〈xF,xE〉;〈x3,x3〉;〈x2,xA〉;〈x7,x5〉;〈x0,x7〉;〈x8,xF〉;〈x3,xA〉
+;〈x1,x2〉;〈x9,xF〉;〈xB,xE〉;〈x1,xB〉;〈x1,xB〉;〈x1,xF〉;〈xC,x7〉;〈xF,x1〉;〈x7,xC〉;〈x9,x1〉;〈x5,xD〉;〈x3,x2〉;〈xD,x9〉;〈xD,x6〉;〈xE,xA〉;〈x0,x6〉 ].
+
+ndefinition dTest_random_ex53 ≝
+[〈x5,xB〉;〈x6,x9〉;〈x6,xB〉;〈xA,xC〉;〈x0,x9〉;〈x1,x6〉;〈xA,x3〉;〈xC,xA〉;〈x8,xE〉;〈x8,x3〉;〈x3,x4〉;〈xB,x7〉;〈x4,x1〉;〈x2,x7〉;〈xB,x3〉;〈x0,x1〉
+;〈xE,x6〉;〈x0,x6〉;〈x8,xC〉;〈x0,x4〉;〈x3,xD〉;〈xB,xE〉;〈x2,xC〉;〈x6,x6〉;〈xB,x5〉;〈x8,x6〉;〈x1,x1〉;〈x1,x3〉;〈x6,xD〉;〈xD,x0〉;〈xB,xE〉;〈x8,xD〉 ].
+
+ndefinition dTest_random_ex54 ≝
+[〈xC,x7〉;〈x5,x5〉;〈x0,x2〉;〈xC,x1〉;〈x7,x6〉;〈x5,xF〉;〈x2,x0〉;〈x5,xE〉;〈xE,x4〉;〈x3,xE〉;〈x7,x7〉;〈xE,x1〉;〈x3,xF〉;〈xE,x8〉;〈x6,xC〉;〈x4,xA〉
+;〈xA,x0〉;〈xF,xE〉;〈xC,xE〉;〈x3,xF〉;〈x6,x7〉;〈x9,x4〉;〈x3,xF〉;〈xE,xF〉;〈xE,xF〉;〈x8,x6〉;〈xD,x9〉;〈x4,xA〉;〈x0,x8〉;〈x8,xB〉;〈xC,x8〉;〈x1,xC〉 ].
+
+ndefinition dTest_random_ex55 ≝
+[〈xA,xD〉;〈x2,x0〉;〈xA,x7〉;〈x8,xC〉;〈x0,x6〉;〈x6,x7〉;〈xA,xF〉;〈x7,x3〉;〈xC,xD〉;〈x1,x6〉;〈x8,x4〉;〈x3,x2〉;〈xD,x0〉;〈xF,x3〉;〈xD,xC〉;〈xD,xB〉
+;〈xB,x7〉;〈x2,x4〉;〈x6,xA〉;〈x6,x3〉;〈x1,xC〉;〈xA,x1〉;〈xD,xE〉;〈xB,xC〉;〈x9,x2〉;〈xF,x1〉;〈x5,xC〉;〈xE,x7〉;〈xE,x0〉;〈xD,x5〉;〈xA,x4〉;〈x4,xA〉 ].
+
+ndefinition dTest_random_ex56 ≝
+[〈x0,x0〉;〈xD,x6〉;〈x2,x2〉;〈x9,xC〉;〈x5,x2〉;〈x8,xF〉;〈xE,x8〉;〈x2,x2〉;〈xA,x2〉;〈xF,x0〉;〈x9,x8〉;〈x3,x8〉;〈x0,xD〉;〈xF,x6〉;〈x4,x3〉;〈x7,x9〉
+;〈x8,x2〉;〈xA,xF〉;〈xD,x5〉;〈xC,x1〉;〈x8,x2〉;〈x5,x2〉;〈xD,xB〉;〈x8,xF〉;〈x7,xE〉;〈xD,x1〉;〈x9,xD〉;〈xA,x6〉;〈x8,xE〉;〈x9,xE〉;〈xA,x9〉;〈x8,xE〉 ].
+
+ndefinition dTest_random_ex57 ≝
+[〈xD,x1〉;〈xF,x6〉;〈xB,x0〉;〈xE,xA〉;〈x8,x3〉;〈xE,x9〉;〈xF,x7〉;〈x3,xB〉;〈x4,xA〉;〈x0,x9〉;〈x1,xE〉;〈x3,x2〉;〈xD,x2〉;〈x5,xD〉;〈xD,x7〉;〈xA,xB〉
+;〈x4,xD〉;〈x6,xF〉;〈x5,x9〉;〈xF,xC〉;〈x4,x3〉;〈x4,x1〉;〈x0,x0〉;〈x3,xC〉;〈x9,x4〉;〈x5,x2〉;〈x5,x9〉;〈x6,xC〉;〈x6,xE〉;〈xE,x8〉;〈x6,x6〉;〈xF,x5〉 ].
+
+ndefinition dTest_random_ex58 ≝
+[〈x9,xC〉;〈x5,x7〉;〈x6,xC〉;〈xE,x2〉;〈x3,xB〉;〈xA,x2〉;〈x2,x1〉;〈xE,xE〉;〈xF,x6〉;〈x4,xF〉;〈xF,x3〉;〈x6,x2〉;〈xD,xB〉;〈x8,xF〉;〈x6,x4〉;〈xD,x3〉
+;〈x8,x0〉;〈x6,x9〉;〈x9,x7〉;〈x4,x7〉;〈x8,xB〉;〈xB,x6〉;〈x3,x8〉;〈x4,x5〉;〈xB,xE〉;〈x0,xD〉;〈x6,x1〉;〈xC,xF〉;〈x7,x8〉;〈xC,xF〉;〈x4,x1〉;〈x7,xF〉 ].
+
+ndefinition dTest_random_ex59 ≝
+[〈xF,x4〉;〈x5,xA〉;〈x8,xB〉;〈x7,x2〉;〈xE,x6〉;〈x7,xD〉;〈x4,xC〉;〈x1,x8〉;〈xE,xE〉;〈x3,xA〉;〈x1,x2〉;〈x9,x4〉;〈x3,x4〉;〈x3,x0〉;〈x3,x9〉;〈x0,x0〉
+;〈x9,x5〉;〈x6,x0〉;〈xF,xA〉;〈x7,xF〉;〈xA,x6〉;〈xC,x7〉;〈xB,x1〉;〈x7,xE〉;〈x0,xD〉;〈x2,x4〉;〈xF,xF〉;〈x4,x3〉;〈x7,x8〉;〈x8,x8〉;〈x6,xC〉;〈x0,x7〉 ].
+
+ndefinition dTest_random_ex5A ≝
+[〈x7,x3〉;〈x9,x2〉;〈xC,x8〉;〈x0,xB〉;〈x5,x0〉;〈x9,x7〉;〈xF,x4〉;〈x1,xB〉;〈xD,xB〉;〈x4,x5〉;〈x6,x2〉;〈x9,x1〉;〈x8,x7〉;〈x5,xD〉;〈xF,x5〉;〈x6,x1〉
+;〈x3,x8〉;〈xF,x3〉;〈x8,xA〉;〈x4,xF〉;〈xD,xB〉;〈x3,xD〉;〈x4,x3〉;〈x2,xF〉;〈xB,xA〉;〈xA,x9〉;〈xB,x4〉;〈xA,x9〉;〈x2,x6〉;〈x7,xE〉;〈x8,xC〉;〈x1,x6〉 ].
+
+ndefinition dTest_random_ex5B ≝
+[〈xF,xC〉;〈x1,xC〉;〈xA,x7〉;〈x9,xD〉;〈x7,xC〉;〈x8,x5〉;〈xA,x7〉;〈x3,x5〉;〈x8,x6〉;〈x4,xF〉;〈xC,x8〉;〈x9,xA〉;〈x0,xD〉;〈x2,x4〉;〈x0,x4〉;〈x5,x8〉
+;〈x4,x2〉;〈x3,x0〉;〈x7,x5〉;〈x8,xD〉;〈xB,xC〉;〈x7,x2〉;〈x3,x4〉;〈xF,x9〉;〈x4,x6〉;〈x5,xE〉;〈xF,x4〉;〈x5,xC〉;〈x6,x7〉;〈x0,x4〉;〈x8,x8〉;〈x2,x8〉 ].
+
+ndefinition dTest_random_ex5C ≝
+[〈xA,x9〉;〈xE,xC〉;〈xE,xC〉;〈x7,xC〉;〈x4,x6〉;〈x6,xE〉;〈x1,xC〉;〈xD,x9〉;〈xC,x0〉;〈x6,x1〉;〈x5,x8〉;〈x5,xE〉;〈x3,x7〉;〈xB,x0〉;〈x9,x9〉;〈x9,x7〉
+;〈xA,x0〉;〈x9,xB〉;〈x7,x7〉;〈x4,xA〉;〈xD,x0〉;〈xB,x5〉;〈x1,xD〉;〈xA,x6〉;〈x4,xA〉;〈xC,x5〉;〈x3,xA〉;〈x9,x4〉;〈xB,x4〉;〈x5,x0〉;〈x0,x6〉;〈xC,x0〉 ].
+
+ndefinition dTest_random_ex5D ≝
+[〈xA,x8〉;〈x0,x2〉;〈x5,xF〉;〈x0,xE〉;〈x2,x1〉;〈x0,x3〉;〈xB,x1〉;〈x9,x6〉;〈x0,x2〉;〈x9,x7〉;〈x8,x0〉;〈x1,xA〉;〈x0,xB〉;〈x3,xD〉;〈x2,x1〉;〈x7,xF〉
+;〈x0,x3〉;〈x2,x9〉;〈x3,x2〉;〈x6,x6〉;〈xB,xF〉;〈x3,xB〉;〈x5,x7〉;〈x5,x3〉;〈xE,x7〉;〈xD,x5〉;〈xE,x5〉;〈x4,x5〉;〈xA,x3〉;〈x1,xA〉;〈x1,xB〉;〈xF,x8〉 ].
+
+ndefinition dTest_random_ex5E ≝
+[〈xC,xF〉;〈xB,x3〉;〈x9,x5〉;〈x5,x9〉;〈x4,xE〉;〈x6,x4〉;〈x4,x3〉;〈xF,x4〉;〈x2,x5〉;〈xC,xC〉;〈x6,x1〉;〈x3,x5〉;〈xD,xF〉;〈x3,x6〉;〈x5,x5〉;〈xC,xF〉
+;〈x9,xA〉;〈x1,x1〉;〈xF,x6〉;〈xD,x4〉;〈x4,xF〉;〈x9,xB〉;〈xA,xF〉;〈xF,x2〉;〈x0,x3〉;〈x1,x9〉;〈x9,xB〉;〈xA,xB〉;〈xC,x4〉;〈x1,x9〉;〈xA,x1〉;〈xE,xA〉 ].
+
+ndefinition dTest_random_ex5F ≝
+[〈x1,xB〉;〈x2,x5〉;〈xA,xD〉;〈xA,xA〉;〈x0,x0〉;〈x5,xB〉;〈x9,xD〉;〈x6,xF〉;〈x8,x8〉;〈x6,xF〉;〈x3,x0〉;〈x8,x5〉;〈xC,x6〉;〈x1,x7〉;〈x5,x7〉;〈x1,x1〉
+;〈xA,xB〉;〈x0,x2〉;〈xD,xD〉;〈x9,x2〉;〈x4,xD〉;〈x8,x2〉;〈x0,x2〉;〈x3,x5〉;〈xC,xB〉;〈x4,x4〉;〈xA,x4〉;〈x4,x1〉;〈xD,x5〉;〈x1,x2〉;〈xE,x7〉;〈x4,xD〉 ].
+
+ndefinition dTest_random_32 ≝ 
+ dTest_random_ex00.
+
+ndefinition dTest_random_64 ≝ 
+ dTest_random_32@dTest_random_ex01.
+
+ndefinition dTest_random_128 ≝ 
+ dTest_random_64@dTest_random_ex02@dTest_random_ex03.
+
+ndefinition dTest_random_256 ≝ 
+ dTest_random_128@
+ dTest_random_ex04@dTest_random_ex05@dTest_random_ex06@dTest_random_ex07.
+
+ndefinition dTest_random_512 ≝ 
+ dTest_random_256@
+ dTest_random_ex08@dTest_random_ex09@dTest_random_ex0A@dTest_random_ex0B@
+ dTest_random_ex0C@dTest_random_ex0D@dTest_random_ex0E@dTest_random_ex0F.
+
+ndefinition dTest_random_1024 ≝ 
+ dTest_random_512@
+ dTest_random_ex10@dTest_random_ex11@dTest_random_ex12@dTest_random_ex13@
+ dTest_random_ex14@dTest_random_ex15@dTest_random_ex16@dTest_random_ex17@
+ dTest_random_ex18@dTest_random_ex19@dTest_random_ex1A@dTest_random_ex1B@
+ dTest_random_ex1C@dTest_random_ex1D@dTest_random_ex1E@dTest_random_ex1F.
+
+ndefinition dTest_random_2048 ≝ 
+ dTest_random_1024@
+ dTest_random_ex20@dTest_random_ex21@dTest_random_ex22@dTest_random_ex23@
+ dTest_random_ex24@dTest_random_ex25@dTest_random_ex26@dTest_random_ex27@
+ dTest_random_ex28@dTest_random_ex29@dTest_random_ex2A@dTest_random_ex2B@
+ dTest_random_ex2C@dTest_random_ex2D@dTest_random_ex2E@dTest_random_ex2F@
+ dTest_random_ex30@dTest_random_ex31@dTest_random_ex32@dTest_random_ex33@
+ dTest_random_ex34@dTest_random_ex35@dTest_random_ex36@dTest_random_ex37@
+ dTest_random_ex38@dTest_random_ex39@dTest_random_ex3A@dTest_random_ex3B@
+ dTest_random_ex3C@dTest_random_ex3D@dTest_random_ex3E@dTest_random_ex3F.
+
+ndefinition dTest_random_3072 ≝ 
+ dTest_random_2048@
+ dTest_random_ex40@dTest_random_ex41@dTest_random_ex42@dTest_random_ex43@
+ dTest_random_ex44@dTest_random_ex45@dTest_random_ex46@dTest_random_ex47@
+ dTest_random_ex48@dTest_random_ex49@dTest_random_ex4A@dTest_random_ex4B@
+ dTest_random_ex4C@dTest_random_ex4D@dTest_random_ex4E@dTest_random_ex4F@
+ dTest_random_ex50@dTest_random_ex51@dTest_random_ex52@dTest_random_ex53@
+ dTest_random_ex54@dTest_random_ex55@dTest_random_ex56@dTest_random_ex57@
+ dTest_random_ex58@dTest_random_ex59@dTest_random_ex5A@dTest_random_ex5B@
+ dTest_random_ex5C@dTest_random_ex5D@dTest_random_ex5E@dTest_random_ex5F.
+
+(* campitura di 128 0x00 *)
+ndefinition dTest_bytes_aux : list byte8 ≝
+[
+〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;
+〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;
+〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;
+〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;
+〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;
+〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;
+〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;
+〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉;〈x0,x0〉
+].
+
+(* blocco di 0x00 lungo 0x0380 da caricare dopo dati per azzerare
+   counters, index, position, e stack di esecuzione *)
+ndefinition dTest_zeros : list byte8 ≝
+ dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux.
+
+ndefinition dTest_zeros3K : list byte8 ≝
+  dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux@
+  dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux@
+  dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux@
+  dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux@dTest_bytes_aux.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests1.ma b/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests1.ma
new file mode 100755 (executable)
index 0000000..1535d43
--- /dev/null
@@ -0,0 +1,143 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale_tests/micro_tests_tools.ma".
+include "freescale/multivm.ma".
+include "freescale/status_lemmas.ma".
+
+(* ****************************************** *)
+(* MICRO TEST DI CORRETTEZZA DELLE ISTRUZIONI *)
+(* ****************************************** *)
+
+(* ********* *)
+(* HCS08 ADC *)
+(* ********* *)
+
+ndefinition mTest_HCS08_ADC_source ≝ let m ≝ HCS08 in source_to_byte8 m (
+(* testa la logica di ADC e le modalita' IMM1,DIR1/2,IX0/1/2,SP1/2 *)
+(* BEFORE: A=0x00 H:X=0xFF50 PC=0x1860 SP=0x0110 C=true *)
+(* [0x1860] 2clk *) (compile m ? ADC (maIMM1 〈xA,xA〉) I) @           (* AFTER1: imm1=0xAA quindi 0x00+imm1+true=A:0xAB C:false *)
+(* [0x1862] 3clk *) (compile m ? ADC (maDIR1 〈xF,xF〉) I) @           (* AFTER2: dir1=[0x00FF]=0x8F quindi 0xAB+dir1+false=A:0x3A C:true *)
+(* [0x1864] 4clk *) (compile m ? ADC (maDIR2 〈〈xF,xF〉:〈x1,x1〉〉) I) @ (* AFTER3: dir2=[0xFF11]=0x11 quindi 0x3A+dir2+true=A:0x4C C:false *)
+(* [0x1867] 4clk *) (compile m ? ADC (maIX2 〈〈xF,xF〉:〈xF,x0〉〉) I) @  (* AFTER4: ix2=[X+0xFFF0]=[0xFF40]=0x40 quindi 0x4C+ix2+false=A:0x8C C:false *)
+(* [0x186A] 3clk *) (compile m ? ADC (maIX1 〈x2,x4〉) I) @            (* AFTER5: ix1=[X+0x0024]=[0xFF74]=0x74 quindi 0x8C+ix1+false=A:0x00 C:true *)
+(* [0x186C] 3clk *) (compile m ? ADC maIX0 I) @                      (* AFTER6: ix0=[X]=[0xFF50]=0x50 quindi 0x00+ix0+true=A:0x51 C:false *)
+(* [0x186D] 5clk *) (compile m ? ADC (maSP2 〈〈xF,xF〉:〈x6,x1〉〉) I) @  (* AFTER7: sp2=[SP+0xFF61]=[0x0071]=0x01 quindi 0x51+sp2+false=A:0x52 C:false *)
+(* [0x1871] 4clk *) (compile m ? ADC (maSP1 〈x2,x4〉) I)              (* AFTER8: sp1=[SP+0x0024]=[0x0134]=0xC4 quindi 0x52+sp1+false=A:0x16 C:true *)
+(* [0x1874] si puo' quindi enunciare che dopo 2+3+4+4+3+3+5+4=28 clk *)
+(*          A<-0x16 PC<-0x1874 *)
+).
+
+(* creazione del processore+caricamento+impostazione registri *)
+ndefinition mTest_HCS08_ADC_status ≝
+λt:memory_impl.
+ set_c_flag HCS08 t (* C<-true *)
+  (setweak_sp_reg HCS08 t (* SP<-0x0110 *)
+   (setweak_indX_16_reg HCS08 t (* H:X<-0xFF50 *)
+    (set_pc_reg HCS08 t (* PC<-mTest_HCS08_prog *)
+     (start_of_mcu_version_HCS08
+      MC9S08AW60 t
+      (load_from_source_at t (* carica mTest_bytes in ROM:mTest_HCS08_data *)
+       (load_from_source_at t (* carica mTest_bytes in RAM:mTest_HCS08_RAM *)
+        (load_from_source_at t (zero_memory t) (* carica source in ROM:mTest_HCS08_prog *)
+          mTest_HCS08_ADC_source mTest_HCS08_prog)
+         mTest_bytes mTest_HCS08_RAM)
+        mTest_bytes mTest_HCS08_data)
+      (build_memory_type_of_mcu_version (FamilyHCS08 MC9S08AW60) t)
+      (mk_byte8 x0 x0) (mk_byte8 x0 x0) (* non deterministici tutti a 0 *)
+      false false false false false false) (* non deterministici tutti a 0 *)
+     mTest_HCS08_prog)
+    (mk_word16 〈xF,xF〉 〈x5,x0〉))
+   (mk_word16 〈x0,x1〉 〈x1,x0〉))
+  true.
+
+(* dimostrazione senza svolgimento degli stati, immediata *)
+nlemma ok_mTest_HCS08_ADC_full :
+ ∀t:memory_impl.
+ execute HCS08 t (TickOK ? (mTest_HCS08_ADC_status t)) nat28 =
+ (* NB: V,N,Z sono tornati false C e' tornato true *)
+ TickOK ? (set_pc_reg HCS08 t (* nuovo PC *)
+           (set_acc_8_low_reg HCS08 t (mTest_HCS08_ADC_status t) 〈x1,x6〉) (* nuovo A *)
+            (mk_word16 〈x1,x8〉 〈x7,x4〉)).
+ #t; nelim t;
+ (* esempio per svoglimento degli stati manualmente
+ [ 1:
+  letin BEFORE ≝ (get_alu HCS08 MEM_FUNC (mTest_HCS08_ADC_status MEM_FUNC));
+  normalize in BEFORE:(%);
+
+ letin AFTER_ALU1 ≝ (match execute HCS08 MEM_FUNC (TickOK ? (mTest_HCS08_ADC_status MEM_FUNC)) 2 with
+  [ TickERR _ _ ⇒ BEFORE 
+  | TickSUSP _ _ ⇒ BEFORE 
+  | TickOK s ⇒ get_alu HCS08 MEM_FUNC s ]);
+ normalize in AFTER_ALU1:(%);
+
+ letin AFTER_ALU2 ≝ (match execute HCS08 MEM_FUNC (TickOK ? 
+                     (set_alu HCS08 MEM_FUNC (mTest_HCS08_ADC_status MEM_FUNC) AFTER_ALU1)) 3 with
+  [ TickERR _ _ ⇒ BEFORE 
+  | TickSUSP _ _ ⇒ BEFORE 
+  | TickOK s ⇒ get_alu HCS08 MEM_FUNC s ]);
+ normalize in AFTER_ALU2:(%);
+
+  letin AFTER_ALU3 ≝ (match execute HCS08 MEM_FUNC (TickOK ? 
+                     (set_alu HCS08 MEM_FUNC (mTest_HCS08_ADC_status MEM_FUNC) AFTER_ALU2)) 4 with
+  [ TickERR _ _ ⇒ BEFORE 
+  | TickSUSP _ _ ⇒ BEFORE 
+  | TickOK s ⇒ get_alu HCS08 MEM_FUNC s ]);
+ normalize in AFTER_ALU3:(%);  
+
+ letin AFTER_ALU4 ≝ (match execute HCS08 MEM_FUNC (TickOK ? 
+                     (set_alu HCS08 MEM_FUNC (mTest_HCS08_ADC_status MEM_FUNC) AFTER_ALU3)) 4 with
+  [ TickERR _ _ ⇒ BEFORE 
+  | TickSUSP _ _ ⇒ BEFORE 
+  | TickOK s ⇒ get_alu HCS08 MEM_FUNC s ]);
+ normalize in AFTER_ALU4:(%); 
+
+ letin AFTER_ALU5 ≝ (match execute HCS08 MEM_FUNC (TickOK ? 
+                     (set_alu HCS08 MEM_FUNC (mTest_HCS08_ADC_status MEM_FUNC) AFTER_ALU4)) 3 with
+  [ TickERR _ _ ⇒ BEFORE 
+  | TickSUSP _ _ ⇒ BEFORE 
+  | TickOK s ⇒ get_alu HCS08 MEM_FUNC s ]);
+ normalize in AFTER_ALU5:(%); 
+
+ letin AFTER_ALU6 ≝ (match execute HCS08 MEM_FUNC (TickOK ? 
+                     (set_alu HCS08 MEM_FUNC (mTest_HCS08_ADC_status MEM_FUNC) AFTER_ALU5)) 3 with
+  [ TickERR _ _ ⇒ BEFORE 
+  | TickSUSP _ _ ⇒ BEFORE 
+  | TickOK s ⇒ get_alu HCS08 MEM_FUNC s ]);
+ normalize in AFTER_ALU6:(%); 
+
+ letin AFTER_ALU7 ≝ (match execute HCS08 MEM_FUNC (TickOK ? 
+                     (set_alu HCS08 MEM_FUNC (mTest_HCS08_ADC_status MEM_FUNC) AFTER_ALU6)) 5 with
+  [ TickERR _ _ ⇒ BEFORE 
+  | TickSUSP _ _ ⇒ BEFORE 
+  | TickOK s ⇒ get_alu HCS08 MEM_FUNC s ]);
+ normalize in AFTER_ALU7:(%); 
+
+ letin AFTER_ALU8 ≝ (match execute HCS08 MEM_FUNC (TickOK ? 
+                     (set_alu HCS08 MEM_FUNC (mTest_HCS08_ADC_status MEM_FUNC) AFTER_ALU7)) 4 with
+  [ TickERR _ _ ⇒ BEFORE
+  | TickSUSP _ _ ⇒ BEFORE
+  | TickOK s ⇒ get_alu HCS08 MEM_FUNC s ]);
+ normalize in AFTER_ALU8:(%); *) 
+
+ napply refl_eq.
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests10.ma b/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests10.ma
new file mode 100755 (executable)
index 0000000..c9b6576
--- /dev/null
@@ -0,0 +1,103 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale_tests/micro_tests_tools.ma".
+include "freescale/multivm.ma".
+include "freescale/status_lemmas.ma".
+
+(* ****************************************** *)
+(* MICRO TEST DI CORRETTEZZA DELLE ISTRUZIONI *)
+(* ****************************************** *)
+
+(* ************************ *)
+(* TEST SU GRANULARITA' BIT *)
+(* ************************ *)
+
+ndefinition mTest_bits_source ≝ let m ≝ HCS08 in source_to_byte8 m (
+(* BEFORE: va a testare [0x0070]=0x00 *)
+(* [0x1860] 4clk *) (compile m ? MOV (maIMM1_to_DIR1 〈xF,xF〉 〈x7,x0〉) I)
+(* [0x1863] *)
+).
+
+(* creazione del processore+caricamento+impostazione registri *)
+ndefinition mTest_bits_status ≝
+λt:memory_impl.
+λsub:oct.
+λb:byte8.
+ setweak_n_flag HCS08 t (* N<-1 *)
+  (set_pc_reg HCS08 t (* PC<-mTest_HCS08_prog *)
+   (start_of_mcu_version_HCS08
+    MC9S08AW60 t
+    (load_from_source_at t
+     (load_from_source_at t (zero_memory t) (* carica b in RAM:mTest_HCS08_RAM *)
+       mTest_bits_source mTest_HCS08_prog) (* carica source in ROM:mTest_HCS08_prog *)
+      [ b ] mTest_HCS08_RAM)
+    (check_update_bit t (* setta mTest_HCS08_RAM,o come ROM *)
+     (build_memory_type_of_mcu_version (FamilyHCS08 MC9S08AW60) t)
+     mTest_HCS08_RAM sub MEM_READ_ONLY)
+    (mk_byte8 x0 x0) (mk_byte8 x0 x0) (* non deterministici tutti a 0 *)
+    false false false false false false) (* non deterministici tutti a 0 *)
+   mTest_HCS08_prog)
+  true.
+
+(* dimostrazione senza svolgimento degli stati, immediata *)
+nlemma ok_mTest_bits_MEM_BITS_full :
+ ∀sub:oct.
+ execute HCS08 MEM_BITS (TickOK ? (mTest_bits_status MEM_BITS sub 〈x0,x0〉)) nat4 =
+ TickOK ? (set_pc_reg HCS08 MEM_BITS (mTest_bits_status MEM_BITS sub (byte8_of_bits (setn_array8T sub ? (bits_of_byte8 〈xF,xF〉) false))) (* nuovo PC *)
+           (mk_word16 〈x1,x8〉 〈x6,x3〉)).
+ #sub; nelim sub;
+ napply refl_eq.
+nqed.
+
+(* NB: la memoria e' cambiata e bisogna applicare eq_status *)
+nlemma ok_mTest_bits_MEM_FUNC_full :
+∀sub:oct.
+ eq_anystatus HCS08 MEM_FUNC
+  (match execute HCS08 MEM_FUNC (TickOK ? (mTest_bits_status MEM_FUNC sub 〈x0,x0〉)) nat4
+   with [ TickERR s _ ⇒ s | TickSUSP s _ ⇒ s | TickOK s ⇒ s ])
+  (set_pc_reg HCS08 MEM_FUNC (mTest_bits_status MEM_FUNC sub 〈xF,xF〉) (* nuovo PC *) 〈〈x1,x8〉:〈x6,x3〉〉)
+  [ 〈〈x0,x0〉:〈x7,x0〉〉 ] = true.
+ #sub; nelim sub; 
+ napply (eq_to_eqanystatus_weak [ 〈〈x0,x0〉:〈x7,x0〉〉 ] HCS08 MEM_FUNC
+        (match execute HCS08 MEM_FUNC (TickOK ? (mTest_bits_status MEM_FUNC sub 〈x0,x0〉)) nat4
+         with [ TickERR s _ ⇒ s | TickSUSP s _ ⇒ s | TickOK s ⇒ s ])
+        (set_pc_reg HCS08 MEM_FUNC (mTest_bits_status MEM_FUNC sub 〈xF,xF〉) (* nuovo PC *) 〈〈x1,x8〉:〈x6,x3〉〉));
+ nnormalize in ⊢ (? ? ? %);
+ napply refl_eq.
+nqed.
+
+nlemma ok_mTest_bits_MEM_TREE_full :
+∀sub:oct.
+ eq_anystatus HCS08 MEM_TREE
+  (match execute HCS08 MEM_TREE (TickOK ? (mTest_bits_status MEM_TREE sub 〈x0,x0〉)) nat4
+   with [ TickERR s _ ⇒ s | TickSUSP s _ ⇒ s | TickOK s ⇒ s ])
+  (set_pc_reg HCS08 MEM_TREE (mTest_bits_status MEM_TREE sub 〈xF,xF〉) (* nuovo PC *) 〈〈x1,x8〉:〈x6,x3〉〉)
+  [ 〈〈x0,x0〉:〈x7,x0〉〉 ] = true.
+ #sub; nelim sub; 
+ napply (eq_to_eqanystatus_weak [ 〈〈x0,x0〉:〈x7,x0〉〉 ] HCS08 MEM_TREE
+        (match execute HCS08 MEM_TREE (TickOK ? (mTest_bits_status MEM_TREE sub 〈x0,x0〉)) nat4
+         with [ TickERR s _ ⇒ s | TickSUSP s _ ⇒ s | TickOK s ⇒ s ])
+        (set_pc_reg HCS08 MEM_TREE (mTest_bits_status MEM_TREE sub 〈xF,xF〉) (* nuovo PC *) 〈〈x1,x8〉:〈x6,x3〉〉));
+ nnormalize in ⊢ (? ? ? %);
+ napply refl_eq.
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests2.ma b/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests2.ma
new file mode 100755 (executable)
index 0000000..d7515db
--- /dev/null
@@ -0,0 +1,87 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale_tests/micro_tests_tools.ma".
+include "freescale/multivm.ma".
+include "freescale/status_lemmas.ma".
+
+(* ****************************************** *)
+(* MICRO TEST DI CORRETTEZZA DELLE ISTRUZIONI *)
+(* ****************************************** *)
+
+(* ********* *)
+(* HCS08 MOV *)
+(* ********* *)
+
+ndefinition mTest_HCS08_MOV_source ≝ let m ≝ HCS08 in source_to_byte8 m (
+(* testa la logica di MOV e le modalita' xxx_to_xxx *)
+(* BEFORE: H:X=0x0071 PC=0x1860 *)
+(* [0x1860] 4clk *) (compile m ? MOV (maIMM1_to_DIR1 〈x3,xA〉 〈x7,x0〉) I) @ (* 0x3A in [0x0070] *)
+(* [0x1863] 5clk *) (compile m ? MOV (maDIR1_to_DIR1 〈x7,x0〉 〈x7,x1〉) I) @ (* [0x0070] in [0x0071] *)
+(* [0x1866] 5clk *) (compile m ? MOV (maIX0p_to_DIR1 〈x7,x2〉) I) @         (* [X++=0x0071] in [0x0072] *)
+(* [0x1868] 5clk *) (compile m ? MOV (maDIR1_to_IX0p 〈x7,x2〉) I)           (* [0x0072] in [X++=0x0072] *)
+(* [0x186A] si puo' quindi enunciare che dopo 4+5+5+5=19 clk *)
+(*          PC<-0x186A X<-0x0073 *)
+).
+
+(* creazione del processore+caricamento+impostazione registri *)
+ndefinition mTest_HCS08_MOV_status ≝
+λt:memory_impl.
+λb1,b2,b3:byte8.
+ setweak_indX_16_reg HCS08 t (* H:X<-0x0071 *)
+  (set_pc_reg HCS08 t (* PC<-mTest_HCS08_prog *)
+   (start_of_mcu_version_HCS08
+    MC9S08AW60 t
+    (load_from_source_at t (* carica b1-3 in RAM:mTest_HCS08_RAM *)
+     (load_from_source_at t (zero_memory t) (* carica source in ROM:mTest_HCS08_prog *)
+       mTest_HCS08_MOV_source mTest_HCS08_prog)
+     [ b1 ; b2 ; b3 ] mTest_HCS08_RAM)
+    (build_memory_type_of_mcu_version (FamilyHCS08 MC9S08AW60) t)
+    (mk_byte8 x0 x0) (mk_byte8 x0 x0) (* non deterministici tutti a 0 *)
+    false false false false false false) (* non deterministici tutti a 0 *)
+   mTest_HCS08_prog)
+  (mk_word16 〈x0,x0〉 〈x7,x1〉).
+
+(* dimostrazione senza svolgimento degli stati, immediata *)
+(* NB: la memoria e' cambiata e bisogna applicare eq_status *)
+nlemma ok_mTest_HCS08_MOV_full :
+∀t:memory_impl.
+ eq_anystatus HCS08 t
+  (match execute HCS08 t (TickOK ? (mTest_HCS08_MOV_status t 〈x0,x0〉 〈x0,x0〉 〈x0,x0〉)) nat19
+   with [ TickERR s _ ⇒ s | TickSUSP s _ ⇒ s | TickOK s ⇒ s ])
+  (setweak_indX_16_reg HCS08 t (* H:X *) 
+   (set_pc_reg HCS08 t (mTest_HCS08_MOV_status t 〈x3,xA〉 〈x3,xA〉 〈x3,xA〉) (* PC *)
+    (mk_word16 〈x1,x8〉 〈x6,xA〉))
+     (mk_word16 〈x0,x0〉 〈x7,x3〉))
+  [ 〈〈x0,x0〉:〈x7,x0〉〉 ; 〈〈x0,x0〉:〈x7,x1〉〉 ; 〈〈x0,x0〉:〈x7,x2〉〉 ] = true.
+ #t; 
+ napply (eq_to_eqanystatus_weak [ 〈〈x0,x0〉:〈x7,x0〉〉 ; 〈〈x0,x0〉:〈x7,x1〉〉 ; 〈〈x0,x0〉:〈x7,x2〉〉 ] HCS08 t
+        (match execute HCS08 t (TickOK ? (mTest_HCS08_MOV_status t 〈x0,x0〉 〈x0,x0〉 〈x0,x0〉)) nat19
+         with [ TickERR s _ ⇒ s | TickSUSP s _ ⇒ s | TickOK s ⇒ s ])
+        (setweak_indX_16_reg HCS08 t (* H:X *) 
+         (set_pc_reg HCS08 t (mTest_HCS08_MOV_status t 〈x3,xA〉 〈x3,xA〉 〈x3,xA〉) (* PC *)
+          (mk_word16 〈x1,x8〉 〈x6,xA〉))
+           (mk_word16 〈x0,x0〉 〈x7,x3〉)));
+ nelim t;
+ nnormalize in ⊢ (? ? ? %);
+ napply refl_eq.
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests3.ma b/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests3.ma
new file mode 100755 (executable)
index 0000000..71bd379
--- /dev/null
@@ -0,0 +1,76 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale_tests/micro_tests_tools.ma".
+include "freescale/multivm.ma".
+include "freescale/status_lemmas.ma".
+
+(* ****************************************** *)
+(* MICRO TEST DI CORRETTEZZA DELLE ISTRUZIONI *)
+(* ****************************************** *)
+
+(* ************* *)
+(* HCS08 ROL/ROR *)
+(* ************* *)
+
+ndefinition mTest_HCS08_ROL_ROR_source ≝ let m ≝ HCS08 in source_to_byte8 m (
+(* testa la logica di ROL/ROR e le modalita' IMM2,INHx *)
+(* BEFORE: A=0x00 H:X=0x0000 PC=0x1860 Z=true *)
+(* [0x1860] 3clk *) (compile m ? LDHX (maIMM2 〈〈x1,x2〉:〈x3,x4〉〉) I) @
+(* [0x1863] 2clk *) (compile m ? LDA (maIMM1 〈x5,x6〉) I) @
+(* [0x1865] 1clk *) (compile m ? ROL maINHA I) @
+(* [0x1866] 1clk *) (compile m ? ROL maINHX I) @
+(* [0x1867] 1clk *) (compile m ? ROR maINHA I) @
+(* [0x1868] 1clk *) (compile m ? ROR maINHX I) @
+(* [0x1869] 1clk *) (compile m ? CLR maINHA I) @
+(* [0x186A] 1clk *) (compile m ? CLR maINHX I) @
+(* [0x186B] 1clk *) (compile m ? CLR maINHH I)
+(* [0x186C] si puo' quindi enunciare che dopo 3+2+1+1+1+1+1+1+1=12 clk *)
+(*          PC<-0x186C *)
+).
+
+(* creazione del processore+caricamento+impostazione registri *)
+ndefinition mTest_HCS08_ROL_ROR_status ≝
+λt:memory_impl.
+ set_z_flag HCS08 t (* Z<-true *)
+  (setweak_indX_16_reg HCS08 t (* H:X<-0x0000 *)
+   (set_pc_reg HCS08 t (* PC<-mTest_HCS08_prog *)
+    (start_of_mcu_version_HCS08
+     MC9S08AW60 t
+     (load_from_source_at t (zero_memory t) (* carica source in ROM:mTest_HCS08_prog *)
+      mTest_HCS08_ROL_ROR_source mTest_HCS08_prog)
+     (build_memory_type_of_mcu_version (FamilyHCS08 MC9S08AW60) t)
+     (mk_byte8 x0 x0) (mk_byte8 x0 x0) (* non deterministici tutti a 0 *)
+     false false false false false false) (* non deterministici tutti a 0 *)
+    mTest_HCS08_prog)
+   (mk_word16 (mk_byte8 x0 x0) (mk_byte8 x0 x0)))
+  true.
+
+(* dimostrazione senza svolgimento degli stati, immediata *)
+nlemma ok_mTest_HCS08_ROL_ROR_full :
+ ∀t:memory_impl.
+ execute HCS08 t (TickOK ? (mTest_HCS08_ROL_ROR_status t)) nat12 =
+ TickOK ? (set_pc_reg HCS08 t (* nuovo PC *)
+           (mTest_HCS08_ROL_ROR_status t) (mk_word16 〈x1,x8〉 〈x6,xC〉)).
+ #t; nelim t;
+ napply refl_eq.
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests4.ma b/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests4.ma
new file mode 100755 (executable)
index 0000000..c2f055c
--- /dev/null
@@ -0,0 +1,152 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale_tests/micro_tests_tools.ma".
+include "freescale/multivm.ma".
+include "freescale/status_lemmas.ma".
+
+(* ****************************************** *)
+(* MICRO TEST DI CORRETTEZZA DELLE ISTRUZIONI *)
+(* ****************************************** *)
+
+(* **************** *)
+(* HCS08 CBEQx/DBNZ *)
+(* **************** *)
+
+ndefinition mTest_HCS08_CBEQ_DBNZ_source ≝ let m ≝ HCS08 in source_to_byte8 m (
+(* testa la logica di CBEQx/DBNZ e le modalita' xxx_and_IMM1 *)
+(* BEFORE: H:X=0x006F SP=0x006F PC=0x1860 *)
+(* [0x1860] 5clk *) (compile m ? CBEQA (maDIR1_and_IMM1 〈x7,x1〉 〈x0,x1〉) I) @
+(* [0x1863] 1clk *) (compile m ? NOP maINH I) @                               (* eseguito: A≠[0x0071]=0x01 *)
+(* [0x1864] 4clk *) (compile m ? CBEQA (maIMM1_and_IMM1 〈x0,x0〉 〈x0,x1〉) I) @
+(* [0x1867] 1clk *) (compile m ? NOP maINH I) @                               (* non eseguito: A=0x00 *)
+(* [0x1868] 4clk *) (compile m ? CBEQX (maIMM1_and_IMM1 〈x6,xF〉 〈x0,x1〉) I) @
+(* [0x186B] 1clk *) (compile m ? NOP maINH I) @                               (* non eseguito: X=0x6F *)
+(* [0x186C] 5clk *) (compile m ? CBEQA (maIX1p_and_IMM1 〈x0,x1〉 〈x0,x1〉) I) @ (* H:X++ *)
+(* [0x186F] 1clk *) (compile m ? NOP maINH I) @                               (* non eseguito: A=[X+0x01]=[0x0070]=0x00 *)
+(* [0x1870] 5clk *) (compile m ? CBEQA (maIX0p_and_IMM1 〈x0,x1〉) I) @         (* H:X++ *)
+(* [0x1872] 1clk *) (compile m ? NOP maINH I) @                               (* non eseguito: A=[X]=[0x0070]=0x00 *)
+(* [0x1873] 6clk *) (compile m ? CBEQA (maSP1_and_IMM1 〈x0,x2〉 〈x0,x1〉) I) @
+(* [0x1877] 1clk *) (compile m ? NOP maINH I) @                               (* eseguito: A≠[SP+0x02]=[0x0071]=0x01 *)
+
+(* [0x1878] 7clk *) (compile m ? DBNZ (maDIR1_and_IMM1 〈x7,x2〉 〈x0,x1〉) I) @
+(* [0x187B] 1clk *) (compile m ? NOP maINH I) @                               (* non eseguito: --[0x0072]=0x01≠0 *)
+(* [0x187C] 4clk *) (compile m ? DBNZ (maINHA_and_IMM1 〈x0,x1〉) I) @
+(* [0x187E] 1clk *) (compile m ? NOP maINH I) @                               (* non eseguito: --A=0xFF≠0 *)
+(* [0x187F] 4clk *) (compile m ? DBNZ (maINHX_and_IMM1 〈x0,x1〉) I) @
+(* [0x1881] 1clk *) (compile m ? NOP maINH I) @                               (* non eseguito: --X=0x70≠0 *)
+(* [0x1882] 7clk *) (compile m ? DBNZ (maIX1_and_IMM1 〈x0,x2〉 〈x0,x1〉) I) @
+(* [0x1885] 1clk *) (compile m ? NOP maINH I) @                               (* eseguito: --[X+0x02]=[0x0072]=0x00=0 *)
+(* [0x1886] 6clk *) (compile m ? DBNZ (maIX0_and_IMM1 〈x0,x1〉) I) @
+(* [0x1888] 1clk *) (compile m ? NOP maINH I) @                               (* non eseguito: --[X]=[0x0070]=0xFF≠0 *)
+(* [0x1889] 8clk *) (compile m ? DBNZ (maSP1_and_IMM1 〈x0,x1〉 〈x0,x1〉) I) @ 
+(* [0x188D] 1clk *) (compile m ? NOP maINH I)                                 (* non eseguito: --[SP+0x01]=[0x0070]=0xFE≠0 *)
+(* [0x188E] si puo' quindi enunciare che dopo 5+1+4+4+5+5+6+1 (31)
+                                              7+4+4+7+1+6+8   (37) =68 clk *)
+(*          A<-0xFF PC<-0x188E H:X<-0070 *)
+).
+
+(* creazione del processore+caricamento+impostazione registri *)
+ndefinition mTest_HCS08_CBEQ_DBNZ_status ≝
+λt:memory_impl.
+λb1,b2,b3:byte8.
+ setweak_sp_reg HCS08 t (* SP<-0x006F *)
+  (setweak_indX_16_reg HCS08 t (* H:X<-0x006F *)
+   (set_pc_reg HCS08 t (* PC<-mTest_HCS08_prog *)
+    (start_of_mcu_version_HCS08
+     MC9S08AW60 t
+     (load_from_source_at t (* carica b1-3 in RAM:mTest_HCS08_RAM *)
+      (load_from_source_at t (* carica mTest_bytes in RAM:mTest_HCS08_RAM *)
+       (load_from_source_at t (zero_memory t) (* carica source in ROM:mTest_HCS08_prog *)
+         mTest_HCS08_CBEQ_DBNZ_source mTest_HCS08_prog)
+        mTest_bytes mTest_HCS08_RAM)
+       [ b1 ; b2 ; b3 ] mTest_HCS08_RAM)
+     (build_memory_type_of_mcu_version (FamilyHCS08 MC9S08AW60) t)
+     (mk_byte8 x0 x0) (mk_byte8 x0 x0) (* non deterministici tutti a 0 *)
+     false false false false false false) (* non deterministici tutti a 0 *)
+    mTest_HCS08_prog)
+   (mk_word16 (mk_byte8 x0 x0) (mk_byte8 x6 xF)))
+  (mk_word16 (mk_byte8 x0 x0) (mk_byte8 x6 xF)).
+
+(* dimostrazione senza svolgimento degli stati, immediata *)
+(* NB: la memoria e' cambiata e bisogna applicare eq_status *)
+nlemma ok_mTest_HCS08_CBEQ_DBNZ_full :
+∀t:memory_impl.
+ eq_anystatus HCS08 t
+  (match execute HCS08 t (TickOK ? (mTest_HCS08_CBEQ_DBNZ_status t 〈x0,x0〉 〈x0,x1〉 〈x0,x2〉)) nat68
+   with [ TickERR s _ ⇒ s | TickSUSP s _ ⇒ s | TickOK s ⇒ s ])
+  (set_acc_8_low_reg HCS08 t (* nuovo A *)
+   (set_pc_reg HCS08 t (* nuovo PC *)
+    (setweak_indX_16_reg HCS08 t (mTest_HCS08_CBEQ_DBNZ_status t 〈xF,xE〉 〈x0,x1〉 〈x0,x0〉) (* nuovo H:X *)
+     (mk_word16 〈x0,x0〉 〈x7,x0〉))
+    (mk_word16 〈x1,x8〉 〈x8,xE〉))
+   (mk_byte8 xF xF))
+  [ 〈〈x0,x0〉:〈x7,x0〉〉 ; 〈〈x0,x0〉:〈x7,x1〉〉 ; 〈〈x0,x0〉:〈x7,x2〉〉 ] = true.
+ #t;
+
+ (* nelim t; napply refl_eq; *)
+ (* cosi' in 7sec fa tutto *)
+
+ napply (eq_to_eqanystatus_weak [ 〈〈x0,x0〉:〈x7,x0〉〉 ; 〈〈x0,x0〉:〈x7,x1〉〉 ; 〈〈x0,x0〉:〈x7,x2〉〉 ] HCS08 t …);
+ ##[ ##3: (* ram *) 
+          nelim t;
+          nnormalize in ⊢ (? ? % ?);
+          napply refl_eq;
+          (* 10sec con normalize, leggermente di piu' senza *)
+ ##| ##2: (* descrittore *)
+          nelim t;
+          nnormalize in ⊢ (? ? ? %);
+          nnormalize in ⊢ (? ? % ?);
+          napply refl_eq;
+          (* 7sec con normalize, leggermente di piu' senza il secondo normalize,
+             non termina senza il primo *)
+ ##| ##1: (* alu *)
+          nelim t;
+          (* senza questo normalize non va nulla *)
+          ##[ ##2,3: nnormalize in ⊢ (? ? ? %);
+                     napply refl_eq;
+          ##| ##1: (* in questo punto si vede benissimo come stato1 = stato2 esplode
+                      mentre la trasformazione eq_stato s1 s2 = true computa benissimo *)
+                   (* un napply refl_eq diretto non ci riesce proprio... *)
+                   napply (eqaluHC08_to_eq
+                    (alu HCS08 MEM_FUNC (match execute HCS08 MEM_FUNC (TickOK ? (mTest_HCS08_CBEQ_DBNZ_status MEM_FUNC 〈x0,x0〉 〈x0,x1〉 〈x0,x2〉)) nat68 with [ TickERR s _ ⇒ s | TickSUSP s _ ⇒ s | TickOK s ⇒ s ]))
+                    (alu HCS08 MEM_FUNC (set_acc_8_low_reg HCS08 MEM_FUNC (* nuovo A *)
+                     (set_pc_reg HCS08 MEM_FUNC (* nuovo PC *)
+                      (setweak_indX_16_reg HCS08 MEM_FUNC (mTest_HCS08_CBEQ_DBNZ_status MEM_FUNC 〈xF,xE〉 〈x0,x1〉 〈x0,x0〉) (* nuovo H:X *)
+                       (mk_word16 〈x0,x0〉 〈x7,x0〉)) (mk_word16 〈x1,x8〉 〈x8,xE〉)) (mk_byte8 xF xF)))
+                    ?);
+                   nnormalize in ⊢ (? ? % ?);
+                   napply refl_eq;
+          ##]
+ ##]
+(* pero' ora si e' inceppato nqed... *)
+nqed.
+
+(* IMPRESSIONI
+   sembra confermato ora che un confronto diretto "oggettoGrosso1 = oggettoGrosso2" fallisca
+   mentre "funzione_eq oggettoGrosso1 oggettoGrosso2 = const." riesce
+
+   lo si vede in "forall_memory_ranged mem1 mem2 [addr] = true"
+   lo si vede in "get_clk (...) = const." NB: senza il normalize dx. infatti fallisce...
+   lo si vede in "alu1 = alu2" che fallisce stranamente solo nel caso MEM_FUNC
+    riportare "alu1 = alu2" a "eq alu1 alu2 = true" col teorema lo aggira, ma non chiude nqed
+*)
diff --git a/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests4bis.ma b/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests4bis.ma
new file mode 100755 (executable)
index 0000000..cb38446
--- /dev/null
@@ -0,0 +1,89 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale_tests/micro_tests_tools.ma".
+include "freescale/multivm.ma".
+include "freescale/status_lemmas.ma".
+
+(* ****************************************** *)
+(* MICRO TEST DI CORRETTEZZA DELLE ISTRUZIONI *)
+(* ****************************************** *)
+
+(* **************** *)
+(* HCS08 CBEQx/DBNZ *)
+(* **************** *)
+
+ndefinition mTest_HCS08_CBEQ_DBNZ_source ≝ let m ≝ HCS08 in source_to_byte8 m (
+(* testa la logica di CBEQx/DBNZ e le modalita' xxx_and_IMM1 *)
+(* BEFORE: H:X=0x006F SP=0x006F PC=0x1860 *)
+(* [0x1860] 5clk *) (compile m ? CBEQA (maDIR1_and_IMM1 〈x7,x1〉 〈x0,x1〉) I) @
+(* [0x1863] 1clk *) (compile m ? NOP maINH I) @                               (* eseguito: A≠[0x0071]=0x01 *)
+(* [0x1864] 4clk *) (compile m ? CBEQA (maIMM1_and_IMM1 〈x0,x0〉 〈x0,x1〉) I) @
+(* [0x1867] 1clk *) (compile m ? NOP maINH I) @                               (* non eseguito: A=0x00 *)
+(* [0x1868] 4clk *) (compile m ? CBEQX (maIMM1_and_IMM1 〈x6,xF〉 〈x0,x1〉) I) @
+(* [0x186B] 1clk *) (compile m ? NOP maINH I)                                 (* non eseguito: X=0x6F *)
+(* [0x186C] si puo' quindi enunciare che dopo 5+1+4+4 =14 *)
+(*          PC<-0x186C H:X<-006F *)
+).
+
+(* creazione del processore+caricamento+impostazione registri *)
+ndefinition mTest_HCS08_CBEQ_DBNZ_status ≝
+λt:memory_impl.
+λb1,b2,b3:byte8.
+ setweak_sp_reg HCS08 t (* SP<-0x006F *)
+  (setweak_indX_16_reg HCS08 t (* H:X<-0x006F *)
+   (set_pc_reg HCS08 t (* PC<-mTest_HCS08_prog *)
+    (start_of_mcu_version_HCS08
+     MC9S08AW60 t
+     (load_from_source_at t (* carica b1-3 in RAM:mTest_HCS08_RAM *)
+      (load_from_source_at t (* carica mTest_bytes in RAM:mTest_HCS08_RAM *)
+       (load_from_source_at t (zero_memory t) (* carica source in ROM:mTest_HCS08_prog *)
+         mTest_HCS08_CBEQ_DBNZ_source mTest_HCS08_prog)
+        mTest_bytes mTest_HCS08_RAM)
+       [ b1 ; b2 ; b3 ] mTest_HCS08_RAM)
+     (build_memory_type_of_mcu_version (FamilyHCS08 MC9S08AW60) t)
+     (mk_byte8 x0 x0) (mk_byte8 x0 x0) (* non deterministici tutti a 0 *)
+     false false false false false false) (* non deterministici tutti a 0 *)
+    mTest_HCS08_prog)
+   (mk_word16 (mk_byte8 x0 x0) (mk_byte8 x6 xF)))
+  (mk_word16 (mk_byte8 x0 x0) (mk_byte8 x6 xF)).
+
+(* dimostrazione senza svolgimento degli stati, immediata *)
+(* NB: la memoria e' cambiata e bisogna applicare eq_status *)
+nlemma ok_mTest_HCS08_CBEQ_DBNZ_full :
+∀t:memory_impl.
+ eq_anystatus HCS08 t
+  (match execute HCS08 t (TickOK ? (mTest_HCS08_CBEQ_DBNZ_status t 〈x0,x0〉 〈x0,x1〉 〈x0,x2〉)) nat14
+   with [ TickERR s _ ⇒ s | TickSUSP s _ ⇒ s | TickOK s ⇒ s ])
+  (set_pc_reg HCS08 t (* nuovo PC *)
+    (mTest_HCS08_CBEQ_DBNZ_status t 〈x0,x0〉 〈x0,x1〉 〈x0,x2〉) (* nuovo H:X *)
+    (mk_word16 〈x1,x8〉 〈x6,xC〉))
+  [] = true.
+ #t;
+
+ (* nelim t; napply refl_eq; nqed. *)
+ (* cosi' in 3sec fa tutto *)
+
+ napply (eq_to_eqanystatus_weak [] HCS08 t …);
+ nelim t;
+ napply refl_eq.
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests5.ma b/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests5.ma
new file mode 100755 (executable)
index 0000000..09daf6a
--- /dev/null
@@ -0,0 +1,93 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale_tests/micro_tests_tools.ma".
+include "freescale/multivm.ma".
+include "freescale/status_lemmas.ma".
+
+(* ****************************************** *)
+(* MICRO TEST DI CORRETTEZZA DELLE ISTRUZIONI *)
+(* ****************************************** *)
+
+(* ***************** *)
+(* HCS08 BSETn/BCLRn *)
+(* ***************** *)
+
+ndefinition mTest_HCS08_BSETn_BCLRn_source ≝ let m ≝ HCS08 in source_to_byte8 m (
+(* testa la logica di BSETn/BCLRn e le modalita' DIRn *)
+(* BEFORE: PC=0x1860 *)
+(* [0x1860] 5clk *) (compile m ? BSETn (maDIRn o0 〈x7,x0〉) I) @ (* [0x0070]=0x01 *)
+(* [0x1862] 5clk *) (compile m ? BSETn (maDIRn o1 〈x7,x0〉) I) @ (* [0x0070]=0x03 *)
+(* [0x1864] 5clk *) (compile m ? BSETn (maDIRn o2 〈x7,x0〉) I) @ (* [0x0070]=0x07 *)
+(* [0x1866] 5clk *) (compile m ? BSETn (maDIRn o3 〈x7,x0〉) I) @ (* [0x0070]=0x0F *)
+(* [0x1868] 5clk *) (compile m ? BSETn (maDIRn o4 〈x7,x0〉) I) @ (* [0x0070]=0x1F *)
+(* [0x186A] 5clk *) (compile m ? BSETn (maDIRn o5 〈x7,x0〉) I) @ (* [0x0070]=0x3F *)
+(* [0x186C] 5clk *) (compile m ? BSETn (maDIRn o6 〈x7,x0〉) I) @ (* [0x0070]=0x7F *)
+(* [0x186E] 5clk *) (compile m ? BSETn (maDIRn o7 〈x7,x0〉) I) @ (* [0x0070]=0xFF *)
+
+(* [0x1870] 5clk *) (compile m ? BCLRn (maDIRn o0 〈x7,x0〉) I) @ (* [0x0070]=0xFE *)
+(* [0x1872] 5clk *) (compile m ? BCLRn (maDIRn o1 〈x7,x0〉) I) @ (* [0x0070]=0xFC *)
+(* [0x1874] 5clk *) (compile m ? BCLRn (maDIRn o2 〈x7,x0〉) I) @ (* [0x0070]=0xF8 *)
+(* [0x1876] 5clk *) (compile m ? BCLRn (maDIRn o3 〈x7,x0〉) I) @ (* [0x0070]=0xF0 *)
+(* [0x1878] 5clk *) (compile m ? BCLRn (maDIRn o4 〈x7,x0〉) I) @ (* [0x0070]=0xE0 *)
+(* [0x187A] 5clk *) (compile m ? BCLRn (maDIRn o5 〈x7,x0〉) I) @ (* [0x0070]=0xC0 *)
+(* [0x187C] 5clk *) (compile m ? BCLRn (maDIRn o6 〈x7,x0〉) I) @ (* [0x0070]=0x80 *)
+(* [0x187E] 5clk *) (compile m ? BCLRn (maDIRn o7 〈x7,x0〉) I)   (* [0x0070]=0x00 *)
+(* [0x1880] si puo' quindi enunciare che dopo 5+5+5+5+5+5+5+5
+                                              5+5+5+5+5+5+5+5 =80 clk *)
+(*          PC<-0x1880 *)
+).
+
+(* creazione del processore+caricamento+impostazione registri *)
+ndefinition mTest_HCS08_BSETn_BCLRn_status ≝
+λt:memory_impl.
+λb1:byte8.
+ set_pc_reg HCS08 t (* PC<-mTest_HCS08_prog *)
+  (start_of_mcu_version_HCS08
+   MC9S08AW60 t
+   (load_from_source_at t (* carica b1 in RAM:mTest_HCS08_RAM *)
+    (load_from_source_at t (zero_memory t) (* carica source in ROM:mTest_HCS08_prog *)
+      mTest_HCS08_BSETn_BCLRn_source mTest_HCS08_prog)
+     [ b1 ] mTest_HCS08_RAM)
+   (build_memory_type_of_mcu_version (FamilyHCS08 MC9S08AW60) t)
+   (mk_byte8 x0 x0) (mk_byte8 x0 x0) (* non deterministici tutti a 0 *)
+   false false false false false false) (* non deterministici tutti a 0 *)
+  mTest_HCS08_prog.
+
+(* dimostrazione senza svolgimento degli stati, immediata *)
+(* NB: la memoria e' cambiata e bisogna applicare eq_status *)
+nlemma ok_mTest_HCS08_BSETn_BCLRn_full :
+∀t:memory_impl.
+ eq_anystatus HCS08 t
+  (match execute HCS08 t (TickOK ? (mTest_HCS08_BSETn_BCLRn_status t 〈x0,x0〉)) nat80
+   with [ TickERR s _ ⇒ s | TickSUSP s _ ⇒ s | TickOK s ⇒ s ])
+  (set_pc_reg HCS08 t (mTest_HCS08_BSETn_BCLRn_status t 〈x0,x0〉) 〈〈x1,x8〉:〈x8,x0〉〉 (* nuovo PC *))
+  [ 〈〈x0,x0〉:〈x7,x0〉〉 ; 〈〈x0,x0〉:〈x7,x1〉〉 ; 〈〈x0,x0〉:〈x7,x2〉〉 ] = true.
+ #t; 
+ napply (eq_to_eqanystatus_weak [ 〈〈x0,x0〉:〈x7,x0〉〉 ; 〈〈x0,x0〉:〈x7,x1〉〉 ; 〈〈x0,x0〉:〈x7,x2〉〉 ] HCS08 t
+        (match execute HCS08 t (TickOK ? (mTest_HCS08_BSETn_BCLRn_status t 〈x0,x0〉)) nat80
+         with [ TickERR s _ ⇒ s | TickSUSP s _ ⇒ s | TickOK s ⇒ s ])
+        (set_pc_reg HCS08 t (mTest_HCS08_BSETn_BCLRn_status t 〈x0,x0〉) 〈〈x1,x8〉:〈x8,x0〉〉 (* nuovo PC *)));
+ nelim t;
+ nnormalize in ⊢ (? ? ? %);
+ napply refl_eq.
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests6.ma b/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests6.ma
new file mode 100755 (executable)
index 0000000..e3437bb
--- /dev/null
@@ -0,0 +1,100 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale_tests/micro_tests_tools.ma".
+include "freescale/multivm.ma".
+include "freescale/status_lemmas.ma".
+
+(* ****************************************** *)
+(* MICRO TEST DI CORRETTEZZA DELLE ISTRUZIONI *)
+(* ****************************************** *)
+
+(* ******************* *)
+(* HCS08 BRSETn/BRCLRn *)
+(* ******************* *)
+
+ndefinition mTest_HCS08_BRSETn_BRCLRn_source ≝ let m ≝ HCS08 in source_to_byte8 m (
+(* testa la logica di BRSETn/BRCLRn e le modalita' DIRn_and_IMM1 *)
+(* BEFORE: va a testare [0x00C5]=0x55 PC=0x1860 *)
+(* [0x1860] 5clk *) (compile m ? BRSETn (maDIRn_and_IMM1 o0 〈xC,x5〉 〈x0,x1〉) I) @
+(* [0x1863] 1clk *) (compile m ? NOP maINH I) @
+(* [0x1864] 5clk *) (compile m ? BRSETn (maDIRn_and_IMM1 o1 〈xC,x5〉 〈x0,x1〉) I) @
+(* [0x1867] 1clk *) (compile m ? NOP maINH I) @
+(* [0x1868] 5clk *) (compile m ? BRSETn (maDIRn_and_IMM1 o2 〈xC,x5〉 〈x0,x1〉) I) @
+(* [0x186B] 1clk *) (compile m ? NOP maINH I) @
+(* [0x186C] 5clk *) (compile m ? BRSETn (maDIRn_and_IMM1 o3 〈xC,x5〉 〈x0,x1〉) I) @
+(* [0x186F] 1clk *) (compile m ? NOP maINH I) @
+(* [0x1870] 5clk *) (compile m ? BRSETn (maDIRn_and_IMM1 o4 〈xC,x5〉 〈x0,x1〉) I) @
+(* [0x1873] 1clk *) (compile m ? NOP maINH I) @
+(* [0x1874] 5clk *) (compile m ? BRSETn (maDIRn_and_IMM1 o5 〈xC,x5〉 〈x0,x1〉) I) @
+(* [0x1877] 1clk *) (compile m ? NOP maINH I) @
+(* [0x1878] 5clk *) (compile m ? BRSETn (maDIRn_and_IMM1 o6 〈xC,x5〉 〈x0,x1〉) I) @
+(* [0x187B] 1clk *) (compile m ? NOP maINH I) @
+(* [0x187C] 5clk *) (compile m ? BRSETn (maDIRn_and_IMM1 o7 〈xC,x5〉 〈x0,x1〉) I) @
+(* [0x187F] 1clk *) (compile m ? NOP maINH I) @
+
+(* [0x1880] 5clk *) (compile m ? BRCLRn (maDIRn_and_IMM1 o0 〈xC,x5〉 〈x0,x1〉) I) @
+(* [0x1883] 1clk *) (compile m ? NOP maINH I) @
+(* [0x1884] 5clk *) (compile m ? BRCLRn (maDIRn_and_IMM1 o1 〈xC,x5〉 〈x0,x1〉) I) @
+(* [0x1887] 1clk *) (compile m ? NOP maINH I) @
+(* [0x1888] 5clk *) (compile m ? BRCLRn (maDIRn_and_IMM1 o2 〈xC,x5〉 〈x0,x1〉) I) @
+(* [0x188B] 1clk *) (compile m ? NOP maINH I) @
+(* [0x188C] 5clk *) (compile m ? BRCLRn (maDIRn_and_IMM1 o3 〈xC,x5〉 〈x0,x1〉) I) @
+(* [0x188F] 1clk *) (compile m ? NOP maINH I) @
+(* [0x1890] 5clk *) (compile m ? BRCLRn (maDIRn_and_IMM1 o4 〈xC,x5〉 〈x0,x1〉) I) @
+(* [0x1893] 1clk *) (compile m ? NOP maINH I) @
+(* [0x1894] 5clk *) (compile m ? BRCLRn (maDIRn_and_IMM1 o5 〈xC,x5〉 〈x0,x1〉) I) @
+(* [0x1897] 1clk *) (compile m ? NOP maINH I) @
+(* [0x1898] 5clk *) (compile m ? BRCLRn (maDIRn_and_IMM1 o6 〈xC,x5〉 〈x0,x1〉) I) @
+(* [0x189B] 1clk *) (compile m ? NOP maINH I) @
+(* [0x189C] 5clk *) (compile m ? BRCLRn (maDIRn_and_IMM1 o7 〈xC,x5〉 〈x0,x1〉) I) @
+(* [0x189F] 1clk *) (compile m ? NOP maINH I)
+
+(* [0x18A0] si puo' quindi enunciare che dopo 80+8=88 clk
+            (vengono eseguiti 16*5 test, meta' BRSETn/BRCLRn saltano *) 
+(*          PC<-0x18A0 *)
+).
+
+(* creazione del processore+caricamento+impostazione registri *)
+ndefinition mTest_HCS08_BRSETn_BRCLRn_status ≝
+λt:memory_impl.
+ set_pc_reg HCS08 t (* PC<-mTest_HCS08_prog *)
+  (start_of_mcu_version_HCS08
+   MC9S08AW60 t
+   (load_from_source_at t
+    (load_from_source_at t (zero_memory t) (* carica mTest_bytes in RAM:mTest_HCS08_RAM *)
+      mTest_HCS08_BRSETn_BRCLRn_source mTest_HCS08_prog) (* carica source in ROM:mTest_HCS08_prog *)
+     mTest_bytes mTest_HCS08_RAM)
+   (build_memory_type_of_mcu_version (FamilyHCS08 MC9S08AW60) t)
+   (mk_byte8 x0 x0) (mk_byte8 x0 x0) (* non deterministici tutti a 0 *)
+   false false false false false false) (* non deterministici tutti a 0 *)
+  mTest_HCS08_prog.
+
+(* dimostrazione senza svolgimento degli stati, immediata *)
+nlemma ok_mTest_HCS08_BRSETn_BRCLRn_full :
+ ∀t:memory_impl.
+ execute HCS08 t (TickOK ? (mTest_HCS08_BRSETn_BRCLRn_status t)) nat88 =
+ TickOK ? (set_pc_reg HCS08 t (mTest_HCS08_BRSETn_BRCLRn_status t) (* nuovo PC *)
+           (mk_word16 〈x1,x8〉 〈xA,x0〉)).
+ #t; nelim t;
+ napply refl_eq.
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests7.ma b/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests7.ma
new file mode 100755 (executable)
index 0000000..bd95e26
--- /dev/null
@@ -0,0 +1,78 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale_tests/micro_tests_tools.ma".
+include "freescale/multivm.ma".
+include "freescale/status_lemmas.ma".
+
+(* ****************************************** *)
+(* MICRO TEST DI CORRETTEZZA DELLE ISTRUZIONI *)
+(* ****************************************** *)
+
+(* *************** *)
+(* RS08 X,D[X],TNY *)
+(* *************** *)
+
+ndefinition mTest_RS08_TNY_source ≝ let m ≝ RS08 in source_to_byte8 m (
+(* testa la logica RS08 X,D[X] le modalita' TNY *)
+(* NB: il meccanismo utilizzato e' quello complesso dell'RS08
+       fare riferimento alle spiegazioni in STATUS/LOAD_WRITE *)
+(* X=20 PS=0 *)
+(* [0x3800] 3clk *) (compile m ? ADD (maTNY xD) I) @       (* ... +[0x000D]=0x0C *)
+(* [0x3801] 3clk *) (compile m ? ADD (maTNY xE) I) @       (* ... +D[X]=[0x0020]=0x1F *)
+(* [0x3802] 3clk *) (compile m ? ADD (maTNY xF) I) @       (* ... +X=0x20 *)
+(* [0x3803] 3clk *) (compile m ? ADD (maDIR1 〈xC,xF〉) I) @ (* ... +X=0x20 *)
+(* [0x3805] 3clk *) (compile m ? ADD (maDIR1 〈xC,xE〉) I)   (* ... +[0x000E]=0x0D *)
+(* [0x3807] si puo' quindi enunciare che dopo 15 clk
+            A<-0x78 PC<-0x3807 *)
+).
+
+(* creazione del processore+caricamento+impostazione registri *)
+ndefinition mTest_RS08_TNY_status ≝
+λt:memory_impl.
+ setweak_x_map RS08 t (* X<-0x20 *)
+ (setweak_ps_map RS08 t (* PS<-0x00 *)
+ (set_pc_reg RS08 t (* PC<-mTest_RS08_prog *)
+  (start_of_mcu_version_RS08 
+   MC9RS08KA2 t
+   (load_from_source_at t (* carica mTest_bytes in RAM:mTest_RS08_RAM *)
+    (load_from_source_at t (zero_memory t) (* carica source in ROM:mTest_RS08_prog *)
+     mTest_RS08_TNY_source mTest_RS08_prog)
+    mTest_bytes 〈〈x0,x0〉:〈x0,x1〉〉)
+   (build_memory_type_of_mcu_version (FamilyRS08 MC9RS08KA2) t)
+   (mk_byte8 x0 x0) (mk_byte8 x0 x0) (* non deterministici tutti a 0 *)
+   false false false false false false (* non deterministici tutti a 0 *)
+   ) mTest_RS08_prog)
+  (mk_byte8 x0 x0))
+  (mk_byte8 x2 x0).
+
+(* dimostrazione senza svolgimento degli stati, immediata *)
+nlemma ok_mTest_RS08_TNY_full :
+ ∀t:memory_impl.
+ execute RS08 t (TickOK ? (mTest_RS08_TNY_status t)) nat15 =
+ TickOK ? (set_acc_8_low_reg RS08 t (* nuovo A *)
+           (set_pc_reg RS08 t (mTest_RS08_TNY_status t) (* nuovo PC *)
+            (mk_word16 〈x3,x8〉 〈x0,x7〉))
+             (mk_byte8 x7 x8)).
+ #t; nelim t;
+ napply refl_eq.
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests8.ma b/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests8.ma
new file mode 100755 (executable)
index 0000000..fa2b47f
--- /dev/null
@@ -0,0 +1,87 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale_tests/micro_tests_tools.ma".
+include "freescale/multivm.ma".
+include "freescale/status_lemmas.ma".
+
+(* ****************************************** *)
+(* MICRO TEST DI CORRETTEZZA DELLE ISTRUZIONI *)
+(* ****************************************** *)
+
+(* *********** *)
+(* RS08 PS,SRT *)
+(* *********** *)
+
+ndefinition mTest_RS08_SRT_source ≝ let m ≝ RS08 in source_to_byte8 m (
+(* testa la logica RS08 PS le modalita' SRT *)
+(* NB: il meccanismo utilizzato e' quello complesso dell'RS08
+       fare riferimento alle spiegazioni in STATUS/LOAD_WRITE *)
+(* X=0x1F PS=0xFE Z=1 *)
+(* [0x3800] 3clk *) (compile m ? LDA (maSRT t1F) I) @      (* A<-PS *)
+(* [0x3801] 2clk *) (compile m ? SUB (maIMM1 〈xF,xE〉) I) @ (* risulta 0 *)
+(* [0x3803] 3clk *) (compile m ? BEQ (maIMM1 〈x0,x1〉) I) @ (* salta *)
+(* [0x3805] 1clk *) (compile m ? NOP maINH I) @ 
+
+(* [0x3806] 3clk *) (compile m ? LDA (maSRT t0E) I) @      (* A<-PS *)
+(* [0x3807] 2clk *) (compile m ? SUB (maIMM1 〈xF,xE〉) I) @ (* risulta 0 *)
+(* [0x3809] 3clk *) (compile m ? BEQ (maIMM1 〈x0,x1〉) I) @ (* salta *)
+(* [0x380B] 1clk *) (compile m ? NOP maINH I) @
+
+(* [0x380C] 3clk *) (compile m ? LDA (maDIR1 〈xC,x3〉) I) @ (* A<-[0x00C3]=[0x3F83]=0x83 *)
+(* [0x380E] 2clk *) (compile m ? SUB (maIMM1 〈x8,x3〉) I) @ (* risulta 0 *)
+(* [0x3810] 3clk *) (compile m ? BEQ (maIMM1 〈x0,x1〉) I) @ (* salta *)
+(* [0x3812] 1clk *) (compile m ? NOP maINH I)
+(* [0x3813] si puo' quindi enunciare che dopo 24 clk
+            PC<-0x3813 *)
+).
+
+(* creazione del processore+caricamento+impostazione registri *)
+ndefinition mTest_RS08_SRT_status ≝
+λt:memory_impl.
+ setweak_x_map RS08 t (* X<-0x1F *)
+  (setweak_ps_map RS08 t (* PS<-0xFE *)
+   (set_z_flag RS08 t (* Z<-true *)
+    (set_pc_reg RS08 t (* PC<-mTest_RS08_prog *)
+     (start_of_mcu_version_RS08
+      MC9RS08KA2 t
+       (load_from_source_at t (* carica mTest_bytes in ROM:mTest_RS08_data *)
+        (load_from_source_at t (zero_memory t) (* carica source in ROM:mTest_RS08_prog *)
+         mTest_RS08_SRT_source mTest_RS08_prog)
+        mTest_bytes mTest_RS08_data)
+       (build_memory_type_of_mcu_version (FamilyRS08 MC9RS08KA2) t)
+      (mk_byte8 x0 x0) (mk_byte8 x0 x0) (* non deterministici tutti a 0 *)
+      false false false false false false (* non deterministici tutti a 0 *)
+      ) mTest_RS08_prog)
+     true)
+    (mk_byte8 xF xE))
+   (mk_byte8 x1 xF).
+
+(* dimostrazione senza svolgimento degli stati, immediata *)
+nlemma ok_mTest_RS08_SRT_full :
+ ∀t:memory_impl.
+ execute RS08 t (TickOK ? (mTest_RS08_SRT_status t)) nat24 =
+ TickOK ? (set_pc_reg RS08 t (mTest_RS08_SRT_status t) (* nuovo PC *)
+           (mk_word16 〈x3,x8〉 〈x1,x3〉)).
+ #t; nelim t;
+ napply refl_eq.
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests9.ma b/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests9.ma
new file mode 100755 (executable)
index 0000000..460164a
--- /dev/null
@@ -0,0 +1,104 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "freescale_tests/micro_tests_tools.ma".
+include "freescale/multivm.ma".
+include "freescale/status_lemmas.ma".
+include "common/nat_to_num.ma".
+
+(* ****************************************** *)
+(* MICRO TEST DI CORRETTEZZA DELLE ISTRUZIONI *)
+(* ****************************************** *)
+
+(* ********************* *)
+(* TEOREMA MULT PER RS08 *)
+(* ********************* *)
+
+ndefinition mTest_RS08_mult_source ≝ let m ≝ RS08 in source_to_byte8 m (
+(* 
+   ZH:ZL=X*Y con [0x0020-0x004F] X ≝ [0x0020] Y ≝ [0x0021] ZH ≝ [0x0022] ZL ≝ [0x0023]
+*)
+(* [0x3800] ZH <- 0      3clk *) (compile m ? CLR (maDIR1 〈x2,x2〉) I) @
+(* [0x3802] ZL <- 0      3clk *) (compile m ? CLR (maDIR1 〈x2,x3〉) I) @
+(* [0x3804] (l1) A <- Y  3clk *) (compile m ? LDA (maDIR1 〈x2,x1〉) I) @
+(* [0x3806] A=0 goto l2  3clk *) (compile m ? BEQ (maIMM1 〈x0,xE〉) I) @
+(* [0x3808] A <- ZL      3clk *) (compile m ? LDA (maDIR1 〈x2,x3〉) I) @
+(* [0x380A] Y --         5clk *) (compile m ? DEC (maDIR1 〈x2,x1〉) I) @
+(* [0x380C] A += X       3clk *) (compile m ? ADD (maDIR1 〈x2,x0〉) I) @
+(* [0x380E] C=0 goto l3  3clk *) (compile m ? BCC (maIMM1 〈x0,x2〉) I) @
+(* [0x3810] ZH ++        5clk *) (compile m ? INC (maDIR1 〈x2,x2〉) I) @
+(* [0x3812] (l3) ZL <- A 3clk *) (compile m ? STA (maDIR1 〈x2,x3〉) I) @
+(* [0x3814] goto l1      3clk *) (compile m ? BRA (maIMM1 〈xE,xE〉) I)
+(* [0x3816] (l2) si puo' quindi enunciare che
+                 - il caso base X * 0 richiede 12 cicli
+                 - bisogna aggiungere Y * 26 cicli, Y>0
+                 - bisogna aggiungere ZH * 5 cicli, X * Y > 0xFF *)
+).
+
+(* creazione del processore+caricamento+impostazione registri *)
+ndefinition mTest_RS08_mult_status ≝
+λt:memory_impl.
+λb1,b2,b3,b4:byte8.
+ set_z_flag RS08 t (* Z<-true *)
+ (set_pc_reg RS08 t (* PC<-mTest_RS08_prog *)
+  (start_of_mcu_version_RS08 
+   MC9RS08KA2 t
+   (load_from_source_at t (* carica X,Y,ZH,ZL:mTest_RS08_RAM *)
+    (load_from_source_at t (zero_memory t) (* carica source in ROM:mTest_RS08_prog *)
+     mTest_RS08_mult_source mTest_RS08_prog)
+    [ b1 ; b2 ; b3 ; b4 ] mTest_RS08_RAM)
+   (build_memory_type_of_mcu_version (FamilyRS08 MC9RS08KA2) t)
+   (mk_byte8 x0 x0) (mk_byte8 x0 x0) (* non deterministici tutti a 0 *)
+   false false false false false false (* non deterministici tutti a 0 *)
+   ) mTest_RS08_prog)
+  true.
+
+(* parametrizzazione dell'enunciato del teorema mult *)
+(* NB: la memoria e' cambiata e bisogna applicare eq_status *)
+ndefinition ok_mTest_RS08_mult_full_aux ≝
+λt:memory_impl.λX,Y:byte8.
+ eq_anystatus RS08 t
+  (match execute RS08 t (TickOK ? (mTest_RS08_mult_status t X Y 〈x0,x0〉 〈x0,x0〉))
+                                  (nat12 + (nat26 * (nat_of_b8 Y)) + (nat5 * (nat_of_b8 (w16h (mul_b8 X Y)))))
+   (* FIXME: alla ALU azzero C perche' la funzione che ne descrive il valore finale e' MOLTO complessa *)
+   with [ TickERR s _ ⇒ s | TickSUSP s _ ⇒ s | TickOK s ⇒ set_c_flag RS08 t s false ])
+  (set_pc_reg RS08 t (mTest_RS08_mult_status t X 〈x0,x0〉 (w16h (mul_b8 X Y)) (w16l (mul_b8 X Y))) 〈〈x3,x8〉:〈x1,x6〉〉)
+  (* controllo che coincidano X,Y,ZH,ZL *)
+  [ 〈〈x0,x0〉:〈x2,x0〉〉 ; 〈〈x0,x0〉:〈x2,x1〉〉 ; 〈〈x0,x0〉:〈x2,x2〉〉 ; 〈〈x0,x0〉:〈x2,x3〉〉 ] = true.
+
+nlemma ok_mTest_RS08_mult_full : 
+let X ≝ 〈xF,xF〉 in
+let Y ≝ 〈x1,xE〉 in
+ ∀t:memory_impl.
+  ok_mTest_RS08_mult_full_aux t X Y.
+ #t;
+ nletin X ≝ (〈xF,xF〉);
+ nletin Y ≝ (〈x1,xE〉);
+ napply (eq_to_eqanystatus_weak [ 〈〈x0,x0〉:〈x2,x0〉〉 ; 〈〈x0,x0〉:〈x2,x1〉〉 ; 〈〈x0,x0〉:〈x2,x2〉〉 ; 〈〈x0,x0〉:〈x2,x3〉〉 ] RS08 t
+        (match execute RS08 t (TickOK ? (mTest_RS08_mult_status t X Y 〈x0,x0〉 〈x0,x0〉))
+                                        (nat12 + (nat26 * (nat_of_b8 Y)) + (nat5 * (nat_of_b8 (w16h (mul_b8 X Y)))))
+         with [ TickERR s _ ⇒ s | TickSUSP s _ ⇒ s | TickOK s ⇒ set_c_flag RS08 t s false ])
+        (set_pc_reg RS08 t (mTest_RS08_mult_status t X 〈x0,x0〉 (w16h (mul_b8 X Y)) (w16l (mul_b8 X Y))) 〈〈x3,x8〉:〈x1,x6〉〉));
+ nelim t;
+ nnormalize in ⊢ (? ? ? %);
+ napply refl_eq.
+nqed.
diff --git a/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests_tools.ma b/helm/software/matita/contribs/ng_assembly/freescale_tests/micro_tests_tools.ma
new file mode 100755 (executable)
index 0000000..bc225c8
--- /dev/null
@@ -0,0 +1,80 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* ********************************************************************** *)
+(*                          Progetto FreeScale                            *)
+(*                                                                        *)
+(*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
+(*   Ultima modifica: 05/08/2009                                          *)
+(*                                                                        *)
+(* ********************************************************************** *)
+
+include "num/word16.ma".
+include "common/list.ma".
+
+(* ****************************************** *)
+(* MICRO TEST DI CORRETTEZZA DELLE ISTRUZIONI *)
+(* ****************************************** *)
+
+(* tabella 0x00 - 0xFF utile da caricare in RAM/ROM *)
+ndefinition mTest_bytes : list byte8 ≝
+ [   〈x0,x0〉 ; 〈x0,x1〉 ; 〈x0,x2〉 ; 〈x0,x3〉 ; 〈x0,x4〉 ; 〈x0,x5〉 ; 〈x0,x6〉 ; 〈x0,x7〉
+ ; 〈x0,x8〉 ; 〈x0,x9〉 ; 〈x0,xA〉 ; 〈x0,xB〉 ; 〈x0,xC〉 ; 〈x0,xD〉 ; 〈x0,xE〉 ; 〈x0,xF〉 ]
+@[   〈x1,x0〉 ; 〈x1,x1〉 ; 〈x1,x2〉 ; 〈x1,x3〉 ; 〈x1,x4〉 ; 〈x1,x5〉 ; 〈x1,x6〉 ; 〈x1,x7〉
+ ; 〈x1,x8〉 ; 〈x1,x9〉 ; 〈x1,xA〉 ; 〈x1,xB〉 ; 〈x1,xC〉 ; 〈x1,xD〉 ; 〈x1,xE〉 ; 〈x1,xF〉 ]
+@[   〈x2,x0〉 ; 〈x2,x1〉 ; 〈x2,x2〉 ; 〈x2,x3〉 ; 〈x2,x4〉 ; 〈x2,x5〉 ; 〈x2,x6〉 ; 〈x2,x7〉
+ ; 〈x2,x8〉 ; 〈x2,x9〉 ; 〈x2,xA〉 ; 〈x2,xB〉 ; 〈x2,xC〉 ; 〈x2,xD〉 ; 〈x2,xE〉 ; 〈x2,xF〉 ]
+@[   〈x3,x0〉 ; 〈x3,x1〉 ; 〈x3,x2〉 ; 〈x3,x3〉 ; 〈x3,x4〉 ; 〈x3,x5〉 ; 〈x3,x6〉 ; 〈x3,x7〉
+ ; 〈x3,x8〉 ; 〈x3,x9〉 ; 〈x3,xA〉 ; 〈x3,xB〉 ; 〈x3,xC〉 ; 〈x3,xD〉 ; 〈x3,xE〉 ; 〈x3,xF〉 ]
+@[   〈x4,x0〉 ; 〈x4,x1〉 ; 〈x4,x2〉 ; 〈x4,x3〉 ; 〈x4,x4〉 ; 〈x4,x5〉 ; 〈x4,x6〉 ; 〈x4,x7〉
+ ; 〈x4,x8〉 ; 〈x4,x9〉 ; 〈x4,xA〉 ; 〈x4,xB〉 ; 〈x4,xC〉 ; 〈x4,xD〉 ; 〈x4,xE〉 ; 〈x4,xF〉 ]
+@[   〈x5,x0〉 ; 〈x5,x1〉 ; 〈x5,x2〉 ; 〈x5,x3〉 ; 〈x5,x4〉 ; 〈x5,x5〉 ; 〈x5,x6〉 ; 〈x5,x7〉
+ ; 〈x5,x8〉 ; 〈x5,x9〉 ; 〈x5,xA〉 ; 〈x5,xB〉 ; 〈x5,xC〉 ; 〈x5,xD〉 ; 〈x5,xE〉 ; 〈x5,xF〉 ]
+@[   〈x6,x0〉 ; 〈x6,x1〉 ; 〈x6,x2〉 ; 〈x6,x3〉 ; 〈x6,x4〉 ; 〈x6,x5〉 ; 〈x6,x6〉 ; 〈x6,x7〉
+ ; 〈x6,x8〉 ; 〈x6,x9〉 ; 〈x6,xA〉 ; 〈x6,xB〉 ; 〈x6,xC〉 ; 〈x6,xD〉 ; 〈x6,xE〉 ; 〈x6,xF〉 ]
+@[   〈x7,x0〉 ; 〈x7,x1〉 ; 〈x7,x2〉 ; 〈x7,x3〉 ; 〈x7,x4〉 ; 〈x7,x5〉 ; 〈x7,x6〉 ; 〈x7,x7〉
+ ; 〈x7,x8〉 ; 〈x7,x9〉 ; 〈x7,xA〉 ; 〈x7,xB〉 ; 〈x7,xC〉 ; 〈x7,xD〉 ; 〈x7,xE〉 ; 〈x7,xF〉 ]
+@[  〈x8,x0〉 ; 〈x8,x1〉 ; 〈x8,x2〉 ; 〈x8,x3〉 ; 〈x8,x4〉 ; 〈x8,x5〉 ; 〈x8,x6〉 ; 〈x8,x7〉
+ ; 〈x8,x8〉 ; 〈x8,x9〉 ; 〈x8,xA〉 ; 〈x8,xB〉 ; 〈x8,xC〉 ; 〈x8,xD〉 ; 〈x8,xE〉 ; 〈x8,xF〉 ]
+@[   〈x9,x0〉 ; 〈x9,x1〉 ; 〈x9,x2〉 ; 〈x9,x3〉 ; 〈x9,x4〉 ; 〈x9,x5〉 ; 〈x9,x6〉 ; 〈x9,x7〉
+ ; 〈x9,x8〉 ; 〈x9,x9〉 ; 〈x9,xA〉 ; 〈x9,xB〉 ; 〈x9,xC〉 ; 〈x9,xD〉 ; 〈x9,xE〉 ; 〈x9,xF〉 ]
+@[   〈xA,x0〉 ; 〈xA,x1〉 ; 〈xA,x2〉 ; 〈xA,x3〉 ; 〈xA,x4〉 ; 〈xA,x5〉 ; 〈xA,x6〉 ; 〈xA,x7〉
+ ; 〈xA,x8〉 ; 〈xA,x9〉 ; 〈xA,xA〉 ; 〈xA,xB〉 ; 〈xA,xC〉 ; 〈xA,xD〉 ; 〈xA,xE〉 ; 〈xA,xF〉 ]
+@[   〈xB,x0〉 ; 〈xB,x1〉 ; 〈xB,x2〉 ; 〈xB,x3〉 ; 〈xB,x4〉 ; 〈xB,x5〉 ; 〈xB,x6〉 ; 〈xB,x7〉
+ ; 〈xB,x8〉 ; 〈xB,x9〉 ; 〈xB,xA〉 ; 〈xB,xB〉 ; 〈xB,xC〉 ; 〈xB,xD〉 ; 〈xB,xE〉 ; 〈xB,xF〉 ]
+@[   〈xC,x0〉 ; 〈xC,x1〉 ; 〈xC,x2〉 ; 〈xC,x3〉 ; 〈xC,x4〉 ; 〈xC,x5〉 ; 〈xC,x6〉 ; 〈xC,x7〉
+ ; 〈xC,x8〉 ; 〈xC,x9〉 ; 〈xC,xA〉 ; 〈xC,xB〉 ; 〈xC,xC〉 ; 〈xC,xD〉 ; 〈xC,xE〉 ; 〈xC,xF〉 ]
+@[   〈xD,x0〉 ; 〈xD,x1〉 ; 〈xD,x2〉 ; 〈xD,x3〉 ; 〈xD,x4〉 ; 〈xD,x5〉 ; 〈xD,x6〉 ; 〈xD,x7〉
+ ; 〈xD,x8〉 ; 〈xD,x9〉 ; 〈xD,xA〉 ; 〈xD,xB〉 ; 〈xD,xC〉 ; 〈xD,xD〉 ; 〈xD,xE〉 ; 〈xD,xF〉 ]
+@[   〈xE,x0〉 ; 〈xE,x1〉 ; 〈xE,x2〉 ; 〈xE,x3〉 ; 〈xE,x4〉 ; 〈xE,x5〉 ; 〈xE,x6〉 ; 〈xE,x7〉
+ ; 〈xE,x8〉 ; 〈xE,x9〉 ; 〈xE,xA〉 ; 〈xE,xB〉 ; 〈xE,xC〉 ; 〈xE,xD〉 ; 〈xE,xE〉 ; 〈xE,xF〉 ]
+@[   〈xF,x0〉 ; 〈xF,x1〉 ; 〈xF,x2〉 ; 〈xF,x3〉 ; 〈xF,x4〉 ; 〈xF,x5〉 ; 〈xF,x6〉 ; 〈xF,x7〉
+ ; 〈xF,x8〉 ; 〈xF,x9〉 ; 〈xF,xA〉 ; 〈xF,xB〉 ; 〈xF,xC〉 ; 〈xF,xD〉 ; 〈xF,xE〉 ; 〈xF,xF〉
+ ].
+
+(*
+   1) mTest_x_RAM : inizio della RAM
+       (start point per caricamento mTest_bytes in RAM) 
+   2) mTest_x_prog: inizio della ROM
+       (start point per caricamento programma in ROM)
+   3) mTest_x_data: ultimi 256b della ROM
+       (start point per caricamento mTest_bytes in ROM)
+*)
+ndefinition mTest_HCS08_RAM ≝ 〈〈x0,x0〉:〈x7,x0〉〉.
+ndefinition mTest_HCS08_prog ≝ 〈〈x1,x8〉:〈x6,x0〉〉.
+ndefinition mTest_HCS08_data ≝ 〈〈xF,xF〉:〈x0,x0〉〉.
+
+ndefinition mTest_RS08_RAM ≝ 〈〈x0,x0〉:〈x2,x0〉〉.
+ndefinition mTest_RS08_prog ≝ 〈〈x3,x8〉:〈x0,x0〉〉.
+ndefinition mTest_RS08_data ≝ 〈〈x3,xF〉:〈x0,x0〉〉.