Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help


bibkey: foundation2026firstorder authors: FormalizedFormalLogic contributors year: 2026 title: Foundation first-order logic and set theory, revision 30a16ffa doi: null url: https://github.com/FormalizedFormalLogic/Foundation/tree/30a16ffa93d79d73ab4d02427fa00f50e039bf29 claim: Licensed logic, predicate-term and finite formula syntax, entailment, finite support, language maps, empty-domain elimination and unique choice for first-order developments. strata_touched:

  • D5/S3/ConceptDynamics/ZfcEntailment/CalculusOne
  • D5/S3/ConceptDynamics/ZfcEntailment/CalculusTwo
  • D5/S3/ConceptDynamics/ZfcEntailment/EntailmentOne
  • D5/S3/ConceptDynamics/ZfcEntailment/EntailmentTwo
  • D5/S3/ConceptDynamics/ZfcFiniteCollections/Finset
  • D5/S3/ConceptDynamics/ZfcFiniteCollections/List
  • D5/S3/ConceptDynamics/ZfcFiniteCollections/Matrix
  • D5/S3/ConceptDynamics/ZfcFiniteCollections/OrderDense
  • D5/S3/ConceptDynamics/ZfcFiniteCollections/Quotient
  • D5/S3/ConceptDynamics/ZfcFiniteData/Fin
  • D5/S3/ConceptDynamics/ZfcFiniteData/Nat
  • D5/S3/ConceptDynamics/ZfcFiniteData/NatMatrix
  • D5/S3/ConceptDynamics/ZfcLanguageSupport/Empty
  • D5/S3/ConceptDynamics/ZfcLanguageSupport/NotationClass
  • D5/S3/ConceptDynamics/ZfcLogic/ForcingRelation
  • D5/S3/ConceptDynamics/ZfcLogic/LogicSymbolOne
  • D5/S3/ConceptDynamics/ZfcLogic/LogicSymbolTwo
  • D5/S3/ConceptDynamics/ZfcLogic/Semantics
  • D5/S3/ConceptDynamics/ZfcMinimalLogic/MinimalEntailmentFour
  • D5/S3/ConceptDynamics/ZfcMinimalLogic/MinimalEntailmentOne
  • D5/S3/ConceptDynamics/ZfcMinimalLogic/MinimalEntailmentThree
  • D5/S3/ConceptDynamics/ZfcMinimalLogic/MinimalEntailmentTwo
  • D5/S3/ConceptDynamics/ZfcPredicate/LanguageOne
  • D5/S3/ConceptDynamics/ZfcPredicate/LanguageTwo
  • D5/S3/ConceptDynamics/ZfcPredicate/Quantifier
  • D5/S3/ConceptDynamics/ZfcPredicate/Term
  • D5/S3/ConceptDynamics/ZfcPropositional/ClEntailment
  • D5/S3/ConceptDynamics/ZfcPropositional/IntEntailmentOne
  • D5/S3/ConceptDynamics/ZfcPropositional/IntEntailmentTwo
  • D5/S3/ConceptDynamics/ZfcSupport/AdjunctiveSet
  • D5/S3/ConceptDynamics/ZfcSupport/Function
  • D5/S3/ConceptDynamics/ZfcSupport/UniqueChoice
  • D5/S3/ConceptDynamics/ZfcSyntax/FormulaOne
  • D5/S3/ConceptDynamics/ZfcSyntax/FormulaTwo
  • D5/S3/ConceptDynamics/ZfcTermRewriting/RewOne
  • D5/S3/ConceptDynamics/ZfcTermRewriting/RewTwo
  • D5/S3/ConceptDynamics/ZfcTermRewriting/RewThree
  • D5/S3/ConceptDynamics/ZfcTermRewriting/RewFour license: Apache-2.0 triage: anchor

foundation2026firstorder

Verified locator

Immutable source: FormalizedFormalLogic/Foundation, revision 30a16ffa93d79d73ab4d02427fa00f50e039bf29. The table below locates the selected sources within this immutable revision; its SHA-256 digests identify the complete original upstream files. Copyright and attribution remain with the upstream contributors. Original author notices and required source notices are preserved. The upstream distribution has no NOTICE file. The complete unmodified Apache-2.0 license follows below.

