Documentation

ConNF.FOA.BaseApprox

Base approximations #

In this file, we define base approximations.

Main declarations #

  • exceptions : Rel ConNF.Atom ConNF.Atom
  • litters : Rel ConNF.Litter ConNF.Litter
  • exceptions_permutative : self.exceptions.Permutative
  • litters_permutative' : self.litters.Permutative
  • exceptions_small : ∀ (L : ConNF.Litter), ConNF.Small (L self.exceptions.dom)
Instances For
    instance ConNF.BaseApprox.instSuperLRelLitter [ConNF.Params] :
    ConNF.SuperL ConNF.BaseApprox (Rel ConNF.Litter ConNF.Litter)
    Equations
    • ConNF.BaseApprox.instSuperLRelLitter = { superL := ConNF.BaseApprox.litters }
    @[simp]
    theorem ConNF.BaseApprox.mk_litters [ConNF.Params] (exceptions : Rel ConNF.Atom ConNF.Atom) (litters : Rel ConNF.Litter ConNF.Litter) (exceptions_permutative : exceptions.Permutative) (litters_permutative' : litters.Permutative) (exceptions_small : ∀ (L : ConNF.Litter), ConNF.Small (L exceptions.dom)) :
    { exceptions := exceptions, litters := litters, exceptions_permutative := exceptions_permutative, litters_permutative' := litters_permutative', exceptions_small := exceptions_small } = litters
    theorem ConNF.BaseApprox.ext [ConNF.Params] {ψ χ : ConNF.BaseApprox} (h₁ : ψ.exceptions = χ.exceptions) (h₂ : ψ = χ) :
    ψ = χ
    theorem ConNF.BaseApprox.litters_permutative [ConNF.Params] (ψ : ConNF.BaseApprox) :
    ψ.Permutative
    instance ConNF.BaseApprox.instInv [ConNF.Params] :
    Inv ConNF.BaseApprox
    Equations
    • One or more equations did not get rendered due to their size.
    @[simp]
    theorem ConNF.BaseApprox.inv_exceptions [ConNF.Params] (ψ : ConNF.BaseApprox) :
    ψ⁻¹.exceptions = ψ.exceptions.inv
    @[simp]
    theorem ConNF.BaseApprox.inv_litters [ConNF.Params] (ψ : ConNF.BaseApprox) :
    ψ⁻¹ = ψ.inv
    @[simp]
    theorem ConNF.BaseApprox.inv_inv [ConNF.Params] (ψ : ConNF.BaseApprox) :
    def ConNF.BaseApprox.sublitterAtoms [ConNF.Params] (ψ : ConNF.BaseApprox) (L : ConNF.Litter) :
    Set ConNF.Atom
    Equations
    • ψ.sublitterAtoms L = L \ ψ.exceptions.dom
    Instances For
      theorem ConNF.BaseApprox.sublitterAtoms_near [ConNF.Params] (ψ : ConNF.BaseApprox) (L : ConNF.Litter) :
      ψ.sublitterAtoms L ~ L
      def ConNF.BaseApprox.sublitter [ConNF.Params] (ψ : ConNF.BaseApprox) (L : ConNF.Litter) :
      ConNF.NearLitter
      Equations
      • ψ.sublitter L = { litter := L, atoms := ψ.sublitterAtoms L, atoms_near_litter' := }
      Instances For
        theorem ConNF.BaseApprox.sublitter_atoms [ConNF.Params] {ψ : ConNF.BaseApprox} {L : ConNF.Litter} :
        (ψ.sublitter L) = L \ ψ.exceptions.dom
        theorem ConNF.BaseApprox.sublitter_subset [ConNF.Params] {ψ : ConNF.BaseApprox} {L : ConNF.Litter} :
        (ψ.sublitter L) L
        theorem ConNF.BaseApprox.sublitter_atoms_disjoint [ConNF.Params] {ψ : ConNF.BaseApprox} {L : ConNF.Litter} :
        Disjoint (ψ.sublitter L) ψ.exceptions.dom
        @[simp]
        theorem ConNF.BaseApprox.inv_sublitter [ConNF.Params] (ψ : ConNF.BaseApprox) (L : ConNF.Litter) :
        ψ⁻¹.sublitter L = ψ.sublitter L
        def ConNF.BaseApprox.nearLitterEquiv [ConNF.Params] (N : ConNF.NearLitter) :
        ConNF.κ N
        Equations
        Instances For
          theorem ConNF.BaseApprox.nearLitterEquiv_injective [ConNF.Params] {N : ConNF.NearLitter} {i₁ i₂ : ConNF.κ} (h : ((ConNF.BaseApprox.nearLitterEquiv N) i₁) = ((ConNF.BaseApprox.nearLitterEquiv N) i₂)) :
          i₁ = i₂
          theorem ConNF.BaseApprox.nearLitterEquiv_congr [ConNF.Params] {N₁ N₂ : ConNF.NearLitter} {i₁ i₂ : ConNF.κ} (hN : N₁ = N₂) (hi : i₁ = i₂) :
          theorem ConNF.BaseApprox.nearLitterEquiv_mem [ConNF.Params] (N : ConNF.NearLitter) (i : ConNF.κ) :
          @[simp]
          theorem ConNF.BaseApprox.nearLitterEquiv_litter [ConNF.Params] (ψ : ConNF.BaseApprox) (L : ConNF.Litter) (i : ConNF.κ) :
          (↑((ConNF.BaseApprox.nearLitterEquiv (ψ.sublitter L)) i)) = L
          theorem ConNF.BaseApprox.nearLitterEquiv_not_mem_dom [ConNF.Params] (ψ : ConNF.BaseApprox) (L : ConNF.Litter) (i : ConNF.κ) :
          ((ConNF.BaseApprox.nearLitterEquiv (ψ.sublitter L)) i)ψ.exceptions.dom
          inductive ConNF.BaseApprox.typical [ConNF.Params] (ψ : ConNF.BaseApprox) :
          Rel ConNF.Atom ConNF.Atom
          Instances For
            theorem ConNF.BaseApprox.typical_iff [ConNF.Params] {ψ : ConNF.BaseApprox} {a₁ a₂ : ConNF.Atom} :
            ψ.typical a₁ a₂ ψ a₁ a₂ ∃ (i : ConNF.κ), a₁ = ((ConNF.BaseApprox.nearLitterEquiv (ψ.sublitter a₁)) i) a₂ = ((ConNF.BaseApprox.nearLitterEquiv (ψ.sublitter a₂)) i)
            theorem ConNF.BaseApprox.not_mem_dom_of_typical [ConNF.Params] {ψ : ConNF.BaseApprox} {a₁ a₂ : ConNF.Atom} (h : ψ.typical a₁ a₂) :
            a₁ψ.exceptions.dom
            theorem ConNF.BaseApprox.typical_inv_of_typical [ConNF.Params] {ψ : ConNF.BaseApprox} {a₁ a₂ : ConNF.Atom} (h : ψ.typical a₁ a₂) :
            ψ⁻¹.typical a₂ a₁
            theorem ConNF.BaseApprox.typical_inv_iff_typical [ConNF.Params] {ψ : ConNF.BaseApprox} {a₁ a₂ : ConNF.Atom} :
            ψ⁻¹.typical a₂ a₁ ψ.typical a₁ a₂
            @[simp]
            theorem ConNF.BaseApprox.inv_typical [ConNF.Params] {ψ : ConNF.BaseApprox} :
            ψ⁻¹.typical = ψ.typical.inv
            def ConNF.BaseApprox.atoms [ConNF.Params] (ψ : ConNF.BaseApprox) :
            Rel ConNF.Atom ConNF.Atom
            Equations
            • ψ.atoms = ψ.exceptions ψ.typical
            Instances For
              instance ConNF.BaseApprox.instSuperARelAtom [ConNF.Params] :
              ConNF.SuperA ConNF.BaseApprox (Rel ConNF.Atom ConNF.Atom)
              Equations
              • ConNF.BaseApprox.instSuperARelAtom = { superA := ConNF.BaseApprox.atoms }
              theorem ConNF.BaseApprox.atoms_def [ConNF.Params] (ψ : ConNF.BaseApprox) :
              ψ = ψ.exceptions ψ.typical
              theorem ConNF.BaseApprox.exceptions_le_atoms [ConNF.Params] (ψ : ConNF.BaseApprox) :
              ψ.exceptions ψ
              theorem ConNF.BaseApprox.exceptions_dom_subset_atoms_dom [ConNF.Params] (ψ : ConNF.BaseApprox) :
              ψ.exceptions.dom ψ.dom
              theorem ConNF.BaseApprox.mem_dom_atoms_of_litter_mem_dom [ConNF.Params] {ψ : ConNF.BaseApprox} {a : ConNF.Atom} (h : a ψ.dom) :
              a ψ.dom
              @[simp]
              theorem ConNF.BaseApprox.inv_atoms [ConNF.Params] (ψ : ConNF.BaseApprox) :
              ψ⁻¹ = ψ.inv
              theorem ConNF.BaseApprox.typical_injective [ConNF.Params] (ψ : ConNF.BaseApprox) :
              ψ.typical.Injective
              theorem ConNF.BaseApprox.typical_coinjective [ConNF.Params] (ψ : ConNF.BaseApprox) :
              ψ.typical.Coinjective
              theorem ConNF.BaseApprox.typical_codomEqDom [ConNF.Params] (ψ : ConNF.BaseApprox) :
              ψ.typical.CodomEqDom
              theorem ConNF.BaseApprox.typical_permutative [ConNF.Params] (ψ : ConNF.BaseApprox) :
              ψ.typical.Permutative
              theorem ConNF.BaseApprox.exceptions_typical_disjoint [ConNF.Params] (ψ : ConNF.BaseApprox) :
              Disjoint ψ.exceptions.dom ψ.typical.dom
              theorem ConNF.BaseApprox.atoms_permutative [ConNF.Params] (ψ : ConNF.BaseApprox) :
              ψ.Permutative
              theorem ConNF.BaseApprox.atoms_image_eq_typical_image [ConNF.Params] (ψ : ConNF.BaseApprox) {s : Set ConNF.Atom} (hs : Disjoint ψ.exceptions.dom s) :
              ψ.image s = ψ.typical.image s
              theorem ConNF.BaseApprox.typical_image_sublitter [ConNF.Params] (ψ : ConNF.BaseApprox) {L₁ L₂ : ConNF.Litter} (h : ψ L₁ L₂) :
              ψ.typical.image (ψ.sublitter L₁) = (ψ.sublitter L₂)
              theorem ConNF.BaseApprox.image_near_of_near [ConNF.Params] (ψ : ConNF.BaseApprox) (s : Set ConNF.Atom) {L₁ L₂ : ConNF.Litter} (hL : ψ L₁ L₂) (hsL : s ~ L₁) :
              ψ.image s ~ L₂
              def ConNF.BaseApprox.nearLitters [ConNF.Params] (ψ : ConNF.BaseApprox) :
              Rel ConNF.NearLitter ConNF.NearLitter
              Equations
              Instances For
                instance ConNF.BaseApprox.instSuperNRelNearLitter [ConNF.Params] :
                ConNF.SuperN ConNF.BaseApprox (Rel ConNF.NearLitter ConNF.NearLitter)
                Equations
                • ConNF.BaseApprox.instSuperNRelNearLitter = { superN := ConNF.BaseApprox.nearLitters }
                theorem ConNF.BaseApprox.nearLitters_def [ConNF.Params] (ψ : ConNF.BaseApprox) {N₁ N₂ : ConNF.NearLitter} :
                ψ N₁ N₂ ψ N₁ N₂ N₁ ψ.dom ψ.image N₁ = N₂
                theorem ConNF.BaseApprox.mem_dom_nearLitters [ConNF.Params] {ψ : ConNF.BaseApprox} {N : ConNF.NearLitter} (hL : N ψ.dom) (ha : aN \ N, a ψ.dom) :
                N ψ.dom
                @[simp]
                theorem ConNF.BaseApprox.inv_nearLitters [ConNF.Params] (ψ : ConNF.BaseApprox) :
                ψ⁻¹ = ψ.inv
                theorem ConNF.BaseApprox.atoms_subset_dom_of_nearLitters_left [ConNF.Params] {ψ : ConNF.BaseApprox} {N₁ N₂ : ConNF.NearLitter} (h : ψ N₁ N₂) :
                N₁ ψ.dom
                theorem ConNF.BaseApprox.atoms_subset_dom_of_nearLitters_right [ConNF.Params] {ψ : ConNF.BaseApprox} {N₁ N₂ : ConNF.NearLitter} (h : ψ N₁ N₂) :
                N₂ ψ.dom
                theorem ConNF.BaseApprox.nearLitters_injective [ConNF.Params] (ψ : ConNF.BaseApprox) :
                ψ.Injective
                theorem ConNF.BaseApprox.nearLitters_coinjective [ConNF.Params] (ψ : ConNF.BaseApprox) :
                ψ.Coinjective
                theorem ConNF.BaseApprox.nearLitters_codom_subset_dom [ConNF.Params] (ψ : ConNF.BaseApprox) :
                ψ.codom ψ.dom
                theorem ConNF.BaseApprox.nearLitters_permutative [ConNF.Params] (ψ : ConNF.BaseApprox) :
                ψ.Permutative
                instance ConNF.BaseApprox.instLE [ConNF.Params] :
                LE ConNF.BaseApprox
                Equations
                • ConNF.BaseApprox.instLE = { le := fun (ψ χ : ConNF.BaseApprox) => ψ.exceptions = χ.exceptions ψ χ }
                Equations
                theorem ConNF.BaseApprox.litters_le_of_le [ConNF.Params] {ψ χ : ConNF.BaseApprox} (h : ψ χ) :
                ψ χ
                theorem ConNF.BaseApprox.sublitter_eq_of_le [ConNF.Params] {ψ χ : ConNF.BaseApprox} (h : ψ χ) (L : ConNF.Litter) :
                ψ.sublitter L = χ.sublitter L
                theorem ConNF.BaseApprox.typical_le_of_le [ConNF.Params] {ψ χ : ConNF.BaseApprox} (h : ψ χ) :
                ψ.typical χ.typical
                theorem ConNF.BaseApprox.atoms_le_of_le [ConNF.Params] {ψ χ : ConNF.BaseApprox} (h : ψ χ) :
                ψ χ
                theorem ConNF.BaseApprox.nearLitters_le_of_le [ConNF.Params] {ψ χ : ConNF.BaseApprox} (h : ψ χ) :
                ψ χ

                This creates new definitions of ·ᴬ and ·ᴺ, but the instances are definitionally equal so no triangles are formed.

                Equations
                • ConNF.BaseApprox.instBaseActionClass = { atoms := fun (ψ : ConNF.BaseApprox) => ψ, atoms_oneOne := , nearLitters := fun (ψ : ConNF.BaseApprox) => ψ, nearLitters_oneOne := }
                def ConNF.BaseApprox.addOrbitLitters [ConNF.Params] (f : ConNF.Litter) :
                Rel ConNF.Litter ConNF.Litter
                Equations
                Instances For
                  theorem ConNF.BaseApprox.addOrbitLitters_oneOne [ConNF.Params] (f : ConNF.Litter) (hf : ∀ (m n k : ), f m = f nf (m + k) = f (n + k)) :
                  theorem ConNF.BaseApprox.addOrbitLitters_permutative [ConNF.Params] (f : ConNF.Litter) (hf : ∀ (m n k : ), f m = f nf (m + k) = f (n + k)) :
                  theorem ConNF.BaseApprox.disjoint_litters_dom_addOrbitLitters_dom [ConNF.Params] (ψ : ConNF.BaseApprox) (f : ConNF.Litter) (hfψ : ∀ (n : ), f nψ.dom) :
                  def ConNF.BaseApprox.addOrbit [ConNF.Params] (ψ : ConNF.BaseApprox) (f : ConNF.Litter) (hf : ∀ (m n k : ), f m = f nf (m + k) = f (n + k)) (hfψ : ∀ (n : ), f nψ.dom) :
                  ConNF.BaseApprox
                  Equations
                  • ψ.addOrbit f hf hfψ = { exceptions := ψ.exceptions, litters := ψ.litters ConNF.BaseApprox.addOrbitLitters f, exceptions_permutative := , litters_permutative' := , exceptions_small := }
                  Instances For
                    theorem ConNF.BaseApprox.addOrbit_litters [ConNF.Params] {ψ : ConNF.BaseApprox} {f : ConNF.Litter} {hf : ∀ (m n k : ), f m = f nf (m + k) = f (n + k)} {hfψ : ∀ (n : ), f nψ.dom} :
                    (ψ.addOrbit f hf hfψ) = ψ ConNF.BaseApprox.addOrbitLitters f
                    theorem ConNF.BaseApprox.le_addOrbit [ConNF.Params] {ψ : ConNF.BaseApprox} {f : ConNF.Litter} {hf : ∀ (m n k : ), f m = f nf (m + k) = f (n + k)} {hfψ : ∀ (n : ), f nψ.dom} :
                    ψ ψ.addOrbit f hf hfψ
                    theorem ConNF.BaseApprox.upperBound_exceptions_small [ConNF.Params] (c : Set ConNF.BaseApprox) (hc : IsChain (fun (x1 x2 : ConNF.BaseApprox) => x1 x2) c) (L : ConNF.Litter) :
                    ConNF.Small (L (⨆ ψc, ψ.exceptions).dom)
                    def ConNF.BaseApprox.upperBound [ConNF.Params] (c : Set ConNF.BaseApprox) (hc : IsChain (fun (x1 x2 : ConNF.BaseApprox) => x1 x2) c) :
                    ConNF.BaseApprox

                    An upper bound for a chain of base approximations.

                    Equations
                    • ConNF.BaseApprox.upperBound c hc = { exceptions := ψc, ψ.exceptions, litters := ψc, ψ, exceptions_permutative := , litters_permutative' := , exceptions_small := }
                    Instances For
                      theorem ConNF.BaseApprox.le_upperBound [ConNF.Params] (c : Set ConNF.BaseApprox) (hc : IsChain (fun (x1 x2 : ConNF.BaseApprox) => x1 x2) c) (ψ : ConNF.BaseApprox) :
                      def ConNF.BaseApprox.Total [ConNF.Params] (ψ : ConNF.BaseApprox) :
                      Equations
                      • ψ.Total = ∀ (L : ConNF.Litter), L ψ.dom
                      Instances For
                        theorem ConNF.BaseApprox.Total.atoms [ConNF.Params] {ψ : ConNF.BaseApprox} (h : ψ.Total) (a : ConNF.Atom) :
                        a ψ.dom
                        theorem ConNF.BaseApprox.Total.nearLitters [ConNF.Params] {ψ : ConNF.BaseApprox} (h : ψ.Total) (N : ConNF.NearLitter) :
                        N ψ.dom
                        theorem ConNF.BaseApprox.Total.atoms_bijective [ConNF.Params] {ψ : ConNF.BaseApprox} (h : ψ.Total) :
                        ψ.Bijective
                        theorem ConNF.BaseApprox.Total.litters_bijective [ConNF.Params] {ψ : ConNF.BaseApprox} (h : ψ.Total) :
                        ψ.Bijective
                        theorem ConNF.BaseApprox.basePerm_apply_near_apply [ConNF.Params] (ψ : ConNF.BaseApprox) (h : ψ.Total) (s : Set ConNF.Atom) (L : ConNF.Litter) :
                        s ~ L(ψ.toEquiv ) '' s ~ ((ψ.toEquiv ) L)
                        def ConNF.BaseApprox.basePerm [ConNF.Params] (ψ : ConNF.BaseApprox) (h : ψ.Total) :
                        ConNF.BasePerm
                        Equations
                        • ψ.basePerm h = { atoms := ψ.toEquiv , litters := ψ.toEquiv , apply_near_apply := }
                        Instances For
                          theorem ConNF.BaseApprox.basePerm_smul_atom_def [ConNF.Params] {ψ : ConNF.BaseApprox} {h : ψ.Total} {a : ConNF.Atom} :
                          ψ.basePerm h a = ψ.toFunction a
                          theorem ConNF.BaseApprox.basePerm_smul_litter_def [ConNF.Params] {ψ : ConNF.BaseApprox} {h : ψ.Total} {L : ConNF.Litter} :
                          ψ.basePerm h L = ψ.toFunction L
                          @[simp]
                          theorem ConNF.BaseApprox.basePerm_smul_atom_eq_iff [ConNF.Params] {ψ : ConNF.BaseApprox} {h : ψ.Total} {a₁ a₂ : ConNF.Atom} :
                          ψ.basePerm h a₁ = a₂ ψ a₁ a₂
                          @[simp]
                          theorem ConNF.BaseApprox.basePerm_inv_smul_atom_eq_iff [ConNF.Params] {ψ : ConNF.BaseApprox} {h : ψ.Total} {a₁ a₂ : ConNF.Atom} :
                          (ψ.basePerm h)⁻¹ a₁ = a₂ ψ a₂ a₁
                          @[simp]
                          theorem ConNF.BaseApprox.basePerm_smul_litter_eq_iff [ConNF.Params] {ψ : ConNF.BaseApprox} {h : ψ.Total} {L₁ L₂ : ConNF.Litter} :
                          ψ.basePerm h L₁ = L₂ ψ L₁ L₂
                          @[simp]
                          theorem ConNF.BaseApprox.basePerm_inv_smul_litter_eq_iff [ConNF.Params] {ψ : ConNF.BaseApprox} {h : ψ.Total} {L₁ L₂ : ConNF.Litter} :
                          (ψ.basePerm h)⁻¹ L₁ = L₂ ψ L₂ L₁
                          @[simp]
                          theorem ConNF.BaseApprox.basePerm_smul_nearLitter_eq_iff [ConNF.Params] {ψ : ConNF.BaseApprox} {h : ψ.Total} {N₁ N₂ : ConNF.NearLitter} :
                          ψ.basePerm h N₁ = N₂ ψ N₁ N₂
                          structure ConNF.BaseApprox.Approximates [ConNF.Params] (ψ : ConNF.BaseApprox) (π : ConNF.BasePerm) :
                          • atoms : ∀ (a₁ a₂ : ConNF.Atom), ψ a₁ a₂a₂ = π a₁
                          • nearLitters : ∀ (N₁ N₂ : ConNF.NearLitter), ψ N₁ N₂N₂ = π N₁
                          Instances For
                            theorem ConNF.BaseApprox.Approximates.litters [ConNF.Params] {ψ : ConNF.BaseApprox} {π : ConNF.BasePerm} (h : ψ.Approximates π) (L₁ L₂ : ConNF.Litter) :
                            ψ L₁ L₂π L₁ = L₂
                            theorem ConNF.BaseApprox.Approximates.mono [ConNF.Params] {ψ χ : ConNF.BaseApprox} {π : ConNF.BasePerm} (hχ : χ.Approximates π) (h : ψ χ) :
                            ψ.Approximates π
                            structure ConNF.BaseApprox.ExactlyApproximates [ConNF.Params] (ψ : ConNF.BaseApprox) (π : ConNF.BasePerm) extends ψ.Approximates π :
                            Instances For
                              theorem ConNF.BaseApprox.ExactlyApproximates.mono [ConNF.Params] {ψ χ : ConNF.BaseApprox} {π : ConNF.BasePerm} (hχ : χ.ExactlyApproximates π) (h : ψ χ) :
                              ψ.ExactlyApproximates π
                              theorem ConNF.BaseApprox.ExactlyApproximates.smulSet_nearLitter [ConNF.Params] {ψ : ConNF.BaseApprox} {π : ConNF.BasePerm} {N₁ N₂ : ConNF.NearLitter} (hψ : ψ.ExactlyApproximates π) (hNπ : π N₁ = N₂) :
                              π (N₁ \ ψ.exceptions.dom) = N₂ \ ψ.exceptions.dom
                              theorem ConNF.BaseApprox.Approximates.smulSet_eq_exceptions_image [ConNF.Params] {ψ : ConNF.BaseApprox} {π : ConNF.BasePerm} (hψ : ψ.Approximates π) (s : Set ConNF.Atom) (hs : s ψ.exceptions.dom) :
                              π s = ψ.exceptions.image s
                              theorem ConNF.BaseApprox.approximates_basePerm [ConNF.Params] {ψ : ConNF.BaseApprox} (h : ψ.Total) :
                              ψ.Approximates (ψ.basePerm h)
                              theorem ConNF.BaseApprox.exactlyApproximates_basePerm [ConNF.Params] {ψ : ConNF.BaseApprox} (h : ψ.Total) :
                              ψ.ExactlyApproximates (ψ.basePerm h)