Documentation

ConNF.Counting.Spec

Specifications #

inductive ConNF.SpecCondition [ConNF.Params] [ConNF.Level] [ConNF.BasePositions] [ConNF.FOAAssumptions] (β : ConNF.Λ) :
Instances For
    theorem ConNF.SpecCondition.le_iff [ConNF.Params] [ConNF.Level] [ConNF.BasePositions] [ConNF.FOAAssumptions] {β : ConNF.Λ} :
    ∀ (a a_1 : ConNF.SpecCondition β), a.LE a_1 (∃ (A : ConNF.ExtendedIndex β) (s₁ : Set ConNF.κ) (s₂ : Set ConNF.κ) (t₁ : Set ConNF.κ) (t₂ : Set ConNF.κ), s₁ s₂ t₁ t₂ a = ConNF.SpecCondition.atom A s₁ t₁ a_1 = ConNF.SpecCondition.atom A s₂ t₂) (∃ (A : ConNF.ExtendedIndex β) (s₁ : Set ConNF.κ) (s₂ : Set ConNF.κ) (t₁ : ConNF.κSet ConNF.κ) (t₂ : ConNF.κSet ConNF.κ), s₁ s₂ t₁ t₂ a = ConNF.SpecCondition.flexible A s₁ t₁ a_1 = ConNF.SpecCondition.flexible A s₂ t₂) (∃ (A : ConNF.ExtendedIndex β) (h : ConNF.InflexibleCoePath A) (χ : ConNF.CodingFunction h) (t₁ : ConNF.κSet ConNF.κ) (t₂ : ConNF.κSet ConNF.κ) (m : ConNF.κ) (u₁ : ConNF.κSet ConNF.κ) (u₂ : ConNF.κSet ConNF.κ), t₁ t₂ u₁ u₂ a = ConNF.SpecCondition.inflexibleCoe A h χ t₁ m u₁ a_1 = ConNF.SpecCondition.inflexibleCoe A h χ t₂ m u₂) ∃ (A : ConNF.ExtendedIndex β) (h : ConNF.InflexibleBotPath A) (s₁ : Set ConNF.κ) (s₂ : Set ConNF.κ) (t₁ : ConNF.κSet ConNF.κ) (t₂ : ConNF.κSet ConNF.κ), s₁ s₂ t₁ t₂ a = ConNF.SpecCondition.inflexibleBot A h s₁ t₁ a_1 = ConNF.SpecCondition.inflexibleBot A h s₂ t₂
    inductive ConNF.SpecCondition.LE [ConNF.Params] [ConNF.Level] [ConNF.BasePositions] [ConNF.FOAAssumptions] {β : ConNF.Λ} :
    Instances For
      instance ConNF.instLESpecCondition [ConNF.Params] [ConNF.Level] [ConNF.BasePositions] [ConNF.FOAAssumptions] {β : ConNF.Λ} :
      Equations
      • ConNF.instLESpecCondition = { le := ConNF.SpecCondition.LE }
      instance ConNF.instPartialOrderSpecCondition [ConNF.Params] [ConNF.Level] [ConNF.BasePositions] [ConNF.FOAAssumptions] {β : ConNF.Λ} :
      Equations
      @[reducible, inline]
      abbrev ConNF.Spec [ConNF.Params] [ConNF.Level] [ConNF.BasePositions] [ConNF.FOAAssumptions] (β : ConNF.Λ) :
      Equations
      Instances For
        theorem ConNF.Spec.before_comp_supports [ConNF.Params] [ConNF.Level] [ConNF.BasePositions] [ConNF.FOAAssumptions] {β : ConNF.Λ} (S : ConNF.Support β) (hS : S.Strong) {i : ConNF.κ} (hi : i < S.max) {A : ConNF.ExtendedIndex β} {N : ConNF.NearLitter} (h : ConNF.InflexibleCoe A N.fst) (hSi : S.f i hi = { path := A, value := Sum.inr N }) :
        MulAction.Supports (ConNF.Allowable h.path) (ConNF.Enumeration.carrier ((S.before i hi).comp (h.path.B.cons ))) h.t
        theorem ConNF.Spec.before_comp_supports' [ConNF.Params] [ConNF.Level] [ConNF.BasePositions] [ConNF.FOAAssumptions] {β : ConNF.Λ} (S : ConNF.Support β) (hS : S.Strong) {i : ConNF.κ} (hi : i < S.max) {A : ConNF.ExtendedIndex β} {N : ConNF.NearLitter} (h : ConNF.InflexibleCoe A N.fst) (hSi : S.f i hi = { path := A, value := Sum.inr N }) :
        MulAction.Supports (ConNF.Allowable h.path) (ConNF.Enumeration.carrier ((S.before i hi).comp (h.path.B.cons ))) h.t.set
        structure ConNF.Spec.Specifies [ConNF.Params] [ConNF.Level] [ConNF.BasePositions] [ConNF.FOAAssumptions] {β : ConNF.Λ} (σ : ConNF.Spec β) (S : ConNF.Support β) (hS : S.Strong) :

        A specification σ specifies an ordered support S if each support condition in S is described in a sensible way by σ.

        • max_eq_max : S.max = σ.max
        • atom_spec : ∀ (i : ConNF.κ) (hi : i < S.max) (A : ConNF.ExtendedIndex β) (a : ConNF.Atom), S.f i hi = { path := A, value := Sum.inl a }σ.f i = ConNF.SpecCondition.atom A {j : ConNF.κ | ∃ (hj : j < S.max), S.f j hj = { path := A, value := Sum.inl a }} {j : ConNF.κ | ∃ (hj : j < S.max) (N : ConNF.NearLitter), S.f j hj = { path := A, value := Sum.inr N } a N}
        • flexible_spec : ∀ (i : ConNF.κ) (hi : i < S.max) (A : ConNF.ExtendedIndex β) (N : ConNF.NearLitter), ConNF.Flexible A N.fstS.f i hi = { path := A, value := Sum.inr N }σ.f i = ConNF.SpecCondition.flexible A {j : ConNF.κ | ∃ (hj : j < S.max) (N' : ConNF.NearLitter), S.f j hj = { path := A, value := Sum.inr N' } N'.fst = N.fst} fun (j : ConNF.κ) => {k : ConNF.κ | ∃ (hj : j < S.max) (hk : k < S.max) (a : ConNF.Atom) (N' : ConNF.NearLitter), N'.fst = N.fst a symmDiff N N' S.f j hj = { path := A, value := Sum.inr N' } S.f k hk = { path := A, value := Sum.inl a }}
        • inflexibleCoe_spec : ∀ (i : ConNF.κ) (hi : i < S.max) (A : ConNF.ExtendedIndex β) (N : ConNF.NearLitter) (h : ConNF.InflexibleCoe A N.fst) (hSi : S.f i hi = { path := A, value := Sum.inr N }), σ.f i = ConNF.SpecCondition.inflexibleCoe A h.path (ConNF.CodingFunction.code ((S.before i hi).comp (h.path.B.cons )) h.t.set ) (fun (j : ConNF.κ) => {k : ConNF.κ | ∃ (hj : j < S.max) (hk : k < S.max) (a : ConNF.Atom) (N' : ConNF.NearLitter), N'.fst = N.fst a symmDiff N N' S.f j hj = { path := A, value := Sum.inr N' } S.f k hk = { path := A, value := Sum.inl a }}) h.t.support.max fun (j : ConNF.κ) => {k : ConNF.κ | ∃ (hj : j < h.t.support.max) (hk : k < S.max), { path := (h.path.B.cons ).comp (h.t.support.f j hj).path, value := (h.t.support.f j hj).value } = S.f k hk}
        • inflexibleBot_spec : ∀ (i : ConNF.κ) (hi : i < S.max) (A : ConNF.ExtendedIndex β) (N : ConNF.NearLitter) (h : ConNF.InflexibleBot A N.fst), S.f i hi = { path := A, value := Sum.inr N }σ.f i = ConNF.SpecCondition.inflexibleBot A h.path {j : ConNF.κ | ∃ (hj : j < S.max), S.f j hj = { path := h.path.B.cons , value := Sum.inl h.a }} fun (j : ConNF.κ) => {k : ConNF.κ | ∃ (hj : j < S.max) (hk : k < S.max) (a : ConNF.Atom) (N' : ConNF.NearLitter), N'.fst = N.fst a symmDiff N N' S.f j hj = { path := A, value := Sum.inr N' } S.f k hk = { path := A, value := Sum.inl a }}
        Instances For
          theorem ConNF.Spec.Specifies.max_eq_max [ConNF.Params] [ConNF.Level] [ConNF.BasePositions] [ConNF.FOAAssumptions] {β : ConNF.Λ} {σ : ConNF.Spec β} {S : ConNF.Support β} {hS : S.Strong} (self : σ.Specifies S hS) :
          S.max = σ.max
          theorem ConNF.Spec.Specifies.atom_spec [ConNF.Params] [ConNF.Level] [ConNF.BasePositions] [ConNF.FOAAssumptions] {β : ConNF.Λ} {σ : ConNF.Spec β} {S : ConNF.Support β} {hS : S.Strong} (self : σ.Specifies S hS) (i : ConNF.κ) (hi : i < S.max) (A : ConNF.ExtendedIndex β) (a : ConNF.Atom) :
          S.f i hi = { path := A, value := Sum.inl a }σ.f i = ConNF.SpecCondition.atom A {j : ConNF.κ | ∃ (hj : j < S.max), S.f j hj = { path := A, value := Sum.inl a }} {j : ConNF.κ | ∃ (hj : j < S.max) (N : ConNF.NearLitter), S.f j hj = { path := A, value := Sum.inr N } a N}
          theorem ConNF.Spec.Specifies.flexible_spec [ConNF.Params] [ConNF.Level] [ConNF.BasePositions] [ConNF.FOAAssumptions] {β : ConNF.Λ} {σ : ConNF.Spec β} {S : ConNF.Support β} {hS : S.Strong} (self : σ.Specifies S hS) (i : ConNF.κ) (hi : i < S.max) (A : ConNF.ExtendedIndex β) (N : ConNF.NearLitter) :
          ConNF.Flexible A N.fstS.f i hi = { path := A, value := Sum.inr N }σ.f i = ConNF.SpecCondition.flexible A {j : ConNF.κ | ∃ (hj : j < S.max) (N' : ConNF.NearLitter), S.f j hj = { path := A, value := Sum.inr N' } N'.fst = N.fst} fun (j : ConNF.κ) => {k : ConNF.κ | ∃ (hj : j < S.max) (hk : k < S.max) (a : ConNF.Atom) (N' : ConNF.NearLitter), N'.fst = N.fst a symmDiff N N' S.f j hj = { path := A, value := Sum.inr N' } S.f k hk = { path := A, value := Sum.inl a }}
          theorem ConNF.Spec.Specifies.inflexibleCoe_spec [ConNF.Params] [ConNF.Level] [ConNF.BasePositions] [ConNF.FOAAssumptions] {β : ConNF.Λ} {σ : ConNF.Spec β} {S : ConNF.Support β} {hS : S.Strong} (self : σ.Specifies S hS) (i : ConNF.κ) (hi : i < S.max) (A : ConNF.ExtendedIndex β) (N : ConNF.NearLitter) (h : ConNF.InflexibleCoe A N.fst) (hSi : S.f i hi = { path := A, value := Sum.inr N }) :
          σ.f i = ConNF.SpecCondition.inflexibleCoe A h.path (ConNF.CodingFunction.code ((S.before i hi).comp (h.path.B.cons )) h.t.set ) (fun (j : ConNF.κ) => {k : ConNF.κ | ∃ (hj : j < S.max) (hk : k < S.max) (a : ConNF.Atom) (N' : ConNF.NearLitter), N'.fst = N.fst a symmDiff N N' S.f j hj = { path := A, value := Sum.inr N' } S.f k hk = { path := A, value := Sum.inl a }}) h.t.support.max fun (j : ConNF.κ) => {k : ConNF.κ | ∃ (hj : j < h.t.support.max) (hk : k < S.max), { path := (h.path.B.cons ).comp (h.t.support.f j hj).path, value := (h.t.support.f j hj).value } = S.f k hk}
          theorem ConNF.Spec.Specifies.inflexibleBot_spec [ConNF.Params] [ConNF.Level] [ConNF.BasePositions] [ConNF.FOAAssumptions] {β : ConNF.Λ} {σ : ConNF.Spec β} {S : ConNF.Support β} {hS : S.Strong} (self : σ.Specifies S hS) (i : ConNF.κ) (hi : i < S.max) (A : ConNF.ExtendedIndex β) (N : ConNF.NearLitter) (h : ConNF.InflexibleBot A N.fst) :
          S.f i hi = { path := A, value := Sum.inr N }σ.f i = ConNF.SpecCondition.inflexibleBot A h.path {j : ConNF.κ | ∃ (hj : j < S.max), S.f j hj = { path := h.path.B.cons , value := Sum.inl h.a }} fun (j : ConNF.κ) => {k : ConNF.κ | ∃ (hj : j < S.max) (hk : k < S.max) (a : ConNF.Atom) (N' : ConNF.NearLitter), N'.fst = N.fst a symmDiff N N' S.f j hj = { path := A, value := Sum.inr N' } S.f k hk = { path := A, value := Sum.inl a }}
          theorem ConNF.Spec.Specifies.of_eq_atom [ConNF.Params] [ConNF.Level] [ConNF.BasePositions] [ConNF.FOAAssumptions] {β : ConNF.Λ} {σ : ConNF.Spec β} {S : ConNF.Support β} {hS : S.Strong} (h : σ.Specifies S hS) {i : ConNF.κ} {hi : i < σ.max} {A : ConNF.ExtendedIndex β} {s : Set ConNF.κ} {t : Set ConNF.κ} (hi' : σ.f i hi = ConNF.SpecCondition.atom A s t) :
          ∃ (a : ConNF.Atom), S.f i = { path := A, value := Sum.inl a }
          theorem ConNF.Spec.Specifies.of_eq_flexible [ConNF.Params] [ConNF.Level] [ConNF.BasePositions] [ConNF.FOAAssumptions] {β : ConNF.Λ} {σ : ConNF.Spec β} {S : ConNF.Support β} {hS : S.Strong} (h : σ.Specifies S hS) {i : ConNF.κ} {hi : i < σ.max} {A : ConNF.ExtendedIndex β} {s : Set ConNF.κ} {t : ConNF.κSet ConNF.κ} (hi' : σ.f i hi = ConNF.SpecCondition.flexible A s t) :
          ∃ (N : ConNF.NearLitter), ConNF.Flexible A N.fst S.f i = { path := A, value := Sum.inr N }
          theorem ConNF.Spec.Specifies.of_eq_inflexibleCoe [ConNF.Params] [ConNF.Level] [ConNF.BasePositions] [ConNF.FOAAssumptions] {β : ConNF.Λ} {σ : ConNF.Spec β} {S : ConNF.Support β} {hS : S.Strong} (h : σ.Specifies S hS) {i : ConNF.κ} {hi : i < σ.max} {A : ConNF.ExtendedIndex β} {P : ConNF.InflexibleCoePath A} {χ : ConNF.CodingFunction P} {s : ConNF.κSet ConNF.κ} {m : ConNF.κ} {u : ConNF.κSet ConNF.κ} (hi' : σ.f i hi = ConNF.SpecCondition.inflexibleCoe A P χ s m u) :
          ∃ (N : ConNF.NearLitter) (t : ConNF.Tangle P), N.fst = ConNF.fuzz t S.f i = { path := A, value := Sum.inr N }
          theorem ConNF.Spec.Specifies.of_eq_inflexibleBot [ConNF.Params] [ConNF.Level] [ConNF.BasePositions] [ConNF.FOAAssumptions] {β : ConNF.Λ} {σ : ConNF.Spec β} {S : ConNF.Support β} {hS : S.Strong} (h : σ.Specifies S hS) {i : ConNF.κ} {hi : i < σ.max} {A : ConNF.ExtendedIndex β} {P : ConNF.InflexibleBotPath A} {s : Set ConNF.κ} {t : ConNF.κSet ConNF.κ} (hi' : σ.f i hi = ConNF.SpecCondition.inflexibleBot A P s t) :
          ∃ (N : ConNF.NearLitter) (a : ConNF.Tangle ), N.fst = ConNF.fuzz a S.f i = { path := A, value := Sum.inr N }