The table records the Foundation source ancestry of the installed Lean paths; each strata_touched GID resolves to its Lean/Scribe/Markdown triple.

Each row preserves the original source path, SHA-256 and capacity span. Selected command excerpts within those spans are copied, with the Mathlib-derived OrderDense existence proof explicitly distinguished below; neither whole-file nor whole-span verbatim copying is asserted. Resolve each original path relative to the immutable upstream revision linked above. This is a source transplant, with no installed upstream package dependency or package-pin change.

The layer supplies logic symbols, semantic and forcing-relation interfaces, entailment and propositional calculi, predicate-language and term syntax, rewriting support and finite-data utilities for first-order developments. FormulaOne supplies the actual finite inductive first-order formula carrier with arbitrary relation arities, separate free variables and finite bound-variable indices, connectives, quantifiers, negation, structural recursion, complexity and conditional decidable equality. FormulaTwo adds finite free-variable support, bounds for natural-number variables and language maps with connective and quantifier preservation. This formula construction/support pair depends only on the frozen D5 Term/Quantifier APIs and pinned Mathlib; FormulaTwo also imports FormulaOne. These general APIs have independent mathematical use before the later term/formula rewriting and CSA graph-elimination layers.

References in the Scribe prose to a concrete pair interpretation describe intended downstream use. This layer does not install a pair-language or pair-interpretation interface, establish ZFC conservativity or a relative-consistency bridge, construct the full CSA, or prove ZFC model existence or absolute consistency. Internal HF/omega, finite archives, CSA arithmetic and rational/Cauchy-sequence constructions, and the complete CSA defining-graph and elimination obligations are outside this layer’s scope. It does not identify an internal nonstandard carrier with a Lean type or establish source-atom coverage.

The Empty/UniqueChoice support pair supplies equality of every map from an empty domain with its eliminator, and the chosen witness and specification of a proved unique existence on an arbitrary sort. It assumes no model of ZFC and does not establish full definitional conservativity. These are general API utilities (utility: none), with individually necessary rule-11 upstream-wrapper candidates and one compiler-generated exact-command companion. Generation supplies no new escape, proof-value, liveness or indispensability credit. The two Lean theorem names Classical.choose!_spec and Classical.choose!_eq_iff_right remain in prose with their typed formulas; choose_uniq is the legal direct selector. This pair has independent support meaning before the separate countable-filter and CSA interpretation layers. OrderDense supplies the countable dense-family filter API, including the empty family and membership of the prescribed initial element. The empty-family interface is the existence theorem specialized to the empty set; the separate Order.PFilter.IsGeneric.empty convenience instance is omitted. Its bundled density and genericity definitions follow Foundation. Its existence proof is a direct application of pinned Mathlib Order.idealOfCofinals, Order.mem_idealOfCofinals and Order.cofinal_meets_idealOfCofinals on the dual preorder, indexed by the family subtype using Set.Countable.toEncodable. Order.PFilter wraps the resulting ideal without changing its carrier. The local bridge is Mathlib-derived; it does not retain Foundation’s sequence, choice or descending-chain construction and asserts no identity of chosen filters. Mathlib revision db584cd6d46c92f209a44c0f1c829460d327499d supplies Mathlib/Order/Ideal.lean, Mathlib/Order/PFilter.lean and Mathlib/Data/Set/Countable.lean under Apache-2.0, with attribution to their Mathlib contributors and source copyright notices. RewFour supplies seven lawful rewriting/substitution identities over arbitrary signatures. Both are retained prerequisite APIs; neither establishes the complete CSA defining graphs, definition elimination, conservativity or model existence.

Modifications are canonical headers, import reduction/relocation, source-command excerpts, capacity scope boundaries and restricting attribute target lists to needed relation projections. The retained Foundation command bodies remain upstream bytes, except for the OrderDense generic-filter existence proof described below.

The Semantics selection omits precisely the optional Semantics.Top (Set M) instance command at Foundation/Logic/Semantics.lean:251 (the upstream authored instance named LO.Semantics.instTopSet by Lean). The selected set_models_iff, set_meaningful_iff_nonempty and meaningful_iff_satisfiableSet commands retain their original proofs. In particular, the original simpa [NotModels, set_models_iff] remains in the nonemptiness proof. Compiler normalization helpers are generated from the retained proof source; their ownership does not establish a need for the omitted instance. The capacity span below locates the excerpts and includes this explicit exclusion.

