Documentation

PropertyKindCalculus.Examples.MiniObjectTypes

Theorems about this kind

  • PropertyKindCalculus.Examples.MiniObjectTypes.instAssemblesGridSMassK

Length — a second kind, so the kind gate can be exercised alongside the object gate.

Equations
Instances For

    The sort of whole this file assembles — §20's "sort of system", minted once. The license below is keyed by it: aggregation is a fact about what sort of whole is being composed, not about the kind alone (volume aggregates over a rigid assembly and contracts over a mixture — the probes in Tests/Core/Composite.lean pin both).

    Equations
    Instances For

      1. Nominal — identity is the name (System, §3.3) #

      The reading PKC shipped with, and the right one for a sample, an instrument, a rover: the object is a terminological identity and nothing else, so naming it and telling two apart are the same act. Both questions answered, for free.

      2. Structural — identity is a position, and there is no name #

      The shape a host library hands over: a particle of a mechanical system, a cell of a mesh. Stated here at its full generality — an arbitrary type P, about which nothing whatever is assumed — because that is exactly how much the gate needs.

      The two questions come apart here, and this is the finding the parameterization exposes: the gate costs nothing and the designation is absent, not merely inconvenient.

      3. Indexed — the name is computed from the position #

      Between the two: a pixel (i, j), a spectral band, a layer. Identity is a position, as in §2, but the position determines a name, so Designated is derivable rather than absent — and the injectivity that makes it a designation is a real obligation, discharged here by decide because the index set is finite and concrete.

      @[reducible, inline]

      A four-cell grid, indexed.

      Equations
      Instances For
        @[instance_reducible]

        The cells designate themselves through their index. The injectivity field is the claim: distinct cells get distinct names, checked rather than assumed.

        Equations
        • One or more equations did not get rendered due to their size.
        @[instance_reducible]

        And the cells instantiate a sort — the arrow from the particular to its universal (Sorted), declared once per model. Nothing in this file consumes it yet; it is the seam the §20 dedicated kind attaches to, where a kind-of-property is dedicated to a sort of system rather than to a particular.

        Equations

        4. Composite — a derived object type, whole and parts in one #

        The construction Composite.lean ships, and the one an aggregation needs: the total mass characterizes an object that a bare part type does not contain, so the whole and the parts must inhabit one type or the arithmetic cannot relate them. Derived from any of the shapes above — here from the indexed cells.

        One kilogram per cell, each quantity characterizing its own cell.

        Equations
        Instances For

          The total mass of the grid: assembled over the mereology, characterizing the whole.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For

            5. Joint — one quantity, two objects (MR23) #

            A flow, a transfer, a torque delivered across a coupling characterizes an ordered pair of systems. Under the parameterization that is an object type like any other, O₁ × O₂, and the gate falls out with nothing added.

            Designation is where this shape is instructive, and the lesson is a negative one.

            @[reducible, inline]

            The interface object: what a delivered quantity characterizes.

            Equations
            Instances For

              6. Singleton — one object, and the index costs nothing #

              The other end of the range, and the one that matters for the ergonomic objection: a model with exactly one system pays no ceremony for the object layer, because there is only one term to write and it is (). Worth stating because it is what makes the parameterization safe to adopt everywhere — the layer is not a tax on models that have nothing to disambiguate.

              @[instance_reducible]

              The single system a one-object model is about.

              Equations
              • One or more equations did not get rendered due to their size.

              7. Combinations — and the two halves compose differently #

              The shapes above are not a closed list to choose from. They compose, because they are types and types compose, and a realistic model combines them: a quantity of this instrument (nominal), at this pixel (indexed), of that particle (structural) is a quantity of the triple.

              What is worth knowing is that the gate and the designation compose under different conditions, and the difference is exactly the one the census is organized around.

              @[reducible, inline]

              A three-way combination: a named instrument, an indexed cell, and a structural object supplied by a host library about which nothing is assumed.

              Equations
              Instances For
                theorem PropertyKindCalculus.Examples.MiniObjectTypes.cellPairName_inj (a b c d : Cell) :
                "cell " ++ toString ↑a ++ "/" ++ toString ↑b = "cell " ++ toString ↑c ++ "/" ++ toString ↑d → a = c ∧ b = d

                The naming is injective — 256 pairs of sites, checked. Over an infinite object type this is a lemma the author owes; over a finite one it is decide.

                @[instance_reducible]

                When every factor is designated, one line does it. Designated.ofInjective is the composition principle: name the combination however the model names it, and show the naming is injective. That is the whole of what composing a designation requires.

                Equations
                • One or more equations did not get rendered due to their size.

                So the shape of the answer is: the object index needs no taxonomy, because a type is already whatever discrimination the model has; and the designation needs one combinator per way of building an object type, each carrying its own obligation. The library ships the combinators (Composite, Designated.ofInjective, Designated.prod) and refuses to ship the naming conventions, which is why every one of them takes a proof.