From: Claudio Sacerdoti Coen Date: Tue, 23 Dec 2014 11:06:06 +0000 (+0000) Subject: Release 0.5.9. X-Git-Tag: 0.5.9~1 X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=commitdiff_plain;h=a90c31c1b53222bd6d57360c5ba5c2d0fe7d5207;p=helm.git Release 0.5.9. This release was messy: it backtracks the development to just after 0.5.8, fixes a patch and ports the code to new OCaml version and libraries. --- diff --git a/helm/software/Makefile.defs.in b/helm/software/Makefile.defs.in index d7a7620d5..b33d5cc85 100644 --- a/helm/software/Makefile.defs.in +++ b/helm/software/Makefile.defs.in @@ -5,7 +5,17 @@ OCAMLFIND = @OCAMLFIND@ endif CAMLP5O = @CAMLP5O@ LABLGLADECC = @LABLGLADECC@ -HAVE_OCAMLOPT = @HAVE_OCAMLOPT@ +# debian specific limitation of architecture on which native compilers are used +ifeq "$(shell dpkg-architecture -qDEB_HOST_ARCH)" "alpha" + HAVE_OCAMLOPT = no +else +ifeq "$(shell dpkg-architecture -qDEB_HOST_ARCH)" "ia64" + HAVE_OCAMLOPT = no +else + HAVE_OCAMLOPT = @HAVE_OCAMLOPT@ +endif +endif + DISTRIBUTED = @DISTRIBUTED@ ANNOT = @ANNOT@ diff --git a/helm/software/components/METAS/meta.helm-hmysql.src b/helm/software/components/METAS/meta.helm-hmysql.src index 21841b5ca..1cdde8fea 100644 --- a/helm/software/components/METAS/meta.helm-hmysql.src +++ b/helm/software/components/METAS/meta.helm-hmysql.src @@ -1,4 +1,4 @@ -requires="helm-registry sqlite3 mysql helm-extlib" +requires="helm-registry sqlite3 mysql helm-extlib pcre" version="0.0.1" archive(byte)="hmysql.cma" archive(native)="hmysql.cmxa" diff --git a/helm/software/components/METAS/meta.helm-ng_disambiguation.src b/helm/software/components/METAS/meta.helm-ng_disambiguation.src index 7693d8f3c..59c5f5ec5 100644 --- a/helm/software/components/METAS/meta.helm-ng_disambiguation.src +++ b/helm/software/components/METAS/meta.helm-ng_disambiguation.src @@ -1,4 +1,4 @@ -requires="helm-whelp helm-acic_content helm-ng_refiner helm-disambiguation helm-cic_disambiguation" +requires="helm-whelp helm-acic_content helm-ng_refiner helm-disambiguation" version="0.0.1" archive(byte)="ng_disambiguation.cma" archive(native)="ng_disambiguation.cmxa" diff --git a/helm/software/components/acic_content/.depend b/helm/software/components/acic_content/.depend index 89dca0e44..8ade458af 100644 --- a/helm/software/components/acic_content/.depend +++ b/helm/software/components/acic_content/.depend @@ -1,4 +1,3 @@ -content.cmi: acic2content.cmi: content.cmi content2cic.cmi: content.cmi cicNotationUtil.cmi: cicNotationPt.cmo @@ -6,8 +5,6 @@ cicNotationEnv.cmi: cicNotationPt.cmo cicNotationPp.cmi: cicNotationPt.cmo cicNotationEnv.cmi acic2astMatcher.cmi: cicNotationPt.cmo termAcicContent.cmi: cicNotationPt.cmo -cicNotationPt.cmo: -cicNotationPt.cmx: content.cmo: content.cmi content.cmx: content.cmi acic2content.cmo: content.cmi acic2content.cmi diff --git a/helm/software/components/acic_content/.depend.opt b/helm/software/components/acic_content/.depend.opt index 307fceaa0..fef879256 100644 --- a/helm/software/components/acic_content/.depend.opt +++ b/helm/software/components/acic_content/.depend.opt @@ -1,4 +1,3 @@ -content.cmi: acic2content.cmi: content.cmi content2cic.cmi: content.cmi cicNotationUtil.cmi: cicNotationPt.cmx @@ -6,8 +5,6 @@ cicNotationEnv.cmi: cicNotationPt.cmx cicNotationPp.cmi: cicNotationPt.cmx cicNotationEnv.cmi acic2astMatcher.cmi: cicNotationPt.cmx termAcicContent.cmi: cicNotationPt.cmx -cicNotationPt.cmo: -cicNotationPt.cmx: content.cmo: content.cmi content.cmx: content.cmi acic2content.cmo: content.cmi acic2content.cmi diff --git a/helm/software/components/acic_content/cicNotationPp.ml b/helm/software/components/acic_content/cicNotationPp.ml index f94891375..c2ee6a776 100644 --- a/helm/software/components/acic_content/cicNotationPp.ml +++ b/helm/software/components/acic_content/cicNotationPp.ml @@ -144,8 +144,8 @@ let rec pp_term ?(pp_parens = true) t = | Ast.Ident (name, Some substs) | Ast.Uri (name, Some substs) -> sprintf "%s \\subst [%s]" name (pp_substs substs) - | Ast.Implicit `Vector -> "…" - | Ast.Implicit `JustOne -> "?" + | Ast.Implicit `Vector -> "?" + | Ast.Implicit `JustOne -> "…" | Ast.Implicit (`Tagged name) -> "?"^name | Ast.Meta (index, substs) -> sprintf "%d[%s]" index @@ -160,7 +160,7 @@ let rec pp_term ?(pp_parens = true) t = | Ast.Sort (`NCProp s)-> "CProp[" ^ s ^ "]" | Ast.Symbol (name, _) -> "'" ^ name - | Ast.UserInput -> "%" + | Ast.UserInput -> "" | Ast.Literal l -> pp_literal l | Ast.Layout l -> pp_layout l @@ -170,7 +170,6 @@ let rec pp_term ?(pp_parens = true) t = match pp_parens, t with | false, _ | true, Ast.Implicit _ - | true, Ast.UserInput | true, Ast.Sort _ | true, Ast.Ident (_, Some []) | true, Ast.Ident (_, None) -> t_pp diff --git a/helm/software/components/acic_procedural/.depend b/helm/software/components/acic_procedural/.depend index 97238c4d8..8d0128744 100644 --- a/helm/software/components/acic_procedural/.depend +++ b/helm/software/components/acic_procedural/.depend @@ -1,13 +1,6 @@ -proceduralHelpers.cmi: -proceduralClassify.cmi: -proceduralOptimizer.cmi: -proceduralTypes.cmi: -proceduralMode.cmi: -proceduralConversion.cmi: procedural1.cmi: proceduralTypes.cmi procedural2.cmi: proceduralTypes.cmi proceduralTeX.cmi: proceduralTypes.cmi -acic2Procedural.cmi: proceduralHelpers.cmo: proceduralHelpers.cmi proceduralHelpers.cmx: proceduralHelpers.cmi proceduralClassify.cmo: proceduralHelpers.cmi proceduralClassify.cmi diff --git a/helm/software/components/acic_procedural/.depend.opt b/helm/software/components/acic_procedural/.depend.opt index 97238c4d8..8d0128744 100644 --- a/helm/software/components/acic_procedural/.depend.opt +++ b/helm/software/components/acic_procedural/.depend.opt @@ -1,13 +1,6 @@ -proceduralHelpers.cmi: -proceduralClassify.cmi: -proceduralOptimizer.cmi: -proceduralTypes.cmi: -proceduralMode.cmi: -proceduralConversion.cmi: procedural1.cmi: proceduralTypes.cmi procedural2.cmi: proceduralTypes.cmi proceduralTeX.cmi: proceduralTypes.cmi -acic2Procedural.cmi: proceduralHelpers.cmo: proceduralHelpers.cmi proceduralHelpers.cmx: proceduralHelpers.cmi proceduralClassify.cmo: proceduralHelpers.cmi proceduralClassify.cmi diff --git a/helm/software/components/binaries/extractor/.depend b/helm/software/components/binaries/extractor/.depend index 0c39328ae..e69de29bb 100644 --- a/helm/software/components/binaries/extractor/.depend +++ b/helm/software/components/binaries/extractor/.depend @@ -1,4 +0,0 @@ -extractor.cmo: -extractor.cmx: -extractor_manager.cmo: -extractor_manager.cmx: diff --git a/helm/software/components/binaries/extractor/.depend.opt b/helm/software/components/binaries/extractor/.depend.opt index 0c39328ae..e69de29bb 100644 --- a/helm/software/components/binaries/extractor/.depend.opt +++ b/helm/software/components/binaries/extractor/.depend.opt @@ -1,4 +0,0 @@ -extractor.cmo: -extractor.cmx: -extractor_manager.cmo: -extractor_manager.cmx: diff --git a/helm/software/components/binaries/matitaprover/matitaprover.ml b/helm/software/components/binaries/matitaprover/matitaprover.ml index f72a7ebc5..38553b305 100644 --- a/helm/software/components/binaries/matitaprover/matitaprover.ml +++ b/helm/software/components/binaries/matitaprover/matitaprover.ml @@ -67,10 +67,7 @@ module MakeBlob(C:LeafComparer) : Terms.Blob (fun x _ m -> embed m x) m args in m, Terms.Node (Terms.Leaf (hash name):: args) - let is_eq = function - | Terms.Node [ Terms.Leaf eqt ; ty; l; r ] when eq eqP eqt -> - Some (ty,l,r) - | _ -> None + ;; let saturate bo ty = let vars, ty = embed [] ty in let _, bo = embed vars bo in @@ -148,7 +145,7 @@ module Main(P : Paramod.Paramod with type t = leaf) = struct ~max_steps:max_int bag ~g_passives:[g_passives] ~passives with | P.Error s -> report_error s; 3 - | P.Unsatisfiable ((bag,_,_,l)::_) -> + | P.Unsatisfiable ((bag,_,l)::_) -> success_msg bag l pp_unit_clause name; 0 | P.Unsatisfiable ([]) -> report_error "Unsatisfiable but no solution output"; 3 diff --git a/helm/software/components/binaries/matitaprover/run_on_a_list.sh b/helm/software/components/binaries/matitaprover/run_on_a_list.sh index 79c1b42eb..420b6b956 100755 --- a/helm/software/components/binaries/matitaprover/run_on_a_list.sh +++ b/helm/software/components/binaries/matitaprover/run_on_a_list.sh @@ -8,7 +8,7 @@ gcc TreeLimitedRun.c -o TreeLimitedRun > log for PROBLEM in `cat $2`; do echo running on $PROBLEM - ./TreeLimitedRun -q0 $1 $(($1*2)) ./matitaprover.native --tptppath ~/TPTP-v3.1.1/ $PROBLEM \ + ./TreeLimitedRun -q0 $1 $(($1*2)) ./matitaprover.native --tptppath ~/TPTP-v3.7.0/ $PROBLEM \ >> log 2>&1 echo So far `grep 'SZS status Unsatisfiable' log|wc -l` solved done diff --git a/helm/software/components/binaries/table_creator/.depend b/helm/software/components/binaries/table_creator/.depend index 33147b949..e69de29bb 100644 --- a/helm/software/components/binaries/table_creator/.depend +++ b/helm/software/components/binaries/table_creator/.depend @@ -1,2 +0,0 @@ -table_creator.cmo: -table_creator.cmx: diff --git a/helm/software/components/binaries/table_creator/.depend.opt b/helm/software/components/binaries/table_creator/.depend.opt index 33147b949..e69de29bb 100644 --- a/helm/software/components/binaries/table_creator/.depend.opt +++ b/helm/software/components/binaries/table_creator/.depend.opt @@ -1,2 +0,0 @@ -table_creator.cmo: -table_creator.cmx: diff --git a/helm/software/components/binaries/transcript/.depend b/helm/software/components/binaries/transcript/.depend index 87d1ed25c..23196a224 100644 --- a/helm/software/components/binaries/transcript/.depend +++ b/helm/software/components/binaries/transcript/.depend @@ -1,24 +1,24 @@ -gallina8Parser.cmi: types.cmo -grafiteParser.cmi: types.cmo -grafite.cmi: types.cmo -engine.cmi: -types.cmo: -types.cmx: -options.cmo: -options.cmx: -gallina8Parser.cmo: types.cmo options.cmo gallina8Parser.cmi -gallina8Parser.cmx: types.cmx options.cmx gallina8Parser.cmi -gallina8Lexer.cmo: options.cmo gallina8Parser.cmi -gallina8Lexer.cmx: options.cmx gallina8Parser.cmx -grafiteParser.cmo: types.cmo options.cmo grafiteParser.cmi -grafiteParser.cmx: types.cmx options.cmx grafiteParser.cmi -grafiteLexer.cmo: options.cmo grafiteParser.cmi -grafiteLexer.cmx: options.cmx grafiteParser.cmx -grafite.cmo: types.cmo options.cmo grafite.cmi -grafite.cmx: types.cmx options.cmx grafite.cmi -engine.cmo: types.cmo options.cmo grafiteParser.cmi grafiteLexer.cmo \ - grafite.cmi gallina8Parser.cmi gallina8Lexer.cmo engine.cmi -engine.cmx: types.cmx options.cmx grafiteParser.cmx grafiteLexer.cmx \ - grafite.cmx gallina8Parser.cmx gallina8Lexer.cmx engine.cmi -top.cmo: options.cmo engine.cmi -top.cmx: options.cmx engine.cmx +gallina8Parser.cmi : types.cmo +grafiteParser.cmi : types.cmo +grafite.cmi : types.cmo +engine.cmi : +types.cmo : +types.cmx : +options.cmo : +options.cmx : +gallina8Parser.cmo : types.cmo options.cmo gallina8Parser.cmi +gallina8Parser.cmx : types.cmx options.cmx gallina8Parser.cmi +gallina8Lexer.cmo : options.cmo gallina8Parser.cmi +gallina8Lexer.cmx : options.cmx gallina8Parser.cmx +grafiteParser.cmo : types.cmo options.cmo grafiteParser.cmi +grafiteParser.cmx : types.cmx options.cmx grafiteParser.cmi +grafiteLexer.cmo : options.cmo grafiteParser.cmi +grafiteLexer.cmx : options.cmx grafiteParser.cmx +grafite.cmo : types.cmo options.cmo grafite.cmi +grafite.cmx : types.cmx options.cmx grafite.cmi +engine.cmo : types.cmo options.cmo grafiteParser.cmi grafiteLexer.cmo \ + grafite.cmi gallina8Parser.cmi gallina8Lexer.cmo engine.cmi +engine.cmx : types.cmx options.cmx grafiteParser.cmx grafiteLexer.cmx \ + grafite.cmx gallina8Parser.cmx gallina8Lexer.cmx engine.cmi +top.cmo : options.cmo engine.cmi +top.cmx : options.cmx engine.cmx diff --git a/helm/software/components/binaries/transcript/.depend.opt b/helm/software/components/binaries/transcript/.depend.opt index 4ee9ad4e6..345631687 100644 --- a/helm/software/components/binaries/transcript/.depend.opt +++ b/helm/software/components/binaries/transcript/.depend.opt @@ -1,24 +1,24 @@ -gallina8Parser.cmi: types.cmx -grafiteParser.cmi: types.cmx -grafite.cmi: types.cmx -engine.cmi: -types.cmo: -types.cmx: -options.cmo: -options.cmx: -gallina8Parser.cmo: types.cmx options.cmx gallina8Parser.cmi -gallina8Parser.cmx: types.cmx options.cmx gallina8Parser.cmi -gallina8Lexer.cmo: options.cmx gallina8Parser.cmi -gallina8Lexer.cmx: options.cmx gallina8Parser.cmx -grafiteParser.cmo: types.cmx options.cmx grafiteParser.cmi -grafiteParser.cmx: types.cmx options.cmx grafiteParser.cmi -grafiteLexer.cmo: options.cmx grafiteParser.cmi -grafiteLexer.cmx: options.cmx grafiteParser.cmx -grafite.cmo: types.cmx options.cmx grafite.cmi -grafite.cmx: types.cmx options.cmx grafite.cmi -engine.cmo: types.cmx options.cmx grafiteParser.cmi grafiteLexer.cmx \ +gallina8Parser.cmi : types.cmx +grafiteParser.cmi : types.cmx +grafite.cmi : types.cmx +engine.cmi : +types.cmo : +types.cmx : +options.cmo : +options.cmx : +gallina8Parser.cmo : types.cmx options.cmx gallina8Parser.cmi +gallina8Parser.cmx : types.cmx options.cmx gallina8Parser.cmi +gallina8Lexer.cmo : options.cmx gallina8Parser.cmi +gallina8Lexer.cmx : options.cmx gallina8Parser.cmx +grafiteParser.cmo : types.cmx options.cmx grafiteParser.cmi +grafiteParser.cmx : types.cmx options.cmx grafiteParser.cmi +grafiteLexer.cmo : options.cmx grafiteParser.cmi +grafiteLexer.cmx : options.cmx grafiteParser.cmx +grafite.cmo : types.cmx options.cmx grafite.cmi +grafite.cmx : types.cmx options.cmx grafite.cmi +engine.cmo : types.cmx options.cmx grafiteParser.cmi grafiteLexer.cmx \ grafite.cmi gallina8Parser.cmi gallina8Lexer.cmx engine.cmi -engine.cmx: types.cmx options.cmx grafiteParser.cmx grafiteLexer.cmx \ +engine.cmx : types.cmx options.cmx grafiteParser.cmx grafiteLexer.cmx \ grafite.cmx gallina8Parser.cmx gallina8Lexer.cmx engine.cmi -top.cmo: options.cmx engine.cmi -top.cmx: options.cmx engine.cmx +top.cmo : options.cmx engine.cmi +top.cmx : options.cmx engine.cmx diff --git a/helm/software/components/cic/.depend b/helm/software/components/cic/.depend index a835b247f..c2c7105c7 100644 --- a/helm/software/components/cic/.depend +++ b/helm/software/components/cic/.depend @@ -1,10 +1,8 @@ -cicUniv.cmi: unshare.cmi: cic.cmo deannotate.cmi: cic.cmo cicParser.cmi: cic.cmo cicUtil.cmi: cic.cmo helmLibraryObjects.cmi: cic.cmo -libraryObjects.cmi: cic_indexable.cmi: cic.cmo path_indexing.cmi: cic.cmo cicInspect.cmi: cic.cmo diff --git a/helm/software/components/cic/.depend.opt b/helm/software/components/cic/.depend.opt index 8cdd2a86a..76d19c1ff 100644 --- a/helm/software/components/cic/.depend.opt +++ b/helm/software/components/cic/.depend.opt @@ -1,10 +1,8 @@ -cicUniv.cmi: unshare.cmi: cic.cmx deannotate.cmi: cic.cmx cicParser.cmi: cic.cmx cicUtil.cmi: cic.cmx helmLibraryObjects.cmi: cic.cmx -libraryObjects.cmi: cic_indexable.cmi: cic.cmx path_indexing.cmi: cic.cmx cicInspect.cmi: cic.cmx diff --git a/helm/software/components/cic_acic/.depend b/helm/software/components/cic_acic/.depend index 5449d50aa..3fc1e0dce 100644 --- a/helm/software/components/cic_acic/.depend +++ b/helm/software/components/cic_acic/.depend @@ -1,6 +1,3 @@ -eta_fixing.cmi: -doubleTypeInference.cmi: -cic2acic.cmi: cic2Xml.cmi: cic2acic.cmi eta_fixing.cmo: eta_fixing.cmi eta_fixing.cmx: eta_fixing.cmi diff --git a/helm/software/components/cic_acic/.depend.opt b/helm/software/components/cic_acic/.depend.opt index 5449d50aa..3fc1e0dce 100644 --- a/helm/software/components/cic_acic/.depend.opt +++ b/helm/software/components/cic_acic/.depend.opt @@ -1,6 +1,3 @@ -eta_fixing.cmi: -doubleTypeInference.cmi: -cic2acic.cmi: cic2Xml.cmi: cic2acic.cmi eta_fixing.cmo: eta_fixing.cmi eta_fixing.cmx: eta_fixing.cmi diff --git a/helm/software/components/cic_disambiguation/.depend b/helm/software/components/cic_disambiguation/.depend index a9ae65a5e..e9bd1168f 100644 --- a/helm/software/components/cic_disambiguation/.depend +++ b/helm/software/components/cic_disambiguation/.depend @@ -1,5 +1,3 @@ -cicDisambiguate.cmi: -disambiguateChoices.cmi: cicDisambiguate.cmo: cicDisambiguate.cmi cicDisambiguate.cmx: cicDisambiguate.cmi disambiguateChoices.cmo: disambiguateChoices.cmi diff --git a/helm/software/components/cic_disambiguation/.depend.opt b/helm/software/components/cic_disambiguation/.depend.opt index a9ae65a5e..e9bd1168f 100644 --- a/helm/software/components/cic_disambiguation/.depend.opt +++ b/helm/software/components/cic_disambiguation/.depend.opt @@ -1,5 +1,3 @@ -cicDisambiguate.cmi: -disambiguateChoices.cmi: cicDisambiguate.cmo: cicDisambiguate.cmi cicDisambiguate.cmx: cicDisambiguate.cmi disambiguateChoices.cmo: disambiguateChoices.cmi diff --git a/helm/software/components/cic_disambiguation/disambiguateChoices.ml b/helm/software/components/cic_disambiguation/disambiguateChoices.ml index 6d4d63b70..f0c7b373f 100644 --- a/helm/software/components/cic_disambiguation/disambiguateChoices.ml +++ b/helm/software/components/cic_disambiguation/disambiguateChoices.ml @@ -32,10 +32,8 @@ open DisambiguateTypes exception Choice_not_found of string Lazy.t let num_choices = ref [] -let nnum_choices = ref [] let add_num_choice choice = num_choices := choice :: !num_choices -let nadd_num_choice choice = nnum_choices := choice :: !nnum_choices let has_description dsc = (fun x -> fst x = dsc) @@ -46,11 +44,6 @@ let lookup_num_by_dsc dsc = List.find (has_description dsc) !num_choices with Not_found -> raise (Choice_not_found (lazy ("Num with dsc " ^ dsc))) -let nlookup_num_by_dsc dsc = - try - List.find (has_description dsc) !nnum_choices - with Not_found -> raise (Choice_not_found (lazy ("Num with dsc " ^ dsc))) - let mk_choice ~mk_appl ~mk_implicit ~term_of_uri ~term_of_nref (dsc, args, appl_pattern)= dsc, `Sym_interp diff --git a/helm/software/components/cic_disambiguation/disambiguateChoices.mli b/helm/software/components/cic_disambiguation/disambiguateChoices.mli index 4d1ed5329..ddc05b4a5 100644 --- a/helm/software/components/cic_disambiguation/disambiguateChoices.mli +++ b/helm/software/components/cic_disambiguation/disambiguateChoices.mli @@ -33,9 +33,6 @@ exception Choice_not_found of string Lazy.t (** register a new number choice *) val add_num_choice: Cic.term codomain_item -> unit - (** register a new number choice *) -val nadd_num_choice: NCic.term codomain_item -> unit - (** {2 Choices lookup} * for user defined aliases *) @@ -44,9 +41,6 @@ val lookup_num_choices: unit -> Cic.term codomain_item list (** @param dsc description (1st component of codomain_item) *) val lookup_num_by_dsc: string -> Cic.term codomain_item - (** @param dsc description (1st component of codomain_item) *) -val nlookup_num_by_dsc: string -> NCic.term codomain_item - (** @param symbol symbol as per AST * @param dsc description (1st component of codomain_item) *) diff --git a/helm/software/components/cic_disambiguation/number_notation.ml b/helm/software/components/cic_disambiguation/number_notation.ml index c41a9aab0..d23817f0d 100644 --- a/helm/software/components/cic_disambiguation/number_notation.ml +++ b/helm/software/components/cic_disambiguation/number_notation.ml @@ -49,7 +49,7 @@ let interp_natural_number num = let _ = DisambiguateChoices.add_num_choice - ("natural number", `Num_interp interp_natural_number); + ("natural number", `Num_interp interp_natural_number); (* DisambiguateChoices.add_num_choice ("Coq natural number", `Num_interp (fun num -> HelmLibraryObjects.build_nat (int_of_string num))); @@ -76,3 +76,4 @@ let _ = HelmLibraryObjects.build_bin_pos num ] else assert false)) + *) diff --git a/helm/software/components/cic_exportation/.depend b/helm/software/components/cic_exportation/.depend index 91be8d88d..288ea5f6c 100644 --- a/helm/software/components/cic_exportation/.depend +++ b/helm/software/components/cic_exportation/.depend @@ -1,3 +1,2 @@ -cicExportation.cmi: cicExportation.cmo: cicExportation.cmi cicExportation.cmx: cicExportation.cmi diff --git a/helm/software/components/cic_exportation/.depend.opt b/helm/software/components/cic_exportation/.depend.opt index 91be8d88d..288ea5f6c 100644 --- a/helm/software/components/cic_exportation/.depend.opt +++ b/helm/software/components/cic_exportation/.depend.opt @@ -1,3 +1,2 @@ -cicExportation.cmi: cicExportation.cmo: cicExportation.cmi cicExportation.cmx: cicExportation.cmi diff --git a/helm/software/components/cic_proof_checking/.depend b/helm/software/components/cic_proof_checking/.depend index f8a16629e..5d83fd0f3 100644 --- a/helm/software/components/cic_proof_checking/.depend +++ b/helm/software/components/cic_proof_checking/.depend @@ -1,13 +1,3 @@ -cicLogger.cmi: -cicEnvironment.cmi: -cicPp.cmi: -cicUnivUtils.cmi: -cicSubstitution.cmi: -cicMiniReduction.cmi: -cicReduction.cmi: -cicTypeChecker.cmi: -freshNamesGenerator.cmi: -cicDischarge.cmi: cicLogger.cmo: cicLogger.cmi cicLogger.cmx: cicLogger.cmi cicEnvironment.cmo: cicEnvironment.cmi diff --git a/helm/software/components/cic_proof_checking/.depend.opt b/helm/software/components/cic_proof_checking/.depend.opt index f8a16629e..5d83fd0f3 100644 --- a/helm/software/components/cic_proof_checking/.depend.opt +++ b/helm/software/components/cic_proof_checking/.depend.opt @@ -1,13 +1,3 @@ -cicLogger.cmi: -cicEnvironment.cmi: -cicPp.cmi: -cicUnivUtils.cmi: -cicSubstitution.cmi: -cicMiniReduction.cmi: -cicReduction.cmi: -cicTypeChecker.cmi: -freshNamesGenerator.cmi: -cicDischarge.cmi: cicLogger.cmo: cicLogger.cmi cicLogger.cmx: cicLogger.cmi cicEnvironment.cmo: cicEnvironment.cmi diff --git a/helm/software/components/cic_unification/.depend b/helm/software/components/cic_unification/.depend index 2e054f73d..a7b23ceb4 100644 --- a/helm/software/components/cic_unification/.depend +++ b/helm/software/components/cic_unification/.depend @@ -1,10 +1,3 @@ -cicMetaSubst.cmi: -cicMkImplicit.cmi: -termUtil.cmi: -coercGraph.cmi: -cicUnification.cmi: -cicReplace.cmi: -cicRefine.cmi: cicMetaSubst.cmo: cicMetaSubst.cmi cicMetaSubst.cmx: cicMetaSubst.cmi cicMkImplicit.cmo: cicMkImplicit.cmi diff --git a/helm/software/components/cic_unification/.depend.opt b/helm/software/components/cic_unification/.depend.opt index 2e054f73d..a7b23ceb4 100644 --- a/helm/software/components/cic_unification/.depend.opt +++ b/helm/software/components/cic_unification/.depend.opt @@ -1,10 +1,3 @@ -cicMetaSubst.cmi: -cicMkImplicit.cmi: -termUtil.cmi: -coercGraph.cmi: -cicUnification.cmi: -cicReplace.cmi: -cicRefine.cmi: cicMetaSubst.cmo: cicMetaSubst.cmi cicMetaSubst.cmx: cicMetaSubst.cmi cicMkImplicit.cmo: cicMkImplicit.cmi diff --git a/helm/software/components/content_pres/.depend b/helm/software/components/content_pres/.depend index 8d74439eb..6dd0e78a1 100644 --- a/helm/software/components/content_pres/.depend +++ b/helm/software/components/content_pres/.depend @@ -1,9 +1,3 @@ -renderingAttrs.cmi: -cicNotationLexer.cmi: -cicNotationParser.cmi: -mpresentation.cmi: -box.cmi: -content2presMatcher.cmi: termContentPres.cmi: cicNotationParser.cmi boxPp.cmi: mpresentation.cmi cicNotationPres.cmi box.cmi cicNotationPres.cmi: mpresentation.cmi box.cmi diff --git a/helm/software/components/content_pres/.depend.opt b/helm/software/components/content_pres/.depend.opt index 8d74439eb..6dd0e78a1 100644 --- a/helm/software/components/content_pres/.depend.opt +++ b/helm/software/components/content_pres/.depend.opt @@ -1,9 +1,3 @@ -renderingAttrs.cmi: -cicNotationLexer.cmi: -cicNotationParser.cmi: -mpresentation.cmi: -box.cmi: -content2presMatcher.cmi: termContentPres.cmi: cicNotationParser.cmi boxPp.cmi: mpresentation.cmi cicNotationPres.cmi box.cmi cicNotationPres.cmi: mpresentation.cmi box.cmi diff --git a/helm/software/components/content_pres/cicNotationParser.ml b/helm/software/components/content_pres/cicNotationParser.ml index 587c22e4a..ae4c0b3ef 100644 --- a/helm/software/components/content_pres/cicNotationParser.ml +++ b/helm/software/components/content_pres/cicNotationParser.ml @@ -211,8 +211,8 @@ let extract_term_production pattern = match magic with | Ast.List0 (_, None) -> Gramext.Slist0 s | Ast.List1 (_, None) -> Gramext.Slist1 s - | Ast.List0 (_, Some l) -> Gramext.Slist0sep (s, gram_of_literal l, false) - | Ast.List1 (_, Some l) -> Gramext.Slist1sep (s, gram_of_literal l, false) + | Ast.List0 (_, Some l) -> Gramext.Slist0sep (s, gram_of_literal l,false) + | Ast.List1 (_, Some l) -> Gramext.Slist1sep (s, gram_of_literal l,false) | _ -> assert false in [ Env (List.map Env.list_declaration p_names), @@ -246,14 +246,9 @@ let compare_rule_id x y = | [],[] -> 0 | [],_ -> ~-1 | _,[] -> 1 - | ((s1::tl1) ),((s2::tl2) ) -> + | ((s1::tl1) as x),((s2::tl2) as y) -> if Gramext.eq_symbol s1 s2 then aux (tl1,tl2) - else - let res = - try Pervasives.compare s1 s2 - with Invalid_argument _ -> 0 - in - if res = 0 then aux (tl1, tl2) else res + else Pervasives.compare x y in aux (x,y) diff --git a/helm/software/components/content_pres/cicNotationPres.ml b/helm/software/components/content_pres/cicNotationPres.ml index 82a326c48..35f128a05 100644 --- a/helm/software/components/content_pres/cicNotationPres.ml +++ b/helm/software/components/content_pres/cicNotationPres.ml @@ -371,9 +371,6 @@ let render ~lookup_uri ?(prec=(-1)) = (* use the one below to reset precedence and associativity *) let invoke_reinit t = aux [] mathonly xref ~-1 t in match l with - | A.Sup (A.Layout (A.Sub (t1,t2)), t3) - | A.Sup (A.AttributedTerm (_,A.Layout (A.Sub (t1,t2))), t3) - -> Mpres.Msubsup (attrs, invoke' t1, invoke_reinit t2, invoke_reinit t3) | A.Sub (t1, t2) -> Mpres.Msub (attrs, invoke' t1, invoke_reinit t2) | A.Sup (t1, t2) -> Mpres.Msup (attrs, invoke' t1, invoke_reinit t2) | A.Below (t1, t2) -> Mpres.Munder (attrs, invoke' t1, invoke_reinit t2) diff --git a/helm/software/components/content_pres/content2pres.ml b/helm/software/components/content_pres/content2pres.ml index 05e4ae3cb..7dc1e2357 100644 --- a/helm/software/components/content_pres/content2pres.ml +++ b/helm/software/components/content_pres/content2pres.ml @@ -1013,7 +1013,8 @@ let njoint_def2pres term2pres joint_kind defs = ;; let content2pres0 - ?skip_initial_lambdas ?(skip_thm_and_qed=false) term2pres + ?skip_initial_lambdas ?(skip_thm_and_qed=false) + (term2pres : ?prec:int -> 'a -> 'b) (id,params,metasenv,obj) = match obj with @@ -1070,7 +1071,8 @@ let content2pres (TermContentPres.pp_ast ast))) let ncontent2pres0 - ?skip_initial_lambdas ?(skip_thm_and_qed=false) term2pres + ?skip_initial_lambdas ?(skip_thm_and_qed=false) + (term2pres : ?prec:int -> 'a -> 'b) (id,params,metasenv,obj : CicNotationPt.term Content.cobj) = match obj with diff --git a/helm/software/components/disambiguation/.depend b/helm/software/components/disambiguation/.depend index 9fdbeeeaf..aba9ffea7 100644 --- a/helm/software/components/disambiguation/.depend +++ b/helm/software/components/disambiguation/.depend @@ -1,4 +1,3 @@ -disambiguateTypes.cmi: disambiguate.cmi: disambiguateTypes.cmi multiPassDisambiguator.cmi: disambiguateTypes.cmi disambiguate.cmi disambiguateTypes.cmo: disambiguateTypes.cmi diff --git a/helm/software/components/disambiguation/.depend.opt b/helm/software/components/disambiguation/.depend.opt index 9fdbeeeaf..aba9ffea7 100644 --- a/helm/software/components/disambiguation/.depend.opt +++ b/helm/software/components/disambiguation/.depend.opt @@ -1,4 +1,3 @@ -disambiguateTypes.cmi: disambiguate.cmi: disambiguateTypes.cmi multiPassDisambiguator.cmi: disambiguateTypes.cmi disambiguate.cmi disambiguateTypes.cmo: disambiguateTypes.cmi diff --git a/helm/software/components/disambiguation/disambiguate.ml b/helm/software/components/disambiguation/disambiguate.ml index 5b5b53f52..5ac709f9b 100644 --- a/helm/software/components/disambiguation/disambiguate.ml +++ b/helm/software/components/disambiguation/disambiguate.ml @@ -447,22 +447,6 @@ let disambiguate_thing fix_instance item (Environment.find item e) with Not_found -> []) in - - (* items with 1 choice are interpreted ASAP *) - let aliases, todo_dom = - let rec aux (aliases,acc) = function - | [] -> aliases, acc - | (Node (_, item,extra) as node) :: tl -> - let choices = lookup_choices item in - if List.length choices <> 1 then aux (aliases, acc@[node]) tl - else - let tl = tl @ extra in - if Environment.mem item aliases then aux (aliases, acc) tl - else aux (Environment.add item (List.hd choices) aliases, acc) tl - in - aux (aliases,[]) todo_dom - in - (* (* *) let _ = diff --git a/helm/software/components/disambiguation/multiPassDisambiguator.ml b/helm/software/components/disambiguation/multiPassDisambiguator.ml index b1cf9aed0..d3250c2fe 100644 --- a/helm/software/components/disambiguation/multiPassDisambiguator.ml +++ b/helm/software/components/disambiguation/multiPassDisambiguator.ml @@ -51,8 +51,6 @@ let passes () = (* *) (* for demo to reduce the number of interpretations *) (true, `Library, true); ] - else if !debug then - [ (true, `Multi, true); ] else [ (true, `Mono, false); (true, `Multi, false); diff --git a/helm/software/components/extlib/.depend b/helm/software/components/extlib/.depend index dcc6377a0..201cd0cba 100644 --- a/helm/software/components/extlib/.depend +++ b/helm/software/components/extlib/.depend @@ -1,13 +1,3 @@ -componentsConf.cmi: -hExtlib.cmi: -hMarshal.cmi: -patternMatcher.cmi: -hLog.cmi: -trie.cmi: -discrimination_tree.cmi: -hTopoSort.cmi: -refCounter.cmi: -graphvizPp.cmi: componentsConf.cmo: componentsConf.cmi componentsConf.cmx: componentsConf.cmi hExtlib.cmo: hExtlib.cmi diff --git a/helm/software/components/extlib/.depend.opt b/helm/software/components/extlib/.depend.opt index dcc6377a0..201cd0cba 100644 --- a/helm/software/components/extlib/.depend.opt +++ b/helm/software/components/extlib/.depend.opt @@ -1,13 +1,3 @@ -componentsConf.cmi: -hExtlib.cmi: -hMarshal.cmi: -patternMatcher.cmi: -hLog.cmi: -trie.cmi: -discrimination_tree.cmi: -hTopoSort.cmi: -refCounter.cmi: -graphvizPp.cmi: componentsConf.cmo: componentsConf.cmi componentsConf.cmx: componentsConf.cmi hExtlib.cmo: hExtlib.cmi diff --git a/helm/software/components/extlib/graphvizPp.ml b/helm/software/components/extlib/graphvizPp.ml index 464328837..ed5bbdc54 100644 --- a/helm/software/components/extlib/graphvizPp.ml +++ b/helm/software/components/extlib/graphvizPp.ml @@ -49,16 +49,10 @@ module Dot = struct let attribute fmt (k, v) = fprintf fmt "@[%s=@,\"%s\",@]" k v let attributes attrs fmt = List.iter (attribute fmt) attrs - let quote_string quote s = if quote then "\"" ^s ^ "\"" else s let node name ~quote ?(attrs = []) fmt = - fprintf fmt "@[%s@ [" (quote_string quote name); - attributes attrs fmt; - fprintf fmt "];@]@," - - let edge ~quote name1 name2 ?(attrs = []) fmt = - fprintf fmt "@[%s ->@ %s@ [" - (quote_string quote name1) (quote_string quote name2); + let quote_string = if quote then "\"" else "" in + fprintf fmt "@[%s%s%s@ [" quote_string name quote_string; attributes attrs fmt; fprintf fmt "];@]@," @@ -74,7 +68,10 @@ module Dot = | None -> ()) let node = node ~quote:true - let edge = edge ~quote:true + let edge name1 name2 ?(attrs = []) fmt = + fprintf fmt "@[%s ->@ %s@ [" name1 name2; + attributes attrs fmt; + fprintf fmt "];@]@," let raw s fmt = pp_print_string fmt s let trailer fmt = fprintf fmt "@,}@]%!" end diff --git a/helm/software/components/getter/.depend b/helm/software/components/getter/.depend index ca64d8ec0..20f69cf0c 100644 --- a/helm/software/components/getter/.depend +++ b/helm/software/components/getter/.depend @@ -1,13 +1,6 @@ -http_getter_wget.cmi: -http_getter_logger.cmi: -http_getter_misc.cmi: -http_getter_const.cmi: http_getter_env.cmi: http_getter_types.cmo -http_getter_storage.cmi: http_getter_common.cmi: http_getter_types.cmo http_getter.cmi: http_getter_types.cmo -http_getter_types.cmo: -http_getter_types.cmx: http_getter_wget.cmo: http_getter_types.cmo http_getter_wget.cmi http_getter_wget.cmx: http_getter_types.cmx http_getter_wget.cmi http_getter_logger.cmo: http_getter_logger.cmi diff --git a/helm/software/components/getter/.depend.opt b/helm/software/components/getter/.depend.opt index 64da37f13..554fb1ec7 100644 --- a/helm/software/components/getter/.depend.opt +++ b/helm/software/components/getter/.depend.opt @@ -1,13 +1,6 @@ -http_getter_wget.cmi: -http_getter_logger.cmi: -http_getter_misc.cmi: -http_getter_const.cmi: http_getter_env.cmi: http_getter_types.cmx -http_getter_storage.cmi: http_getter_common.cmi: http_getter_types.cmx http_getter.cmi: http_getter_types.cmx -http_getter_types.cmo: -http_getter_types.cmx: http_getter_wget.cmo: http_getter_types.cmx http_getter_wget.cmi http_getter_wget.cmx: http_getter_types.cmx http_getter_wget.cmi http_getter_logger.cmo: http_getter_logger.cmi diff --git a/helm/software/components/grafite/.depend b/helm/software/components/grafite/.depend index f305b1580..dc225e221 100644 --- a/helm/software/components/grafite/.depend +++ b/helm/software/components/grafite/.depend @@ -1,7 +1,5 @@ grafiteAstPp.cmi: grafiteAst.cmo grafiteMarshal.cmi: grafiteAst.cmo -grafiteAst.cmo: -grafiteAst.cmx: grafiteAstPp.cmo: grafiteAst.cmo grafiteAstPp.cmi grafiteAstPp.cmx: grafiteAst.cmx grafiteAstPp.cmi grafiteMarshal.cmo: grafiteAstPp.cmi grafiteAst.cmo grafiteMarshal.cmi diff --git a/helm/software/components/grafite/.depend.opt b/helm/software/components/grafite/.depend.opt index e01d5bbfa..0f64ba789 100644 --- a/helm/software/components/grafite/.depend.opt +++ b/helm/software/components/grafite/.depend.opt @@ -1,7 +1,5 @@ grafiteAstPp.cmi: grafiteAst.cmx grafiteMarshal.cmi: grafiteAst.cmx -grafiteAst.cmo: -grafiteAst.cmx: grafiteAstPp.cmo: grafiteAst.cmx grafiteAstPp.cmi grafiteAstPp.cmx: grafiteAst.cmx grafiteAstPp.cmi grafiteMarshal.cmo: grafiteAstPp.cmi grafiteAst.cmx grafiteMarshal.cmi diff --git a/helm/software/components/grafite/grafiteAst.ml b/helm/software/components/grafite/grafiteAst.ml index 9ea33c2de..7754102c6 100644 --- a/helm/software/components/grafite/grafiteAst.ml +++ b/helm/software/components/grafite/grafiteAst.ml @@ -43,7 +43,7 @@ type 'lazy_term reduction = type 'ident intros_spec = int option * 'ident option list -type 'term auto_params = 'term list option * (string*string) list +type 'term auto_params = 'term list * (string*string) list type 'term just = [ `Term of 'term @@ -51,7 +51,6 @@ type 'term just = type ntactic = | NApply of loc * CicNotationPt.term - | NSmartApply of loc * CicNotationPt.term | NAssert of loc * ((string * [`Decl of CicNotationPt.term | `Def of CicNotationPt.term * CicNotationPt.term]) list * CicNotationPt.term) list | NCases of loc * CicNotationPt.term * npattern | NCase1 of loc * string @@ -60,13 +59,11 @@ type ntactic = | NCut of loc * CicNotationPt.term (* | NDiscriminate of loc * CicNotationPt.term | NSubst of loc * CicNotationPt.term *) - | NDestruct of loc * string list option * string list + | NDestruct of loc | NElim of loc * CicNotationPt.term * npattern | NGeneralize of loc * npattern | NId of loc | NIntro of loc * string - | NIntros of loc * string list - | NInversion of loc * CicNotationPt.term * npattern | NLApply of loc * CicNotationPt.term | NLetIn of loc * npattern * CicNotationPt.term * string | NReduce of loc * [ `Normalize of bool | `Whd of bool ] * npattern @@ -201,12 +198,10 @@ type ('term,'lazy_term) macro = type nmacro = | NCheck of loc * CicNotationPt.term | Screenshot of loc * string - | NAutoInteractive of loc * CicNotationPt.term auto_params - | NIntroGuess of loc (** To be increased each time the command type below changes, used for "safe" * marshalling *) -let magic = 34 +let magic = 33 type ('term,'obj) command = | Index of loc * 'term option (* key *) * UriManager.uri (* value *) diff --git a/helm/software/components/grafite/grafiteAstPp.ml b/helm/software/components/grafite/grafiteAstPp.ml index 5f89df9d6..0db8efc1a 100644 --- a/helm/software/components/grafite/grafiteAstPp.ml +++ b/helm/software/components/grafite/grafiteAstPp.ml @@ -77,10 +77,10 @@ let opt_string_pp = function let pp_auto_params ~term_pp (univ, params) = String.concat " " (List.map (fun (k,v) -> if v <> "" then k ^ "=" ^ v else k) params) ^ - match univ with - | None -> "" - | Some l -> (if params <> [] then " " else "") ^ "by " ^ - String.concat " " (List.map term_pp l) + if univ <> [] then + (if params <> [] then " " else "") ^ "by " ^ + String.concat " " (List.map term_pp univ) + else "" ;; let pp_just ~term_pp = @@ -96,13 +96,10 @@ let rec pp_ntactic ~map_unicode_to_tex = pp_tactic_pattern ~map_unicode_to_tex ~lazy_term_pp ~term_pp in function | NApply (_,t) -> "napply " ^ CicNotationPp.pp_term t - | NSmartApply (_,t) -> "fixme" - | NAuto (_,(None,flgs)) -> - "nautobatch" ^ - String.concat " " (List.map (fun a,b -> a ^ "=" ^ b) flgs) - | NAuto (_,(Some l,flgs)) -> - "nautobatch" ^ " by " ^ - (String.concat "," (List.map CicNotationPp.pp_term l)) ^ + | NAuto (_,(l,flgs)) -> + "nauto" ^ + (if l <> [] then (" by " ^ + (String.concat "," (List.map CicNotationPp.pp_term l))) else "") ^ String.concat " " (List.map (fun a,b -> a ^ "=" ^ b) flgs) | NCases (_,what,where) -> "ncases " ^ CicNotationPp.pp_term what ^ assert false ^ " " ^ assert false @@ -116,13 +113,11 @@ let rec pp_ntactic ~map_unicode_to_tex = | NCut (_,t) -> "ncut " ^ CicNotationPp.pp_term t (*| NDiscriminate (_,t) -> "ndiscriminate " ^ CicNotationPp.pp_term t | NSubst (_,t) -> "nsubst " ^ CicNotationPp.pp_term t *) - | NDestruct (_,dom,skip) -> "ndestruct ..." + | NDestruct _ -> "ndestruct" | NElim (_,what,where) -> "nelim " ^ CicNotationPp.pp_term what ^ assert false ^ " " ^ assert false | NId _ -> "nid" | NIntro (_,n) -> "#" ^ n - | NInversion (_,what,where) -> "ninversion " ^ CicNotationPp.pp_term what ^ - assert false ^ " " ^ assert false | NLApply (_,t) -> "lapply " ^ CicNotationPp.pp_term t | NRewrite (_,dir,n,where) -> "nrewrite " ^ (match dir with `LeftToRight -> ">" | `RightToLeft -> "<") ^ @@ -377,14 +372,14 @@ let pp_coercion ~term_pp t do_composites arity saturations= (term_pp t) arity saturations (if do_composites then "" else "nocomposites") -let pp_ncommand ~obj_pp = function +let pp_ncommand = function | UnificationHint (_,t, n) -> "unification hint " ^ string_of_int n ^ " " ^ CicNotationPp.pp_term t | NDiscriminator (_,_) | NInverter (_,_,_,_,_) + | NObj (_,_) | NUnivConstraint (_) -> "not supported" | NCoercion (_) -> "not supported" - | NObj (_,obj) -> obj_pp obj | NQed (_) -> "nqed" | NCopy (_,name,uri,map) -> "copy " ^ name ^ " from " ^ NUri.string_of_uri uri ^ " with " ^ @@ -457,9 +452,7 @@ let pp_executable ~map_unicode_to_tex ~term_pp ~lazy_term_pp ~obj_pp = pp_non_punctuation_tactical tac ^ pp_punctuation_tactical punct | Command (_, cmd) -> pp_command ~term_pp ~obj_pp cmd ^ "." - | NCommand (_, cmd) -> - let obj_pp = Obj.magic obj_pp in - pp_ncommand ~obj_pp cmd ^ "." + | NCommand (_, cmd) -> pp_ncommand cmd ^ "." let pp_comment ~map_unicode_to_tex ~term_pp ~lazy_term_pp ~obj_pp = function diff --git a/helm/software/components/grafite_engine/.depend b/helm/software/components/grafite_engine/.depend index 10236823a..a545f14e3 100644 --- a/helm/software/components/grafite_engine/.depend +++ b/helm/software/components/grafite_engine/.depend @@ -1,4 +1,3 @@ -grafiteTypes.cmi: grafiteSync.cmi: grafiteTypes.cmi nCicCoercDeclaration.cmi: grafiteTypes.cmi grafiteEngine.cmi: grafiteTypes.cmi diff --git a/helm/software/components/grafite_engine/.depend.opt b/helm/software/components/grafite_engine/.depend.opt index 10236823a..a545f14e3 100644 --- a/helm/software/components/grafite_engine/.depend.opt +++ b/helm/software/components/grafite_engine/.depend.opt @@ -1,4 +1,3 @@ -grafiteTypes.cmi: grafiteSync.cmi: grafiteTypes.cmi nCicCoercDeclaration.cmi: grafiteTypes.cmi grafiteEngine.cmi: grafiteTypes.cmi diff --git a/helm/software/components/grafite_engine/grafiteEngine.ml b/helm/software/components/grafite_engine/grafiteEngine.ml index ca02263b0..248c02fa5 100644 --- a/helm/software/components/grafite_engine/grafiteEngine.ml +++ b/helm/software/components/grafite_engine/grafiteEngine.ml @@ -530,15 +530,17 @@ let record_index_obj = end ;; -let compute_keys status uri height kind = - let mk_item ty spec = - let orig_ty = NTacStatus.mk_cic_term [] ty in - let status,keys = NnAuto.keys_of_type status orig_ty in - let keys = - List.map - (fun t -> - snd (NTacStatus.term_of_cic_term status t (NTacStatus.ctx_of t))) - keys +let index_obj_for_auto status (uri, height, _, _, kind) = + let mk_item orig_ty spec = + let ty,_,_ = NCicMetaSubst.saturate ~delta:max_int [] [] [] orig_ty 0 in + let keys = + match ty with + | NCic.Const (NReference.Ref (_,NReference.Def h)) + | NCic.Appl (NCic.Const (NReference.Ref (_,NReference.Def h))::_) + when h > 0 -> + let ty',_,_= NCicMetaSubst.saturate ~delta:(h-1) [] [] [] orig_ty 0 in + [ty;ty'] + | _ -> [ty] in keys,NCic.Const(NReference.reference_of_spec uri spec) in @@ -562,7 +564,7 @@ let compute_keys status uri height kind = | NCic.Constant (_,_,None, ty, _) -> [ mk_item ty NReference.Decl ] in - HExtlib.filter_map + let data = HExtlib.filter_map (fun (keys, t) -> let keys = List.filter (function @@ -585,48 +587,14 @@ let compute_keys status uri height kind = NCicPp.ppterm ~metasenv:[] ~subst:[] ~context:[] t); None end) - data -;; - -let index_obj_for_auto status (uri, height, _, _, kind) = - (*prerr_endline (string_of_int height);*) - let data = compute_keys status uri height kind in - let status = basic_index_obj data status in - let dump = record_index_obj data :: status#dump in - status#set_dump dump -;; - -let index_eq uri status = - let eq_status = status#eq_cache in - let eq_status1 = NCicParamod.index_obj eq_status uri in - status#set_eq_cache eq_status1 -;; - -let record_index_eq = - let basic_index_eq uri - ~refresh_uri_in_universe - ~refresh_uri_in_term - = index_eq (NCicLibrary.refresh_uri uri) + data in - NCicLibrary.Serializer.register#run "index_eq" - object(_ : 'a NCicLibrary.register_type) - method run = basic_index_eq - end -;; - -let index_eq_for_auto status uri = - if NnAuto.is_a_fact_obj status uri then - let newstatus = index_eq uri status in - if newstatus#eq_cache == status#eq_cache then status - else - ((*prerr_endline ("recording " ^ (NUri.string_of_uri uri));*) - let dump = record_index_eq uri :: newstatus#dump - in newstatus#set_dump dump) - else - ((*prerr_endline "Not a fact";*) - status) + let status = basic_index_obj data status in + let dump = record_index_obj data :: status#dump in + status#set_dump dump ;; + let basic_eval_add_constraint (u1,u2) status = NCicLibrary.add_constraint status u1 u2 ;; @@ -753,7 +721,7 @@ let eval_ng_punct (_text, _prefix_len, punct) = match punct with | GrafiteAst.Dot _ -> NTactics.dot_tac | GrafiteAst.Semicolon _ -> fun x -> x - | GrafiteAst.Branch _ -> NTactics.branch_tac ~force:false + | GrafiteAst.Branch _ -> NTactics.branch_tac | GrafiteAst.Shift _ -> NTactics.shift_tac | GrafiteAst.Pos (_,l) -> NTactics.pos_tac l | GrafiteAst.Wildcard _ -> NTactics.wildcard_tac @@ -764,8 +732,6 @@ let eval_ng_tac tac = let rec aux f (text, prefix_len, tac) = match tac with | GrafiteAst.NApply (_loc, t) -> NTactics.apply_tac (text,prefix_len,t) - | GrafiteAst.NSmartApply (_loc, t) -> - NnAuto.smart_apply_tac (text,prefix_len,t) | GrafiteAst.NAssert (_loc, seqs) -> NTactics.assert_tac ((List.map @@ -777,12 +743,10 @@ let eval_ng_tac tac = ) hyps, (text,prefix_len,concl)) ) seqs) - | GrafiteAst.NAuto (_loc, (None,a)) -> - NAuto.auto_tac ~params:(None,a) ?trace_ref:None - | GrafiteAst.NAuto (_loc, (Some l,a)) -> + | GrafiteAst.NAuto (_loc, (l,a)) -> NAuto.auto_tac - ~params:(Some List.map (fun x -> "",0,x) l,a) ?trace_ref:None - | GrafiteAst.NBranch _ -> NTactics.branch_tac ~force:false + ~params:(List.map (fun x -> "",0,x) l,a) + | GrafiteAst.NBranch _ -> NTactics.branch_tac | GrafiteAst.NCases (_loc, what, where) -> NTactics.cases_tac ~what:(text,prefix_len,what) @@ -797,7 +761,7 @@ let eval_ng_tac tac = | GrafiteAst.NCut (_loc, t) -> NTactics.cut_tac (text,prefix_len,t) (*| GrafiteAst.NDiscriminate (_,what) -> NDestructTac.discriminate_tac ~what:(text,prefix_len,what) | GrafiteAst.NSubst (_,what) -> NDestructTac.subst_tac ~what:(text,prefix_len,what)*) - | GrafiteAst.NDestruct (_,dom,skip) -> NDestructTac.destruct_tac dom skip + | GrafiteAst.NDestruct _ -> NDestructTac.destruct_tac | GrafiteAst.NDot _ -> NTactics.dot_tac | GrafiteAst.NElim (_loc, what, where) -> NTactics.elim_tac @@ -808,11 +772,6 @@ let eval_ng_tac tac = NTactics.generalize_tac ~where:(text,prefix_len,where) | GrafiteAst.NId _ -> (fun x -> x) | GrafiteAst.NIntro (_loc,n) -> NTactics.intro_tac n - | GrafiteAst.NIntros (_loc,ns) -> NTactics.intros_tac ns - | GrafiteAst.NInversion (_loc, what, where) -> - NTactics.inversion_tac - ~what:(text,prefix_len,what) - ~where:(text,prefix_len,where) | GrafiteAst.NLApply (_loc, t) -> NTactics.lapply_tac (text,prefix_len,t) | GrafiteAst.NLetIn (_loc,where,what,name) -> NTactics.letin_tac ~where:(text,prefix_len,where) @@ -831,7 +790,7 @@ let eval_ng_tac tac = | GrafiteAst.NUnfocus _ -> NTactics.unfocus_tac | GrafiteAst.NWildcard _ -> NTactics.wildcard_tac | GrafiteAst.NTry (_,tac) -> NTactics.try_tac - (f f (text, prefix_len, tac)) + (aux f (text, prefix_len, tac)) | GrafiteAst.NAssumption _ -> NTactics.assumption_tac | GrafiteAst.NBlock (_,l) -> NTactics.block_tac (List.map (fun x -> aux f (text,prefix_len,x)) l) @@ -888,27 +847,9 @@ let rec eval_ncommand opts status (text,prefix_len,cmd) = | _ -> obj_kind in let obj = uri,height,[],[],obj_kind in - (*prerr_endline ("pp new obj \n"^NCicPp.ppobj obj);*) let old_status = status in let status = NCicLibrary.add_obj status obj in - let index_obj = - match obj_kind with - NCic.Constant (_,_,_,_,(_,`Example,_)) - | NCic.Fixpoint (_,_,(_,`Example,_)) -> false - | _ -> true - in - let status = - if index_obj then - let status = index_obj_for_auto status obj in - (try index_eq_for_auto status uri - with _ -> status) - else - status in -(* - try - index_eq uri status - with _ -> prerr_endline "got an exception"; status - in *) + let status = index_obj_for_auto status obj in (* prerr_endline (NCicPp.ppobj obj); *) HLog.message ("New object: " ^ NUri.string_of_uri uri); (try @@ -937,36 +878,35 @@ let rec eval_ncommand opts status (text,prefix_len,cmd) = in if nstatus#ng_mode <> `CommandMode then begin - (*HLog.warn "error in generating projection/eliminator";*) - status, uris + HLog.error "error in generating projection/eliminator"; + prerr_endline (NCicPp.ppobj nstatus#obj); + nstatus, uris end else nstatus, concat_nuris uris nuris with - | MultiPassDisambiguator.DisambiguationError _ + | MultiPassDisambiguator.DisambiguationError _ | NCicTypeChecker.TypeCheckerFailure _ -> - (*HLog.warn "error in generating projection/eliminator";*) + HLog.warn "error in generating projection/eliminator"; status,uris ) (status,`New [] (* uris *)) boxml in let _,_,_,_,nobj = obj in let status = match nobj with - NCic.Inductive (is_ind,leftno,[it],_) -> + NCic.Inductive (true,leftno,[it],_) -> let _,ind_name,ty,cl = it in List.fold_left (fun status outsort -> let status = status#set_ng_mode `ProofMode in try - (let status,invobj = - NInversion.mk_inverter - (ind_name ^ "_inv_" ^ - (snd (NCicElim.ast_of_sort outsort))) - is_ind it leftno outsort status status#baseuri in + (let status,invobj = NInversion.mk_inverter + (ind_name ^ "_inv_" ^ (snd (NCicElim.ast_of_sort outsort))) + it leftno outsort status status#baseuri in let _,_,menv,_,_ = invobj in fst (match menv with [] -> eval_ncommand opts status ("",0,GrafiteAst.NQed Stdpp.dummy_loc) | _ -> status,`New [])) (* XXX *) - with _ -> (*HLog.warn "error in generating inversion principle"; *) + with _ -> HLog.warn "error in generating inversion principle"; let status = status#set_ng_mode `CommandMode in status) status (NCic.Prop:: @@ -1097,7 +1037,7 @@ let rec eval_ncommand opts status (text,prefix_len,cmd) = indtyno, NCicEnvironment.get_checked_indtys r | _ -> prerr_endline ("engine: indty =" ^ NCicPp.ppterm ~metasenv:[] ~subst:[] ~context:[] indty) ; assert false in let it = List.nth tys indtyno in - let status,obj = NInversion.mk_inverter name true it leftno ?selection sort + let status,obj = NInversion.mk_inverter name it leftno ?selection sort status status#baseuri in let _,_,menv,_,_ = obj in (match menv with diff --git a/helm/software/components/grafite_engine/grafiteSync.ml b/helm/software/components/grafite_engine/grafiteSync.ml index 47744f66e..ca29d39fc 100644 --- a/helm/software/components/grafite_engine/grafiteSync.ml +++ b/helm/software/components/grafite_engine/grafiteSync.ml @@ -162,11 +162,7 @@ let uri_list_diff l2 l1 = let diff = S.diff s2 s1 in S.fold (fun uri uris -> uri :: uris) diff [] -let initial_status lexicon_status baseuri = - (new GrafiteTypes.status baseuri)#set_lstatus lexicon_status#lstatus -;; - -let time_travel ~present ?(past=initial_status present present#baseuri) () = +let time_travel ~present ~past = let objs_to_remove = uri_list_diff present#objects past#objects in List.iter LibrarySync.remove_obj objs_to_remove; @@ -174,10 +170,14 @@ let time_travel ~present ?(past=initial_status present present#baseuri) () = NCicLibrary.time_travel past ;; -let init lexicon_status = +let initial_status lexicon_status baseuri = + (new GrafiteTypes.status baseuri)#set_lstatus lexicon_status#lstatus +;; + +let init baseuri = CoercDb.restore CoercDb.empty_coerc_db; LibraryObjects.reset_defaults (); - initial_status lexicon_status + initial_status baseuri ;; let pop () = LibrarySync.pop (); diff --git a/helm/software/components/grafite_engine/grafiteSync.mli b/helm/software/components/grafite_engine/grafiteSync.mli index bac7eee9b..d15896dab 100644 --- a/helm/software/components/grafite_engine/grafiteSync.mli +++ b/helm/software/components/grafite_engine/grafiteSync.mli @@ -39,7 +39,7 @@ val prefer_coercion: GrafiteTypes.status -> UriManager.uri -> GrafiteTypes.status val time_travel: - present:GrafiteTypes.status -> ?past:GrafiteTypes.status -> unit -> unit + present:GrafiteTypes.status -> past:GrafiteTypes.status -> unit (* also resets the imperative part of the status * init: the baseuri of the current script *) diff --git a/helm/software/components/grafite_engine/nCicCoercDeclaration.ml b/helm/software/components/grafite_engine/nCicCoercDeclaration.ml index 7fcd6a473..fa6b163ad 100644 --- a/helm/software/components/grafite_engine/nCicCoercDeclaration.ml +++ b/helm/software/components/grafite_engine/nCicCoercDeclaration.ml @@ -9,7 +9,7 @@ \ / This software is distributed as is, NO WARRANTY. V_______________________________________________________________ *) -(* let debug s = prerr_endline (Lazy.force s) ;;*) +let debug s = prerr_endline (Lazy.force s) ;; let debug _ = ();; let skel_dummy = NCic.Implicit `Type;; @@ -127,7 +127,7 @@ let only_head = function let src_tgt_cpos_arity_of_ty_id_src_tgt status ty id src tgt = let status, src, cpos = let rec aux cpos ctx = function - | NCic.Prod (name,ty,bo) -> + | NCic.Prod (name,ty,bo) -> if name <> id then aux (cpos+1) ((name,NCic.Decl ty)::ctx) bo else (try @@ -177,7 +177,6 @@ let fresh_uri status prefix suffix = diverge (mk "") 0 ;; -exception Stop;; let close_graph name t s d to_s from_d p a status = let c = @@ -196,13 +195,13 @@ let close_graph name t s d to_s from_d p a status = let c_o_from_d = product (fun (n,mc,c,_,j) (n1,m1,t1,ty,i) -> - compose_names n n1,m1@mc,t1,[i,c],j,count_prod ty) + compose_names n1 n,m1@mc,t1,[i,c],j,count_prod ty) [c] from_d in let to_s_o_c_o_from_d = product (fun (n1,m1,t1,_,j) (n,m,t,upl,i,a)-> - compose_names n1 n,m@m1,t,(i,t1)::upl,j,a) + compose_names n n1,m@m1,t,(i,t1)::upl,j,a) to_s c_o_from_d in to_s_o_c @ c_o_from_d @ to_s_o_c_o_from_d @@ -225,14 +224,14 @@ let close_graph name t s d to_s from_d p a status = let pos = match p with | NCic.Meta (p,_) -> pos_in_list p (List.map fst metasenv) - | t -> raise Stop + | t -> assert false in let ty = NCicTypeChecker.typeof ~metasenv:[] ~subst:[] [] bo in let src,tgt = src_tgt_of_ty_cpos_arity ty pos arity in let src = only_head src in let tgt = only_head tgt in debug (lazy( - "composite " ^ name ^ ": "^ + "composite: "^ NCicPp.ppterm ~metasenv:[] ~subst:[] ~context:[] bo ^ " : " ^ NCicPp.ppterm ~metasenv:[] ~subst:[] ~context:[] ty ^ " as " ^ NCicPp.ppterm ~metasenv:[] ~subst:[] ~context:[] src ^ " ===> " ^ @@ -252,7 +251,7 @@ let close_graph name t s d to_s from_d p a status = with | NCicTypeChecker.TypeCheckerFailure _ | NCicUnification.UnificationFailure _ - | NCicUnification.Uncertain _ | Stop -> None + | NCicUnification.Uncertain _ -> None ) composites in composites diff --git a/helm/software/components/grafite_parser/.depend b/helm/software/components/grafite_parser/.depend index 2766b04d0..97bf4d7c2 100644 --- a/helm/software/components/grafite_parser/.depend +++ b/helm/software/components/grafite_parser/.depend @@ -1,9 +1,4 @@ -dependenciesParser.cmi: -grafiteParser.cmi: -cicNotation2.cmi: -nEstatus.cmi: grafiteDisambiguate.cmi: nEstatus.cmi -print_grammar.cmi: dependenciesParser.cmo: dependenciesParser.cmi dependenciesParser.cmx: dependenciesParser.cmi grafiteParser.cmo: grafiteParser.cmi diff --git a/helm/software/components/grafite_parser/.depend.opt b/helm/software/components/grafite_parser/.depend.opt index 2766b04d0..97bf4d7c2 100644 --- a/helm/software/components/grafite_parser/.depend.opt +++ b/helm/software/components/grafite_parser/.depend.opt @@ -1,9 +1,4 @@ -dependenciesParser.cmi: -grafiteParser.cmi: -cicNotation2.cmi: -nEstatus.cmi: grafiteDisambiguate.cmi: nEstatus.cmi -print_grammar.cmi: dependenciesParser.cmo: dependenciesParser.cmi dependenciesParser.cmx: dependenciesParser.cmi grafiteParser.cmo: grafiteParser.cmi diff --git a/helm/software/components/grafite_parser/grafiteDisambiguate.ml b/helm/software/components/grafite_parser/grafiteDisambiguate.ml index 7510c1cc5..6aee803f4 100644 --- a/helm/software/components/grafite_parser/grafiteDisambiguate.ml +++ b/helm/software/components/grafite_parser/grafiteDisambiguate.ml @@ -43,7 +43,7 @@ let singleton msg = function Printf.sprintf "GrafiteDisambiguate.singleton (%s): %u interpretations" msg (List.length l) in - prerr_endline debug; assert false + HLog.debug debug; assert false let __Implicit = "__Implicit__" let __Closed_Implicit = "__Closed_Implicit__" @@ -81,18 +81,12 @@ let ncic_mk_choice = function ~term_of_nref:(fun nref -> NCic.Const nref) name dsc | LexiconAst.Number_alias (_, dsc) -> - (try - let desc,f = DisambiguateChoices.nlookup_num_by_dsc dsc in - desc, `Num_interp - (fun num -> match f with `Num_interp f -> f num | _ -> assert false) - with - DisambiguateChoices.Choice_not_found _ -> - let desc,f = DisambiguateChoices.lookup_num_by_dsc dsc in - desc, `Num_interp + let desc,f = DisambiguateChoices.lookup_num_by_dsc dsc in + desc, `Num_interp (fun num -> fst (OCic2NCic.convert_term (UriManager.uri_of_string "cic:/xxx/x.con") - (match f with `Num_interp f -> f num | _ -> assert false)))) + (match f with `Num_interp f -> f num | _ -> assert false))) | LexiconAst.Ident_alias (name, uri) -> uri, `Sym_interp (fun l->assert(l = []); @@ -307,18 +301,15 @@ let disambiguate_reduction_kind text prefix_len lexicon_status_ref = function ;; let disambiguate_auto_params - disambiguate_term metasenv context (oterms, params) + disambiguate_term metasenv context (terms, params) = - match oterms with - | None -> metasenv, (None, params) - | Some terms -> - let metasenv, terms = - List.fold_right - (fun t (metasenv, terms) -> - let metasenv,t = disambiguate_term context metasenv t in - metasenv,t::terms) terms (metasenv, []) - in - metasenv, (Some terms, params) + let metasenv, terms = + List.fold_right + (fun t (metasenv, terms) -> + let metasenv,t = disambiguate_term context metasenv t in + metasenv,t::terms) terms (metasenv, []) + in + metasenv, (terms, params) ;; let disambiguate_just disambiguate_term context metasenv = diff --git a/helm/software/components/grafite_parser/grafiteParser.ml b/helm/software/components/grafite_parser/grafiteParser.ml index b1362b0f6..d4a0d5312 100644 --- a/helm/software/components/grafite_parser/grafiteParser.ml +++ b/helm/software/components/grafite_parser/grafiteParser.ml @@ -128,11 +128,6 @@ let npunct_of_punct = function | G.Semicolon loc -> G.NSemicolon loc | G.Dot loc -> G.NDot loc ;; -let cons_ntac t p = - match t with - | G.NTactic(loc,[t]) -> G.NTactic(loc,[t;p]) - | x -> x -;; type by_continuation = BYC_done @@ -155,7 +150,6 @@ EXTEND | id = IDENT -> Some id ] ]; ident_list0: [ [ LPAREN; idents = LIST0 new_name; RPAREN -> idents ] ]; - ident_list1: [ [ LPAREN; idents = LIST1 IDENT; RPAREN -> idents ] ]; tactic_term_list1: [ [ tactic_terms = LIST1 tactic_term SEP SYMBOL "," -> tactic_terms ] ]; @@ -243,8 +237,7 @@ EXTEND ]; using: [ [ using = OPT [ IDENT "using"; t = tactic_term -> t ] -> using ] ]; ntactic: [ - [ IDENT "napply"; t = tactic_term -> G.NTactic(loc,[G.NApply (loc, t)]) - | IDENT "napplyS"; t = tactic_term -> G.NTactic(loc,[G.NSmartApply(loc, t)]) + [ IDENT "napply"; t = tactic_term -> G.NApply (loc, t) | IDENT "nassert"; seqs = LIST0 [ hyps = LIST0 @@ -254,76 +247,40 @@ EXTEND id,`Def (bo,ty)]; SYMBOL <:unicode>; concl = tactic_term -> (List.rev hyps,concl) ] -> - G.NTactic(loc,[G.NAssert (loc, seqs)]) - | IDENT "nauto"; params = auto_params -> - G.NTactic(loc,[G.NAuto (loc, params)]) - | SYMBOL "/"; num = OPT NUMBER ; - params = nauto_params; SYMBOL "/" ; - just = OPT [ IDENT "by"; by = - [ univ = tactic_term_list1 -> `Univ univ - | SYMBOL "{"; SYMBOL "}" -> `EmptyUniv - | SYMBOL "_" -> `Trace ] -> by ] -> - let depth = match num with Some n -> n | None -> "1" in - (match just with - | None -> - G.NTactic(loc, - [G.NAuto(loc,(None,["slir","";"depth",depth]@params))]) - | Some (`Univ univ) -> - G.NTactic(loc, - [G.NAuto(loc,(Some univ,["slir","";"depth",depth]@params))]) - | Some `EmptyUniv -> - G.NTactic(loc, - [G.NAuto(loc,(Some [],["slir","";"depth",depth]@params))]) - | Some `Trace -> - G.NMacro(loc, - G.NAutoInteractive (loc, (None,["slir","";"depth",depth]@params)))) - | IDENT "nintros" -> G.NMacro (loc, G.NIntroGuess loc) - | IDENT "ncheck"; t = term -> G.NMacro(loc,G.NCheck (loc,t)) - | IDENT "screenshot"; fname = QSTRING -> - G.NMacro(loc,G.Screenshot (loc, fname)) + G.NAssert (loc, seqs) + | IDENT "nauto"; params = auto_params -> G.NAuto (loc, params) | IDENT "ncases"; what = tactic_term ; where = pattern_spec -> - G.NTactic(loc,[G.NCases (loc, what, where)]) + G.NCases (loc, what, where) | IDENT "nchange"; what = pattern_spec; "with"; with_what = tactic_term -> - G.NTactic(loc,[G.NChange (loc, what, with_what)]) + G.NChange (loc, what, with_what) | SYMBOL "@"; num = OPT NUMBER; l = LIST0 tactic_term -> - G.NTactic(loc,[G.NConstructor (loc, (match num with None -> None | Some x -> Some (int_of_string x)),l)]) - | IDENT "ncut"; t = tactic_term -> G.NTactic(loc,[G.NCut (loc, t)]) + G.NConstructor (loc, + (match num with None -> None | Some x -> Some (int_of_string x)),l) + | IDENT "ncut"; t = tactic_term -> G.NCut (loc, t) (* | IDENT "ndiscriminate"; t = tactic_term -> G.NDiscriminate (loc, t) | IDENT "nsubst"; t = tactic_term -> G.NSubst (loc, t) *) - | IDENT "ndestruct"; just = OPT [ dom = ident_list1 -> dom ]; - exclude = OPT [ IDENT "skip"; skip = ident_list1 -> skip ] - -> let exclude' = match exclude with None -> [] | Some l -> l in - G.NTactic(loc,[G.NDestruct (loc,just,exclude')]) + | IDENT "ndestruct" -> G.NDestruct loc | IDENT "nelim"; what = tactic_term ; where = pattern_spec -> - G.NTactic(loc,[G.NElim (loc, what, where)]) + G.NElim (loc, what, where) | IDENT "ngeneralize"; p=pattern_spec -> - G.NTactic(loc,[G.NGeneralize (loc, p)]) - | IDENT "ninversion"; what = tactic_term ; where = pattern_spec -> - G.NTactic(loc,[G.NInversion (loc, what, where)]) - | IDENT "nlapply"; t = tactic_term -> G.NTactic(loc,[G.NLApply (loc, t)]) + G.NGeneralize (loc, p) + | IDENT "nlapply"; t = tactic_term -> G.NLApply (loc, t) | IDENT "nletin"; name = IDENT ; SYMBOL <:unicode> ; t = tactic_term; where = pattern_spec -> - G.NTactic(loc,[G.NLetIn (loc,where,t,name)]) + G.NLetIn (loc,where,t,name) | kind = nreduction_kind; p = pattern_spec -> - G.NTactic(loc,[G.NReduce (loc, kind, p)]) + G.NReduce (loc, kind, p) | IDENT "nrewrite"; dir = direction; what = tactic_term ; where = pattern_spec -> - G.NTactic(loc,[G.NRewrite (loc, dir, what, where)]) - | IDENT "ntry"; tac = SELF -> - let tac = match tac with G.NTactic(_,[t]) -> t | _ -> assert false in - G.NTactic(loc,[ G.NTry (loc,tac)]) - | IDENT "nrepeat"; tac = SELF -> - let tac = match tac with G.NTactic(_,[t]) -> t | _ -> assert false in - G.NTactic(loc,[ G.NRepeat (loc,tac)]) - | LPAREN; l = LIST1 SELF; RPAREN -> - let l = - List.flatten - (List.map (function G.NTactic(_,t) -> t | _ -> assert false) l) in - G.NTactic(loc,[G.NBlock (loc,l)]) - | IDENT "nassumption" -> G.NTactic(loc,[ G.NAssumption loc]) - | SYMBOL "#"; ns=LIST0 IDENT -> G.NTactic(loc,[ G.NIntros (loc,ns)]) - | SYMBOL "#"; SYMBOL "_" -> G.NTactic(loc,[ G.NIntro (loc,"_")]) - | SYMBOL "*" -> G.NTactic(loc,[ G.NCase1 (loc,"_")]) - | SYMBOL "*"; n=IDENT -> G.NTactic(loc,[ G.NCase1 (loc,n)]) + G.NRewrite (loc, dir, what, where) + | IDENT "ntry"; tac = SELF -> G.NTry (loc,tac) + | IDENT "nrepeat"; tac = SELF -> G.NRepeat (loc,tac) + | LPAREN; l = LIST1 SELF; RPAREN -> G.NBlock (loc,l) + | IDENT "nassumption" -> G.NAssumption loc + | SYMBOL "#"; n=IDENT -> G.NIntro (loc,n) + | SYMBOL "#"; SYMBOL "_" -> G.NIntro (loc,"_") + | SYMBOL "*" -> G.NCase1 (loc,"_") + | SYMBOL "*"; n=IDENT -> + G.NCase1 (loc,n) ] ]; tactic: [ @@ -459,7 +416,7 @@ EXTEND | "let" ; id1 = IDENT ; SYMBOL ":" ; t1 = tactic_term ; IDENT "such" ; IDENT "that" ; t2=tactic_term ; LPAREN ; id2 = IDENT ; RPAREN -> - G.ExistsElim (loc, `Auto (None,[]), id1, t1, id2, t2) + G.ExistsElim (loc, `Auto ([],[]), id1, t1, id2, t2) | just = [ IDENT "using"; t=tactic_term -> `Term t | params = auto_params -> `Auto params] ; @@ -521,10 +478,6 @@ EXTEND ]; auto_fixed_param: [ [ IDENT "paramodulation" - | IDENT "demod" - | IDENT "fast_paramod" - | IDENT "paramod" - | IDENT "slir" | IDENT "depth" | IDENT "width" | IDENT "size" @@ -535,26 +488,16 @@ EXTEND ] ]; auto_params: [ - [ params = + [ params = LIST0 [ i = auto_fixed_param -> i,"" | i = auto_fixed_param ; SYMBOL "="; v = [ v = int -> string_of_int v | v = IDENT -> v ] -> i,v ]; - tl = OPT [ IDENT "by"; tl = tactic_term_list1 -> tl] -> tl, - (* (match tl with Some l -> l | None -> []), *) + tl = OPT [ IDENT "by"; tl = tactic_term_list1 -> tl] -> + (match tl with Some l -> l | None -> []), params ] ]; - nauto_params: [ - [ params = - LIST0 [ - i = auto_fixed_param -> i,"" - | i = auto_fixed_param ; SYMBOL "="; v = [ v = int -> - string_of_int v | v = IDENT -> v ] -> i,v ] -> - params - ] -]; - inline_params:[ [ params = LIST0 [ IDENT "prefix"; SYMBOL "="; prefix = QSTRING -> G.IPPrefix prefix @@ -719,6 +662,12 @@ EXTEND (params,name,typ,fields) ] ]; + nmacro: [ + [ [ IDENT "ncheck" ]; t = term -> G.NCheck (loc,t) + | [ IDENT "screenshot"]; fname = QSTRING -> G.Screenshot (loc, fname) + ] + ]; + macro: [ [ [ IDENT "check" ]; t = term -> G.Check (loc, t) @@ -983,13 +932,10 @@ EXTEND | tac = atomic_tactical LEVEL "loops"; punct = punctuation_tactical -> G.Tactic (loc, Some tac, punct) | punct = punctuation_tactical -> G.Tactic (loc, None, punct) - | tac = ntactic; OPT [ SYMBOL "#" ; SYMBOL "#" ] ; - punct = punctuation_tactical -> - cons_ntac tac (npunct_of_punct punct) -(* + | tac = ntactic; SYMBOL "#" ; SYMBOL "#" ; punct = punctuation_tactical -> + G.NTactic (loc, [tac; npunct_of_punct punct]) | tac = ntactic; punct = punctuation_tactical -> - cons_ntac tac (npunct_of_punct punct) -*) + G.NTactic (loc, [tac; npunct_of_punct punct]) | SYMBOL "#" ; SYMBOL "#" ; punct = npunctuation_tactical -> G.NTactic (loc, [punct]) | tac = non_punctuation_tactical; punct = punctuation_tactical -> @@ -1001,6 +947,7 @@ EXTEND punct = punctuation_tactical -> G.NTactic (loc, [nnon_punct_of_punct tac; npunct_of_punct punct]) | mac = macro; SYMBOL "." -> G.Macro (loc, mac) + | mac = nmacro; SYMBOL "." -> G.NMacro (loc, mac) ] ]; comment: [ diff --git a/helm/software/components/hgdome/.depend b/helm/software/components/hgdome/.depend index 072d9697a..bf9c09af7 100644 --- a/helm/software/components/hgdome/.depend +++ b/helm/software/components/hgdome/.depend @@ -1,5 +1,3 @@ -domMisc.cmi: -xml2Gdome.cmi: domMisc.cmo: domMisc.cmi domMisc.cmx: domMisc.cmi xml2Gdome.cmo: xml2Gdome.cmi diff --git a/helm/software/components/hgdome/.depend.opt b/helm/software/components/hgdome/.depend.opt index 072d9697a..bf9c09af7 100644 --- a/helm/software/components/hgdome/.depend.opt +++ b/helm/software/components/hgdome/.depend.opt @@ -1,5 +1,3 @@ -domMisc.cmi: -xml2Gdome.cmi: domMisc.cmo: domMisc.cmi domMisc.cmx: domMisc.cmi xml2Gdome.cmo: xml2Gdome.cmi diff --git a/helm/software/components/hmysql/.depend b/helm/software/components/hmysql/.depend index ce439d961..16e6e9da7 100644 --- a/helm/software/components/hmysql/.depend +++ b/helm/software/components/hmysql/.depend @@ -1,7 +1,2 @@ -hSql.cmi: -hSqlite3.cmo: -hSqlite3.cmx: -hMysql.cmo: -hMysql.cmx: hSql.cmo: hSqlite3.cmo hMysql.cmo hSql.cmi hSql.cmx: hSqlite3.cmx hMysql.cmx hSql.cmi diff --git a/helm/software/components/hmysql/.depend.opt b/helm/software/components/hmysql/.depend.opt index c2289bff2..602c901b8 100644 --- a/helm/software/components/hmysql/.depend.opt +++ b/helm/software/components/hmysql/.depend.opt @@ -1,7 +1,2 @@ -hSql.cmi: -hSqlite3.cmo: -hSqlite3.cmx: -hMysql.cmo: -hMysql.cmx: hSql.cmo: hSqlite3.cmx hMysql.cmx hSql.cmi hSql.cmx: hSqlite3.cmx hMysql.cmx hSql.cmi diff --git a/helm/software/components/lexicon/.depend b/helm/software/components/lexicon/.depend index 16c114516..847a4a807 100644 --- a/helm/software/components/lexicon/.depend +++ b/helm/software/components/lexicon/.depend @@ -3,8 +3,6 @@ lexiconMarshal.cmi: lexiconAst.cmo cicNotation.cmi: lexiconAst.cmo lexiconEngine.cmi: lexiconMarshal.cmi lexiconAst.cmo cicNotation.cmi lexiconSync.cmi: lexiconEngine.cmi lexiconAst.cmo -lexiconAst.cmo: -lexiconAst.cmx: lexiconAstPp.cmo: lexiconAst.cmo lexiconAstPp.cmi lexiconAstPp.cmx: lexiconAst.cmx lexiconAstPp.cmi lexiconMarshal.cmo: lexiconAstPp.cmi lexiconAst.cmo lexiconMarshal.cmi diff --git a/helm/software/components/lexicon/.depend.opt b/helm/software/components/lexicon/.depend.opt index 0fee4b18e..463d8a7bc 100644 --- a/helm/software/components/lexicon/.depend.opt +++ b/helm/software/components/lexicon/.depend.opt @@ -3,8 +3,6 @@ lexiconMarshal.cmi: lexiconAst.cmx cicNotation.cmi: lexiconAst.cmx lexiconEngine.cmi: lexiconMarshal.cmi lexiconAst.cmx cicNotation.cmi lexiconSync.cmi: lexiconEngine.cmi lexiconAst.cmx -lexiconAst.cmo: -lexiconAst.cmx: lexiconAstPp.cmo: lexiconAst.cmx lexiconAstPp.cmi lexiconAstPp.cmx: lexiconAst.cmx lexiconAstPp.cmi lexiconMarshal.cmo: lexiconAstPp.cmi lexiconAst.cmx lexiconMarshal.cmi diff --git a/helm/software/components/library/.depend b/helm/software/components/library/.depend index cfa1295ed..a9f24f814 100644 --- a/helm/software/components/library/.depend +++ b/helm/software/components/library/.depend @@ -1,13 +1,4 @@ -librarian.cmi: -libraryMisc.cmi: -libraryDb.cmi: -coercDb.cmi: cicCoercion.cmi: coercDb.cmi -librarySync.cmi: -cicElim.cmi: -cicRecord.cmi: -cicFix.cmi: -libraryClean.cmi: librarian.cmo: librarian.cmi librarian.cmx: librarian.cmi libraryMisc.cmo: libraryMisc.cmi diff --git a/helm/software/components/library/.depend.opt b/helm/software/components/library/.depend.opt index cfa1295ed..a9f24f814 100644 --- a/helm/software/components/library/.depend.opt +++ b/helm/software/components/library/.depend.opt @@ -1,13 +1,4 @@ -librarian.cmi: -libraryMisc.cmi: -libraryDb.cmi: -coercDb.cmi: cicCoercion.cmi: coercDb.cmi -librarySync.cmi: -cicElim.cmi: -cicRecord.cmi: -cicFix.cmi: -libraryClean.cmi: librarian.cmo: librarian.cmi librarian.cmx: librarian.cmi libraryMisc.cmo: libraryMisc.cmi diff --git a/helm/software/components/logger/.depend b/helm/software/components/logger/.depend index dfb4400ff..28268d29e 100644 --- a/helm/software/components/logger/.depend +++ b/helm/software/components/logger/.depend @@ -1,3 +1,2 @@ -helmLogger.cmi: helmLogger.cmo: helmLogger.cmi helmLogger.cmx: helmLogger.cmi diff --git a/helm/software/components/logger/.depend.opt b/helm/software/components/logger/.depend.opt index dfb4400ff..28268d29e 100644 --- a/helm/software/components/logger/.depend.opt +++ b/helm/software/components/logger/.depend.opt @@ -1,3 +1,2 @@ -helmLogger.cmi: helmLogger.cmo: helmLogger.cmi helmLogger.cmx: helmLogger.cmi diff --git a/helm/software/components/metadata/.depend b/helm/software/components/metadata/.depend index 78cd97a0d..492a34e3a 100644 --- a/helm/software/components/metadata/.depend +++ b/helm/software/components/metadata/.depend @@ -1,5 +1,3 @@ -sqlStatements.cmi: -metadataTypes.cmi: metadataExtractor.cmi: metadataTypes.cmi metadataPp.cmi: metadataTypes.cmi metadataConstraints.cmi: metadataTypes.cmi diff --git a/helm/software/components/metadata/.depend.opt b/helm/software/components/metadata/.depend.opt index 78cd97a0d..492a34e3a 100644 --- a/helm/software/components/metadata/.depend.opt +++ b/helm/software/components/metadata/.depend.opt @@ -1,5 +1,3 @@ -sqlStatements.cmi: -metadataTypes.cmi: metadataExtractor.cmi: metadataTypes.cmi metadataPp.cmi: metadataTypes.cmi metadataConstraints.cmi: metadataTypes.cmi diff --git a/helm/software/components/ng_cic_content/.depend b/helm/software/components/ng_cic_content/.depend index 1316c8eab..b4e17fa99 100644 --- a/helm/software/components/ng_cic_content/.depend +++ b/helm/software/components/ng_cic_content/.depend @@ -1,5 +1,3 @@ -ncic2astMatcher.cmi: -nTermCicContent.cmi: ncic2astMatcher.cmo: ncic2astMatcher.cmi ncic2astMatcher.cmx: ncic2astMatcher.cmi nTermCicContent.cmo: ncic2astMatcher.cmi nTermCicContent.cmi diff --git a/helm/software/components/ng_cic_content/.depend.opt b/helm/software/components/ng_cic_content/.depend.opt index 1316c8eab..b4e17fa99 100644 --- a/helm/software/components/ng_cic_content/.depend.opt +++ b/helm/software/components/ng_cic_content/.depend.opt @@ -1,5 +1,3 @@ -ncic2astMatcher.cmi: -nTermCicContent.cmi: ncic2astMatcher.cmo: ncic2astMatcher.cmi ncic2astMatcher.cmx: ncic2astMatcher.cmi nTermCicContent.cmo: ncic2astMatcher.cmi nTermCicContent.cmi diff --git a/helm/software/components/ng_cic_content/nTermCicContent.ml b/helm/software/components/ng_cic_content/nTermCicContent.ml index 5cfda009c..e36a1290c 100644 --- a/helm/software/components/ng_cic_content/nTermCicContent.ml +++ b/helm/software/components/ng_cic_content/nTermCicContent.ml @@ -64,26 +64,6 @@ let level_of_uri u = String.sub name 4 (String.length name - 4) ;; -let destroy_nat = - let is_nat_URI = NUri.eq (NUri.uri_of_string - "cic:/matita/ng/arithmetics/nat/nat.ind") in - let is_zero = function - | NCic.Const (NReference.Ref (uri, NReference.Con (0, 1, 0))) when - is_nat_URI uri -> true - | _ -> false - in - let is_succ = function - | NCic.Const (NReference.Ref (uri, NReference.Con (0, 2, 0))) when - is_nat_URI uri -> true - | _ -> false - in - let rec aux acc = function - | NCic.Appl [he ; tl] when is_succ he -> aux (acc + 1) tl - | t when is_zero t -> Some acc - | _ -> None - in - aux 0 - (* CODICE c&p da NCicPp *) let nast_of_cic0 status ~(idref: @@ -139,29 +119,25 @@ let nast_of_cic0 status | NCic.Appl l -> NCic.Appl (l@args) | _ -> NCic.Appl (hd :: args))) | NCic.Appl args as t -> - (match destroy_nat t with - | Some n -> idref (Ast.Num (string_of_int n, -1)) - | None -> - let args = - if not !Acic2content.hide_coercions then args - else - match - NCicCoercion.match_coercion status ~metasenv ~context ~subst t - with - | None -> args - | Some (_,sats,cpos) -> + let args = + if not !Acic2content.hide_coercions then args + else + match + NCicCoercion.match_coercion status ~metasenv ~context ~subst t + with + | None -> args + | Some (_,sats,cpos) -> (* CSC: sats e' il numero di pi, ma non so cosa farmene! voglio il numero di argomenti da saltare, come prima! *) - if cpos < List.length args - 1 then - List.nth args (cpos + 1) :: - try snd (HExtlib.split_nth (cpos+sats+2) args) - with Failure _->[] - else - args - in - (match args with - [arg] -> idref (k ~context arg) - | _ -> idref (Ast.Appl (List.map (k ~context) args)))) + if cpos < List.length args - 1 then + List.nth args (cpos + 1) :: + try snd (HExtlib.split_nth (cpos+sats+2) args) with Failure _->[] + else + args + in + (match args with + [arg] -> idref (k ~context arg) + | _ -> idref (Ast.Appl (List.map (k ~context) args))) | NCic.Match (NReference.Ref (uri,_) as r,outty,te,patterns) -> let name = NUri.name_of_uri uri in (* CSC diff --git a/helm/software/components/ng_disambiguation/.depend b/helm/software/components/ng_disambiguation/.depend index f2694c199..6b4ef95c1 100644 --- a/helm/software/components/ng_disambiguation/.depend +++ b/helm/software/components/ng_disambiguation/.depend @@ -1,5 +1,2 @@ -nCicDisambiguate.cmi: nCicDisambiguate.cmo: nCicDisambiguate.cmi nCicDisambiguate.cmx: nCicDisambiguate.cmi -nnumber_notation.cmo: -nnumber_notation.cmx: diff --git a/helm/software/components/ng_disambiguation/.depend.opt b/helm/software/components/ng_disambiguation/.depend.opt index f2694c199..6b4ef95c1 100644 --- a/helm/software/components/ng_disambiguation/.depend.opt +++ b/helm/software/components/ng_disambiguation/.depend.opt @@ -1,5 +1,2 @@ -nCicDisambiguate.cmi: nCicDisambiguate.cmo: nCicDisambiguate.cmi nCicDisambiguate.cmx: nCicDisambiguate.cmi -nnumber_notation.cmo: -nnumber_notation.cmx: diff --git a/helm/software/components/ng_disambiguation/Makefile b/helm/software/components/ng_disambiguation/Makefile index 7c747df48..a613a1c04 100644 --- a/helm/software/components/ng_disambiguation/Makefile +++ b/helm/software/components/ng_disambiguation/Makefile @@ -4,7 +4,7 @@ PREDICATES = INTERFACE_FILES = nCicDisambiguate.mli IMPLEMENTATION_FILES = \ - $(INTERFACE_FILES:%.mli=%.ml) nnumber_notation.ml + $(INTERFACE_FILES:%.mli=%.ml) EXTRA_OBJECTS_TO_INSTALL = EXTRA_OBJECTS_TO_CLEAN = %.cmo: OCAMLOPTIONS += -w Ae @@ -41,4 +41,3 @@ depend.png depend.eps: depend.dot include ../../Makefile.defs include ../Makefile.common -OCAMLARCHIVEOPTIONS += -linkall diff --git a/helm/software/components/ng_disambiguation/nCicDisambiguate.ml b/helm/software/components/ng_disambiguation/nCicDisambiguate.ml index c9e453cf2..7ebca20d7 100644 --- a/helm/software/components/ng_disambiguation/nCicDisambiguate.ml +++ b/helm/software/components/ng_disambiguation/nCicDisambiguate.ml @@ -332,7 +332,10 @@ let interpretate_term_and_interpretate_term_option with NRef.IllFormedReference _ -> CicNotationPt.fail loc "Ill formed reference") | CicNotationPt.NRef nref -> NCic.Const nref - | CicNotationPt.NCic t -> t + | CicNotationPt.NCic t -> + let context = (* to make metas_of_term happy *) + List.map (fun x -> x,NCic.Decl (NCic.Implicit `Type)) context in + assert(NCicUntrusted.metas_of_term [] context t = []); t | CicNotationPt.Implicit `Vector -> NCic.Implicit `Vector | CicNotationPt.Implicit `JustOne -> NCic.Implicit `Term | CicNotationPt.Implicit (`Tagged s) -> NCic.Implicit (`Tagged s) @@ -416,7 +419,7 @@ let new_flavour_of_flavour = function | `MutualDefinition -> `Definition | `Fact -> `Fact | `Lemma -> `Lemma - | `Remark -> `Example + | `Remark -> `Corollary | `Theorem -> `Theorem | `Variant -> `Corollary | `Axiom -> `Fact diff --git a/helm/software/components/ng_disambiguation/nnumber_notation.ml b/helm/software/components/ng_disambiguation/nnumber_notation.ml deleted file mode 100644 index 8eaa705f2..000000000 --- a/helm/software/components/ng_disambiguation/nnumber_notation.ml +++ /dev/null @@ -1,58 +0,0 @@ -(* Copyright (C) 2004, 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://helm.cs.unibo.it/ - *) - -(* $Id: number_notation.ml 9771 2009-05-14 13:43:55Z fguidi $ *) - -let error msg = - raise (DisambiguateTypes.Invalid_choice (lazy (Stdpp.dummy_loc, msg))) - -let build_nat o s str = - let n = int_of_string str in - if n < 0 then error (str ^ " is not a valid natural number number") else - let rec aux n = if n = 0 then o () else s (aux (pred n)) in - aux n - -let ninterp_natural_number num = - (* - let nat_URI = match Obj.nat_URI () with - | Some uri -> uri - | None -> error "no default natural numbers" - in - *) - let nat_URI = NUri.uri_of_string "cic:/matita/ng/arithmetics/nat/nat.ind" in - let o () = - NCic.Const - (NReference.reference_of_spec nat_URI (NReference.Con (0,1,0))) in - let s t = - NCic.Appl - [NCic.Const - (NReference.reference_of_spec nat_URI (NReference.Con (0,2,0))); - t] in - build_nat o s num - -let _ = - DisambiguateChoices.nadd_num_choice - ("nnatural number", `Num_interp ninterp_natural_number); -;; diff --git a/helm/software/components/ng_kernel/.depend b/helm/software/components/ng_kernel/.depend index 9a4ae3fc1..4d6080d8a 100644 --- a/helm/software/components/ng_kernel/.depend +++ b/helm/software/components/ng_kernel/.depend @@ -1,4 +1,3 @@ -nUri.cmi: nReference.cmi: nUri.cmi nCicUtils.cmi: nCic.cmo nCicSubstitution.cmi: nCic.cmo diff --git a/helm/software/components/ng_kernel/.depend.opt b/helm/software/components/ng_kernel/.depend.opt index d7c542af5..d4a4f8303 100644 --- a/helm/software/components/ng_kernel/.depend.opt +++ b/helm/software/components/ng_kernel/.depend.opt @@ -1,4 +1,3 @@ -nUri.cmi: nReference.cmi: nUri.cmi nCicUtils.cmi: nCic.cmx nCicSubstitution.cmi: nCic.cmx diff --git a/helm/software/components/ng_kernel/nCicReduction.ml b/helm/software/components/ng_kernel/nCicReduction.ml index 236f5778e..8fc58f4c9 100644 --- a/helm/software/components/ng_kernel/nCicReduction.ml +++ b/helm/software/components/ng_kernel/nCicReduction.ml @@ -61,7 +61,7 @@ module CallByValueByNameForUnwind' : Strategy = struct lazy (fst (reduce ~delta:0 c)), (fun delta -> fst (reduce ~delta c)), lazy (unwind c) - let from_stack ~delta (c0,c,_) = if delta = 0 then Lazy.force c0 else c delta + let from_stack ~delta (c0,c,_) = if delta = 0 then Lazy.force c0 else c delta let from_stack_list_for_unwind ~unwind:_ l = List.map (fun (_,_,c) -> Lazy.force c) l let from_env ~delta (c0,c,_) = if delta = 0 then Lazy.force c0 else c delta @@ -433,7 +433,6 @@ type machine = int * environment_item list * NCic.term * stack_item list let reduce_machine = R.reduce let from_stack = RS.from_stack -let from_env = RS.from_env let unwind = R.unwind let _ = diff --git a/helm/software/components/ng_kernel/nCicReduction.mli b/helm/software/components/ng_kernel/nCicReduction.mli index 35159fc1c..713edd170 100644 --- a/helm/software/components/ng_kernel/nCicReduction.mli +++ b/helm/software/components/ng_kernel/nCicReduction.mli @@ -44,7 +44,6 @@ val reduce_machine : delta:int -> ?subst:NCic.substitution -> NCic.context -> machine -> machine * bool val from_stack : delta:int -> stack_item -> machine -val from_env : delta:int -> environment_item -> machine val unwind : machine -> NCic.term val split_prods: diff --git a/helm/software/components/ng_kernel/nCicSubstitution.ml b/helm/software/components/ng_kernel/nCicSubstitution.ml index d3e6756d8..43a2f8174 100644 --- a/helm/software/components/ng_kernel/nCicSubstitution.ml +++ b/helm/software/components/ng_kernel/nCicSubstitution.ml @@ -22,7 +22,7 @@ module Ref = NReference let debug_print = fun _ -> ();; -let lift_from ?(no_implicit=true) k n = +let lift_from k n = let rec liftaux k = function | C.Rel m as t -> if m < k then t else C.Rel (m + n) | C.Meta (i,(m,(C.Irl 0 as l))) when k <= m+1 -> C.Meta (i,(m,l)) @@ -31,16 +31,15 @@ let lift_from ?(no_implicit=true) k n = | C.Meta (i,(m,l)) -> let lctx = NCicUtils.expand_local_context l in C.Meta (i, (m, C.Ctx (HExtlib.sharing_map (liftaux (k-m)) lctx))) - | C.Implicit _ as t -> (* was the identity *) - if no_implicit then assert false - else t + | C.Implicit _ -> (* was the identity *) assert false | t -> NCicUtils.map (fun _ k -> k + 1) k liftaux t in liftaux k ;; -let lift ?(from=1) ?(no_implicit=true) n t = - if n = 0 then t else lift_from ~no_implicit from n t +let lift ?(from=1) n t = + if n = 0 then t + else lift_from from n t ;; @@ -51,7 +50,7 @@ let lift ?(from=1) ?(no_implicit=true) n t = (* well typed and avoid_beta_redexes is true. *) (* map_arg is ReductionStrategy.from_env_for_unwind when psubst is *) (* used to implement nCicReduction.unwind' *) -let rec psubst ?(avoid_beta_redexes=false) ?(no_implicit=true) map_arg args = +let rec psubst ?(avoid_beta_redexes=false) map_arg args = let nargs = List.length args in let rec substaux k = function | C.Rel n as t -> @@ -60,7 +59,7 @@ let rec psubst ?(avoid_beta_redexes=false) ?(no_implicit=true) map_arg args = if nargs <> 0 then C.Rel (n - nargs) else t | n when n < k -> t | n (* k <= n < k+nargs *) -> - (try lift ~no_implicit (k-1) (map_arg (List.nth args (n-k))) + (try lift (k-1) (map_arg (List.nth args (n-k))) with Failure _ | Invalid_argument _ -> assert false)) | C.Meta (i,(m,l)) as t when m >= k + nargs - 1 -> if nargs <> 0 then C.Meta (i,(m-nargs,l)) else t @@ -68,11 +67,8 @@ let rec psubst ?(avoid_beta_redexes=false) ?(no_implicit=true) map_arg args = | C.Meta (i,(m,l)) -> let lctx = NCicUtils.expand_local_context l in C.Meta (i,(0, - C.Ctx (HExtlib.sharing_map - (fun x -> substaux k (lift ~no_implicit m x)) lctx))) - | C.Implicit _ as t -> - if no_implicit then assert false (* was identity *) - else t + C.Ctx (HExtlib.sharing_map (fun x -> substaux k (lift m x)) lctx))) + | C.Implicit _ -> assert false (* was identity *) | C.Appl (he::tl) as t -> (* Invariant: no Appl applied to another Appl *) let rec avoid he' = function @@ -84,8 +80,7 @@ let rec psubst ?(avoid_beta_redexes=false) ?(no_implicit=true) map_arg args = (* map_arg is here \x.x, Obj magic is needed because * we don't have polymorphic recursion w/o records *) avoid (psubst - ~avoid_beta_redexes ~no_implicit - Obj.magic [Obj.magic arg] bo) tl' + ~avoid_beta_redexes Obj.magic [Obj.magic arg] bo) tl' | _ -> if he == he' && args == tl then t else C.Appl (he'::args)) in let tl = HExtlib.sharing_map (substaux k) tl in @@ -95,8 +90,8 @@ let rec psubst ?(avoid_beta_redexes=false) ?(no_implicit=true) map_arg args = substaux 1 ;; -let subst ?avoid_beta_redexes ?no_implicit arg = - psubst ?avoid_beta_redexes ?no_implicit(fun x -> x)[arg];; +let subst ?avoid_beta_redexes arg = + psubst ?avoid_beta_redexes (fun x -> x)[arg];; (* subst_meta (n, C.Ctx [t_1 ; ... ; t_n]) t *) (* returns the term [t] where [Rel i] is substituted with [t_i] lifted by n *) diff --git a/helm/software/components/ng_kernel/nCicSubstitution.mli b/helm/software/components/ng_kernel/nCicSubstitution.mli index 7e27a5d4c..38408fe13 100644 --- a/helm/software/components/ng_kernel/nCicSubstitution.mli +++ b/helm/software/components/ng_kernel/nCicSubstitution.mli @@ -17,23 +17,19 @@ val set_ppterm : (context:NCic.context -> ?inside_fix:bool -> NCic.term -> string) -> unit -val lift_from : ?no_implicit:bool -> int -> int -> NCic.term -> NCic.term - (* lift n t *) (* lifts [t] of [n] *) (* [from] default 1, lifts only indexes >= [from] *) (* NOTE: the opposite function (delift_rels) is defined in CicMetaSubst *) (* since it needs to restrict the metavariables in case of failure *) -val lift : ?from:int -> ?no_implicit:bool -> int -> NCic.term -> NCic.term +val lift : ?from:int -> int -> NCic.term -> NCic.term (* subst t1 t2 *) (* substitutes [t1] for [Rel 1] in [t2] *) (* if avoid_beta_redexes is true (default: false) no new beta redexes *) (* are generated. WARNING: the substitution can diverge when t2 is not *) (* well typed and avoid_beta_redexes is true. *) -val subst : - ?avoid_beta_redexes:bool -> ?no_implicit:bool -> - NCic.term -> NCic.term -> NCic.term +val subst : ?avoid_beta_redexes:bool -> NCic.term -> NCic.term -> NCic.term (* psubst [avoid] [map_arg] [args] [t] * [avoid] : do not leave newly created beta-redexes, default false @@ -43,7 +39,7 @@ val subst : * the function is ReductionStrategy.from_env_for_unwind when psubst is * used to implement nCicReduction.unwind' *) val psubst : - ?avoid_beta_redexes:bool -> ?no_implicit:bool -> + ?avoid_beta_redexes:bool -> ('a -> NCic.term) -> 'a list -> NCic.term -> NCic.term diff --git a/helm/software/components/ng_kernel/nCicTypeChecker.ml b/helm/software/components/ng_kernel/nCicTypeChecker.ml index ccbebc271..cd49f2cea 100644 --- a/helm/software/components/ng_kernel/nCicTypeChecker.ml +++ b/helm/software/components/ng_kernel/nCicTypeChecker.ml @@ -659,7 +659,7 @@ and check_allowed_sort_elimination ~subst ~metasenv r = (PP.ppterm ~subst ~metasenv ~context so) ))); (match arity1, R.whd ~subst ((name,C.Decl so)::context) ta with - | C.Sort s1, (C.Sort s2 as arity2) -> + | C.Sort s1, C.Sort s2 -> (match NCicEnvironment.allowed_sort_elimination s1 s2 with | `Yes -> () | `UnitOnly -> @@ -680,11 +680,7 @@ and check_allowed_sort_elimination ~subst ~metasenv r = is_non_informative ~metasenv ~subst leftno constrty)) then raise (TypeCheckerFailure (lazy - ("Sort elimination not allowed: " ^ - NCicPp.ppterm ~metasenv ~subst ~context arity1 - ^ " towards "^ - NCicPp.ppterm ~metasenv ~subst ~context arity2 - )))) + ("Sort elimination not allowed")))) | _ -> ()) | _,_ -> () in @@ -1308,9 +1304,7 @@ let typecheck_obj (uri,height,metasenv,subst,kind) = | C.Appl (C.Const (Ref.Ref (uri,Ref.Ind _) as ref) :: _) -> let _,_,itl,_,_ = E.get_checked_indtys ref in uri, List.length itl - | _ -> - raise (TypeCheckerFailure - (lazy "Fix: the recursive argument is not inductive")) + | _ -> assert false in (* guarded by destructors conditions D{f,k,x,M} *) let rec enum_from k = diff --git a/helm/software/components/ng_kernel/nCicTypeChecker.mli b/helm/software/components/ng_kernel/nCicTypeChecker.mli index a0c927284..c57055365 100644 --- a/helm/software/components/ng_kernel/nCicTypeChecker.mli +++ b/helm/software/components/ng_kernel/nCicTypeChecker.mli @@ -61,4 +61,5 @@ val are_all_occurrences_positive: NCic.context -> NUri.uri -> int -> int -> int -> int -> NCic.term -> bool val does_not_occur : - subst:NCic.substitution -> NCic.context -> int -> int -> NCic.term -> bool + subst:NCic.substitution -> + ('a * NCic.context_entry) list -> int -> int -> NCic.term -> bool diff --git a/helm/software/components/ng_kernel/nCicUntrusted.ml b/helm/software/components/ng_kernel/nCicUntrusted.ml index 82f7cef80..0fbea89af 100644 --- a/helm/software/components/ng_kernel/nCicUntrusted.ml +++ b/helm/software/components/ng_kernel/nCicUntrusted.ml @@ -175,23 +175,21 @@ let rec fire_projection_redex on_args = function in if pragma <> `Projection || List.length args <= rno then conclude () else - (match List.nth l (rno+1) with + (match List.nth args rno with | C.Appl (C.Const(Ref.Ref(_,Ref.Con _))::_) -> let _, _, _, _, fbody = List.nth ifl fno in (* fbody is closed! *) - let t = C.Appl (fbody::List.tl l) in + let t = C.Appl (fbody::args) in (match NCicReduction.head_beta_reduce ~delta:max_int t with - | C.Match (_,_, C.Appl(C.Const(Ref.Ref(_,Ref.Con (_,_,leftno))) - ::kargs),[pat])-> + | C.Match (_,_,C.Appl(C.Const(Ref.Ref(_,Ref.Con (_,_,leftno)))::kargs),[pat])-> let _,kargs = HExtlib.split_nth leftno kargs in - fire_projection_redex false - (NCicReduction.head_beta_reduce - ~delta:max_int (C.Appl (pat :: kargs))) - | C.Appl(C.Match(_,_,C.Appl(C.Const(Ref.Ref(_,Ref.Con (_,_,leftno))) - ::kargs),[pat]) :: args) -> + fire_projection_redex false + (NCicReduction.head_beta_reduce + ~delta:max_int (C.Appl (pat :: kargs))) + | C.Appl(C.Match(_,_,C.Appl(C.Const(Ref.Ref(_,Ref.Con (_,_,leftno)))::kargs),[pat]) :: args) -> let _,kargs = HExtlib.split_nth leftno kargs in - fire_projection_redex false - (NCicReduction.head_beta_reduce - ~delta:max_int (C.Appl (pat :: kargs @ args))) + fire_projection_redex false + (NCicReduction.head_beta_reduce + ~delta:max_int (C.Appl (pat :: kargs @ args))) | _ -> conclude ()) | _ -> conclude ()) | t when on_args -> NCicUtils.map (fun _ x -> x) true fire_projection_redex t @@ -273,7 +271,7 @@ let rec replace_in_subst i f = function ;; let set_kind newkind attrs = - newkind :: List.filter (fun x -> not (is_kind x)) attrs + (newkind :> NCic.meta_attr) :: List.filter (fun x -> not (is_kind x)) attrs ;; let max_kind k1 k2 = @@ -283,68 +281,3 @@ let max_kind k1 k2 = | _ -> `IsTerm ;; -module OT = - struct - type t = int * NCic.conjecture - let compare (i,_) (j,_) = Pervasives.compare i j - end - -module MS = HTopoSort.Make(OT) -let relations_of_menv subst m c = - let i, (_, ctx, ty) = c in - let m = List.filter (fun (j,_) -> j <> i) m in - let m_ty = metas_of_term subst ctx ty in - let m_ctx = - snd - (List.fold_right - (fun i (ctx,res) -> - (i::ctx), - (match i with - | _,NCic.Decl ty -> metas_of_term subst ctx ty - | _,NCic.Def (t,ty) -> - metas_of_term subst ctx ty @ metas_of_term subst ctx t) @ res) - ctx ([],[])) - in - let metas = HExtlib.list_uniq (List.sort compare (m_ty @ m_ctx)) in - List.filter (fun (i,_) -> List.exists ((=) i) metas) m -;; - -let sort_metasenv subst (m : NCic.metasenv) = - (MS.topological_sort m (relations_of_menv subst m) : NCic.metasenv) -;; - -let count_occurrences ~subst n t = - let occurrences = ref 0 in - let rec aux k _ = function - | C.Rel m when m = n+k -> incr occurrences - | C.Rel _m -> () - | C.Implicit _ -> () - | C.Meta (_,(_,(C.Irl 0 | C.Ctx []))) -> (* closed meta *) () - | C.Meta (mno,(s,l)) -> - (try - (* possible optimization here: try does_not_occur on l and - perform substitution only if DoesOccur is raised *) - let _,_,term,_ = NCicUtils.lookup_subst mno subst in - aux (k-s) () (NCicSubstitution.subst_meta (0,l) term) - with NCicUtils.Subst_not_found _ -> () (*match l with - | C.Irl len -> if not (n+k >= s+len || s > nn+k) then raise DoesOccur - | C.Ctx lc -> List.iter (aux (k-s) ()) lc*)) - | t -> NCicUtils.fold (fun _ k -> k + 1) k aux () t - in - aux 0 () t; - !occurrences -;; - -exception Found_variable - -let looks_closed t = - let rec aux k _ = function - | C.Rel m when k < m -> raise Found_variable - | C.Rel _m -> () - | C.Implicit _ -> () - | C.Meta (_,(_,(C.Irl 0 | C.Ctx []))) -> (* closed meta *) () - | C.Meta _ -> raise Found_variable - | t -> NCicUtils.fold (fun _ k -> k + 1) k aux () t - in - try aux 0 () t; true with Found_variable -> false -;; diff --git a/helm/software/components/ng_kernel/nCicUntrusted.mli b/helm/software/components/ng_kernel/nCicUntrusted.mli index 7ff7f9335..bb5aa3049 100644 --- a/helm/software/components/ng_kernel/nCicUntrusted.mli +++ b/helm/software/components/ng_kernel/nCicUntrusted.mli @@ -19,7 +19,6 @@ val map_obj_kind: ?skip_body:bool -> (NCic.term -> NCic.term) -> NCic.obj_kind -> NCic.obj_kind val metas_of_term : NCic.substitution -> NCic.context -> NCic.term -> int list -val sort_metasenv: NCic.substitution -> NCic.metasenv -> NCic.metasenv type meta_kind = [ `IsSort | `IsType | `IsTerm ] val kind_of_meta: NCic.meta_attrs -> meta_kind @@ -40,8 +39,3 @@ val apply_subst : NCic.substitution -> NCic.context -> NCic.term -> NCic.term val apply_subst_context : fix_projections:bool -> NCic.substitution -> NCic.context -> NCic.context val apply_subst_metasenv : NCic.substitution -> NCic.metasenv -> NCic.metasenv - -val count_occurrences : - subst:NCic.substitution -> int -> NCic.term -> int -(* quick, but with false negatives (since no ~subst), check for closed terms *) -val looks_closed : NCic.term -> bool diff --git a/helm/software/components/ng_library/.depend b/helm/software/components/ng_library/.depend index e379b9fc6..5e568e6b3 100644 --- a/helm/software/components/ng_library/.depend +++ b/helm/software/components/ng_library/.depend @@ -1,6 +1,3 @@ -nCic2OCic.cmi: -oCic2NCic.cmi: -nCicLibrary.cmi: nCic2OCic.cmo: nCic2OCic.cmi nCic2OCic.cmx: nCic2OCic.cmi oCic2NCic.cmo: oCic2NCic.cmi diff --git a/helm/software/components/ng_library/.depend.opt b/helm/software/components/ng_library/.depend.opt index e379b9fc6..5e568e6b3 100644 --- a/helm/software/components/ng_library/.depend.opt +++ b/helm/software/components/ng_library/.depend.opt @@ -1,6 +1,3 @@ -nCic2OCic.cmi: -oCic2NCic.cmi: -nCicLibrary.cmi: nCic2OCic.cmo: nCic2OCic.cmi nCic2OCic.cmx: nCic2OCic.cmi oCic2NCic.cmo: oCic2NCic.cmi diff --git a/helm/software/components/ng_library/nCicLibrary.ml b/helm/software/components/ng_library/nCicLibrary.ml index 7cef1e3de..c5b43d7ca 100644 --- a/helm/software/components/ng_library/nCicLibrary.ml +++ b/helm/software/components/ng_library/nCicLibrary.ml @@ -144,26 +144,10 @@ let load_db,set_global_aliases,get_global_aliases,add_deps,get_deps,remove_deps= let init = load_db;; type automation_cache = NDiscriminationTree.DiscriminationTree.t -type unit_eq_cache = NCicParamod.state - -class type g_eq_status = - object - method eq_cache : unit_eq_cache - end - -class eq_status = - object(self) - val eq_cache = NCicParamod.empty_state - method eq_cache = eq_cache - method set_eq_cache v = {< eq_cache = v >} - method set_eq_status - : 'status. #g_eq_status as 'status -> 'self - = fun o -> self#set_eq_cache o#eq_cache - end class type g_auto_status = object - method auto_cache : automation_cache + method auto_cache : automation_cache end class auto_status = @@ -226,7 +210,6 @@ class type g_dumpable_status = object inherit g_status inherit g_auto_status - inherit g_eq_status method dump: obj list end @@ -234,13 +217,11 @@ class dumpable_status = object(self) inherit status inherit auto_status - inherit eq_status val dump = ([] : obj list) method dump = dump method set_dump v = {< dump = v >} method set_dumpable_status : 'status. #g_dumpable_status as 'status -> 'self - = fun o -> - (((self#set_dump o#dump)#set_coercion_status o)#set_auto_status o)#set_eq_status o + = fun o -> ((self#set_dump o#dump)#set_coercion_status o)#set_auto_status o end type 'a register_type = diff --git a/helm/software/components/ng_library/nCicLibrary.mli b/helm/software/components/ng_library/nCicLibrary.mli index 03b844397..ea1cfd4e5 100644 --- a/helm/software/components/ng_library/nCicLibrary.mli +++ b/helm/software/components/ng_library/nCicLibrary.mli @@ -14,19 +14,6 @@ exception LibraryOutOfSync of string Lazy.t type automation_cache = NDiscriminationTree.DiscriminationTree.t -type unit_eq_cache = NCicParamod.state - -class type g_eq_status = - object - method eq_cache : unit_eq_cache - end - -class eq_status : - object('self) - inherit g_eq_status - method set_eq_cache: unit_eq_cache -> 'self - method set_eq_status: #g_eq_status -> 'self - end class type g_auto_status = object @@ -77,7 +64,6 @@ class type g_dumpable_status = object inherit g_status inherit g_auto_status - inherit g_eq_status method dump: obj list end @@ -85,7 +71,6 @@ class dumpable_status : object ('self) inherit status inherit auto_status - inherit eq_status inherit g_dumpable_status method set_dump: obj list -> 'self method set_dumpable_status: #g_dumpable_status -> 'self diff --git a/helm/software/components/ng_library/oCic2NCic.ml b/helm/software/components/ng_library/oCic2NCic.ml index 50b3207e8..7225ea2a4 100644 --- a/helm/software/components/ng_library/oCic2NCic.ml +++ b/helm/software/components/ng_library/oCic2NCic.ml @@ -877,7 +877,5 @@ let reference_of_oxuri u = NCicCoercion.set_convert_term convert_term;; Ncic2astMatcher.set_reference_of_oxuri reference_of_oxuri;; NCicDisambiguate.set_reference_of_oxuri reference_of_oxuri;; -(* Why should we set them here? NCicBlob.set_reference_of_oxuri reference_of_oxuri;; NCicProof.set_reference_of_oxuri reference_of_oxuri;; -*) diff --git a/helm/software/components/ng_paramodulation/.depend b/helm/software/components/ng_paramodulation/.depend index 369ed6b69..3ace51014 100644 --- a/helm/software/components/ng_paramodulation/.depend +++ b/helm/software/components/ng_paramodulation/.depend @@ -1,4 +1,3 @@ -terms.cmi: pp.cmi: terms.cmi foSubst.cmi: terms.cmi orderings.cmi: terms.cmi @@ -11,7 +10,6 @@ paramod.cmi: terms.cmi orderings.cmi nCicBlob.cmi: terms.cmi cicBlob.cmi: terms.cmi nCicProof.cmi: terms.cmi -nCicParamod.cmi: terms.cmo: terms.cmi terms.cmx: terms.cmi pp.cmo: terms.cmi pp.cmi diff --git a/helm/software/components/ng_paramodulation/.depend.opt b/helm/software/components/ng_paramodulation/.depend.opt index 369ed6b69..3ace51014 100644 --- a/helm/software/components/ng_paramodulation/.depend.opt +++ b/helm/software/components/ng_paramodulation/.depend.opt @@ -1,4 +1,3 @@ -terms.cmi: pp.cmi: terms.cmi foSubst.cmi: terms.cmi orderings.cmi: terms.cmi @@ -11,7 +10,6 @@ paramod.cmi: terms.cmi orderings.cmi nCicBlob.cmi: terms.cmi cicBlob.cmi: terms.cmi nCicProof.cmi: terms.cmi -nCicParamod.cmi: terms.cmo: terms.cmi terms.cmx: terms.cmi pp.cmo: terms.cmi pp.cmi diff --git a/helm/software/components/ng_paramodulation/cicBlob.ml b/helm/software/components/ng_paramodulation/cicBlob.ml index 716960142..fd6947e9c 100644 --- a/helm/software/components/ng_paramodulation/cicBlob.ml +++ b/helm/software/components/ng_paramodulation/cicBlob.ml @@ -38,8 +38,6 @@ module CicBlob(C : CicContext) : Terms.Blob with type t = Cic.term = struct let eqP = assert false;; - let is_eq = assert false;; - let saturate = assert false;; end diff --git a/helm/software/components/ng_paramodulation/foSubst.ml b/helm/software/components/ng_paramodulation/foSubst.ml index aab240168..5cb84e1c9 100644 --- a/helm/software/components/ng_paramodulation/foSubst.ml +++ b/helm/software/components/ng_paramodulation/foSubst.ml @@ -36,17 +36,6 @@ varlist ;; - let rec reloc_subst subst = function - | (Terms.Leaf _) as t -> t - | Terms.Var i -> - (try - List.assoc i subst - with - Not_found -> assert false) - | (Terms.Node l) -> - Terms.Node (List.map (fun t -> reloc_subst subst t) l) -;; - let rec apply_subst subst = function | (Terms.Leaf _) as t -> t | Terms.Var i -> @@ -57,10 +46,6 @@ Terms.Node (List.map (fun t -> apply_subst subst t) l) ;; - let flat subst = - List.map (fun (x,t) -> (x, apply_subst subst t)) subst -;; - let concat x y = x @ y;; (* end *) diff --git a/helm/software/components/ng_paramodulation/foSubst.mli b/helm/software/components/ng_paramodulation/foSubst.mli index 36a4c12ea..1ed311433 100644 --- a/helm/software/components/ng_paramodulation/foSubst.mli +++ b/helm/software/components/ng_paramodulation/foSubst.mli @@ -22,12 +22,8 @@ module Subst (B : Terms.Blob) : val lookup : int -> 'a Terms.substitution -> 'a Terms.foterm val filter : 'a Terms.substitution -> Terms.varlist -> Terms.varlist - val reloc_subst : - 'a Terms.substitution -> 'a Terms.foterm -> 'a Terms.foterm val apply_subst : 'a Terms.substitution -> 'a Terms.foterm -> 'a Terms.foterm - val flat: - 'a Terms.substitution -> 'a Terms.substitution val concat: 'a Terms.substitution -> 'a Terms.substitution -> 'a Terms.substitution diff --git a/helm/software/components/ng_paramodulation/foUtils.ml b/helm/software/components/ng_paramodulation/foUtils.ml index 826687afc..7b57e5bb3 100644 --- a/helm/software/components/ng_paramodulation/foUtils.ml +++ b/helm/software/components/ng_paramodulation/foUtils.ml @@ -28,7 +28,7 @@ module Utils (B : Orderings.Blob) = struct let rec eq_foterm x y = x == y || match x, y with - | Terms.Leaf t1, Terms.Leaf t2 -> B.eq t1 t2 + | Terms.Leaf t1, Terms.Leaf t2 -> B.eq t1 t2 | Terms.Var i, Terms.Var j -> i = j | Terms.Node l1, Terms.Node l2 -> List.for_all2 eq_foterm l1 l2 | _ -> false @@ -80,23 +80,21 @@ module Utils (B : Orderings.Blob) = struct ;; let fresh_unit_clause maxvar (id, lit, varlist, proof) = - (* prerr_endline - ("varlist = " ^ (String.concat "," (List.map string_of_int varlist)));*) let maxvar, varlist, subst = relocate maxvar varlist Subst.id_subst in let lit = match lit with | Terms.Equation (l,r,ty,o) -> - let l = Subst.reloc_subst subst l in - let r = Subst.reloc_subst subst r in - let ty = Subst.reloc_subst subst ty in + let l = Subst.apply_subst subst l in + let r = Subst.apply_subst subst r in + let ty = Subst.apply_subst subst ty in Terms.Equation (l,r,ty,o) | Terms.Predicate p -> - let p = Subst.reloc_subst subst p in + let p = Subst.apply_subst subst p in Terms.Predicate p in let proof = match proof with - | Terms.Exact t -> Terms.Exact (Subst.reloc_subst subst t) + | Terms.Exact t -> Terms.Exact (Subst.apply_subst subst t) | Terms.Step (rule,c1,c2,dir,pos,s) -> Terms.Step(rule,c1,c2,dir,pos,Subst.concat subst s) in @@ -114,11 +112,11 @@ module Utils (B : Orderings.Blob) = struct aux (aux [] ty) proofterm in let lit = - match B.is_eq ty with - | Some(ty,l,r) -> + match ty with + | Terms.Node [ Terms.Leaf eq ; ty; l; r ] when B.eq B.eqP eq -> let o = Order.compare_terms l r in Terms.Equation (l, r, ty, o) - | None -> Terms.Predicate ty + | t -> Terms.Predicate t in let proof = Terms.Exact proofterm in fresh_unit_clause maxvar (0, lit, varlist, proof) diff --git a/helm/software/components/ng_paramodulation/index.ml b/helm/software/components/ng_paramodulation/index.ml index 36c9dd75e..4db4584a4 100644 --- a/helm/software/components/ng_paramodulation/index.ml +++ b/helm/software/components/ng_paramodulation/index.ml @@ -44,10 +44,10 @@ module Index(B : Orderings.Blob) = struct let path_string_of = let rec aux arity = function | Terms.Leaf a -> [Constant (a, arity)] - | Terms.Var i -> (* assert (arity = 0); *) [Variable] - (* FIXME : should this be allowed or not ? + | Terms.Var i -> assert (arity = 0); [Variable] | Terms.Node (Terms.Var _::_) -> - assert false *) + (* FIXME : should this be allowed or not ? *) + assert false | Terms.Node ([] | [ _ ] ) -> assert false | Terms.Node (Terms.Node _::_) -> assert false | Terms.Node (hd::tl) -> @@ -81,33 +81,27 @@ module Index(B : Orderings.Blob) = struct type dataset = ClauseSet.t = Make(FotermIndexable)(ClauseSet) - let process op t = function + let index_unit_clause maxvar t = function | (_,Terms.Equation (l,_,_,Terms.Gt),_,_) as c -> - op t l (Terms.Left2Right, c) + DT.index t l (Terms.Left2Right, c) | (_,Terms.Equation (_,r,_,Terms.Lt),_,_) as c -> - op t r (Terms.Right2Left, c) + DT.index t r (Terms.Right2Left, c) | (_,Terms.Equation (l,r,_,Terms.Incomparable),vl,_) as c -> - op (op t l (Terms.Left2Right, c)) - r (Terms.Right2Left, c) +(* if are_invertible maxvar vl l r then + (prerr_endline ("Invertible " ^ (Pp.pp_foterm l) ^ "=" ^ + (Pp.pp_foterm r)); + DT.index t l (Terms.Left2Right, c)) + else *) + DT.index + (DT.index t l (Terms.Left2Right, c)) + r (Terms.Right2Left, c) | (_,Terms.Equation (l,r,_,Terms.Invertible),vl,_) as c -> - op t l (Terms.Left2Right, c) + DT.index t l (Terms.Left2Right, c) | (_,Terms.Equation (_,r,_,Terms.Eq),_,_) -> assert false | (_,Terms.Predicate p,_,_) as c -> - op t p (Terms.Nodir, c) + DT.index t p (Terms.Nodir, c) ;; - let index_unit_clause = - process DT.index - - let remove_unit_clause = - process DT.remove_index - - let fold = DT.fold - - let elems index = - DT.fold index (fun _ dataset acc -> ClauseSet.union dataset acc) - ClauseSet.empty - type active_set = B.t Terms.unit_clause list * DT.t end diff --git a/helm/software/components/ng_paramodulation/index.mli b/helm/software/components/ng_paramodulation/index.mli index 47846f999..bfed8d533 100644 --- a/helm/software/components/ng_paramodulation/index.mli +++ b/helm/software/components/ng_paramodulation/index.mli @@ -26,18 +26,8 @@ module Index (B : Orderings.Blob) : type data = ClauseSet.elt and type dataset = ClauseSet.t - val index_unit_clause : - DT.t -> B.t Terms.unit_clause -> DT.t - - val remove_unit_clause : - DT.t -> B.t Terms.unit_clause -> DT.t - - val fold : - DT.t -> - (B.t Discrimination_tree.path -> ClauseSet.t -> 'a -> 'a) - -> 'a -> 'a - - val elems : DT.t -> ClauseSet.t + val index_unit_clause : + int -> DT.t -> B.t Terms.unit_clause -> DT.t type active_set = B.t Terms.unit_clause list * DT.t diff --git a/helm/software/components/ng_paramodulation/nCicBlob.ml b/helm/software/components/ng_paramodulation/nCicBlob.ml index fb9ee6245..05867b00e 100644 --- a/helm/software/components/ng_paramodulation/nCicBlob.ml +++ b/helm/software/components/ng_paramodulation/nCicBlob.ml @@ -11,39 +11,8 @@ (* $Id: terms.mli 9822 2009-06-03 15:37:06Z tassi $ *) -let eqPref = ref (fun _ -> assert false);; -let set_eqP t = eqPref := fun _ -> t;; - -let default_eqP() = - let uri = NUri.uri_of_string "cic:/matita/ng/Plogic/equality/eq.ind" in - let ref = NReference.reference_of_spec uri (NReference.Ind(true,0,2)) in - NCic.Const ref -;; - -let equivalence_relation = - let uri = NUri.uri_of_string "cic:/matita/ng/properties/relations/eq_rel.con" - in - let ref = NReference.reference_of_spec uri (NReference.Fix(0,1,2)) - in NCic.Const ref - -let setoid_eq = - let uri = NUri.uri_of_string "cic:/matita/ng/sets/setoids/eq.con" in - let ref = NReference.reference_of_spec uri (NReference.Fix(0,0,2)) - in NCic.Const ref - -let set_default_eqP() = eqPref := default_eqP - -let set_reference_of_oxuri f = - let eqnew = function - _ -> - let r = f(UriManager.uri_of_string - "cic:/matita/logic/equality/eq.ind#xpointer(1/1)") - in - NCic.Const r - in - eqPref := eqnew -;; - +let reference_of_oxuri = ref (fun _ -> assert false);; +let set_reference_of_oxuri f = reference_of_oxuri := f;; module type NCicContext = sig @@ -57,27 +26,13 @@ with type t = NCic.term and type input = NCic.term = struct type t = NCic.term - let eq x y = x = y;; - (* NCicReduction.alpha_eq C.metasenv C.subst C.context x y;; *) - - let height_of_ref = function - | NReference.Def h -> h - | NReference.Fix(_,_,h) -> h - | _ -> 0 - - let compare_refs (NReference.Ref (u1,r1)) (NReference.Ref (u2,r2)) = - let x = height_of_ref r2 - height_of_ref r1 in - if x = 0 then - Hashtbl.hash (NUri.string_of_uri u1,r1) - - Hashtbl.hash (NUri.string_of_uri u2,r2) - else x + let eq x y = NCicReduction.alpha_eq C.metasenv C.subst C.context x y;; let rec compare x y = match x,y with | NCic.Rel i, NCic.Rel j -> j-i | NCic.Meta (i,_), NCic.Meta (j,_) -> i-j - | NCic.Const r1, NCic.Const r2 -> compare_refs r1 r2 - (*NReference.compare r1 r2*) + | NCic.Const r1, NCic.Const r2 -> NReference.compare r1 r2 | NCic.Appl l1, NCic.Appl l2 -> FoUtils.lexicograph compare l1 l2 | NCic.Rel _, ( NCic.Meta _ | NCic.Const _ | NCic.Appl _ ) -> ~-1 | ( NCic.Meta _ | NCic.Const _ | NCic.Appl _ ), NCic.Rel _ -> 1 @@ -85,29 +40,14 @@ with type t = NCic.term and type input = NCic.term = struct | ( NCic.Meta _ | NCic.Appl _ ), NCic.Const _ -> 1 | NCic.Appl _, NCic.Meta _ -> ~-1 | NCic.Meta _, NCic.Appl _ -> 1 - | _ -> Pervasives.compare x y - (* was assert false, but why? *) - + | _ -> assert false ;; let compare x y = - if NCicReduction.alpha_eq [] [] [] x y then 0 - (* if x = y then 0 *) + if NCicReduction.alpha_eq C.metasenv C.subst C.context x y then 0 else compare x y ;; - let eqP = (!eqPref)() - ;; - - let is_eq = function - | Terms.Node [ Terms.Leaf eqt ; ty; l; r ] when eq eqP eqt -> - Some (ty,l,r) -(* - | Terms.Node [ Terms.Leaf eqt ; _; Terms.Node [Terms.Leaf eqt2 ; ty]; l; r] - when eq equivalence_relation eqt && eq setoid_eq eqt2 -> - Some (ty,l,r) *) - | _ -> None - let pp t = NCicPp.ppterm ~context:C.context ~metasenv:C.metasenv ~subst:C.subst t;; @@ -130,7 +70,7 @@ with type t = NCic.term and type input = NCic.term = struct let saturate t ty = let sty, _, args = - NCicMetaSubst.saturate ~delta:0 C.metasenv C.subst C.context + NCicMetaSubst.saturate ~delta:max_int C.metasenv C.subst C.context ty 0 in let proof = @@ -140,5 +80,14 @@ with type t = NCic.term and type input = NCic.term = struct let sty = embed sty in proof, sty ;; - + + let eqP = + let r = + !reference_of_oxuri + (UriManager.uri_of_string + "cic:/matita/logic/equality/eq.ind#xpointer(1/1)") + in + NCic.Const r + ;; + end diff --git a/helm/software/components/ng_paramodulation/nCicBlob.mli b/helm/software/components/ng_paramodulation/nCicBlob.mli index a8b6a7b7e..58f97a3f2 100644 --- a/helm/software/components/ng_paramodulation/nCicBlob.mli +++ b/helm/software/components/ng_paramodulation/nCicBlob.mli @@ -12,8 +12,6 @@ (* $Id: terms.mli 9822 2009-06-03 15:37:06Z tassi $ *) val set_reference_of_oxuri: (UriManager.uri -> NReference.reference) -> unit -val set_eqP: NCic.term -> unit -val set_default_eqP: unit -> unit module type NCicContext = sig diff --git a/helm/software/components/ng_paramodulation/nCicParamod.ml b/helm/software/components/ng_paramodulation/nCicParamod.ml index 16ae66e5d..6096d88da 100644 --- a/helm/software/components/ng_paramodulation/nCicParamod.ml +++ b/helm/software/components/ng_paramodulation/nCicParamod.ml @@ -11,13 +11,6 @@ (* $Id: orderings.ml 9869 2009-06-11 22:52:38Z denes $ *) -NCicBlob.set_default_eqP() -;; -NCicProof.set_default_sig() -;; - -let debug _ = ();; -let print s = prerr_endline (Lazy.force s);; module B(C : NCicBlob.NCicContext): Orderings.Blob with type t = NCic.term and type input = NCic.term @@ -25,43 +18,6 @@ module B(C : NCicBlob.NCicContext): Orderings.Blob module NCicParamod(C : NCicBlob.NCicContext) = Paramod.Paramod(B(C)) -let readback ?(demod=false) rdb metasenv subst context (bag,i,fo_subst,l) = -(* - List.iter (fun x -> - print_endline (Pp.pp_unit_clause ~margin:max_int - (fst(Terms.M.find x bag)))) l; -*) - (* let stamp = Unix.gettimeofday () in *) - let proofterm,prooftype = NCicProof.mk_proof ~demod bag i fo_subst l in - (* debug (lazy (Printf.sprintf "Got proof term in %fs" - (Unix.gettimeofday() -. stamp))); *) -(* - let metasenv, proofterm = - let rec aux k metasenv = function - | NCic.Meta _ as t -> metasenv, t - | NCic.Implicit _ -> - let metasenv, i, _, _ = - NCicMetaSubst.mk_meta metasenv context `IsTerm - in - metasenv, NCic.Meta (i,(k,NCic.Irl (List.length context))) - | t -> NCicUntrusted.map_term_fold_a - (fun _ k -> k+1) k aux metasenv t - in - aux 0 metasenv proofterm - in *) - debug (lazy (NCicPp.ppterm ~metasenv ~subst ~context proofterm)); -(* - let stamp = Unix.gettimeofday () in - let metasenv, subst, proofterm, _prooftype = - NCicRefiner.typeof - (rdb#set_coerc_db NCicCoercion.empty_db) - metasenv subst context proofterm None - in - print (lazy (Printf.sprintf "Refined in %fs" - (Unix.gettimeofday() -. stamp))); -*) - proofterm, prooftype, metasenv, subst - let nparamod rdb metasenv subst context t table = let module C = struct @@ -85,94 +41,38 @@ let nparamod rdb metasenv subst context t table = ~g_passives:goals ~passives (bag,maxvar) with | P.Error _ | P.GaveUp | P.Timeout _ -> [] - | P.Unsatisfiable solutions -> - List.map (readback rdb metasenv subst context) solutions + | P.Unsatisfiable solutions -> + List.map + (fun (bag,i,l) -> + (* List.iter (fun x -> + print_endline (Pp.pp_unit_clause ~margin:max_int + (fst(Terms.M.find x bag)))) l; *) + let stamp = Unix.gettimeofday () in + let proofterm = NCicProof.mk_proof bag i l in + prerr_endline (Printf.sprintf "Got proof term in %fs" + (Unix.gettimeofday() -. stamp)); + let metasenv, proofterm = + let rec aux k metasenv = function + | NCic.Meta _ as t -> metasenv, t + | NCic.Implicit _ -> + let metasenv, i, _, _ = + NCicMetaSubst.mk_meta metasenv context `IsTerm + in + metasenv, NCic.Meta (i,(k,NCic.Irl (List.length context))) + | t -> NCicUntrusted.map_term_fold_a + (fun _ k -> k+1) k aux metasenv t + in + aux 0 metasenv proofterm + in + let metasenv, subst, proofterm, _prooftype = + NCicRefiner.typeof + (rdb#set_coerc_db NCicCoercion.empty_db) + metasenv subst context proofterm None + in + proofterm, metasenv, subst) + solutions ;; -module EmptyC = - struct - let metasenv = [] - let subst = [] - let context = [] - end - -module CB = NCicBlob.NCicBlob(EmptyC) -module P = NCicParamod(EmptyC) - -type state = P.state -let empty_state = P.empty_state - -let forward_infer_step s t ty = - let bag = P.bag_of_state s in - let bag,clause = P.mk_passive bag (t,ty) in - if Terms.is_eq_clause clause then - P.forward_infer_step (P.replace_bag s bag) clause 0 - else (debug (lazy "not eq"); s) -;; - -let index_obj s uri = - let obj = NCicEnvironment.get_checked_obj uri in - debug (lazy ("indexing : " ^ (NUri.string_of_uri uri))); - debug (lazy ("no : " ^ (string_of_int (fst (Obj.magic uri))))); - match obj with - | (_,_,[],[],NCic.Constant(_,_,None,ty,_)) -> - let nref = NReference.reference_of_spec uri NReference.Decl in - forward_infer_step s (NCic.Const nref) ty - | (_,d,[],[],NCic.Constant(_,_,Some(_),ty,_)) -> - let nref = NReference.reference_of_spec uri (NReference.Def d) in - forward_infer_step s (NCic.Const nref) ty - | _ -> s -;; - -let demod rdb metasenv subst context s goal = - (* let stamp = Unix.gettimeofday () in *) - match P.demod s goal with - | P.Error _ | P.GaveUp | P.Timeout _ -> [] - | P.Unsatisfiable solutions -> - (* print (lazy (Printf.sprintf "Got solutions in %fs" - (Unix.gettimeofday() -. stamp))); *) - List.map (readback ~demod:true rdb metasenv subst context) solutions -;; - -let paramod rdb metasenv subst context s goal = - (* let stamp = Unix.gettimeofday () in *) - match P.nparamod ~useage:true ~max_steps:max_int - ~timeout:(Unix.gettimeofday () +. 300.0) s goal with - | P.Error _ | P.GaveUp | P.Timeout _ -> [] - | P.Unsatisfiable solutions -> - (* print (lazy (Printf.sprintf "Got solutions in %fs" - (Unix.gettimeofday() -. stamp))); *) - List.map (readback rdb metasenv subst context) solutions -;; - -let fast_eq_check rdb metasenv subst context s goal = - (* let stamp = Unix.gettimeofday () in *) - match P.fast_eq_check s goal with - | P.Error _ | P.GaveUp | P.Timeout _ -> [] - | P.Unsatisfiable solutions -> - (* print (lazy (Printf.sprintf "Got solutions in %fs" - (Unix.gettimeofday() -. stamp))); *) - List.map (readback rdb metasenv subst context) solutions -;; - -let is_equation metasenv subst context ty = - let hty, _, _ = - NCicMetaSubst.saturate ~delta:0 metasenv subst context - ty 0 - in match hty with - | NCic.Appl (eq ::tl) when eq = CB.eqP -> true - | _ -> false -;; + -(* -let demodulate rdb metasenv subst context s goal = - (* let stamp = Unix.gettimeofday () in *) - match P.fast_eq_check s goal with - | P.Error _ | P.GaveUp | P.Timeout _ -> [] - | P.Unsatisfiable solutions -> - (* print (lazy (Printf.sprintf "Got solutions in %fs" - (Unix.gettimeofday() -. stamp))); *) - List.map (readback rdb metasenv subst context) solutions -;; -*) diff --git a/helm/software/components/ng_paramodulation/nCicParamod.mli b/helm/software/components/ng_paramodulation/nCicParamod.mli index 96eeb71ae..067235158 100644 --- a/helm/software/components/ng_paramodulation/nCicParamod.mli +++ b/helm/software/components/ng_paramodulation/nCicParamod.mli @@ -11,33 +11,11 @@ (* $Id: orderings.ml 9869 2009-06-11 22:52:38Z denes $ *) +module NCicParamod(C : NCicBlob.NCicContext) : Paramod.Paramod +with type t = NCic.term and type input = NCic.term + val nparamod : #NRstatus.status -> NCic.metasenv -> NCic.substitution -> NCic.context -> (NCic.term * NCic.term) -> (NCic.term * NCic.term) list -> - (NCic.term * NCic.term * NCic.metasenv * NCic.substitution) list - -type state -val empty_state: state -val forward_infer_step: state -> NCic.term -> NCic.term -> state -val index_obj: state -> NUri.uri -> state -val is_equation: NCic.metasenv -> - NCic.substitution -> NCic.context -> NCic.term -> bool -val paramod : - #NRstatus.status -> - NCic.metasenv -> NCic.substitution -> NCic.context -> - state -> - (NCic.term * NCic.term) -> - (NCic.term * NCic.term * NCic.metasenv * NCic.substitution) list -val fast_eq_check : - #NRstatus.status -> - NCic.metasenv -> NCic.substitution -> NCic.context -> - state -> - (NCic.term * NCic.term) -> - (NCic.term * NCic.term * NCic.metasenv * NCic.substitution) list -val demod : - #NRstatus.status -> - NCic.metasenv -> NCic.substitution -> NCic.context -> - state -> - (NCic.term * NCic.term) -> - (NCic.term * NCic.term * NCic.metasenv * NCic.substitution) list + (NCic.term * NCic.metasenv * NCic.substitution) list diff --git a/helm/software/components/ng_paramodulation/nCicProof.ml b/helm/software/components/ng_paramodulation/nCicProof.ml index c5290694b..9a7285062 100644 --- a/helm/software/components/ng_paramodulation/nCicProof.ml +++ b/helm/software/components/ng_paramodulation/nCicProof.ml @@ -11,68 +11,45 @@ (* $Id: orderings.ml 9869 2009-06-11 22:52:38Z denes $ *) -type eq_sig_type = Eq | EqInd_l | EqInd_r | Refl - -let eqsig = ref (fun _ -> assert false);; -let set_sig f = eqsig:= f;; -let get_sig = fun x -> !eqsig x;; +let reference_of_oxuri = ref (fun _ -> assert false);; +let set_reference_of_oxuri f = reference_of_oxuri := f;; -let default_sig = function - | Eq -> - let uri = NUri.uri_of_string "cic:/matita/ng/Plogic/equality/eq.ind" in - let ref = NReference.reference_of_spec uri (NReference.Ind(true,0,2)) in - NCic.Const ref - | EqInd_l -> - let uri = NUri.uri_of_string "cic:/matita/ng/Plogic/equality/rewrite_l.con" in - let ref = NReference.reference_of_spec uri (NReference.Def(1)) in - NCic.Const ref - | EqInd_r -> - let uri = NUri.uri_of_string "cic:/matita/ng/Plogic/equality/rewrite_r.con" in - let ref = NReference.reference_of_spec uri (NReference.Def(3)) in - NCic.Const ref - | Refl -> - let uri = NUri.uri_of_string "cic:/matita/ng/Plogic/equality/eq.ind" in - let ref = NReference.reference_of_spec uri (NReference.Con(0,1,2)) in - NCic.Const ref -let set_default_sig () = - (*prerr_endline "setting default sig";*) - eqsig := default_sig - -let set_reference_of_oxuri reference_of_oxuri = - prerr_endline "setting oxuri in nCicProof"; - let nsig = function - | Eq -> - NCic.Const - (reference_of_oxuri - (UriManager.uri_of_string - "cic:/matita/logic/equality/eq.ind#xpointer(1/1)")) - | EqInd_l -> - NCic.Const - (reference_of_oxuri - (UriManager.uri_of_string - "cic:/matita/logic/equality/eq_ind.con")) - | EqInd_r -> - NCic.Const - (reference_of_oxuri - (UriManager.uri_of_string - "cic:/matita/logic/equality/eq_elim_r.con")) - | Refl -> - NCic.Const - (reference_of_oxuri - (UriManager.uri_of_string - "cic:/matita/logic/equality/eq.ind#xpointer(1/1/1)")) - in eqsig:= nsig + let eqP () = + let r = + !reference_of_oxuri + (UriManager.uri_of_string + "cic:/matita/logic/equality/eq.ind#xpointer(1/1)") + in + NCic.Const r ;; -(* let debug c r = prerr_endline r; c *) -let debug c _ = c;; + let eq_ind () = + let r = + !reference_of_oxuri + (UriManager.uri_of_string + "cic:/matita/logic/equality/eq_ind.con") + in + NCic.Const r + ;; - let eqP() = debug (!eqsig Eq) "eq" ;; - let eq_ind() = debug (!eqsig EqInd_l) "eq_ind" ;; - let eq_ind_r() = debug (!eqsig EqInd_r) "eq_ind_r";; - let eq_refl() = debug (!eqsig Refl) "refl";; + let eq_ind_r () = + let r = + !reference_of_oxuri + (UriManager.uri_of_string + "cic:/matita/logic/equality/eq_elim_r.con") + in + NCic.Const r + ;; + let eq_refl () = + let r = + !reference_of_oxuri + (UriManager.uri_of_string + "cic:/matita/logic/equality/eq.ind#xpointer(1/1/1)") + in + NCic.Const r + ;; let extract lift vl t = let rec pos i = function @@ -90,7 +67,6 @@ let debug c _ = c;; extract t ;; - let mk_predicate hole_type amount ft p1 vl = let rec aux t p = match p with @@ -99,16 +75,16 @@ let debug c _ = c;; match t with | Terms.Leaf _ | Terms.Var _ -> - let module NCicBlob = NCicBlob.NCicBlob( - struct - let metasenv = [] let subst = [] let context = [] - end) - in - let module Pp = Pp.Pp(NCicBlob) in + let module Pp = + Pp.Pp(NCicBlob.NCicBlob( + struct + let metasenv = [] let subst = [] let context = [] + end)) + in prerr_endline ("term: " ^ Pp.pp_foterm ft); prerr_endline ("path: " ^ String.concat "," (List.map string_of_int p1)); - prerr_endline ("leading to: " ^ Pp.pp_foterm t); + prerr_endline ("leading to: " ^ Pp.pp_foterm t); assert false | Terms.Node l -> let l = @@ -123,110 +99,7 @@ let debug c _ = c;; NCic.Lambda("x", hole_type, aux ft (List.rev p1)) ;; - let dag = - let uri = NUri.uri_of_string "cic:/matita/ng/sets/setoids/prop1.con" in - let ref = NReference.reference_of_spec uri (NReference.Fix(0,2,4)) in - NCic.Const ref - ;; - - (* - let eq_setoid = - let uri = NUri.uri_of_string "cic:/matita/ng/sets/setoids/eq.con" in - let ref = NReference.reference_of_spec uri (NReference.Fix(0,0,2)) in - NCic.Const ref - ;; - *) - - let sym eq = - let u= NUri.uri_of_string "cic:/matita/ng/properties/relations/sym.con" in - let u = NReference.reference_of_spec u (NReference.Fix(0,1,3)) in - NCic.Appl[NCic.Const u; NCic.Implicit `Type; NCic.Implicit `Term; - NCic.Implicit `Term; NCic.Implicit `Term; eq]; - ;; - - let eq_morphism1 eq = - let u= NUri.uri_of_string "cic:/matita/ng/sets/setoids/eq_is_morphism1.con" in - let u = NReference.reference_of_spec u (NReference.Def 4) in - NCic.Appl[NCic.Const u; NCic.Implicit `Term; NCic.Implicit `Term; - NCic.Implicit `Term; NCic.Implicit `Term; eq]; - ;; - - let eq_morphism2 eq = - let u= NUri.uri_of_string "cic:/matita/ng/sets/setoids/eq_is_morphism2.con" in - let u = NReference.reference_of_spec u (NReference.Def 4) in - NCic.Appl[NCic.Const u; NCic.Implicit `Term; NCic.Implicit `Term; - NCic.Implicit `Term; eq; NCic.Implicit `Term]; - ;; - - let trans eq p = - let u= NUri.uri_of_string "cic:/matita/ng/properties/relations/trans.con" in - let u = NReference.reference_of_spec u (NReference.Fix(0,1,3)) in - NCic.Appl[NCic.Const u; NCic.Implicit `Type; NCic.Implicit `Term; - NCic.Implicit `Term; NCic.Implicit `Term; NCic.Implicit `Term; eq] - ;; - - let iff1 eq p = - let uri = NUri.uri_of_string "cic:/matita/ng/logic/connectives/if.con" in - let ref = NReference.reference_of_spec uri (NReference.Fix(0,2,1)) in - NCic.Appl[NCic.Const ref; NCic.Implicit `Type; NCic.Implicit `Type; - eq; p]; - ;; - -(* - let mk_refl = function - | NCic.Appl [_; _; x; _] -> - let uri= NUri.uri_of_string "cic:/matita/ng/properties/relations/refl.con" in - let ref = NReference.reference_of_spec uri (NReference.Fix(0,1,3)) in - NCic.Appl[NCic.Const ref; NCic.Implicit `Type; NCic.Implicit `Term; - NCic.Implicit `Term(*x*)] - | _ -> assert false -*) - - let mk_refl = function - | NCic.Appl [_; ty; l; _] - -> NCic.Appl [eq_refl();ty;l] - | _ -> assert false - - - let mk_morphism eq amount ft pl vl = - let rec aux t p = - match p with - | [] -> eq - | n::tl -> - prerr_endline (string_of_int n); - match t with - | Terms.Leaf _ - | Terms.Var _ -> assert false - | Terms.Node [] -> assert false - | Terms.Node [ Terms.Leaf eqt ; _; l; r ] - when (eqP ()) = eqt -> - if n=2 then eq_morphism1 (aux l tl) - else eq_morphism2 (aux r tl) - | Terms.Node (f::l) -> - snd ( - List.fold_left - (fun (i,acc) t -> - i+1, - let f = extract amount vl f in - if i = n then - let imp = NCic.Implicit `Term in - NCic.Appl (dag::imp::imp::imp(* f *)::imp::imp:: - [aux t tl]) - else - NCicUntrusted.mk_appl acc [extract amount vl t] - ) (1,extract amount vl f) l) - in aux ft (List.rev pl) - ;; - - let mk_proof ?(demod=false) (bag : NCic.term Terms.bag) mp subst steps = - let module NCicBlob = - NCicBlob.NCicBlob( - struct - let metasenv = [] let subst = [] let context = [] - end) - in - let module Pp = Pp.Pp(NCicBlob) - in + let mk_proof (bag : NCic.term Terms.bag) mp steps = let module Subst = FoSubst in let position i l = let rec aux = function @@ -253,35 +126,11 @@ let debug c _ = c;; let get_literal id = let (_, lit, vl, proof),_,_ = Terms.get_from_bag id bag in let lit =match lit with - | Terms.Predicate t -> t (* assert false *) + | Terms.Predicate t -> assert false | Terms.Equation (l,r,ty,_) -> Terms.Node [ Terms.Leaf eqP(); ty; l; r] in - lit, vl, proof - in - let proof_type = - let lit,_,_ = get_literal mp in - let lit = Subst.apply_subst subst lit in - extract 0 [] lit in - (* composition of all subst acting on goal *) - let res_subst = - let rec rsaux ongoal acc = - function - | [] -> acc (* is the final subst for refl *) - | id::tl when ongoal -> - let lit,vl,proof = get_literal id in - (match proof with - | Terms.Exact _ -> rsaux ongoal acc tl - | Terms.Step (_, _, _, _, _, s) -> - rsaux ongoal (s@acc) tl) - | id::tl -> - (* subst is the the substitution for refl *) - rsaux (id=mp) subst tl - in - let r = rsaux false [] steps in - (* prerr_endline ("res substitution: " ^ Pp.pp_substitution r); - prerr_endline ("\n" ^ "subst: " ^ Pp.pp_substitution subst); *) - r + lit, vl, proof in let rec aux ongoal seen = function | [] -> NCic.Rel 1 @@ -289,88 +138,40 @@ let debug c _ = c;; let amount = List.length seen in let lit,vl,proof = get_literal id in if not ongoal && id = mp then - let lit = Subst.apply_subst subst lit in - let eq_ty = extract amount [] lit in - let refl = - if demod then NCic.Implicit `Term - else mk_refl eq_ty in - (* prerr_endline ("Reached m point, id=" ^ (string_of_int id)); - (NCic.LetIn ("clause_" ^ string_of_int id, eq_ty, refl, - aux true ((id,([],lit))::seen) (id::tl))) *) - NCicSubstitution.subst - ~avoid_beta_redexes:true ~no_implicit:false refl - (aux true ((id,([],lit))::seen) (id::tl)) + ((*prerr_endline ("Reached m point, id=" ^ (string_of_int id));*) + NCic.LetIn ("clause_" ^ string_of_int id, + extract amount [] lit, + (NCic.Appl [eq_refl();NCic.Implicit `Type;NCic.Implicit `Term]), + aux true ((id,([],lit))::seen) (id::tl))) else match proof with | Terms.Exact _ when tl=[] -> - (* prerr_endline ("Exact (tl=[]) for " ^ (string_of_int id));*) - aux ongoal seen tl + (* prerr_endline ("Exact (tl=[]) for " ^ (string_of_int id));*) + aux ongoal seen tl | Terms.Step _ when tl=[] -> assert false | Terms.Exact ft -> - (* - prerr_endline ("Exact for " ^ (string_of_int id)); + (* prerr_endline ("Exact for " ^ (string_of_int id));*) NCic.LetIn ("clause_" ^ string_of_int id, close_with_forall vl (extract amount vl lit), close_with_lambdas vl (extract amount vl ft), aux ongoal ((id,(List.map (fun x -> Terms.Var x) vl,lit))::seen) tl) - *) - NCicSubstitution.subst - ~avoid_beta_redexes:true ~no_implicit:false - (close_with_lambdas vl (extract amount vl ft)) - (aux ongoal - ((id,(List.map (fun x -> Terms.Var x) vl,lit))::seen) tl) | Terms.Step (_, id1, id2, dir, pos, subst) -> let id, id1,(lit,vl,proof) = - if ongoal then - let lit,vl,proof = get_literal id1 in - id1,id,(Subst.apply_subst res_subst lit, - Subst.filter res_subst vl, proof) - else id,id1,(lit,vl,proof) in - (* free variables remaining in the goal should not - be abstracted: we do not want to prove a generalization *) - let vl = if ongoal then [] else vl in + if ongoal then id1,id,get_literal id1 + else id,id1,(lit,vl,proof) + in + let vl = if ongoal then [](*Subst.filter subst vl*) else vl in let proof_of_id id = let vars = List.rev (vars_of id seen) in let args = List.map (Subst.apply_subst subst) vars in let args = List.map (extract amount vl) args in - let rel_for_id = NCic.Rel (List.length vl + position id seen) in - if args = [] then rel_for_id + let rel_for_id = NCic.Rel (List.length vl + position id seen) in + if args = [] then rel_for_id else NCic.Appl (rel_for_id::args) in let p_id1 = proof_of_id id1 in let p_id2 = proof_of_id id2 in -(* - let morphism, l, r = - let p = - if (ongoal=true) = (dir=Terms.Left2Right) then - p_id2 - else sym p_id2 in - let id1_ty = ty_of id1 seen in - let id2_ty,l,r = - match ty_of id2 seen with - | Terms.Node [ _; t; l; r ] -> - extract amount vl (Subst.apply_subst subst t), - extract amount vl (Subst.apply_subst subst l), - extract amount vl (Subst.apply_subst subst r) - | _ -> assert false - in - (*prerr_endline "mk_predicate :"; - if ongoal then prerr_endline "ongoal=true" - else prerr_endline "ongoal=false"; - prerr_endline ("id=" ^ string_of_int id); - prerr_endline ("id1=" ^ string_of_int id1); - prerr_endline ("id2=" ^ string_of_int id2); - prerr_endline ("Positions :" ^ - (String.concat ", " - (List.map string_of_int pos)));*) - mk_morphism - p amount (Subst.apply_subst subst id1_ty) pos vl, - l,r - in - let rewrite_step = iff1 morphism p_id1 - in -*) let pred, hole_type, l, r = let id1_ty = ty_of id1 seen in let id2_ty,l,r = @@ -381,45 +182,34 @@ let debug c _ = c;; extract amount vl (Subst.apply_subst subst r) | _ -> assert false in - (* - prerr_endline "mk_predicate :"; - if ongoal then prerr_endline "ongoal=true" - else prerr_endline "ongoal=false"; - prerr_endline ("id=" ^ string_of_int id); - prerr_endline ("id1=" ^ string_of_int id1 - ^": " ^ Pp.pp_foterm id1_ty); - prerr_endline ("id2=" ^ string_of_int id2 - ^ ": " ^ NCicPp.ppterm [][][] id2_ty); - prerr_endline ("Positions :" ^ - (String.concat ", " - (List.map string_of_int pos)));*) + (*prerr_endline "mk_predicate :"; + if ongoal then prerr_endline "ongoal=true" + else prerr_endline "ongoal=false"; + prerr_endline ("id=" ^ string_of_int id); + prerr_endline ("id1=" ^ string_of_int id1); + prerr_endline ("id2=" ^ string_of_int id2); + prerr_endline ("Positions :" ^ + (String.concat ", " + (List.map string_of_int pos)));*) mk_predicate id2_ty amount (Subst.apply_subst subst id1_ty) pos vl, id2_ty, l,r in - let rewrite_step = - if (ongoal=true) = (dir=Terms.Left2Right) then - NCic.Appl - [eq_ind_r(); hole_type; r; pred; p_id1; l; p_id2] - else - NCic.Appl - [ eq_ind(); hole_type; l; pred; p_id1; r; p_id2] - in - let body = aux ongoal - ((id,(List.map (fun x -> Terms.Var x) vl,lit))::seen) tl - in - let occ= NCicUntrusted.count_occurrences [] 1 body in - if occ <= 1 then - NCicSubstitution.subst - ~avoid_beta_redexes:true ~no_implicit:false - (close_with_lambdas vl rewrite_step) body + let l, r, eq_ind = + if (ongoal=true) = (dir=Terms.Left2Right) then + r,l,eq_ind_r () else - NCic.LetIn ("clause_" ^ string_of_int id, - close_with_forall vl (extract amount vl lit), - (* NCic.Implicit `Type, *) - close_with_lambdas vl rewrite_step, body) + l,r,eq_ind () + in + NCic.LetIn ("clause_" ^ string_of_int id, + close_with_forall vl (extract amount vl lit), + (* NCic.Implicit `Type, *) + close_with_lambdas vl + (NCic.Appl [ eq_ind ; hole_type; l; pred; p_id1; r; p_id2 ]), + aux ongoal + ((id,(List.map (fun x -> Terms.Var x) vl,lit))::seen) tl) in - aux false [] steps, proof_type + aux false [] steps ;; diff --git a/helm/software/components/ng_paramodulation/nCicProof.mli b/helm/software/components/ng_paramodulation/nCicProof.mli index 2aa0a8dd8..337752edc 100644 --- a/helm/software/components/ng_paramodulation/nCicProof.mli +++ b/helm/software/components/ng_paramodulation/nCicProof.mli @@ -11,16 +11,6 @@ (* $Id: nCic.ml 9058 2008-10-13 17:42:30Z tassi $ *) -type eq_sig_type = Eq | EqInd_l | EqInd_r | Refl - val set_reference_of_oxuri: (UriManager.uri -> NReference.reference) -> unit -val set_default_sig: unit -> unit -val get_sig: eq_sig_type -> NCic.term -val mk_proof: - ?demod:bool - -> NCic.term Terms.bag - -> Terms.M.key - -> NCic.term Terms.substitution - -> Terms.M.key list - -> NCic.term * NCic.term (* proof, type *) +val mk_proof:NCic.term Terms.bag -> Terms.M.key -> Terms.M.key list -> NCic.term diff --git a/helm/software/components/ng_paramodulation/orderings.ml b/helm/software/components/ng_paramodulation/orderings.ml index f7062b3ab..7743e3726 100644 --- a/helm/software/components/ng_paramodulation/orderings.ml +++ b/helm/software/components/ng_paramodulation/orderings.ml @@ -40,8 +40,7 @@ let rec eq_foterm f x y = match x, y with | Terms.Leaf t1, Terms.Leaf t2 -> f t1 t2 | Terms.Var i, Terms.Var j -> i = j - | Terms.Node l1, Terms.Node l2 when List.length l1 = List.length l2 -> - List.for_all2 (eq_foterm f) l1 l2 + | Terms.Node l1, Terms.Node l2 -> List.for_all2 (eq_foterm f) l1 l2 | _ -> false ;; @@ -404,7 +403,6 @@ module LPO (B : Terms.Blob) = struct | XLT -> if check_subterms t (l_ol,tl1) then XLT else XINCOMPARABLE | XEQ -> - (try let lex = List.fold_left2 (fun acc si ti -> if acc = XEQ then lpo si ti else acc) XEQ tl1 tl2 @@ -417,8 +415,6 @@ module LPO (B : Terms.Blob) = struct if List.for_all (fun x -> lpo x t = XLT) tl1 then XLT else XINCOMPARABLE | o -> o) - with Invalid_argument _ -> (* assert false *) - XINCOMPARABLE) | XINCOMPARABLE -> XINCOMPARABLE | _ -> assert false end diff --git a/helm/software/components/ng_paramodulation/paramod.ml b/helm/software/components/ng_paramodulation/paramod.ml index 86a964c14..6f76e2ad4 100644 --- a/helm/software/components/ng_paramodulation/paramod.ml +++ b/helm/software/components/ng_paramodulation/paramod.ml @@ -11,9 +11,8 @@ (* $Id: orderings.ml 9869 2009-06-11 22:52:38Z denes $ *) -let print s = prerr_endline (Lazy.force s) ;; -let noprint s = ();; -let debug = noprint;; +let debug s = prerr_endline (Lazy.force s) ;; +let debug _ = ();; let monster = 100;; @@ -21,17 +20,14 @@ module type Paramod = sig type t type input + type state type szsontology = - | Unsatisfiable of - (t Terms.bag * int * t Terms.substitution * int list) list + | Unsatisfiable of (t Terms.bag * int * int list) list | GaveUp | Error of string | Timeout of int * t Terms.bag type bag = t Terms.bag * int - type state val empty_state : state - val bag_of_state : state -> bag - val replace_bag: state -> bag -> state val mk_passive : bag -> input * input -> bag * t Terms.unit_clause val mk_goal : bag -> input * input -> bag * t Terms.unit_clause val forward_infer_step : @@ -39,12 +35,6 @@ module type Paramod = t Terms.unit_clause -> int -> state - val goal_narrowing : - int - -> int - -> float option - -> state - -> state val paramod : useage:bool -> max_steps:int -> @@ -52,15 +42,6 @@ module type Paramod = bag -> g_passives:t Terms.unit_clause list -> passives:t Terms.unit_clause list -> szsontology - val demod : - state -> input* input -> szsontology - val fast_eq_check : - state -> input* input -> szsontology - val nparamod : - useage:bool -> - max_steps:int -> - ?timeout:float -> - state -> input* input -> szsontology end module Paramod (B : Orderings.Blob) = struct @@ -87,44 +68,34 @@ module Paramod (B : Orderings.Blob) = struct type t = B.t type input = B.input - type bag = B.t Terms.bag * int + type state = + B.t Terms.bag + * int + * Index.Index(B).active_set + * (WeightPassiveSet.t * AgePassiveSet.t) + * B.t Terms.unit_clause list + * (WeightPassiveSet.t * AgePassiveSet.t) type szsontology = - | Unsatisfiable of - (B.t Terms.bag * int * B.t Terms.substitution * int list) list + | Unsatisfiable of (B.t Terms.bag * int * int list) list | GaveUp | Error of string | Timeout of int * B.t Terms.bag exception Stop of szsontology - type state = - t Terms.bag - * int - * Index.Index(B).active_set - * (IDX.DT.t * WeightPassiveSet.t * AgePassiveSet.t) - * B.t Terms.unit_clause list - * (WeightPassiveSet.t * AgePassiveSet.t) + type bag = B.t Terms.bag * int let empty_state = Terms.empty_bag, 0, ([],IDX.DT.empty), - (IDX.DT.empty,WeightPassiveSet.empty,AgePassiveSet.empty), + (WeightPassiveSet.empty,AgePassiveSet.empty), [], (WeightPassiveSet.empty,AgePassiveSet.empty) - ;; +;; - let bag_of_state (bag,n,_,_,_,_) = bag,n - ;; - - let replace_bag (_,_,a,b,c,d) (bag,n) = bag,n,a,b,c,d - ;; - - let add_passive_clause ?(no_weight=false) - (passive_t,passives_w,passives_a) cl = - let pcl = if no_weight then (0,cl) + let add_passive_clause ?(no_weight=false) (passives_w,passives_a) cl = + let cl = if no_weight then (0,cl) else Utils.mk_passive_clause cl in - IDX.index_unit_clause passive_t cl, - WeightPassiveSet.add pcl passives_w, - AgePassiveSet.add pcl passives_a + WeightPassiveSet.add cl passives_w, AgePassiveSet.add cl passives_a ;; let add_passive_goal ?(no_weight=false) (passives_w,passives_a) g = @@ -133,15 +104,20 @@ module Paramod (B : Orderings.Blob) = struct WeightPassiveSet.add g passives_w, AgePassiveSet.add g passives_a ;; - let remove_passive_clause (passive_t,passives_w,passives_a) cl = - let passive_t = IDX.remove_unit_clause passive_t (snd cl) in + let remove_passive_clause (passives_w,passives_a) cl = let passives_w = WeightPassiveSet.remove cl passives_w in let passives_a = AgePassiveSet.remove cl passives_a in - passive_t,passives_w,passives_a + passives_w,passives_a ;; - let add_passive_clauses ?(no_weight=false) = - List.fold_left (add_passive_clause ~no_weight) + let add_passive_clauses ?(no_weight=false) + (passives_w,passives_a) new_clauses = + let new_clauses_w,new_clauses_a = + List.fold_left (add_passive_clause ~no_weight) + (WeightPassiveSet.empty,AgePassiveSet.empty) new_clauses + in + (WeightPassiveSet.union new_clauses_w passives_w, + AgePassiveSet.union new_clauses_a passives_a) ;; let add_passive_goals ?(no_weight=false) @@ -154,21 +130,7 @@ module Paramod (B : Orderings.Blob) = struct AgePassiveSet.union new_clauses_a passives_a) ;; - let remove_passive_goal (passives_w,passives_a) cl = - let passives_w = WeightPassiveSet.remove cl passives_w in - let passives_a = AgePassiveSet.remove cl passives_a in - passives_w,passives_a - ;; - - let is_passive_set_empty (_,passives_w,passives_a) = - if (WeightPassiveSet.is_empty passives_w) then begin - assert (AgePassiveSet.is_empty passives_a); true - end else begin - assert (not (AgePassiveSet.is_empty passives_a)); false - end - ;; - - let is_passive_g_set_empty (passives_w,passives_a) = + let is_passive_set_empty (passives_w,passives_a) = if (WeightPassiveSet.is_empty passives_w) then begin assert (AgePassiveSet.is_empty passives_a); true end else begin @@ -176,38 +138,17 @@ module Paramod (B : Orderings.Blob) = struct end ;; - let passive_set_cardinal (_,passives_w,_) - = WeightPassiveSet.cardinal passives_w - ;; - - let g_passive_set_cardinal (passives_w,_) - = WeightPassiveSet.cardinal passives_w - ;; - + let passive_set_cardinal (passives_w,_) = WeightPassiveSet.cardinal passives_w + let passive_empty_set = - (IDX.DT.empty,WeightPassiveSet.empty,AgePassiveSet.empty) - ;; - - let g_passive_empty_set = (WeightPassiveSet.empty,AgePassiveSet.empty) ;; - let pick_min_passive ~use_age (_,passives_w,passives_a) = + let pick_min_passive ~use_age (passives_w,passives_a) = if use_age then AgePassiveSet.min_elt passives_a else WeightPassiveSet.min_elt passives_w ;; - let pick_min_g_passive ~use_age (passives_w,passives_a) = - if use_age then AgePassiveSet.min_elt passives_a - else WeightPassiveSet.min_elt passives_w - ;; - - let mk_unit_clause bag maxvar (t,ty) = - let c, maxvar = Utils.mk_unit_clause maxvar (B.embed ty) (B.embed t) in - let bag, c = Terms.add_to_bag c bag in - (bag, maxvar), c - ;; - let mk_clause bag maxvar (t,ty) = let (proof,ty) = B.saturate t ty in let c, maxvar = Utils.mk_unit_clause maxvar ty proof in @@ -216,35 +157,22 @@ module Paramod (B : Orderings.Blob) = struct ;; let mk_passive (bag,maxvar) = mk_clause bag maxvar;; - let mk_goal (bag,maxvar) = mk_clause bag maxvar;; - let initialize_goal (bag,maxvar,actives,passives,_,_) t = - let (bag,maxvar), g = mk_unit_clause bag maxvar t in - let g_passives = g_passive_empty_set in - (* if the goal is not an equation we returns an empty - passive set *) - let g_passives = - if Terms.is_eq_clause g then add_passive_goal g_passives g - else g_passives - in - (bag,maxvar,actives,passives,[],g_passives) - - (* TODO : global age over facts and goals (without comparing weights) *) let select ~use_age passives g_passives = if is_passive_set_empty passives then begin - if (is_passive_g_set_empty g_passives) then + if (is_passive_set_empty g_passives) then raise (Stop GaveUp) (* we say we are incomplete *) else - let g_cl = pick_min_g_passive ~use_age:use_age g_passives in - (true,g_cl,passives,remove_passive_goal g_passives g_cl) + let g_cl = pick_min_passive ~use_age:use_age g_passives in + (true,g_cl,passives,remove_passive_clause g_passives g_cl) end else let cl = pick_min_passive ~use_age:use_age passives in - if is_passive_g_set_empty g_passives then + if is_passive_set_empty g_passives then (false,cl,remove_passive_clause passives cl,g_passives) else - let g_cl = pick_min_g_passive ~use_age:use_age g_passives in + let g_cl = pick_min_passive ~use_age:use_age g_passives in let (id1,_,_,_),(id2,_,_,_) = snd cl, snd g_cl in let cmp = if use_age then id1 <= id2 else fst cl <= fst g_cl @@ -252,7 +180,7 @@ module Paramod (B : Orderings.Blob) = struct if cmp then (false,cl,remove_passive_clause passives cl,g_passives) else - (true,g_cl,passives,remove_passive_goal g_passives g_cl) + (true,g_cl,passives,remove_passive_clause g_passives g_cl) ;; let backward_infer_step bag maxvar actives passives @@ -264,24 +192,11 @@ module Paramod (B : Orderings.Blob) = struct in debug (lazy "Performed infer_left step"); let bag = Terms.replace_in_bag (g_current,false,iterno) bag in - bag, maxvar, actives, passives, g_current::g_actives, + bag, maxvar, actives, passives, g_current::g_actives, (add_passive_goals g_passives new_goals) ;; - let pp_clauses actives passives = - let actives_l, _ = actives in - let passive_t,_,_ = passives in - let wset = IDX.elems passive_t in - ("Actives :" ^ (String.concat ";\n" - (List.map Pp.pp_unit_clause actives_l))) - ^ - ("Passives:" ^(String.concat ";\n" - (List.map (fun (_,cl) -> Pp.pp_unit_clause cl) - (IDX.ClauseSet.elements wset)))) - ;; - - let forward_infer_step - ((bag,maxvar,actives,passives,g_actives,g_passives) as s) + let forward_infer_step (bag,maxvar,actives,passives,g_actives,g_passives) current iterno = (* forward step *) @@ -295,19 +210,9 @@ module Paramod (B : Orderings.Blob) = struct * P' = P + new' *) debug (lazy "Forward infer step..."); debug (lazy("Number of actives : " ^ (string_of_int (List.length (fst actives))))); - noprint (lazy (pp_clauses actives passives)); - match Sup.keep_simplified current actives bag maxvar - with - | _,None -> s - | bag,Some (current,actives) -> - debug (lazy ("simplified to " ^ (Pp.pp_unit_clause current))); let bag, maxvar, actives, new_clauses = Sup.infer_right bag maxvar current actives in - debug - (lazy - ("New clauses :" ^ (String.concat ";\n" - (List.map Pp.pp_unit_clause new_clauses)))); debug (lazy "Demodulating goals with actives..."); (* keep goals demodulated w.r.t. actives and check if solved *) let bag, g_actives = @@ -320,7 +225,7 @@ module Paramod (B : Orderings.Blob) = struct | Some (bag,c1) -> bag,if c==c1 then c::acc else c::c1::acc) (bag,[]) g_actives in - let ctable = IDX.index_unit_clause IDX.DT.empty current in + let ctable = IDX.index_unit_clause maxvar IDX.DT.empty current in let bag, maxvar, new_goals = List.fold_left (fun (bag,m,acc) g -> @@ -334,87 +239,57 @@ module Paramod (B : Orderings.Blob) = struct add_passive_clauses passives new_clauses, g_actives, add_passive_goals g_passives new_goals ;; - - let debug_status (_,_,actives,passives,g_actives,g_passives) = - lazy - ((Printf.sprintf "Number of active goals : %d\n" - (List.length g_actives)) ^ - (Printf.sprintf "Number of passive goals : %d\n" - (g_passive_set_cardinal g_passives)) ^ - (Printf.sprintf "Number of actives : %d\n" - (List.length (fst actives))) ^ - (Printf.sprintf "Number of passives : %d\n" - (passive_set_cardinal passives))) - ;; - - - (* we just check if any of the active goals is subsumed by a - passive clause, or if any of the passive goal is subsumed - by an active or passive clause *) - let last_chance (bag,maxvar,actives,passives,g_actives,g_passives) = - debug (lazy("Last chance " ^ string_of_float - (Unix.gettimeofday()))); - let actives_l, active_t = actives in - let passive_t,wset,_ = passives in - let _ = noprint - (lazy - ("Actives :" ^ (String.concat ";\n" - (List.map Pp.pp_unit_clause actives_l)))) in - let wset = IDX.elems passive_t in - let _ = noprint - (lazy - ("Passives:" ^(String.concat ";\n" - (List.map (fun (_,cl) -> Pp.pp_unit_clause cl) - (IDX.ClauseSet.elements wset))))) in - let g_passives = - WeightPassiveSet.fold - (fun (_,x) acc -> - if List.exists (Sup.are_alpha_eq x) g_actives then acc - else x::acc) - (fst g_passives) [] - in - ignore - (List.iter - (fun x -> - ignore - (debug (lazy("ckecking goal vs a: " ^ Pp.pp_unit_clause x)); - Sup.simplify_goal ~no_demod:true maxvar active_t bag [] x)) - g_passives); - ignore - (List.iter - (fun x -> - ignore - (debug (lazy("ckecking goal vs p: " ^ Pp.pp_unit_clause x)); - Sup.simplify_goal ~no_demod:true maxvar passive_t bag [] x)) - (g_actives@g_passives)); - raise (Stop (Timeout (maxvar,bag))) - - let check_timeout = function - | None -> false - | Some timeout -> Unix.gettimeofday () > timeout - let rec given_clause ~useage + let rec given_clause ~useage ~noinfer bag maxvar iterno weight_picks max_steps timeout actives passives g_actives g_passives = let iterno = iterno + 1 in - if iterno = max_steps || check_timeout timeout then - last_chance (bag,maxvar,actives,passives,g_actives,g_passives) - else + if iterno = max_steps then raise (Stop (Timeout (maxvar,bag))); + (* timeout check: gettimeofday called only if timeout set *) + if timeout <> None && + (match timeout with + | None -> assert false + | Some timeout -> Unix.gettimeofday () > timeout) then + if noinfer then + begin + debug + (lazy("Last chance: all is indexed " ^ string_of_float + (Unix.gettimeofday()))); + let maxgoals = 100 in + ignore(List.fold_left + (fun (acc,i) x -> + if i < maxgoals then + ignore(Sup.simplify_goal ~no_demod:true + maxvar (snd actives) bag acc x) + else + (); + x::acc,i+1) + ([],0) g_actives); + raise (Stop (Timeout (maxvar,bag))) + end + else if false then (* activates last chance strategy *) + begin + debug (lazy("Last chance: "^string_of_float (Unix.gettimeofday()))); + given_clause ~useage ~noinfer:true bag maxvar iterno weight_picks max_steps + (Some (Unix.gettimeofday () +. 20.)) + actives passives g_actives g_passives; + raise (Stop (Timeout (maxvar,bag))); + end + else raise (Stop (Timeout (maxvar,bag))); + let use_age = useage && (weight_picks = (iterno / 6 + 1)) in let weight_picks = if use_age then 0 else weight_picks+1 in - let rec aux_select bag - (passives:IDX.DT.t * WeightPassiveSet.t * AgePassiveSet.t) - g_passives = + let rec aux_select bag passives g_passives = let backward,(weight,current),passives,g_passives = select ~use_age passives g_passives in if use_age && weight > monster then let bag,cl = Terms.add_to_bag current bag in if backward then - aux_select bag passives (add_passive_goal g_passives cl) + aux_select bag passives (add_passive_clause g_passives cl) else aux_select bag (add_passive_clause passives cl) g_passives else @@ -422,108 +297,120 @@ module Paramod (B : Orderings.Blob) = struct if backward then let _ = debug (lazy("Selected goal : " ^ Pp.pp_unit_clause current)) in match - Sup.simplify_goal - ~no_demod:false maxvar (snd actives) bag g_actives current + if noinfer then + if weight > monster then None else Some (bag,current) + else + Sup.simplify_goal + ~no_demod:false maxvar (snd actives) bag g_actives current with - | None -> aux_select bag passives g_passives - | Some (bag,g_current) -> - backward_infer_step bag maxvar actives passives - g_actives g_passives g_current iterno + | None -> aux_select bag passives g_passives + | Some (bag,g_current) -> + if noinfer then + let g_actives = g_current :: g_actives in + bag,maxvar,actives,passives,g_actives,g_passives + else + backward_infer_step bag maxvar actives passives + g_actives g_passives g_current iterno else - let _ = debug (lazy("Selected fact : " ^ Pp.pp_unit_clause current)) - in - if Sup.orphan_murder bag (fst actives) current then + let _ = debug (lazy("Selected fact : " ^ Pp.pp_unit_clause current)) in + (*let is_orphan = Sup.orphan_murder bag (fst actives) current in*) + match + if noinfer then + if weight > monster then bag,None + else bag, Some (current,actives) + else if Sup.orphan_murder bag (fst actives) current then let _ = debug (lazy "Orphan murdered") in let bag = Terms.replace_in_bag (current,true,iterno) bag in - aux_select bag passives g_passives - else - let s = bag,maxvar,actives,passives,g_actives,g_passives in - let s1 = forward_infer_step s current iterno - in - if s == s1 then aux_select bag passives g_passives - else s1 + bag, None + else Sup.keep_simplified current actives bag maxvar + with + (*match Sup.one_pass_simplification current actives bag maxvar with*) + | bag,None -> aux_select bag passives g_passives + | bag,Some (current,actives) -> +(* if is_orphan then prerr_endline + ("WRONG discarded: " ^ (Pp.pp_unit_clause current)); + List.iter (fun x -> + prerr_endline (Pp.pp_unit_clause x)) + (fst actives);*) + +(* List.iter (fun (id,_,_,_) -> let (cl,d) = + Terms.M.find id bag in + if d then prerr_endline + ("WRONG discarded: " ^ (Pp.pp_unit_clause cl))) + (current::fst actives);*) + if noinfer then + let actives = + current::fst actives, + IDX.index_unit_clause maxvar (snd actives) current + in + bag,maxvar,actives,passives,g_actives,g_passives + else + forward_infer_step + (bag,maxvar,actives,passives,g_actives,g_passives) + current iterno in + + (*prerr_endline "Active table :"; (List.iter (fun x -> prerr_endline (Pp.pp_unit_clause x)) (fst actives)); *) - let (bag,maxvar,actives,passives,g_actives,g_passives) as status = + let bag,maxvar,actives,passives,g_actives,g_passives = aux_select bag passives g_passives in - debug (debug_status status); - given_clause ~useage + debug + (lazy(Printf.sprintf "Number of active goals : %d" + (List.length g_actives))); + debug + (lazy(Printf.sprintf "Number of passive goals : %d" + (passive_set_cardinal g_passives))); + debug + (lazy(Printf.sprintf "Number of actives : %d" (List.length (fst actives)))); + debug + (lazy(Printf.sprintf "Number of passives : %d" + (passive_set_cardinal passives))); + given_clause ~useage ~noinfer bag maxvar iterno weight_picks max_steps timeout actives passives g_actives g_passives ;; - let check_and_infer ~no_demod iterno status current = - let bag,maxvar,actives,passives,g_actives,g_passives = status in - match - Sup.simplify_goal - ~no_demod maxvar (snd actives) bag g_actives current - with - | None -> debug (lazy "None"); status - | Some (bag,g_current) -> - let _ = - debug (lazy("Infer on goal : " - ^ Pp.pp_unit_clause g_current)) - in - backward_infer_step bag maxvar actives passives - g_actives g_passives g_current iterno - - (* similar to given_clause, but it merely works on goals, - in parallel, at each iteration *) - let rec goal_narrowing iterno max_steps timeout status - = - debug (debug_status status); - let iterno = iterno + 1 in - if iterno = max_steps || check_timeout timeout then - last_chance status - else - let _,_,_,_,_,g_passives = status in - let passive_goals = WeightPassiveSet.elements (fst g_passives) in - let newstatus = - List.fold_left - (fun acc g -> - let bag,maxvar,actives,passives,g_actives,g_passives = acc in - let g_passives = - remove_passive_goal g_passives g in - let current = snd g in - let _ = - debug (lazy("Selected goal : " ^ Pp.pp_unit_clause current)) - in - (* we work both on the original goal and the demodulated one*) - let acc = check_and_infer ~no_demod:false iterno acc current - in check_and_infer ~no_demod:true iterno acc current) - status passive_goals + let paramod ~useage ~max_steps ?timeout (bag,maxvar) ~g_passives ~passives = + let _initial_timestamp = Unix.gettimeofday () in + let passives = + add_passive_clauses ~no_weight:true passive_empty_set passives in - goal_narrowing iterno max_steps timeout newstatus - - let compute_result bag i subst = - let l = - let rec traverse ongoal (accg,acce) i = - match Terms.get_from_bag i bag with - | (id,_,_,Terms.Exact _),_,_ -> - if ongoal then [i],acce else - if (List.mem i acce) then accg,acce else accg,acce@[i] - | (_,_,_,Terms.Step (_,i1,i2,_,_,_)),_,_ -> - if (not ongoal) && (List.mem i acce) then accg,acce - else - let accg,acce = - traverse false (traverse ongoal (accg,acce) i1) i2 - in - if ongoal then i::accg,acce else accg,i::acce + let g_passives = + add_passive_goals ~no_weight:true passive_empty_set g_passives + in + let g_actives = [] in + let actives = [], IDX.DT.empty in + try + given_clause ~useage ~noinfer:false + bag maxvar 0 0 max_steps timeout actives passives g_actives g_passives + with + | Sup.Success (bag, _, (i,_,_,_)) -> + let l = + let rec traverse ongoal (accg,acce) i = + match Terms.get_from_bag i bag with + | (id,_,_,Terms.Exact _),_,_ -> + if ongoal then [i],acce else + if (List.mem i acce) then accg,acce else accg,acce@[i] + | (_,_,_,Terms.Step (_,i1,i2,_,_,_)),_,_ -> + if (not ongoal) && (List.mem i acce) then accg,acce + else + let accg,acce = + traverse false (traverse ongoal (accg,acce) i1) i2 + in + if ongoal then i::accg,acce else accg,i::acce + in + let gsteps,esteps = traverse true ([],[]) i in + (List.rev esteps)@gsteps in - let gsteps,esteps = traverse true ([],[]) i in - (List.rev esteps)@gsteps - in - debug (lazy ("steps: " ^ (string_of_int (List.length l)))); - let max_w = - List.fold_left - (fun acc i -> - let (cl,_,_) = Terms.get_from_bag i bag in - max acc (Order.compute_unit_clause_weight cl)) 0 l in - debug (lazy ("Max weight : " ^ (string_of_int max_w))); + let max_w = List.fold_left (fun acc i -> + let (cl,_,_) = Terms.get_from_bag i bag in + max acc (Order.compute_unit_clause_weight cl)) 0 l in + prerr_endline "Statistics :"; + prerr_endline ("Max weight : " ^ (string_of_int max_w)); (* List.iter (fun id -> let ((_,lit,_,proof as cl),d,it) = Terms.get_from_bag id bag in if d then @@ -536,68 +423,13 @@ module Paramod (B : Orderings.Blob) = struct (Printf.sprintf "Id : %d, selected at %d, weight %d by %s" id it (Order.compute_unit_clause_weight cl) (Pp.pp_proof_step proof))) l;*) - debug (lazy ("Proof:" ^ - (String.concat "\n" - (List.map - (fun x -> - let cl,_,_ = Terms.get_from_bag x bag in - Pp.pp_unit_clause cl) l)))); - Unsatisfiable [ bag, i, subst, l ] - - let paramod ~useage ~max_steps ?timeout (bag,maxvar) ~g_passives ~passives = - let _initial_timestamp = Unix.gettimeofday () in - let passives = - add_passive_clauses ~no_weight:true passive_empty_set passives - in - let g_passives = - add_passive_goals ~no_weight:true g_passive_empty_set g_passives - in - let g_actives = [] in - let actives = [], IDX.DT.empty in - try - given_clause ~useage ~noinfer:false - bag maxvar 0 0 max_steps timeout actives passives g_actives g_passives - with - | Sup.Success (bag, _, (i,_,_,_),subst) -> - compute_result bag i subst - | Stop (Unsatisfiable _) -> Error "solution found!" - | Stop o -> o - ;; - -let demod s goal = - let bag,maxvar,actives,passives,g_actives,g_passives = s in - let (bag,maxvar), g = mk_goal (bag,maxvar) goal in - let bag, ((i,_,_,_) as g1) = Sup.demodulate bag g (snd actives) in - if g1 = g then GaveUp else compute_result bag i [] -(* - if Terms.is_eq_clause g then - - else GaveUp *) - -let fast_eq_check s goal = - let (_,_,_,_,_,g_passives) as s = initialize_goal s goal in - if is_passive_g_set_empty g_passives then Error "not an equation" - else - try - goal_narrowing 0 2 None s - with - | Sup.Success (bag, _, (i,_,_,_),subst) -> - compute_result bag i subst - | Stop (Unsatisfiable _) -> Error "solution found!" - | Stop o -> o - ;; - -let nparamod ~useage ~max_steps ?timeout s goal = - let bag,maxvar,actives,passives,g_actives,g_passives - = initialize_goal s goal in - if is_passive_g_set_empty g_passives then Error "not an equation" - else - try given_clause ~useage ~noinfer:false - bag maxvar 0 0 max_steps timeout actives passives g_actives g_passives - with - | Sup.Success (bag, _, (i,_,_,_),subst) -> - compute_result bag i subst - | Stop (Unsatisfiable _) -> Error "solution found!" + (* + prerr_endline "Proof:"; + List.iter (fun x -> + prerr_endline (Pp.pp_unit_clause (fst(Terms.M.find x bag)))) l; + *) + Unsatisfiable [ bag, i, l ] + | Stop (Unsatisfiable _) -> Error "stop bug solution found!" | Stop o -> o ;; diff --git a/helm/software/components/ng_paramodulation/paramod.mli b/helm/software/components/ng_paramodulation/paramod.mli index 367d79394..b195e80c9 100644 --- a/helm/software/components/ng_paramodulation/paramod.mli +++ b/helm/software/components/ng_paramodulation/paramod.mli @@ -17,15 +17,12 @@ module type Paramod = type input type state type szsontology = - | Unsatisfiable of - (t Terms.bag * int * t Terms.substitution * int list) list + | Unsatisfiable of (t Terms.bag * int * int list) list | GaveUp | Error of string | Timeout of int * t Terms.bag type bag = t Terms.bag * int val empty_state : state - val bag_of_state :state -> bag - val replace_bag : state -> bag -> state val mk_passive : bag -> input * input -> bag * t Terms.unit_clause val mk_goal : bag -> input * input -> bag * t Terms.unit_clause val forward_infer_step : @@ -33,12 +30,6 @@ module type Paramod = t Terms.unit_clause -> int -> state - val goal_narrowing : - int - -> int - -> float option - -> state - -> state val paramod : useage:bool -> max_steps:int -> @@ -46,17 +37,6 @@ module type Paramod = bag -> g_passives:t Terms.unit_clause list -> passives:t Terms.unit_clause list -> szsontology - val demod : - state -> input* input -> szsontology - val fast_eq_check : - state -> input* input -> szsontology - val nparamod : - useage:bool -> - max_steps:int -> - ?timeout:float -> - state -> - input* input -> - szsontology end module Paramod ( B : Orderings.Blob ) : Paramod diff --git a/helm/software/components/ng_paramodulation/superposition.ml b/helm/software/components/ng_paramodulation/superposition.ml index 42cf063b6..538305815 100644 --- a/helm/software/components/ng_paramodulation/superposition.ml +++ b/helm/software/components/ng_paramodulation/superposition.ml @@ -20,13 +20,9 @@ module Superposition (B : Orderings.Blob) = module Utils = FoUtils.Utils(B) module Pp = Pp.Pp(B) - exception Success of - B.t Terms.bag - * int - * B.t Terms.unit_clause - * B.t Terms.substitution + exception Success of B.t Terms.bag * int * B.t Terms.unit_clause - let print s = prerr_endline (Lazy.force s);; + (* let debug s = prerr_endline s;; *) let debug _ = ();; let enable = true;; @@ -210,15 +206,13 @@ module Superposition (B : Orderings.Blob) = prof_demod.HExtlib.profile (demod table varlist) x ;; - let mydemod table varlist subterm = + let mydemod table varlist subterm = let cands = prof_demod_r.HExtlib.profile (IDX.DT.retrieve_generalizations table) subterm in list_first - (fun (dir, ((id,lit,vl,_) as c)) -> - debug (lazy("candidate: " - ^ Pp.pp_unit_clause c)); + (fun (dir, (id,lit,vl,_)) -> match lit with | Terms.Predicate _ -> assert false | Terms.Equation (l,r,_,o) -> @@ -247,12 +241,10 @@ module Superposition (B : Orderings.Blob) = ((*prerr_endline ("Filtering: " ^ Pp.pp_foterm side ^ " =(< || =)" ^ Pp.pp_foterm newside ^ " coming from " ^ - Pp.pp_unit_clause uc );*) - debug (lazy "not applied");None) + Pp.pp_unit_clause uc );*)None) else Some (newside, subst, id, dir) - with FoUnif.UnificationFailure _ -> - debug (lazy "not applied"); None) + with FoUnif.UnificationFailure _ -> None) (IDX.ClauseSet.elements cands) ;; @@ -270,14 +262,8 @@ module Superposition (B : Orderings.Blob) = ;; let rec demodulate bag (id, literal, vl, pr) table = - debug (lazy ("demodulate " ^ (string_of_int id))); match literal with - | Terms.Predicate t -> (* assert false *) - let bag,_,id1 = - visit bag [] (fun x -> x) id t (ctx_demod table vl) - in - let cl,_,_ = Terms.get_from_bag id1 bag in - bag,cl + | Terms.Predicate t -> assert false | Terms.Equation (l,r,ty,_) -> let bag,l,id1 = visit bag [2] @@ -288,7 +274,7 @@ module Superposition (B : Orderings.Blob) = visit bag [3] (fun x -> Terms.Node [ Terms.Leaf B.eqP; ty; l; x ]) id1 r (ctx_demod table vl) - in + in let cl,_,_ = Terms.get_from_bag id2 bag in bag,cl ;; @@ -322,33 +308,22 @@ module Superposition (B : Orderings.Blob) = ;; (* move away *) - let is_identity_clause = function + let is_identity_clause ~unify = function | _, Terms.Equation (_,_,_,Terms.Eq), _, _ -> true + | _, Terms.Equation (l,r,_,_), vl, proof when unify -> + (try ignore(Unif.unification (* vl *) [] l r); true + with FoUnif.UnificationFailure _ -> false) | _, Terms.Equation (_,_,_,_), _, _ -> false | _, Terms.Predicate _, _, _ -> assert false ;; - let is_identity_goal = function - | _, Terms.Equation (_,_,_,Terms.Eq), _, _ -> Some [] - | _, Terms.Equation (l,r,_,_), vl, proof -> - (try Some (Unif.unification (* vl *) [] l r) - with FoUnif.UnificationFailure _ -> None) - | _, Terms.Predicate _, _, _ -> assert false - ;; - - let build_new_clause_reloc bag maxvar filter rule t subst id id2 pos dir = + let build_new_clause bag maxvar filter rule t subst id id2 pos dir = let maxvar, _vl, subst = Utils.relocate maxvar (Terms.vars_of_term (Subst.apply_subst subst t)) subst in match build_clause bag filter rule t subst id id2 pos dir with - | Some (bag, c) -> Some ((bag, maxvar), c), subst - | None -> None,subst - ;; - - let build_new_clause bag maxvar filter rule t subst id id2 pos dir = - fst (build_new_clause_reloc bag maxvar filter rule t - subst id id2 pos dir) + | Some (bag, c) -> Some ((bag, maxvar), c) + | None -> None ;; - let prof_build_new_clause = HExtlib.profile ~enable "build_new_clause";; let build_new_clause bag maxvar filter rule t subst id id2 pos x = prof_build_new_clause.HExtlib.profile (build_new_clause bag maxvar filter @@ -364,6 +339,7 @@ module Superposition (B : Orderings.Blob) = in bag, maxvar, res ;; + let rewrite_eq ~unify l r ty vl table = let retrieve = if unify then IDX.DT.retrieve_unifiables @@ -417,7 +393,6 @@ module Superposition (B : Orderings.Blob) = match acc with | None -> None | Some(bag,maxvar,(id,lit,vl,p),subst) -> - (* prerr_endline ("input subst = "^Pp.pp_substitution subst); *) let l = Subst.apply_subst subst l in let r = Subst.apply_subst subst r in try @@ -432,24 +407,19 @@ module Superposition (B : Orderings.Blob) = with FoUnif.UnificationFailure _ -> match rewrite_eq ~unify l r ty vl table with | Some (id2, dir, subst1) -> - (* prerr_endline ("subst1 = "^Pp.pp_substitution subst1); - prerr_endline ("old subst = "^Pp.pp_substitution subst);*) let newsubst = Subst.concat subst1 subst in let id_t = FoSubst.apply_subst newsubst (Terms.Node[Terms.Leaf B.eqP;ty;contextl r;contextr r]) in (match - build_new_clause_reloc bag maxvar (fun _ -> true) + build_new_clause bag maxvar (fun _ -> true) Terms.Superposition id_t subst1 id id2 (pos@[2]) dir with - | Some ((bag, maxvar), c), r -> - (* prerr_endline ("r = "^Pp.pp_substitution r); *) - let newsubst = Subst.flat - (Subst.concat r subst) in + | Some ((bag, maxvar), c) -> Some(bag,maxvar,c,newsubst) - | None, _ -> assert false) + | None -> assert false) | None -> match l,r with | Terms.Node (a::la), Terms.Node (b::lb) when @@ -471,7 +441,6 @@ module Superposition (B : Orderings.Blob) = in acc | _,_ -> None ;; - let prof_deep_eq = HExtlib.profile ~enable "deep_eq";; let deep_eq ~unify l r ty pos contextl contextr table x = prof_deep_eq.HExtlib.profile (deep_eq ~unify l r ty pos contextl contextr table) x @@ -494,7 +463,7 @@ module Superposition (B : Orderings.Blob) = let (id,_,_,_) = cl in let actives = List.map (fun (i,_,_,_) -> i) actives in let (res,_) = orphan_murder bag actives id in - if res then debug (lazy "Orphan murdered"); res + if res then debug "Orphan murdered"; res ;; let prof_orphan_murder = HExtlib.profile ~enable "orphan_murder";; let orphan_murder bag actives x = @@ -502,12 +471,11 @@ module Superposition (B : Orderings.Blob) = ;; (* demodulate and check for subsumption *) - let simplify table maxvar bag clause = - debug (lazy "simplify..."); - if is_identity_clause clause then bag,None + let simplify table maxvar bag clause = + if is_identity_clause ~unify:false clause then bag,None (* else if orphan_murder bag actives clause then bag,None *) else let bag, clause = demodulate bag clause table in - if is_identity_clause clause then bag,None + if is_identity_clause ~unify:false clause then bag,None else match is_subsumed ~unify:false bag maxvar clause table with | None -> bag, Some clause @@ -535,7 +503,7 @@ module Superposition (B : Orderings.Blob) = match simplify atable maxvar bag new_clause with | bag,None -> bag,None (* new_clause has been discarded *) | bag,(Some clause) -> - let ctable = IDX.index_unit_clause IDX.DT.empty clause in + let ctable = IDX.index_unit_clause maxvar IDX.DT.empty clause in let bag, alist, atable = List.fold_left (fun (bag, alist, atable) c -> @@ -543,7 +511,7 @@ module Superposition (B : Orderings.Blob) = |bag,None -> (bag,alist,atable) (* an active clause as been discarded *) |bag,Some c1 -> - bag, c :: alist, IDX.index_unit_clause atable c) + bag, c :: alist, IDX.index_unit_clause maxvar atable c) (bag,[],IDX.DT.empty) alist in bag, Some (clause, (alist,atable)) @@ -556,7 +524,7 @@ module Superposition (B : Orderings.Blob) = let simplification_step ~new_cl cl (alist,atable) bag maxvar new_clause = let atable1 = if new_cl then atable else - IDX.index_unit_clause atable cl + IDX.index_unit_clause maxvar atable cl in (* Simplification of new_clause with : * * - actives and cl if new_clause is not cl * @@ -567,7 +535,7 @@ module Superposition (B : Orderings.Blob) = | bag,Some clause -> (* Simplification of each active clause with clause * * which is the simplified form of new_clause *) - let ctable = IDX.index_unit_clause IDX.DT.empty clause in + let ctable = IDX.index_unit_clause maxvar IDX.DT.empty clause in let bag, newa, alist, atable = List.fold_left (fun (bag, newa, alist, atable) c -> @@ -577,7 +545,7 @@ module Superposition (B : Orderings.Blob) = |bag,Some c1 -> if (c1 == c) then bag, newa, c :: alist, - IDX.index_unit_clause atable c + IDX.index_unit_clause maxvar atable c else bag, c1 :: newa, alist, atable) (bag,[],[],IDX.DT.empty) alist @@ -619,7 +587,7 @@ module Superposition (B : Orderings.Blob) = | bag,(None, Some _) -> bag,None | bag,(Some cl1, Some (clause, (alist,atable), newa)) -> let alist,atable = - (clause::alist, IDX.index_unit_clause atable clause) + (clause::alist, IDX.index_unit_clause maxvar atable clause) in keep_simplified_aux ~new_cl:(cl!=cl1) cl1 (alist,atable) bag (newa@tl) @@ -636,18 +604,12 @@ module Superposition (B : Orderings.Blob) = let bag, clause = if no_demod then bag, clause else demodulate bag clause table in - let _ = debug (lazy ("demodulated goal : " - ^ Pp.pp_unit_clause clause)) - in - if List.exists (are_alpha_eq clause) g_actives then None - else match (is_identity_goal clause) with - | Some subst -> raise (Success (bag,maxvar,clause,subst)) - | None -> + if List.exists (are_alpha_eq clause) g_actives then None else + if (is_identity_clause ~unify:true clause) + then raise (Success (bag, maxvar, clause)) + else let (id,lit,vl,_) = clause in - (* this optimization makes sense only if we demodulated, since in - that case the clause should have been turned into an identity *) - if (vl = [] && not(no_demod)) - then Some (bag,clause) + if vl = [] then Some (bag,clause) else let l,r,ty = match lit with @@ -658,15 +620,15 @@ module Superposition (B : Orderings.Blob) = table (Some(bag,maxvar,clause,Subst.id_subst)) with | None -> Some (bag,clause) | Some (bag,maxvar,cl,subst) -> - debug (lazy "Goal subsumed"); - raise (Success (bag,maxvar,cl,subst)) + prerr_endline "Goal subsumed"; + raise (Success (bag,maxvar,cl)) (* - match is_subsumed ~unify:true bag maxvar clause table with + else match is_subsumed ~unify:true bag maxvar clause table with | None -> Some (bag, clause) | Some ((bag,maxvar),c) -> prerr_endline "Goal subsumed"; raise (Success (bag,maxvar,c)) -*) +*) ;; let prof_simplify_goal = HExtlib.profile ~enable "simplify_goal";; @@ -754,14 +716,14 @@ module Superposition (B : Orderings.Blob) = (* We demodulate actives clause with current until all * * active clauses are reduced w.r.t each other *) (* let bag, (alist,atable) = keep_simplified (alist,atable) bag [current] in *) - let ctable = IDX.index_unit_clause IDX.DT.empty current in + let ctable = IDX.index_unit_clause maxvar IDX.DT.empty current in (* let bag, (alist, atable) = let bag, alist = HExtlib.filter_map_acc (simplify ctable) bag alist in bag, (alist, List.fold_left IDX.index_unit_clause IDX.DT.empty alist) in*) - debug (lazy "Simplified active clauses with fact"); + debug "Simplified active clauses with fact"; (* We superpose active clauses with current *) let bag, maxvar, new_clauses = List.fold_left @@ -772,17 +734,13 @@ module Superposition (B : Orderings.Blob) = bag, maxvar, newc @ acc) (bag, maxvar, []) alist in - debug - (lazy - ("New clauses :" ^ (String.concat ";\n" - (List.map Pp.pp_unit_clause new_clauses)))); - debug (lazy "First superpositions"); + debug "First superpositions"; (* We add current to active clauses so that it can be * * superposed with itself *) let alist, atable = - current :: alist, IDX.index_unit_clause atable current + current :: alist, IDX.index_unit_clause maxvar atable current in - debug (lazy "Indexed"); + debug "Indexed"; let fresh_current, maxvar = Utils.fresh_unit_clause maxvar current in (* We need to put fresh_current into the bag so that all * * variables clauses refer to are known. *) @@ -791,14 +749,14 @@ module Superposition (B : Orderings.Blob) = let bag, maxvar, additional_new_clauses = superposition_with_table bag maxvar fresh_current atable in - debug (lazy "Another superposition"); + debug "Another superposition"; let new_clauses = new_clauses @ additional_new_clauses in - (* debug (lazy (Printf.sprintf "Demodulating %d clauses" - (List.length new_clauses))); *) + debug (lazy (Printf.sprintf "Demodulating %d clauses" + (List.length new_clauses))); let bag, new_clauses = HExtlib.filter_map_monad (simplify atable maxvar) bag new_clauses in - debug (lazy "Demodulated new clauses"); + debug "Demodulated new clauses"; bag, maxvar, (alist, atable), new_clauses ;; @@ -814,7 +772,7 @@ module Superposition (B : Orderings.Blob) = let bag, maxvar, new_goals = superposition_with_table bag maxvar goal atable in - debug(lazy "Superposed goal with active clauses"); + debug "Superposed goal with active clauses"; (* We simplify the new goals with active clauses *) let bag, new_goals = List.fold_left @@ -824,7 +782,7 @@ module Superposition (B : Orderings.Blob) = | Some (bag,g) -> bag,g::acc) (bag, []) new_goals in - debug (lazy "Simplified new goals with active clauses"); + debug "Simplified new goals with active clauses"; bag, maxvar, List.rev new_goals ;; diff --git a/helm/software/components/ng_paramodulation/superposition.mli b/helm/software/components/ng_paramodulation/superposition.mli index c67dbfb07..30d32d540 100644 --- a/helm/software/components/ng_paramodulation/superposition.mli +++ b/helm/software/components/ng_paramodulation/superposition.mli @@ -15,11 +15,7 @@ module Superposition (B : Orderings.Blob) : sig (* bag, maxvar, meeting point *) - exception Success of - B.t Terms.bag - * int - * B.t Terms.unit_clause - * B.t Terms.substitution + exception Success of B.t Terms.bag * int * B.t Terms.unit_clause (* The returned active set is the input one + the selected clause *) val infer_right : @@ -64,6 +60,8 @@ module Superposition (B : Orderings.Blob) : B.t Terms.bag -> int -> B.t Terms.bag * (B.t Terms.unit_clause * Index.Index(B).active_set) option + + val keep_simplified: B.t Terms.unit_clause -> Index.Index(B).active_set -> @@ -77,8 +75,5 @@ module Superposition (B : Orderings.Blob) : B.t Terms.unit_clause -> bool - val are_alpha_eq : - B.t Terms.unit_clause -> - B.t Terms.unit_clause -> - bool + end diff --git a/helm/software/components/ng_paramodulation/terms.ml b/helm/software/components/ng_paramodulation/terms.ml index 87b4f383b..3947107ea 100644 --- a/helm/software/components/ng_paramodulation/terms.ml +++ b/helm/software/components/ng_paramodulation/terms.ml @@ -46,11 +46,6 @@ type 'a unit_clause = type 'a passive_clause = int * 'a unit_clause (* weight * equation *) -let is_eq_clause (_,l,_,_) = - match l with - | Equation _ -> true - | Predicate _ -> false -;; let vars_of_term t = let rec aux acc = function @@ -96,7 +91,6 @@ module type Blob = val eq : t -> t -> bool val compare : t -> t -> int val eqP : t - val is_eq: t foterm -> (t foterm* t foterm *t foterm) option val pp : t -> string type input val embed : input -> t foterm diff --git a/helm/software/components/ng_paramodulation/terms.mli b/helm/software/components/ng_paramodulation/terms.mli index 93f106a4f..0146dba2c 100644 --- a/helm/software/components/ng_paramodulation/terms.mli +++ b/helm/software/components/ng_paramodulation/terms.mli @@ -52,7 +52,6 @@ type 'a unit_clause = type 'a passive_clause = int * 'a unit_clause (* weight * equation *) -val is_eq_clause : 'a unit_clause -> bool val vars_of_term : 'a foterm -> int list module M : Map.S with type key = int @@ -87,7 +86,6 @@ module type Blob = (* TODO: consider taking in input an imperative buffer for Format * val pp : Format.formatter -> t -> unit * *) - val is_eq : t foterm -> (t foterm * t foterm * t foterm) option val pp : t -> string type input diff --git a/helm/software/components/ng_refiner/.depend b/helm/software/components/ng_refiner/.depend index da0ab80fc..f30b906fd 100644 --- a/helm/software/components/ng_refiner/.depend +++ b/helm/software/components/ng_refiner/.depend @@ -1,9 +1,5 @@ -nDiscriminationTree.cmi: -nCicMetaSubst.cmi: -nCicUnifHint.cmi: nCicCoercion.cmi: nCicUnifHint.cmi nRstatus.cmi: nCicCoercion.cmi -nCicRefineUtil.cmi: nCicUnification.cmi: nRstatus.cmi nCicRefiner.cmi: nRstatus.cmi nDiscriminationTree.cmo: nDiscriminationTree.cmi @@ -18,11 +14,9 @@ nCicCoercion.cmx: nDiscriminationTree.cmx nCicUnifHint.cmx nCicMetaSubst.cmx \ nCicCoercion.cmi nRstatus.cmo: nCicCoercion.cmi nRstatus.cmi nRstatus.cmx: nCicCoercion.cmx nRstatus.cmi -nCicRefineUtil.cmo: nCicMetaSubst.cmi nCicRefineUtil.cmi -nCicRefineUtil.cmx: nCicMetaSubst.cmx nCicRefineUtil.cmi nCicUnification.cmo: nCicUnifHint.cmi nCicMetaSubst.cmi nCicUnification.cmi nCicUnification.cmx: nCicUnifHint.cmx nCicMetaSubst.cmx nCicUnification.cmi -nCicRefiner.cmo: nCicUnification.cmi nCicRefineUtil.cmi nCicMetaSubst.cmi \ - nCicCoercion.cmi nCicRefiner.cmi -nCicRefiner.cmx: nCicUnification.cmx nCicRefineUtil.cmx nCicMetaSubst.cmx \ - nCicCoercion.cmx nCicRefiner.cmi +nCicRefiner.cmo: nCicUnification.cmi nCicMetaSubst.cmi nCicCoercion.cmi \ + nCicRefiner.cmi +nCicRefiner.cmx: nCicUnification.cmx nCicMetaSubst.cmx nCicCoercion.cmx \ + nCicRefiner.cmi diff --git a/helm/software/components/ng_refiner/.depend.opt b/helm/software/components/ng_refiner/.depend.opt index da0ab80fc..f30b906fd 100644 --- a/helm/software/components/ng_refiner/.depend.opt +++ b/helm/software/components/ng_refiner/.depend.opt @@ -1,9 +1,5 @@ -nDiscriminationTree.cmi: -nCicMetaSubst.cmi: -nCicUnifHint.cmi: nCicCoercion.cmi: nCicUnifHint.cmi nRstatus.cmi: nCicCoercion.cmi -nCicRefineUtil.cmi: nCicUnification.cmi: nRstatus.cmi nCicRefiner.cmi: nRstatus.cmi nDiscriminationTree.cmo: nDiscriminationTree.cmi @@ -18,11 +14,9 @@ nCicCoercion.cmx: nDiscriminationTree.cmx nCicUnifHint.cmx nCicMetaSubst.cmx \ nCicCoercion.cmi nRstatus.cmo: nCicCoercion.cmi nRstatus.cmi nRstatus.cmx: nCicCoercion.cmx nRstatus.cmi -nCicRefineUtil.cmo: nCicMetaSubst.cmi nCicRefineUtil.cmi -nCicRefineUtil.cmx: nCicMetaSubst.cmx nCicRefineUtil.cmi nCicUnification.cmo: nCicUnifHint.cmi nCicMetaSubst.cmi nCicUnification.cmi nCicUnification.cmx: nCicUnifHint.cmx nCicMetaSubst.cmx nCicUnification.cmi -nCicRefiner.cmo: nCicUnification.cmi nCicRefineUtil.cmi nCicMetaSubst.cmi \ - nCicCoercion.cmi nCicRefiner.cmi -nCicRefiner.cmx: nCicUnification.cmx nCicRefineUtil.cmx nCicMetaSubst.cmx \ - nCicCoercion.cmx nCicRefiner.cmi +nCicRefiner.cmo: nCicUnification.cmi nCicMetaSubst.cmi nCicCoercion.cmi \ + nCicRefiner.cmi +nCicRefiner.cmx: nCicUnification.cmx nCicMetaSubst.cmx nCicCoercion.cmx \ + nCicRefiner.cmi diff --git a/helm/software/components/ng_refiner/Makefile b/helm/software/components/ng_refiner/Makefile index bf1fe3be5..7ff8f5fd0 100644 --- a/helm/software/components/ng_refiner/Makefile +++ b/helm/software/components/ng_refiner/Makefile @@ -7,7 +7,6 @@ INTERFACE_FILES = \ nCicUnifHint.mli \ nCicCoercion.mli \ nRstatus.mli \ - nCicRefineUtil.mli \ nCicUnification.mli \ nCicRefiner.mli diff --git a/helm/software/components/ng_refiner/nCicMetaSubst.ml b/helm/software/components/ng_refiner/nCicMetaSubst.ml index b18364509..549f06f85 100644 --- a/helm/software/components/ng_refiner/nCicMetaSubst.ml +++ b/helm/software/components/ng_refiner/nCicMetaSubst.ml @@ -259,16 +259,16 @@ and restrict metasenv subst i (restrictions as orig) = | NCicUtils.Meta_not_found _ -> assert false ;; -let rec is_flexible context ~subst = function +let rec flexible_arg context subst = function | NCic.Meta (i,_) -> (try let _,_,t,_ = List.assoc i subst in - is_flexible context ~subst t + flexible_arg context subst t with Not_found -> true) | NCic.Appl (NCic.Meta (i,_) :: args)-> (try let _,_,t,_ = List.assoc i subst in - is_flexible context ~subst + flexible_arg context subst (NCicReduction.head_beta_reduce ~delta:max_int (NCic.Appl (t :: args))) with Not_found -> true) @@ -283,7 +283,7 @@ let rec is_flexible context ~subst = function match List.nth context (i-1) with | _,NCic.Def (bo,_) -> - is_flexible context ~subst + flexible_arg context subst (NCicSubstitution.lift i bo) | _ -> false with @@ -332,11 +332,11 @@ let delift ~unify metasenv subst context n l t = match l with | _, NCic.Irl _ -> fun _ _ _ _ _ -> None | shift, NCic.Ctx l -> fun metasenv subst context k t -> - if is_flexible context ~subst t || contains_in_scope subst t then None else + if flexible_arg context subst t || contains_in_scope subst t then None else let lb = List.map (fun t -> let t = NCicSubstitution.lift (k+shift) t in - t, is_flexible context ~subst t) + t, flexible_arg context subst t) l in HExtlib.list_findopt diff --git a/helm/software/components/ng_refiner/nCicMetaSubst.mli b/helm/software/components/ng_refiner/nCicMetaSubst.mli index 1c96577a7..fd101414d 100644 --- a/helm/software/components/ng_refiner/nCicMetaSubst.mli +++ b/helm/software/components/ng_refiner/nCicMetaSubst.mli @@ -67,9 +67,5 @@ val saturate: NCic.context -> NCic.term -> int -> NCic.term * NCic.metasenv * NCic.term list -val pack_lc : int * NCic.lc_kind -> int * NCic.lc_kind - val is_out_scope_tag : NCic.meta_attrs -> bool val int_of_out_scope_tag : NCic.meta_attrs -> int - -val is_flexible : NCic.context -> subst:NCic.substitution -> NCic.term -> bool diff --git a/helm/software/components/ng_refiner/nCicRefineUtil.ml b/helm/software/components/ng_refiner/nCicRefineUtil.ml deleted file mode 100644 index 4f7277f9e..000000000 --- a/helm/software/components/ng_refiner/nCicRefineUtil.ml +++ /dev/null @@ -1,141 +0,0 @@ -(* Copyright (C) 2004, 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://helm.cs.unibo.it/ - *) - -(* $Id: cicUtil.ml 10153 2009-07-28 15:17:51Z sacerdot $ *) - -exception Meta_not_found of int -exception Subst_not_found of int - -(* syntactic_equality up to the *) -(* distinction between fake dependent products *) -(* and non-dependent products, alfa-conversion *) -let alpha_equivalence = - let rec aux t t' = - if t = t' then true - else - match t,t' with - | NCic.Prod (_,s,t), NCic.Prod (_,s',t') -> - aux s s' && aux t t' - | NCic.Lambda (_,s,t), NCic.Lambda (_,s',t') -> - aux s s' && aux t t' - | NCic.LetIn (_,s,ty,t), NCic.LetIn(_,s',ty',t') -> - aux s s' && aux ty ty' && aux t t' - | NCic.Appl l, NCic.Appl l' when List.length l = List.length l' -> - (try - List.fold_left2 - (fun b t1 t2 -> b && aux t1 t2) true l l' - with - Invalid_argument _ -> false) - | NCic.Const ref1, NCic.Const ref2 -> t == t' - | NCic.Match (it,outt,t,pl), NCic.Match (it',outt',t',pl') -> - it == it' && - aux outt outt' && aux t t' && - (try - List.fold_left2 - (fun b t1 t2 -> b && aux t1 t2) true pl pl' - with - Invalid_argument _ -> false) - | NCic.Meta (n1,(s1, NCic.Irl _)), NCic.Meta (n2,(s2, NCic.Irl _)) - when n1 = n2 && s1 = s2 -> true - | NCic.Meta (i, (s,lc)), NCic.Meta (i', (s',lc')) -> - let lc = NCicUtils.expand_local_context lc in - let lc' = NCicUtils.expand_local_context lc' in - i = i' && - (try - List.fold_left2 - (fun b xt xt' -> b && aux (NCicSubstitution.lift s xt) (NCicSubstitution.lift s' xt')) - true lc lc' - with - Invalid_argument _ -> false) - | NCic.Appl [t], t' | t, NCic.Appl [t'] -> assert false - | NCic.Sort s, NCic.Sort s' -> s == s' - | _,_ -> false (* we already know that t != t' *) - in - aux -;; - -exception WhatAndWithWhatDoNotHaveTheSameLength;; - -let replace_lifting ~equality ~context ~what ~with_what ~where = - let find_image ctx what t = - let rec find_image_aux = - function - [],[] -> raise Not_found - | what::tl1,with_what::tl2 -> - if equality ctx what t then with_what else find_image_aux (tl1,tl2) - | _,_ -> raise WhatAndWithWhatDoNotHaveTheSameLength - in - find_image_aux (what,with_what) - in - let add_ctx ctx n s = (n, NCic.Decl s)::ctx in - let add_ctx1 ctx n s ty = (n, NCic.Def (s,ty))::ctx in - let rec substaux k ctx what t = - try - NCicSubstitution.lift (k-1) (find_image ctx what t) - with Not_found -> - match t with - NCic.Rel _ as t -> t - | NCic.Meta (i, (shift,l)) -> - let l = NCicUtils.expand_local_context l in - let l' = - List.map (fun t -> substaux k ctx what (NCicSubstitution.lift shift t)) l - in - NCic.Meta(i,NCicMetaSubst.pack_lc (0, NCic.Ctx l')) - | NCic.Sort _ as t -> t - | NCic.Implicit _ as t -> t - | NCic.Prod (n,s,t) -> - NCic.Prod - (n, substaux k ctx what s, substaux (k + 1) (add_ctx ctx n s) (List.map (NCicSubstitution.lift 1) what) t) - | NCic.Lambda (n,s,t) -> - NCic.Lambda - (n, substaux k ctx what s, substaux (k + 1) (add_ctx ctx n s) (List.map (NCicSubstitution.lift 1) what) t) - | NCic.LetIn (n,s,ty,t) -> - NCic.LetIn - (n, substaux k ctx what s, substaux k ctx what ty, substaux (k + 1) (add_ctx1 ctx n s ty) (List.map (NCicSubstitution.lift 1) what) t) - | NCic.Appl (he::tl) -> - (* Invariant: no Appl applied to another Appl *) - let tl' = List.map (substaux k ctx what) tl in - begin - match substaux k ctx what he with - NCic.Appl l -> NCic.Appl (l@tl') - | _ as he' -> NCic.Appl (he'::tl') - end - | NCic.Appl _ -> assert false - | NCic.Const _ as t -> t - | NCic.Match (it,outt,t,pl) -> - NCic.Match (it,substaux k ctx what outt, substaux k ctx what t, - List.map (substaux k ctx what) pl) - in - (*prerr_endline "*** replace lifting -- what:"; - List.iter (fun x -> prerr_endline (NCicPp.ppterm ~metasenv:[] ~subst:[] ~context x)) what; - prerr_endline "\n*** replace lifting -- with what:"; - List.iter (fun x -> prerr_endline (NCicPp.ppterm ~metasenv:[] ~subst:[] ~context x)) with_what; - prerr_endline "\n*** replace lifting -- where:"; - prerr_endline (NCicPp.ppterm ~metasenv:[] ~subst:[] ~context where);*) - - substaux 1 context what where -;; - - diff --git a/helm/software/components/ng_refiner/nCicRefineUtil.mli b/helm/software/components/ng_refiner/nCicRefineUtil.mli deleted file mode 100644 index 345b6bde2..000000000 --- a/helm/software/components/ng_refiner/nCicRefineUtil.mli +++ /dev/null @@ -1,22 +0,0 @@ -(* - ||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_______________________________________________________________ *) - -(* $Id: nCicRefiner.ml 9802 2009-05-25 15:39:26Z tassi $ *) - -val alpha_equivalence : NCic.term -> NCic.term -> bool - -val replace_lifting : - equality:((string * NCic.context_entry) list -> - NCic.term -> NCic.term -> bool) -> - context:(string * NCic.context_entry) list -> - what:NCic.term list -> - with_what:NCic.term list -> where:NCic.term -> NCic.term - diff --git a/helm/software/components/ng_refiner/nCicRefiner.ml b/helm/software/components/ng_refiner/nCicRefiner.ml index 705d80cd4..423c33d8e 100644 --- a/helm/software/components/ng_refiner/nCicRefiner.ml +++ b/helm/software/components/ng_refiner/nCicRefiner.ml @@ -301,7 +301,7 @@ let rec typeof rdb let hbr t = if upto > 0 then NCicReduction.head_beta_reduce ~upto t else t in - let refine_appl metasenv subst args = + let refine_appl () = let metasenv, subst, he, ty_he = typeof_aux metasenv subst context None he in let metasenv, subst, t, ty = @@ -316,53 +316,8 @@ let rec typeof rdb let metasenv, subst, he, ty_he = typeof_aux metasenv subst context expty he in metasenv, subst, hbr he, ty_he - with Uncertain _ | RefineFailure _ -> refine_appl metasenv subst args - else - (* CSC: whd can be useful on he too... *) - (match he with - C.Const (Ref.Ref (uri1,Ref.Con _)) -> ( - match - HExtlib.map_option (NCicReduction.whd ~subst context) expty - with - Some (C.Appl(C.Const(Ref.Ref (uri2,Ref.Ind _) as ref)::expargs)) - when NUri.eq uri1 uri2 -> - (try - let _,leftno,_,_,_ = NCicEnvironment.get_checked_indtys ref in - let leftexpargs,_ = HExtlib.split_nth leftno expargs in - let rec instantiate metasenv subst revargs args = - function - [] -> - (* some checks are re-done here, but it would be complex - to avoid them (e.g. we did not check yet that the - constructor is a constructor for that inductive type)*) - refine_appl metasenv subst ((List.rev revargs)@args) - | (exparg::expargs) as allexpargs -> - match args with - [] -> raise (Failure "Not enough args") - | (C.Implicit `Vector::args) as allargs -> - (try - instantiate metasenv subst revargs args allexpargs - with - Sys.Break as exn -> raise exn - | _ -> - instantiate metasenv subst revargs - (C.Implicit `Term :: allargs) allexpargs) - | arg::args -> - let metasenv,subst,arg,_ = - typeof_aux metasenv subst context None arg in - let metasenv,subst = - NCicUnification.unify rdb metasenv subst context - arg exparg - in - instantiate metasenv subst(arg::revargs) args expargs - in - instantiate metasenv subst [] args leftexpargs - with - | Sys.Break as exn -> raise exn - | _ -> - refine_appl metasenv subst args (* to try coercions *)) - | _ -> refine_appl metasenv subst args) - | _ -> refine_appl metasenv subst args) + with Uncertain _ | RefineFailure _ -> refine_appl () + else refine_appl () | C.Appl _ -> raise (AssertFailure (lazy "Appl of length < 2")) | C.Match (Ref.Ref (_,Ref.Ind (_,tyno,_)) as r, outtype,(term as orig_term),pl) as orig -> @@ -466,18 +421,9 @@ and try_coercions rdb ~localise metasenv subst context t orig_t infty expty perform_unification exc = - let cs_subst = NCicSubstitution.subst ~avoid_beta_redexes:true in - try - pp (lazy "WWW: trying coercions -- preliminary unification"); - let metasenv, subst = - NCicUnification.unify rdb metasenv subst context infty expty - in metasenv, subst, t, expty - with - | exn -> (* we try with a coercion *) let rec first exc = function - | [] -> - pp (lazy "WWW: no more coercions!"); + | [] -> raise (wrap_exc (lazy (localise orig_t, Printf.sprintf "The term\n%s\nhas type\n%s\nbut is here used with type\n%s" (NCicPp.ppterm ~metasenv ~subst ~context t) @@ -512,332 +458,7 @@ and try_coercions rdb with | NCicUnification.UnificationFailure _ -> first exc tl | NCicUnification.Uncertain _ as exc -> first exc tl - in - - try - pp (lazy "WWW: trying coercions -- inner check"); - match infty, expty, t with - | _,_, NCic.Match (Ref.Ref (_,Ref.Ind (_,tyno,leftno)) as r,outty,m,pl) -> - (*{{{*) pp (lazy "CASE"); - (* {{{ helper functions *) - let get_cl_and_left_p refit outty = - match refit with - | NReference.Ref (uri, NReference.Ind (_,tyno,leftno)) -> - let _, leftno, itl, _, _ = NCicEnvironment.get_checked_indtys r in - let _, _, ty, cl = List.nth itl tyno in - let constructorsno = List.length cl in - let count_pis t = - let rec aux ctx t = - match NCicReduction.whd ~subst ~delta:max_int ctx t with - | NCic.Prod (name,src,tgt) -> - let ctx = (name, (NCic.Decl src)) :: ctx in - 1 + aux ctx tgt - | _ -> 0 - in - aux [] t - in - let rec skip_lambda_delifting t n = - match t,n with - | _,0 -> t - | NCic.Lambda (_,_,t),n -> - pp (lazy ("WWW: failing term? "^ NCicPp.ppterm ~subst:[] ~metasenv:[] ~context:[] t)); - skip_lambda_delifting - (* substitute dangling indices with a dummy *) - (NCicSubstitution.subst (NCic.Sort NCic.Prop) t) (n - 1) - | _ -> assert false - in - let get_l_r_p n = function - | NCic.Lambda (_,NCic.Const (Ref.Ref (_,Ref.Ind (_,_,_))),_) -> [],[] - | NCic.Lambda (_,NCic.Appl - (NCic.Const (Ref.Ref (_,Ref.Ind (_,_,_))) :: args),_) -> - HExtlib.split_nth n args - | _ -> assert false - in - let pis = count_pis ty in - let rno = pis - leftno in - let t = skip_lambda_delifting outty rno in - let left_p, _ = get_l_r_p leftno t in - let instantiate_with_left cl = - List.map - (fun ty -> - List.fold_left - (fun t p -> match t with - | NCic.Prod (_,_,t) -> - cs_subst p t - | _-> assert false) - ty left_p) - cl - in - let cl = instantiate_with_left (List.map (fun (_,_,x) -> x) cl) in - cl, left_p, leftno, rno - | _ -> raise exn - in - let rec keep_lambdas_and_put_expty ctx t bo right_p matched n = - match t,n with - | _,0 -> - let rec mkr n = function - | [] -> [] | _::tl -> NCic.Rel n :: mkr (n+1) tl - in - pp (lazy ("input replace: " ^ NCicPp.ppterm ~context:ctx ~metasenv:[] ~subst:[] bo)); - let bo = - NCicRefineUtil.replace_lifting - ~equality:(fun _ -> NCicRefineUtil.alpha_equivalence) - ~context:ctx - ~what:(matched::right_p) - ~with_what:(NCic.Rel 1::List.rev (mkr 2 right_p)) - ~where:bo - in - pp (lazy ("output replace: " ^ NCicPp.ppterm ~context:ctx ~metasenv:[] ~subst:[] bo)); - bo - | NCic.Lambda (name, src, tgt),_ -> - NCic.Lambda (name, src, - keep_lambdas_and_put_expty - ((name, NCic.Decl src)::ctx) tgt (NCicSubstitution.lift 1 bo) - (List.map (NCicSubstitution.lift 1) right_p) (NCicSubstitution.lift 1 matched) (n-1)) - | _ -> assert false - in - (*let eq = NCic.Const (NReference.reference_of_string ("cic:/matita/ng/Plogic/equality/eq.ind(1,0,2)")) in - let eq_refl = NCic.Const (NReference.reference_of_string ("cic:/matita/ng/Plogic/equality/eq.con(0,1,2)")) in*) - let eq = NCic.Const (NReference.reference_of_string ("cic:/matita/ng/Plogic/jmeq/jmeq.ind(1,0,2)")) in - let eq_refl = NCic.Const (NReference.reference_of_string ("cic:/matita/ng/Plogic/jmeq/jmeq.con(0,1,2)")) in - let add_params - metasenv subst context cty outty mty m i - = - let rec aux context outty par j mty m = function - | NCic.Prod (name, src, tgt) -> - let t,k = - aux - ((name, NCic.Decl src) :: context) - (NCicSubstitution.lift 1 outty) (NCic.Rel j::par) (j+1) - (NCicSubstitution.lift 1 mty) (NCicSubstitution.lift 1 m) tgt - in - NCic.Prod (name, src, t), k - | NCic.Const (Ref.Ref (_,Ref.Ind (_,_,leftno)) as r) -> - let k = - let k = NCic.Const(Ref.mk_constructor i r) in - NCicUntrusted.mk_appl k par - in - (* the type has no parameters, so kty = mty - let kty = - try NCicTypechecker.typeof ~subst ~metasenv context k - with NCicTypeChecker.TypeCheckerFailure _ -> assert false - in *) - NCic.Prod ("p", - NCic.Appl [eq; mty; m; mty; k], - (NCicSubstitution.lift 1 - (NCicReduction.head_beta_reduce ~delta:max_int - (NCicUntrusted.mk_appl outty [k])))),[mty,m,mty,k] - | NCic.Appl (NCic.Const (Ref.Ref (_,Ref.Ind (_,_,leftno)) as r)::pl) -> - let left_p,right_p = HExtlib.split_nth leftno pl in - let has_rights = right_p <> [] in - let k = - let k = NCic.Const(Ref.mk_constructor i r) in - NCicUntrusted.mk_appl k (left_p@par) - in - let right_p = - try match - NCicTypeChecker.typeof ~subst ~metasenv context k - with - | NCic.Appl (NCic.Const (Ref.Ref (_,Ref.Ind (_,_,_)))::args) -> - snd (HExtlib.split_nth leftno args) - | _ -> assert false - with NCicTypeChecker.TypeCheckerFailure _-> assert false - in - let orig_right_p = - match mty with - | NCic.Appl (NCic.Const (Ref.Ref (_,Ref.Ind (_,_,_)))::args) -> - snd (HExtlib.split_nth leftno args) - | _ -> assert false - in - List.fold_right2 - (fun x y (tacc,pacc) -> - let xty = - try NCicTypeChecker.typeof ~subst ~metasenv context x - with NCicTypeChecker.TypeCheckerFailure _ -> assert false - in - let yty = - try NCicTypeChecker.typeof ~subst ~metasenv context y - with NCicTypeChecker.TypeCheckerFailure _ -> assert false - in - NCic.Prod ("_", NCic.Appl [eq;xty;x;yty;y], - NCicSubstitution.lift 1 tacc), (xty,x,yty,y)::pacc) - (orig_right_p @ [m]) (right_p @ [k]) - (NCicReduction.head_beta_reduce ~delta:max_int - (NCicUntrusted.mk_appl outty (right_p@[k])), []) - - (* if has_rights then - NCicReduction.head_beta_reduce ~delta:max_int - (NCic.Appl (outty ::right_p @ [k])),k - else - NCic.Prod ("p", - NCic.Appl [eq; mty; m; k], - (NCicSubstitution.lift 1 - (NCicReduction.head_beta_reduce ~delta:max_int - (NCic.Appl (outty ::right_p @ [k]))))),k*) - | _ -> assert false - in - aux context outty [] 1 mty m cty - in - let add_lambda_for_refl_m pbo eqs cty = - (* k lives in the right context *) - (* if rno <> 0 then pbo else *) - let rec aux = function - | NCic.Lambda (name,src,bo), NCic.Prod (_,_,ty) -> - NCic.Lambda (name,src, - (aux (bo,ty))) - | t,_ -> snd (List.fold_right - (fun (xty,x,yty,y) (n,acc) -> n+1, NCic.Lambda ("p" ^ string_of_int n, - NCic.Appl [eq; xty; x; yty; y], - NCicSubstitution.lift 1 acc)) eqs (1,t)) - (*NCic.Lambda ("p", - NCic.Appl [eq; mty; m; k],NCicSubstitution.lift 1 t)*) - in - aux (pbo,cty) - in - let add_pi_for_refl_m context new_outty mty m lno rno = - (*if rno <> 0 then new_outty else*) - let rec aux context mty m = function - | NCic.Lambda (name, src, tgt) -> - let context = (name, NCic.Decl src)::context in - NCic.Lambda (name, src, aux context (NCicSubstitution.lift 1 mty) (NCicSubstitution.lift 1 m) tgt) - | t -> - let lhs = - match mty with - | NCic.Appl (_::params) -> (snd (HExtlib.split_nth lno params))@[m] - | _ -> [m] - in - let rhs = - List.map (fun x -> NCic.Rel x) - (List.rev (HExtlib.list_seq 1 (rno+2))) in - List.fold_right2 - (fun x y acc -> - let xty = - try NCicTypeChecker.typeof ~subst ~metasenv context x - with NCicTypeChecker.TypeCheckerFailure _ -> assert false - in - let yty = - try NCicTypeChecker.typeof ~subst ~metasenv context y - with NCicTypeChecker.TypeCheckerFailure _ -> assert false - in - NCic.Prod - ("_", NCic.Appl [eq;xty;x;yty;y], - (NCicSubstitution.lift 1 acc))) - lhs rhs t - (* NCic.Prod - ("_", NCic.Appl [eq;mty;m;NCic.Rel 1], - NCicSubstitution.lift 1 t)*) - in - aux context mty m new_outty - in (* }}} end helper functions *) - (* constructors types with left params already instantiated *) - let outty = NCicUntrusted.apply_subst subst context outty in - let cl, left_p, leftno,rno = - get_cl_and_left_p r outty - in - let right_p, mty = - try - match - NCicTypeChecker.typeof ~subst ~metasenv context m - with - | (NCic.Const (Ref.Ref (_,Ref.Ind (_,_,_))) | NCic.Meta _) as mty -> [], mty - | NCic.Appl ((NCic.Const (Ref.Ref (_,Ref.Ind (_,_,_)))|NCic.Meta _)::args) as mty -> - snd (HExtlib.split_nth leftno args), mty - | _ -> assert false - with NCicTypeChecker.TypeCheckerFailure _ -> - raise (AssertFailure(lazy "already ill-typed matched term")) - in - let mty = NCicUntrusted.apply_subst subst context mty in - let outty = NCicUntrusted.apply_subst subst context outty in - let expty = NCicUntrusted.apply_subst subst context expty in - let new_outty = - keep_lambdas_and_put_expty context outty expty right_p m (rno+1) - in - pp - (lazy ("CASE: new_outty: " ^ NCicPp.ppterm - ~context ~metasenv ~subst new_outty)); - let _,pl,subst,metasenv = - List.fold_right2 - (fun cty pbo (i, acc, s, menv) -> - pp (lazy ("begin iteration")); - (* Pi k_par, (Pi H:m=(K_i left_par k_par)), - * (new_)outty right_par (K_i left_par k_par) *) - let infty_pbo, _ = - add_params menv s context cty outty mty m i in - pp - (lazy ("CASE: infty_pbo: "^ NCicPp.ppterm - ~context ~metasenv ~subst infty_pbo)); - let expty_pbo, eqs = (* k is (K_i left_par k_par) *) - add_params menv s context cty new_outty mty m i in - pp - (lazy ("CASE: expty_pbo: "^ NCicPp.ppterm - ~context ~metasenv ~subst expty_pbo)); - let pbo = add_lambda_for_refl_m pbo eqs cty in - pp - (lazy ("CASE: pbo: " ^ NCicPp.ppterm - ~context ~metasenv ~subst pbo)); - let metasenv, subst, pbo, _ = - try_coercions rdb ~localise menv s context pbo - orig_t (*??*) infty_pbo expty_pbo perform_unification exc - in - pp - (lazy ("CASE: pbo2: " ^ NCicPp.ppterm - ~context ~metasenv ~subst pbo)); - (i-1, pbo::acc, subst, metasenv)) - cl pl (List.length pl, [], subst, metasenv) - in - (*let metasenv, subst = - try - NCicUnification.unify rdb metasenv subst context outty new_outty - with _ -> raise (RefineFailure (lazy (localise orig_t, "try_coercions"))) - in*) - let new_outty = add_pi_for_refl_m context new_outty mty m leftno rno in - pp (lazy ("CASE: new_outty: " ^ (NCicPp.ppterm - ~metasenv ~subst ~context new_outty))); - let right_tys = - List.map - (fun t -> NCicTypeChecker.typeof ~subst ~metasenv context t) right_p in - let eqs = - List.map2 (fun x y -> NCic.Appl[eq_refl;x;y]) (right_tys@[mty]) - (right_p@[m]) in - let t = NCic.Appl (NCic.Match(r,new_outty,m,pl) :: eqs) - in - metasenv, subst, t, expty (*}}}*) - | NCic.Prod (nameprod, src, ty),NCic.Prod (_, src2, ty2), _ -> - let rec mk_fresh_name ctx firstch n = - let candidate = (String.make 1 firstch) ^ (string_of_int n) in - if (List.for_all (fun (s,_) -> s <> candidate) ctx) then candidate - else mk_fresh_name ctx firstch (n+1) - in - (*{{{*) pp (lazy "LAM"); - pp (lazy ("LAM: t = " ^ NCicPp.ppterm ~metasenv ~subst ~context t)); - let name_con = mk_fresh_name context 'c' 0 - (*FreshNamesGenerator.mk_fresh_name - ~subst metasenv context ~typ:src2 Cic.Anonymous*) - in - let context_src2 = ((name_con, NCic.Decl src2) :: context) in - (* contravariant part: the argument of f:src->ty *) - let metasenv, subst, rel1, _ = - try_coercions rdb ~localise metasenv subst context_src2 - (NCic.Rel 1) orig_t (NCicSubstitution.lift 1 src2) - (NCicSubstitution.lift 1 src) perform_unification exc - in - (* covariant part: the result of f(c x); x:src2; (c x):src *) - let name_t, bo = - match t with - | NCic.Lambda (n,_,bo) -> n, cs_subst rel1 (NCicSubstitution.lift_from 2 1 bo) - | _ -> name_con, NCicUntrusted.mk_appl (NCicSubstitution.lift 1 t) [rel1] - in - (* we fix the possible dependency problem in the source ty *) - let ty = cs_subst rel1 (NCicSubstitution.lift_from 2 1 ty) in - let metasenv, subst, bo, _ = - try_coercions rdb ~localise metasenv subst context_src2 - bo orig_t ty ty2 perform_unification exc - in - let coerced = NCic.Lambda (name_t,src2, bo) in - pp (lazy ("LAM: coerced = " ^ NCicPp.ppterm ~metasenv ~subst ~context coerced)); - metasenv, subst, coerced, expty (*}}}*) - | _ -> raise exc - with exc2 -> + in pp(lazy("try_coercion " ^ NCicPp.ppterm ~metasenv ~subst ~context infty ^ " |---> " ^ NCicPp.ppterm ~metasenv ~subst ~context expty)); @@ -1038,15 +659,13 @@ let relocalise old_localise dt t add = ;; let undebruijnate inductive ref t rev_fl = - let len = List.length rev_fl in NCicSubstitution.psubst (fun x -> x) - (HExtlib.list_mapi + (List.rev (HExtlib.list_mapi (fun (_,_,rno,_,_,_) i -> - let i = len - i - 1 in NCic.Const (if inductive then NReference.mk_fix i rno ref else NReference.mk_cofix i ref)) - rev_fl) + rev_fl)) t ;; @@ -1175,29 +794,6 @@ let typeof_obj metasenv,subst,item1::context ) (metasenv,subst,tys) sx_context_ty_rev sx_context_te_rev with Invalid_argument "List.fold_left2" -> assert false in - let metasenv, subst = - let rec aux context (metasenv,subst) = function - | NCic.Meta _ -> metasenv, subst - | NCic.Implicit _ -> metasenv, subst - | NCic.Appl (NCic.Rel i :: args) as t - when i > List.length context - len -> - let lefts, _ = HExtlib.split_nth leftno args in - let ctxlen = List.length context in - let (metasenv, subst), _ = - List.fold_left - (fun ((metasenv, subst),l) arg -> - NCicUnification.unify rdb - ~test_eq_only:true metasenv subst context arg - (NCic.Rel (ctxlen - len - l)), l+1 - ) - ((metasenv, subst), 0) lefts - in - metasenv, subst - | t -> NCicUtils.fold (fun e c -> e::c) context aux - (metasenv,subst) t - in - aux context (metasenv,subst) te - in let con_sort= NCicTypeChecker.typeof ~subst ~metasenv context te in (match NCicReduction.whd ~subst context con_sort, diff --git a/helm/software/components/ng_refiner/nCicUnification.ml b/helm/software/components/ng_refiner/nCicUnification.ml index fcc76b0ad..c7b487461 100644 --- a/helm/software/components/ng_refiner/nCicUnification.ml +++ b/helm/software/components/ng_refiner/nCicUnification.ml @@ -50,7 +50,7 @@ let eta_reduce subst t = let _,_,t,_ = NCicUtils.lookup_subst i subst in let t = NCicSubstitution.subst_meta lc t in eat_lambdas ctx t - with NCicUtils.Subst_not_found _ -> ctx, t) + with Not_found -> ctx, t) | t -> ctx, t in let context_body = eat_lambdas [] t in @@ -97,7 +97,7 @@ let outside exc_opt = let time2 = Unix.gettimeofday () in let time1 = match !times with time1::tl -> times := tl; time1 | [] -> assert false in - prerr_endline ("}}} " ^ !indent ^ " " ^ string_of_float (time2 -. time1)); + prerr_endline ("}}} " ^ string_of_float (time2 -. time1)); (match exc_opt with | Some e -> prerr_endline ("exception raised: " ^ Printexc.to_string e) | None -> ()); @@ -382,8 +382,8 @@ let rec instantiate rdb test_eq_only metasenv subst context n lc t swap = | _ -> let lty = NCicSubstitution.subst_meta lc ty in pp (lazy ("On the types: " ^ - ppterm ~metasenv ~subst ~context ty_t ^ "=<=" ^ - ppterm ~metasenv ~subst ~context lty)); + ppterm ~metasenv ~subst ~context lty ^ "=<=" ^ + ppterm ~metasenv ~subst ~context ty_t)); let metasenv, subst = unify rdb false metasenv subst context ty_t lty false in @@ -559,17 +559,6 @@ and unify rdb test_eq_only metasenv subst context t1 t2 swap = len2 < len1 && cc2 = fst (HExtlib.split_nth len2 cc1) -> instantiate rdb test_eq_only metasenv subst context m lc' (NCicReduction.head_beta_reduce ~subst t1) (not swap) - | C.Meta (n,lc), C.Meta (m,lc') when - let _,_,tyn = NCicUtils.lookup_meta n metasenv in - let _,_,tym = NCicUtils.lookup_meta m metasenv in - let tyn = NCicSubstitution.subst_meta lc tyn in - let tym = NCicSubstitution.subst_meta lc tym in - match tyn,tym with - NCic.Sort NCic.Type u1, NCic.Sort NCic.Type u2 -> - NCicEnvironment.universe_lt u1 u2 - | _,_ -> false -> - instantiate rdb test_eq_only metasenv subst context m lc' - (NCicReduction.head_beta_reduce ~subst t1) (not swap) | C.Meta (n,lc), t -> instantiate rdb test_eq_only metasenv subst context n lc (NCicReduction.head_beta_reduce ~subst t) swap @@ -577,62 +566,28 @@ and unify rdb test_eq_only metasenv subst context t1 t2 swap = instantiate rdb test_eq_only metasenv subst context n lc (NCicReduction.head_beta_reduce ~subst t) (not swap) - (* higher order unification case *) | NCic.Appl (NCic.Meta (i,l) as meta :: args), _ -> - (* this easy_case handles "(? ?) =?= (f a)", same number of - * args, preferring the instantiation "f" over "\_.f a" for the - * metavariable in head position. Since the arguments of the meta - * are flexible, delift would ignore them generating a constant - * function even in the easy case above *) - let easy_case = - match t2 with - | NCic.Appl (f :: f_args) - when - List.exists (NCicMetaSubst.is_flexible context ~subst) args -> - let mlen = List.length args in - let flen = List.length f_args in - let min_len = min mlen flen in - let mhe,margs = HExtlib.split_nth (mlen - min_len) args in - let fhe,fargs = HExtlib.split_nth (flen - min_len) f_args in - (try - Some (List.fold_left2 - (fun (m, s) t1 t2 -> - unify rdb test_eq_only m s context t1 t2 swap - ) (metasenv,subst) - ((NCicUntrusted.mk_appl meta mhe)::margs) - ((NCicUntrusted.mk_appl f fhe)::fargs)) - with UnificationFailure _ | Uncertain _ | KeepReducing _ -> - None) - | _ -> None - in - (match easy_case with - | Some ms -> ms - | None -> - (* This case handles "(?_f ..ti..) =?= t2", abstracting every - * non flexible ti (delift skips local context items that are - * flexible) from t2 in two steps: - * 1) ?_f := \..xi.. .? - * 2) ?_f ..ti.. =?= t2 --unif_machines--> - ?_f[..ti..] =?= t2 --instantiate--> - delift [..ti..] t2 *) - let metasenv, lambda_Mj = - lambda_intros rdb metasenv subst context (List.length args) - (NCicTypeChecker.typeof ~metasenv ~subst context meta) - in - let metasenv, subst = - unify rdb test_eq_only metasenv subst context - (C.Meta (i,l)) lambda_Mj swap - in - let metasenv, subst = - unify rdb test_eq_only metasenv subst context t1 t2 swap - in - (try - let name, ctx, term, ty = NCicUtils.lookup_subst i subst in - let term = eta_reduce subst term in - let subst = List.filter (fun (j,_) -> j <> i) subst in - metasenv, ((i, (name, ctx, term, ty)) :: subst) - with Not_found -> assert false)) - + let metasenv, lambda_Mj = + lambda_intros rdb metasenv subst context (List.length args) + (NCicTypeChecker.typeof ~metasenv ~subst context meta) + in + let metasenv, subst = + try + unify rdb test_eq_only metasenv subst context + (C.Meta (i,l)) lambda_Mj swap + with UnificationFailure msg | Uncertain msg when not norm2-> + (* failure: let's try again argument vs argument *) + raise (KeepReducing msg) + in + let metasenv, subst = + unify rdb test_eq_only metasenv subst context t1 t2 swap + in + (try + let name, ctx, term, ty = NCicUtils.lookup_subst i subst in + let term = eta_reduce subst term in + let subst = List.filter (fun (j,_) -> j <> i) subst in + metasenv, ((i, (name, ctx, term, ty)) :: subst) + with Not_found -> assert false) | _, NCic.Appl (NCic.Meta (_,_) :: _) -> unify rdb test_eq_only metasenv subst context t2 t1 (not swap) @@ -657,12 +612,14 @@ and unify rdb test_eq_only metasenv subst context t1 t2 swap = with Invalid_argument _ -> raise (Uncertain (mk_msg metasenv subst context t1 t2)) + | UnificationFailure _ | Uncertain _ when not (norm1 && norm2) -> + raise (KeepReducing (mk_msg metasenv subst context t1 t2)) | KeepReducing _ | KeepReducingThis _ -> assert false in metasenv, subst | (C.Match (Ref.Ref (_,Ref.Ind (_,tyno,_)) as ref1,outtype1,term1,pl1), - C.Match (ref2,outtype2,term2,pl2)) when Ref.eq ref1 ref2 -> + C.Match (ref2,outtype2,term2,pl2)) -> let _,_,itl,_,_ = NCicEnvironment.get_checked_indtys ref1 in let _,_,ty,_ = List.nth itl tyno in let rec remove_prods ~subst context ty = @@ -678,9 +635,9 @@ and unify rdb test_eq_only metasenv subst context t1 t2 swap = | C.Sort C.Prop -> true | _ -> false in - (* if not (Ref.eq ref1 ref2) then + if not (Ref.eq ref1 ref2) then raise (Uncertain (mk_msg metasenv subst context t1 t2)) - else*) + else let metasenv, subst = unify rdb test_eq_only metasenv subst context outtype1 outtype2 swap in let metasenv, subst = @@ -703,17 +660,7 @@ and unify rdb test_eq_only metasenv subst context t1 t2 swap = | _ -> raise (KeepReducing (mk_msg metasenv subst context t1 t2)) (*D*) in outside None; rc with exn -> outside (Some exn); raise exn in - let fo_unif test_eq_only metasenv subst (norm1,t1 as nt1) (norm2,t2 as nt2)= - try fo_unif test_eq_only metasenv subst nt1 nt2 - with - UnificationFailure _ | Uncertain _ when not norm1 || not norm2 -> - raise (KeepReducing (mk_msg metasenv subst context t1 t2)) - in let try_hints metasenv subst (_,t1 as mt1) (_,t2 as mt2) (* exc*) = - if NCicUntrusted.metas_of_term subst context t1 = [] && - NCicUntrusted.metas_of_term subst context t2 = [] - then None - else begin (*D*) inside 'H'; try let rc = pp(lazy ("\nProblema:\n" ^ ppterm ~metasenv ~subst ~context t1 ^ " =?= " ^ @@ -743,7 +690,7 @@ and unify rdb test_eq_only metasenv subst context t1 t2 swap = List.fold_left (fun (metasenv, subst) (x,y) -> unify rdb test_eq_only metasenv subst context x y false) - (metasenv, subst) (List.rev premises) + (metasenv, subst) premises in pp(lazy("FUNZIONA!")); Some (metasenv, subst) @@ -754,7 +701,6 @@ and unify rdb test_eq_only metasenv subst context t1 t2 swap = in cand_iter candidates (*D*) in outside None; rc with exn -> outside (Some exn); raise exn - end in let put_in_whd m1 m2 = NCicReduction.reduce_machine ~delta:max_int ~subst context m1, @@ -779,32 +725,6 @@ and unify rdb test_eq_only metasenv subst context t1 t2 swap = | Uncertain _ as exn -> raise exn | _ -> assert false in - let fo_unif_heads_and_cont_or_unwind_and_hints - test_eq_only metasenv subst m1 m2 cont hm1 hm2 - = - let ms, continuation = - (* calling the continuation inside the outermost try is an option - and makes unification stronger, but looks not frequent to me - that heads unify but not the arguments and that an hints can fix - that *) - try fo_unif test_eq_only metasenv subst m1 m2, cont - with - | UnificationFailure _ - | KeepReducing _ | Uncertain _ as exn -> - let (t1,norm1),(t2,norm2) = hm1, hm2 in - match - try_hints metasenv subst - (norm1,NCicReduction.unwind t1) (norm2,NCicReduction.unwind t2) - with - | Some x -> x, fun x -> x - | None -> - match exn with - | KeepReducing msg -> raise (KeepReducingThis (msg,hm1,hm2)) - | UnificationFailure _ | Uncertain _ as exn -> raise exn - | _ -> assert false - in - continuation ms - in let height_of = function | NCic.Const (Ref.Ref (_,Ref.Def h)) | NCic.Const (Ref.Ref (_,Ref.Fix (_,_,h))) @@ -842,7 +762,7 @@ and unify rdb test_eq_only metasenv subst context t1 t2 swap = match t1 with | C.Const r -> NCicEnvironment.get_relevance r | _ -> [] *) in - let unif_from_stack (metasenv, subst) (t1, t2, b) = + let unif_from_stack t1 t2 b metasenv subst = try let t1 = NCicReduction.from_stack ~delta:max_int t1 in let t2 = NCicReduction.from_stack ~delta:max_int t2 in @@ -859,24 +779,19 @@ and unify rdb test_eq_only metasenv subst context t1 t2 swap = NCicReduction.unwind (k2,e2,t2,List.rev l2), todo in - let check_stack l1 l2 r = - match t1, t2 with - | NCic.Meta _, _ | _, NCic.Meta _ -> - (NCicReduction.unwind (k1,e1,t1,s1)), - (NCicReduction.unwind (k2,e2,t2,s2)),[] - | _ -> check_stack l1 l2 r [] - in - let hh1,hh2,todo = check_stack (List.rev s1) (List.rev s2) relevance in + let hh1,hh2,todo=check_stack (List.rev s1) (List.rev s2) relevance [] in try - fo_unif_heads_and_cont_or_unwind_and_hints - test_eq_only metasenv subst (norm1,hh1) (norm2,hh2) - (fun ms -> List.fold_left unif_from_stack ms todo) - m1 m2 + let metasenv,subst = + fo_unif_w_hints test_eq_only metasenv subst (norm1,hh1) (norm2,hh2) in + List.fold_left + (fun (metasenv,subst) (x1,x2,r) -> + unif_from_stack x1 x2 r metasenv subst + ) (metasenv,subst) todo with | KeepReducing _ -> assert false | KeepReducingThis _ -> assert (not (norm1 && norm2)); - unif_machines metasenv subst (small_delta_step ~subst m1 m2) + unif_machines metasenv subst (small_delta_step ~subst m1 m2) | UnificationFailure _ | Uncertain _ when (not (norm1 && norm2)) -> unif_machines metasenv subst (small_delta_step ~subst m1 m2) | UnificationFailure msg diff --git a/helm/software/components/ng_refiner/nDiscriminationTree.ml b/helm/software/components/ng_refiner/nDiscriminationTree.ml index 50c3bd208..fff8b6769 100644 --- a/helm/software/components/ng_refiner/nDiscriminationTree.ml +++ b/helm/software/components/ng_refiner/nDiscriminationTree.ml @@ -34,26 +34,15 @@ end module TermSet = Set.Make(TermOT) -module TermListOT : Set.OrderedType with type t = NCic.term list = - struct - type t = NCic.term list - let compare = Pervasives.compare - end - -module TermListSet : Set.S with type elt = NCic.term list = - Set.Make(TermListOT) - - module NCicIndexable : Indexable -with type input = NCic.term -and type constant_name = NReference.reference = struct +with type input = NCic.term and type constant_name = NUri.uri = struct type input = NCic.term -type constant_name = NReference.reference +type constant_name = NUri.uri let ppelem = function - | Constant (ref,arity) -> - "("^NReference.string_of_reference ref ^ "," ^ string_of_int arity^")" + | Constant (uri,arity) -> + "("^NUri.name_of_uri uri ^ "," ^ string_of_int arity^")" | Bound (i,arity) -> "("^string_of_int i ^ "," ^ string_of_int arity^")" | Variable -> "?" @@ -78,7 +67,7 @@ let path_string_of t = | NCic.Rel i -> [Bound (i, arity)] | NCic.Sort (NCic.Prop) -> assert (arity=0); [Proposition] | NCic.Sort _ -> assert (arity=0); [Datatype] - | NCic.Const (u) -> [Constant (u, arity)] + | NCic.Const (NReference.Ref (u,_)) -> [Constant (u, arity)] | NCic.Match _ -> [Dead] in aux 0 0 t @@ -87,7 +76,7 @@ let path_string_of t = let compare e1 e2 = match e1,e2 with | Constant (u1,a1),Constant (u2,a2) -> - let x = NReference.compare u1 u2 in + let x = NUri.compare u1 u2 in if x = 0 then Pervasives.compare a1 a2 else x | e1,e2 -> Pervasives.compare e1 e2 ;; diff --git a/helm/software/components/ng_refiner/nDiscriminationTree.mli b/helm/software/components/ng_refiner/nDiscriminationTree.mli index ef9776675..b00827716 100644 --- a/helm/software/components/ng_refiner/nDiscriminationTree.mli +++ b/helm/software/components/ng_refiner/nDiscriminationTree.mli @@ -24,10 +24,9 @@ *) module NCicIndexable : Discrimination_tree.Indexable -with type input = NCic.term and type constant_name = NReference.reference +with type input = NCic.term and type constant_name = NUri.uri module TermSet : Set.S with type elt = NCic.term -module TermListSet : Set.S with type elt = NCic.term list module DiscriminationTree : Discrimination_tree.DiscriminationTree with type constant_name = NCicIndexable.constant_name diff --git a/helm/software/components/ng_tactics/.depend b/helm/software/components/ng_tactics/.depend index c54a536d9..ef100f742 100644 --- a/helm/software/components/ng_tactics/.depend +++ b/helm/software/components/ng_tactics/.depend @@ -1,10 +1,5 @@ -nCicTacReduction.cmi: -nTacStatus.cmi: -nCicElim.cmi: nTactics.cmi: nTacStatus.cmi -zipTree.cmi: andOrTree.cmi: zipTree.cmi -nnAuto.cmi: nTacStatus.cmi nAuto.cmi: nTacStatus.cmi nInversion.cmi: nTacStatus.cmi nDestructTac.cmi: nTacStatus.cmi @@ -20,12 +15,8 @@ zipTree.cmo: zipTree.cmi zipTree.cmx: zipTree.cmi andOrTree.cmo: zipTree.cmi andOrTree.cmi andOrTree.cmx: zipTree.cmx andOrTree.cmi -nnAuto.cmo: nTactics.cmi nTacStatus.cmi nCicTacReduction.cmi nnAuto.cmi -nnAuto.cmx: nTactics.cmx nTacStatus.cmx nCicTacReduction.cmx nnAuto.cmi -nAuto.cmo: zipTree.cmi nnAuto.cmi nTactics.cmi nTacStatus.cmi andOrTree.cmi \ - nAuto.cmi -nAuto.cmx: zipTree.cmx nnAuto.cmx nTactics.cmx nTacStatus.cmx andOrTree.cmx \ - nAuto.cmi +nAuto.cmo: zipTree.cmi nTactics.cmi nTacStatus.cmi andOrTree.cmi nAuto.cmi +nAuto.cmx: zipTree.cmx nTactics.cmx nTacStatus.cmx andOrTree.cmx nAuto.cmi nInversion.cmo: nTactics.cmi nCicElim.cmi nInversion.cmi nInversion.cmx: nTactics.cmx nCicElim.cmx nInversion.cmi nDestructTac.cmo: nTactics.cmi nTacStatus.cmi nDestructTac.cmi diff --git a/helm/software/components/ng_tactics/.depend.opt b/helm/software/components/ng_tactics/.depend.opt index c54a536d9..ef100f742 100644 --- a/helm/software/components/ng_tactics/.depend.opt +++ b/helm/software/components/ng_tactics/.depend.opt @@ -1,10 +1,5 @@ -nCicTacReduction.cmi: -nTacStatus.cmi: -nCicElim.cmi: nTactics.cmi: nTacStatus.cmi -zipTree.cmi: andOrTree.cmi: zipTree.cmi -nnAuto.cmi: nTacStatus.cmi nAuto.cmi: nTacStatus.cmi nInversion.cmi: nTacStatus.cmi nDestructTac.cmi: nTacStatus.cmi @@ -20,12 +15,8 @@ zipTree.cmo: zipTree.cmi zipTree.cmx: zipTree.cmi andOrTree.cmo: zipTree.cmi andOrTree.cmi andOrTree.cmx: zipTree.cmx andOrTree.cmi -nnAuto.cmo: nTactics.cmi nTacStatus.cmi nCicTacReduction.cmi nnAuto.cmi -nnAuto.cmx: nTactics.cmx nTacStatus.cmx nCicTacReduction.cmx nnAuto.cmi -nAuto.cmo: zipTree.cmi nnAuto.cmi nTactics.cmi nTacStatus.cmi andOrTree.cmi \ - nAuto.cmi -nAuto.cmx: zipTree.cmx nnAuto.cmx nTactics.cmx nTacStatus.cmx andOrTree.cmx \ - nAuto.cmi +nAuto.cmo: zipTree.cmi nTactics.cmi nTacStatus.cmi andOrTree.cmi nAuto.cmi +nAuto.cmx: zipTree.cmx nTactics.cmx nTacStatus.cmx andOrTree.cmx nAuto.cmi nInversion.cmo: nTactics.cmi nCicElim.cmi nInversion.cmi nInversion.cmx: nTactics.cmx nCicElim.cmx nInversion.cmi nDestructTac.cmo: nTactics.cmi nTacStatus.cmi nDestructTac.cmi diff --git a/helm/software/components/ng_tactics/Makefile b/helm/software/components/ng_tactics/Makefile index bbcb9f674..6bb0ac3ee 100644 --- a/helm/software/components/ng_tactics/Makefile +++ b/helm/software/components/ng_tactics/Makefile @@ -7,10 +7,9 @@ INTERFACE_FILES = \ nTactics.mli \ zipTree.mli \ andOrTree.mli \ - nnAuto.mli \ nAuto.mli \ - nDestructTac.mli \ - nInversion.mli + nInversion.mli \ + nDestructTac.mli IMPLEMENTATION_FILES = $(INTERFACE_FILES:%.mli=%.ml) diff --git a/helm/software/components/ng_tactics/nAuto.ml b/helm/software/components/ng_tactics/nAuto.ml index 7a33d6266..640128616 100644 --- a/helm/software/components/ng_tactics/nAuto.ml +++ b/helm/software/components/ng_tactics/nAuto.ml @@ -13,7 +13,7 @@ open Printf -let debug = ref true +let debug = ref false let debug_print ?(depth=0) s = if !debug then prerr_endline (String.make depth '\t'^Lazy.force s) else () let debug_do f = if !debug then f () else () @@ -24,9 +24,6 @@ module Ast = CicNotationPt (* =================================== paramod =========================== *) let auto_paramod ~params:(l,_) status goal = - let l = match l with - | None -> raise (Error (lazy "no proof found",None)) - | Some l -> l in let gty = get_goalty status goal in let n,h,metasenv,subst,o = status#obj in let status,t = term_of_cic_term status gty (ctx_of gty) in @@ -44,7 +41,7 @@ let auto_paramod ~params:(l,_) status goal = NCicParamod.nparamod status metasenv subst (ctx_of gty) (NCic.Rel ~-1,t) l with | [] -> raise (Error (lazy "no proof found",None)) - | (pt, _, metasenv, subst)::_ -> + | (pt, metasenv, subst)::_ -> let status = status#set_obj (n,h,metasenv,subst,o) in instantiate status goal (mk_cic_term (ctx_of gty) pt) ;; @@ -1502,7 +1499,7 @@ let auto_main flags signature (pos : 'a and_pos) cache = status pos cache and attack pos cache and_item = - (* show pos; uncomment to show the tree *) + show pos; (* uncomment to show the tree *) match and_item with | _, S _ -> assert false (* next would close the proof or give a D *) | _, L _ -> assert false (* L is a final solution *) @@ -1621,40 +1618,6 @@ let auto_tac ~params:(_univ,flags) status = up_to depth depth ;; -let rec rm_assoc n = function - | [] -> assert false - | (x,i)::tl when n=x -> i,tl - | p::tl -> let i,tl = rm_assoc n tl in i,p::tl -;; - -let merge canonicals elements n m = - let cn,canonicals = rm_assoc n canonicals in - let cm,canonicals = rm_assoc m canonicals in - let ln,elements = rm_assoc cn elements in - let lm,elements = rm_assoc cm elements in - let canonicals = - (n,cm)::(m,cm)::List.map - (fun (x,xc) as p -> - if xc = cn then (x,cm) else p) canonicals - in - let elements = (cn,ln@lm)::elements - in - canonicals,elements -;; - -let clusters f l = - let canonicals = List.map (fun x -> (x,x)) l in - let elements = List.map (fun x -> (x,[x])) l in - List.fold_left - (fun (canonicals,elements) x -> - let dep = f x in - List.fold_left - (fun (canonicals,elements) d -> - merge canonicals elements d x) - (canonicals,elements) dep) - (canonicals,elements) l -;; - let group_by_tac ~eq_predicate ~action:tactic status = let goals = head_goals status#stack in if List.length goals < 2 then tactic status @@ -1678,7 +1641,7 @@ let group_by_tac ~eq_predicate ~action:tactic status = let l2 = HExtlib.list_mapi (fun x i -> x,i+1) l2 in List.map (fun x -> List.assoc x l2) l1 in - NTactics.block_tac ([ NTactics.branch_tac ~force:false] + NTactics.block_tac ([ NTactics.branch_tac ] @ HExtlib.list_concat ~sep:[NTactics.shift_tac] (List.map (fun gl-> [NTactics.pos_tac (pos_of gl goals); tactic]) classes) @@ -1709,17 +1672,9 @@ let auto_tac ~params = ;; (* ========================= dispatching of auto/auto_paramod ============ *) -let auto_tac ~params:(_,flags as params) ?trace_ref = +let auto_tac ~params:(_,flags as params) = if List.mem_assoc "paramodulation" flags then - auto_paramod_tac ~params - else if List.mem_assoc "demod" flags then - NnAuto.demod_tac ~params - else if List.mem_assoc "paramod" flags then - NnAuto.paramod_tac ~params - else if List.mem_assoc "fast_paramod" flags then - NnAuto.fast_eq_check_tac ~params - else if List.mem_assoc "slir" flags then - NnAuto.auto_tac ~params ?trace_ref + auto_paramod_tac ~params else auto_tac ~params ;; diff --git a/helm/software/components/ng_tactics/nAuto.mli b/helm/software/components/ng_tactics/nAuto.mli index 417adcd60..36b5bd153 100644 --- a/helm/software/components/ng_tactics/nAuto.mli +++ b/helm/software/components/ng_tactics/nAuto.mli @@ -12,8 +12,7 @@ (* $Id: nCic.ml 9058 2008-10-13 17:42:30Z tassi $ *) val auto_tac: - params:(NTacStatus.tactic_term list option * (string * string) list) -> - ?trace_ref:CicNotationPt.term list ref -> + params:(NTacStatus.tactic_term list * (string * string) list) -> 's NTacStatus.tactic val group_by_tac: diff --git a/helm/software/components/ng_tactics/nCicElim.ml b/helm/software/components/ng_tactics/nCicElim.ml index 359d93bbd..b493edb6a 100644 --- a/helm/software/components/ng_tactics/nCicElim.ml +++ b/helm/software/components/ng_tactics/nCicElim.ml @@ -53,34 +53,30 @@ let mk_elim uri leftno it (outsort,suffix) pragma = let args,sort = NCicReduction.split_prods ~subst:[] [] (-1) ty in let args = List.rev_map (function name,_ -> mk_id name) args in let rec_arg = mk_id (fresh_name ()) in - let mk_prods = + let p_ty = List.fold_right - (fun name res -> CicNotationPt.Binder (`Forall,(name,None),res)) in - let p_ty = mk_prods args + (fun name res -> CicNotationPt.Binder (`Forall,(name,None),res)) args (CicNotationPt.Binder (`Forall, (rec_arg,Some (mk_appl (mk_id ind_name :: params @ args))), CicNotationPt.Sort outsort)) in - let mk_arrs n = mk_prods (HExtlib.mk_list (mk_id "_") n) in let args = args @ [rec_arg] in let k_names = List.map (function _,name,_ -> name_of_k name) cl in - (* let final_params = List.map (function name -> name, None) params @ [p_name,Some p_ty] @ List.map (function name -> name, None) k_names @ List.map (function name -> name, None) args in - *) let cty = mk_appl (p_name :: args) in let ty = Some cty in - let branches_with_args = + let branches = List.map (function (_,name,ty) -> let _,ty = NCicReduction.split_prods ~subst:[] [] leftno ty in let cargs,ty= my_split_prods ~subst:[] [] (-1) ty in - let cargs_recargs_nih = - List.fold_left - (fun (acc,nih) -> function + let cargs_and_recursive_args = + List.rev_map + (function _,NCic.Def _ -> assert false | name,NCic.Decl ty -> let context,ty = my_split_prods ~subst:[] [] (-1) ty in @@ -93,7 +89,7 @@ let mk_elim uri leftno it (outsort,suffix) pragma = -> let abs = List.rev_map (fun id,_ -> mk_id id) context in let name = mk_id name in - (name, Some ( + name, Some ( List.fold_right (fun id res -> CicNotationPt.Binder (`Lambda,(id,None),res)) @@ -105,29 +101,16 @@ let mk_elim uri leftno it (outsort,suffix) pragma = k_names @ List.map (fun _ -> CicNotationPt.Implicit `JustOne) (List.tl args) @ - [mk_appl (name::abs)]))))::acc, nih + 1 - | _ -> (mk_id name,None)::acc,nih - ) ([],0) cargs in - let cargs_and_recursive_args, nih = cargs_recargs_nih in + [mk_appl (name::abs)]))) + | _ -> mk_id name,None + ) cargs in let cargs,recursive_args = List.split cargs_and_recursive_args in let recursive_args = HExtlib.filter_map (fun x -> x) recursive_args in - (CicNotationPt.Pattern (name,None,List.map (fun x -> x,None) cargs), - mk_appl (name_of_k name :: cargs @ recursive_args)), (name,cargs, nih) + CicNotationPt.Pattern (name,None,List.map (fun x -> x,None) cargs), + mk_appl (name_of_k name :: cargs @ recursive_args) ) cl in - let branches, branch_args = List.split branches_with_args in - let bo = CicNotationPt.Case (rec_arg,Some (ind_name,None),Some p_name,branches) in - let final_params = - List.map (function name -> name, None) params @ - [p_name,Some p_ty] @ - List.map (function name, cargs, nih -> - name_of_k name, - Some (mk_prods cargs (mk_arrs nih - (mk_appl - (p_name::HExtlib.mk_list (CicNotationPt.Implicit `JustOne) - (List.length args - 1) @ - [mk_appl (mk_id name :: params @ cargs)]))))) branch_args @ - List.map (function name -> name, None) args in + let bo = CicNotationPt.Case (rec_arg,Some (ind_name,None),None,branches) in let recno = List.length final_params in let where = recno - 1 in let res = diff --git a/helm/software/components/ng_tactics/nCicTacReduction.ml b/helm/software/components/ng_tactics/nCicTacReduction.ml index bc756a9ff..3236956fd 100644 --- a/helm/software/components/ng_tactics/nCicTacReduction.ml +++ b/helm/software/components/ng_tactics/nCicTacReduction.ml @@ -12,28 +12,13 @@ (* $Id: nCic.ml 9058 2008-10-13 17:42:30Z tassi $ *) let rec normalize ?(delta=0) ~subst ctx t = - normalize_machine ~delta ~subst ctx - (fst (NCicReduction.reduce_machine ~delta ~subst ctx (0,[],t,[]))) -and normalize_machine ?(delta=0) ~subst ctx (k,e,t,s) = - assert (delta=0); - let t = - if k = 0 then t - else - NCicSubstitution.psubst ~avoid_beta_redexes:true - (fun e -> normalize_machine ~delta ~subst ctx (NCicReduction.from_env ~delta e)) e t in - let t = - match t with + let aux = normalize ~delta ~subst in + match NCicReduction.whd ~delta ~subst ctx t with NCic.Meta (n,(s,lc)) -> let l = NCicUtils.expand_local_context lc in - let l' = List.map (normalize ~delta ~subst ctx) l in + let l' = List.map (aux ctx) l in if l = l' then t else NCic.Meta (n,(s,NCic.Ctx l)) - | t -> NCicUtils.map (fun h ctx -> h::ctx) ctx (normalize ~delta ~subst) t - in - if s = [] then t - else - NCic.Appl - (t:: - (List.map (fun i -> normalize_machine ~delta ~subst ctx (NCicReduction.from_stack ~delta i)) s)) + | t -> NCicUtils.map (fun h ctx -> h::ctx) ctx aux t ;; diff --git a/helm/software/components/ng_tactics/nDestructTac.ml b/helm/software/components/ng_tactics/nDestructTac.ml index 7814aacfd..4f87707eb 100644 --- a/helm/software/components/ng_tactics/nDestructTac.ml +++ b/helm/software/components/ng_tactics/nDestructTac.ml @@ -28,7 +28,7 @@ open NTacStatus open Continuationals.Stack -let debug = false +let debug = false let pp = if debug then (fun x -> prerr_endline (Lazy.force x)) else (fun _ -> ()) @@ -44,12 +44,6 @@ let mk_id id = CicNotationPt.Ident (id,None) ;; -let rec mk_prods l t = - match l with - [] -> t - | hd::tl -> CicNotationPt.Binder (`Forall, (mk_id hd, None), mk_prods tl t) -;; - let mk_appl = function [] -> assert false @@ -73,7 +67,8 @@ let subst_metasenv_and_fix_names status = (* input: nome della variabile riscritta * output: lista dei nomi delle variabili il cui tipo dipende dall'input *) -let cascade_select_in_ctx ~subst ctx skip iname = +let cascade_select_in_ctx ~subst ctx iname = + prerr_endline "C"; let lctx, rctx = HExtlib.split_nth (iname - 1) ctx in let lctx = List.rev lctx in let rec rm_last = function @@ -83,19 +78,24 @@ let cascade_select_in_ctx ~subst ctx skip iname = let indices,_ = List.fold_left (fun (acc,context) item -> + prerr_endline "C2"; match item with | n,(NCic.Decl s | NCic.Def (s,_)) - when (not (List.for_all (fun x -> NCicTypeChecker.does_not_occur ~subst context (x-1) x s) acc) - && not (List.mem n skip)) -> - List.iter (fun m -> pp (lazy ("acc has " ^ (string_of_int m)))) acc; - pp (lazy ("acc occurs in the type of " ^ n)); + when not (List.for_all (fun x -> NCicTypeChecker.does_not_occur ~subst context (x-1) x s) acc) -> + List.iter (fun m -> prerr_endline ("acc has " ^ (string_of_int m))) acc; + prerr_endline ("acc occurs in the type of " ^ n); (1::List.map ((+) 1) acc, item::context) | _ -> (List.map ((+) 1) acc, item::context)) ([1], rctx) lctx in - let indices = rm_last indices in + prerr_endline "C3:"; + List.iter (fun n -> prerr_endline (string_of_int n)) indices; + let indices = match rm_last indices with + | [] -> [] + | _::tl -> tl in let res = List.map (fun n -> let s,_ = List.nth ctx (n-1) in s) indices in - List.iter (fun n -> pp (lazy n)) res; - pp (lazy (NCicPp.ppcontext ~metasenv:[] ~subst ctx)); + prerr_endline "C4:"; + List.iter (fun n -> prerr_endline n) res; + prerr_endline (NCicPp.ppcontext ~metasenv:[] ~subst ctx); res, indices ;; @@ -119,7 +119,7 @@ let arg_list nleft t = ;; let nargs it nleft consno = - pp (lazy (Printf.sprintf "nargs %d %d" nleft consno)); + prerr_endline (Printf.sprintf "nargs %d %d" nleft consno); let _,indname,_,cl = it in let _,_,t_k = List.nth cl consno in List.length (arg_list nleft t_k) ;; @@ -127,17 +127,14 @@ let nargs it nleft consno = let default_pattern = "",0,(None,[],Some CicNotationPt.UserInput);; (* returns the discrimination = injection+contradiction principle *) +(* FIXME: mi riservo di considerare tipi con parametri sx alla fine *) -let mk_discriminator it ~use_jmeq nleft xyty status = +let mk_discriminator it status = + let nleft = 0 in let _,indname,_,cl = it in let mk_eq tys ts us es n = - if use_jmeq then - mk_appl [mk_id "jmeq"; - CicNotationPt.Implicit `JustOne; List.nth ts n; - CicNotationPt.Implicit `JustOne; List.nth us n] - else (* eqty = Tn u0 e0...un-1 en-1 *) let eqty = mk_appl (List.nth tys n :: iter (fun i acc -> @@ -154,8 +151,7 @@ let mk_discriminator it ~use_jmeq nleft xyty status = List.nth es i:: acc) (n-1) []) in mk_appl [mk_id "eq"; eqty; mk_appl (mk_id ("R" ^ string_of_int n) :: params); - List.nth us n] - + List.nth us n] in let kname it j = @@ -168,13 +164,8 @@ let mk_discriminator it ~use_jmeq nleft xyty status = let nargs = nargs it nleft i in let es = List.map (fun x -> mk_id ("e" ^ string_of_int x)) (HExtlib.list_seq 0 nargs) in let tys = List.map - (fun x -> iter - (fun i acc -> - CicNotationPt.Binder (`Lambda, (mk_id ("x" ^ string_of_int i), None), - CicNotationPt.Binder (`Lambda, (mk_id ("p" ^ string_of_int i), None), - acc))) (x-1) - (CicNotationPt.Implicit (`Tagged ("T" ^ (string_of_int x))))) - (HExtlib.list_seq 0 nargs) in + (fun x -> CicNotationPt.Implicit (`Tagged ("T" ^ (string_of_int x)))) + (HExtlib.list_seq 0 nargs) in let tys = tys @ [iter (fun i acc -> CicNotationPt.Binder (`Lambda, (mk_id ("x" ^ string_of_int i), None), @@ -186,39 +177,37 @@ let mk_discriminator it ~use_jmeq nleft xyty status = (HExtlib.list_seq 0 (List.length ts))); mk_appl (mk_id (kname it j)::us)])] in - (** CicNotationPt.Binder (`Lambda, (mk_id "e", + CicNotationPt.Binder (`Lambda, (mk_id "e", Some (mk_appl [mk_id "eq"; CicNotationPt.Implicit `JustOne; mk_appl (mk_id (kname it i)::ts); mk_appl (mk_id (kname it j)::us)])), - let ts = ts @ [mk_id "e"] in + let ts = ts @ [mk_id "e"] in let refl2 = mk_appl [mk_id "refl"; CicNotationPt.Implicit `JustOne; mk_appl (mk_id (kname it j)::us)] in - let us = us @ [refl2] in *) + let us = us @ [refl2] in CicNotationPt.Binder (`Forall, (mk_id "P", Some (CicNotationPt.Sort (`NType "1") )), if i = j then CicNotationPt.Binder (`Forall, (mk_id "_", Some (iter (fun i acc -> CicNotationPt.Binder (`Forall, (List.nth es i, Some (mk_eq tys ts us es i)), acc)) (nargs-1) - (** (CicNotationPt.Binder (`Forall, (mk_id "_", - Some (mk_eq tys ts us es nargs)),*) - (mk_id "P"))), mk_id "P") - else mk_id "P") + (CicNotationPt.Binder (`Forall, (mk_id "_", + Some (mk_eq tys ts us es nargs)), + mk_id "P")))), mk_id "P") + else mk_id "P")) in let inner i ts = CicNotationPt.Case (mk_id "y",None, - (*Some (CicNotationPt.Binder (`Lambda, (mk_id "y",None), + Some (CicNotationPt.Binder (`Lambda, (mk_id "y",None), CicNotationPt.Binder (`Forall, (mk_id "_", Some (mk_appl [mk_id "eq";CicNotationPt.Implicit - `JustOne;(*CicNotationPt.Implicit `JustOne*) - mk_appl (mk_id (kname it i)::ts);mk_id "y"])), - CicNotationPt.Implicit `JustOne )))*) - None, + `JustOne;CicNotationPt.Implicit `JustOne;mk_id "y"])), + CicNotationPt.Implicit `JustOne ))), List.map (fun j -> let nargs_kty = nargs it nleft j in @@ -234,7 +223,9 @@ let mk_discriminator it ~use_jmeq nleft xyty status = in let outer = CicNotationPt.Case (mk_id "x",None, - None , + Some (CicNotationPt.Binder (`Lambda, (mk_id "_",None), + (*CicNotationPt.Sort (`NType "2")*) CicNotationPt.Implicit + `JustOne)) , List.map (fun i -> let nargs_kty = nargs it nleft i in @@ -247,8 +238,8 @@ let mk_discriminator it ~use_jmeq nleft xyty status = List.combine ts nones), inner i ts) (HExtlib.list_seq 0 (List.length cl))) in - let principle = CicNotationPt.Binder (`Lambda, (mk_id "x", Some xyty), - CicNotationPt.Binder (`Lambda, (mk_id "y", Some xyty), outer)) + let principle = CicNotationPt.Binder (`Lambda, (mk_id "x", Some (mk_id indname)), + CicNotationPt.Binder (`Lambda, (mk_id "y", Some (mk_id indname)), outer)) in pp (lazy ("discriminator = " ^ (CicNotationPp.pp_term principle))); @@ -271,136 +262,103 @@ let name_of_rel ~context rel = let discriminate_tac ~context cur_eq status = pp (lazy (Printf.sprintf "discriminate: equation %s" (name_of_rel ~context cur_eq))); - let dbranch it ~use_jmeq leftno consno = - let refl_id = mk_id (if use_jmeq then "refl_jmeq" else "refl") in - pp (lazy (Printf.sprintf "dbranch %d %d" leftno consno)); + let dbranch it leftno consno = + prerr_endline (Printf.sprintf "dbranch %d %d" leftno consno); let nlist = HExtlib.list_seq 0 (nargs it leftno consno) in (* (\forall ...\forall P.\forall DH : ( ... = ... -> P). P) *) - let params = List.map (fun x -> NTactics.intro_tac ("a" ^ string_of_int x)) nlist in + let params = List.map (fun x -> prerr_endline (Printf.sprintf "dbranch param a%d" x); NTactics.intro_tac ("a" ^ string_of_int x)) nlist in NTactics.reduce_tac ~reduction:(`Normalize true) ~where:default_pattern:: params @ [ NTactics.intro_tac "P"; NTactics.intro_tac "DH"; NTactics.apply_tac ("",0,mk_id "DH"); - NTactics.apply_tac ("",0,refl_id); (* well, it works even if no goal is selected after applying DH... *) + NTactics.apply_tac ("",0,mk_id "refl"); ] in - let dbranches it ~use_jmeq leftno = - pp (lazy (Printf.sprintf "dbranches %d" leftno)); + let dbranches it leftno = + prerr_endline (Printf.sprintf "dbranches %d" leftno); let _,_,_,cl = it in let nbranches = List.length cl in let branches = iter (fun n acc -> let m = nbranches - n - 1 in - if m = 0 then acc @ (dbranch it ~use_jmeq leftno m) - else acc @ NTactics.shift_tac :: (dbranch it ~use_jmeq - leftno m)) + if m = 0 then (prerr_endline "no shift"; acc @ (dbranch it leftno m)) + else (prerr_endline "sì shift"; acc @ NTactics.shift_tac :: (dbranch it + leftno m))) (nbranches-1) [] in if nbranches > 1 then - NTactics.branch_tac ~force:false:: branches @ [NTactics.merge_tac] - else branches + (prerr_endline "sì branch"; + NTactics.branch_tac:: branches @ [NTactics.merge_tac]) + else + (prerr_endline "no branch"; + branches) in let eq_name,(NCic.Decl s | NCic.Def (s,_)) = List.nth context (cur_eq-1) in let _,ctx' = HExtlib.split_nth cur_eq context in let status, s = NTacStatus.whd status ctx' (mk_cic_term ctx' s) in let status, s = term_of_cic_term status s ctx' in - let status, leftno, it, use_jmeq = - let it, t1, t2, use_jmeq = match s with - | NCic.Appl [_;it;t1;t2] -> it,t1,t2,false - | NCic.Appl [_;it;t1;_;t2] -> it,t1,t2,true + let status, leftno, it = + let it, t1, t2 = match s with + | NCic.Appl [_;it;t1;t2] -> it,t1,t2 | _ -> assert false in (* XXX: serve? ho già fatto whd *) let status, it = whd status ctx' (mk_cic_term ctx' it) in let status, it = term_of_cic_term status it ctx' in let _uri,indtyno,its = match it with - | NCic.Const (NReference.Ref (uri, NReference.Ind (_,indtyno,_)) as r) - | NCic.Appl (NCic.Const - (NReference.Ref (uri, NReference.Ind (_,indtyno,_)) as r)::_) -> + NCic.Const (NReference.Ref (uri, NReference.Ind (_,indtyno,_)) as r) -> uri, indtyno, NCicEnvironment.get_checked_indtys r - | _ -> pp (lazy ("discriminate: indty =" ^ NCicPp.ppterm - ~metasenv:[] ~subst:[] ~context:[] it)) ; assert false in + | _ -> prerr_endline ("discriminate: indty =" ^ NCicPp.ppterm + ~metasenv:[] ~subst:[] ~context:[] it) ; assert false in let _,leftno,its,_,_ = its in - status, leftno, List.nth its indtyno, use_jmeq + status, leftno, List.nth its indtyno in - - let itnargs = - let _,_,arity,_ = it in - List.length (arg_list 0 arity) in - let _,itname,_,_ = it in - let params = List.map (fun x -> "a" ^ string_of_int x) (HExtlib.list_seq 1 (itnargs+1)) in - let xyty = mk_appl (List.map mk_id (itname::params)) in - let print_tac s status = pp s ; status in + NTactics.block_tac ( [(fun status -> - let status, discr = mk_discriminator it ~use_jmeq leftno xyty status in - let cut_term = mk_prods params (CicNotationPt.Binder (`Forall, (mk_id "x", - Some xyty), - CicNotationPt.Binder (`Forall, (mk_id "y", Some xyty), - CicNotationPt.Binder (`Forall, (mk_id "e", + let status, discr = mk_discriminator it status in + NTactics.cut_tac ("",0, CicNotationPt.Binder (`Forall, (mk_id "x", None), + CicNotationPt.Binder (`Forall, (mk_id "y", None), + CicNotationPt.Binder (`Forall, (mk_id "e", Some (mk_appl [mk_id "eq";CicNotationPt.Implicit `JustOne; mk_id "x"; mk_id "y"])), - mk_appl [discr; mk_id "x"; mk_id "y"(*;mk_id "e"*)])))) in - let status = print_tac (lazy ("cut_term = "^ CicNotationPp.pp_term cut_term)) status in - NTactics.cut_tac ("",0, cut_term) + mk_appl [discr; mk_id "x"; mk_id "y"; + mk_id "e"])))) status); NTactics.branch_tac; - print_tac (lazy "ci sono"); - NTactics.reduce_tac ~reduction:(`Normalize true) ~where:default_pattern] - @ List.map (fun x -> NTactics.intro_tac x) params @ - [NTactics.intro_tac "x"; + NTactics.reduce_tac ~reduction:(`Normalize true) ~where:default_pattern; + NTactics.intro_tac "x"; NTactics.intro_tac "y"; NTactics.intro_tac "Deq"; - print_tac (lazy "ci sono 2"); NTactics.rewrite_tac ~dir:`RightToLeft ~what:("",0,mk_id "Deq") ~where:default_pattern; NTactics.cases_tac ~what:("",0,mk_id "x") ~where:default_pattern] - @ dbranches it ~use_jmeq leftno @ + @ dbranches it leftno @ [NTactics.shift_tac; - print_tac (lazy "ci sono 3"); NTactics.intro_tac "#discriminate"; - NTactics.apply_tac ("",0,mk_appl ([mk_id "#discriminate"]@ - HExtlib.mk_list (CicNotationPt.Implicit `JustOne) (List.length params + 2) @ - [mk_id eq_name ])); + NTactics.apply_tac ("",0,mk_appl [mk_id "#discriminate"; + CicNotationPt.Implicit `JustOne; + CicNotationPt.Implicit `JustOne; mk_id eq_name ]); NTactics.reduce_tac ~reduction:(`Normalize true) ~where:default_pattern; NTactics.clear_tac ["#discriminate"]; - NTactics.merge_tac; print_tac (lazy "the end of discriminate")] + NTactics.merge_tac] ) status ;; - -let saturate_skip status context skip = - HExtlib.list_uniq - (List.fold_left - (fun acc x -> - let ix = HExtlib.list_index ((=) x) (List.map fst context) - in match ix with - | None -> acc - | Some (i,_) -> - fst (cascade_select_in_ctx ~subst:(get_subst status) context [] (i+1)) @ acc) skip skip) -;; -let subst_tac ~context ~dir skip cur_eq = - fun status as oldstatus -> +let subst_tac ~context ~dir cur_eq = + fun status -> let eq_name,(NCic.Decl s | NCic.Def (s,_)) = List.nth context (cur_eq-1) in let _,ctx' = HExtlib.split_nth cur_eq context in let status, s = NTacStatus.whd status ctx' (mk_cic_term ctx' s) in let status, s = term_of_cic_term status s ctx' in - let skip = saturate_skip status context skip in pp (lazy (Printf.sprintf "subst: equation %s" eq_name)); let l, r = match s with - | NCic.Appl [_;_;t1;t2] | NCic.Appl [_;_;t1;_;t2] -> t1,t2 + | NCic.Appl [_;_;t1;t2] -> t1,t2 | _ -> assert false in let var = match dir with | `LeftToRight -> l | `RightToLeft -> r in - (* let var = match var with + let var = match var with | NCic.Rel i -> i - | _ -> assert false in *) + | _ -> assert false in let names_to_gen, _ = - match var with - | NCic.Rel var -> - cascade_select_in_ctx ~subst:(get_subst status) context skip (var+cur_eq) - | _ -> cascade_select_in_ctx ~subst:(get_subst status) context skip cur_eq in - let names_to_gen = List.filter (fun n -> n <> eq_name) names_to_gen in - if (List.exists (fun x -> List.mem x skip) names_to_gen) - then oldstatus - else + cascade_select_in_ctx ~subst:(get_subst status) context (var+cur_eq) in let gen_tac x = NTactics.generalize_tac ~where:("",0,(Some (mk_id x),[], Some CicNotationPt.UserInput)) in @@ -410,110 +368,16 @@ let subst_tac ~context ~dir skip cur_eq = ~what:("",0,mk_id eq_name) ~where:default_pattern; NTactics.reduce_tac ~reduction:(`Normalize true) ~where:default_pattern; - NTactics.try_tac (NTactics.clear_tac [eq_name])]@ + NTactics.clear_tac [eq_name]]@ (List.map NTactics.intro_tac (List.rev names_to_gen))) status ;; -let clearid_tac ~context skip cur_eq = - fun status -> - let eq_name,(NCic.Decl s | NCic.Def (s,_)) = List.nth context (cur_eq-1) in - let _,ctx' = HExtlib.split_nth cur_eq context in - let status, s = NTacStatus.whd status ctx' (mk_cic_term ctx' s) in - let status, s = term_of_cic_term status s ctx' in - let skip = saturate_skip status context skip in - (* - let streicher_id = - match s with - | NCic.Appl [_;_;_;_] -> mk_id "streicherK" - | NCic.Appl [_;_;_;_;_] -> mk_id "streicherKjmeq" - | _ -> assert false - in - pp (lazy (Printf.sprintf "clearid: equation %s" eq_name)); - let names_to_gen, _ = - cascade_select_in_ctx ~subst:(get_subst status) context cur_eq in - let names_to_gen = names_to_gen @ [eq_name] in - let gen_tac x = - NTactics.generalize_tac - ~where:("",0,(Some (mk_id x),[], Some CicNotationPt.UserInput)) in - NTactics.block_tac ((List.map gen_tac names_to_gen)@ - [NTactics.clear_tac names_to_gen; - NTactics.apply_tac ("",0, mk_appl [streicher_id; - CicNotationPt.Implicit `JustOne; - CicNotationPt.Implicit `JustOne; - CicNotationPt.Implicit `JustOne; - CicNotationPt.Implicit `JustOne]); - NTactics.reduce_tac ~reduction:(`Normalize true) - ~where:default_pattern] @ - (let names_to_intro = - match List.rev names_to_gen with - | [] -> [] - | _::tl -> tl in - List.map NTactics.intro_tac names_to_intro)) status -*) - - pp (lazy (Printf.sprintf "clearid: equation %s" eq_name)); - match s with - | NCic.Appl [_;_;_;_] -> - (* leibniz *) - let streicher_id = mk_id "streicherK" - in - let names_to_gen, _ = - cascade_select_in_ctx ~subst:(get_subst status) context skip cur_eq in - let names_to_gen = names_to_gen @ [eq_name] in - let gen_tac x = - NTactics.generalize_tac - ~where:("",0,(Some (mk_id x),[], Some CicNotationPt.UserInput)) in - NTactics.block_tac ((List.map gen_tac names_to_gen)@ - [NTactics.clear_tac names_to_gen; - NTactics.apply_tac ("",0, mk_appl [streicher_id; - CicNotationPt.Implicit `JustOne; - CicNotationPt.Implicit `JustOne; - CicNotationPt.Implicit `JustOne; - CicNotationPt.Implicit `JustOne]); - NTactics.reduce_tac ~reduction:(`Normalize true) - ~where:default_pattern] @ - (let names_to_intro = - match List.rev names_to_gen with - | [] -> [] - | _::tl -> tl in - List.map NTactics.intro_tac names_to_intro)) status - | NCic.Appl [_;_;_;_;_] -> - (* JMeq *) - let streicher_id = mk_id "streicherK" - in - let names_to_gen, _ = - cascade_select_in_ctx ~subst:(get_subst status) context skip cur_eq in - let names_to_gen = names_to_gen (* @ [eq_name]*) in - let gen_tac x = - NTactics.generalize_tac - ~where:("",0,(Some (mk_id x),[], Some CicNotationPt.UserInput)) in - let gen_eq = NTactics.generalize_tac - ~where:("",0,(Some (mk_appl [mk_id "jmeq_to_eq"; - CicNotationPt.Implicit `JustOne; - CicNotationPt.Implicit `JustOne; - CicNotationPt.Implicit `JustOne; - mk_id eq_name]),[], Some CicNotationPt.UserInput)) in - NTactics.block_tac ((List.map gen_tac names_to_gen)@gen_eq:: - [NTactics.clear_tac names_to_gen; - NTactics.try_tac (NTactics.clear_tac [eq_name]); - NTactics.apply_tac ("",0, mk_appl [streicher_id; - CicNotationPt.Implicit `JustOne; - CicNotationPt.Implicit `JustOne; - CicNotationPt.Implicit `JustOne; - CicNotationPt.Implicit `JustOne]); - NTactics.reduce_tac ~reduction:(`Normalize true) - ~where:default_pattern] @ - (let names_to_intro = List.rev names_to_gen in - List.map NTactics.intro_tac names_to_intro)) status - | _ -> assert false -;; - let get_ctx st goal = ctx_of (get_goalty st goal) ;; (* = select + classify *) -let select_eq ctx acc domain status goal = +let select_eq ctx acc status goal = let classify ~subst ctx' l r = (* FIXME: metasenv *) if NCicReduction.are_convertible ~metasenv:[] ~subst ctx' l r @@ -526,51 +390,45 @@ let select_eq ctx acc domain status goal = let rit = NReference.mk_indty true kref in let _,_,its,_,itno = NCicEnvironment.get_checked_indtys rit in let it = List.nth its itno in - let newprods = nargs it nleft (ki-1) in + let newprods = (nargs it nleft (ki-1)) + 1 in `Discriminate (newprods, false) | NCic.Rel j, _ - when NCicTypeChecker.does_not_occur ~subst ctx' (j-1) j r - && l = NCic.Rel j -> `Subst `LeftToRight + when NCicTypeChecker.does_not_occur ~subst ctx' (j-1) j r -> + `Subst `LeftToRight | _, NCic.Rel j - when NCicTypeChecker.does_not_occur ~subst ctx' (j-1) j l - && r = NCic.Rel j -> `Subst `RightToLeft - | (NCic.Rel _, _ | _, NCic.Rel _ ) -> `Cycle (* could be a blob too... *) + when NCicTypeChecker.does_not_occur ~subst ctx' (j-1) j l -> + `Subst `RightToLeft + | (NCic.Rel _, _ | _, NCic.Rel _ ) -> `Cycle | _ -> `Blob) in let rec aux i = try let index = List.length ctx - i in - pp (lazy ("provo classify di index = " ^string_of_int index)); match (List.nth ctx (index - 1)) with | n, (NCic.Decl ty | NCic.Def (ty,_)) -> (let _,ctx_ty = HExtlib.split_nth index ctx in let status, ty = NTacStatus.whd status ctx_ty (mk_cic_term ctx_ty ty) in let status, ty = term_of_cic_term status ty ctx_ty in pp (lazy (Printf.sprintf "select_eq tries %s" (NCicPp.ppterm ~context:ctx_ty ~subst:[] ~metasenv:[] ty))); - let status, kind = match ty with - | NCic.Appl [NCic.Const (NReference.Ref (u,_)) ;_;l;r] - when NUri.name_of_uri u = "eq" -> - classify ~subst:(get_subst status) ctx_ty l r - | NCic.Appl [NCic.Const (NReference.Ref (u,_)) ;lty;l;rty;r] - when NUri.name_of_uri u = "jmeq" && - NCicReduction.are_convertible ~metasenv:[] - ~subst:(get_subst status) ctx_ty lty rty - -> classify ~subst:(get_subst status) ctx_ty l r - | _ -> status, `NonEq - in match kind with - | `Identity -> - let status, goalty = term_of_cic_term status (get_goalty status goal) ctx in - status, Some (List.length ctx - i), kind - | `Cycle | `Blob | `NonEq -> aux (i+1) (* XXX: skip cyclic/blob equations for now *) - | _ -> - if (List.for_all (fun x -> x <> n) acc) && - (List.exists (fun x -> x = n) domain) - then status, Some (List.length ctx - i), kind - else aux (i+1)) + match ty with + | NCic.Appl [NCic.Const (NReference.Ref (u,_)) ;_;l;r] when NUri.name_of_uri u = "eq" -> + (let status, kind = classify ~subst:(get_subst status) ctx_ty l r in + match kind with + | `Identity -> + let status, goalty = term_of_cic_term status (get_goalty status goal) ctx in + if NCicTypeChecker.does_not_occur ~subst:(get_subst status) ctx (index - 1) index goalty + then status, Some (List.length ctx - i), kind + else aux (i+1) + | `Cycle | `Blob -> aux (i+1) (* XXX: skip cyclic/blob equations for now *) + | _ -> + if (List.for_all (fun x -> x <> n) acc) then + status, Some (List.length ctx - i), kind + else aux (i+1)) + | _ -> aux (i+1)) with Failure _ | Invalid_argument _ -> status, None, `Blob in aux 0 ;; -let rec destruct_tac0 nprods acc domain skip status goal = +let rec destruct_tac0 nprods acc status goal = let ctx = get_ctx status goal in let subst = get_subst status in let get_newgoal os ns ogoal = @@ -578,71 +436,39 @@ let rec destruct_tac0 nprods acc domain skip status goal = let go' = ([ogoal] @- gc) @+ go in match go' with [] -> assert false | g::_ -> g in - let status, selection, kind = select_eq ctx acc domain status goal in + let status, selection, kind = select_eq ctx acc status goal in pp (lazy ("destruct: acc is " ^ String.concat "," acc )); match selection, kind with | None, _ -> pp (lazy (Printf.sprintf "destruct: nprods is %d, no selection, context is %s" nprods (NCicPp.ppcontext ~metasenv:[] ~subst ctx))); - if nprods > 0 then - let fresh = mk_fresh_name ctx 'e' 0 in - let status' = NTactics.exec (NTactics.intro_tac fresh) status goal in - destruct_tac0 (nprods-1) acc (fresh::domain) skip status' (get_newgoal status status' goal) + if nprods > 0 then + let status' = NTactics.exec (NTactics.intro_tac (mk_fresh_name ctx 'e' 0)) status goal in + destruct_tac0 (nprods-1) acc status' (get_newgoal status status' goal) else status | Some cur_eq, `Discriminate (newprods,conflict) -> pp (lazy (Printf.sprintf "destruct: discriminate - nprods is %d, selection is %d, context is %s" nprods cur_eq (NCicPp.ppcontext ~metasenv:[] ~subst ctx))); let status' = NTactics.exec (discriminate_tac ~context:ctx cur_eq) status goal in if conflict then status' - else - destruct_tac0 (nprods+newprods) - (name_of_rel ~context:ctx cur_eq::acc) - (List.filter (fun x -> x <> name_of_rel ~context:ctx cur_eq) domain) - skip - status' (get_newgoal status status' goal) + else destruct_tac0 (nprods+newprods) + (name_of_rel ~context:ctx cur_eq::acc) status' (get_newgoal status status' goal) | Some cur_eq, `Subst dir -> pp (lazy (Printf.sprintf "destruct: subst - nprods is %d, selection is %d, context is %s" nprods cur_eq (NCicPp.ppcontext ~metasenv:[] ~subst ctx))); - let status' = NTactics.exec (subst_tac ~context:ctx ~dir skip cur_eq) status goal in + let status' = NTactics.exec (subst_tac ~context:ctx ~dir cur_eq) status goal in pp (lazy (Printf.sprintf " ctx after subst = %s" (NCicPp.ppcontext ~metasenv:[] ~subst (get_ctx status' (get_newgoal status status' goal))))); let eq_name,_ = List.nth ctx (cur_eq-1) in - let newgoal = get_newgoal status status' goal in - let has_cleared = - try - let _ = NTactics.find_in_context eq_name (get_ctx status' newgoal) in false - with _ -> true in - let rm_eq b l = if b then List.filter (fun x -> x <> eq_name) l else l in - let acc = rm_eq has_cleared acc in - let skip = rm_eq has_cleared skip in - let domain = rm_eq has_cleared domain in - destruct_tac0 nprods acc domain skip status' newgoal - | Some cur_eq, `Identity -> + destruct_tac0 nprods (List.filter (fun x -> x <> eq_name) acc) status' (get_newgoal status status' goal) + | Some cur_eq, `Identity -> pp (lazy (Printf.sprintf "destruct: identity - nprods is %d, selection is %d, context is %s" nprods cur_eq (NCicPp.ppcontext ~metasenv:[] ~subst ctx))); let eq_name,_ = List.nth ctx (cur_eq-1) in - let status' = NTactics.exec (clearid_tac ~context:ctx skip cur_eq) status goal in - let newgoal = get_newgoal status status' goal in - let has_cleared = - try - let _ = NTactics.find_in_context eq_name (get_ctx status' newgoal) in false - with _ -> true in - let rm_eq b l = if b then List.filter (fun x -> x <> eq_name) l else l in - let acc = rm_eq has_cleared acc in - let skip = rm_eq has_cleared skip in - let domain = rm_eq has_cleared domain in - destruct_tac0 nprods acc domain skip status' newgoal + let status' = NTactics.exec (NTactics.clear_tac [eq_name]) status goal in + destruct_tac0 nprods (List.filter (fun x -> x <> eq_name) acc) status' (get_newgoal status status' goal) | Some cur_eq, `Cycle -> (* TODO, should never happen *) pp (lazy (Printf.sprintf "destruct: cycle - nprods is %d, selection is %d, context is %s" nprods cur_eq (NCicPp.ppcontext ~metasenv:[] ~subst ctx))); assert false | Some cur_eq, `Blob -> pp (lazy (Printf.sprintf "destruct: blob - nprods is %d, selection is %d, context is %s" nprods cur_eq (NCicPp.ppcontext ~metasenv:[] ~subst ctx))); assert false - | _ -> assert false ;; -let destruct_tac dom skip s = - NTactics.distribute_tac - (fun s' g -> - let ctx = get_ctx s' g in - let domain = match dom with - | None -> List.map (fun (n,_) -> n) ctx - | Some l -> l - in - destruct_tac0 0 [] domain skip s' g) s;; +let destruct_tac s = NTactics.distribute_tac (destruct_tac0 0 []) s;; diff --git a/helm/software/components/ng_tactics/nDestructTac.mli b/helm/software/components/ng_tactics/nDestructTac.mli index 714638d24..a51886511 100644 --- a/helm/software/components/ng_tactics/nDestructTac.mli +++ b/helm/software/components/ng_tactics/nDestructTac.mli @@ -11,5 +11,4 @@ (* $Id: nCic.ml 9058 2008-10-13 17:42:30Z tassi $ *) -val destruct_tac : string list option -> string list -> 's NTacStatus.tactic - +val destruct_tac : 's NTacStatus.tactic diff --git a/helm/software/components/ng_tactics/nInversion.ml b/helm/software/components/ng_tactics/nInversion.ml index aebda4bce..627885cb7 100644 --- a/helm/software/components/ng_tactics/nInversion.ml +++ b/helm/software/components/ng_tactics/nInversion.ml @@ -11,8 +11,8 @@ (* $Id: nCic.ml 9058 2008-10-13 17:42:30Z tassi $ *) -(*let pp m = prerr_endline (Lazy.force m);;*) -let pp _ = ();; +let pp m = prerr_endline (Lazy.force m);; +(* let pp _ = ();; *) let fresh_name = let i = ref 0 in @@ -46,13 +46,19 @@ let rec mk_prods l t = | hd::tl -> CicNotationPt.Binder (`Forall, (mk_id hd, None), mk_prods tl t) ;; -let rec mk_arrows ?(pattern=false) xs ys selection target = +let rec mk_lambdas l t = + match l with + [] -> t + | hd::tl -> CicNotationPt.Binder (`Lambda, (mk_id hd, None), mk_lambdas tl t) +;; + +let rec mk_arrows xs ys selection target = match selection,xs,ys with [],[],[] -> target - | false :: l,x::xs,y::ys -> mk_arrows ~pattern xs ys l target + | false :: l,x::xs,y::ys -> mk_arrows xs ys l target | true :: l,x::xs,y::ys -> - CicNotationPt.Binder (`Forall, (mk_id "_", Some (mk_appl [if pattern then CicNotationPt.Implicit `JustOne else mk_id "eq" ; CicNotationPt.Implicit `JustOne;x;y])), - mk_arrows ~pattern xs ys l target) + CicNotationPt.Binder (`Forall, (mk_id "_", Some (mk_appl [mk_id "eq" ; CicNotationPt.Implicit `JustOne;x;y])), + mk_arrows xs ys l target) | _ -> raise (Invalid_argument "ninverter: the selection doesn't match the arity of the specified inductive type") ;; @@ -65,30 +71,29 @@ let subst_metasenv_and_fix_names status = status#set_obj(u,h,NCicUntrusted.apply_subst_metasenv subst metasenv,subst,o) ;; -let mk_inverter name is_ind it leftno ?selection outsort status baseuri = +let mk_inverter name it leftno ?selection outsort status baseuri = pp (lazy ("leftno = " ^ string_of_int leftno)); let _,ind_name,ty,cl = it in pp (lazy ("arity: " ^ NCicPp.ppterm ~metasenv:[] ~subst:[] ~context:[] ty)); let ncons = List.length cl in - (**)let params,ty = NCicReduction.split_prods ~subst:[] [] leftno ty in + (*let params,ty = NCicReduction.split_prods ~subst:[] [] leftno ty in let params = List.rev_map (function name,_ -> mk_id name) params in - pp (lazy ("lunghezza params = " ^ string_of_int (List.length params)));(**) + pp (lazy ("lunghezza params = " ^ string_of_int (List.length params)));*) let args,sort= split_arity ~subst:[] [] ty in pp (lazy ("arity sort: " ^ NCicPp.ppterm ~metasenv:[] ~subst:[] ~context:args sort)); - (**)let args = List.rev_map (function name,_ -> mk_id name) args in - pp (lazy ("lunghezza args = " ^ string_of_int (List.length args)));(**) + (*let args = List.rev_map (function name,_ -> mk_id name) args in + pp (lazy ("lunghezza args = " ^ string_of_int (List.length args)));*) let nparams = List.length args in - pp (lazy ("nparams = " ^ string_of_int nparams)); - if nparams = 0 + if nparams <= leftno then raise (Failure "inverter: the type must have at least one right parameter") else - let xs = List.map (fun n -> "x" ^ (string_of_int n)) (HExtlib.list_seq 1 (leftno+nparams+1)) in + let xs = List.map (fun n -> "x" ^ (string_of_int n)) (HExtlib.list_seq 1 (nparams+1)) in pp (lazy ("lunghezza xs = " ^ string_of_int (List.length xs))); let ls, rs = HExtlib.split_nth leftno xs in pp (lazy ("lunghezza ls = " ^ string_of_int (List.length ls))); pp (lazy ("lunghezza rs = " ^ string_of_int (List.length rs))); - let ys = List.map (fun n -> "y" ^ (string_of_int n)) (HExtlib.list_seq (leftno+1) (leftno+nparams+1)) in + let ys = List.map (fun n -> "y" ^ (string_of_int n)) (HExtlib.list_seq (leftno+1) (nparams+1)) in let _id_xs = List.map mk_id xs in let id_ls = List.map mk_id ls in @@ -107,6 +112,8 @@ let mk_inverter name is_ind it leftno ?selection outsort status baseuri = in let prods = mk_arrows id_rs id_ys selection pred in + let lambdas = mk_lambdas (ys@["p"]) prods in + let hyplist = let rec hypaux k = function 0 -> [] @@ -116,18 +123,19 @@ let mk_inverter name is_ind it leftno ?selection outsort status baseuri = pp (lazy ("lunghezza ys = " ^ string_of_int (List.length ys))); let outsort, suffix = NCicElim.ast_of_sort outsort in - let theorem = - mk_prods xs - (CicNotationPt.Binder (`Forall, (mk_id "P", Some (mk_prods (HExtlib.mk_list "_" (List.length ys)) (CicNotationPt.Sort outsort))), - mk_prods hyplist (CicNotationPt.Binder (`Forall, (mk_id "Hterm", Some (mk_appl (List.map mk_id (ind_name::xs)))), mk_appl (mk_id "P"::id_rs))))) - in - let status, theorem = - GrafiteDisambiguate.disambiguate_nobj status ~baseuri - (baseuri ^ name ^ ".def",0, - CicNotationPt.Theorem - (`Theorem,name,theorem, - Some (CicNotationPt.Implicit (`Tagged "inv")),`InversionPrinciple)) + let theorem = mk_prods xs + (CicNotationPt.Binder (`Forall, (mk_id "P", Some (mk_prods (HExtlib.mk_list "_" (List.length ys)) (CicNotationPt.Sort outsort))), + mk_prods hyplist (CicNotationPt.Binder (`Forall, (mk_id "Hterm", (*Some (mk_appl (List.map mk_id (ind_name::xs)))) *) + Some (CicNotationPt.Implicit `JustOne)), + mk_appl (mk_id "P"::id_rs))))) in + let t = mk_appl ( [mk_id (ind_name ^ "_" ^ suffix)]@ id_ls @ [lambdas] @ + List.map mk_id hyplist @ + CicNotationPt.Implicit `Vector::[mk_id "Hterm"] ) in + let status, theorem = GrafiteDisambiguate.disambiguate_nobj status ~baseuri + (baseuri ^ name ^ ".def", + 0,CicNotationPt.Theorem (`Theorem,name,theorem,Some + (CicNotationPt.Implicit (`Tagged "inv")),`InversionPrinciple)) in let uri,height,nmenv,nsubst,nobj = theorem in let ninitial_stack = Continuationals.Stack.of_nmetasenv nmenv in let status = status#set_obj theorem in @@ -139,37 +147,24 @@ let mk_inverter name is_ind it leftno ?selection outsort status baseuri = mk_arrows rs rs selection (mk_appl (mk_id "P"::rs)) in let cut = mk_appl [CicNotationPt.Binder (`Lambda, (mk_id "Hcut", Some cut_theorem), - -CicNotationPt.Implicit (`Tagged "end")); + CicNotationPt.Implicit (`Tagged "end")); CicNotationPt.Implicit (`Tagged "cut")] in let intros = List.map (fun x -> pp (lazy x); NTactics.intro_tac x) (xs@["P"]@hyplist@["Hterm"]) in - let where = - "",0,(None,[], - Some ( - mk_arrows ~pattern:true - (HExtlib.mk_list (CicNotationPt.Implicit `JustOne) (List.length ys)) - (HExtlib.mk_list CicNotationPt.UserInput (List.length ys)) - selection CicNotationPt.UserInput)) in - let elim_tac = if is_ind then NTactics.elim_tac else NTactics.cases_tac in - let status = - NTactics.block_tac - (NTactics.branch_tac :: - NTactics.case_tac "inv" :: - (intros @ - [NTactics.apply_tac ("",0,cut); - NTactics.branch_tac; - NTactics.case_tac "end"; - NTactics.apply_tac ("",0,mk_id "Hcut"); - NTactics.apply_tac ("",0,mk_id "refl"); - NTactics.shift_tac; - elim_tac ~what:("",0,mk_id "Hterm") ~where; - NTactics.branch_tac ~force:true] @ - HExtlib.list_concat ~sep:[NTactics.shift_tac] - (List.map (fun id-> [NTactics.apply_tac ("",0,mk_id id)]) hyplist) @ - [NTactics.merge_tac; - NTactics.merge_tac; - NTactics.merge_tac; - NTactics.skip_tac])) status in + let status = NTactics.block_tac + (NTactics.branch_tac :: + NTactics.case_tac "inv" :: + (intros @ + [NTactics.apply_tac ("",0,cut); + NTactics.branch_tac; + NTactics.case_tac "end"; + NTactics.apply_tac ("",0,mk_id "Hcut"); + NTactics.apply_tac ("",0,mk_id "refl_eq"); + NTactics.shift_tac; + (*NTactics.case_tac "cut";*) + NTactics.apply_tac ("",0,t); + NTactics.merge_tac; + NTactics.merge_tac; + NTactics.skip_tac])) status in pp (lazy "inv 3"); status,status#obj ;; diff --git a/helm/software/components/ng_tactics/nInversion.mli b/helm/software/components/ng_tactics/nInversion.mli index 14d33eb1e..b5ca8597d 100644 --- a/helm/software/components/ng_tactics/nInversion.mli +++ b/helm/software/components/ng_tactics/nInversion.mli @@ -11,7 +11,6 @@ (* $Id: nCic.ml 9058 2008-10-13 17:42:30Z tassi $ *) -val mk_inverter: - string -> bool -> NCic.inductiveType -> int -> ?selection:bool list -> +val mk_inverter: string -> NCic.inductiveType -> int -> ?selection:bool list -> NCic.sort -> (#NTacStatus.tac_status as 's) -> string -> - 's * NCic.obj + 's * NCic.obj diff --git a/helm/software/components/ng_tactics/nTacStatus.ml b/helm/software/components/ng_tactics/nTacStatus.ml index e7d5bb3b5..b58eb5558 100644 --- a/helm/software/components/ng_tactics/nTacStatus.ml +++ b/helm/software/components/ng_tactics/nTacStatus.ml @@ -31,29 +31,20 @@ let wrap fname f x = | NCicMetaSubst.MetaSubstFailure _ as exn -> fail ~exn (lazy fname) ;; -class type g_pstatus = - object - inherit NEstatus.g_status - method obj: NCic.obj - end - class pstatus = fun (o: NCic.obj) -> - object (self) + object inherit NEstatus.status val obj = o method obj = obj method set_obj o = {< obj = o >} - method set_pstatus : 'status. #g_pstatus as 'status -> 'self - = fun o -> (self#set_estatus o)#set_obj o#obj end type tactic_term = CicNotationPt.term Disambiguate.disambiguator_input type tactic_pattern = GrafiteAst.npattern Disambiguate.disambiguator_input -let pp_tac_status status = - prerr_endline (NCicPp.ppobj status#obj); - prerr_endline ("STACK:\n" ^ Continuationals.Stack.pp status#stack) +let pp_status status = + pp (lazy (NCicPp.ppobj status#obj)) ;; type cic_term = NCic.context * NCic.term @@ -249,15 +240,11 @@ let to_subst status i entry = status#set_obj (name,height,metasenv,subst,obj) ;; -let instantiate status ?refine:(dorefine=true) i t = +let instantiate status i t = let _,_,metasenv,_,_ = status#obj in let gname, context, gty = List.assoc i metasenv in - if dorefine then - let status, (_,t), (_,ty) = refine status context t (Some (context,gty)) in - to_subst status i (gname,context,t,ty) - else - let status,(_,ty) = typeof status context t in - to_subst status i (gname,context,snd t,ty) + let status, (_,t), (_,ty) = refine status context t (Some (context,gty)) in + to_subst status i (gname,context,t,ty) ;; let instantiate_with_ast status i t = @@ -414,7 +401,7 @@ let analyse_indty status ty = | _,NCic.Const ref -> ref, [] | _,NCic.Appl (NCic.Const (NRef.Ref (_,(NRef.Ind _)) as ref) :: args) -> ref, args - | _,_ -> fail (lazy ("not an inductive type: " ^ ppterm status ty)) in + | _,_ -> fail (lazy ("not an inductive type")) in let _,lno,tl,_,i = NCicEnvironment.get_checked_indtys ref in let _,_,_,cl = List.nth tl i in let consno = List.length cl in @@ -428,11 +415,6 @@ let apply_subst status ctx t = status, (ctx, NCicUntrusted.apply_subst subst ctx t) ;; -let apply_subst_context status ~fix_projections ctx = - let _,_,_,subst,_ = status#obj in - NCicUntrusted.apply_subst_context ~fix_projections subst ctx -;; - let metas_of_term status (context,t) = let _,_,_,subst,_ = status#obj in NCicUntrusted.metas_of_term subst context t @@ -440,21 +422,13 @@ let metas_of_term status (context,t) = (* ============= move this elsewhere ====================*) -class type ['stack] g_status = - object - inherit g_pstatus - method stack: 'stack - end - class ['stack] status = fun (o: NCic.obj) (s: 'stack) -> - object (self) + object inherit (pstatus o) val stack = s method stack = stack method set_stack s = {< stack = s >} - method set_status : 'status. 'stack #g_status as 'status -> 'self - = fun o -> (self#set_pstatus o)#set_stack o#stack end class type lowtac_status = [unit] status diff --git a/helm/software/components/ng_tactics/nTacStatus.mli b/helm/software/components/ng_tactics/nTacStatus.mli index 416306c02..bf2370ec9 100644 --- a/helm/software/components/ng_tactics/nTacStatus.mli +++ b/helm/software/components/ng_tactics/nTacStatus.mli @@ -14,19 +14,12 @@ exception Error of string lazy_t * exn option val fail: ?exn:exn -> string lazy_t -> 'a -class type g_pstatus = - object - inherit NEstatus.g_status - method obj: NCic.obj - end - class pstatus : NCic.obj -> object ('self) inherit NEstatus.status method obj: NCic.obj method set_obj: NCic.obj -> 'self - method set_pstatus: #g_pstatus -> 'self end type tactic_term = CicNotationPt.term Disambiguate.disambiguator_input @@ -63,8 +56,6 @@ val refine: 'status * cic_term * cic_term (* status, term, type *) val apply_subst: #pstatus as 'status -> NCic.context -> cic_term -> 'status * cic_term -val apply_subst_context : - #pstatus -> fix_projections:bool -> NCic.context -> NCic.context val fix_sorts: #pstatus as 'status -> cic_term -> 'status * cic_term val saturate : #pstatus as 'status -> ?delta:int -> cic_term -> 'status * cic_term * cic_term list @@ -76,10 +67,7 @@ val mk_meta: #pstatus as 'status -> ?attrs:NCic.meta_attrs -> NCic.context -> [ `Decl of cic_term | `Def of cic_term ] -> NCicUntrusted.meta_kind -> 'status * cic_term - -(* default value for refine: true; you can use false if the term has already been refined with - the expected type for the meta (e.g. after a reduction tactic) *) -val instantiate: #pstatus as 'status -> ?refine:bool -> int -> cic_term -> 'status +val instantiate: #pstatus as 'status -> int -> cic_term -> 'status val instantiate_with_ast: #pstatus as 'status -> int -> tactic_term -> 'status val select_term: @@ -93,11 +81,7 @@ val mk_in_scope: #pstatus as 'status -> cic_term -> 'status * cic_term val mk_out_scope: int -> (#pstatus as 'status) -> cic_term -> 'status * cic_term -class type ['stack] g_status = - object - inherit g_pstatus - method stack: 'stack - end +val pp_status: #pstatus -> unit class ['stack] status : NCic.obj -> 'stack -> @@ -105,7 +89,6 @@ class ['stack] status : inherit pstatus method stack: 'stack method set_stack: 'stack -> 'self - method set_status: 'stack #g_status -> 'self end class type lowtac_status = [unit] status @@ -114,8 +97,6 @@ type 'status lowtactic = #lowtac_status as 'status -> int -> 'status class type tac_status = [Continuationals.Stack.t] status -val pp_tac_status: #tac_status -> unit - type 'status tactic = #tac_status as 'status -> 'status (* indexing facilities over cic_term based on inverse De Bruijn indexes *) diff --git a/helm/software/components/ng_tactics/nTactics.ml b/helm/software/components/ng_tactics/nTactics.ml index 93d8c965c..10fa168d4 100644 --- a/helm/software/components/ng_tactics/nTactics.ml +++ b/helm/software/components/ng_tactics/nTactics.ml @@ -22,7 +22,7 @@ module Ast = CicNotationPt let id_tac status = status ;; let print_tac print_status message status = - if print_status then pp_tac_status status; + if print_status then pp_status status; prerr_endline message; status ;; @@ -46,14 +46,13 @@ let dot_tac status = status#set_stack gstatus ;; -let branch_tac ?(force=false) status = +let branch_tac status = let gstatus = match status#stack with | [] -> assert false | (g, t, k, tag) :: s -> match init_pos g with (* TODO *) - | [] -> fail (lazy "empty goals") - | [_] when (not force) -> fail (lazy "too few goals to branch") + | [] | [ _ ] -> fail (lazy "too few goals to branch") | loc :: loc_tl -> ([ loc ], [], [], `BranchTag) :: (loc_tl, t, k, tag) :: s in @@ -261,13 +260,10 @@ let repeat_tac t s = let try_tac tac status = - let try_tac status = try tac status with NTacStatus.Error _ -> status - in - atomic_tac try_tac status ;; let first_tac tacl status = @@ -374,7 +370,7 @@ let select0_tac ~where:(wanted,hyps,where) ~job = let status, instance = mk_meta status newgoalctx (`Decl newgoalty) `IsTerm in - instantiate ~refine:false status goal instance) + instantiate status goal instance) ;; let select_tac ~where ~job move_down_hyps = @@ -423,12 +419,12 @@ let generalize_tac ~where = ;; let cut_tac t = - atomic_tac (block_tac [ + block_tac [ exact_tac ("",0, Ast.Appl [Ast.Implicit `JustOne; Ast.Implicit `JustOne]); branch_tac; pos_tac [3]; exact_tac t; shift_tac; pos_tac [2]; skip_tac; - merge_tac ]) + merge_tac ] ;; let lapply_tac (s,n,t) = @@ -476,6 +472,8 @@ type indtyinfo = { rightno: int; leftno: int; consno: int; + lefts: NCic.term list; + rights: NCic.term list; reference: NReference.reference; } ;; @@ -483,7 +481,7 @@ type indtyinfo = { let ref_of_indtyinfo iti = iti.reference;; let analyze_indty_tac ~what indtyref = - distribute_tac (fun (status as orig_status) goal -> + distribute_tac (fun status goal -> let goalty = get_goalty status goal in let status, what = disambiguate status (ctx_of goalty) what None in let status, ty_what = typeof status (ctx_of what) what in @@ -491,9 +489,10 @@ let analyze_indty_tac ~what indtyref = let leftno = List.length lefts in let rightno = List.length rights in indtyref := Some { - rightno = rightno; leftno = leftno; consno = consno; reference = r; + rightno = rightno; leftno = leftno; consno = consno; + lefts = lefts; rights = rights; reference = r; }; - exec id_tac orig_status goal) + exec id_tac status goal) ;; let sort_of_goal_tac sortref = distribute_tac (fun status goal -> @@ -540,9 +539,8 @@ let rewrite_tac ~dir ~what:(_,_,what) ~where status = `LeftToRight -> "eq" ^ suffix ^ "_r" | `RightToLeft -> "eq" ^ suffix in - let what = Ast.Appl [what; Ast.Implicit `Vector] in block_tac - [ select_tac ~where ~job:(`Substexpand 2) true; + [ select_tac ~where ~job:(`Substexpand 1) true; exact_tac ("",0, Ast.Appl(Ast.Ident(name,None)::HExtlib.mk_list (Ast.Implicit `JustOne) 5@ @@ -557,25 +555,6 @@ let intro_tac name = if name = "_" then clear_tac [name] else id_tac ] ;; -let name_counter = ref 0;; -let intros_tac ?names_ref names s = - let names_ref, prefix = - match names_ref with | None -> ref [], "__" | Some r -> r, "H" - in - if names = [] then - repeat_tac - (fun s -> - incr name_counter; - (* TODO: generate better names *) - let name = prefix ^ string_of_int !name_counter in - let s = intro_tac name s in - names_ref := !names_ref @ [name]; - s) - s - else - block_tac (List.map intro_tac names) s -;; - let cases ~what status goal = let gty = get_goalty status goal in let status, what = disambiguate status (ctx_of gty) what None in @@ -665,33 +644,10 @@ let assert_tac seqs status = | [seq] -> assert0_tac seq | _ -> block_tac - ((branch_tac ~force:false):: + (branch_tac:: HExtlib.list_concat ~sep:[shift_tac] (List.map (fun seq -> [assert0_tac seq]) seqs)@ [merge_tac]) ) status ;; -let inversion_tac ~what:(txt,len,what) ~where = - let what = txt, len, Ast.Appl [what; Ast.Implicit `Vector] in - let indtyinfo = ref None in - let sort = ref (NCic.Rel 1) in - atomic_tac (block_tac [ - analyze_indty_tac ~what indtyinfo; - (fun s -> select_tac - ~where ~job:(`Substexpand ((HExtlib.unopt !indtyinfo).rightno+1)) true s); - sort_of_goal_tac sort; - (fun status -> - let ity = HExtlib.unopt !indtyinfo in - let NReference.Ref (uri, _) = ity.reference in - let name = - NUri.name_of_uri uri ^ "_inv_" ^ - snd (NCicElim.ast_of_sort - (match !sort with NCic.Sort x -> x | _ -> assert false)) - in - let eliminator = - let _,_,w = what in - Ast.Appl [ Ast.Ident (name,None) ; Ast.Implicit `Vector ; w ] - in - exact_tac ("",0,eliminator) status) ]) -;; diff --git a/helm/software/components/ng_tactics/nTactics.mli b/helm/software/components/ng_tactics/nTactics.mli index d9964ddce..4af0c3fb7 100644 --- a/helm/software/components/ng_tactics/nTactics.mli +++ b/helm/software/components/ng_tactics/nTactics.mli @@ -11,10 +11,8 @@ (* $Id: nCic.ml 9058 2008-10-13 17:42:30Z tassi $ *) -val print_tac: bool -> string -> 's NTacStatus.tactic - val dot_tac: 's NTacStatus.tactic -val branch_tac: ?force:bool -> 's NTacStatus.tactic +val branch_tac: 's NTacStatus.tactic val shift_tac: 's NTacStatus.tactic val pos_tac: int list -> 's NTacStatus.tactic val case_tac: string -> 's NTacStatus.tactic @@ -23,14 +21,17 @@ val merge_tac: 's NTacStatus.tactic val focus_tac: int list -> 's NTacStatus.tactic val unfocus_tac: 's NTacStatus.tactic val skip_tac: 's NTacStatus.tactic -val try_tac: NTacStatus.tac_status NTacStatus.tactic -> 's NTacStatus.tactic +val try_tac: 's NTacStatus.tactic -> 's NTacStatus.tactic val repeat_tac: NTacStatus.tac_status NTacStatus.tactic -> 's NTacStatus.tactic val compare_statuses : past:#NTacStatus.lowtac_status -> present:#NTacStatus.lowtac_status -> int list * int list val distribute_tac: NTacStatus.lowtac_status NTacStatus.lowtactic -> 's NTacStatus.tactic -val exec : NTacStatus.tac_status NTacStatus.tactic -> 's NTacStatus.lowtactic +val exec : ((int * Continuationals.Stack.switch) list * 'a list * 'b list * + [> `NoTag ]) + list NTacStatus.status NTacStatus.tactic -> + (#NTacStatus.lowtac_status as 's) -> Continuationals.goal -> 's val block_tac: 's NTacStatus.tactic list -> 's NTacStatus.tactic val apply_tac: NTacStatus.tactic_term -> 's NTacStatus.tactic @@ -43,8 +44,6 @@ val elim_tac: what:NTacStatus.tactic_term -> where:NTacStatus.tactic_pattern -> 's NTacStatus.tactic val intro_tac: string -> 's NTacStatus.tactic -val intros_tac: - ?names_ref:string list ref -> string list -> 's NTacStatus.tactic val cases_tac: what:NTacStatus.tactic_term -> where:NTacStatus.tactic_pattern -> 's NTacStatus.tactic @@ -71,8 +70,19 @@ val constructor_tac : ?num:int -> args:NTacStatus.tactic_term list -> 's NTacStatus.tactic val atomic_tac : - (NTacStatus.tac_status -> 'c #NTacStatus.status) -> - (#NTacStatus.tac_status as 'f) -> 'f + (((int * Continuationals.Stack.switch) list * 'a list * 'b list * + [> `NoTag ]) + list NTacStatus.status -> + (< auto_cache : NCicLibrary.automation_cache; + coerc_db : NCicCoercion.db; dump : NCicLibrary.obj list; + lstatus : LexiconEngine.lexicon_status; obj : NCic.obj; + set_coerc_db : NCicCoercion.db -> 'c; + set_coercion_status : 'd. (#NCicCoercion.g_status as 'd) -> 'c; + set_uhint_db : NCicUnifHint.db -> 'c; + set_unifhint_status : 'e. (#NCicUnifHint.g_status as 'e) -> 'c; + timestamp : NCicLibrary.timestamp; uhint_db : NCicUnifHint.db; .. > + as 'c)) -> + (#NTacStatus.tac_status as 'f) -> 'f type indtyinfo @@ -84,7 +94,3 @@ val analyze_indty_tac : val find_in_context : 'a -> ('a * 'b) list -> int - -val inversion_tac: - what:NTacStatus.tactic_term -> where:NTacStatus.tactic_pattern -> - 's NTacStatus.tactic diff --git a/helm/software/components/ng_tactics/nnAuto.ml b/helm/software/components/ng_tactics/nnAuto.ml index 7a9c20f0f..0ff4ddbe5 100644 --- a/helm/software/components/ng_tactics/nnAuto.ml +++ b/helm/software/components/ng_tactics/nnAuto.ml @@ -11,77 +11,51 @@ open Printf -let print ?(depth=0) s = +let debug = ref false +let debug_print ?(depth=0) s = + if !debug then prerr_endline (String.make depth '\t'^Lazy.force s) else () +(* let print= debug_print *) + let print ?(depth=0) s = prerr_endline (String.make depth '\t'^Lazy.force s) -let noprint ?(depth=0) _ = () -let debug_print = noprint + +let debug_do f = if !debug then f () else () open Continuationals.Stack open NTacStatus module Ast = CicNotationPt - -(* ======================= statistics ========================= *) - let app_counter = ref 0 -module RHT = struct - type t = NReference.reference - let equal = (==) - let compare = Pervasives.compare - let hash = Hashtbl.hash -end;; - -module RefHash = Hashtbl.Make(RHT);; - -type info = { - nominations : int ref; - uses: int ref; -} - -let statistics: info RefHash.t = RefHash.create 503 - -let incr_nominations tbl item = - try - let v = RefHash.find tbl item in incr v.nominations - with Not_found -> - RefHash.add tbl item {nominations = ref 1; uses = ref 0} - -let incr_uses tbl item = - try - let v = RefHash.find tbl item in incr v.uses - with Not_found -> assert false +(* =================================== paramod =========================== *) +let auto_paramod ~params:(l,_) status goal = + let gty = get_goalty status goal in + let n,h,metasenv,subst,o = status#obj in + let status,t = term_of_cic_term status gty (ctx_of gty) in + let status, l = + List.fold_left + (fun (status, l) t -> + let status, t = disambiguate status (ctx_of gty) t None in + let status, ty = typeof status (ctx_of t) t in + let status, t = term_of_cic_term status t (ctx_of gty) in + let status, ty = term_of_cic_term status ty (ctx_of ty) in + (status, (t,ty) :: l)) + (status,[]) l + in + match + NCicParamod.nparamod status metasenv subst (ctx_of gty) (NCic.Rel ~-1,t) l + with + | [] -> raise (Error (lazy "no proof found",None)) + | (pt, metasenv, subst)::_ -> + let status = status#set_obj (n,h,metasenv,subst,o) in + instantiate status goal (mk_cic_term (ctx_of gty) pt) +;; -let toref f tbl t = - match t with - | Ast.NRef n -> - f tbl n - | Ast.NCic _ (* local candidate *) - | _ -> () +let auto_paramod_tac ~params status = + NTactics.distribute_tac (auto_paramod ~params) status +;; -let is_relevant tbl item = - try - let v = RefHash.find tbl item in - if !(v.nominations) < 60 then true (* not enough info *) - else if !(v.uses) = 0 then false - else true - with Not_found -> true - -let print_stat tbl = - let l = RefHash.fold (fun a v l -> (a,v)::l) tbl [] in - let relevance v = float !(v.uses) /. float !(v.nominations) in - let vcompare (_,v1) (_,v2) = - Pervasives.compare (relevance v1) (relevance v2) in - let l = List.sort vcompare l in - let vstring (a,v)= - CicNotationPp.pp_term (Ast.NCic (NCic.Const a)) ^ ": rel = " ^ - (string_of_float (relevance v)) ^ - "; uses = " ^ (string_of_int !(v.uses)) ^ - "; nom = " ^ (string_of_int !(v.nominations)) in - lazy ("\n\nSTATISTICS:\n" ^ - String.concat "\n" (List.map vstring l)) - -(* ======================= utility functions ========================= *) +(*************** subsumption ****************) module IntSet = Set.Make(struct type t = int let compare = compare end) +(* exceptions *) let get_sgoalty status g = let _,_,metasenv,subst,_ = status#obj in @@ -108,266 +82,10 @@ let menv_closure status gl = in closure IntSet.empty gl ;; -(* we call a "fact" an object whose hypothesis occur in the goal - or in types of goal-variables *) -let branch status ty = - let status, ty, metas = saturate ~delta:0 status ty in - noprint (lazy ("saturated ty :" ^ (ppterm status ty))); - let g_metas = metas_of_term status ty in - let clos = menv_closure status g_metas in - (* let _,_,metasenv,_,_ = status#obj in *) - let menv = - List.fold_left - (fun acc m -> - let _, m = term_of_cic_term status m (ctx_of m) in - match m with - | NCic.Meta(i,_) -> IntSet.add i acc - | _ -> assert false) - IntSet.empty metas - in - (* IntSet.subset menv clos *) - IntSet.cardinal(IntSet.diff menv clos) - -let is_a_fact status ty = branch status ty = 0 - -let is_a_fact_obj s uri = - let obj = NCicEnvironment.get_checked_obj uri in - match obj with - | (_,_,[],[],NCic.Constant(_,_,_,ty,_)) -> - is_a_fact s (mk_cic_term [] ty) -(* aggiungere i costruttori *) - | _ -> false - -let is_a_fact_ast status subst metasenv ctx cand = - debug_print ~depth:0 - (lazy ("------- checking " ^ CicNotationPp.pp_term cand)); - let status, t = disambiguate status ctx ("",0,cand) None in - let status,t = term_of_cic_term status t ctx in - let ty = NCicTypeChecker.typeof subst metasenv ctx t in - is_a_fact status (mk_cic_term ctx ty) - -let current_goal status = - let open_goals = head_goals status#stack in - assert (List.length open_goals = 1); - let open_goal = List.hd open_goals in - let gty = get_goalty status open_goal in - let ctx = ctx_of gty in - open_goal, ctx, gty - -let height_of_ref (NReference.Ref (uri, x)) = - match x with - | NReference.Decl - | NReference.Ind _ - | NReference.Con _ - | NReference.CoFix _ -> - let _,height,_,_,_ = NCicEnvironment.get_checked_obj uri in - height - | NReference.Def h -> h - | NReference.Fix (_,_,h) -> h -;; - -(*************************** height functions ********************************) -let fast_height_of_term t = - let h = ref 0 in - let rec aux = - function - NCic.Meta (_,(_,NCic.Ctx l)) -> List.iter aux l - | NCic.Meta _ -> () - | NCic.Rel _ - | NCic.Sort _ -> () - | NCic.Implicit _ -> assert false - | NCic.Const nref -> -(* - prerr_endline (NCicPp.ppterm ~metasenv:[] ~subst:[] - ~context:[] t ^ ":" ^ string_of_int (height_of_ref nref)); -*) - h := max !h (height_of_ref nref) - | NCic.Prod (_,t1,t2) - | NCic.Lambda (_,t1,t2) -> aux t1; aux t2 - | NCic.LetIn (_,s,ty,t) -> aux s; aux ty; aux t - | NCic.Appl l -> List.iter aux l - | NCic.Match (_,outty,t,pl) -> aux outty; aux t; List.iter aux pl - in - aux t; !h -;; - -let height_of_goal g status = - let ty = get_goalty status g in - let context = ctx_of ty in - let _, ty = term_of_cic_term status ty (ctx_of ty) in - let h = ref (fast_height_of_term ty) in - List.iter - (function - | _, NCic.Decl ty -> h := max !h (fast_height_of_term ty) - | _, NCic.Def (bo,ty) -> - h := max !h (fast_height_of_term ty); - h := max !h (fast_height_of_term bo); - ) - context; - !h -;; - -let height_of_goals status = - let open_goals = head_goals status#stack in - assert (List.length open_goals > 0); - let h = ref 1 in - List.iter - (fun open_goal -> - h := max !h (height_of_goal open_goal status)) - open_goals; - debug_print (lazy ("altezza sequente: " ^ string_of_int !h)); - !h -;; - -(* =============================== paramod =========================== *) -let solve f status eq_cache goal = -(* - let f = - if fast then NCicParamod.fast_eq_check - else NCicParamod.paramod in -*) - let n,h,metasenv,subst,o = status#obj in - let gname, ctx, gty = List.assoc goal metasenv in - let gty = NCicUntrusted.apply_subst subst ctx gty in - let build_status (pt, _, metasenv, subst) = - try - debug_print (lazy ("refining: "^(NCicPp.ppterm ctx subst metasenv pt))); - let stamp = Unix.gettimeofday () in - let metasenv, subst, pt, pty = - (* NCicRefiner.typeof status - (* (status#set_coerc_db NCicCoercion.empty_db) *) - metasenv subst ctx pt None in - print (lazy ("refined: "^(NCicPp.ppterm ctx subst metasenv pt))); - debug_print (lazy ("synt: "^(NCicPp.ppterm ctx subst metasenv pty))); - let metasenv, subst = - NCicUnification.unify status metasenv subst ctx gty pty *) - NCicRefiner.typeof - (status#set_coerc_db NCicCoercion.empty_db) - metasenv subst ctx pt (Some gty) - in - debug_print (lazy (Printf.sprintf "Refined in %fs" - (Unix.gettimeofday() -. stamp))); - let status = status#set_obj (n,h,metasenv,subst,o) in - let metasenv = List.filter (fun j,_ -> j <> goal) metasenv in - let subst = (goal,(gname,ctx,pt,pty)) :: subst in - Some (status#set_obj (n,h,metasenv,subst,o)) - with - NCicRefiner.RefineFailure msg - | NCicRefiner.Uncertain msg -> - debug_print (lazy ("WARNING: refining in fast_eq_check failed\n" ^ - snd (Lazy.force msg) ^ - "\n in the environment\n" ^ - NCicPp.ppmetasenv subst metasenv)); None - | NCicRefiner.AssertFailure msg -> - debug_print (lazy ("WARNING: refining in fast_eq_check failed" ^ - Lazy.force msg ^ - "\n in the environment\n" ^ - NCicPp.ppmetasenv subst metasenv)); None - | _ -> None - in - HExtlib.filter_map build_status - (f status metasenv subst ctx eq_cache (NCic.Rel ~-1,gty)) -;; - -let fast_eq_check eq_cache status (goal:int) = - match solve NCicParamod.fast_eq_check status eq_cache goal with - | [] -> raise (Error (lazy "no proof found",None)) - | s::_ -> s -;; - -let dist_fast_eq_check eq_cache s = - NTactics.distribute_tac (fast_eq_check eq_cache) s -;; - -let auto_eq_check eq_cache status = - try - let s = dist_fast_eq_check eq_cache status in - [s] - with - | Error _ -> debug_print (lazy ("no paramod proof found"));[] -;; - -let index_local_equations eq_cache status = - debug_print (lazy "indexing equations"); - let open_goals = head_goals status#stack in - let open_goal = List.hd open_goals in - let ngty = get_goalty status open_goal in - let ctx = apply_subst_context ~fix_projections:true status (ctx_of ngty) in - let c = ref 0 in - List.fold_left - (fun eq_cache _ -> - c:= !c+1; - let t = NCic.Rel !c in - try - let ty = NCicTypeChecker.typeof [] [] ctx t in - if is_a_fact status (mk_cic_term ctx ty) then - (debug_print(lazy("eq indexing " ^ (NCicPp.ppterm ctx [] [] ty))); - NCicParamod.forward_infer_step eq_cache t ty) - else - (debug_print (lazy ("not a fact: " ^ (NCicPp.ppterm ctx [] [] ty))); - eq_cache) - with - | NCicTypeChecker.TypeCheckerFailure _ - | NCicTypeChecker.AssertFailure _ -> eq_cache) - eq_cache ctx -;; - -let fast_eq_check_tac ~params s = - let unit_eq = index_local_equations s#eq_cache s in - dist_fast_eq_check unit_eq s -;; - -let paramod eq_cache status goal = - match solve NCicParamod.paramod status eq_cache goal with - | [] -> raise (Error (lazy "no proof found",None)) - | s::_ -> s -;; - -let paramod_tac ~params s = - let unit_eq = index_local_equations s#eq_cache s in - NTactics.distribute_tac (paramod unit_eq) s -;; - -let demod eq_cache status goal = - match solve NCicParamod.demod status eq_cache goal with - | [] -> raise (Error (lazy "no progress",None)) - | s::_ -> s -;; - -let demod_tac ~params s = - let unit_eq = index_local_equations s#eq_cache s in - NTactics.distribute_tac (demod unit_eq) s -;; - -(* -let fast_eq_check_tac_all ~params eq_cache status = - let g,_,_ = current_goal status in - let allstates = fast_eq_check_all status eq_cache g in - let pseudo_low_tac s _ _ = s in - let pseudo_low_tactics = - List.map pseudo_low_tac allstates - in - List.map (fun f -> NTactics.distribute_tac f status) pseudo_low_tactics -;; -*) - -(* -let demod status eq_cache goal = - let n,h,metasenv,subst,o = status#obj in - let gname, ctx, gty = List.assoc goal metasenv in - let gty = NCicUntrusted.apply_subst subst ctx gty in - -let demod_tac ~params s = - let unit_eq = index_local_equations s#eq_cache s in - dist_fast_eq_check unit_eq s -*) - -(*************** subsumption ****************) - let close_wrt_context = List.fold_left (fun ty ctx_entry -> - match ctx_entry with + match ctx_entry with | name, NCic.Decl t -> NCic.Prod(name,t,ty) | name, NCic.Def(bo, _) -> NCicSubstitution.subst bo ty) ;; @@ -376,9 +94,9 @@ let args_for_context ?(k=1) ctx = let _,args = List.fold_left (fun (n,l) ctx_entry -> - match ctx_entry with - | name, NCic.Decl t -> n+1,NCic.Rel(n)::l - | name, NCic.Def(bo, _) -> n+1,l) + match ctx_entry with + | name, NCic.Decl t -> n+1,NCic.Rel(n)::l + | name, NCic.Def(bo, _) -> n+1,l) (k,[]) ctx in args @@ -398,11 +116,11 @@ let refresh metasenv = (fun (metasenv,subst) (i,(iattr,ctx,ty)) -> let ikind = NCicUntrusted.kind_of_meta iattr in let metasenv,j,instance,ty = - NCicMetaSubst.mk_meta ~attrs:iattr - metasenv ctx ~with_type:ty ikind in + NCicMetaSubst.mk_meta ~attrs:iattr + metasenv ctx ~with_type:ty ikind in let s_entry = i,(iattr, ctx, instance, ty) in let metasenv = List.filter (fun x,_ -> i <> x) metasenv in - metasenv,s_entry::subst) + metasenv,s_entry::subst) (metasenv,[]) metasenv (* close metasenv returns a ground instance of all the metas in the @@ -414,24 +132,24 @@ let close_metasenv metasenv subst = let metasenv = NCicUntrusted.sort_metasenv subst metasenv in List.fold_left (fun (subst,objs) (i,(iattr,ctx,ty)) -> - let ty = NCicUntrusted.apply_subst subst ctx ty in + let ty = NCicUntrusted.apply_subst subst ctx ty in let ctx = - NCicUntrusted.apply_subst_context ~fix_projections:true - subst ctx in - let (uri,_,_,_,obj) as okind = - constant_for_meta ctx ty i in - try - NCicEnvironment.check_and_add_obj okind; - let iref = NReference.reference_of_spec uri NReference.Decl in - let iterm = - let args = args_for_context ctx in - if args = [] then NCic.Const iref - else NCic.Appl(NCic.Const iref::args) - in + NCicUntrusted.apply_subst_context ~fix_projections:true + subst ctx in + let (uri,_,_,_,obj) as okind = + constant_for_meta ctx ty i in + try + NCicEnvironment.check_and_add_obj okind; + let iref = NReference.reference_of_spec uri NReference.Decl in + let iterm = + let args = args_for_context ctx in + if args = [] then NCic.Const iref + else NCic.Appl(NCic.Const iref::args) + in (* prerr_endline (NCicPp.ppterm ctx [] [] iterm); *) - let s_entry = i, ([], ctx, iterm, ty) - in s_entry::subst,okind::objs - with _ -> assert false) + let s_entry = i, ([], ctx, iterm, ty) + in s_entry::subst,okind::objs + with _ -> assert false) (subst,[]) metasenv ;; @@ -446,13 +164,13 @@ let ground_instances status gl = try List.iter (fun i -> - let (_, ctx, t, _) = List.assoc i subst in - debug_print (lazy (NCicPp.ppterm ctx [] [] t)); - List.iter - (fun (uri,_,_,_,_) as obj -> - NCicEnvironment.invalidate_item (`Obj (uri, obj))) - objs; - ()) + let (_, ctx, t, _) = List.assoc i subst in + debug_print (lazy (NCicPp.ppterm ctx [] [] t)); + List.iter + (fun (uri,_,_,_,_) as obj -> + NCicEnvironment.invalidate_item (`Obj (uri, obj))) + objs; + ()) gl with Not_found -> assert false @@ -463,11 +181,11 @@ let replace_meta i args target = let rec aux k = function (* TODO: local context *) | NCic.Meta (j,lc) when i = j -> - (match args with - | [] -> NCic.Rel 1 - | _ -> let args = - List.map (NCicSubstitution.subst_meta lc) args in - NCic.Appl(NCic.Rel k::args)) + (match args with + | [] -> NCic.Rel 1 + | _ -> let args = + List.map (NCicSubstitution.subst_meta lc) args in + NCic.Appl(NCic.Rel k::args)) | NCic.Meta (j,lc) as m -> (match lc with _,NCic.Irl _ -> m @@ -486,8 +204,8 @@ let close_wrt_metasenv subst = (fun ty (i,(iattr,ctx,mty)) -> let mty = NCicUntrusted.apply_subst subst ctx mty in let ctx = - NCicUntrusted.apply_subst_context ~fix_projections:true - subst ctx in + NCicUntrusted.apply_subst_context ~fix_projections:true + subst ctx in let cty = close_wrt_context mty ctx in let name = "foo"^(string_of_int i) in let ty = NCicSubstitution.lift 1 ty in @@ -517,178 +235,884 @@ let close status g = ctx,ty ;; -(****************** smart application ********************) -let saturate_to_ref metasenv subst ctx nref ty = - let height = height_of_ref nref in - let rec aux metasenv ty args = - let ty,metasenv,moreargs = - NCicMetaSubst.saturate ~delta:height metasenv subst ctx ty 0 in - match ty with - | NCic.Const(NReference.Ref (_,NReference.Def _) as nre) - when nre<>nref -> - let _, _, bo, _, _, _ = NCicEnvironment.get_checked_def nre in - aux metasenv bo (args@moreargs) - | NCic.Appl(NCic.Const(NReference.Ref (_,NReference.Def _) as nre)::tl) - when nre<>nref -> - let _, _, bo, _, _, _ = NCicEnvironment.get_checked_def nre in - aux metasenv (NCic.Appl(bo::tl)) (args@moreargs) - | _ -> ty,metasenv,(args@moreargs) + +(* =================================== auto =========================== *) +(****************** AUTO ******************** + +let calculate_timeout flags = + if flags.timeout = 0. then + (debug_print (lazy "AUTO WITH NO TIMEOUT"); + {flags with timeout = infinity}) + else + flags +;; +let is_equational_case goalty flags = + let ensure_equational t = + if is_an_equational_goal t then true + else false in - aux metasenv ty [] + (flags.use_paramod && is_an_equational_goal goalty) || + (flags.use_only_paramod && ensure_equational goalty) +;; -let smart_apply t unit_eq status g = - let n,h,metasenv,subst,o = status#obj in - let gname, ctx, gty = List.assoc g metasenv in - (* let ggty = mk_cic_term context gty in *) - let status, t = disambiguate status ctx t None in - let status,t = term_of_cic_term status t ctx in - let _,_,metasenv,subst,_ = status#obj in - let ty = NCicTypeChecker.typeof subst metasenv ctx t in - let ty,metasenv,args = - match gty with - | NCic.Const(nref) - | NCic.Appl(NCic.Const(nref)::_) -> - saturate_to_ref metasenv subst ctx nref ty - | _ -> - NCicMetaSubst.saturate metasenv subst ctx ty 0 in - let metasenv,j,inst,_ = NCicMetaSubst.mk_meta metasenv ctx `IsTerm in - let status = status#set_obj (n,h,metasenv,subst,o) in - let pterm = if args=[] then t else - match t with - | NCic.Appl l -> NCic.Appl(l@args) - | _ -> NCic.Appl(t::args) +type menv = Cic.metasenv +type subst = Cic.substitution +type goal = ProofEngineTypes.goal * int * AutoTypes.sort +let candidate_no = ref 0;; +type candidate = int * Cic.term Lazy.t +type cache = AutoCache.cache + +type fail = + (* the goal (mainly for depth) and key of the goal *) + goal * AutoCache.cache_key +type op = + (* goal has to be proved *) + | D of goal + (* goal has to be cached as a success obtained using candidate as the first + * step *) + | S of goal * AutoCache.cache_key * candidate * int +type elem = + (* menv, subst, size, operations done (only S), operations to do, failures to cache if any op fails *) + menv * subst * int * op list * op list * fail list +type status = + (* list of computations that may lead to the solution: all op list will + * end with the same (S(g,_)) *) + elem list +type auto_result = + (* menv, subst, alternatives, tables, cache *) + | Proved of menv * subst * elem list * AutomationCache.tables * cache + | Gaveup of AutomationCache.tables * cache + + +(* the status exported to the external observer *) +type auto_status = + (* context, (goal,candidate) list, and_list, history *) + Cic.context * (int * Cic.term * bool * int * (int * Cic.term Lazy.t) list) list * + (int * Cic.term * int) list * Cic.term Lazy.t list + +let d_prefix l = + let rec aux acc = function + | (D g)::tl -> aux (acc@[g]) tl + | _ -> acc in - noprint(lazy("pterm " ^ (NCicPp.ppterm ctx [] [] pterm))); - noprint(lazy("pty " ^ (NCicPp.ppterm ctx [] [] ty))); - let eq_coerc = - let uri = - NUri.uri_of_string "cic:/matita/ng/Plogic/equality/eq_coerc.con" in - let ref = NReference.reference_of_spec uri (NReference.Def(2)) in - NCic.Const ref + aux [] l +;; + +let calculate_goal_ty (goalno,_,_) s m = + try + let _,cc,goalty = CicUtil.lookup_meta goalno m in + (* XXX applicare la subst al contesto? *) + Some (cc, CicMetaSubst.apply_subst s goalty) + with CicUtil.Meta_not_found i when i = goalno -> None +;; + +let calculate_closed_goal_ty (goalno,_,_) s = + try + let cc,_,goalty = List.assoc goalno s in + (* XXX applicare la subst al contesto? *) + Some (cc, CicMetaSubst.apply_subst s goalty) + with Not_found -> + None +;; + +let pp_status ctx status = + if debug then + let names = Utils.names_of_context ctx in + let pp x = + let x = + ProofEngineReduction.replace + ~equality:(fun a b -> match b with Cic.Meta _ -> true | _ -> false) + ~what:[Cic.Rel 1] ~with_what:[Cic.Implicit None] ~where:x + in + CicPp.pp x names in - let smart = - NCic.Appl[eq_coerc;ty;NCic.Implicit `Type;pterm;inst] in - let smart = mk_cic_term ctx smart in - try - let status = instantiate status g smart in - let _,_,metasenv,subst,_ = status#obj in - let _,ctx,jty = List.assoc j metasenv in - let jty = NCicUntrusted.apply_subst subst ctx jty in - debug_print(lazy("goal " ^ (NCicPp.ppterm ctx [] [] jty))); - fast_eq_check unit_eq status j - with - | NCicEnvironment.ObjectNotFound s as e -> - raise (Error (lazy "eq_coerc non yet defined",Some e)) - | Error _ as e -> debug_print (lazy "error"); raise e + let string_of_do m s (gi,_,_ as g) d = + match calculate_goal_ty g s m with + | Some (_,gty) -> Printf.sprintf "D(%d, %s, %d)" gi (pp gty) d + | None -> Printf.sprintf "D(%d, _, %d)" gi d + in + let string_of_s m su k (ci,ct) gi = + Printf.sprintf "S(%d, %s, %s, %d)" gi (pp k) (pp (Lazy.force ct)) ci + in + let string_of_ol m su l = + String.concat " | " + (List.map + (function + | D (g,d,s) -> string_of_do m su (g,d,s) d + | S ((gi,_,_),k,c,_) -> string_of_s m su k c gi) + l) + in + let string_of_fl m s fl = + String.concat " | " + (List.map (fun ((i,_,_),ty) -> + Printf.sprintf "(%d, %s)" i (pp ty)) fl) + in + let rec aux = function + | [] -> () + | (m,s,_,_,ol,fl)::tl -> + Printf.eprintf "< [%s] ;;; [%s]>\n" + (string_of_ol m s ol) (string_of_fl m s fl); + aux tl + in + Printf.eprintf "-------------------------- status -------------------\n"; + aux status; + Printf.eprintf "-----------------------------------------------------\n"; +;; + +let auto_status = ref [] ;; +let auto_context = ref [];; +let in_pause = ref false;; +let pause b = in_pause := b;; +let cond = Condition.create ();; +let mutex = Mutex.create ();; +let hint = ref None;; +let prune_hint = ref [];; + +let step _ = Condition.signal cond;; +let give_hint n = hint := Some n;; +let give_prune_hint hint = + prune_hint := hint :: !prune_hint +;; -let smart_apply_tac t s = - let unit_eq = index_local_equations s#eq_cache s in - NTactics.distribute_tac (smart_apply t unit_eq) s +let check_pause _ = + if !in_pause then + begin + Mutex.lock mutex; + Condition.wait cond mutex; + Mutex.unlock mutex + end +;; -let smart_apply_auto t eq_cache = - NTactics.distribute_tac (smart_apply t eq_cache) +let get_auto_status _ = + let status = !auto_status in + let and_list,elems,last = + match status with + | [] -> [],[],[] + | (m,s,_,don,gl,fail)::tl -> + let and_list = + HExtlib.filter_map + (fun (id,d,_ as g) -> + match calculate_goal_ty g s m with + | Some (_,x) -> Some (id,x,d) | None -> None) + (d_goals gl) + in + let rows = + (* these are the S goalsin the or list *) + let orlist = + List.map + (fun (m,s,_,don,gl,fail) -> + HExtlib.filter_map + (function S (g,k,c,_) -> Some (g,k,c) | _ -> None) + (List.rev don @ gl)) + status + in + (* this function eats id from a list l::[id,x] returning x, l *) + let eat_tail_if_eq id l = + let rec aux (s, l) = function + | [] -> s, l + | ((id1,_,_),k1,c)::tl when id = id1 -> + (match s with + | None -> aux (Some c,l) tl + | Some _ -> assert false) + | ((id1,_,_),k1,c as e)::tl -> aux (s, e::l) tl + in + let c, l = aux (None, []) l in + c, List.rev l + in + let eat_in_parallel id l = + let rec aux (b,eaten, new_l as acc) l = + match l with + | [] -> acc + | l::tl -> + match eat_tail_if_eq id l with + | None, l -> aux (b@[false], eaten, new_l@[l]) tl + | Some t,l -> aux (b@[true],eaten@[t], new_l@[l]) tl + in + aux ([],[],[]) l + in + let rec eat_all rows l = + match l with + | [] -> rows + | elem::or_list -> + match List.rev elem with + | ((to_eat,depth,_),k,_)::next_lunch -> + let b, eaten, l = eat_in_parallel to_eat l in + let eaten = HExtlib.list_uniq eaten in + let eaten = List.rev eaten in + let b = true (* List.hd (List.rev b) *) in + let rows = rows @ [to_eat,k,b,depth,eaten] in + eat_all rows l + | [] -> eat_all rows or_list + in + eat_all [] (List.rev orlist) + in + let history = + HExtlib.filter_map + (function (S (_,_,(_,c),_)) -> Some c | _ -> None) + gl + in +(* let rows = List.filter (fun (_,l) -> l <> []) rows in *) + and_list, rows, history + in + !auto_context, elems, and_list, last +;; +(* Works if there is no dependency over proofs *) +let is_a_green_cut goalty = + CicUtil.is_meta_closed goalty +;; +let rec first_s = function + | (D _)::tl -> first_s tl + | (S (g,k,c,s))::tl -> Some ((g,k,c,s),tl) + | [] -> None +;; +let list_union l1 l2 = + (* TODO ottimizzare compare *) + HExtlib.list_uniq (List.sort compare (l1 @ l1)) +;; +let rec eq_todo l1 l2 = + match l1,l2 with + | (D g1) :: tl1,(D g2) :: tl2 when g1=g2 -> eq_todo tl1 tl2 + | (S (g1,k1,(c1,lt1),i1)) :: tl1, (S (g2,k2,(c2,lt2),i2)) :: tl2 + when i1 = i2 && g1 = g2 && k1 = k2 && c1 = c2 -> + if Lazy.force lt1 = Lazy.force lt2 then eq_todo tl1 tl2 else false + | [],[] -> true + | _ -> false +;; +let eat_head todo id fl orlist = + let rec aux acc = function + | [] -> [], acc + | (m, s, _, _, todo1, fl1)::tl as orlist -> + let rec aux1 todo1 = + match first_s todo1 with + | None -> orlist, acc + | Some (((gno,_,_),_,_,_), todo11) -> + (* TODO confronto tra todo da ottimizzare *) + if gno = id && eq_todo todo11 todo then + aux (list_union fl1 acc) tl + else + aux1 todo11 + in + aux1 todo1 + in + aux fl orlist +;; +let close_proof p ty menv context = + let metas = + List.map fst (CicUtil.metas_of_term p @ CicUtil.metas_of_term ty) + in + let menv = List.filter (fun (i,_,_) -> List.exists ((=)i) metas) menv in + naif_closure p menv context +;; +(* XXX capire bene quando aggiungere alla cache *) +let add_to_cache_and_del_from_orlist_if_green_cut + g s m cache key todo orlist fl ctx size minsize += + let cache = cache_remove_underinspection cache key in + (* prima per fare la irl usavamo il contesto vero e proprio e non quello + * canonico! XXX *) + match calculate_closed_goal_ty g s with + | None -> assert false + | Some (canonical_ctx , gty) -> + let goalno,depth,sort = g in + let irl = mk_irl canonical_ctx in + let goal = Cic.Meta(goalno, irl) in + let proof = CicMetaSubst.apply_subst s goal in + let green_proof, closed_proof = + let b = is_a_green_cut proof in + if not b then + b, (* close_proof proof gty m ctx *) proof + else + b, proof + in + debug_print (lazy ("TENTATIVE CACHE: " ^ CicPp.ppterm key)); + if is_a_green_cut key then + (* if the initia goal was closed, we cut alternatives *) + let _ = debug_print (lazy ("MANGIO: " ^ string_of_int goalno)) in + let orlist, fl = eat_head todo goalno fl orlist in + let cache = + if size < minsize then + (debug_print (lazy ("NO CACHE: 2 (size <= minsize)"));cache) + else + (* if the proof is closed we cache it *) + if green_proof then cache_add_success cache key proof + else (* cache_add_success cache key closed_proof *) + (debug_print (lazy ("NO CACHE: (no gree proof)"));cache) + in + cache, orlist, fl, true + else + let cache = + debug_print (lazy ("TENTATIVE CACHE: " ^ CicPp.ppterm gty)); + if size < minsize then + (debug_print (lazy ("NO CACHE: (size <= minsize)")); cache) else + (* if the substituted goal and the proof are closed we cache it *) + if is_a_green_cut gty then + if green_proof then cache_add_success cache gty proof + else (* cache_add_success cache gty closed_proof *) + (debug_print (lazy ("NO CACHE: (no green proof (gty))"));cache) + else (* + try + let ty, _ = + CicTypeChecker.type_of_aux' ~subst:s + m ctx closed_proof CicUniv.oblivion_ugraph + in + if is_a_green_cut ty then + cache_add_success cache ty closed_proof + else cache + with + | CicTypeChecker.TypeCheckerFailure _ ->*) + (debug_print (lazy ("NO CACHE: (no green gty )"));cache) + in + cache, orlist, fl, false +;; +let close_failures (fl : fail list) (cache : cache) = + List.fold_left + (fun cache ((gno,depth,_),gty) -> + if CicUtil.is_meta_closed gty then + ( debug_print (lazy ("FAIL: INDUCED: " ^ string_of_int gno)); + cache_add_failure cache gty depth) + else + cache) + cache fl +;; +let put_in_subst subst metasenv (goalno,_,_) canonical_ctx t ty = + let entry = goalno, (canonical_ctx, t,ty) in + assert_subst_are_disjoint subst [entry]; + let subst = entry :: subst in + + let metasenv = CicMetaSubst.apply_subst_metasenv subst metasenv in -(****************** types **************) + subst, metasenv +;; +let mk_fake_proof metasenv subst (goalno,_,_) goalty context = + None,metasenv,subst ,(lazy (Cic.Meta(goalno,mk_irl context))),goalty, [] +;; -type th_cache = (NCic.context * InvRelDiscriminationTree.t) list +let equational_case + tables cache depth fake_proof goalno goalty subst context + flags += + let active,passive,bag = tables in + let ppterm = ppterm context in + let status = (fake_proof,goalno) in + if flags.use_only_paramod then + begin + debug_print (lazy ("PARAMODULATION SU: " ^ + string_of_int goalno ^ " " ^ ppterm goalty )); + let goal_steps, saturation_steps, timeout = + max_int,max_int,flags.timeout + in + match + Saturation.given_clause bag status active passive + goal_steps saturation_steps timeout + with + | None, active, passive, bag -> + [], (active,passive,bag), cache, flags + | Some(subst',(_,metasenv,_subst,proof,_, _),open_goals),active, + passive,bag -> + assert_subst_are_disjoint subst subst'; + let subst = subst@subst' in + let open_goals = + order_new_goals metasenv subst open_goals ppterm + in + let open_goals = + List.map (fun (x,sort) -> x,depth-1,sort) open_goals + in + incr candidate_no; + [(!candidate_no,proof),metasenv,subst,open_goals], + (active,passive,bag), cache, flags + end + else + begin + debug_print (lazy ("NARROWING DEL GOAL: " ^ + string_of_int goalno ^ " " ^ ppterm goalty )); + let goal_steps, saturation_steps, timeout = + 1,0,flags.timeout + in + match + Saturation.solve_narrowing bag status active passive goal_steps + with + | None, active, passive, bag -> + [], (active,passive,bag), cache, flags + | Some(subst',(_,metasenv,_subst,proof,_, _),open_goals),active, + passive,bag -> + assert_subst_are_disjoint subst subst'; + let subst = subst@subst' in + let open_goals = + order_new_goals metasenv subst open_goals ppterm + in + let open_goals = + List.map (fun (x,sort) -> x,depth-1,sort) open_goals + in + incr candidate_no; + [(!candidate_no,proof),metasenv,subst,open_goals], + (active,passive,bag), cache, flags + end +(* + begin + let params = ([],["use_context","false"]) in + let automation_cache = { + AutomationCache.tables = tables ; + AutomationCache.univ = Universe.empty; } + in + try + let ((_,metasenv,subst,_,_,_),open_goals) = -(* cartesian: term set list -> term list set *) -let rec cartesian = - function - [] -> NDiscriminationTree.TermListSet.empty - | [l] -> - NDiscriminationTree.TermSet.fold - (fun x acc -> NDiscriminationTree.TermListSet.add [x] acc) l NDiscriminationTree.TermListSet.empty - | he::tl -> - let rest = cartesian tl in - NDiscriminationTree.TermSet.fold - (fun x acc -> - NDiscriminationTree.TermListSet.fold (fun l acc' -> NDiscriminationTree.TermListSet.add (x::l) acc') rest acc - ) he NDiscriminationTree.TermListSet.empty -;; - -(* all_keys_of_cic_type: term -> term set *) -let all_keys_of_cic_type metasenv subst context ty = - let saturate ty = - (* Here we are dropping the metasenv, but this should not raise any - exception (hopefully...) *) - let ty,_,hyps = - NCicMetaSubst.saturate ~delta:max_int metasenv subst context ty 0 + solve_rewrite ~params ~automation_cache + (fake_proof, goalno) + in + let proof = lazy (Cic.Meta (-1,[])) in + [(!candidate_no,proof),metasenv,subst,[]],tables, cache, flags + with ProofEngineTypes.Fail _ -> [], tables, cache, flags +(* + let res = Saturation.all_subsumed bag status active passive in + let res' = + List.map + (fun (subst',(_,metasenv,_subst,proof,_, _),open_goals) -> + assert_subst_are_disjoint subst subst'; + let subst = subst@subst' in + let open_goals = + order_new_goals metasenv subst open_goals ppterm + in + let open_goals = + List.map (fun (x,sort) -> x,depth-1,sort) open_goals + in + incr candidate_no; + (!candidate_no,proof),metasenv,subst,open_goals) + res + in + res', (active,passive,bag), cache, flags +*) + end +*) +;; + +let sort_new_elems = + List.sort (fun (_,_,_,l1) (_,_,_,l2) -> + let p1 = List.length (prop_only l1) in + let p2 = List.length (prop_only l2) in + if p1 = p2 then List.length l1 - List.length l2 else p1-p2) +;; + + +let try_candidate dbd + goalty tables subst fake_proof goalno depth context cand += + let ppterm = ppterm context in + try + let actives, passives, bag = tables in + let (_,metasenv,subst,_,_,_), open_goals = + ProofEngineTypes.apply_tactic + (PrimitiveTactics.apply_tac ~term:cand) + (fake_proof,goalno) + in + let tables = actives, passives, + Equality.push_maxmeta bag + (max (Equality.maxmeta bag) (CicMkImplicit.new_meta metasenv subst)) + in + debug_print (lazy (" OK: " ^ ppterm cand)); + let metasenv = CicRefine.pack_coercion_metasenv metasenv in + let open_goals = order_new_goals metasenv subst open_goals ppterm in + let open_goals = List.map (fun (x,sort) -> x,depth-1,sort) open_goals in + incr candidate_no; + Some ((!candidate_no,lazy cand),metasenv,subst,open_goals), tables + with + | ProofEngineTypes.Fail s -> None,tables + | CicUnification.Uncertain s -> None,tables +;; + +let applicative_case dbd + tables depth subst fake_proof goalno goalty metasenv context + signature universe cache flags += + (* let goalty_aux = + match goalty with + | Cic.Appl (hd::tl) -> + Cic.Appl (hd :: HExtlib.mk_list (Cic.Meta (0,[])) (List.length tl)) + | _ -> goalty + in *) + let goalty_aux = goalty in + let candidates = + get_candidates flags.skip_trie_filtering universe cache goalty_aux in - ty,List.length hyps - in - let rec aux ty = - match ty with - NCic.Appl (he::tl) -> - let tl' = - List.map (fun ty -> - let wty = NCicReduction.whd ~delta:0 ~subst context ty in - if ty = wty then - NDiscriminationTree.TermSet.add ty (aux ty) - else - NDiscriminationTree.TermSet.union - (NDiscriminationTree.TermSet.add ty (aux ty)) - (NDiscriminationTree.TermSet.add wty (aux wty)) - ) tl - in - NDiscriminationTree.TermListSet.fold - (fun l acc -> NDiscriminationTree.TermSet.add (NCic.Appl l) acc) - (cartesian ((NDiscriminationTree.TermSet.singleton he)::tl')) - NDiscriminationTree.TermSet.empty - | _ -> NDiscriminationTree.TermSet.empty - in - let ty,ity = saturate ty in - let wty,iwty = saturate (NCicReduction.whd ~delta:0 ~subst context ty) in - if ty = wty then - [ity, NDiscriminationTree.TermSet.add ty (aux ty)] - else - [ity, NDiscriminationTree.TermSet.add ty (aux ty) ; - iwty, NDiscriminationTree.TermSet.add wty (aux wty) ] + (* if the goal is an equality we skip the congruence theorems + let candidates = + if is_equational_case goalty flags + then List.filter not_default_eq_term candidates + else candidates + in *) + let candidates = List.filter (only signature context metasenv) candidates + in + let tables, elems = + List.fold_left + (fun (tables,elems) cand -> + match + try_candidate dbd goalty + tables subst fake_proof goalno depth context cand + with + | None, tables -> tables, elems + | Some x, tables -> tables, x::elems) + (tables,[]) candidates + in + let elems = sort_new_elems elems in + elems, tables, cache ;; -let all_keys_of_type status t = - let _,_,metasenv,subst,_ = status#obj in - let context = ctx_of t in - let status, t = apply_subst status context t in - let keys = - all_keys_of_cic_type metasenv subst context - (snd (term_of_cic_term status t context)) - in - status, - List.map - (fun (intros,keys) -> - intros, - NDiscriminationTree.TermSet.fold - (fun t acc -> Ncic_termSet.add (mk_cic_term context t) acc) - keys Ncic_termSet.empty - ) keys +let try_smart_candidate dbd + goalty tables subst fake_proof goalno depth context cand += + let ppterm = ppterm context in + try + let params = ([],[]) in + let automation_cache = { + AutomationCache.tables = tables ; + AutomationCache.univ = Universe.empty; } + in + debug_print (lazy ("candidato per " ^ string_of_int goalno + ^ ": " ^ CicPp.ppterm cand)); +(* + let (_,metasenv,subst,_,_,_) = fake_proof in + prerr_endline ("metasenv:\n" ^ CicMetaSubst.ppmetasenv [] metasenv); + prerr_endline ("subst:\n" ^ CicMetaSubst.ppsubst ~metasenv subst); +*) + let ((_,metasenv,subst,_,_,_),open_goals) = + apply_smart ~dbd ~term:cand ~params ~automation_cache + (fake_proof, goalno) + in + let metasenv = CicRefine.pack_coercion_metasenv metasenv in + let open_goals = order_new_goals metasenv subst open_goals ppterm in + let open_goals = List.map (fun (x,sort) -> x,depth-1,sort) open_goals in + incr candidate_no; + Some ((!candidate_no,lazy cand),metasenv,subst,open_goals), tables + with + | ProofEngineTypes.Fail s -> None,tables + | CicUnification.Uncertain s -> None,tables +;; + +let smart_applicative_case dbd + tables depth subst fake_proof goalno goalty metasenv context signature + universe cache flags += + let goalty_aux = + match goalty with + | Cic.Appl (hd::tl) -> + Cic.Appl (hd :: HExtlib.mk_list (Cic.Meta (0,[])) (List.length tl)) + | _ -> goalty + in + let smart_candidates = + get_candidates flags.skip_trie_filtering universe cache goalty_aux + in + let candidates = + get_candidates flags.skip_trie_filtering universe cache goalty + in + let smart_candidates = + List.filter + (fun x -> not(List.mem x candidates)) smart_candidates + in + let debug_msg = + (lazy ("smart_candidates" ^ " = " ^ + (String.concat "\n" (List.map CicPp.ppterm smart_candidates)))) in + debug_print debug_msg; + let candidates = List.filter (only signature context metasenv) candidates in + let smart_candidates = + List.filter (only signature context metasenv) smart_candidates + in +(* + let penalty cand depth = + if only signature context metasenv cand then depth else ((prerr_endline ( + "penalizzo " ^ CicPp.ppterm cand));depth -1) + in +*) + let tables, elems = + List.fold_left + (fun (tables,elems) cand -> + match + try_candidate dbd goalty + tables subst fake_proof goalno depth context cand + with + | None, tables -> + (* if normal application fails we try to be smart *) + (match try_smart_candidate dbd goalty + tables subst fake_proof goalno depth context cand + with + | None, tables -> tables, elems + | Some x, tables -> tables, x::elems) + | Some x, tables -> tables, x::elems) + (tables,[]) candidates + in + let tables, smart_elems = + List.fold_left + (fun (tables,elems) cand -> + match + try_smart_candidate dbd goalty + tables subst fake_proof goalno depth context cand + with + | None, tables -> tables, elems + | Some x, tables -> tables, x::elems) + (tables,[]) smart_candidates + in + let elems = sort_new_elems (elems @ smart_elems) in + elems, tables, cache ;; +let equational_and_applicative_case dbd + signature universe flags m s g gty tables cache context += + let goalno, depth, sort = g in + let fake_proof = mk_fake_proof m s g gty context in + if is_equational_case gty flags then + let elems,tables,cache, flags = + equational_case tables cache + depth fake_proof goalno gty s context flags + in + let more_elems, tables, cache = + if flags.use_only_paramod then + [],tables, cache + else + applicative_case dbd + tables depth s fake_proof goalno + gty m context signature universe cache flags + in + elems@more_elems, tables, cache, flags + else + let elems, tables, cache = + match LibraryObjects.eq_URI () with + | Some _ -> + smart_applicative_case dbd tables depth s fake_proof goalno + gty m context signature universe cache flags + | None -> + applicative_case dbd tables depth s fake_proof goalno + gty m context signature universe cache flags + in + elems, tables, cache, flags +;; +let rec condition_for_hint i = function + | [] -> false + | S (_,_,(j,_),_):: tl -> j <> i (* && condition_for_hint i tl *) + | _::tl -> condition_for_hint i tl +;; +let prunable_for_size flags s m todo = + let rec aux b = function + | (S _)::tl -> aux b tl + | (D (_,_,T))::tl -> aux b tl + | (D g)::tl -> + (match calculate_goal_ty g s m with + | None -> aux b tl + | Some (canonical_ctx, gty) -> + let gsize, _ = + Utils.weight_of_term + ~consider_metas:false ~count_metas_occurrences:true gty in + let newb = b || gsize > flags.maxgoalsizefactor in + aux newb tl) + | [] -> b + in + aux false todo -let keys_of_type status orig_ty = - (* Here we are dropping the metasenv (in the status), but this should not - raise any exception (hopefully...) *) - let _, ty, _ = saturate ~delta:max_int status orig_ty in - let _, ty = apply_subst status (ctx_of ty) ty in - let keys = (* - let orig_ty' = NCicTacReduction.normalize ~subst context orig_ty in - if orig_ty' <> orig_ty then - let ty',_,_= NCicMetaSubst.saturate ~delta:0 metasenv subst context orig_ty' 0 in - [ty;ty'] - else - [ty] +let prunable ty todo = + let rec aux b = function + | (S(_,k,_,_))::tl -> aux (b || Equality.meta_convertibility k ty) tl + | (D (_,_,T))::tl -> aux b tl + | D _::_ -> false + | [] -> b + in + aux false todo +;; *) - [ty] in -(*CSC: strange: we keep ty, ty normalized and ty ~delta:(h-1) *) + +let prunable menv subst ty todo = + let rec aux = function + | (S(_,k,_,_))::tl -> + (match Equality.meta_convertibility_subst k ty menv with + | None -> aux tl + | Some variant -> + no_progress variant tl (* || aux tl*)) + | (D (_,_,T))::tl -> aux tl + | _ -> false + and no_progress variant = function + | [] -> (*prerr_endline "++++++++++++++++++++++++ no_progress";*) true + | D ((n,_,P) as g)::tl -> + (match calculate_goal_ty g subst menv with + | None -> no_progress variant tl + | Some (_, gty) -> + (match calculate_goal_ty g variant menv with + | None -> assert false + | Some (_, gty') -> + if gty = gty' then no_progress variant tl +(* +(prerr_endline (string_of_int n); + prerr_endline (CicPp.ppterm gty); + prerr_endline (CicPp.ppterm gty'); + prerr_endline "---------- subst"; + prerr_endline (CicMetaSubst.ppsubst ~metasenv:menv subst); + prerr_endline "---------- variant"; + prerr_endline (CicMetaSubst.ppsubst ~metasenv:menv variant); + prerr_endline "---------- menv"; + prerr_endline (CicMetaSubst.ppmetasenv [] menv); + no_progress variant tl) *) + else false)) + | _::tl -> no_progress variant tl + in + aux todo + +;; +let condition_for_prune_hint prune (m, s, size, don, todo, fl) = + let s = + HExtlib.filter_map (function S (_,_,(c,_),_) -> Some c | _ -> None) todo + in + List.for_all (fun i -> List.for_all (fun j -> i<>j) prune) s +;; +let filter_prune_hint c l = + let prune = !prune_hint in + prune_hint := []; (* possible race... *) + if prune = [] then c,l + else + cache_reset_underinspection c, + List.filter (condition_for_prune_hint prune) l +;; + + + +let + auto_all_solutions dbd tables universe cache context metasenv gl flags += + let signature = + List.fold_left + (fun set g -> + MetadataConstraints.UriManagerSet.union set + (MetadataQuery.signature_of metasenv g) + ) + MetadataConstraints.UriManagerSet.empty gl + in + let goals = order_new_goals metasenv [] gl CicPp.ppterm in + let goals = + List.map + (fun (x,s) -> D (x,flags.maxdepth,s)) goals + in + let elems = [metasenv,[],1,[],goals,[]] in + let rec aux tables solutions cache elems flags = + match auto_main dbd tables context flags signature universe cache elems with + | Gaveup (tables,cache) -> + solutions,cache, tables + | Proved (metasenv,subst,others,tables,cache) -> + if Unix.gettimeofday () > flags.timeout then + ((subst,metasenv)::solutions), cache, tables + else + aux tables ((subst,metasenv)::solutions) cache others flags + in + let rc = aux tables [] cache elems flags in + match rc with + | [],cache,tables -> [],cache,tables + | solutions, cache,tables -> + let solutions = + HExtlib.filter_map + (fun (subst,newmetasenv) -> + let opened = + ProofEngineHelpers.compare_metasenvs ~oldmetasenv:metasenv ~newmetasenv + in + if opened = [] then Some subst else None) + solutions + in + solutions,cache,tables +;; + +(******************* AUTO ***************) + + +let auto dbd flags metasenv tables universe cache context metasenv gl = + let initial_time = Unix.gettimeofday() in + let signature = + List.fold_left + (fun set g -> + MetadataConstraints.UriManagerSet.union set + (MetadataQuery.signature_of metasenv g) + ) + MetadataConstraints.UriManagerSet.empty gl + in + let goals = order_new_goals metasenv [] gl CicPp.ppterm in + let goals = List.map (fun (x,s) -> D(x,flags.maxdepth,s)) goals in + let elems = [metasenv,[],1,[],goals,[]] in + match auto_main dbd tables context flags signature universe cache elems with + | Proved (metasenv,subst,_, tables,cache) -> + debug_print(lazy + ("TIME:"^string_of_float(Unix.gettimeofday()-.initial_time))); + Some (subst,metasenv), cache + | Gaveup (tables,cache) -> + debug_print(lazy + ("TIME:"^string_of_float(Unix.gettimeofday()-.initial_time))); + None,cache +;; + +let auto_tac ~(dbd:HSql.dbd) ~params:(univ,params) ~automation_cache (proof, goal) = + let flags = flags_of_params params () in + let use_library = flags.use_library in + let universe, tables, cache = + init_cache_and_tables + ~dbd ~use_library ~use_context:(not flags.skip_context) + automation_cache univ (proof, goal) + in + let _,metasenv,subst,_,_, _ = proof in + let _,context,goalty = CicUtil.lookup_meta goal metasenv in + let signature = MetadataQuery.signature_of metasenv goal in + let signature = + List.fold_left + (fun set t -> + let ty, _ = + CicTypeChecker.type_of_aux' metasenv context t + CicUniv.oblivion_ugraph + in + MetadataConstraints.UriManagerSet.union set + (MetadataConstraints.constants_of ty) + ) + signature univ + in + let tables,cache = + if flags.close_more then + close_more + tables context (proof, goal) + (auto_all_solutions dbd) signature universe cache + else tables,cache in + let initial_time = Unix.gettimeofday() in + let (_,oldmetasenv,_,_,_, _) = proof in + hint := None; + let elem = + metasenv,subst,1,[],[D (goal,flags.maxdepth,P)],[] + in + match auto_main dbd tables context flags signature universe cache [elem] with + | Proved (metasenv,subst,_, tables,cache) -> + debug_print (lazy + ("TIME:"^string_of_float(Unix.gettimeofday()-.initial_time))); + let proof,metasenv = + ProofEngineHelpers.subst_meta_and_metasenv_in_proof + proof goal subst metasenv + in + let opened = + ProofEngineHelpers.compare_metasenvs ~oldmetasenv + ~newmetasenv:metasenv + in + proof,opened + | Gaveup (tables,cache) -> + debug_print + (lazy ("TIME:"^ + string_of_float(Unix.gettimeofday()-.initial_time))); + raise (ProofEngineTypes.Fail (lazy "Auto gave up")) +;; +*) + +(****************** types **************) +type th_cache = (NCic.context * InvRelDiscriminationTree.t) list + +let keys_of_term status t = + let status, orig_ty = typeof status (ctx_of t) t in + let _, ty, _ = saturate ~delta:max_int status orig_ty in + let keys = [ty] in let keys = let _, ty = term_of_cic_term status ty (ctx_of ty) in match ty with - | NCic.Const (NReference.Ref (_,(NReference.Def h | NReference.Fix (_,_,h)))) - | NCic.Appl (NCic.Const(NReference.Ref(_,(NReference.Def h | NReference.Fix (_,_,h))))::_) + | NCic.Const (NReference.Ref (_,NReference.Def h)) + | NCic.Appl (NCic.Const(NReference.Ref(_,NReference.Def h))::_) when h > 0 -> let _,ty,_= saturate status ~delta:(h-1) orig_ty in ty::keys @@ -697,16 +1121,6 @@ let keys_of_type status orig_ty = status, keys ;; -let all_keys_of_term status t = - let status, orig_ty = typeof status (ctx_of t) t in - all_keys_of_type status orig_ty -;; - -let keys_of_term status t = - let status, orig_ty = typeof status (ctx_of t) t in - keys_of_type status orig_ty -;; - let mk_th_cache status gl = List.fold_left (fun (status, acc) g -> @@ -720,8 +1134,8 @@ let mk_th_cache status gl = List.fold_left (fun (status, i, idx) _ -> let t = mk_cic_term ctx (NCic.Rel i) in + debug_print(lazy("indexing: "^ppterm status t)); let status, keys = keys_of_term status t in - debug_print(lazy("indexing: "^ppterm status t ^ ": " ^ string_of_int (List.length keys))); let idx = List.fold_left (fun idx k -> InvRelDiscriminationTree.index idx k t) idx keys @@ -748,19 +1162,6 @@ let add_to_th t c ty = replace c ;; -let rm_from_th t c ty = - let key_c = ctx_of t in - if not (List.mem_assq key_c c) then assert false - else - let rec replace = function - | [] -> [] - | (x, idx) :: tl when x == key_c -> - (x, InvRelDiscriminationTree.remove_index idx ty t) :: tl - | x :: tl -> x :: replace tl - in - replace c -;; - let pp_idx status idx = InvRelDiscriminationTree.iter idx (fun k set -> @@ -782,10 +1183,10 @@ let pp_th status = let search_in_th gty th = let c = ctx_of gty in let rec aux acc = function - | [] -> (* Ncic_termSet.elements *) acc + | [] -> Ncic_termSet.elements acc | (_::tl) as k -> try - let idx = List.assoc(*q*) k th in + let idx = List.assq k th in let acc = Ncic_termSet.union acc (InvRelDiscriminationTree.retrieve_unifiables idx gty) in @@ -797,42 +1198,12 @@ let search_in_th gty th = type flags = { do_types : bool; (* solve goals in Type *) - last : bool; (* last goal: take first solution only *) - candidates: Ast.term list option; maxwidth : int; maxsize : int; maxdepth : int; timeout : float; } -type cache = - {facts : th_cache; (* positive results *) - under_inspection : cic_term list * th_cache; (* to prune looping *) - unit_eq : NCicParamod.state; - trace: Ast.term list - } - -let add_to_trace ~depth cache t = - match t with - | Ast.NRef _ -> - debug_print ~depth (lazy ("Adding to trace: " ^ CicNotationPp.pp_term t)); - {cache with trace = t::cache.trace} - | Ast.NCic _ (* local candidate *) - | _ -> (*not an application *) cache - -let pptrace tr = - (lazy ("Proof Trace: " ^ (String.concat ";" - (List.map CicNotationPp.pp_term tr)))) -(* not used -let remove_from_trace cache t = - match t with - | Ast.NRef _ -> - (match cache.trace with - | _::tl -> {cache with trace = tl} - | _ -> assert false) - | Ast.NCic _ (* local candidate *) - | _ -> (*not an application *) cache *) - type sort = T | P type goal = int * sort (* goal, depth, sort *) type fail = goal * cic_term @@ -840,7 +1211,7 @@ type candidate = int * Ast.term (* unique candidate number, candidate *) exception Gaveup of IntSet.t (* a sublist of unprovable conjunctive atoms of the input goals *) -exception Proved of NTacStatus.tac_status * Ast.term list +exception Proved of #NTacStatus.tac_status (* let close_failures _ c = c;; *) (* let prunable _ _ _ = false;; *) @@ -848,350 +1219,71 @@ exception Proved of NTacStatus.tac_status * Ast.term list (* let put_in_subst s _ _ _ = s;; *) (* let add_to_cache_and_del_from_orlist_if_green_cut _ _ c _ _ o f _ = c, o, f, false ;; *) (* let cache_add_underinspection c _ _ = c;; *) - -let init_cache ?(facts=[]) ?(under_inspection=[],[]) - ?(unit_eq=NCicParamod.empty_state) - ?(trace=[]) - _ = - {facts = facts; - under_inspection = under_inspection; - unit_eq = unit_eq; - trace = trace} - -let only signature _context candidate = true -(* - (* TASSI: nel trie ci mettiamo solo il body, non il ty *) - let candidate_ty = - NCicTypeChecker.typeof ~subst:[] ~metasenv:[] [] candidate - in - let height = fast_height_of_term candidate_ty in - let rc = signature >= height in - if rc = false then - debug_print (lazy ("Filtro: " ^ NCicPp.ppterm ~context:[] ~subst:[] - ~metasenv:[] candidate ^ ": " ^ string_of_int height)) - else - debug_print (lazy ("Tengo: " ^ NCicPp.ppterm ~context:[] ~subst:[] - ~metasenv:[] candidate ^ ": " ^ string_of_int height)); - - rc *) -;; +let equational_case _ _ _ _ _ _ = [];; +let only _ _ _ = true;; let candidate_no = ref 0;; -let openg_no status = List.length (head_goals status#stack) - -let sort_candidates status ctx candidates = - let _,_,metasenv,subst,_ = status#obj in - let branch cand = - let status,ct = disambiguate status ctx ("",0,cand) None in - let status,t = term_of_cic_term status ct ctx in - let ty = NCicTypeChecker.typeof subst metasenv ctx t in - let res = branch status (mk_cic_term ctx ty) in - debug_print (lazy ("branch factor for: " ^ (ppterm status ct) ^ " = " - ^ (string_of_int res))); - res - in - let candidates = List.map (fun t -> branch t,t) candidates in - let candidates = - List.sort (fun (a,_) (b,_) -> a - b) candidates in - let candidates = List.map snd candidates in - debug_print (lazy ("candidates =\n" ^ (String.concat "\n" - (List.map CicNotationPp.pp_term candidates)))); - candidates - -let sort_new_elems l = - List.sort (fun (_,s1) (_,s2) -> openg_no s1 - openg_no s2) l +let sort_new_elems l = + List.sort (fun (_,_,_,_,l1) (_,_,_,_,l2) -> List.length l1 - List.length l2) l +;; -let try_candidate ?(smart=0) flags depth status eq_cache ctx t = +let try_candidate flags depth status t = try - debug_print ~depth (lazy ("try " ^ CicNotationPp.pp_term t)); - let status = - if smart= 0 then NTactics.apply_tac ("",0,t) status - else if smart = 1 then smart_apply_auto ("",0,t) eq_cache status - else (* smart = 2: both *) - try NTactics.apply_tac ("",0,t) status - with Error _ -> - smart_apply_auto ("",0,t) eq_cache status - in -(* - let og_no = openg_no status in - if (* og_no > flags.maxwidth || *) - ((depth + 1) = flags.maxdepth && og_no <> 0) then - (debug_print ~depth (lazy "pruned immediately"); None) - else *) - (* useless - let status, cict = disambiguate status ctx ("",0,t) None in - let status,ct = term_of_cic_term status cict ctx in - let _,_,metasenv,subst,_ = status#obj in - let ty = NCicTypeChecker.typeof subst metasenv ctx ct in - let res = branch status (mk_cic_term ctx ty) in - if smart=1 && og_no > res then - (print (lazy ("branch factor for: " ^ (ppterm status cict) ^ " = " - ^ (string_of_int res) ^ " vs. " ^ (string_of_int og_no))); - print ~depth (lazy "strange application"); None) - else *) - (incr candidate_no; - Some ((!candidate_no,t),status)) + debug_print ~depth (lazy ("try " ^ CicNotationPp.pp_term t)); + let status = NTactics.apply_tac ("",0,t) status in + let open_goals = head_goals status#stack in + debug_print ~depth + (lazy ("success: "^String.concat " "(List.map string_of_int open_goals))); + if List.length open_goals > flags.maxwidth || + (depth = flags.maxdepth && open_goals <> []) then + (debug_print ~depth (lazy "pruned immediately"); None) + else + (incr candidate_no; + Some ((!candidate_no,t),status,open_goals)) with Error (msg,exn) -> debug_print ~depth (lazy "failed"); None ;; -let sort_of subst metasenv ctx t = - let ty = NCicTypeChecker.typeof subst metasenv ctx t in - let metasenv',ty = NCicUnification.fix_sorts metasenv subst ty in - assert (metasenv = metasenv'); - NCicTypeChecker.typeof subst metasenv ctx ty -;; - -let type0= NUri.uri_of_string ("cic:/matita/pts/Type0.univ") -;; - -let perforate_small subst metasenv context t = - let rec aux = function - | NCic.Appl (hd::tl) -> - let map t = - let s = sort_of subst metasenv context t in - match s with - | NCic.Sort(NCic.Type [`Type,u]) - when u=type0 -> NCic.Meta (0,(0,NCic.Irl 0)) - | _ -> aux t - in - NCic.Appl (hd::List.map map tl) - | t -> t - in - aux t -;; - -let get_cands retrieve_for diff empty gty weak_gty = - let cands = retrieve_for gty in - match weak_gty with - | None -> cands, empty - | Some weak_gty -> - let more_cands = retrieve_for weak_gty in - cands, diff more_cands cands -;; - -let get_candidates ?(smart=true) depth flags status cache signature gty = - let maxd = ((depth + 1) = flags.maxdepth) in +let get_candidates status cache signature gty = let universe = status#auto_cache in - let _,_,metasenv,subst,_ = status#obj in let context = ctx_of gty in let _, raw_gty = term_of_cic_term status gty context in - let raw_weak_gty, weak_gty = - if smart then - match raw_gty with - | NCic.Appl _ - | NCic.Const _ - | NCic.Rel _ -> - let weak = perforate_small subst metasenv context raw_gty in - Some weak, Some (mk_cic_term context weak) - | _ -> None,None - else None,None - in - let global_cands, smart_global_cands = - match flags.candidates with - | Some l when (not maxd) -> l,[] - | Some _ - | None -> - let mapf s = - let to_ast = function - | NCic.Const r when true (*is_relevant statistics r*) -> Some (Ast.NRef r) - | NCic.Const _ -> None - | _ -> assert false in - HExtlib.filter_map - to_ast (NDiscriminationTree.TermSet.elements s) in - let g,l = - get_cands - (NDiscriminationTree.DiscriminationTree.retrieve_unifiables - universe) - NDiscriminationTree.TermSet.diff - NDiscriminationTree.TermSet.empty - raw_gty raw_weak_gty in - mapf g, mapf l in - let local_cands,smart_local_cands = - let mapf s = - let to_ast t = - let _status, t = term_of_cic_term status t context - in Ast.NCic t in - List.map to_ast (Ncic_termSet.elements s) in - let g,l = - get_cands - (fun ty -> search_in_th ty cache) - Ncic_termSet.diff Ncic_termSet.empty gty weak_gty in - mapf g, mapf l in - sort_candidates status context (global_cands@local_cands), - sort_candidates status context (smart_global_cands@smart_local_cands) -;; - -(* old version -let get_candidates ?(smart=true) status cache signature gty = - let universe = status#auto_cache in - let _,_,metasenv,subst,_ = status#obj in - let context = ctx_of gty in - let t_ast t = - let _status, t = term_of_cic_term status t context - in Ast.NCic t in - let c_ast = function - | NCic.Const r -> Ast.NRef r | _ -> assert false in - let _, raw_gty = term_of_cic_term status gty context in - let keys = all_keys_of_cic_term metasenv subst context raw_gty in - (* we only keep those keys that do not require any intros for now *) - let no_intros_keys = snd (List.hd keys) in - let cands = - NDiscriminationTree.TermSet.fold - (fun ty acc -> - NDiscriminationTree.TermSet.union acc - (NDiscriminationTree.DiscriminationTree.retrieve_unifiables - universe ty) - ) no_intros_keys NDiscriminationTree.TermSet.empty in -(* old code: let cands = NDiscriminationTree.DiscriminationTree.retrieve_unifiables - universe raw_gty in -*) - let local_cands = - NDiscriminationTree.TermSet.fold - (fun ty acc -> - Ncic_termSet.union acc (search_in_th (mk_cic_term context ty) cache) - ) no_intros_keys Ncic_termSet.empty in -(* old code: - let local_cands = search_in_th gty cache in -*) - debug_print (lazy ("candidates for" ^ NTacStatus.ppterm status gty)); - debug_print (lazy ("local cands = " ^ (string_of_int (List.length (Ncic_termSet.elements local_cands))))); - let together global local = - List.map c_ast - (List.filter (only signature context) - (NDiscriminationTree.TermSet.elements global)) @ - List.map t_ast (Ncic_termSet.elements local) in - let candidates = together cands local_cands in - let candidates = sort_candidates status context candidates in - let smart_candidates = - if smart then - match raw_gty with - | NCic.Appl _ - | NCic.Const _ - | NCic.Rel _ -> - let weak_gty = perforate_small subst metasenv context raw_gty in - (* - NCic.Appl (hd:: HExtlib.mk_list(NCic.Meta (0,(0,NCic.Irl 0))) - (List.length tl)) in *) - let more_cands = - NDiscriminationTree.DiscriminationTree.retrieve_unifiables - universe weak_gty - in - let smart_cands = - NDiscriminationTree.TermSet.diff more_cands cands in - let cic_weak_gty = mk_cic_term context weak_gty in - let more_local_cands = search_in_th cic_weak_gty cache in - let smart_local_cands = - Ncic_termSet.diff more_local_cands local_cands in - together smart_cands smart_local_cands - (* together more_cands more_local_cands *) - | _ -> [] - else [] + universe raw_gty + in + let cands = + List.filter (only signature context) + (NDiscriminationTree.TermSet.elements cands) in - let smart_candidates = sort_candidates status context smart_candidates in - (* if smart then smart_candidates, [] - else candidates, [] *) - candidates, smart_candidates -;; - -let get_candidates ?(smart=true) flags status cache signature gty = - match flags.candidates with - | None -> get_candidates ~smart status cache signature gty - | Some l -> l,[] -;; *) + List.map (fun t -> + let _status, t = term_of_cic_term status t context in Ast.NCic t) + (search_in_th gty cache) + @ + List.map (function NCic.Const r -> Ast.NRef r | _ -> assert false) cands +;; let applicative_case depth signature status flags gty cache = + let tcache,_ = cache in app_counter:= !app_counter+1; - let _,_,metasenv,subst,_ = status#obj in - let context = ctx_of gty in - let tcache = cache.facts in - let is_prod, is_eq = - let status, t = term_of_cic_term status gty context in - let t = NCicReduction.whd subst context t in - match t with - | NCic.Prod _ -> true, false - | _ -> false, NCicParamod.is_equation metasenv subst context t - in - debug_print~depth (lazy (string_of_bool is_eq)); - (* old - let candidates, smart_candidates = - get_candidates ~smart:(not is_eq) depth - flags status tcache signature gty in - (* if the goal is an equation we avoid to apply unit equalities, - since superposition should take care of them; refl is an - exception since it prompts for convertibility *) - let candidates = - let test x = not (is_a_fact_ast status subst metasenv context x) in - if is_eq then - Ast.Ident("refl",None) ::List.filter test candidates - else candidates in *) - (* new *) - let candidates, smart_candidates = - get_candidates ~smart:true depth - flags status tcache signature gty in - (* if the goal is an equation we avoid to apply unit equalities, - since superposition should take care of them; refl is an - exception since it prompts for convertibility *) - let candidates,smart_candidates = - let test x = not (is_a_fact_ast status subst metasenv context x) in - if is_eq then - Ast.Ident("refl",None) ::List.filter test candidates, - List.filter test smart_candidates - else candidates,smart_candidates in + let candidates = get_candidates status tcache signature gty in debug_print ~depth (lazy ("candidates: " ^ string_of_int (List.length candidates))); - debug_print ~depth - (lazy ("smart candidates: " ^ - string_of_int (List.length smart_candidates))); - (* - let sm = 0 in - let smart_candidates = [] in *) - let sm = if is_eq then 0 else 2 in - let maxd = ((depth + 1) = flags.maxdepth) in - let only_one = flags.last && maxd in - debug_print (lazy ("only_one: " ^ (string_of_bool only_one))); - debug_print (lazy ("maxd: " ^ (string_of_bool maxd))); - let elems = + let elems = List.fold_left (fun elems cand -> - if (only_one && (elems <> [])) then elems - else - if (maxd && not(is_prod) & - not(is_a_fact_ast status subst metasenv context cand)) - then (debug_print (lazy "pruned: not a fact"); elems) - else - match try_candidate (~smart:sm) - flags depth status cache.unit_eq context cand with - | None -> elems - | Some x -> x::elems) + match try_candidate flags depth status cand with + | None -> elems + | Some x -> x::elems) [] candidates in - let more_elems = - if only_one && elems <> [] then elems - else - List.fold_left - (fun elems cand -> - if (only_one && (elems <> [])) then elems - else - if (maxd && not(is_prod) && - not(is_a_fact_ast status subst metasenv context cand)) - then (debug_print (lazy "pruned: not a fact"); elems) - else - match try_candidate (~smart:1) - flags depth status cache.unit_eq context cand with - | None -> elems - | Some x -> x::elems) - [] smart_candidates - in - elems@more_elems + elems ;; exception Found ;; (* gty is supposed to be meta-closed *) -let is_subsumed depth status gty cache = +let is_subsumed depth status gty (_,cache) = if cache=[] then false else ( debug_print ~depth (lazy("Subsuming " ^ (ppterm status gty))); let n,h,metasenv,subst,obj = status#obj in @@ -1203,112 +1295,118 @@ let is_subsumed depth status gty cache = try let idx = List.assq ctx cache in Ncic_termSet.elements - (InvRelDiscriminationTree.retrieve_generalizations idx gty) + (InvRelDiscriminationTree.retrieve_generalizations idx gty) with Not_found -> [] in debug_print ~depth (lazy ("failure candidates: " ^ string_of_int (List.length candidates))); try List.iter - (fun t -> - let _ , source = term_of_cic_term status t ctx in - let implication = - NCic.Prod("foo",source,target) in - let metasenv,j,_,_ = - NCicMetaSubst.mk_meta - metasenv ctx ~with_type:implication `IsType in - let status = status#set_obj (n,h,metasenv,subst,obj) in - let status = status#set_stack [([1,Open j],[],[],`NoTag)] in - try - let status = NTactics.intro_tac "foo" status in - let status = - NTactics.apply_tac ("",0,Ast.NCic (NCic.Rel 1)) status - in - if (head_goals status#stack = []) then raise Found - else () + (fun t -> + let _ , source = term_of_cic_term status t ctx in + let implication = + NCic.Prod("foo",source,target) in + let metasenv,j,_,_ = + NCicMetaSubst.mk_meta + metasenv ctx ~with_type:implication `IsType in + let status = status#set_obj (n,h,metasenv,subst,obj) in + let status = status#set_stack [([1,Open j],[],[],`NoTag)] in + try + let status = NTactics.intro_tac "foo" status in + let status = + NTactics.apply_tac ("",0,Ast.NCic (NCic.Rel 1)) status + in + if (head_goals status#stack = []) then raise Found + else () with - | Error _ -> ()) - candidates;false + | Error _ -> ()) + candidates;false with Found -> debug_print ~depth (lazy "success");true) ;; + +let equational_and_applicative_case + signature flags status g depth gty cache += + let elems = + if false (*is_equational_case gty flags*) then + let elems = + equational_case + signature status flags g gty cache + in + let more_elems = + applicative_case depth + signature status flags gty cache + in + elems@more_elems + else + let elems = + (*match LibraryObjects.eq_URI () with + | Some _ -> + smart_applicative_case dbd tables depth s fake_proof goalno + gty m context signature universe cache flags + | None -> *) + applicative_case depth + signature status flags gty cache + in + elems + in + let elems = + List.map (fun c,s,gl -> + c,1,1,s,List.map (fun i -> + let sort = + let gty = get_goalty s i in + let _, sort = typeof s (ctx_of gty) gty in + match term_of_cic_term s sort (ctx_of sort) with + | _, NCic.Sort NCic.Prop -> P + | _ -> T + in + i,sort) gl) elems + in + (* let elems = sort_new_elems elems in *) + elems, cache +;; + let rec guess_name name ctx = if name = "_" then guess_name "auto" ctx else if not (List.mem_assoc name ctx) then name else guess_name (name^"'") ctx ;; -let is_prod status = - let _, ctx, gty = current_goal status in - let status, gty = apply_subst status ctx gty in - let _, raw_gty = term_of_cic_term status gty ctx in - match raw_gty with - | NCic.Prod (name,src,_) -> - let status, src = whd status ~delta:0 ctx (mk_cic_term ctx src) in - (match snd (term_of_cic_term status src ctx) with - | NCic.Const(NReference.Ref (_,NReference.Ind _) as r) - | NCic.Appl (NCic.Const(NReference.Ref (_,NReference.Ind _) as r)::_) -> - let _,_,itys,_,_ = NCicEnvironment.get_checked_indtys r in - (match itys with - (* | [_,_,_,[_;_]] con nat va, ovviamente, in loop *) - | [_,_,_,[_]] - | [_,_,_,[]] -> `Inductive (guess_name name ctx) - | _ -> `Some (guess_name name ctx)) - | _ -> `Some (guess_name name ctx)) - | _ -> `None - -let intro ~depth status facts name = +let intro ~depth status (tcache,fcache) name = let status = NTactics.intro_tac name status in - let _, ctx, ngty = current_goal status in + let open_goals = head_goals status#stack in + assert (List.length open_goals = 1); + let open_goal = List.hd open_goals in + let ngty = get_goalty status open_goal in + let ctx = ctx_of ngty in let t = mk_cic_term ctx (NCic.Rel 1) in let status, keys = keys_of_term status t in - let facts = List.fold_left (add_to_th t) facts keys in - debug_print ~depth (lazy ("intro: "^ name)); + let tcache = List.fold_left (add_to_th t) tcache keys in + debug_print ~depth (lazy ("intro: "^ string_of_int open_goal)); (* unprovability is not stable w.r.t introduction *) - status, facts -;; - -let rec intros_facts ~depth status facts = - if List.length (head_goals status#stack) <> 1 then status, facts else - match is_prod status with - | `Inductive name - | `Some(name) -> - let status,facts = - intro ~depth status facts name - in intros_facts ~depth status facts -(* | `Inductive name -> - let status = NTactics.case1_tac name status in - intros_facts ~depth status facts *) - | _ -> status, facts -;; - -let intros ~depth status cache = - match is_prod status with - | `Inductive _ - | `Some _ -> - let trace = cache.trace in - let status,facts = - intros_facts ~depth status cache.facts - in - if head_goals status#stack = [] then - let status = NTactics.merge_tac status in - [(0,Ast.Ident("__intros",None)),status], cache - else - (* we reindex the equation from scratch *) - let unit_eq = index_local_equations status#eq_cache status in - let status = NTactics.merge_tac status in - [(0,Ast.Ident("__intros",None)),status], - init_cache ~facts ~unit_eq () ~trace - | _ -> [],cache -;; - -let reduce ~whd ~depth status g = + status, (tcache,[]) +;; + +let rec intros ~depth status cache = + let open_goals = head_goals status#stack in + assert (List.length open_goals = 1); + let open_goal = List.hd open_goals in + let gty = get_goalty status open_goal in + let _, raw_gty = term_of_cic_term status gty (ctx_of gty) in + match raw_gty with + | NCic.Prod (name,_,_) -> + let status,cache = + intro ~depth status cache (guess_name name (ctx_of gty)) + in intros ~depth status cache + | _ -> status, cache, open_goal +;; + +let reduce ~depth status g = let n,h,metasenv,subst,o = status#obj in let attr, ctx, ty = NCicUtils.lookup_meta g metasenv in let ty = NCicUntrusted.apply_subst subst ctx ty in - let ty' = - (if whd then NCicReduction.whd else NCicTacReduction.normalize) ~subst ctx ty - in + let ty' = NCicReduction.whd ~subst ctx ty in if ty = ty' then [] else (debug_print ~depth @@ -1317,40 +1415,17 @@ let reduce ~whd ~depth status g = (g,(attr,ctx,ty'))::(List.filter (fun (i,_) -> i<>g) metasenv) in let status = status#set_obj (n,h,metasenv,subst,o) in - (* we merge to gain a depth level; the previous goal level should - be empty *) - let status = NTactics.merge_tac status in incr candidate_no; - [(!candidate_no,Ast.Ident("__whd",None)),status]) + [(!candidate_no,Ast.Implicit `JustOne),0,0,status,[g,P]]) ;; let do_something signature flags status g depth gty cache = - let l0, cache = intros ~depth status cache in - if l0 <> [] then l0, cache - else - (* whd *) - let l = (*reduce ~whd:true ~depth status g @*) reduce ~whd:true ~depth status g in - (* if l <> [] then l,cache else *) - (* backward aplications *) - let l1 = - List.map - (fun s -> - incr candidate_no; - ((!candidate_no,Ast.Ident("__paramod",None)),s)) - (auto_eq_check cache.unit_eq status) - in - let l2 = - if ((l1 <> []) && flags.last) then [] else - applicative_case depth signature status flags gty cache + let l = reduce ~depth status g in + let l1,cache = + (equational_and_applicative_case + signature flags status g depth gty cache) in - (* statistics *) - List.iter - (fun ((_,t),_) -> toref incr_nominations statistics t) l2; - (* states in l1 have have an empty set of subgoals: no point to sort them *) - debug_print ~depth - (lazy ("alternatives = " ^ (string_of_int (List.length (l1@l@l2))))); - (* l1 @ (sort_new_elems (l @ l2)), cache *) - l1 @ (List.rev l2) @ l, cache + sort_new_elems (l@l1), cache ;; let pp_goal = function @@ -1362,8 +1437,8 @@ let pp_goals status l = String.concat ", " (List.map (fun i -> - let gty = get_goalty status i in - NTacStatus.ppterm status gty) + let gty = get_goalty status i in + NTacStatus.ppterm status gty) l) ;; @@ -1383,20 +1458,20 @@ let sort_tac status = | [] -> assert false | (goals, t, k, tag) :: s -> let g = head_goals status#stack in - let sortedg = - (List.rev (MS.topological_sort g (deps status))) in + let sortedg = + (List.rev (MS.topological_sort g (deps status))) in debug_print (lazy ("old g = " ^ String.concat "," (List.map string_of_int g))); debug_print (lazy ("sorted goals = " ^ - String.concat "," (List.map string_of_int sortedg))); - let is_it i = function - | (_,Continuationals.Stack.Open j ) + String.concat "," (List.map string_of_int sortedg))); + let is_it i = function + | (_,Continuationals.Stack.Open j ) | (_,Continuationals.Stack.Closed j ) -> i = j - in - let sorted_goals = - List.map (fun i -> List.find (is_it i) goals) sortedg - in - (sorted_goals, t, k, tag) :: s + in + let sorted_goals = + List.map (fun i -> List.find (is_it i) goals) sortedg + in + (sorted_goals, t, k, tag) :: s in status#set_stack gstatus ;; @@ -1407,11 +1482,11 @@ let clean_up_tac status = | [] -> assert false | (g, t, k, tag) :: s -> let is_open = function - | (_,Continuationals.Stack.Open _) -> true + | (_,Continuationals.Stack.Open _) -> true | (_,Continuationals.Stack.Closed _) -> false - in - let g' = List.filter is_open g in - (g', t, k, tag) :: s + in + let g' = List.filter is_open g in + (g', t, k, tag) :: s in status#set_stack gstatus ;; @@ -1422,256 +1497,132 @@ let focus_tac focus status = | [] -> assert false | (g, t, k, tag) :: s -> let in_focus = function - | (_,Continuationals.Stack.Open i) + | (_,Continuationals.Stack.Open i) | (_,Continuationals.Stack.Closed i) -> List.mem i focus - in + in let focus,others = List.partition in_focus g - in + in (* we need to mark it as a BranchTag, otherwise cannot merge later *) - (focus,[],[],`BranchTag) :: (others, t, k, tag) :: s + (focus,[],[],`BranchTag) :: (others, t, k, tag) :: s in status#set_stack gstatus ;; -let deep_focus_tac level focus status = - let in_focus = function - | (_,Continuationals.Stack.Open i) - | (_,Continuationals.Stack.Closed i) -> List.mem i focus - in - let rec slice level gs = - if level = 0 then [],[],gs else - match gs with - | [] -> assert false - | (g, t, k, tag) :: s -> - let f,o,gs = slice (level-1) s in - let f1,o1 = List.partition in_focus g - in - (f1,[],[],`BranchTag)::f, (o1, t, k, tag)::o, gs - in - let gstatus = - let f,o,s = slice level status#stack in f@o@s - in - status#set_stack gstatus -;; - -let rec stack_goals level gs = - if level = 0 then [] - else match gs with - | [] -> assert false - | (g,_,_,_)::s -> - let is_open = function - | (_,Continuationals.Stack.Open i) -> Some i - | (_,Continuationals.Stack.Closed _) -> None - in - HExtlib.filter_map is_open g @ stack_goals (level-1) s -;; - -let open_goals level status = stack_goals level status#stack -;; - -let move_to_side level status = -match status#stack with - | [] -> assert false - | (g,_,_,_)::tl -> - let is_open = function - | (_,Continuationals.Stack.Open i) -> Some i - | (_,Continuationals.Stack.Closed _) -> None - in - let others = menv_closure status (stack_goals (level-1) tl) in - List.for_all (fun i -> IntSet.mem i others) - (HExtlib.filter_map is_open g) - -let rec auto_clusters ?(top=false) +let rec auto_clusters flags signature cache depth status : unit = - debug_print ~depth (lazy ("entering auto clusters at depth " ^ - (string_of_int depth))); - debug_print ~depth (pptrace cache.trace); + debug_print ~depth (lazy "entering auto clusters"); (* ignore(Unix.select [] [] [] 0.01); *) let status = clean_up_tac status in let goals = head_goals status#stack in - if goals = [] then - if depth = 0 then raise (Proved (status, cache.trace)) - else - let status = NTactics.merge_tac status in - let cache = - let l,tree = cache.under_inspection in - match l with - | [] -> cache (* possible because of intros that cleans the cache *) - | a::tl -> let tree = rm_from_th a tree a in - {cache with under_inspection = tl,tree} - in - auto_clusters flags signature cache (depth-1) status - else if List.length goals < 2 then - auto_main flags signature cache depth status + if goals = [] then raise (Proved status) + else if depth = flags.maxdepth then raise (Gaveup IntSet.empty) + else if List.length goals < 2 then + auto_main flags signature cache depth status else - let all_goals = open_goals (depth+1) status in debug_print ~depth (lazy ("goals = " ^ - String.concat "," (List.map string_of_int all_goals))); - let classes = HExtlib.clusters (deps status) all_goals in - List.iter - (fun gl -> - if List.length gl > flags.maxwidth then - (debug_print ~depth (lazy "FAIL GLOBAL WIDTH"); - raise (Gaveup IntSet.empty)) - else ()) classes; - if List.length classes = 1 then - let flags = - {flags with last = (List.length all_goals = 1)} in - (* no need to cluster *) - auto_main flags signature cache depth status - else - let classes = if top then List.rev classes else classes in + String.concat "," (List.map string_of_int goals))); + let classes = HExtlib.clusters (deps status) goals in debug_print ~depth - (lazy - (String.concat "\n" - (List.map - (fun l -> - ("cluster:" ^ String.concat "," (List.map string_of_int l))) - classes))); - let status,trace,b = - List.fold_left - (fun (status,trace,b) gl -> - let cache = {cache with trace = trace} in - let flags = - {flags with last = (List.length gl = 1)} in - let lold = List.length status#stack in - debug_print ~depth (lazy ("stack length = " ^ - (string_of_int lold))); - let fstatus = deep_focus_tac (depth+1) gl status in - try + (lazy + (String.concat "\n" + (List.map + (fun l -> + ("cluster:" ^ String.concat "," (List.map string_of_int l))) + classes))); + let status = + List.fold_left + (fun status gl -> + let status = focus_tac gl status in + try debug_print ~depth (lazy ("focusing on" ^ - String.concat "," (List.map string_of_int gl))); - auto_main flags signature cache depth fstatus; assert false - with - | Proved(status,trace) -> - let status = NTactics.merge_tac status in - let lnew = List.length status#stack in - assert (lold = lnew); - (status,trace,true) - | Gaveup _ when top -> (status,trace,b) - ) - (status,cache.trace,false) classes - in - let rec final_merge n s = - if n = 0 then s else final_merge (n-1) (NTactics.merge_tac s) - in let status = final_merge depth status - in if b then raise (Proved(status,trace)) else raise (Gaveup IntSet.empty) + String.concat "," (List.map string_of_int gl))); + auto_main flags signature cache depth status; status + with Proved(status) -> NTactics.merge_tac status) + status classes + in raise (Proved status) and - -(* BRAND NEW VERSION *) + +(* let rec auto_main flags signature cache status k depth = *) + auto_main flags signature cache depth status: unit = debug_print ~depth (lazy "entering auto main"); - debug_print ~depth (pptrace cache.trace); - debug_print ~depth (lazy ("stack length = " ^ - (string_of_int (List.length status#stack)))); (* ignore(Unix.select [] [] [] 0.01); *) let status = sort_tac (clean_up_tac status) in let goals = head_goals status#stack in match goals with - | [] when depth = 0 -> raise (Proved (status,cache.trace)) - | [] -> - let status = NTactics.merge_tac status in - let cache = - let l,tree = cache.under_inspection in - match l with - | [] -> cache (* possible because of intros that cleans the cache *) - | a::tl -> let tree = rm_from_th a tree a in - {cache with under_inspection = tl,tree} - in - auto_clusters flags signature cache (depth-1) status - | orig::_ -> - if depth > 0 && move_to_side depth status - then - let status = NTactics.merge_tac status in - let cache = - let l,tree = cache.under_inspection in - match l with - | [] -> cache (* possible because of intros that cleans the cache*) - | a::tl -> let tree = rm_from_th a tree a in - {cache with under_inspection = tl,tree} - in - auto_clusters flags signature cache (depth-1) status - else - let ng = List.length goals in - (* moved inside auto_clusters *) - if ng > flags.maxwidth then - (print ~depth (lazy "FAIL LOCAL WIDTH"); raise (Gaveup IntSet.empty)) - else if depth = flags.maxdepth then - raise (Gaveup IntSet.empty) - else - let status = NTactics.branch_tac ~force:true status in - let g,gctx, gty = current_goal status in - let ctx,ty = close status g in - let closegty = mk_cic_term ctx ty in - let status, gty = apply_subst status gctx gty in - debug_print ~depth (lazy("Attacking goal " ^ (string_of_int g) ^" : "^ppterm status gty)); - if is_subsumed depth status closegty (snd cache.under_inspection) then - (debug_print ~depth (lazy "SUBSUMED"); - raise (Gaveup IntSet.add g IntSet.empty)) + | [] -> raise (Proved status) + | g::tlg -> + if depth = flags.maxdepth then raise (Gaveup IntSet.empty) else - let new_sig = height_of_goal g status in - if new_sig < signature then - (debug_print (lazy ("news = " ^ (string_of_int new_sig))); - debug_print (lazy ("olds = " ^ (string_of_int signature)))); - let alternatives, cache = + let status = + if tlg=[] then status + else NTactics.branch_tac status in + let status, cache, g = intros ~depth status cache in + let gty = get_goalty status g in + let ctx,ty = close status g in + let closegty = mk_cic_term ctx ty in + let status, gty = apply_subst status (ctx_of gty) gty in + debug_print ~depth (lazy("Attacking goal " ^ (string_of_int g) ^" : "^ppterm status gty)); + if is_subsumed depth status closegty cache then + (debug_print (lazy "SUBSUMED"); + raise (Gaveup IntSet.add g IntSet.empty)) + else + let alternatives, cache = do_something signature flags status g depth gty cache in - let loop_cache = - let l,tree = cache.under_inspection in - let l,tree = closegty::l, add_to_th closegty tree closegty in - {cache with under_inspection = l,tree} in - List.iter - (fun ((_,t),status) -> - debug_print ~depth - (lazy ("(re)considering goal " ^ - (string_of_int g) ^" : "^ppterm status gty)); - debug_print (~depth:depth) - (lazy ("Case: " ^ CicNotationPp.pp_term t)); - let depth,cache = - if t=Ast.Ident("__whd",None) || - t=Ast.Ident("__intros",None) - then depth, cache - else depth+1,loop_cache in - let cache = add_to_trace ~depth cache t in - try - auto_clusters flags signature cache depth status - with Gaveup _ -> - debug_print ~depth (lazy "Failed"); - ()) - alternatives; - raise (debug_print(lazy "no more candidates"); Gaveup IntSet.empty) + let loop_cache = + let tcache,fcache = cache in + tcache,add_to_th closegty fcache closegty in + let unsat = + List.fold_left + (* the underscore information does not need to be returned + by do_something *) + (fun unsat ((_,t),_,_,status,_) -> + let depth',looping_cache = + if t=(Ast.Implicit `JustOne) then depth,cache + else depth+1, loop_cache in + debug_print (~depth:depth') + (lazy ("Case: " ^ CicNotationPp.pp_term t)); + try auto_clusters flags signature loop_cache + depth' status; unsat + with + | Proved status -> + debug_print (~depth:depth') (lazy "proved"); + if tlg=[] then raise (Proved status) + else + let status = NTactics.merge_tac status + in + ( (* old cache, here *) + try auto_clusters flags signature cache + depth status; assert false + with Gaveup f -> + debug_print ~depth + (lazy ("Unsat1 at depth " ^ (string_of_int depth) + ^ ": " ^ + (pp_goals status (IntSet.elements f)))); + (* TODO: cache failures *) + IntSet.union f unsat) + | Gaveup f -> + debug_print (~depth:depth') + (lazy ("Unsat2 at depth " ^ (string_of_int depth') + ^ ": " ^ + (pp_goals status (IntSet.elements f)))); + (* TODO: cache local failures *) + unsat) + IntSet.empty alternatives + in + raise (Gaveup IntSet.add g unsat) ;; - + let int name l def = try int_of_string (List.assoc name l) with Failure _ | Not_found -> def ;; -module AstSet = Set.Make(struct type t = Ast.term let compare = compare end) - -let cleanup_trace s trace = - (* removing duplicates *) - let trace_set = - List.fold_left - (fun acc t -> AstSet.add t acc) - AstSet.empty trace in - let trace = AstSet.elements trace_set - (* filtering facts *) - in List.filter - (fun t -> - match t with - | Ast.NRef (NReference.Ref (u,_)) -> not (is_a_fact_obj s u) - | _ -> false) trace -;; - -let auto_tac ~params:(univ,flags) ?(trace_ref=ref []) status = - let oldstatus = status in - let status = (status:> NTacStatus.tac_status) in +let auto_tac ~params:(_univ,flags) status = let goals = head_goals status#stack in - let status, facts = mk_th_cache status goals in - let unit_eq = index_local_equations status#eq_cache status in - let cache = init_cache ~facts ~unit_eq () in -(* pp_th status facts; *) + let status, cache = mk_th_cache status goals in +(* pp_th status cache; *) (* NDiscriminationTree.DiscriminationTree.iter status#auto_cache (fun p t -> debug_print (lazy( @@ -1681,25 +1632,13 @@ let auto_tac ~params:(univ,flags) ?(trace_ref=ref []) status = (NDiscriminationTree.TermSet.elements t)) ))); *) - let candidates = - match univ with - | None -> None - | Some l -> - let to_Ast t = - let status, res = disambiguate status [] t None in - let _,res = term_of_cic_term status res (ctx_of res) - in Ast.NCic res - in Some (List.map to_Ast l) - in let depth = int "depth" flags 3 in let size = int "size" flags 10 in - let width = int "width" flags 4 (* (3+List.length goals)*) in + let width = int "width" flags (3+List.length goals) in (* XXX fix sort *) -(* let goals = List.map (fun i -> (i,P)) goals in *) - let signature = height_of_goals status in + let goals = List.map (fun i -> (i,P)) goals in + let signature = () in let flags = { - last = true; - candidates = candidates; maxwidth = width; maxsize = size; maxdepth = depth; @@ -1712,38 +1651,29 @@ let auto_tac ~params:(univ,flags) ?(trace_ref=ref []) status = if x > y then (print(lazy ("TIME ELAPSED:"^string_of_float(Unix.gettimeofday()-.initial_time))); - debug_print(lazy + print(lazy ("Applicative nodes:"^string_of_int !app_counter)); raise (Error (lazy "auto gave up", None))) else let _ = debug_print (lazy("\n\nRound "^string_of_int x^"\n")) in let flags = { flags with maxdepth = x } in - try auto_clusters (~top:true) flags signature cache 0 status;assert false -(* - try auto_main flags signature cache 0 status;assert false -*) - with - | Gaveup _ -> up_to (x+1) y - | Proved (s,trace) -> - debug_print (lazy ("proved at depth " ^ string_of_int x)); - List.iter (toref incr_uses statistics) trace; - let trace = cleanup_trace s trace in - let _ = debug_print (pptrace trace) in + try auto_clusters flags signature (cache,[]) 0 status;status + with + | Gaveup _ -> up_to (x+1) y + | Proved s -> + print (lazy ("proved at depth " ^ string_of_int x)); let stack = - match s#stack with - | (g,t,k,f) :: rest -> (filter_open g,t,k,f):: rest - | _ -> assert false + match s#stack with + | (g,t,k,f) :: rest -> (filter_open g,t,k,f):: rest + | _ -> assert false in - let s = s#set_stack stack in - trace_ref := trace; - oldstatus#set_status s + s#set_stack stack in let s = up_to depth depth in - debug_print (print_stat statistics); - debug_print(lazy + print(lazy ("TIME ELAPSED:"^string_of_float(Unix.gettimeofday()-.initial_time))); - debug_print(lazy + print(lazy ("Applicative nodes:"^string_of_int !app_counter)); s ;; diff --git a/helm/software/components/ng_tactics/nnAuto.mli b/helm/software/components/ng_tactics/nnAuto.mli deleted file mode 100644 index 2376a773a..000000000 --- a/helm/software/components/ng_tactics/nnAuto.mli +++ /dev/null @@ -1,38 +0,0 @@ -(* - ||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 is_a_fact_obj: - #NTacStatus.pstatus -> NUri.uri -> bool - -val fast_eq_check_tac: - params:(NTacStatus.tactic_term list option * (string * string) list) -> - 's NTacStatus.tactic - -val paramod_tac: - params:(NTacStatus.tactic_term list option * (string * string) list) -> - 's NTacStatus.tactic - -val demod_tac: - params:(NTacStatus.tactic_term list option* (string * string) list) -> - 's NTacStatus.tactic - -val smart_apply_tac: - NTacStatus.tactic_term -> 's NTacStatus.tactic - -val auto_tac: - params:(NTacStatus.tactic_term list option * (string * string) list) -> - ?trace_ref:CicNotationPt.term list ref -> - 's NTacStatus.tactic - -val keys_of_type: - (#NTacStatus.pstatus as 'a) -> - NTacStatus.cic_term -> 'a * NTacStatus.cic_term list - diff --git a/helm/software/components/registry/.depend b/helm/software/components/registry/.depend index 40c03891a..cf4f36b68 100644 --- a/helm/software/components/registry/.depend +++ b/helm/software/components/registry/.depend @@ -1,3 +1,2 @@ -helm_registry.cmi: helm_registry.cmo: helm_registry.cmi helm_registry.cmx: helm_registry.cmi diff --git a/helm/software/components/registry/.depend.opt b/helm/software/components/registry/.depend.opt index 40c03891a..cf4f36b68 100644 --- a/helm/software/components/registry/.depend.opt +++ b/helm/software/components/registry/.depend.opt @@ -1,3 +1,2 @@ -helm_registry.cmi: helm_registry.cmo: helm_registry.cmi helm_registry.cmx: helm_registry.cmi diff --git a/helm/software/components/syntax_extensions/.depend b/helm/software/components/syntax_extensions/.depend index 119f13093..4b9bcffd4 100644 --- a/helm/software/components/syntax_extensions/.depend +++ b/helm/software/components/syntax_extensions/.depend @@ -1,5 +1,5 @@ -utf8Macro.cmi: -utf8MacroTable.cmo: -utf8MacroTable.cmx: -utf8Macro.cmo: utf8MacroTable.cmo utf8Macro.cmi -utf8Macro.cmx: utf8MacroTable.cmx utf8Macro.cmi +utf8Macro.cmi : +utf8MacroTable.cmo : +utf8MacroTable.cmx : +utf8Macro.cmo : utf8MacroTable.cmo utf8Macro.cmi +utf8Macro.cmx : utf8MacroTable.cmx utf8Macro.cmi diff --git a/helm/software/components/syntax_extensions/.depend.opt b/helm/software/components/syntax_extensions/.depend.opt index 3d7dfc21f..c0cd9c906 100644 --- a/helm/software/components/syntax_extensions/.depend.opt +++ b/helm/software/components/syntax_extensions/.depend.opt @@ -1,5 +1,2 @@ -utf8Macro.cmi: -utf8MacroTable.cmo: -utf8MacroTable.cmx: utf8Macro.cmo: utf8MacroTable.cmx utf8Macro.cmi utf8Macro.cmx: utf8MacroTable.cmx utf8Macro.cmi diff --git a/helm/software/components/tactics/.depend b/helm/software/components/tactics/.depend index d9d6034a1..169fc76b0 100644 --- a/helm/software/components/tactics/.depend +++ b/helm/software/components/tactics/.depend @@ -1,19 +1,11 @@ -proofEngineTypes.cmi: proofEngineHelpers.cmi: proofEngineTypes.cmi -proofEngineReduction.cmi: continuationals.cmi: proofEngineTypes.cmi tacticals.cmi: proofEngineTypes.cmi reductionTactics.cmi: proofEngineTypes.cmi proofEngineStructuralRules.cmi: proofEngineTypes.cmi primitiveTactics.cmi: proofEngineTypes.cmi -hashtbl_equiv.cmi: metadataQuery.cmi: proofEngineTypes.cmi -universe.cmi: autoTypes.cmi: proofEngineTypes.cmi -autoCache.cmi: -paramodulation/utils.cmi: -closeCoercionGraph.cmi: -paramodulation/subst.cmi: paramodulation/equality.cmi: paramodulation/utils.cmi \ paramodulation/subst.cmi paramodulation/founif.cmi: paramodulation/subst.cmi @@ -35,13 +27,10 @@ equalityTactics.cmi: proofEngineTypes.cmi auto.cmi: proofEngineTypes.cmi automationCache.cmi destructTactic.cmi: proofEngineTypes.cmi inversion.cmi: proofEngineTypes.cmi -inversion_principle.cmi: ring.cmi: proofEngineTypes.cmi setoids.cmi: proofEngineTypes.cmi -fourier.cmi: fourierR.cmi: proofEngineTypes.cmi fwdSimplTactic.cmi: proofEngineTypes.cmi -history.cmi: statefulProofEngine.cmi: proofEngineTypes.cmi tactics.cmi: tacticals.cmi proofEngineTypes.cmi automationCache.cmi auto.cmi declarative.cmi: proofEngineTypes.cmi automationCache.cmi auto.cmi diff --git a/helm/software/components/tactics/.depend.opt b/helm/software/components/tactics/.depend.opt index d9d6034a1..169fc76b0 100644 --- a/helm/software/components/tactics/.depend.opt +++ b/helm/software/components/tactics/.depend.opt @@ -1,19 +1,11 @@ -proofEngineTypes.cmi: proofEngineHelpers.cmi: proofEngineTypes.cmi -proofEngineReduction.cmi: continuationals.cmi: proofEngineTypes.cmi tacticals.cmi: proofEngineTypes.cmi reductionTactics.cmi: proofEngineTypes.cmi proofEngineStructuralRules.cmi: proofEngineTypes.cmi primitiveTactics.cmi: proofEngineTypes.cmi -hashtbl_equiv.cmi: metadataQuery.cmi: proofEngineTypes.cmi -universe.cmi: autoTypes.cmi: proofEngineTypes.cmi -autoCache.cmi: -paramodulation/utils.cmi: -closeCoercionGraph.cmi: -paramodulation/subst.cmi: paramodulation/equality.cmi: paramodulation/utils.cmi \ paramodulation/subst.cmi paramodulation/founif.cmi: paramodulation/subst.cmi @@ -35,13 +27,10 @@ equalityTactics.cmi: proofEngineTypes.cmi auto.cmi: proofEngineTypes.cmi automationCache.cmi destructTactic.cmi: proofEngineTypes.cmi inversion.cmi: proofEngineTypes.cmi -inversion_principle.cmi: ring.cmi: proofEngineTypes.cmi setoids.cmi: proofEngineTypes.cmi -fourier.cmi: fourierR.cmi: proofEngineTypes.cmi fwdSimplTactic.cmi: proofEngineTypes.cmi -history.cmi: statefulProofEngine.cmi: proofEngineTypes.cmi tactics.cmi: tacticals.cmi proofEngineTypes.cmi automationCache.cmi auto.cmi declarative.cmi: proofEngineTypes.cmi automationCache.cmi auto.cmi diff --git a/helm/software/components/tactics/auto.ml b/helm/software/components/tactics/auto.ml index a89bbd4a1..973cc1d78 100644 --- a/helm/software/components/tactics/auto.ml +++ b/helm/software/components/tactics/auto.ml @@ -141,7 +141,7 @@ let is_an_equational_goal = function | _ -> false ;; -type auto_params = Cic.term list option * (string * string) list +type auto_params = Cic.term list * (string * string) list let elems = ref [] ;; @@ -377,53 +377,52 @@ let init_cache_and_tables metasenv subst context t None) automation_cache ct in - match restricted_univ with - | None -> - let ct = - if use_context then find_context_theorems context metasenv else [] - in - let lt = - match use_library, dbd with - | true, Some dbd -> find_library_theorems dbd metasenv goal - | _ -> [] - in - let cache = AutoCache.cache_empty in - let cache = cache_add_list cache context (ct@lt) in - let automation_cache = - add_list_to_tables metasenv subst automation_cache ct - in + if restricted_univ = [] then + let ct = + if use_context then find_context_theorems context metasenv else [] + in + let lt = + match use_library, dbd with + | true, Some dbd -> find_library_theorems dbd metasenv goal + | _ -> [] + in + let cache = AutoCache.cache_empty in + let cache = cache_add_list cache context (ct@lt) in + let automation_cache = + add_list_to_tables metasenv subst automation_cache ct + in (* AutomationCache.pp_cache automation_cache; *) - automation_cache.AutomationCache.univ, - automation_cache.AutomationCache.tables, - cache - | Some restricted_univ -> - let t_ty = - List.map - (fun t -> - let ty, _ = CicTypeChecker.type_of_aux' - metasenv ~subst:[] context t CicUniv.oblivion_ugraph - in - t, ty) - restricted_univ - in - (* let automation_cache = AutomationCache.empty () in *) - let automation_cache = - let universe = Universe.empty in - let universe = - Universe.index_list universe context t_ty - in - { automation_cache with AutomationCache.univ = universe } - in - let ct = - if use_context then find_context_theorems context metasenv else t_ty - in - let automation_cache = - add_list_to_tables metasenv subst automation_cache ct - in + automation_cache.AutomationCache.univ, + automation_cache.AutomationCache.tables, + cache + else + let t_ty = + List.map + (fun t -> + let ty, _ = CicTypeChecker.type_of_aux' + metasenv ~subst:[] context t CicUniv.oblivion_ugraph + in + t, ty) + restricted_univ + in + (* let automation_cache = AutomationCache.empty () in *) + let automation_cache = + let universe = Universe.empty in + let universe = + Universe.index_list universe context t_ty + in + { automation_cache with AutomationCache.univ = universe } + in + let ct = + if use_context then find_context_theorems context metasenv else t_ty + in + let automation_cache = + add_list_to_tables metasenv subst automation_cache ct + in (* AutomationCache.pp_cache automation_cache; *) - automation_cache.AutomationCache.univ, - automation_cache.AutomationCache.tables, - cache_empty + automation_cache.AutomationCache.univ, + automation_cache.AutomationCache.tables, + cache_empty ;; let fill_hypothesis context metasenv subst term tables (universe:Universe.universe) cache auto fast = @@ -957,7 +956,7 @@ let demodulate_tac ~dbd ~params:(_,flags as params) ~automation_cache = (***************** applyS *******************) let apply_smart_aux - dbd automation_cache (params:auto_params) proof goal newmeta' metasenv' subst + dbd automation_cache params proof goal newmeta' metasenv' subst context term' ty termty goal_arity = let consthead,newmetasenv,arguments,_ = @@ -1674,7 +1673,7 @@ let try_smart_candidate dbd = let ppterm = ppterm context in try - let params = (None,[]) in + let params = ([],[]) in let automation_cache = { AutomationCache.tables = tables ; AutomationCache.univ = Universe.empty; } @@ -2130,20 +2129,17 @@ let auto_tac ~(dbd:HSql.dbd) ~params:(univ,params) ~automation_cache (proof, goa let _,metasenv,subst,_,_, _ = proof in let _,context,goalty = CicUtil.lookup_meta goal metasenv in let signature = MetadataQuery.signature_of metasenv goal in - let signature = - match univ with - | None -> signature - | Some l -> - List.fold_left - (fun set t -> - let ty, _ = - CicTypeChecker.type_of_aux' metasenv context t - CicUniv.oblivion_ugraph - in - MetadataConstraints.UriManagerSet.union set - (MetadataConstraints.constants_of ty) - ) - signature l + let signature = + List.fold_left + (fun set t -> + let ty, _ = + CicTypeChecker.type_of_aux' metasenv context t + CicUniv.oblivion_ugraph + in + MetadataConstraints.UriManagerSet.union set + (MetadataConstraints.constants_of ty) + ) + signature univ in let tables,cache = if flags.close_more then diff --git a/helm/software/components/tactics/auto.mli b/helm/software/components/tactics/auto.mli index 557d78194..c8a9224cb 100644 --- a/helm/software/components/tactics/auto.mli +++ b/helm/software/components/tactics/auto.mli @@ -23,7 +23,7 @@ * http://cs.unibo.it/helm/. *) -type auto_params = Cic.term list option * (string * string) list +type auto_params = Cic.term list * (string * string) list val auto_tac: dbd:HSql.dbd -> diff --git a/helm/software/components/tactics/declarative.ml b/helm/software/components/tactics/declarative.ml index 02d7c6144..139dcb1f8 100644 --- a/helm/software/components/tactics/declarative.ml +++ b/helm/software/components/tactics/declarative.ml @@ -197,7 +197,7 @@ let rewritingstep ~dbd ~automation_cache lhs rhs just last_step = | `Term just -> Tactics.apply just | `SolveWith term -> Tactics.demodulate ~automation_cache ~dbd - ~params:(Some [term], + ~params:([term], ["all","1";"steps","1"; "use_context","false"]) | `Proof -> Tacticals.id_tac diff --git a/helm/software/components/thread/.depend b/helm/software/components/thread/.depend index 6616a03d0..7759190c6 100644 --- a/helm/software/components/thread/.depend +++ b/helm/software/components/thread/.depend @@ -1,5 +1,3 @@ -threadSafe.cmi: -extThread.cmi: threadSafe.cmo: threadSafe.cmi threadSafe.cmx: threadSafe.cmi extThread.cmo: extThread.cmi diff --git a/helm/software/components/thread/.depend.opt b/helm/software/components/thread/.depend.opt index 6616a03d0..7759190c6 100644 --- a/helm/software/components/thread/.depend.opt +++ b/helm/software/components/thread/.depend.opt @@ -1,5 +1,3 @@ -threadSafe.cmi: -extThread.cmi: threadSafe.cmo: threadSafe.cmi threadSafe.cmx: threadSafe.cmi extThread.cmo: extThread.cmi diff --git a/helm/software/components/tptp_grafite/.depend b/helm/software/components/tptp_grafite/.depend index bf1f2d73e..bc310327f 100644 --- a/helm/software/components/tptp_grafite/.depend +++ b/helm/software/components/tptp_grafite/.depend @@ -1,17 +1,7 @@ parser.cmi: ast.cmo -parserTHF.cmi: astTHF.cmo -tptp2grafite.cmi: -ast.cmo: -ast.cmx: lexer.cmo: parser.cmi lexer.cmx: parser.cmx -astTHF.cmo: -astTHF.cmx: -lexerTHF.cmo: parserTHF.cmi -lexerTHF.cmx: parserTHF.cmx parser.cmo: ast.cmo parser.cmi parser.cmx: ast.cmx parser.cmi -parserTHF.cmo: astTHF.cmo parserTHF.cmi -parserTHF.cmx: astTHF.cmx parserTHF.cmi tptp2grafite.cmo: parser.cmi lexer.cmo ast.cmo tptp2grafite.cmi tptp2grafite.cmx: parser.cmx lexer.cmx ast.cmx tptp2grafite.cmi diff --git a/helm/software/components/tptp_grafite/.depend.opt b/helm/software/components/tptp_grafite/.depend.opt index fb60fe8f2..c74300207 100644 --- a/helm/software/components/tptp_grafite/.depend.opt +++ b/helm/software/components/tptp_grafite/.depend.opt @@ -1,7 +1,4 @@ parser.cmi: ast.cmx -tptp2grafite.cmi: -ast.cmo: -ast.cmx: lexer.cmo: parser.cmi lexer.cmx: parser.cmx parser.cmo: ast.cmx parser.cmi diff --git a/helm/software/components/tptp_grafite/Makefile b/helm/software/components/tptp_grafite/Makefile index e452480d8..c196dd609 100644 --- a/helm/software/components/tptp_grafite/Makefile +++ b/helm/software/components/tptp_grafite/Makefile @@ -1,44 +1,31 @@ PACKAGE = tptp_grafite PREDICATES = -INTERFACE_FILES= parser.mli parserTHF.mli tptp2grafite.mli +INTERFACE_FILES= parser.mli tptp2grafite.mli -IMPLEMENTATION_FILES = ast.ml lexer.ml astTHF.ml lexerTHF.ml $(INTERFACE_FILES:%.mli=%.ml) +IMPLEMENTATION_FILES = ast.ml lexer.ml $(INTERFACE_FILES:%.mli=%.ml) EXTRA_OBJECTS_TO_INSTALL = EXTRA_OBJECTS_TO_CLEAN = -TPTPDIR= /home/$(USER)/work-area/TPTP-v4.0.1/ +TPTPDIR= /home/$(USER)/work-area/TPTP-v3.2.0/ -all: tptp2grafite mainTHF -clean: clean_tests clean_generated - -clean_generated: - rm -f parser.mli parser.ml parserTHF.mli parserTHF.ml - rm -f lexer.ml lexerTHF.ml +all: tptp2grafite +clean: clean_tests clean_tests: rm -f tptp2grafite -lexer.cmo: parser.cmi -lexer.cmx: parser.cmi -lexerTHF.cmo: parserTHF.cmi -lexerTHF.cmx: parserTHF.cmi - -%.mli %.ml: %.mly - ocamlyacc $*.mly -%.ml:%.mll - ocamllex $*.mll +parser.mli parser.ml:parser.mly + ocamlyacc parser.mly +lexer.ml: + ocamllex lexer.mll LOCAL_LINKOPTS = -package helm-$(PACKAGE) -linkpkg tptp2grafite: main.ml tptp_grafite.cma @echo " OCAMLC $<" @$(OCAMLC) $(LOCAL_LINKOPTS) -o $@ $< -mainTHF: mainTHF.ml tptp_grafite.cma - @echo " OCAMLC $<" - @$(OCAMLC) $(LOCAL_LINKOPTS) -o $@ $< - -test: tptp2grafite mainTHF +test: tptp2grafite testall: tptp2grafite for X in `cat unit_equality_problems`; do\ @@ -64,14 +51,6 @@ parse-%: > /dev/null || echo Failed: $$X; \ done -thf: - rm -rf THF - mkdir THF - for x in `cat thf_problems`; do\ - echo $$x;\ - ./mainTHF -tptppath $(TPTPDIR) $$x.p > THF/$$x.ma;\ - done - include ../../Makefile.defs include ../Makefile.common diff --git a/helm/software/components/tptp_grafite/astTHF.ml b/helm/software/components/tptp_grafite/astTHF.ml deleted file mode 100644 index e47c69e65..000000000 --- a/helm/software/components/tptp_grafite/astTHF.ml +++ /dev/null @@ -1,24 +0,0 @@ -type role = - Axiom -| Hypothesis -| Definition -| Assumption -| Lemma -| Theorem -| Conjecture -| Negated_conjecture -| Lemma_conjecture -| Plain -| Fi_domain -| Fi_functors -| Fi_predicates -| Type -| Unknown - - -type ast = - | ThfFormula of string * role * CicNotationPt.term - | ThfDefinition of string * string * CicNotationPt.term - | ThfType of string * string * CicNotationPt.term - | Comment of string - | Inclusion of string * (string list) diff --git a/helm/software/components/tptp_grafite/lexerTHF.mll b/helm/software/components/tptp_grafite/lexerTHF.mll deleted file mode 100644 index 4cbbb61bd..000000000 --- a/helm/software/components/tptp_grafite/lexerTHF.mll +++ /dev/null @@ -1,77 +0,0 @@ -{ - open ParserTHF - exception BadToken of string - - let incr_linenum lexbuf = - let pos = lexbuf.Lexing.lex_curr_p in - lexbuf.Lexing.lex_curr_p <- { pos with - Lexing.pos_lnum = pos.Lexing.pos_lnum + 1; - Lexing.pos_bol = pos.Lexing.pos_cnum; - } - ;; - -} - -let dust = ' ' | '\t' -let comment = '%' [^ '\n' ] * '\n' -let lname = - ['a'-'z'] ['a'-'z''A'-'Z''0'-'9''_']* -let uname = - ['A'-'Z'] ['a'-'z''A'-'Z''0'-'9''_']* -let qstring = ''' [^ ''' ]+ ''' -let type_ = - "axiom" | "hypothesis" | "definition" | "lemma" | "theorem" | - "conjecture" | "lemma_conjecture" | "negated_conjecture" | - "plain" | "unknown" | "type" - -let ieq = "=" -let peq = "equal" -let nieq = "!=" - -rule yylex = parse - | dust { yylex lexbuf } - | '\n' { incr_linenum lexbuf; yylex lexbuf } - | comment { incr_linenum lexbuf; COMMENT (Lexing.lexeme lexbuf) } - | "include" { INCLUSION } - | type_ { TYPE (Lexing.lexeme lexbuf) } - | "thf" { THF } - | "$true" { TRUE } - | "$false" { FALSE } - | "equal" { PEQ } - - | "$i" { TYPE_I } - | "$o" { TYPE_O } - | "$tType" { TYPE_U } - | ">" { TO } - - | lname { LNAME (Lexing.lexeme lexbuf) } - | uname { UNAME (Lexing.lexeme lexbuf) } - - | ['0' - '9']+ { NUM (int_of_string (Lexing.lexeme lexbuf)) } - | ',' { COMMA } - | '.' { DOT } - | '(' { LPAREN } - | ')' { RPAREN } - | '|' { IOR } - | '&' { IAND } - | '~' { NOT } - | '=' { IEQ } - | "=>" { IMPLY } - | "<=" { IMPLYLR } - | "<=>" { COIMPLY } - | "<~>" { XOR } - | "!=" { NIEQ } - | "!" { FORALL } - | "?" { EXISTS } - | "!" { FORALL } - | "^" { LAMBDA } - | "[" { BEGINVARLIST } - | "]" { ENDVARLIST } - | ":" { COLON } - | "," { COMMA } - | "@" { APPLY } - | qstring { QSTRING (Lexing.lexeme lexbuf) } - | eof { EOF } - | _ { raise (BadToken (Lexing.lexeme lexbuf)) } - -{ (* trailer *) } diff --git a/helm/software/components/tptp_grafite/mainTHF.ml b/helm/software/components/tptp_grafite/mainTHF.ml deleted file mode 100644 index aa68fa61e..000000000 --- a/helm/software/components/tptp_grafite/mainTHF.ml +++ /dev/null @@ -1,138 +0,0 @@ -module T = CicNotationPt -module GA = GrafiteAst -module A = AstTHF - -let floc = HExtlib.dummy_floc;; - -(* OPTIONS *) -let tptppath = ref "./";; -let ng = ref false;; -let spec = [ - ("-ng",Arg.Set ng,"Matita ng syntax"); - ("-tptppath", - Arg.String (fun x -> tptppath := x), - "Where to find the Axioms/ and Problems/ directory") -] - -let resolve ~tptppath s = - if s.[0] = '/' then s else - let resolved_name = - if Filename.check_suffix s ".p" then - (assert (String.length s > 5); - let prefix = String.sub s 0 3 in - tptppath ^ "/Problems/" ^ prefix ^ "/" ^ s) - else - tptppath ^ "/" ^ s - in - if HExtlib.is_regular resolved_name then - resolved_name - else - begin - prerr_endline ("Unable to find " ^ s ^ " (" ^ resolved_name ^ ")"); - exit 1 - end -;; - - -let find_related id = - HExtlib.filter_map_monad - (fun acc -> function - | A.ThfDefinition (_,did,dbody) when did = id -> Some dbody, None - | A.ThfType (_,did,dtype) when did = id -> Some dtype, None - | x -> acc, Some x) -;; - -(* MAIN *) -let _ = - let usage = "Usage: tptpTHF2grafite [options] file" in - let inputfile = ref "" in - Arg.parse spec (fun s -> inputfile := s) usage; - if !inputfile = "" then - begin - prerr_endline usage; - exit 1 - end; - let tptppath = !tptppath in - let statements = - let rec aux = function - | [] -> [] - | ((A.Inclusion (file,_)) as hd) :: tl -> - let file = resolve ~tptppath file in - let lexbuf = Lexing.from_channel (open_in file) in - let statements = ParserTHF.main LexerTHF.yylex lexbuf in - hd :: aux (statements @ tl) - | hd::tl -> hd :: aux tl - in - aux [A.Inclusion (!inputfile,[])] - in - let statements = - let rec aux = function - | [] -> [] - | A.Comment s :: tl -> - let s = Pcre.replace ~pat:"\n" ~templ:"" s in - let s = Pcre.replace ~pat:"\\*\\)" ~templ:"" s in - GA.Comment (floc,GA.Note (floc,s)) :: aux tl - | A.Inclusion (s,_) :: tl -> - GA.Comment ( - floc, GA.Note ( - floc,"Inclusion of: " ^ s)) :: aux tl - | A.ThfType(name,id,ty) :: tl -> - let body, tl = find_related id None tl in - let what = match body with None -> `Axiom | _ -> `Definition in - GA.Executable(floc, - GA.NCommand(floc, - GA.NObj(floc, - T.Theorem(what, id,ty,body,`Regular)))) :: aux tl - | A.ThfDefinition(name,id,body) :: tl -> - let ty, tl = find_related id None tl in - let ty = match ty with Some x -> x | None -> T.Implicit `JustOne in - GA.Executable(floc, - GA.NCommand(floc, - GA.NObj(floc, - T.Theorem(`Definition, - id,ty,Some body,`Regular)))):: aux tl - | A.ThfFormula(name,(A.Axiom|A.Hypothesis|A.Assumption),term) :: tl -> - GA.Executable(floc, - GA.NCommand(floc, - GA.NObj(floc, - T.Theorem(`Axiom, name,term,None,`Regular)))):: aux tl - | A.ThfFormula(name,A.Conjecture,term) :: tl -> - GA.Executable(floc, - GA.NCommand(floc, - GA.NObj(floc, - T.Theorem(`Theorem, name, - term,None,`Regular)))):: aux tl - | A.ThfFormula _ :: tl -> assert false - in - aux statements - in - let pp t = - (* ZACK: setting width to 80 will trigger a bug of BoxPp.render_to_string - * which will show up using the following command line: - * ./tptp2grafite -tptppath ~tassi/TPTP-v3.1.1 GRP170-1 *) - let width = max_int in - let term_pp prec content_term = - let pres_term = TermContentPres.pp_ast content_term in - let lookup_uri = fun _ -> None in - let markup = CicNotationPres.render ~lookup_uri ~prec pres_term in - let s = BoxPp.render_to_string List.hd width markup ~map_unicode_to_tex:false in - Pcre.substitute - ~rex:(Pcre.regexp ~flags:[`UTF8] "∀[Ha-z][a-z0-9_]*") ~subst:(fun x -> "\n" ^ x) - s - in - CicNotationPp.set_pp_term (term_pp 90); - let lazy_term_pp = fun x -> assert false in - let obj_pp = CicNotationPp.pp_obj CicNotationPp.pp_term in - Pcre.replace ~pat:"^theorem" ~templ:"ntheorem" - (Pcre.replace ~pat:"^axiom" ~templ:"naxiom" - (Pcre.replace ~pat:"^definition" ~templ:"ndefinition" - (Pcre.replace ~pat:"Type \\\\sub ([0-9]+)" ~templ:"Type[$1]" - (GrafiteAstPp.pp_statement - ~map_unicode_to_tex:false - ~term_pp:(term_pp 19) ~lazy_term_pp ~obj_pp t)))) - in - print_endline (pp (GA.Executable (floc, - GA.Command(floc,GA.Include(floc,true,`OldAndNew,"TPTP.ma"))))); - List.iter (fun x -> print_endline (pp x)) statements; - exit 0 - diff --git a/helm/software/components/tptp_grafite/parserTHF.mly b/helm/software/components/tptp_grafite/parserTHF.mly deleted file mode 100644 index 99606a956..000000000 --- a/helm/software/components/tptp_grafite/parserTHF.mly +++ /dev/null @@ -1,188 +0,0 @@ -%{ - (* header *) - open AstTHF - open Parsing - open Lexing - module T = CicNotationPt - - let parse_error s = Printf.eprintf "%s: " s ;; - let rm_q s = String.sub s 1 (String.length s - 2) ;; - -let reserved = [ - "in","In"; - "to","To"; - "theorem","Theorem"; -];; - -let unreserve k = - try List.assoc k reserved with Not_found -> k -;; - - -%} - %token TYPE - %token COMMENT - %token NUM - %token LNAME - %token UNAME - %token QSTRING - %token COMMA - %token INCLUSION - %token LPAREN - %token RPAREN - %token CNF - %token TRUE - %token FALSE - %token NOT - %token IAND - %token IOR - %token NIEQ - %token IEQ - %token XOR - %token IMPLY - %token IMPLYLR - %token COIMPLY - %token PEQ - %token DOT - %token EOF - %token FORALL - %token EXISTS - %token LAMBDA - %token COLON - %token BEGINVARLIST - %token ENDVARLIST - %token APPLY - %token TYPE_I - %token TYPE_O - %token TYPE_U - %token TO - %token THF - - %left IOR - %left IAND - %nonassoc NOT - %right TO - %left APPLY - - %type main - %start main -%% - main: - | tptp_input EOF {[$1]} - | tptp_input main {$1::$2} - | error { - let start_pos = rhs_start_pos 1 in - let end_pos = rhs_end_pos 1 in - Printf.eprintf "from line %d char %d to line %d char %d\n" - start_pos.pos_lnum (start_pos.pos_cnum - start_pos.pos_bol) - end_pos.pos_lnum (end_pos.pos_cnum - end_pos.pos_bol); - exit 1 - } - ; - - tptp_input: - | annot_formula {$1} - | include_ {$1} - | comment {$1} - ; - - formula_source_and_infos: - | { () } - | COMMA { assert false } - ; - - annot_formula: - | THF LPAREN name COMMA formula_type COMMA - term formula_source_and_infos RPAREN DOT { - match $5 with - | Definition -> - (match $7 with - | T.Appl [T.Symbol("Eq",_);T.Ident(name,_);body] -> - ThfDefinition($3,unreserve name,body) - | _ -> prerr_endline ("near " ^ $3); assert false) - | Type -> - (match $7 with - | T.Cast (T.Ident(name,_),ty) -> ThfType($3,unreserve name,ty) - | _ -> assert false) - | _ -> ThfFormula($3,$5,$7) - } - ; - - formula_type: - | TYPE { - match $1 with - | "axiom" -> Axiom - | "hypothesis" -> Hypothesis - | "definition" -> Definition - | "lemma" -> Lemma - | "theorem" -> Theorem - | "conjecture" -> Conjecture - | "lemma_conjecture" -> Lemma_conjecture - | "negated_conjecture" -> Negated_conjecture - | "plain" -> Plain - | "unknown" -> Unknown - | "type" -> Type - | _ -> assert false - } - ; - - quantifier : - | FORALL {`Forall} - | EXISTS {`Exists} - | LAMBDA {`Lambda} - - vardecl : - | UNAME { T.Ident($1,None), None } - | UNAME COLON term { T.Ident($1,None),Some $3 } - - varlist : - | vardecl { [$1] } - | vardecl COMMA varlist { $1 :: $3 } - - term: - | quantifier BEGINVARLIST varlist ENDVARLIST COLON term { - List.fold_right (fun v t -> T.Binder($1,v,t)) $3 $6 - } - | term APPLY term { - match $1 with - | T.Appl l -> T.Appl (l @ [$3]) - | x -> T.Appl ([$1; $3]) - } - | LPAREN term COLON term RPAREN { T.Cast ($2,$4) } - | term TO term { T.Binder (`Forall,(T.Ident("_",None),Some $1),$3) } - | term IMPLY term { T.Binder (`Forall,(T.Ident("_",None),Some $1),$3) } - | term IMPLYLR term { T.Binder (`Forall,(T.Ident("_",None),Some $3),$1) } - | term COIMPLY term { T.Appl [T.Symbol("Iff",0);$1;$3] } - | term XOR term { T.Appl [T.Symbol("Xor",0);$1;$3] } - | term IEQ term { T.Appl [T.Symbol("Eq",0);$1;$3] } - | term NIEQ term { T.Appl [T.Symbol("NotEq",0);$1;$3] } - | term IAND term { T.Appl [T.Symbol("And",0);$1;$3] } - | term IOR term { T.Appl [T.Symbol("Or",0);$1;$3] } - | NOT term { T.Appl [T.Symbol("Not",0);$2] } - | LPAREN term RPAREN {$2} - | LNAME { T.Ident(unreserve $1,None) } - | UNAME { T.Ident($1,None) } - | TYPE_I { T.Symbol("i",0) } - | TYPE_O { T.Symbol("o",0) } - | TYPE_U { T.Sort (`NType "0") } - | FALSE { T.Symbol("False",0)} - | TRUE { T.Symbol("True",0)} - ; - - include_: - | INCLUSION LPAREN QSTRING selection_of_formulae RPAREN DOT { - let fname = rm_q $3 in - Inclusion (fname,$4) - } - ; - - selection_of_formulae: - | { [] } - | COMMA name selection_of_formulae { $2::$3 } - ; - - comment: COMMENT {Comment $1} ; - - name: NUM { string_of_int $1} | LNAME { $1 } | UNAME { $1 } ; -%% - (* trailer *) diff --git a/helm/software/components/tptp_grafite/thf_problems b/helm/software/components/tptp_grafite/thf_problems deleted file mode 100644 index 830a868b5..000000000 --- a/helm/software/components/tptp_grafite/thf_problems +++ /dev/null @@ -1,2729 +0,0 @@ -SWV438^1 -SWV443^1 -SWV425^2 -SWV428^2 -SWV432^2 -SWV428^1 -SWV431^2 -SWV430^1 -SWV436^3 -SWV439^1 -SWV441^1 -SWV432^1 -SWV426^4 -SWV427^2 -SWV433^1 -SWV427^1 -SWV435^3 -SWV426^3 -SWV444^1 -SWV429^1 -SWV426^2 -SWV430^2 -SWV437^1 -SWV425^1 -SWV440^1 -SWV429^2 -SWV447^1 -SWV426^1 -SWV446^1 -SWV434^3 -SWV442^1 -SWV433^2 -SWV431^1 -SWV436^4 -SWV445^1 -SWV435^4 -SWV434^4 -SYO272^5 -SYO337^5 -SYO130^5 -SYO408^1 -SYO147^5 -SYO466^1 -SYO188^5 -SYO174^5 -SYO165^5 -SYO466^2 -SYO432^1 -SYO228^5 -SYO120^5 -SYO436^1 -SYO184^5 -SYO296^5 -SYO483^6 -SYO284^5 -SYO462^1 -SYO465^1 -SYO278^5 -SYO471^2 -SYO453^5 -SYO217^5 -SYO314^5 -SYO160^5 -SYO302^5 -SYO367^5 -SYO064^4.001 -SYO048^1 -SYO065^4.003 -SYO176^5 -SYO092^5 -SYO245^5 -SYO131^5 -SYO002^1 -SYO063^4 -SYO234^5 -SYO472^4 -SYO159^5 -SYO062^4.003 -SYO424^1 -SYO304^5 -SYO155^5 -SYO468^4 -SYO455^5 -SYO425^1 -SYO457^2 -SYO050^1 -SYO201^5 -SYO112^5 -SYO454^4 -SYO071^4.001 -SYO009^1 -SYO182^5 -SYO482^6 -SYO499^1 -SYO205^5 -SYO462^2 -SYO067^4.004 -SYO193^5 -SYO311^5 -SYO455^2 -SYO049^1 -SYO163^5 -SYO401^1 -SYO455^3 -SYO473^5 -SYO146^5 -SYO305^5 -SYO471^6 -SYO451^6 -SYO241^5 -SYO462^4 -SYO042^1 -SYO448^1 -SYO012^1 -SYO275^5 -SYO026^1 -SYO395^1 -SYO021^1 -SYO065^4.001 -SYO464^2 -SYO010^1 -SYO058^4 -SYO313^5 -SYO303^5 -SYO294^5 -SYO032^1 -SYO232^5 -SYO342^5 -SYO454^2 -SYO463^1 -SYO239^5 -SYO468^3 -SYO379^5 -SYO186^5 -SYO339^5 -SYO455^6 -SYO427^1 -SYO298^5 -SYO397^1 -SYO473^6 -SYO183^5 -SYO461^6 -SYO354^5 -SYO317^5 -SYO100^5 -SYO465^2 -SYO386^5 -SYO474^5 -SYO416^1 -SYO149^5 -SYO464^4 -SYO098^5 -SYO223^5 -SYO450^1 -SYO437^1 -SYO074^4.003 -SYO451^2 -SYO472^6 -SYO462^6 -SYO224^5 -SYO081^5 -SYO085^5 -SYO316^5 -SYO127^5 -SYO072^4.001 -SYO363^5 -SYO072^4.003 -SYO469^2 -SYO216^5 -SYO212^5 -SYO450^6 -SYO373^5 -SYO400^1 -SYO461^2 -SYO290^5 -SYO210^5 -SYO252^5 -SYO221^5 -SYO046^1 -SYO415^1 -SYO069^4.002 -SYO022^1 -SYO460^6 -SYO420^1 -SYO459^6 -SYO478^6 -SYO168^5 -SYO315^5 -SYO403^1 -SYO177^5 -SYO465^5 -SYO079^5 -SYO097^5 -SYO001^1 -SYO348^5 -SYO069^4.001 -SYO454^6 -SYO467^2 -SYO164^5 -SYO497^6 -SYO262^5 -SYO452^6 -SYO464^3 -SYO019^1 -SYO450^4 -SYO291^5 -SYO070^4.003 -SYO471^1 -SYO116^5 -SYO393^1 -SYO114^5 -SYO003^1 -SYO471^4 -SYO453^2 -SYO285^5 -SYO371^5 -SYO173^5 -SYO005^1 -SYO470^3 -SYO271^5 -SYO431^1 -SYO070^4.004 -SYO144^5 -SYO326^5 -SYO269^5 -SYO204^5 -SYO466^6 -SYO004^1 -SYO101^5 -SYO102^5 -SYO484^6 -SYO438^1 -SYO451^1 -SYO074^4.001 -SYO494^6 -SYO109^5 -SYO074^4.002 -SYO067^4.002 -SYO345^5 -SYO052^2 -SYO106^5 -SYO334^5 -SYO189^5 -SYO351^5 -SYO222^5 -SYO378^5 -SYO170^5 -SYO459^4 -SYO470^6 -SYO452^1 -SYO445^1 -SYO380^5 -SYO076^5 -SYO329^5 -SYO029^1 -SYO208^5 -SYO258^5 -SYO073^4.004 -SYO479^6 -SYO467^6 -SYO467^1 -SYO248^5 -SYO207^5 -SYO306^5 -SYO199^5 -SYO444^1 -SYO015^1 -SYO381^5 -SYO051^1 -SYO470^1 -SYO064^4.002 -SYO468^5 -SYO251^5 -SYO453^4 -SYO136^5 -SYO054^2 -SYO218^5 -SYO451^4 -SYO336^5 -SYO430^1 -SYO064^4.004 -SYO171^5 -SYO071^4.002 -SYO469^3 -SYO119^5 -SYO469^5 -SYO105^5 -SYO069^4.003 -SYO061^4 -SYO073^4.003 -SYO008^1 -SYO419^1 -SYO175^5 -SYO288^5 -SYO031^1 -SYO040^1 -SYO358^5 -SYO331^5 -SYO385^5 -SYO292^5 -SYO020^1 -SYO071^4.004 -SYO471^5 -SYO068^4.020 -SYO384^5 -SYO074^4.004 -SYO418^1 -SYO157^5 -SYO247^5 -SYO423^1 -SYO067^4.001 -SYO065^4.002 -SYO023^1 -SYO135^5 -SYO410^1 -SYO362^5 -SYO459^3 -SYO198^5 -SYO140^5 -SYO254^5 -SYO452^3 -SYO280^5 -SYO192^5 -SYO094^5 -SYO088^5 -SYO153^5 -SYO376^5 -SYO346^5 -SYO399^1 -SYO043^1 -SYO377^5 -SYO454^1 -SYO255^5 -SYO489^6 -SYO325^5 -SYO066^4.004 -SYO034^1 -SYO220^5 -SYO369^5 -SYO456^6 -SYO396^1 -SYO498^6 -SYO203^5 -SYO481^6 -SYO055^2 -SYO166^5 -SYO470^5 -SYO495^6 -SYO200^5 -SYO457^1 -SYO412^1 -SYO117^5 -SYO413^1 -SYO458^4 -SYO460^1 -SYO472^5 -SYO493^6 -SYO073^4.001 -SYO405^1 -SYO191^5 -SYO382^5 -SYO268^5 -SYO287^5 -SYO389^5 -SYO394^1 -SYO141^5 -SYO457^5 -SYO454^3 -SYO219^5 -SYO213^5 -SYO426^1 -SYO062^4.004 -SYO257^5 -SYO006^1 -SYO073^4.002 -SYO025^1 -SYO142^5 -SYO129^5 -SYO229^5 -SYO087^5 -SYO250^5 -SYO320^5 -SYO473^1 -SYO267^5 -SYO392^1 -SYO122^5 -SYO450^5 -SYO417^1 -SYO319^5 -SYO463^6 -SYO321^5 -SYO356^5 -SYO167^5 -SYO274^5 -SYO469^1 -SYO467^5 -SYO113^5 -SYO035^1 -SYO488^6 -SYO347^5 -SYO256^5 -SYO107^5 -SYO099^5 -SYO045^1 -SYO458^3 -SYO041^1 -SYO007^1 -SYO039^1 -SYO143^5 -SYO472^2 -SYO068^4.001 -SYO428^1 -SYO332^5 -SYO235^5 -SYO065^4.004 -SYO452^4 -SYO490^6 -SYO295^5 -SYO178^5 -SYO464^5 -SYO162^5 -SYO349^5 -SYO324^5 -SYO447^1 -SYO069^4.004 -SYO457^3 -SYO264^5 -SYO366^5 -SYO158^5 -SYO463^5 -SYO226^5 -SYO333^5 -SYO463^3 -SYO472^3 -SYO110^5 -SYO465^3 -SYO471^3 -SYO335^5 -SYO341^5 -SYO322^5 -SYO473^4 -SYO078^5 -SYO309^5 -SYO279^5 -SYO297^5 -SYO474^3 -SYO350^5 -SYO018^1 -SYO187^5 -SYO340^5 -SYO103^5 -SYO353^5 -SYO123^5 -SYO240^5 -SYO458^6 -SYO475^6 -SYO456^1 -SYO054^1 -SYO086^5 -SYO231^5 -SYO154^5 -SYO391^5 -SYO451^5 -SYO080^5 -SYO312^5 -SYO491^6 -SYO462^3 -SYO249^5 -SYO474^2 -SYO460^5 -SYO033^1 -SYO476^6 -SYO458^5 -SYO487^6 -SYO059^4 -SYO172^5 -SYO028^1 -SYO180^5 -SYO121^5 -SYO206^5 -SYO352^5 -SYO024^1 -SYO470^2 -SYO453^3 -SYO273^5 -SYO263^5 -SYO406^1 -SYO450^2 -SYO460^4 -SYO011^1 -SYO066^4.002 -SYO075^5 -SYO093^5 -SYO237^5 -SYO179^5 -SYO374^5 -SYO328^5 -SYO429^1 -SYO458^1 -SYO443^1 -SYO050^2 -SYO343^5 -SYO323^5 -SYO053^1 -SYO082^5 -SYO067^4.003 -SYO108^5 -SYO261^5 -SYO387^5 -SYO449^1 -SYO238^5 -SYO407^1 -SYO276^5 -SYO084^5 -SYO467^3 -SYO051^2 -SYO435^1 -SYO474^6 -SYO115^5 -SYO056^2 -SYO244^5 -SYO243^5 -SYO464^6 -SYO037^1 -SYO465^4 -SYO111^5 -SYO462^5 -SYO456^4 -SYO458^2 -SYO038^1 -SYO132^5 -SYO473^2 -SYO027^1 -SYO190^5 -SYO197^5 -SYO195^5 -SYO030^1 -SYO286^5 -SYO134^5 -SYO368^5 -SYO456^3 -SYO460^3 -SYO307^5 -SYO344^5 -SYO355^5 -SYO202^5 -SYO365^5 -SYO095^5 -SYO253^5 -SYO459^1 -SYO057^1 -SYO246^5 -SYO442^1 -SYO053^2 -SYO152^5 -SYO070^4.001 -SYO474^1 -SYO066^4.003 -SYO468^6 -SYO300^5 -SYO125^5 -SYO470^4 -SYO402^1 -SYO440^1 -SYO456^2 -SYO214^5 -SYO308^5 -SYO070^4.002 -SYO375^5 -SYO468^2 -SYO016^1 -SYO383^5 -SYO467^4 -SYO090^5 -SYO242^5 -SYO148^5 -SYO196^5 -SYO453^1 -SYO047^1 -SYO370^5 -SYO145^5 -SYO194^5 -SYO126^5 -SYO139^5 -SYO466^3 -SYO485^6 -SYO455^4 -SYO017^1 -SYO066^4.001 -SYO486^6 -SYO209^5 -SYO461^5 -SYO169^5 -SYO433^1 -SYO265^5 -SYO225^5 -SYO459^2 -SYO064^4.003 -SYO057^2 -SYO472^1 -SYO463^4 -SYO450^3 -SYO469^6 -SYO452^5 -SYO161^5 -SYO460^2 -SYO071^4.003 -SYO496^6 -SYO260^5 -SYO301^5 -SYO466^4 -SYO062^4.002 -SYO185^5 -SYO461^3 -SYO211^5 -SYO357^5 -SYO454^5 -SYO089^5 -SYO360^5 -SYO137^5 -SYO455^1 -SYO457^6 -SYO289^5 -SYO474^4 -SYO388^5 -SYO414^1 -SYO451^3 -SYO118^5 -SYO463^2 -SYO277^5 -SYO327^5 -SYO421^1 -SYO464^1 -SYO151^5 -SYO283^5 -SYO133^5 -SYO124^5 -SYO227^5 -SYO338^5 -SYO409^1 -SYO404^1 -SYO236^5 -SYO266^5 -SYO138^5 -SYO128^5 -SYO270^5 -SYO068^4.010 -SYO230^5 -SYO468^1 -SYO330^5 -SYO456^5 -SYO068^4.005 -SYO310^5 -SYO398^1 -SYO215^5 -SYO459^5 -SYO461^4 -SYO318^5 -SYO500^1 -SYO361^5 -SYO473^3 -SYO156^5 -SYO422^1 -SYO434^1 -SYO453^6 -SYO364^5 -SYO411^1 -SYO052^1 -SYO072^4.004 -SYO469^4 -SYO441^1 -SYO457^4 -SYO055^1 -SYO060^4 -SYO390^5 -SYO044^1 -SYO077^5 -SYO181^5 -SYO096^5 -SYO359^5 -SYO013^1 -SYO372^5 -SYO480^6 -SYO282^5 -SYO461^1 -SYO293^5 -SYO439^1 -SYO056^1 -SYO072^4.002 -SYO477^6 -SYO465^6 -SYO233^5 -SYO150^5 -SYO091^5 -SYO281^5 -SYO259^5 -SYO452^2 -SYO492^6 -SYO466^5 -SYO446^1 -SYO104^5 -SYO083^5 -SYO299^5 -LCL613^1 -LCL690^1 -LCL612^1 -LCL600^1 -LCL586^1 -LCL739^5 -LCL718^1 -LCL606^1 -LCL615^1 -LCL618^1 -LCL585^1 -LCL587^1 -LCL623^1 -LCL583^1 -LCL742^5 -LCL230^4 -LCL723^1 -LCL594^1 -LCL624^1 -LCL737^5 -LCL634^1 -LCL584^1 -LCL703^1 -LCL695^1 -LCL607^1 -LCL692^1 -LCL593^1 -LCL591^1 -LCL604^1 -LCL698^1 -LCL706^1 -LCL720^1 -LCL694^1 -LCL588^1 -LCL708^1 -LCL626^1 -LCL595^1 -LCL711^1 -LCL621^1 -LCL596^1 -LCL732^5 -LCL693^1 -LCL710^1 -LCL590^1 -LCL741^5 -LCL731^5 -LCL740^5 -LCL629^1 -LCL627^1 -LCL738^5 -LCL735^5 -LCL743^5 -LCL619^1 -LCL592^1 -LCL699^1 -LCL609^1 -LCL598^1 -LCL705^1 -LCL697^1 -LCL724^1 -LCL721^1 -LCL712^1 -LCL730^5 -LCL625^1 -LCL691^1 -LCL614^1 -LCL715^1 -LCL580^1 -LCL736^5 -LCL716^1 -LCL599^1 -LCL631^1 -LCL597^1 -LCL700^1 -LCL582^1 -LCL696^1 -LCL603^1 -LCL608^1 -LCL717^1 -LCL727^5 -LCL704^1 -LCL632^1 -LCL733^5 -LCL713^1 -LCL601^1 -LCL729^5 -LCL714^1 -LCL725^1 -LCL630^1 -LCL709^1 -LCL620^1 -LCL728^5 -LCL602^1 -LCL726^5 -LCL581^1 -LCL719^1 -LCL707^1 -LCL633^1 -LCL617^1 -LCL722^1 -LCL701^1 -LCL702^1 -LCL181^4 -LCL611^1 -LCL589^1 -LCL734^5 -LCL579^1 -SYN987^1 -SYN977^4 -SYN731^5 -SYN392^4 -SYN992^1 -SYN007^4.014 -SYN045^4 -SYN386^5 -SYN393^4.003 -SYN416^4 -SYN381^5 -SYN049^5 -SYN046^4 -SYN983^1 -SYN374^5 -SYN382^5 -SYN064^5 -SYN393^4.004 -SYN997^1 -SYN998^1 -SYN978^4 -SYN055^5 -SYN389^4 -SYN984^1 -SYN036^5 -SYN001^4.003 -SYN363^5 -SYN358^5 -SYN001^4.004 -SYN996^1 -SYN988^1 -SYN361^5 -SYN355^5 -SYN391^4 -SYN041^4 -SYN991^1 -SYN390^4 -SYN388^4 -SYN364^5 -SYN001^4.001 -SYN040^4 -SYN989^2 -SYN988^2 -SYN365^5 -SYN044^4 -SYN995^1 -SYN387^4 -SYN000^1 -SYN985^1 -SYN357^5 -SYN393^4.002 -SYN990^1 -SYN001^4.002 -SYN360^5 -SYN047^4 -SYN059^5 -SYN375^5 -SYN000^2 -SYN057^5 -SYN994^1 -SYN356^5 -SYN987^2 -SYN058^5 -SYN051^5 -SYN989^1 -SYN916^4 -SYN377^5 -SYN999^1 -SYN915^4 -SYN056^5 -SYN732^5 -SYN993^1 -ALG282^5 -ALG298^5 -ALG256^1 -ALG248^1 -ALG268^4 -ALG290^5 -ALG258^2 -ALG249^3 -ALG251^3 -ALG278^5 -ALG265^2 -ALG257^1 -ALG275^5 -ALG272^5 -ALG270^5 -ALG263^1 -ALG264^2 -ALG266^1 -ALG266^2 -ALG261^2 -ALG292^5 -ALG274^5 -ALG258^1 -ALG253^2 -ALG260^1 -ALG268^1 -ALG251^1 -ALG285^5 -ALG277^5 -ALG263^2 -ALG280^5 -ALG287^5 -ALG284^5 -ALG267^2 -ALG289^5 -ALG286^5 -ALG254^2 -ALG269^2 -ALG257^2 -ALG252^2 -ALG251^2 -ALG288^5 -ALG273^5 -ALG248^3 -ALG268^5 -ALG268^3 -ALG297^5 -ALG269^3 -ALG259^2 -ALG295^5 -ALG281^5 -ALG296^5 -ALG269^4 -ALG001^5 -ALG262^2 -ALG294^5 -ALG254^1 -ALG293^5 -ALG276^5 -ALG264^3 -ALG264^1 -ALG269^1 -ALG253^1 -ALG250^3 -ALG271^5 -ALG283^5 -ALG255^1 -ALG260^2 -ALG268^6 -ALG259^1 -ALG279^5 -ALG263^3 -ALG248^2 -ALG261^1 -ALG247^2 -ALG252^1 -ALG256^2 -ALG291^5 -ALG268^2 -ALG267^1 -GRP001^5 -SEV236^5 -SEV341^5 -SEV299^5 -SEV206^5 -SEV069^5 -SEV251^5 -SEV309^5 -SEV286^5 -SEV356^5 -SEV227^5 -SEV102^5 -SEV040^5 -SEV157^5 -SEV055^5 -SEV059^5 -SEV303^5 -SEV008^5 -SEV129^5 -SEV262^5 -SEV099^5 -SEV295^5 -SEV047^5 -SEV337^5 -SEV006^5 -SEV390^5 -SEV339^5 -SEV306^5 -SEV193^5 -SEV345^5 -SEV138^5 -SEV241^5 -SEV344^5 -SEV070^5 -SEV121^5 -SEV253^5 -SEV403^5 -SEV229^5 -SEV016^5 -SEV273^5 -SEV035^5 -SEV134^5 -SEV252^5 -SEV272^5 -SEV145^5 -SEV338^5 -SEV304^5 -SEV208^5 -SEV233^5 -SEV131^5 -SEV077^5 -SEV413^5 -SEV392^5 -SEV122^5 -SEV275^5 -SEV051^5 -SEV065^5 -SEV380^5 -SEV329^5 -SEV120^5 -SEV048^5 -SEV343^5 -SEV375^5 -SEV014^5 -SEV147^5 -SEV033^5 -SEV091^5 -SEV287^5 -SEV290^5 -SEV311^5 -SEV152^5 -SEV115^5 -SEV171^5 -SEV360^5 -SEV310^5 -SEV036^5 -SEV342^5 -SEV293^5 -SEV271^5 -SEV294^5 -SEV011^5 -SEV210^5 -SEV219^5 -SEV226^5 -SEV019^5 -SEV354^5 -SEV186^5 -SEV312^5 -SEV175^5 -SEV325^5 -SEV018^5 -SEV334^5 -SEV137^5 -SEV280^5 -SEV201^5 -SEV258^5 -SEV034^5 -SEV288^5 -SEV263^5 -SEV100^5 -SEV410^5 -SEV140^5 -SEV020^5 -SEV216^5 -SEV142^5 -SEV162^5 -SEV195^5 -SEV406^5 -SEV355^5 -SEV202^5 -SEV265^5 -SEV071^5 -SEV317^5 -SEV281^5 -SEV207^5 -SEV296^5 -SEV007^5 -SEV298^5 -SEV073^5 -SEV083^5 -SEV028^5 -SEV139^5 -SEV221^5 -SEV234^5 -SEV119^5 -SEV245^5 -SEV373^5 -SEV319^5 -SEV400^5 -SEV151^5 -SEV094^5 -SEV218^5 -SEV377^5 -SEV165^5 -SEV358^5 -SEV246^5 -SEV090^5 -SEV143^5 -SEV079^5 -SEV062^5 -SEV114^5 -SEV331^5 -SEV209^5 -SEV057^5 -SEV243^5 -SEV402^5 -SEV188^5 -SEV023^5 -SEV418^5 -SEV166^5 -SEV316^5 -SEV395^5 -SEV178^5 -SEV156^5 -SEV066^5 -SEV061^5 -SEV323^5 -SEV397^5 -SEV126^5 -SEV283^5 -SEV414^5 -SEV135^5 -SEV371^5 -SEV060^5 -SEV387^5 -SEV068^5 -SEV256^5 -SEV074^5 -SEV198^5 -SEV044^5 -SEV108^5 -SEV124^5 -SEV001^5 -SEV179^5 -SEV197^5 -SEV385^5 -SEV043^5 -SEV200^5 -SEV314^5 -SEV112^5 -SEV277^5 -SEV411^5 -SEV012^5 -SEV089^5 -SEV105^5 -SEV184^5 -SEV381^5 -SEV204^5 -SEV169^5 -SEV223^5 -SEV086^5 -SEV024^5 -SEV106^5 -SEV285^5 -SEV097^5 -SEV374^5 -SEV230^5 -SEV003^5 -SEV328^5 -SEV075^5 -SEV333^5 -SEV146^5 -SEV396^5 -SEV389^5 -SEV181^5 -SEV103^5 -SEV196^5 -SEV408^5 -SEV340^5 -SEV274^5 -SEV409^5 -SEV203^5 -SEV087^5 -SEV282^5 -SEV407^5 -SEV353^5 -SEV168^5 -SEV249^5 -SEV096^5 -SEV133^5 -SEV125^5 -SEV379^5 -SEV199^5 -SEV067^5 -SEV362^5 -SEV350^5 -SEV404^5 -SEV010^5 -SEV365^5 -SEV352^5 -SEV098^5 -SEV026^5 -SEV084^5 -SEV078^5 -SEV158^5 -SEV419^5 -SEV153^5 -SEV161^5 -SEV113^5 -SEV191^5 -SEV190^5 -SEV017^5 -SEV056^5 -SEV307^5 -SEV412^5 -SEV013^5 -SEV394^5 -SEV318^5 -SEV111^5 -SEV058^5 -SEV349^5 -SEV167^5 -SEV361^5 -SEV369^5 -SEV388^5 -SEV150^5 -SEV085^5 -SEV052^5 -SEV242^5 -SEV046^5 -SEV330^5 -SEV382^5 -SEV192^5 -SEV239^5 -SEV118^5 -SEV320^5 -SEV417^5 -SEV027^5 -SEV391^5 -SEV093^5 -SEV183^5 -SEV127^5 -SEV176^5 -SEV212^5 -SEV050^5 -SEV004^5 -SEV015^5 -SEV081^5 -SEV235^5 -SEV261^5 -SEV370^5 -SEV141^5 -SEV185^5 -SEV259^5 -SEV163^5 -SEV025^5 -SEV187^5 -SEV000^5 -SEV238^5 -SEV080^5 -SEV315^5 -SEV278^5 -SEV031^5 -SEV301^5 -SEV297^5 -SEV250^5 -SEV332^5 -SEV363^5 -SEV364^5 -SEV170^5 -SEV326^5 -SEV228^5 -SEV155^5 -SEV030^5 -SEV130^5 -SEV267^5 -SEV205^5 -SEV064^5 -SEV289^5 -SEV042^5 -SEV092^5 -SEV231^5 -SEV159^5 -SEV132^5 -SEV095^5 -SEV401^5 -SEV254^5 -SEV292^5 -SEV291^5 -SEV110^5 -SEV128^5 -SEV107^5 -SEV211^5 -SEV041^5 -SEV247^5 -SEV372^5 -SEV045^5 -SEV109^5 -SEV257^5 -SEV376^5 -SEV225^5 -SEV321^5 -SEV279^5 -SEV039^5 -SEV268^5 -SEV240^5 -SEV386^5 -SEV378^5 -SEV327^5 -SEV313^5 -SEV104^5 -SEV154^5 -SEV393^5 -SEV305^5 -SEV222^5 -SEV368^5 -SEV116^5 -SEV255^5 -SEV177^5 -SEV217^5 -SEV260^5 -SEV182^5 -SEV123^5 -SEV136^5 -SEV002^5 -SEV101^5 -SEV284^5 -SEV220^5 -SEV148^5 -SEV032^5 -SEV322^5 -SEV244^5 -SEV117^5 -SEV053^5 -SEV324^5 -SEV276^5 -SEV248^5 -SEV172^5 -SEV149^5 -SEV054^5 -SEV346^5 -SEV357^5 -SEV348^5 -SEV021^5 -SEV405^5 -SEV384^5 -SEV232^5 -SEV029^5 -SEV308^5 -SEV383^5 -SEV270^5 -SEV072^5 -SEV088^5 -SEV144^5 -SEV359^5 -SEV160^5 -SEV180^5 -SEV237^5 -SEV173^5 -SEV224^5 -SEV266^5 -SEV269^5 -SEV214^5 -SEV367^5 -SEV076^5 -SEV336^5 -SEV022^5 -SEV194^5 -SEV063^5 -SEV038^5 -SEV398^5 -SEV215^5 -SEV351^5 -SEV264^5 -SEV174^5 -SEV082^5 -SEV415^5 -SEV009^5 -SEV164^5 -SEV399^5 -SEV347^5 -SEV213^5 -SEV189^5 -SEV049^5 -SEV335^5 -SEV005^5 -SEV037^5 -SEV366^5 -SEV302^5 -SEV416^5 -SEV300^5 -SET171^3 -SET612^3 -SET587^5 -SET008^5 -SET636^5 -SET683^3 -SET647^3 -SET624^5 -SET621^5 -SET604^5 -SET557^1 -SET585^5 -SET606^5 -SET616^5 -SET027^5 -SET657^3 -SET200^5 -SET753^4 -SET586^5 -SET593^5 -SET063^5 -SET605^5 -SET680^3 -SET615^5 -SET613^5 -SET589^5 -SET724^4 -SET582^5 -SET629^5 -SET557^5 -SET618^5 -SET591^5 -SET014^4 -SET598^5 -SET592^5 -SET171^5 -SET185^5 -SET628^5 -SET609^5 -SET594^5 -SET606^3 -SET199^5 -SET615^3 -SET162^5 -SET066^1 -SET044^5 -SET011^5 -SET631^5 -SET614^3 -SET580^5 -SET752^4 -SET619^5 -SET143^5 -SET611^3 -SET067^1 -SET599^5 -SET196^5 -SET183^5 -SET603^5 -SET086^1 -SET669^3 -SET580^3 -SET009^5 -SET596^5 -SET673^3 -SET590^5 -SET622^5 -SET610^5 -SET194^5 -SET635^5 -SET595^5 -SET608^5 -SET607^5 -SET716^4 -SET169^5 -SET741^4 -SET624^3 -SET626^5 -SET201^5 -SET588^5 -SET634^5 -SET640^3 -SET601^5 -SET764^4 -SET649^3 -SET017^1 -SET614^5 -SET648^3 -SET607^3 -SET625^5 -SET630^3 -SET175^5 -SET627^5 -SET671^3 -SET143^3 -SET584^5 -SET043^5 -SET623^5 -SET646^3 -SET620^5 -SET623^3 -SET747^4 -SET597^5 -SET062^5 -SET096^1 -SET010^5 -SET173^5 -SET076^1 -SET014^5 -SET633^5 -SET651^3 -SET144^5 -SET159^5 -SET045^5 -SET672^3 -SET632^5 -SET670^3 -SET617^5 -SET630^5 -SET638^5 -SET600^5 -SET684^3 -SET609^3 -SET046^5 -SET601^3 -SET612^5 -SET611^5 -COM024^5 -GRA039^2 -GRA032^1 -GRA062^2 -GRA065^1 -GRA059^2 -GRA039^1 -GRA073^1 -GRA037^1 -GRA068^2 -GRA048^1 -GRA057^2 -GRA060^1 -GRA036^1 -GRA032^2 -GRA043^1 -GRA070^1 -GRA067^1 -GRA051^1 -GRA051^2 -GRA046^1 -GRA050^1 -GRA055^2 -GRA073^2 -GRA033^2 -GRA053^2 -GRA041^2 -GRA044^2 -GRA064^1 -GRA074^1 -GRA068^1 -GRA057^1 -GRA049^2 -GRA041^1 -GRA028^1 -GRA045^2 -GRA048^2 -GRA031^2 -GRA038^1 -GRA058^1 -GRA074^2 -GRA058^2 -GRA047^1 -GRA049^1 -GRA072^1 -GRA063^1 -GRA044^1 -GRA030^1 -GRA027^1 -GRA035^2 -GRA064^2 -GRA038^2 -GRA052^1 -GRA033^1 -GRA071^1 -GRA047^2 -GRA052^2 -GRA063^2 -GRA071^2 -GRA069^2 -GRA070^2 -GRA043^2 -GRA062^1 -GRA037^2 -GRA059^1 -GRA065^2 -GRA042^1 -GRA050^2 -GRA034^1 -GRA031^1 -GRA029^2 -GRA029^1 -GRA061^2 -GRA040^2 -GRA054^2 -GRA034^2 -GRA046^2 -GRA072^2 -GRA040^1 -GRA056^2 -GRA066^2 -GRA060^2 -GRA056^1 -GRA066^1 -GRA055^1 -GRA053^1 -GRA036^2 -GRA061^1 -GRA035^1 -GRA042^2 -GRA045^1 -GRA054^1 -GRA067^2 -GRA069^1 -PUZ096^5 -PUZ120^5 -PUZ110^5 -PUZ125^5 -PUZ090^5 -PUZ093^5 -PUZ111^5 -PUZ122^5 -PUZ099^5 -PUZ081^3 -PUZ109^5 -PUZ082^1 -PUZ085^1 -PUZ083^1 -PUZ117^5 -PUZ102^5 -PUZ105^5 -PUZ113^5 -PUZ091^5 -PUZ108^5 -PUZ097^5 -PUZ047^5 -PUZ094^5 -PUZ081^2 -PUZ106^5 -PUZ101^5 -PUZ112^5 -PUZ031^5 -PUZ118^5 -PUZ100^5 -PUZ124^5 -PUZ123^5 -PUZ116^5 -PUZ126^5 -PUZ103^5 -PUZ127^5 -PUZ089^5 -PUZ114^5 -PUZ119^5 -PUZ081^1 -PUZ088^5 -PUZ115^5 -PUZ087^1 -PUZ098^5 -PUZ092^5 -PUZ086^1 -PUZ095^5 -PUZ104^5 -PUZ084^1 -PUZ121^5 -PUZ107^5 -SEU546^1 -SEU666^2 -SEU918^5 -SEU543^2 -SEU659^2 -SEU819^2 -SEU852^5 -SEU929^5 -SEU873^5 -SEU965^5 -SEU949^5 -SEU732^1 -SEU713^2 -SEU490^1 -SEU778^2 -SEU975^5 -SEU560^1 -SEU663^1 -SEU673^1 -SEU787^1 -SEU957^5 -SEU741^2 -SEU629^2 -SEU792^1 -SEU684^2 -SEU553^2 -SEU854^5 -SEU800^1 -SEU470^1 -SEU790^2 -SEU974^5 -SEU888^5 -SEU552^1 -SEU832^5 -SEU700^1 -SEU591^2 -SEU587^1 -SEU771^2 -SEU952^5 -SEU712^1 -SEU608^2 -SEU784^2 -SEU579^1 -SEU718^2 -SEU827^1 -SEU656^1 -SEU697^1 -SEU660^1 -SEU637^1 -SEU594^1 -SEU791^1 -SEU548^2 -SEU665^1 -SEU495^1 -SEU865^5 -SEU472^1 -SEU740^2 -SEU463^1 -SEU904^5 -SEU502^2 -SEU499^1 -SEU970^5 -SEU546^2 -SEU513^1 -SEU512^1 -SEU548^1 -SEU634^1 -SEU761^2 -SEU921^5 -SEU619^1 -SEU588^1 -SEU571^1 -SEU740^1 -SEU706^1 -SEU769^1 -SEU989^5 -SEU871^5 -SEU695^1 -SEU642^2 -SEU526^1 -SEU824^2 -SEU465^1 -SEU759^1 -SEU953^5 -SEU513^2 -SEU643^1 -SEU503^2 -SEU645^2 -SEU684^1 -SEU569^2 -SEU452^1 -SEU799^2 -SEU928^5 -SEU651^2 -SEU968^5 -SEU916^5 -SEU702^2 -SEU863^5 -SEU644^2 -SEU917^5 -SEU774^2 -SEU940^5 -SEU461^1 -SEU464^1 -SEU670^2 -SEU743^1 -SEU650^1 -SEU663^2 -SEU543^1 -SEU922^5 -SEU826^1 -SEU609^2 -SEU747^2 -SEU582^1 -SEU942^5 -SEU931^5 -SEU550^1 -SEU941^5 -SEU920^5 -SEU626^1 -SEU605^2 -SEU950^5 -SEU770^2 -SEU717^2 -SEU607^2 -SEU466^1 -SEU818^2 -SEU788^2 -SEU530^2 -SEU563^2 -SEU866^5 -SEU633^1 -SEU596^1 -SEU807^1 -SEU848^5 -SEU597^2 -SEU725^2 -SEU535^1 -SEU685^2 -SEU676^2 -SEU615^2 -SEU935^5 -SEU884^5 -SEU653^1 -SEU696^2 -SEU673^2 -SEU655^1 -SEU721^2 -SEU558^2 -SEU575^2 -SEU640^1 -SEU521^1 -SEU804^1 -SEU875^5 -SEU741^1 -SEU514^1 -SEU674^1 -SEU664^1 -SEU788^1 -SEU593^2 -SEU487^1 -SEU575^1 -SEU913^5 -SEU812^2 -SEU523^2 -SEU946^5 -SEU705^2 -SEU674^2 -SEU841^5 -SEU905^5 -SEU629^1 -SEU619^2 -SEU693^1 -SEU512^2 -SEU579^2 -SEU462^1 -SEU493^1 -SEU627^2 -SEU500^2 -SEU577^1 -SEU699^1 -SEU767^1 -SEU885^5 -SEU803^1 -SEU565^2 -SEU816^1 -SEU820^2 -SEU793^2 -SEU760^2 -SEU783^1 -SEU816^2 -SEU892^5 -SEU707^1 -SEU881^5 -SEU622^2 -SEU563^1 -SEU644^1 -SEU606^2 -SEU855^5 -SEU765^1 -SEU636^1 -SEU507^2 -SEU769^2 -SEU776^1 -SEU668^1 -SEU723^2 -SEU744^2 -SEU582^2 -SEU497^1 -SEU843^5 -SEU677^1 -SEU692^1 -SEU610^1 -SEU786^1 -SEU688^2 -SEU636^2 -SEU600^2 -SEU577^2 -SEU726^2 -SEU906^5 -SEU992^5 -SEU901^5 -SEU625^2 -SEU574^2 -SEU589^1 -SEU737^1 -SEU479^1 -SEU539^2 -SEU729^1 -SEU729^2 -SEU511^1 -SEU638^2 -SEU880^5 -SEU555^1 -SEU939^5 -SEU998^5 -SEU504^2 -SEU679^1 -SEU823^1 -SEU701^1 -SEU710^2 -SEU768^2 -SEU573^2 -SEU525^1 -SEU648^2 -SEU786^2 -SEU558^1 -SEU706^2 -SEU510^2 -SEU712^2 -SEU976^5 -SEU926^5 -SEU652^1 -SEU990^5 -SEU822^2 -SEU962^5 -SEU637^2 -SEU635^2 -SEU753^2 -SEU853^5 -SEU477^1 -SEU584^1 -SEU590^2 -SEU640^2 -SEU800^2 -SEU567^2 -SEU986^5 -SEU802^1 -SEU574^1 -SEU569^1 -SEU538^2 -SEU993^5 -SEU724^1 -SEU762^1 -SEU628^2 -SEU655^2 -SEU641^2 -SEU654^1 -SEU494^1 -SEU604^2 -SEU676^1 -SEU578^2 -SEU623^2 -SEU625^1 -SEU956^5 -SEU780^1 -SEU778^1 -SEU744^1 -SEU724^2 -SEU524^2 -SEU459^1 -SEU478^1 -SEU908^5 -SEU847^5 -SEU669^1 -SEU987^5 -SEU588^2 -SEU810^1 -SEU509^1 -SEU639^1 -SEU481^1 -SEU523^1 -SEU981^5 -SEU647^2 -SEU995^5 -SEU626^2 -SEU671^1 -SEU802^2 -SEU787^2 -SEU750^2 -SEU603^1 -SEU586^2 -SEU882^5 -SEU687^1 -SEU711^2 -SEU638^1 -SEU609^1 -SEU585^2 -SEU746^2 -SEU831^5 -SEU733^1 -SEU742^2 -SEU710^1 -SEU766^1 -SEU809^2 -SEU564^2 -SEU912^5 -SEU680^1 -SEU507^1 -SEU476^1 -SEU948^5 -SEU611^1 -SEU622^1 -SEU678^1 -SEU570^1 -SEU836^5 -SEU780^2 -SEU639^2 -SEU624^1 -SEU878^5 -SEU902^5 -SEU654^2 -SEU483^1 -SEU988^5 -SEU814^2 -SEU890^5 -SEU667^1 -SEU945^5 -SEU934^5 -SEU782^1 -SEU595^1 -SEU551^1 -SEU489^1 -SEU704^2 -SEU969^5 -SEU746^1 -SEU821^1 -SEU725^1 -SEU534^1 -SEU496^1 -SEU554^1 -SEU757^1 -SEU977^5 -SEU618^1 -SEU947^5 -SEU565^1 -SEU549^1 -SEU506^2 -SEU595^2 -SEU803^2 -SEU685^1 -SEU606^1 -SEU594^2 -SEU698^1 -SEU761^1 -SEU732^2 -SEU642^1 -SEU616^1 -SEU840^5 -SEU797^2 -SEU527^1 -SEU469^1 -SEU933^5 -SEU722^2 -SEU943^5 -SEU547^1 -SEU653^2 -SEU659^1 -SEU615^1 -SEU628^1 -SEU717^1 -SEU796^1 -SEU571^2 -SEU966^5 -SEU752^1 -SEU893^5 -SEU783^2 -SEU541^1 -SEU735^1 -SEU756^1 -SEU500^1 -SEU822^1 -SEU869^5 -SEU518^1 -SEU561^1 -SEU475^1 -SEU651^1 -SEU883^5 -SEU728^1 -SEU754^2 -SEU899^5 -SEU515^2 -SEU891^5 -SEU508^2 -SEU667^2 -SEU566^1 -SEU657^1 -SEU503^1 -SEU806^1 -SEU731^1 -SEU598^1 -SEU557^1 -SEU844^5 -SEU996^5 -SEU486^1 -SEU682^1 -SEU779^2 -SEU658^2 -SEU567^1 -SEU610^2 -SEU887^5 -SEU781^1 -SEU596^2 -SEU613^2 -SEU647^1 -SEU568^2 -SEU868^5 -SEU824^3 -SEU815^1 -SEU897^5 -SEU811^2 -SEU605^1 -SEU752^2 -SEU549^2 -SEU796^2 -SEU509^2 -SEU751^1 -SEU485^1 -SEU896^5 -SEU664^2 -SEU620^1 -SEU932^5 -SEU773^2 -SEU680^2 -SEU576^1 -SEU851^5 -SEU833^5 -SEU745^2 -SEU919^5 -SEU508^1 -SEU601^1 -SEU691^1 -SEU856^5 -SEU617^2 -SEU618^2 -SEU799^1 -SEU559^2 -SEU614^2 -SEU791^2 -SEU645^1 -SEU620^2 -SEU689^2 -SEU562^2 -SEU727^1 -SEU694^1 -SEU805^1 -SEU879^5 -SEU776^2 -SEU775^1 -SEU709^2 -SEU818^1 -SEU656^2 -SEU458^1 -SEU978^5 -SEU529^2 -SEU536^2 -SEU747^1 -SEU551^2 -SEU474^1 -SEU621^2 -SEU603^2 -SEU544^2 -SEU795^1 -SEU755^1 -SEU999^5 -SEU792^2 -SEU900^5 -SEU937^5 -SEU737^2 -SEU665^2 -SEU699^2 -SEU708^1 -SEU972^5 -SEU817^1 -SEU814^1 -SEU719^1 -SEU556^1 -SEU789^1 -SEU867^5 -SEU915^5 -SEU601^2 -SEU535^2 -SEU482^1 -SEU612^2 -SEU515^1 -SEU504^1 -SEU456^1 -SEU798^1 -SEU911^5 -SEU714^1 -SEU963^5 -SEU984^5 -SEU714^2 -SEU672^2 -SEU617^1 -SEU820^1 -SEU745^1 -SEU774^1 -SEU672^1 -SEU795^2 -SEU514^2 -SEU669^2 -SEU521^2 -SEU849^5 -SEU516^1 -SEU632^2 -SEU692^2 -SEU681^2 -SEU696^1 -SEU997^5 -SEU960^5 -SEU580^1 -SEU764^2 -SEU522^1 -SEU602^2 -SEU964^5 -SEU528^1 -SEU789^2 -SEU707^2 -SEU708^2 -SEU804^2 -SEU924^5 -SEU604^1 -SEU683^2 -SEU661^1 -SEU785^2 -SEU631^2 -SEU537^2 -SEU484^1 -SEU501^2 -SEU516^2 -SEU686^1 -SEU677^2 -SEU860^5 -SEU632^1 -SEU909^5 -SEU573^1 -SEU607^1 -SEU813^1 -SEU510^1 -SEU695^2 -SEU755^2 -SEU581^2 -SEU529^1 -SEU821^2 -SEU592^1 -SEU794^1 -SEU748^1 -SEU688^1 -SEU834^5 -SEU506^1 -SEU679^2 -SEU562^1 -SEU734^1 -SEU790^1 -SEU566^2 -SEU467^1 -SEU641^1 -SEU511^2 -SEU693^2 -SEU591^1 -SEU817^2 -SEU502^1 -SEU734^2 -SEU537^1 -SEU621^1 -SEU815^2 -SEU793^1 -SEU536^1 -SEU797^1 -SEU726^1 -SEU488^1 -SEU690^2 -SEU733^2 -SEU643^2 -SEU608^1 -SEU697^2 -SEU526^2 -SEU683^1 -SEU650^2 -SEU738^2 -SEU675^2 -SEU578^1 -SEU570^2 -SEU798^2 -SEU825^3 -SEU771^1 -SEU611^2 -SEU649^2 -SEU839^5 -SEU961^5 -SEU531^2 -SEU480^1 -SEU775^2 -SEU662^1 -SEU715^2 -SEU750^1 -SEU801^2 -SEU552^2 -SEU473^1 -SEU525^2 -SEU630^1 -SEU772^1 -SEU808^1 -SEU877^5 -SEU614^1 -SEU613^1 -SEU824^1 -SEU547^2 -SEU652^2 -SEU991^5 -SEU808^2 -SEU805^2 -SEU561^2 -SEU973^5 -SEU876^5 -SEU903^5 -SEU857^5 -SEU716^2 -SEU646^2 -SEU460^1 -SEU498^1 -SEU660^2 -SEU735^2 -SEU557^2 -SEU823^2 -SEU730^2 -SEU720^2 -SEU634^2 -SEU731^2 -SEU925^5 -SEU980^5 -SEU813^2 -SEU612^1 -SEU874^5 -SEU686^2 -SEU898^5 -SEU568^1 -SEU736^1 -SEU739^1 -SEU597^1 -SEU532^2 -SEU661^2 -SEU592^2 -SEU930^5 -SEU586^1 -SEU763^1 -SEU627^1 -SEU907^5 -SEU955^5 -SEU539^1 -SEU709^1 -SEU914^5 -SEU718^1 -SEU553^1 -SEU861^5 -SEU758^1 -SEU671^2 -SEU864^5 -SEU728^2 -SEU759^2 -SEU540^1 -SEU738^1 -SEU517^1 -SEU550^2 -SEU542^1 -SEU895^5 -SEU845^5 -SEU770^1 -SEU784^1 -SEU657^2 -SEU951^5 -SEU690^1 -SEU777^1 -SEU519^2 -SEU687^2 -SEU545^2 -SEU635^1 -SEU703^2 -SEU772^2 -SEU468^1 -SEU648^1 -SEU700^2 -SEU983^5 -SEU649^1 -SEU520^1 -SEU705^1 -SEU703^1 -SEU542^2 -SEU527^2 -SEU538^1 -SEU593^1 -SEU518^2 -SEU572^2 -SEU519^1 -SEU689^1 -SEU630^2 -SEU505^1 -SEU631^1 -SEU944^5 -SEU850^5 -SEU810^2 -SEU560^2 -SEU678^2 -SEU564^1 -SEU819^1 -SEU682^2 -SEU580^2 -SEU894^5 -SEU721^1 -SEU828^1 -SEU524^1 -SEU958^5 -SEU829^1 -SEU530^1 -SEU938^5 -SEU730^1 -SEU982^5 -SEU454^1 -SEU794^2 -SEU698^2 -SEU716^1 -SEU623^1 -SEU701^2 -SEU491^1 -SEU501^1 -SEU533^1 -SEU675^1 -SEU858^5 -SEU959^5 -SEU711^1 -SEU985^5 -SEU492^1 -SEU751^2 -SEU455^1 -SEU781^2 -SEU779^1 -SEU979^5 -SEU872^5 -SEU782^2 -SEU545^1 -SEU846^5 -SEU599^1 -SEU589^2 -SEU505^2 -SEU722^1 -SEU471^1 -SEU602^1 -SEU801^1 -SEU662^2 -SEU694^2 -SEU749^1 -SEU540^2 -SEU760^1 -SEU715^1 -SEU576^2 -SEU719^2 -SEU809^1 -SEU599^2 -SEU811^1 -SEU633^2 -SEU994^5 -SEU886^5 -SEU531^1 -SEU768^1 -SEU583^1 -SEU704^1 -SEU743^2 -SEU764^1 -SEU528^2 -SEU584^2 -SEU756^2 -SEU757^2 -SEU835^5 -SEU559^1 -SEU581^1 -SEU889^5 -SEU923^5 -SEU727^2 -SEU587^2 -SEU773^1 -SEU910^5 -SEU691^2 -SEU600^1 -SEU544^1 -SEU646^1 -SEU666^1 -SEU541^2 -SEU532^1 -SEU807^2 -SEU927^5 -SEU658^1 -SEU681^1 -SEU859^5 -SEU720^1 -SEU749^2 -SEU534^2 -SEU742^1 -SEU777^2 -SEU517^2 -SEU572^1 -SEU723^1 -SEU739^2 -SEU499^2 -SEU585^1 -SEU590^1 -SEU812^1 -SEU762^2 -SEU670^1 -SEU785^1 -SEU754^1 -SEU862^5 -SEU954^5 -SEU837^5 -SEU842^5 -SEU522^2 -SEU533^2 -SEU457^1 -SEU758^2 -SEU702^1 -SEU753^1 -SEU936^5 -SEU668^2 -SEU736^2 -SEU967^5 -SEU971^5 -SEU806^2 -SEU453^1 -SEU713^1 -SEU598^2 -MSC021^5 -MSC020^5 -NUM661^1 -NUM728^1 -NUM697^1 -NUM653^1 -NUM790^1 -NUM772^1 -NUM637^2 -NUM833^5 -NUM792^1 -NUM815^5 -NUM016^5 -NUM678^1 -NUM726^1 -NUM648^1 -NUM676^1 -NUM801^1 -NUM754^1 -NUM756^1 -NUM799^1 -NUM702^1 -NUM708^1 -NUM677^1 -NUM727^1 -NUM663^1 -NUM021^1 -NUM765^1 -NUM814^5 -NUM773^1 -NUM758^1 -NUM724^1 -NUM689^1 -NUM691^1 -NUM684^1 -NUM780^1 -NUM742^1 -NUM710^1 -NUM664^1 -NUM639^1 -NUM686^1 -NUM636^2 -NUM646^1 -NUM734^1 -NUM642^1 -NUM020^1 -NUM746^1 -NUM774^1 -NUM695^1 -NUM744^1 -NUM709^1 -NUM782^1 -NUM701^1 -NUM812^5 -NUM660^1 -NUM643^1 -NUM798^1 -NUM688^1 -NUM636^3 -NUM652^1 -NUM740^1 -NUM644^1 -NUM671^1 -NUM669^1 -NUM749^1 -NUM681^1 -NUM690^1 -NUM737^1 -NUM797^1 -NUM820^5 -NUM721^1 -NUM760^1 -NUM757^1 -NUM764^1 -NUM821^5 -NUM739^1 -NUM771^1 -NUM818^5 -NUM803^5 -NUM656^1 -NUM636^1 -NUM649^1 -NUM692^1 -NUM730^1 -NUM743^1 -NUM768^1 -NUM826^5 -NUM417^1 -NUM675^1 -NUM419^1 -NUM418^1 -NUM732^1 -NUM791^1 -NUM723^1 -NUM805^5 -NUM637^1 -NUM645^1 -NUM729^1 -NUM647^1 -NUM787^1 -NUM680^1 -NUM806^5 -NUM770^1 -NUM788^1 -NUM670^1 -NUM733^1 -NUM722^1 -NUM786^1 -NUM716^1 -NUM731^1 -NUM785^1 -NUM828^5 -NUM682^1 -NUM717^1 -NUM635^1 -NUM685^1 -NUM635^2 -NUM831^5 -NUM816^5 -NUM703^1 -NUM767^1 -NUM783^1 -NUM650^1 -NUM659^1 -NUM651^1 -NUM641^1 -NUM795^1 -NUM662^1 -NUM715^1 -NUM683^1 -NUM705^1 -NUM657^1 -NUM810^5 -NUM699^1 -NUM811^5 -NUM696^1 -NUM673^1 -NUM658^1 -NUM694^1 -NUM822^5 -NUM830^5 -NUM415^1 -NUM781^1 -NUM638^1 -NUM763^1 -NUM800^1 -NUM804^5 -NUM707^1 -NUM777^1 -NUM809^5 -NUM769^1 -NUM719^1 -NUM759^1 -NUM824^5 -NUM666^1 -NUM784^1 -NUM700^1 -NUM687^1 -NUM668^1 -NUM766^1 -NUM735^1 -NUM796^1 -NUM819^5 -NUM755^1 -NUM654^1 -NUM750^1 -NUM693^1 -NUM667^1 -NUM808^5 -NUM751^1 -NUM829^5 -NUM827^5 -NUM665^1 -NUM747^1 -NUM779^1 -NUM736^1 -NUM825^5 -NUM679^1 -NUM711^1 -NUM789^1 -NUM807^5 -NUM794^1 -NUM776^1 -NUM761^1 -NUM672^1 -NUM775^1 -NUM713^1 -NUM706^1 -NUM748^1 -NUM655^1 -NUM720^1 -NUM416^1 -NUM741^1 -NUM762^1 -NUM793^1 -NUM753^1 -NUM714^1 -NUM718^1 -NUM752^1 -NUM674^1 -NUM823^5 -NUM802^5 -NUM712^1 -NUM640^1 -NUM698^1 -NUM738^1 -NUM832^5 -NUM704^1 -NUM745^1 -NUM834^5 -NUM817^5 -NUM725^1 -NUM813^5 -NUM778^1 diff --git a/helm/software/components/tptp_grafite/tptp2grafite.ml b/helm/software/components/tptp_grafite/tptp2grafite.ml index 2e1bb9bce..c63fca741 100644 --- a/helm/software/components/tptp_grafite/tptp2grafite.ml +++ b/helm/software/components/tptp_grafite/tptp2grafite.ml @@ -246,14 +246,14 @@ let ng_generate_tactics fv ueq_case context arities = else [])@ [GA.Executable(floc,GA.NTactic(floc, [ if (*ueq_case*) true then - GA.NAuto (floc,(Some + GA.NAuto (floc,( HExtlib.list_mapi (fun _ i -> mk_ident ("H" ^ string_of_int i)) context ,[])) else - GA.NAuto (floc,(None,[ + GA.NAuto (floc,([],[ "depth",string_of_int 5; "width",string_of_int 5; "size",string_of_int 20; @@ -294,10 +294,10 @@ let generate_tactics fv ueq_case = else [])@ [GA.Executable(floc,GA.Tactic(floc, Some ( if true (*ueq_case*) then - GA.AutoBatch (floc,(None,["paramodulation",""; + GA.AutoBatch (floc,([],["paramodulation",""; "timeout",string_of_int !paramod_timeout])) else - GA.AutoBatch (floc,(None,[ + GA.AutoBatch (floc,([],[ "depth",string_of_int 5; "width",string_of_int 5; "size",string_of_int 20; diff --git a/helm/software/components/urimanager/.depend b/helm/software/components/urimanager/.depend index 9cac9aa78..482148423 100644 --- a/helm/software/components/urimanager/.depend +++ b/helm/software/components/urimanager/.depend @@ -1,3 +1,2 @@ -uriManager.cmi: uriManager.cmo: uriManager.cmi uriManager.cmx: uriManager.cmi diff --git a/helm/software/components/urimanager/.depend.opt b/helm/software/components/urimanager/.depend.opt index 9cac9aa78..482148423 100644 --- a/helm/software/components/urimanager/.depend.opt +++ b/helm/software/components/urimanager/.depend.opt @@ -1,3 +1,2 @@ -uriManager.cmi: uriManager.cmo: uriManager.cmi uriManager.cmx: uriManager.cmi diff --git a/helm/software/components/whelp/.depend b/helm/software/components/whelp/.depend index 65dc07955..39f37dfa9 100644 --- a/helm/software/components/whelp/.depend +++ b/helm/software/components/whelp/.depend @@ -1,5 +1,3 @@ -whelp.cmi: -fwdQueries.cmi: whelp.cmo: whelp.cmi whelp.cmx: whelp.cmi fwdQueries.cmo: fwdQueries.cmi diff --git a/helm/software/components/whelp/.depend.opt b/helm/software/components/whelp/.depend.opt index 65dc07955..39f37dfa9 100644 --- a/helm/software/components/whelp/.depend.opt +++ b/helm/software/components/whelp/.depend.opt @@ -1,5 +1,3 @@ -whelp.cmi: -fwdQueries.cmi: whelp.cmo: whelp.cmi whelp.cmx: whelp.cmi fwdQueries.cmo: fwdQueries.cmi diff --git a/helm/software/components/xml/.depend b/helm/software/components/xml/.depend index e7e7ffbd7..5ef59bdc9 100644 --- a/helm/software/components/xml/.depend +++ b/helm/software/components/xml/.depend @@ -1,5 +1,3 @@ -xml.cmi: -xmlPushParser.cmi: xml.cmo: xml.cmi xml.cmx: xml.cmi xmlPushParser.cmo: xmlPushParser.cmi diff --git a/helm/software/components/xml/.depend.opt b/helm/software/components/xml/.depend.opt index e7e7ffbd7..5ef59bdc9 100644 --- a/helm/software/components/xml/.depend.opt +++ b/helm/software/components/xml/.depend.opt @@ -1,5 +1,3 @@ -xml.cmi: -xmlPushParser.cmi: xml.cmo: xml.cmi xml.cmx: xml.cmi xmlPushParser.cmo: xmlPushParser.cmi diff --git a/helm/software/components/xmldiff/.depend b/helm/software/components/xmldiff/.depend index 65bd7b949..e2832de33 100644 --- a/helm/software/components/xmldiff/.depend +++ b/helm/software/components/xmldiff/.depend @@ -1,3 +1,2 @@ -xmlDiff.cmi: xmlDiff.cmo: xmlDiff.cmi xmlDiff.cmx: xmlDiff.cmi diff --git a/helm/software/components/xmldiff/.depend.opt b/helm/software/components/xmldiff/.depend.opt index 65bd7b949..e2832de33 100644 --- a/helm/software/components/xmldiff/.depend.opt +++ b/helm/software/components/xmldiff/.depend.opt @@ -1,3 +1,2 @@ -xmlDiff.cmi: xmlDiff.cmo: xmlDiff.cmi xmlDiff.cmx: xmlDiff.cmi diff --git a/helm/software/configure.ac b/helm/software/configure.ac index 9fe6c7581..0680ef9b7 100644 --- a/helm/software/configure.ac +++ b/helm/software/configure.ac @@ -5,7 +5,7 @@ AC_INIT(matita/matitaTypes.ml) DEBUG_DEFAULT="true" DEFAULT_DBHOST="mysql://mowgli.cs.unibo.it" RT_BASE_DIR_DEFAULT="`pwd`/matita" -MATITA_VERSION="0.5.8" +MATITA_VERSION="0.5.9" DISTRIBUTED="no" # "yes" for distributed tarballs # End of distribution settings @@ -62,7 +62,6 @@ expat \ gdome2 \ http \ lablgtk2 \ -lablgtksourceview2.gtksourceview2 \ lablgtkmathview \ mysql \ netstring \ @@ -95,8 +94,8 @@ $FINDLIB_COMREQUIRES \ FINDLIB_REQUIRES="\ $FINDLIB_CREQUIRES \ lablgtk2.glade \ +lablgtk2.sourceview2 \ lablgtkmathview \ -lablgtksourceview2.gtksourceview2 \ helm-xmldiff \ " for r in $FINDLIB_LIBSREQUIRES $FINDLIB_REQUIRES diff --git a/helm/software/helena/.depend.opt b/helm/software/helena/.depend.opt deleted file mode 100644 index 42463197a..000000000 --- a/helm/software/helena/.depend.opt +++ /dev/null @@ -1,280 +0,0 @@ -src/lib/cps.cmo : -src/lib/cps.cmx : -src/lib/share.cmo : -src/lib/share.cmx : -src/lib/log.cmi : -src/lib/log.cmo : src/lib/log.cmi -src/lib/log.cmx : src/lib/log.cmi -src/lib/time.cmo : src/lib/log.cmi -src/lib/time.cmx : src/lib/log.cmx -src/common/options.cmo : src/lib/cps.cmx -src/common/options.cmx : src/lib/cps.cmx -src/common/marks.cmi : -src/common/marks.cmo : src/common/marks.cmi -src/common/marks.cmx : src/common/marks.cmi -src/common/hierarchy.cmi : -src/common/hierarchy.cmo : src/lib/cps.cmx src/common/hierarchy.cmi -src/common/hierarchy.cmx : src/lib/cps.cmx src/common/hierarchy.cmi -src/common/layer.cmi : -src/common/layer.cmo : src/common/options.cmx src/common/marks.cmi \ - src/lib/log.cmi src/common/layer.cmi -src/common/layer.cmx : src/common/options.cmx src/common/marks.cmx \ - src/lib/log.cmx src/common/layer.cmi -src/common/entity.cmo : src/common/layer.cmi -src/common/entity.cmx : src/common/layer.cmx -src/common/output.cmi : -src/common/output.cmo : src/common/options.cmx src/lib/log.cmi \ - src/common/output.cmi -src/common/output.cmx : src/common/options.cmx src/lib/log.cmx \ - src/common/output.cmi -src/common/alpha.cmi : src/common/entity.cmx -src/common/alpha.cmo : src/common/entity.cmx src/common/alpha.cmi -src/common/alpha.cmx : src/common/entity.cmx src/common/alpha.cmi -src/complete_rg/crg.cmo : src/common/layer.cmi src/common/entity.cmx \ - src/lib/cps.cmx -src/complete_rg/crg.cmx : src/common/layer.cmx src/common/entity.cmx \ - src/lib/cps.cmx -src/complete_rg/crgOutput.cmi : src/common/layer.cmi src/complete_rg/crg.cmx -src/complete_rg/crgOutput.cmo : src/common/marks.cmi src/lib/log.cmi \ - src/common/layer.cmi src/common/entity.cmx src/complete_rg/crg.cmx \ - src/lib/cps.cmx src/complete_rg/crgOutput.cmi -src/complete_rg/crgOutput.cmx : src/common/marks.cmx src/lib/log.cmx \ - src/common/layer.cmx src/common/entity.cmx src/complete_rg/crg.cmx \ - src/lib/cps.cmx src/complete_rg/crgOutput.cmi -src/text/txt.cmo : src/common/layer.cmi -src/text/txt.cmx : src/common/layer.cmx -src/text/txtParser.cmi : src/text/txt.cmx -src/text/txtParser.cmo : src/text/txt.cmx src/common/options.cmx \ - src/common/layer.cmi src/text/txtParser.cmi -src/text/txtParser.cmx : src/text/txt.cmx src/common/options.cmx \ - src/common/layer.cmx src/text/txtParser.cmi -src/text/txtLexer.cmo : src/text/txtParser.cmi src/common/options.cmx \ - src/lib/log.cmi -src/text/txtLexer.cmx : src/text/txtParser.cmx src/common/options.cmx \ - src/lib/log.cmx -src/text/txtTxt.cmi : src/text/txt.cmx -src/text/txtTxt.cmo : src/text/txt.cmx src/lib/cps.cmx src/text/txtTxt.cmi -src/text/txtTxt.cmx : src/text/txt.cmx src/lib/cps.cmx src/text/txtTxt.cmi -src/text/txtCrg.cmi : src/text/txt.cmx src/complete_rg/crg.cmx -src/text/txtCrg.cmo : src/text/txtTxt.cmi src/text/txt.cmx \ - src/common/options.cmx src/common/hierarchy.cmi src/common/entity.cmx \ - src/complete_rg/crg.cmx src/lib/cps.cmx src/text/txtCrg.cmi -src/text/txtCrg.cmx : src/text/txtTxt.cmx src/text/txt.cmx \ - src/common/options.cmx src/common/hierarchy.cmx src/common/entity.cmx \ - src/complete_rg/crg.cmx src/lib/cps.cmx src/text/txtCrg.cmi -src/automath/aut.cmo : src/common/entity.cmx -src/automath/aut.cmx : src/common/entity.cmx -src/automath/autProcess.cmi : src/automath/aut.cmx -src/automath/autProcess.cmo : src/automath/aut.cmx \ - src/automath/autProcess.cmi -src/automath/autProcess.cmx : src/automath/aut.cmx \ - src/automath/autProcess.cmi -src/automath/autOutput.cmi : src/automath/autProcess.cmi \ - src/automath/aut.cmx -src/automath/autOutput.cmo : src/lib/log.cmi src/lib/cps.cmx \ - src/automath/autProcess.cmi src/automath/aut.cmx \ - src/automath/autOutput.cmi -src/automath/autOutput.cmx : src/lib/log.cmx src/lib/cps.cmx \ - src/automath/autProcess.cmx src/automath/aut.cmx \ - src/automath/autOutput.cmi -src/automath/autParser.cmi : src/automath/aut.cmx -src/automath/autParser.cmo : src/common/options.cmx src/automath/aut.cmx \ - src/automath/autParser.cmi -src/automath/autParser.cmx : src/common/options.cmx src/automath/aut.cmx \ - src/automath/autParser.cmi -src/automath/autLexer.cmo : src/common/options.cmx src/lib/log.cmi \ - src/automath/autParser.cmi -src/automath/autLexer.cmx : src/common/options.cmx src/lib/log.cmx \ - src/automath/autParser.cmx -src/automath/autCrg.cmi : src/common/layer.cmi src/complete_rg/crg.cmx \ - src/automath/aut.cmx -src/automath/autCrg.cmo : src/common/options.cmx src/common/layer.cmi \ - src/common/entity.cmx src/complete_rg/crg.cmx src/lib/cps.cmx \ - src/automath/aut.cmx src/automath/autCrg.cmi -src/automath/autCrg.cmx : src/common/options.cmx src/common/layer.cmx \ - src/common/entity.cmx src/complete_rg/crg.cmx src/lib/cps.cmx \ - src/automath/aut.cmx src/automath/autCrg.cmi -src/xml/xmlLibrary.cmi : src/common/layer.cmi src/common/entity.cmx -src/xml/xmlLibrary.cmo : src/common/options.cmx src/common/layer.cmi \ - src/common/hierarchy.cmi src/common/entity.cmx src/lib/cps.cmx \ - src/xml/xmlLibrary.cmi -src/xml/xmlLibrary.cmx : src/common/options.cmx src/common/layer.cmx \ - src/common/hierarchy.cmx src/common/entity.cmx src/lib/cps.cmx \ - src/xml/xmlLibrary.cmi -src/xml/xmlCrg.cmi : src/xml/xmlLibrary.cmi src/common/layer.cmi \ - src/complete_rg/crg.cmx -src/xml/xmlCrg.cmo : src/xml/xmlLibrary.cmi src/common/hierarchy.cmi \ - src/common/entity.cmx src/complete_rg/crg.cmx src/lib/cps.cmx \ - src/common/alpha.cmi src/xml/xmlCrg.cmi -src/xml/xmlCrg.cmx : src/xml/xmlLibrary.cmx src/common/hierarchy.cmx \ - src/common/entity.cmx src/complete_rg/crg.cmx src/lib/cps.cmx \ - src/common/alpha.cmx src/xml/xmlCrg.cmi -src/basic_rg/brg.cmo : src/common/layer.cmi src/common/entity.cmx -src/basic_rg/brg.cmx : src/common/layer.cmx src/common/entity.cmx -src/basic_rg/brgCrg.cmi : src/complete_rg/crg.cmx src/basic_rg/brg.cmx -src/basic_rg/brgCrg.cmo : src/common/layer.cmi src/common/entity.cmx \ - src/complete_rg/crg.cmx src/lib/cps.cmx src/basic_rg/brg.cmx \ - src/basic_rg/brgCrg.cmi -src/basic_rg/brgCrg.cmx : src/common/layer.cmx src/common/entity.cmx \ - src/complete_rg/crg.cmx src/lib/cps.cmx src/basic_rg/brg.cmx \ - src/basic_rg/brgCrg.cmi -src/basic_rg/brgOutput.cmi : src/xml/xmlLibrary.cmi src/lib/log.cmi \ - src/common/layer.cmi src/basic_rg/brg.cmx -src/basic_rg/brgOutput.cmo : src/xml/xmlCrg.cmi src/common/options.cmx \ - src/lib/log.cmi src/common/layer.cmi src/common/hierarchy.cmi \ - src/common/entity.cmx src/lib/cps.cmx src/basic_rg/brgCrg.cmi \ - src/basic_rg/brg.cmx src/basic_rg/brgOutput.cmi -src/basic_rg/brgOutput.cmx : src/xml/xmlCrg.cmx src/common/options.cmx \ - src/lib/log.cmx src/common/layer.cmx src/common/hierarchy.cmx \ - src/common/entity.cmx src/lib/cps.cmx src/basic_rg/brgCrg.cmx \ - src/basic_rg/brg.cmx src/basic_rg/brgOutput.cmi -src/basic_rg/brgEnvironment.cmi : src/basic_rg/brg.cmx -src/basic_rg/brgEnvironment.cmo : src/common/entity.cmx \ - src/basic_rg/brgEnvironment.cmi -src/basic_rg/brgEnvironment.cmx : src/common/entity.cmx \ - src/basic_rg/brgEnvironment.cmi -src/basic_rg/brgSubstitution.cmi : src/basic_rg/brg.cmx -src/basic_rg/brgSubstitution.cmo : src/common/options.cmx \ - src/basic_rg/brg.cmx src/basic_rg/brgSubstitution.cmi -src/basic_rg/brgSubstitution.cmx : src/common/options.cmx \ - src/basic_rg/brg.cmx src/basic_rg/brgSubstitution.cmi -src/basic_rg/brgReduction.cmi : src/lib/log.cmi src/common/layer.cmi \ - src/common/entity.cmx src/basic_rg/brg.cmx -src/basic_rg/brgReduction.cmo : src/lib/share.cmx src/common/output.cmi \ - src/common/options.cmx src/lib/log.cmi src/common/layer.cmi \ - src/common/hierarchy.cmi src/common/entity.cmx src/basic_rg/brgOutput.cmi \ - src/basic_rg/brgEnvironment.cmi src/basic_rg/brg.cmx \ - src/basic_rg/brgReduction.cmi -src/basic_rg/brgReduction.cmx : src/lib/share.cmx src/common/output.cmx \ - src/common/options.cmx src/lib/log.cmx src/common/layer.cmx \ - src/common/hierarchy.cmx src/common/entity.cmx src/basic_rg/brgOutput.cmx \ - src/basic_rg/brgEnvironment.cmx src/basic_rg/brg.cmx \ - src/basic_rg/brgReduction.cmi -src/basic_rg/brgValidity.cmi : src/common/layer.cmi \ - src/basic_rg/brgReduction.cmi src/basic_rg/brg.cmx -src/basic_rg/brgValidity.cmo : src/common/options.cmx src/lib/log.cmi \ - src/common/layer.cmi src/common/entity.cmx src/basic_rg/brgReduction.cmi \ - src/basic_rg/brgEnvironment.cmi src/basic_rg/brg.cmx \ - src/basic_rg/brgValidity.cmi -src/basic_rg/brgValidity.cmx : src/common/options.cmx src/lib/log.cmx \ - src/common/layer.cmx src/common/entity.cmx src/basic_rg/brgReduction.cmx \ - src/basic_rg/brgEnvironment.cmx src/basic_rg/brg.cmx \ - src/basic_rg/brgValidity.cmi -src/basic_rg/brgType.cmi : src/common/layer.cmi \ - src/basic_rg/brgReduction.cmi src/basic_rg/brg.cmx -src/basic_rg/brgType.cmo : src/lib/share.cmx src/common/options.cmx \ - src/lib/log.cmi src/common/layer.cmi src/common/hierarchy.cmi \ - src/common/entity.cmx src/lib/cps.cmx src/basic_rg/brgSubstitution.cmi \ - src/basic_rg/brgReduction.cmi src/basic_rg/brgEnvironment.cmi \ - src/basic_rg/brg.cmx src/basic_rg/brgType.cmi -src/basic_rg/brgType.cmx : src/lib/share.cmx src/common/options.cmx \ - src/lib/log.cmx src/common/layer.cmx src/common/hierarchy.cmx \ - src/common/entity.cmx src/lib/cps.cmx src/basic_rg/brgSubstitution.cmx \ - src/basic_rg/brgReduction.cmx src/basic_rg/brgEnvironment.cmx \ - src/basic_rg/brg.cmx src/basic_rg/brgType.cmi -src/basic_rg/brgUntrusted.cmi : src/common/layer.cmi \ - src/basic_rg/brgReduction.cmi src/basic_rg/brg.cmx -src/basic_rg/brgUntrusted.cmo : src/lib/log.cmi src/common/entity.cmx \ - src/basic_rg/brgValidity.cmi src/basic_rg/brgType.cmi \ - src/basic_rg/brgReduction.cmi src/basic_rg/brgEnvironment.cmi \ - src/basic_rg/brg.cmx src/basic_rg/brgUntrusted.cmi -src/basic_rg/brgUntrusted.cmx : src/lib/log.cmx src/common/entity.cmx \ - src/basic_rg/brgValidity.cmx src/basic_rg/brgType.cmx \ - src/basic_rg/brgReduction.cmx src/basic_rg/brgEnvironment.cmx \ - src/basic_rg/brg.cmx src/basic_rg/brgUntrusted.cmi -src/basic_rg/brgGrafite.cmi : src/common/layer.cmi src/basic_rg/brg.cmx -src/basic_rg/brgGrafite.cmo : src/common/options.cmx src/common/layer.cmi \ - src/common/entity.cmx src/lib/cps.cmx src/basic_rg/brg.cmx \ - src/common/alpha.cmi src/basic_rg/brgGrafite.cmi -src/basic_rg/brgGrafite.cmx : src/common/options.cmx src/common/layer.cmx \ - src/common/entity.cmx src/lib/cps.cmx src/basic_rg/brg.cmx \ - src/common/alpha.cmx src/basic_rg/brgGrafite.cmi -src/basic_ag/bag.cmo : src/common/marks.cmi src/lib/log.cmi \ - src/common/entity.cmx src/lib/cps.cmx -src/basic_ag/bag.cmx : src/common/marks.cmx src/lib/log.cmx \ - src/common/entity.cmx src/lib/cps.cmx -src/basic_ag/bagCrg.cmi : src/common/layer.cmi src/complete_rg/crg.cmx \ - src/basic_ag/bag.cmx -src/basic_ag/bagCrg.cmo : src/common/marks.cmi src/common/layer.cmi \ - src/common/entity.cmx src/complete_rg/crg.cmx src/lib/cps.cmx \ - src/basic_ag/bag.cmx src/basic_ag/bagCrg.cmi -src/basic_ag/bagCrg.cmx : src/common/marks.cmx src/common/layer.cmx \ - src/common/entity.cmx src/complete_rg/crg.cmx src/lib/cps.cmx \ - src/basic_ag/bag.cmx src/basic_ag/bagCrg.cmi -src/basic_ag/bagOutput.cmi : src/xml/xmlLibrary.cmi src/lib/log.cmi \ - src/common/layer.cmi src/basic_ag/bag.cmx -src/basic_ag/bagOutput.cmo : src/xml/xmlCrg.cmi src/common/options.cmx \ - src/common/marks.cmi src/lib/log.cmi src/common/hierarchy.cmi \ - src/common/entity.cmx src/basic_ag/bagCrg.cmi src/basic_ag/bag.cmx \ - src/basic_ag/bagOutput.cmi -src/basic_ag/bagOutput.cmx : src/xml/xmlCrg.cmx src/common/options.cmx \ - src/common/marks.cmx src/lib/log.cmx src/common/hierarchy.cmx \ - src/common/entity.cmx src/basic_ag/bagCrg.cmx src/basic_ag/bag.cmx \ - src/basic_ag/bagOutput.cmi -src/basic_ag/bagEnvironment.cmi : src/basic_ag/bag.cmx -src/basic_ag/bagEnvironment.cmo : src/lib/log.cmi src/common/entity.cmx \ - src/basic_ag/bag.cmx src/basic_ag/bagEnvironment.cmi -src/basic_ag/bagEnvironment.cmx : src/lib/log.cmx src/common/entity.cmx \ - src/basic_ag/bag.cmx src/basic_ag/bagEnvironment.cmi -src/basic_ag/bagSubstitution.cmi : src/common/marks.cmi src/basic_ag/bag.cmx -src/basic_ag/bagSubstitution.cmo : src/lib/share.cmx src/basic_ag/bag.cmx \ - src/basic_ag/bagSubstitution.cmi -src/basic_ag/bagSubstitution.cmx : src/lib/share.cmx src/basic_ag/bag.cmx \ - src/basic_ag/bagSubstitution.cmi -src/basic_ag/bagReduction.cmi : src/common/layer.cmi src/basic_ag/bag.cmx -src/basic_ag/bagReduction.cmo : src/common/options.cmx src/common/marks.cmi \ - src/lib/log.cmi src/common/entity.cmx src/lib/cps.cmx \ - src/basic_ag/bagSubstitution.cmi src/basic_ag/bagOutput.cmi \ - src/basic_ag/bagEnvironment.cmi src/basic_ag/bag.cmx \ - src/basic_ag/bagReduction.cmi -src/basic_ag/bagReduction.cmx : src/common/options.cmx src/common/marks.cmx \ - src/lib/log.cmx src/common/entity.cmx src/lib/cps.cmx \ - src/basic_ag/bagSubstitution.cmx src/basic_ag/bagOutput.cmx \ - src/basic_ag/bagEnvironment.cmx src/basic_ag/bag.cmx \ - src/basic_ag/bagReduction.cmi -src/basic_ag/bagType.cmi : src/common/layer.cmi src/basic_ag/bag.cmx -src/basic_ag/bagType.cmo : src/lib/share.cmx src/common/options.cmx \ - src/lib/log.cmi src/common/hierarchy.cmi src/common/entity.cmx \ - src/lib/cps.cmx src/basic_ag/bagReduction.cmi src/basic_ag/bagOutput.cmi \ - src/basic_ag/bagEnvironment.cmi src/basic_ag/bag.cmx \ - src/basic_ag/bagType.cmi -src/basic_ag/bagType.cmx : src/lib/share.cmx src/common/options.cmx \ - src/lib/log.cmx src/common/hierarchy.cmx src/common/entity.cmx \ - src/lib/cps.cmx src/basic_ag/bagReduction.cmx src/basic_ag/bagOutput.cmx \ - src/basic_ag/bagEnvironment.cmx src/basic_ag/bag.cmx \ - src/basic_ag/bagType.cmi -src/basic_ag/bagUntrusted.cmi : src/common/layer.cmi src/basic_ag/bag.cmx -src/basic_ag/bagUntrusted.cmo : src/lib/log.cmi src/common/entity.cmx \ - src/basic_ag/bagType.cmi src/basic_ag/bagEnvironment.cmi \ - src/basic_ag/bag.cmx src/basic_ag/bagUntrusted.cmi -src/basic_ag/bagUntrusted.cmx : src/lib/log.cmx src/common/entity.cmx \ - src/basic_ag/bagType.cmx src/basic_ag/bagEnvironment.cmx \ - src/basic_ag/bag.cmx src/basic_ag/bagUntrusted.cmi -src/toplevel/top.cmo : src/xml/xmlLibrary.cmi src/xml/xmlCrg.cmi \ - src/text/txtParser.cmi src/text/txtLexer.cmx src/text/txtCrg.cmi \ - src/text/txt.cmx src/lib/time.cmx src/common/output.cmi \ - src/common/options.cmx src/lib/log.cmi src/common/layer.cmi \ - src/common/hierarchy.cmi src/common/entity.cmx \ - src/complete_rg/crgOutput.cmi src/complete_rg/crg.cmx src/lib/cps.cmx \ - src/basic_rg/brgUntrusted.cmi src/basic_rg/brgReduction.cmi \ - src/basic_rg/brgOutput.cmi src/basic_rg/brgGrafite.cmi \ - src/basic_rg/brgCrg.cmi src/basic_rg/brg.cmx \ - src/basic_ag/bagUntrusted.cmi src/basic_ag/bagType.cmi \ - src/basic_ag/bagOutput.cmi src/basic_ag/bagCrg.cmi src/basic_ag/bag.cmx \ - src/automath/autProcess.cmi src/automath/autParser.cmi \ - src/automath/autOutput.cmi src/automath/autLexer.cmx \ - src/automath/autCrg.cmi src/automath/aut.cmx -src/toplevel/top.cmx : src/xml/xmlLibrary.cmx src/xml/xmlCrg.cmx \ - src/text/txtParser.cmx src/text/txtLexer.cmx src/text/txtCrg.cmx \ - src/text/txt.cmx src/lib/time.cmx src/common/output.cmx \ - src/common/options.cmx src/lib/log.cmx src/common/layer.cmx \ - src/common/hierarchy.cmx src/common/entity.cmx \ - src/complete_rg/crgOutput.cmx src/complete_rg/crg.cmx src/lib/cps.cmx \ - src/basic_rg/brgUntrusted.cmx src/basic_rg/brgReduction.cmx \ - src/basic_rg/brgOutput.cmx src/basic_rg/brgGrafite.cmx \ - src/basic_rg/brgCrg.cmx src/basic_rg/brg.cmx \ - src/basic_ag/bagUntrusted.cmx src/basic_ag/bagType.cmx \ - src/basic_ag/bagOutput.cmx src/basic_ag/bagCrg.cmx src/basic_ag/bag.cmx \ - src/automath/autProcess.cmx src/automath/autParser.cmx \ - src/automath/autOutput.cmx src/automath/autLexer.cmx \ - src/automath/autCrg.cmx src/automath/aut.cmx diff --git a/helm/software/helena/Make b/helm/software/helena/Make deleted file mode 100644 index c74a62d1c..000000000 --- a/helm/software/helena/Make +++ /dev/null @@ -1,7 +0,0 @@ -.depend.opt -Make* -README -examples/automath/*.aut -src/*.ml -src/Make* -src/*/* diff --git a/helm/software/helena/MakeVersion b/helm/software/helena/MakeVersion deleted file mode 100644 index 6f4eebdf6..000000000 --- a/helm/software/helena/MakeVersion +++ /dev/null @@ -1 +0,0 @@ -0.8.1 diff --git a/helm/software/helena/Makefile b/helm/software/helena/Makefile deleted file mode 100644 index 09dffb04d..000000000 --- a/helm/software/helena/Makefile +++ /dev/null @@ -1,63 +0,0 @@ -MAIN = helena - -SRC = src - -REQUIRES = unix str helm-ng_kernel - -OCAMLOPTIONS = -rectypes - -KEEP = README - -CLEAN = etc/log.txt etc/profile.txt - -TAGS = test-si-fast test-si test-si-matita profile xml-si-crg xml-si matita matitac - -include Makefile.common - -MATITAC = ../../../../matita/matita/matitac.opt - -MATITA = ../../../../matita/matita/matita.opt - -XMLDIR = ../../www/lambdadelta - -INPUT = examples/automath/grundlagen_2.aut - -INPUTFAST = examples/automath/grundlagen_1.aut - -MA = grundlagen_2.ma - -PREAMBLE = ../matita/matita.ma.templ - -test-si-fast: $(MAIN).opt etc - @echo " HELENA -o -q $(INPUTFAST)" - $(H)./$(MAIN).opt -T 1 -o -q $(O) $(INPUTFAST) > etc/log.txt - -test-si: $(MAIN).opt etc - @echo " HELENA -d -l -p -o $(INPUT)" - $(H)./$(MAIN).opt -T 2 -d -l -p -o $(O) $(INPUT) > etc/log.txt - -test-si-matita matita/$(MA): $(MAIN).opt etc - @echo " HELENA -d -l -m -p -o $(INPUT)" - $(H)./$(MAIN).opt -T 2 -a n -d -l -m $(PREAMBLE) -p -o $(O) $(INPUT) > etc/log.txt - -profile: $(MAIN).opt etc - @echo " HELENA -o -q $(INPUTFAST) (30 TIMES)" - $(H)rm -f etc/log.txt - $(H)for T in `seq 30`; do ./$(MAIN).opt -T 1 -o -q $(O) $(INPUTFAST) >> etc/log.txt; done - $(H)grep "at exit" etc/log.txt | sort | uniq > etc/profile-new.txt - -xml-si-crg: $(MAIN).opt etc - @echo " HELENA -l -o -s 1 -x $(INPUT)" - $(H)./$(MAIN).opt -O $(XMLDIR) -T 1 -l -o -s 1 -x $(INPUT) > etc/log.txt - -xml-si: $(MAIN).opt etc - @echo " HELENA -l -o -s 2 -x $(INPUT)" - $(H)./$(MAIN).opt -O $(XMLDIR) -T 1 -l -o -s 2 -x $(INPUT) > etc/log.txt - -matita: matita/$(MA) - @echo " MATITA $(MA)" - $(H)cd matita && $(MATITA) $(MA) - -matitac: matita/$(MA) - @echo " MATITAC $(MA)" - $(H)cd matita && $(MATITAC) $(MA) diff --git a/helm/software/helena/Makefile.common b/helm/software/helena/Makefile.common deleted file mode 100644 index babfcf50f..000000000 --- a/helm/software/helena/Makefile.common +++ /dev/null @@ -1,96 +0,0 @@ -H=@ -ifeq ($(origin OCAMLPATH), undefined) - OCAMLFIND = OCAMLPATH=$(HOME)/svn/claudio/components/METAS ocamlfind -else - OCAMLFIND = ocamlfind -endif - -RELISE = $(MAIN:%=%_$(shell cat MakeVersion)) - -DOWNDIR = $(HOME)/svn/helm_stable/www/lambdadelta/download - -DIRECTORIES = $(addprefix $(SRC)/,$(shell cat $(SRC)/Make)) - -INCLUDES = $(DIRECTORIES:%=-I %) - -OCAMLDEP = $(OCAMLFIND) ocamldep -native $(INCLUDES) -OCAMLOPT = $(OCAMLFIND) opt $(OCAMLOPTIONS) -linkpkg -package "$(REQUIRES)" $(INCLUDES) -OCAMLLEX = ocamllex.opt -OCAMLYACC = ocamlyacc -v -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 . $(SRC)" - $(H)find -name "*~" | xargs $(RM) $(CLEAN) - -relise: clean - @echo " RELISE $(RELISE)" - $(H)mkdir -p $(RELISE) - $(H)$(foreach FILE, $(shell cat Make), cp --parents $(FILE) $(RELISE);) - $(H)tar -czf etc/$(RELISE).tar.gz $(RELISE) - $(H)scp etc/$(RELISE).tar.gz $(DOWNDIR) - -tgz: clean - @echo " TAR -czf $(MAIN:%=%.tgz) . $(DIRECTORIES)" - $(H)find -name "Make*" | xargs $(TAR) $(KEEP) - -etc: - @echo " MKDIR etc" - $(H)mkdir etc - -%.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 += all opt $(MAIN).opt - -$(foreach TAG, $(TAGS), $(eval $(call INCLUDE_TEMPLATE, $(TAG)))) diff --git a/helm/software/helena/README b/helm/software/helena/README deleted file mode 100644 index a21142fea..000000000 --- a/helm/software/helena/README +++ /dev/null @@ -1,10 +0,0 @@ -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 test-si-fast" to parse the grundlagen with minimum logging - -* type "make clean" to remove the products of compilation diff --git a/helm/software/helena/examples/automath/README.txt b/helm/software/helena/examples/automath/README.txt deleted file mode 100644 index 5d12c4666..000000000 --- a/helm/software/helena/examples/automath/README.txt +++ /dev/null @@ -1,5 +0,0 @@ -This directory contains: - -grundlagen_0.aut: original specification valid in AutQE with η-reduction enabled -grundlagen_1.aut: "η-equivalent" specification valid also in λδ version 3 -grundlagen_2.aut: "η-equivalent" specification valid also in a Pure Type System diff --git a/helm/software/helena/examples/automath/grundlagen_0.aut b/helm/software/helena/examples/automath/grundlagen_0.aut deleted file mode 100644 index 34e5493ab..000000000 --- a/helm/software/helena/examples/automath/grundlagen_0.aut +++ /dev/null @@ -1,10706 +0,0 @@ -# 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/) - -+l -@[a:'prop'][b:'prop'] -imp:=[x:a]b:'prop' -[a1:a][i:imp(a,b)] -mp:=i:b -a@refimp:=[x:a]x:imp(a,a) -b@[c:'prop'][i:imp(a,b)][j:imp(b,c)] -trimp:=[x:a]<i>j:imp(a,c) -@con:='prim':'prop' -a@not:=imp(con):'prop' -wel:=not(not(a)):'prop' -[a1:a] -weli:=[x:not(a)]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)]<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)]th3(n,x):not(imp(a,b)) -b@[n:not(imp(a,b))] -th5:=et([x:not(a)]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]i:ec(a,b) --ec -b@[e:ec(a,b)] -comec:=th2".ec"(b,a,e):ec(b,a) -[a1:a] -ece1:=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,i,ande2(a1)):and(c,b) -a1@[i:imp(b,c)] -th7:=andi(a,c,ande1(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:=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:=iffe1:b -i@[b1:b] -th4:=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'] -all:=p:'prop' -[a1:all(sigma,p)][s:sigma] -alle:=a1:p -+all -p@[s:sigma][n:not(p)] -th1:=[x:all(sigma,p)]<x>n:not(all(sigma,p)) --all -p@non:=[x:sigma]not(p):[x:sigma]'prop' -some:=not(non(p)):'prop' -[s:sigma][sp:p] -somei:=th1".all"(non(p),s,weli(p,sp)):some(sigma,p) -+some -p@[n:not(all(sigma,p))][m:non(non(p))][s:sigma] -t1:=et(p,m):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(p,a1):not(not(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:=th3:not(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(p,x)] -+*some -i@[n:not(x)][t:sigma] -t5:=th3"l.imp"(p,x,n,i):not(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(p,q)] -th6:=someapp(s,some(q),[x:sigma][y:p]somei(q,x,mp(p,q,y,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,j,ec3e12(d,e,f,p1,d1)):not(b) -t2:=[x:c]mp(f,con,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:p][i:is(s,t)] -isp:='prim':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)):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:p][v:p]is(x,y):'prop' -[a1:amone(sigma,p)][s:sigma][t:sigma][sp:p][tp:p] -amonee:=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':p -+one -[s:sigma][sp: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,f,f),s,t,refis(tau,f),i):is(tau,f,f) -f@injective:=all([x:sigma]all([y:sigma]imp(is(tau,f,f),is(x,y)))):'prop' -[i:injective(f)][s:sigma][t:sigma][j:is(tau,f,f)] -isfe:=i:is(s,t) -f@[t0:tau] -image:=some([x:sigma]is(tau,t0,f)):'prop' -f@[s:sigma] -tofs:=f:tau -imagei:=somei([x:sigma]is(tau,tofs,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,f)][v:is(tau,t0,f)]th1(t0,t0,refis(tau,t0),x,y,u,v):amone([x:sigma]is(tau,t0,f)) -[j:image(f,t0)] -th3:=onei([x:sigma]is(tau,t0,f),th2,j):one([x:sigma]is(tau,t0,f)) --inj -i@[t0:tau][j:image(f,t0)] -soft:=ind([x:sigma]is(tau,t0,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,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,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)),<f>invf,isst1(t2".inj",s),isinv(t2".inj",tofs(s),imagei(s),tofs(s),t3".inj",refis(tau,tofs(s)))):is(s,<f>invf) -b@[t:tau] -thinvf2:=ists1(t2".inj",t,t3".inj"):is(tau,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]<f>g:[x:sigma]upsilon -[s:sigma][t:sigma][i:is(upsilon,h,h)] -t4:=isfe(tau,upsilon,g,ig,f,f,i):is(tau,f,f) -t5:=isfe(f,if,s,t,t4):is(s,t) -ig@th4:=[x:sigma][y:sigma][v:is(upsilon,h,h)]t5(x,y,v):injective(sigma,upsilon,[x:sigma]<f>g) --inj -+surj -g@[sf:surjective(sigma,tau,f)][sg:surjective(tau,upsilon,g)] -h:=[x:sigma]<f>g:[x:sigma]upsilon -[u:upsilon] -t1:=sg:image(tau,upsilon,g,u) -[t:tau][i:is(upsilon,u,g)] -t2:=sf:image(sigma,tau,f,t) -[s:sigma][j:is(tau,t,f)] -t3:=tris(upsilon,u,g,h,i,isf(tau,upsilon,g,t,f,j)):is(upsilon,u,h) -t4:=somei([x:sigma]is(upsilon,u,h),s,t3):image(sigma,upsilon,h,u) -i@t5:=someapp([x:sigma]is(tau,t,f),t2,image(sigma,upsilon,h,u),[x:sigma][v:is(tau,t,f)]t4(x,v)):image(sigma,upsilon,h,u) -u@t6:=someapp(tau,[x:tau]is(upsilon,u,g),t1,image(sigma,upsilon,h,u),[x:tau][v:is(upsilon,u,g)]t5(x,v)):image(sigma,upsilon,h,u) -sg@th1:=[x:upsilon]t6(x):surjective(sigma,upsilon,[x:sigma]<f>g) --surj -+bij -g@[bf:bijective(sigma,tau,f)][bg:bijective(tau,upsilon,g)] -h:=[x:sigma]<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]<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,f,y),f,g,refis(tau,f),i):is(tau,f,g) -g@[i:[x:sigma]is(tau,f,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,f,f,g,isf(f,s,t,j),fise(i,t)):is(tau,f,g) --fis -p@ot:='prim':'type' -[o1:ot] -in:='prim':sigma -inp:='prim':p -p@otax1:='prim':injective(ot,sigma,[x:ot]in(x)) -[s:sigma][sp: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: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(wissel,t0) -s@[i:is(s,t0)] -iswissel2:=t3".wissel"(s,i):is(wissel,s0) -s@[n:not(is(s,s0))][o:not(is(s,t0))] -iswissel3:=t8".wissel"(s,n,o):is(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:=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:=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:=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]<wissel(s0,t0)>f:[x:sigma]tau -[s:sigma][i:is(s,s0)] -changef1:=isf(sigma,tau,f,wissel(s0,t0),t0,iswissel1(s0,t0,s,i)):is(tau,changef,f) -s@[i:is(s,t0)] -changef2:=isf(sigma,tau,f,wissel(s0,t0),s0,iswissel2(s0,t0,s,i)):is(tau,changef,f) -s@[n:not(is(s,s0))][o:not(is(s,t0))] -changef3:=isf(sigma,tau,f,wissel(s0,t0),s,iswissel3(s0,t0,s,n,o)):is(tau,changef,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'] -imp:=b:'prop' -[a1:a][i:imp(a,b)] -mp:=i:b -+imp -b@[n:not(a)] -%set etared -th2:=[x:a]cone(b,mp"l"(a,con,x,n)):imp(a,b) -%reset etared --imp -b@ec:=[x:a]not(b):'prop' -[n:not(a)] -eci1:=[x:a]cone(not(b),mp"l"(a,con,x,n)):ec(a,b) -b@[a1:and(a,b)] -ande2:=ande2"l"(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"(x,x)][j:[t:not(a)][u:not(a)]is".ite"(y,y)] -+*ite -j@[z:ksi] -prop1:=and(imp(a,[t:a]is(z,x)),imp(not(a),[t:not(a)]is(z,y))):'prop' -j@[a1:a][x1:ksi][y1:ksi][px1:prop1(x1)][py1:prop1(y1)] -t1:=ande1"l"(imp(a,[t:a]is(x1,x)),imp(not(a),[t:not(a)]is(x1,y)),px1):imp(a,[t:a]is(x1,x)) -t2:=mp(a,[t:a]is(x1,x),a1,t1):is(x1,x) -t3:=t2(y1,x1,py1,px1):is(y1,x) -t4:=tris2"l.e"(ksi,x1,y1,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:=i:imp(a,[t:a]is(x,x)) -t7:=th2"r.imp"(not(a),[t:not(a)]is(x,y),weli(a,a1)):imp(not(a),[t:not(a)]is(x,y)) -t8:=andi(imp(a,[t:a]is(x,x)),imp(not(a),[t:not(a)]is(x,y)),t6,t7):prop1(x) -t9:=somei(ksi,[t:ksi]prop1(t),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,x)),imp(not(a),[t:not(a)]is(x1,y)),px1):imp(not(a),[t:not(a)]is(x1,y)) -t12:=mp(not(a),[t:not(a)]is(x1,y),n,t11):is(x1,y) -t13:=t12(y1,x1,py1,px1):is(y1,y) -t14:=tris2"l.e"(ksi,x1,y1,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:=j:imp(not(a),[t:not(a)]is(y,y)) -t17:=th2"r.imp"(a,[t:a]is(y,x),n):imp(a,[t:a]is(y,x)) -t18:=andi"l"(imp(a,[t:a]is(y,x)),imp(not(a),[t:not(a)]is(y,y)),t17,t16):prop1(y) -t19:=somei(ksi,[t:ksi]prop1(t),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,x)),imp(not(a),[t:not(a)]is(ite,y)),t22):imp(a,[t:a]is(ite,x)) -t24:=ande2"l"(imp(a,[t:a]is(ite,x)),imp(not(a),[t:not(a)]is(ite,y)),t22):imp(not(a),[t:not(a)]is(ite,y)) --ite -j@[a1:a] -itet:=mp(a,[t:a]is".ite"(ite,x),a1,t23".ite"):is".ite"(ksi,ite,x) -j@[n:not(a)] -itef:=mp(not(a),[t:not(a)]is".ite"(ite,y),n,t24".ite"):is".ite"(ksi,ite,y) --r -+*e -+st -sigma@set:='prim':'type' -[s:sigma][s0:set] -esti:='prim':'prop' -p@setof:='prim':set -[s:sigma][sp:p] -estii:='prim':esti(s,setof(p)) -s@[e:esti(s,setof(p))] -estie:='prim':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:=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:=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),n):disj(s0,t0) -t0@[d:disj(s0,t0)][s:sigma][ses0:esti(s,s0)] -disje1:=ece1(esti(s,s0),esti(s,t0),d,ses0):not(esti(s,t0)) -s@[set0:esti(s,t0)] -disje2:=ece2(esti(s,s0),esti(s,t0),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:=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,sa))):set -[s:sigma][a:alpha][seasa:esti(s,sa)] -eunmore1:=estii([x:sigma]some(alpha,[y:alpha]esti(x,sa)),s,somei(alpha,[y:alpha]esti(s,sa),a,seasa)):esti(s,unmore(sa)) -s@[seun:esti(s,unmore(sa))][x:'prop'][x1:[y:alpha][z:esti(s,sa)]x] -unmoreapp:=someapp(alpha,[y:alpha]esti(s,sa),estie([z:sigma]some(alpha,[y:alpha]esti(z,sa)),s,seun),x,x1):x -+eq -sigma@[r:[x:sigma][y:sigma]'prop'][refr1:[x:sigma]r][symr1:[x:sigma][y:sigma][t:r]r][trr1:[x:sigma][y:sigma][z:sigma][t:r][u:r]r][s:sigma] -refr:=refr1:r -[t:sigma][tsr:r] -symr:=symr1:r -t@[u:sigma][tsr:r][utr:r] -trr:=trr1:r -u@[sur:r][tur:r] -tr1r:=trr(s,u,t,symr(u,s,sur),tur):r -u@[usr:r][utr:r] -tr2r:=trr(s,u,t,usr,symr(t,u,utr)):r -s@ecelt:=setof(r):set -+1 -th1:=estii(r,s,refr):esti(s,ecelt(s)) -t@[tsr:r] -th2:=estii(r,t,tsr):esti(t,ecelt(s)) -t@[e:esti(t,ecelt(s))] -th3:=estie(r,t,e):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(r)][u:sigma][e:esti(u,ecelt(s))] -t2:=th3"l.imp"(esti(u,ecelt(t)),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)):r -t@[tsr: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: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(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):r -t@[tsr: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: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):r -trr1@[s:sigma][t:sigma][tsr: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:r]is(alpha,fu,fu):'prop' -+10 -[ff:fixfu][e:ect][a1:alpha][s:sigma] -prop1:=and(esti(s,ecect(e)),is(alpha,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,fu,fu),see,refis(alpha,fu)):prop1(fu,s) -t2:=somei([x:sigma]prop1(fu,x),s,t1):prop2(fu) -t3:=somei(alpha,[x:alpha]prop2(x),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,fu,a1),pa1s):esti(s,ecect(e)) -t6:=ande1(esti(t,ecect(e)),is(alpha,fu,b1),pb1t):esti(t,ecect(e)) -t7:=th7"eq.4"(e,s,t5,t,t6):r -t8:=ande2(esti(s,ecect(e)),is(alpha,fu,a1),pa1s):is(alpha,fu,a1) -t9:=ande2(esti(t,ecect(e)),is(alpha,fu,b1),pb1t):is(alpha,fu,b1) -t10:=tr3is(alpha,a1,fu,fu,b1,symis(alpha,fu,a1,t8),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,fu,indeq))) -[s:sigma][see:esti(s,ecect(e))] -th2:=t12(fu,indeq,t2(s,see),th1):is(alpha,fu,indeq) -ff@[s:sigma] -th3:=th2(ectelt(s),s,th5"eq.4"(s)):is(alpha,fu,indeq(ectelt(s))) --10 -alpha@[fu2:[x:sigma][y:sigma]alpha] -fixfu2:=[x:sigma][y:sigma][z:sigma][u:sigma][v:r][w:r]is(alpha,fu2,fu2):'prop' -+11 -[ff2:fixfu2][s:sigma][t:sigma][tsr:r][u:sigma] -t1:=ff2:is(alpha,fu2,fu2) -tsr@t2:=fisi(sigma,alpha,fu2,fu2,[x:sigma]t1(x)):is([x:sigma]alpha,fu2,fu2) -ff2@[e:ect] -i:=indeq([x:sigma]alpha,fu2,[x:sigma][y:sigma][z:r]t2(x,y,z),e):[x:sigma]alpha -[s:sigma][t:sigma][tsr:r][u:sigma][uee:esti(u,ecect(e))] -t3:=th2"eq.10"([x:sigma]alpha,fu2,[x:sigma][y:sigma][z:r]t2(x,y,z),e,u,uee):is([x:sigma]alpha,fu2,i) -t4:=fise(alpha,fu2,i,t3,s):is(alpha,fu2,i) -t5:=fise(alpha,fu2,i,t3,t):is(alpha,fu2,i) -t6:=ff2:is(alpha,fu2,fu2) -t7:=tr3is(alpha,i,fu2,fu2,i,symis(alpha,fu2,i,t4),t6,t5):is(alpha,i,i) -tsr@t8:=th3"eq.4"(e,is(alpha,i,i),[x:sigma][y:esti(x,ecect(e))]t7(x,y)):is(alpha,i,i) --11 -e".11"@[f:ect] -indeq2:=indeq(i".11",[x:sigma][y:sigma][z: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:r]t8(x,y,z),f,t,tef):is(alpha,i,indeq2(e,f)) -t10:=th2"eq.10"([x:sigma]alpha,fu2,[x:sigma][y:sigma][z:r]t2(x,y,z),e,s,see):is([x:sigma]alpha,fu2,i) -t11:=fise(alpha,fu2,i,t10,t):is(alpha,fu2,i) -th1:=tris(alpha,fu2,i,indeq2,t11,t9):is(alpha,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,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(suc,suc) -@ax3:='prim':[x:nat]nis(suc,1) -ax4:='prim':[x:nat][y:nat][u:is(suc,suc)]is(x,y) -[s:set(nat)] -cond1:=in(1,s):'prop' -cond2:=all([x:nat]imp(in(x,s),in(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:p]<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):p -t3:=estii(nat,p,suc,xsp):in(suc,s) -x@t4:=<[y:nat][u:in(y,s)]t3(y,u)>ax5:in(x,s) --i1 -induction:=estie(nat,p,x,t4".i1"):p -@[x:nat][y:nat][n:nis(x,y)] -+21 -[i:is(suc,suc)] -t1:=ax4:is(x,y) --21 -satz1:=th3"l.imp"(is(suc,suc),is(x,y),n,[u:is(suc,suc)]t1".21"(u)):nis(suc,suc) -+22 -x@prop1:=nis(suc,x):'prop' -@t1:=<1>ax3:prop1(1) -x@[p:prop1(x)] -t2:=satz1(suc,x,p):prop1(suc) --22 -x@satz2:=induction([y:nat]prop1".22"(y),t1".22",[y:nat][u:prop1".22"(y)]t2".22"(y,u),x):nis(suc,x) -+23 -prop1:=or(is(x,1),some([u:nat]is(x,suc))):'prop' -@t1:=ori1(is(1,1),some([u:nat]is(1,suc)),refis(nat,1)):prop1(1) -x@t2:=somei(nat,[u:nat]is(suc,suc),x,refis(nat,suc)):some([u:nat]is(suc,suc)) -t3:=ori2(is(suc,1),some([u:nat]is(suc,suc)),t2):prop1(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,suc)),t4".23",n):some([u:nat]is(x,suc)) -y@[z:nat][i:is(x,suc)][j:is(x,suc)] -+*23 -j@t5:=suc,suc,x,i,j)>ax4:is(y,z) -x@t6:=[y:nat][z:nat][u:is(x,suc)][v:is(x,suc)]t5(y,z,u,v):amone(nat,[u:nat]is(x,suc)) --23 -n@satz3a:=onei(nat,[u:nat]is(x,suc),t6".23",satz3):one([u:nat]is(x,suc)) -+24 -x@[f:[y:nat]nat] -prop1:=all([y:nat]is(<suc>f,<f>suc)):'prop' -prop2:=and(is(<1>f,suc),prop1):'prop' -x@[a:[y:nat]nat][b:[y:nat]nat][pa:prop2(a)][pb:prop2(b)][y:nat] -prop3:=is(a,b):'prop' -pb@t1:=ande1(is(<1>a,suc),prop1(a),pa):is(<1>a,suc) -t2:=ande1(is(<1>b,suc),prop1(b),pb):is(<1>b,suc) -t3:=tris2(nat,<1>a,<1>b,suc,t1,t2):prop3(1) -y@[p:prop3(y)] -t4:=ax2(a,b,p):is(<a>suc,<b>suc) -t5:=ande2(is(<1>a,suc),prop1(a),pa):prop1(a) -t6:=ande2(is(<1>b,suc),prop1(b),pb):prop1(b) -t7:=t5:is(<suc>a,<a>suc) -t8:=t6:is(<suc>b,<b>suc) -t9:=tr3is(nat,<suc>a,<a>suc,<b>suc,<suc>b,t7,t4,symis"e"(nat,<suc>b,<b>suc,t8)):prop3(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,<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]<f>suc:[y:nat]nat -[y:nat] -t15:=refis(nat,g):is(g,<f>suc) -pf@t16:=ande1(is(<1>f,suc),prop1(f),pf):is(<1>f,suc) -t17:=tris(nat,<1>g,<<1>f>suc,<suc>suc,t15(1),ax2(<1>f,suc,t16)):is(<1>g,<suc>suc) -y@t18:=ande2(is(<1>f,suc),prop1(f),pf):prop1(f) -t19:=t18:is(<suc>f,<f>suc) -t20:=tris2(nat,<suc>f,g,<f>suc,t19,t15):is(<suc>f,g) -t21:=tris(nat,<suc>g,<<suc>f>suc,<g>suc,t15(suc),ax2(<suc>f,g,t20)):is(<suc>g,<g>suc) -pf@t22:=[y:nat]t21(y):prop1(suc,g) -t23:=andi(is(<1>g,<suc>suc),prop1(suc,g),t17,t22):prop2(suc,g) -t24:=somei([y:nat]nat,[z:[y:nat]nat]prop2(suc,z),g,t23):prop4(suc) -p@t25:=someapp([y:nat]nat,[z:[y:nat]nat]prop2(z),p,prop4(suc),[z:[y:nat]nat][u:prop2(z)]t24(z,u)):prop4(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,suc),all([y:nat]is(<suc>z,<z>suc)))) -plus:=ind([y:nat]nat,[z:[y:nat]nat]prop2".24"(z),satz4):[y:nat]nat -y@pl:=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,suc),prop1".24"(plus),t26".24"):is(pl(x,1),suc) -+*24 -x@t27:=ande2(is(<1>plus,suc),prop1(plus),t26):prop1(plus) --24 -y@satz4b:=t27".24":is(pl(x,suc),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),suc) -+*24 -x@t29:=t11(suc,plus(suc),[y:nat]<plus>suc,t26(suc),t23(bb,plus,t26)):is"e"([y:nat]nat,plus(suc),[y:nat]<plus>suc) --24 -y@satz4d:=fise(nat,nat,plus(suc),[z:nat]<plus>suc,t29".24",y):is(pl(suc,y),suc) -x@satz4e:=symis(nat,pl(x,1),suc,satz4a):is(suc,pl(x,1)) -y@satz4f:=symis(nat,pl(x,suc),suc,satz4b):is(suc,pl(x,suc)) -x@satz4g:=symis(nat,pl(1,x),suc,satz4c):is(suc,pl(1,x)) -y@satz4h:=symis(nat,pl(suc,y),suc,satz4d):is(suc,pl(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),suc,pl(x,suc),pl(x,pl(y,1)),satz4a(pl(x,y)),satz4f,ispl2(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(suc,suc) -t3:=tr4is(nat,pl(pl(x,y),suc),suc,suc,pl(x,suc),pl(x,pl(y,suc)),satz4b(pl(x,y),z),t2,satz4f(x,pl(y,z)),ispl2(suc,pl(y,suc),x,satz4f(y,z))):prop1(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),suc) -t2:=satz4c(y):is(pl(1,y),suc) -t3:=tris2(nat,pl(1,y),pl(y,1),suc,t2,t1):prop1(1,y) -[p:prop1(x,y)] -t4:=tris(nat,suc,suc,pl(y,suc),ax2(pl(x,y),pl(y,x),p),satz4f(y,x)):is(suc,pl(y,suc)) -t5:=satz4d:is(pl(suc,y),suc) -t6:=tris(nat,pl(suc,y),suc,pl(y,suc),t5,t4):prop1(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),suc,pl(1,x),satz4a,satz4g):prop1(1) -y@[p:prop1(y)] -t8:=tr3is(nat,pl(x,suc),suc,suc,pl(suc,x),satz4b,ax2(pl(x,y),pl(y,x),p),satz4h(y,x)):prop1(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,suc,1,ax3):nis(1,suc) -t2:=th4"e.notis"(nat,1,suc,pl(x,1),t1,satz4a):prop1(1) -y@[p:prop1(y)] -t3:=satz1(y,pl(x,y),p):nis(suc,suc) -t4:=th4"e.notis"(nat,suc,suc,pl(x,suc),t3,satz4b):prop1(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(suc,suc) -t2:=th5"e.notis"(nat,suc,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(suc,suc) -t4:=th5"e.notis"(nat,suc,suc,pl(suc,y),pl(suc,z),t3,satz4h,satz4h(z)):prop1(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,suc)] -t13:=tris(nat,x,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,suc),satz3(x,n),ii(1),[u1:nat][z:is(x,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,suc),satz3(x,n),prop1(1),[u:nat][v:is(x,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,suc,pl(y,1),pl(x,1),satz4e(y),ispl1(y,x,1,symis(nat,x,y,one1))):is(suc,pl(x,1)) -t19:=somei(nat,[z:nat]diffprop(suc,x,z),1,t18):iii(suc) -t20:=or3i3(i(suc),ii(suc),iii(suc),t19):prop1(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),suc,du,ispl2(u,1,y,j),satz4a(y)):is(x,suc) -t22:=or3i1(i(suc),ii(suc),iii(suc),t21):prop1(suc) -du@[n:nis(u,1)][w:nat][j:is(u,suc)] -t23:=tris(nat,u,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(suc,w),du,ispl2(u,pl(1,w),y,t23),asspl2(y,1,w),ispl1(pl(y,1),suc,w,satz4a(y))):is(x,pl(suc,w)) -t25:=somei(nat,[z:nat]diffprop(x,suc,z),w,t24):ii(suc) -n@t26:=someapp(nat,[z:nat]is(u,suc),satz3(u,n),ii(suc),[z:nat][v:is(u,suc)]t25(z,v)):ii(suc) -t27:=or3i2(i(suc),ii(suc),iii(suc),t26):prop1(suc) -du@t28:=th1"l.imp"(is(u,1),prop1(suc),[z:is(u,1)]t22(z),[z:nis(u,1)]t27(z)):prop1(suc) -two1@t28a:=someapp(nat,[u:nat]diffprop(u),two1,prop1(suc),[u:nat][du:diffprop(u)]t28(u,du)):prop1(suc) -p@[three1:iii(y)][v:nat][dv:diffprop(y,x,v)] -t29:=tris(nat,suc,suc,pl(x,suc),ax2(y,pl(x,v),dv),satz4f(x,v)):is(suc,pl(x,suc)) -t30:=somei(nat,[z:nat]diffprop(suc,x,z),suc,t29):iii(suc) -three1@t31:=someapp(nat,[v:nat]diffprop(y,x,v),three1,iii(suc),[v:nat][dv:diffprop(y,x,v)]t30(v,dv)):iii(suc) -t32:=or3i3(i(suc),ii(suc),iii(suc),t31):prop1(suc) -p@t33:=or3app(i(y),ii(y),iii(y),prop1(suc),p,[z:i(y)]t20(z),[z:ii(y)]t28a(z),[z:iii(y)]t32(z)):prop1(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),suc,x,satz4a,satz18(1)):more(suc,x) -satz18c:=satz18b:less(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,suc)] -t1:=tris(nat,x,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,suc),satz3(x,n),more(x,1),[u:nat][v:is(x,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"(suc,ax3):more(suc,1) -satz24c:=satz24b:less(1,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),suc,y,satz4a,satz25):moreis(y,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),suc,x,satz4a(y),satz25b):lessis(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,suc)] -satz26a:=satz26(isless2(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(suc,x)] -satz26c:=satz26b(ismore1(suc,pl(y,1),x,satz4e(y),m)):moreis(y,x) -@[p:[x:nat]'prop'][n:nat] -+327 -[m:nat] -lbprop:=imp(p,lessis(n,m)):'prop' --327 -lb:=all([x:nat]lbprop".327"(x)):'prop' -min:=and(lb,p):'prop' -p@[s:some(p)] -+*327 -s@[n:nat] -t1:=[x:p]satz24a(n):lbprop(1,n) -s@t2:=[x:nat]t1(x):lb(1) -[l:[x:nat]lb(x)][y:nat][yp: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"(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,l,t6):con -l@t8:=someapp(nat,p,s,con,[x:nat][y: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:=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),suc,t10,satz4a(m)):lb(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(p)][n:nat][np:p] -t16:=mp(p,lessis(m,n),np,t14):lessis(m,n) -t17:=th3"l.imp"(is(m,n),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:p]t19(x,y):lb(pl(m,1)) -t21:=mp(lb(pl(m,1)),con,t20,t15):con -a@t22:=et(p,[x:not(p)]t21(x)):p -t23:=andi(lb(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:p]satz24a(u):lbprop(1,u) -n@t25:=[x:nat]t24(x):lb(1) -u@[l:lb(u)] -t26:=n:not(min(u)) -t27:=th3"l.and"(lb(u),p,t26,l):not(p) -[v:nat][vp:p] -t28:=th3"l.imp"(is(u,v),p,t27,[x:is(u,v)]isp1(nat,p,v,u,vp,x)):nis(u,v) -t29:=mp(p,lessis(u,v),vp,l):lessis(u,v) -t30:=ore1(less(u,v),is(u,v),t29,t28):less(u,v) -t31:=satz25c(v,u,t30):lessis(suc,v) -v@t32:=[x:p]t31(x):lbprop(suc,v) -l@t33:=[x:nat]t32(x):lb(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:p] -t35:=satz10g(suc,u,satz18b(u)):not(lessis(suc,u)) -t36:=th4"l.imp"(p,lessis(suc,u),up,t35):not(lbprop(suc,u)) -t37:=th1"l.all"(nat,[x:nat]lbprop(suc,x),u,t36):not(lb(suc)) -t38:=[y:non(nat,[x:nat]min(x))]mp(lb(suc),con,t34(y,suc),t37):some([x:nat]min(x)) -s@anders:=someapp(nat,p,s,some([x:nat]min(x)),[x:nat][y: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),p,mn):lb(n) -t40:=ande1(lb(m),p,mm):lb(m) -t41:=ande2(lb(n),p,mn):p -t42:=ande2(lb(m),p,mm):p -t43:=t39:lbprop(n,m) -t44:=t40:lbprop(m,n) -t45:=mp(p,lessis(n,m),t42,t43):lessis(n,m) -t46:=mp(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(<suc>f,pl(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(a,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(a,b,x,p):is(pl(a,x),pl(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:=t5:is(<suc>a,pl(a,x)) -t8:=t6:is(<suc>b,pl(b,x)) -t9:=tr3is(nat,<suc>a,pl(a,x),pl(b,x),<suc>b,t7,t4,symis(nat,<suc>b,pl(b,x),t8)):prop3(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(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),suc,ispl1(<1>f,x,1,t15),satz4a(x)):is(<1>g,suc) -[y:nat] -t17:=ande2(is(<1>f,x),prop1(f),pf):prop1(f) -t18:=t17:is(<suc>f,pl(f,x)) -t19:=tris(nat,<suc>g,pl(pl(f,x),suc),pl(f,pl(x,suc)),ispl1(<suc>f,pl(f,x),suc,t18),asspl1(f,x,suc)):is(<suc>g,pl(f,pl(x,suc))) -t20:=tr3is(nat,pl(x,suc),suc,pl(suc,y),pl(y,suc),satz4b(x,y),satz4h(x,y),compl(suc,y)):is(pl(x,suc),pl(y,suc)) -t21:=tr3is(nat,<suc>g,pl(f,pl(x,suc)),pl(f,pl(y,suc)),pl(g,suc),t19,ispl2(pl(x,suc),pl(y,suc),f,t20),asspl2(f,y,suc)):is(<suc>g,pl(g,suc)) -pf@t22:=[y:nat]t21(y):prop1(suc,g) -t23:=andi(is(<1>g,suc),prop1(suc,g),t16,t22):prop2(suc,g) -t24:=somei([y:nat]nat,[z:[y:nat]nat]prop2(suc,z),g,t23):prop4(suc) -p@t25:=someapp([y:nat]nat,[z:[y:nat]nat]prop2(z),p,prop4(suc),[z:[y:nat]nat][u:prop2(z)]t24(z,u)):prop4(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(<suc>z,pl(z,x))))) -times:=ind([y:nat]nat,[z:[y:nat]nat]prop2".428"(z),satz28):[y:nat]nat -y@ts:=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:=t27".428":is(ts(x,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(suc,times(suc),[y:nat]pl(times,y),t26(suc),t23(b1,times,t26)):is"e"([y:nat]nat,times(suc),[y:nat]pl(times,y)) --428 -y@satz28d:=fise(nat,nat,times(suc),[z:nat]pl(times,z),t29".428",y):is(ts(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,suc),pl(ts(x,y),x),satz28b):is(pl(ts(x,y),x),ts(x,suc)) -x@satz28g:=symis(nat,ts(1,x),x,satz28c):is(x,ts(1,x)) -y@satz28h:=symis(nat,ts(suc,y),pl(ts(x,y),y),satz28d):is(pl(ts(x,y),y),ts(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,suc),ispl1(ts(x,y),ts(y,x),y,p),satz28f(y,x)):is(pl(ts(x,y),y),ts(y,suc)) -t5:=satz28d:is(ts(suc,y),pl(ts(x,y),y)) -t6:=tris(nat,ts(suc,y),pl(ts(x,y),y),ts(y,suc),t5,t4):prop1(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,suc),pl(ts(x,y),x),pl(ts(y,x),x),ts(suc,x),satz28b(x,y),ispl1(ts(x,y),ts(y,x),x,p),satz28h(y,x)):prop1(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,suc),pl(ts(x,y),x),pl(ts(x,y),ts(x,1)),ists2(pl(y,1),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,suc)),ts(x,suc),pl(ts(x,pl(y,z)),x),pl(pl(ts(x,y),ts(x,z)),x),ists2(pl(y,suc),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,suc)),pl(pl(ts(x,y),ts(x,z)),x)) -t3:=tr3is(nat,ts(x,pl(y,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,suc)),t2,asspl1(ts(x,y),ts(x,z),x),ispl2(pl(ts(x,z),x),ts(x,suc),ts(x,y),satz28f(x,z))):prop1(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),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,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,suc),x,satz28f(y,z))):prop1(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:=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,p,first1(p)) -t12:=symis(alpha,q,first1(q),isf(1to(2),alpha,q,u,1t,u1)):is"e"(alpha,first1(q),q) -t13:=tr3is(alpha,p,first1(p),first1(q),q,t11,i,t12):is"e"(alpha,p,q) -u@[u2:is"e"(1to(2),u,2t)] -t14:=isf(1to(2),alpha,p,u,2t,u2):is"e"(alpha,p,second1(p)) -t15:=symis(alpha,q,second1(q),isf(1to(2),alpha,q,u,2t,u2)):is"e"(alpha,second1(q),q) -t16:=tr3is(alpha,p,second1(p),second1(q),q,t14,j,t15):is"e"(alpha,p,q) -u@t17:=orapp(is"e"(1to(2),u,1t),is"e"(1to(2),u,2t),is"e"(alpha,p,q),th3(u),[t:is"e"(1to(2),u,1t)]t13(t),[t:is"e"(1to(2),u,2t)]t16(t)):is"e"(alpha,p,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)]f:[t:1to(y)]alpha -y@[f:[t:1to(pl(x,y))]alpha] -right:=[t:1to(y)]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,f,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]eq -symeq:=[x:frac][y:frac][t:eq]symeq"n"(x,y,t):[x:frac][y:frac][t:eq]eq -treq:=[x:frac][y:frac][z:frac][t:eq][u:eq]treq"n"(x,y,z,t,u):[x:frac][y:frac][z:frac][t:eq][u:eq]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))]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))]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))]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,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(plusfrt,plusfrt) --ii5 -@fplusfrt:=[x:frac][y:frac][z:frac][u:frac][v:eq][w: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(timesfrt,timesfrt) --ii5 -@ftimesfrt:=[x:frac][y:frac][z:frac][u:frac][v:eq][w: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(suc):[x:natt]natt -+5113 -xt@[i:is(suct,1t)] -t1:=isnint(suc,1,i):is"n"(suc,1) --5113 -xt@satz113a:=th3"l.imp"(is(suct,1t),is"n"(suc,1),ax3,[t:is(suct,1t)]t1".5113"(t)):nis(suct,1t) -yt@[i:is(suct,suct)] -+*5113 -i"nt"@t2:=isnint(suc,suc,i):is"n"(suc,suc) --5113 -i@satz113b:=isntin(xt,yt,ax4):is(xt,yt) -@[st:set(natt)] -cond1:=in(1t,st):'prop' -cond2:=all([x:natt]imp(in(x,st),in(suct,st))):'prop' -[c1:cond1][c2:cond2] -+*5113 -c2@[x:nat] -prop1:=in(ntofn(x),st):'prop' -[p:prop1(x)] -t3:=c2:imp(in(ntofn(x),st),in(suct,st)) -t4:=mp(in(ntofn(x),st),in(suct,st),p,t3):in(suct,st) -t5:=isp(nat,[t:nat]in(ntofn(suc),st),nofnt(ntofn(x)),x,t4,isnnt2(x)):prop1(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(suct,1t) -ax4t:=[x:natt][y:natt][u:is(suct,suct)]satz113b(x,y,u):[x:natt][y:natt][u:is(suct,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"(suc,suc) --51 -satz1:=th3"l.imp"(is(suct,suct),is"n"(suc,suc),t2".51",[t:is(suct,suct)]isnint(suc,suc,t)):nis(suct,suct) -+54 -xt@x:=nofnt(xt):nat -[ft:[x:natt]natt] -prop1t:=all([t:natt]is(<suct>ft,<ft>suct)):'prop' -prop2t:=and(is(<1t>ft,suct),prop1t):'prop' -xt@[f:[x:nat]nat] -prop1:=all"n"([t:nat]is"n"(<suc>f,<f>suc)):'prop' -prop2:=and(is"n"(<1>f,suc),prop1):'prop' -ft@g:=[t:nat]nofnt(ft):[x:nat]nat -[p:prop2t] -t1:=ande1(is(<1t>ft,suct),prop1t,p):is(<1t>ft,suct) -t2:=tris(nat,<1>g,nofnt(suct),suc,isnten(<1t>ft,suct,t1),isnnt2(suc)):is"n"(<1>g,suc) -t3:=ande2(is(<1t>ft,suct),prop1t,p):prop1t -[u:nat] -ut:=ntofn(u):natt -t4:=isf(nat,nat,suc,u,nofnt(ut),isnnt1(u)):is"n"(suc,suc) -t5:=isf(nat,nat,g,suc,suc,t4):is"n"(<suc>g,nofnt(<suct>ft)) -t6:=t3:is(<suct>ft,<ft>suct) -t7:=isnten(<suct>ft,<ft>suct,t6):is"n"(nofnt(<suct>ft),nofnt(<ft>suct)) -t8:=isnnt2(<g>suc):is"n"(nofnt(<ft>suct),<g>suc) -t9:=tr3is(nat,<suc>g,nofnt(<suct>ft),nofnt(<ft>suct),<g>suc,t5,t7,t8):is"n"(<suc>g,<g>suc) -p@t10:=[u:nat]t9(u):prop1(g) -t11:=andi(is"n"(<1>g,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:=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(a),nofnt(b)) -t15:=isntin(a,b,t14):is(a,b) -t16:=tr3is(natt,a,a,b,b,isf(natt,natt,a,yt,ntofn(y),isntn1(yt)),t15,isf(natt,natt,b,ntofn(y),yt,isntn2(yt))):is(a,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(f):[x:natt]natt -[p:prop2] -t20:=ande1(is"n"(<1>f,suc),prop1,p):is"n"(<1>f,suc) -t21:=isf(nat,nat,f,nofnt(1t),1,isnnt2(1)):is"n"(f,<1>f) -t22:=isnent(f,suc,tris(nat,f,<1>f,suc,t21,t20)):is(<1t>gt,suct) -t23:=ande2(is"n"(<1>f,suc),prop1,p):prop1 -[zt:natt] -z:=nofnt(zt):nat -t24:=isf(nat,nat,f,nofnt(suct),suc,isnnt2(suc)):is"n"(suct)>f,<suc>f) -t25:=t23:is"n"(<suc>f,<f>suc) -t26:=isf(nat,nat,suc,f,nofnt(gt),isnnt1(f)):is"n"(<f>suc,gt)>suc) -t27:=isnent(suct)>f,gt)>suc,tr3is(nat,suct)>f,<suc>f,<f>suc,gt)>suc,t24,t25,t26)):is(<suct>gt,<gt>suct) -p@t28:=[u:natt]t27(u):prop1t(gt) -t29:=andi(is(<1t>gt,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,suct),all([v:natt]is(<suct>u,<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(p,lessis(n,x))):'prop' -min:=and(lb,p):'prop' -p@[s:some(p)] -+527 -q:=[x:nat]p:[x:nat]'prop' -[n:natt][np:p] -t1:=isp(natt,p,n,ntofn(nofnt(n)),np,isntn1(n)):q -t2:=somei(nat,q,nofnt(n),t1):some"n"(q) -s@t3:=someapp(natt,p,s,some"n"(q),[u:natt][v: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),q,mqm):lb"n"(q,m) -[n:nat][nq:q] -t6:=mp(q,lessis"n"(m,n),nq,t5):lessis"n"(m,n) -mqm@[n:natt][np: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:p]t9(u):imp(p,lessis(ntofn(m),n)) -mqm@t11:=[x:natt]t10(x):lb(ntofn(m)) -t12:=ande2(lb"n"(q,m),q,mqm):p -t13:=andi(lb(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,clcl2):cutprop2a(lcl,x0) --iii1 -lx@[y0:rat][uy:urt(ksi,y0)] -cutapp2a:=mp(urt(ksi,y0),less(x0,y0),uy,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:=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:=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:=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:=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:=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:=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,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:=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:=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:=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:=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))]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(suc):[x:natt]natt -+5156 -xt@[j:is(suct,1t)] -t1:=isntintt(suc,1,j):is"n"(suc,1) --5156 -xt@satz156a:=th3"l.imp"(is(suct,1t),is"n"(suc,1),ax3,[t:is(suct,1t)]t1".5156"(t)):nis(suct,1t) -yt@[i:is(suct,suct)] -+*5156 -i@t2:=isntintt(suc,suc,i):is"n"(suc,suc) --5156 -i@satz156b:=isnttint(xt,yt,ax4):is(xt,yt) -@[st:set(natt)] -cond1:=in(1t,st):'prop' -cond2:=all([x:natt]imp(in(x,st),in(suct,st))):'prop' -[c1:cond1][c2:cond2] -+*5156 -c2@[x:nat] -prop1:=in(nttofnt(x),st):'prop' -[p:prop1(x)] -t3:=

c2:in(suct,st) -t4:=isp(nat,[t:nat]in(nttofnt(suc),st),ntofntt(nttofnt(x)),x,t3,isntntt2(x)):prop1(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(suct,1t) -ax4t:=[x:natt][y:natt][u:is(suct,suct)]satz156b(x,y,u):[x:natt][y:natt][u:is(suct,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,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:=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:=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)]t16(t):not(more(ksi1,ksi2)) -t19:=[t:less(ksi1,ksi2)]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:=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:=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:=t8:lessis(y,u) -t34:=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)),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))]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"),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"),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)),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:=t2:in(rx,s0) -t4:=t1:in(rx,t0) -t5:=ec3e31(is(rx,rx),more(rx,rx),less(rx,rx),satz123b(rx,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,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,p2):not(in(r,t0)) -t52:=ore1(in(r,s0),in(r,t0),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),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:=

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]eq -symeq:=[x:dif][y:dif][t:eq]symeq"rp"(x,y,t):[x:dif][y:dif][t:eq]eq -treq:=[x:dif][y:dif][z:dif][t:eq][u:eq]treq"rp"(x,y,z,t,u):[x:dif][y:dif][z:dif][t:eq][u:eq]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]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]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]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,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,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(absdr,absdr) --ivr2 -fabsdr:=[x:dif][y:dif][t: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(plusdr,plusdr) --ivr3 -fplusdr:=[x:dif][y:dif][z:dif][v:dif][t:eq][u: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(m0dr,m0dr) --ivr3 -@fm0dr:=[x:dif][y:dif][t: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(timesdr,timesdr) --ivr4 -ftimesdr:=[x:dif][y:dif][z:dif][v:dif][t:eq][u: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:=ande1(prop1(y),prop2(y),py):in(mxy,s1) -t16:=ande2(prop1(x),prop2(x),px):in(mxy,s2) -t17:=p2:less(mxy,mxy) -t18:=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),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:=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:=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:=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:=p2:less(r,s) -t46:=n:con -n@t47:=ore1(in(s,s1),in(s,s2),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:=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),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:=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:=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:=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),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),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:=ande1(prop1".5r205"(schnitt),prop2".5r205"(schnitt),oneax(real,[x:real]prop3".5r205"(x),satz205)):in(r,s1) -r@[m:more(r,schnitt)] -satz205b:=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:=pnotn(m0(r),p):con -i@[n:neg(m0(r))] -t4:=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,s,