The FormulaOne selection omits the optional upstream theorem LO.FirstOrder.Semiformula.neg_allClosure. The retained formula carrier and support commands preserve their original mathematical bodies and hypotheses; this exclusion belongs to the selected excerpts within FormulaOne’s capacity span below.

RewTwo supplies variable-domain lifts, binder shifts, shift, free, fix, their bound/free-variable laws, composition and substitution identities, q-lifts and finite fixitr iteration on actual first-order terms. It retains the supplied source commands and hypotheses except the optional LO.FirstOrder.Rew.q_emb. The supplied selection input is SHA-256 6639a4bd42da9b1cd99728d18f301d367f0a75c3afd0728373ce35c8ef55335c (6,268 bytes); the installed source, after that omission, is SHA-256 b68465527cc3e61f7f31322848f3421d60b533f8195861822bb7ed2b98a91652. These source digests are distinct from the complete upstream-file digest in the table. Historical 49-occurrence evidence associated with source SHA-256 d46397c4c5fb43b10a44c0596f5d7ab181e5e11a42ccd326611abe066825b2e8 is historical association evidence only; current identities require the current source-bound canonical report. Its 33 rule-11 upstream-wrapper proposals and 16 generated-source/API associations confer no new escape, liveness or indispensability credit. Theorems remain bind-only; definitions and other non-theorems have null proof shape. These general APIs do not prove the CSA set-coding, defining-graph elimination or ZFC conservativity bridge.

RewThree extends the term rewriting support with finite fixitr laws, term extensionality over free variables, language-map compatibility, free-variable propagation, conversion of closed terms to ClosedSemiterm, formula rewriting interfaces, notation and lawful syntactic rewriting identities. The supplied selection input is SHA-256 5b780be1e2900eca589caa86bf19ba20debb1253f048d784c08c96c114fd6fe9 (10,210 bytes), and the installed source has the same SHA-256. These declarations are retained as source-command excerpts from the capacity span below; their theorem observations are bind-only and the individually justified basis is rule-11-upstream-wrapper. No new escape, liveness or indispensability credit is claimed, and this support layer does not establish a pair interpretation, defining-graph elimination, ZFC conservativity or consistency/model-existence bridge.

Retirement: replace a transplanted API by a direct Mathlib reference when the repository’s pin provides a proved-equivalent syntax/theory/proof/definability API and its faithful bridge elaborates. Upstream PR acceptance alone is insufficient.

