Documentation

Linglib.Syntax.Numeral.Composition

Hurford's universal numeral grammar #

[Hur75] [IM06]

[Hur75]'s phrase-structure grammar for number-names (his (2), p. 19), proposed as the universal base of numeral systems:

with the three projection rules of his (23) (pp. 29–30): the value of a NUMBER is the sum of its immediate constituents, of a PHRASE the product, and of an M the second constituent raised to the power of the first. So twenty-three is [[two ten] three] = 2·10 + 3, thousand is [three ten] = 10³.

His deeper claim ((26)–(29)): the three rules are one operation, CALCULATE, indexed by constituent depth — NUMBERs (depth 1) add, PHRASEs (depth 2) multiply, Ms (depth 3) exponentiate, each operation the iteration of the one before. value_eq_calculate states the unification; calculate_succ_iterate states the iteration ladder its complexity ordering rests on.

Consumers: Studies/IoninMatushansky2006.lean (their §3.3 adopts Hurford's cardinals-as-nouns; their §4.3 order conventions constrain which of these structures surface) and Studies/JansenPollmann2001.lean (10-ness as digit×M expressibility).

Main declarations #

Main results #

The phrase-structure categories (his (2)) #

NUMBER → {one | PHRASE} (NUMBER).

Instances For
    partial def Syntax.Numeral.instReprM.repr_3 :
    MStd.Format
    @[implicit_reducible]
    Equations
    partial def Syntax.Numeral.instReprPhrase.repr_1 :
    NumberStd.Format
    partial def Syntax.Numeral.instReprM.repr_1 :
    NumberStd.Format
    partial def Syntax.Numeral.instReprNumber.repr_2 :
    PhraseStd.Format
    partial def Syntax.Numeral.instReprNumber.repr_3 :
    MStd.Format
    partial def Syntax.Numeral.instReprNumber.repr_1 :
    NumberStd.Format
    partial def Syntax.Numeral.instReprM.repr_2 :
    PhraseStd.Format
    partial def Syntax.Numeral.instReprPhrase.repr_3 :
    MStd.Format
    partial def Syntax.Numeral.instReprPhrase.repr_2 :
    PhraseStd.Format

    PHRASE → NUMBER M — e.g. two hundred.

    Instances For

      M → {ten | NUMBER M} — the base-word hierarchy: ten, hundred ([two ten] = 10²), thousand ([three ten] = 10³), ….

      Instances For

        The projection rules (his (23)) #

        The value of a NUMBER: the sum of its immediate constituents.

        Equations
        Instances For

          The value of a PHRASE: the product of its immediate constituents.

          Equations
          Instances For

            The value of an M: the second constituent raised to the power of the first.

            Equations
            Instances For

              Canonical structures #

              The bare tally NUMBER: n + 1 iterations of one — the structures his rule schema (6) generates before lexicalization compresses them.

              Equations
              Instances For
                @[simp]
                theorem Syntax.Numeral.Number.value_tally (n : ) :
                (tally n).value = n + 1
                theorem Syntax.Numeral.Number.exists_value_eq (n : ) (hn : 1 n) :
                (e : Number), e.value = n

                Every positive number is expressible — numeral systems name the whole of ℕ⁺ (his ch. 1 universal).

                The base-power M: tenPow k is the M of value 10^(k+1)ten, hundred ([two ten]), thousand ([three ten]), ….

                Equations
                Instances For
                  @[simp]
                  theorem Syntax.Numeral.M.value_tenPow (k : ) :
                  (tenPow k).value = 10 ^ (k + 1)
                  theorem Syntax.Numeral.Phrase.value_tally_tenPow (m k : ) :
                  (mk (Number.tally m) (M.tenPow k)).value = (m + 1) * 10 ^ (k + 1)

                  A digit×base PHRASE — four hundred as [[four] [two ten]] — has value m × 10^(k+1).

                  CALCULATE: one depth-indexed operation (his (26)–(29)) #

                  The three projection rules order themselves by complexity — addition, multiplication, exponentiation — and each is the iteration of the one before, bottoming out in incrementing (adding a tally mark). His (29): a constituent of depth d with immediate constituents x, y is valued CALCULATE d x y, so the semantic component is a single rule.

                  def Syntax.Numeral.calculate :

                  The depth-indexed arithmetic: depth 1 adds (NUMBER), depth 2 multiplies (PHRASE), depth 3 and beyond exponentiates (M).

                  Equations
                  Instances For
                    theorem Syntax.Numeral.value_eq_calculate (p : Phrase) (rest n : Number) (m : M) :
                    (Number.phraseAnd p rest).value = calculate 1 p.value rest.value (Phrase.mk n m).value = calculate 2 n.value m.value (M.mk n m).value = calculate 3 n.value m.value

                    His (29): the three projection rules are calculate at the constituent's depth — NUMBERs at depth 1, PHRASEs at depth 2, Ms at depth 3.

                    theorem Syntax.Numeral.calculate_succ_iterate (x y : ) :
                    calculate 2 x y = (calculate 1 y)^[x] 0 calculate 3 x y = (calculate 2 y)^[x] 1

                    The complexity ladder behind the depth-indexing: each operation is the iteration of the one below — multiplication iterates addition, exponentiation iterates multiplication.