Documentation

Graphon.RelBasisSyntax

The Boolean syntax layer for a coherent basis (R4 converse piece 3, #107) #

The index type of a RelSignature.CoherentBasis must be closed under finite Boolean operations and carry a strict action of the finitely supported relabelings. Both are obtained here by taking the indices to be formal expressions over a set of atoms, rather than a set of events closed under the operations.

Why syntax rather than a closed family of events #

Two things go wrong if the index is a family of events:

With syntax both problems vanish: anchor and event are computed by recursion, so the anchor travels with the expression, and act acts on the syntax tree, so its laws follow by structural induction from the corresponding laws on atoms.

Contents #

The syntax #

inductive RelSignature.BasisExpr (α : Type u_1) :
Type u_1

Formal Boolean expressions over an atom type α: the formal Boolean-expression syntax with , complement, and intersection — unquotiented terms, not the free Boolean ring itself. Union and difference are derived, so the image of eval is a set ring.

The index of a CoherentBasis is built from this rather than from a closed family of events, so that the anchor is computed from the expression and the relabeling action is structural.

Instances For

    Evaluation #

    noncomputable def RelSignature.BasisExpr.anchorOf {α : Type u_1} {S : RelSignature} (atomAnchor : αFinset ((s : S.Srt) × S.Vinfinite s)) :
    BasisExpr αFinset ((s : S.Srt) × S.Vinfinite s)

    The anchor of an expression, computed structurally: is anchored at , complement preserves the anchor, and intersection takes the union — which is exactly what keeps the indices anchored inside A closed under the operations.

    Equations
    Instances For
      def RelSignature.BasisExpr.eval {α : Type u_1} {S : RelSignature} (atomEvent : αSet (S.RelStructure S.Vinfinite)) :

      The event of an expression, computed structurally.

      Equations
      Instances For
        theorem RelSignature.BasisExpr.eval_mem {α : Type u_1} {S : RelSignature} {atomAnchor : αFinset ((s : S.Srt) × S.Vinfinite s)} {atomEvent : αSet (S.RelStructure S.Vinfinite)} (hatom : ∀ (a : α), MeasurableSet (atomEvent a)) (e : BasisExpr α) :
        MeasurableSet (eval atomEvent e)

        Every expression evaluates into the fixing algebra of its own anchor, provided the atoms do. The intersection case is where the anchor-as-union convention pays: both sides are pushed up to the union by fixingAlgebra_mono.

        The relabeling action #

        def RelSignature.BasisExpr.act {α : Type u_1} {S : RelSignature} (atomAct : S.FinSuppPermαα) (σ : S.FinSuppPerm) :

        The action on expressions, induced by an action on atoms. Typed by the finitely supported subgroup, matching CoherentBasis.act.

        Equations
        Instances For
          theorem RelSignature.BasisExpr.act_one {α : Type u_1} {S : RelSignature} {atomAct : S.FinSuppPermαα} (hone : ∀ (a : α), atomAct 1 a = a) (e : BasisExpr α) :
          act atomAct 1 e = e

          The action is trivial at the identity, by induction from the atom-level law.

          theorem RelSignature.BasisExpr.act_mul {α : Type u_1} {S : RelSignature} {atomAct : S.FinSuppPermαα} {σ τ : S.FinSuppPerm} (hmul : ∀ (a : α), atomAct (σ * τ) a = atomAct σ (atomAct τ a)) (e : BasisExpr α) :
          act atomAct (σ * τ) e = act atomAct σ (act atomAct τ e)

          The action is multiplicative, by induction from the atom-level law. The orientation matches the contravariance of RelStructure.relabel.

          theorem RelSignature.BasisExpr.anchorOf_act {α : Type u_1} {S : RelSignature} {atomAnchor : αFinset ((s : S.Srt) × S.Vinfinite s)} {atomAct : S.FinSuppPermαα} {σ : S.FinSuppPerm} (hanchor : ∀ (a : α), atomAnchor (atomAct σ a) = Finset.image (Sigma.map id fun (s : S.Srt) => (σ s)) (atomAnchor a)) (e : BasisExpr α) :
          anchorOf atomAnchor (act atomAct σ e) = Finset.image (Sigma.map id fun (s : S.Srt) => (σ s)) (anchorOf atomAnchor e)

          The action transports anchors by the image map, provided the atoms do.

          theorem RelSignature.BasisExpr.eval_act {α : Type u_1} {S : RelSignature} {atomEvent : αSet (S.RelStructure S.Vinfinite)} {atomAct : S.FinSuppPermαα} {σ : S.FinSuppPerm} (hevent : ∀ (a : α), atomEvent (atomAct σ a) = RelStructure.relabel σ ⁻¹' atomEvent a) (e : BasisExpr α) :
          eval atomEvent (act atomAct σ e) = RelStructure.relabel σ ⁻¹' eval atomEvent e

          The action transports events by preimage — exactly, with no null sets, provided the atoms do. Complement and intersection commute with preimage on the nose, which is the whole reason the syntax layer keeps the action strict.