Installed D5 source pathOriginal sourceOriginal capacity span (excerpts only)Original SHA-256
D5/S3/ConceptDynamics/ZfcFiniteData/Nat.leanFoundation/Vorspiel/Nat/Basic.lean1–630a138628fbf374d982138b0d731c741a980db093cde30ca21e6a5c697a5d5972
D5/S3/ConceptDynamics/ZfcFiniteData/Fin.leanFoundation/Vorspiel/Fin/Basic.lean1–109a87e63e094316c344a59e6764d457d715f752a1a5098eb407a15f5dbbb14cdf4
D5/S3/ConceptDynamics/ZfcFiniteCollections/Matrix.leanFoundation/Vorspiel/Matrix.lean1–341e7f8dd76125d5e7ae5017ed1f837819fff4c95bdb704af956ec71b428d94bf93
D5/S3/ConceptDynamics/ZfcFiniteCollections/List.leanFoundation/Vorspiel/List/Basic.lean1–3007f8fd76c712399fd0cc2c161c4700e3b70158e44561141b220a8273db3e75c2e
D5/S3/ConceptDynamics/ZfcLanguageSupport/NotationClass.leanFoundation/Vorspiel/NotationClass.lean1–13682d86dc4dd83f435526f429c28e5a4e42b189f4009d4eeddc1b0c58d4bffc155
D5/S3/ConceptDynamics/ZfcLogic/LogicSymbolOne.leanFoundation/Logic/LogicSymbol.lean1–3191f2c86c28a9af8428bd9f456e5e05110a1ce7e36844980063c9b8cc157125bee
D5/S3/ConceptDynamics/ZfcLogic/LogicSymbolTwo.leanFoundation/Logic/LogicSymbol.lean320–6381f2c86c28a9af8428bd9f456e5e05110a1ce7e36844980063c9b8cc157125bee
D5/S3/ConceptDynamics/ZfcLogic/Semantics.leanFoundation/Logic/Semantics.lean1–363; selected commands exclude line 251759358f8de447fae0d1ba0f19c4814e5f24ace3181f54550a809f73456623c89
D5/S3/ConceptDynamics/ZfcSupport/AdjunctiveSet.leanFoundation/Vorspiel/AdjunctiveSet.lean1–11953665c5b167237a7ae4f1c2fdbe54b6ff39201bfac47ac73a2c1d7e5ff9414ae
D5/S3/ConceptDynamics/ZfcEntailment/EntailmentOne.leanFoundation/Logic/Entailment.lean1–3204c59093a4e631b37669e4cc936f930697ccbb3daacde6dbbeaffc40dcd104aae
D5/S3/ConceptDynamics/ZfcEntailment/EntailmentTwo.leanFoundation/Logic/Entailment.lean321–6454c59093a4e631b37669e4cc936f930697ccbb3daacde6dbbeaffc40dcd104aae
D5/S3/ConceptDynamics/ZfcPredicate/LanguageOne.leanFoundation/Syntax/Predicate/Language.lean1–318b5ef82f9c7198f984d2bfc2a765d67e2f815a6d7d65c1b66eebb3373789b676e
D5/S3/ConceptDynamics/ZfcPredicate/LanguageTwo.leanFoundation/Syntax/Predicate/Language.lean319–445b5ef82f9c7198f984d2bfc2a765d67e2f815a6d7d65c1b66eebb3373789b676e
D5/S3/ConceptDynamics/ZfcPredicate/Term.leanFoundation/Syntax/Predicate/Term.lean1–2536209c01b7b2629cf29b7a226e7421e98c4e1188c4949f0876f237a0ba89c1cfd
D5/S3/ConceptDynamics/ZfcPredicate/Quantifier.leanFoundation/Syntax/Predicate/Quantifier.lean1–2969675a51b9bd78a72caa29730242f628b0ace98e9c4b2d0ddfc38636279e1acdc
D5/S3/ConceptDynamics/ZfcFiniteCollections/Finset.leanFoundation/Vorspiel/Finset/Basic.lean1–8834c9b64196d84407927c2d8c9332cd07c91cfca871b243acf1bed717c8a27746
D5/S3/ConceptDynamics/ZfcSupport/Function.leanFoundation/Vorspiel/Function.lean1–18b6eb4a72d46ac6f11b3ff3951b95f4cfe1b03498f290ad46b9bd75cc626ef796
D5/S3/ConceptDynamics/ZfcTermRewriting/RewOne.leanFoundation/Syntax/Predicate/Rew.lean1–3208df8681a12ebf5ef8700d9710c88fc39bfc35df47ef387e2893df3caf3b69873
D5/S3/ConceptDynamics/ZfcTermRewriting/RewTwo.leanFoundation/Syntax/Predicate/Rew.lean321–637; selected commands exclude LO.FirstOrder.Rew.q_emb8df8681a12ebf5ef8700d9710c88fc39bfc35df47ef387e2893df3caf3b69873
D5/S3/ConceptDynamics/ZfcTermRewriting/RewThree.leanFoundation/Syntax/Predicate/Rew.lean638–9538df8681a12ebf5ef8700d9710c88fc39bfc35df47ef387e2893df3caf3b69873
D5/S3/ConceptDynamics/ZfcTermRewriting/RewFour.leanFoundation/Syntax/Predicate/Rew.lean954–1080; seven commands at 955–9898df8681a12ebf5ef8700d9710c88fc39bfc35df47ef387e2893df3caf3b69873
D5/S3/ConceptDynamics/ZfcFiniteCollections/OrderDense.leanFoundation/Vorspiel/Order/Dense.leandensity/genericity interface at 102, 108–110, 116–118, 145–146; existence statement at 150–152, proof via pinned Mathlib7acf47a3c5b4344f98b9d319a3cac93d0a4b80fa135feb19bfd46c838c2ccce0
D5/S3/ConceptDynamics/ZfcMinimalLogic/MinimalEntailmentOne.leanFoundation/Propositional/Entailment/Minimal.lean1–320aa8c65b4a9a1c4cb1b5148ea65d159302b11dbcc839bba1184e422413808b8f1
D5/S3/ConceptDynamics/ZfcMinimalLogic/MinimalEntailmentTwo.leanFoundation/Propositional/Entailment/Minimal.lean321–639aa8c65b4a9a1c4cb1b5148ea65d159302b11dbcc839bba1184e422413808b8f1
D5/S3/ConceptDynamics/ZfcMinimalLogic/MinimalEntailmentThree.leanFoundation/Propositional/Entailment/Minimal.lean640–959aa8c65b4a9a1c4cb1b5148ea65d159302b11dbcc839bba1184e422413808b8f1
D5/S3/ConceptDynamics/ZfcMinimalLogic/MinimalEntailmentFour.leanFoundation/Propositional/Entailment/Minimal.lean960–1272aa8c65b4a9a1c4cb1b5148ea65d159302b11dbcc839bba1184e422413808b8f1
D5/S3/ConceptDynamics/ZfcPropositional/IntEntailmentOne.leanFoundation/Propositional/Entailment/Int.lean1–309fdb99522d112d69b3bcd40f4c0004f2656b2186108a854b59970e1b008ec2361
D5/S3/ConceptDynamics/ZfcPropositional/IntEntailmentTwo.leanFoundation/Propositional/Entailment/Int.lean310–463fdb99522d112d69b3bcd40f4c0004f2656b2186108a854b59970e1b008ec2361
D5/S3/ConceptDynamics/ZfcPropositional/ClEntailment.leanFoundation/Propositional/Entailment/Cl.lean1–350437ad56a9fa221c6bed9a6472ac5da49d048e5bf00dbd309b5c0386a99f9e78a
D5/S3/ConceptDynamics/ZfcEntailment/CalculusOne.leanFoundation/Logic/Calculus.lean1–320b92ec1115fe069f7b5b14af1d5b7d0ff53c50aa5efc3d560ab6d81b216e17cdb
D5/S3/ConceptDynamics/ZfcEntailment/CalculusTwo.leanFoundation/Logic/Calculus.lean321–376b92ec1115fe069f7b5b14af1d5b7d0ff53c50aa5efc3d560ab6d81b216e17cdb
D5/S3/ConceptDynamics/ZfcFiniteData/NatMatrix.leanFoundation/Vorspiel/Nat/Matrix.lean1–861a1cc8e8d58a586247f408c20d31a4acc0ee7a84d6ab45998c082adf95a382ce
D5/S3/ConceptDynamics/ZfcFiniteCollections/Quotient.leanFoundation/Vorspiel/Quotient.lean1–44d0ee23b967dffb1fce05e4e6eeab82dcf3c583361dba0a31f8c85a12c6b34ef5
D5/S3/ConceptDynamics/ZfcLogic/ForcingRelation.leanFoundation/Logic/ForcingRelation.lean1–1551ccea85946aa4604136ec39cbd413ed475d315a4cd5eca5aaae9b63095ca035c
D5/S3/ConceptDynamics/ZfcSyntax/FormulaOne.leanFoundation/FirstOrder/Basic/Syntax/Formula.lean1–3206726460b455fa93f42cd9c1849cf25bf7013cd4d349e7afada5e3678f05162c3
D5/S3/ConceptDynamics/ZfcSyntax/FormulaTwo.leanFoundation/FirstOrder/Basic/Syntax/Formula.lean321–5876726460b455fa93f42cd9c1849cf25bf7013cd4d349e7afada5e3678f05162c3
D5/S3/ConceptDynamics/ZfcLanguageSupport/Empty.leanFoundation/Vorspiel/Empty.lean9 (retained mathematical commands)f3b5429d4ec0c230a633b343a6ac8cdd079d56c1eaa5812994c95dfd487ab985
D5/S3/ConceptDynamics/ZfcSupport/UniqueChoice.leanFoundation/Vorspiel/ExistsUnique.lean11–18 (retained mathematical commands)9326800a0ed419feaa0dd7ebfe63de62371d728b0c4ee5b84b3f093d7e7f871e

Apache-2.0 license

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.