Documentation

Flypitch.LanguageExtension

Flypitch.LanguageExtension studies maps between first-order languages and how they act on terms, formulas, proofs, and structures. It also records the symbol-filtering and reflection constructions used later in the Henkin and completeness arguments.

Equations
Instances For
    Equations
    Instances For
      Equations
      Instances For
        @[simp]
        structure Flypitch.fol.Lhom (L L' : Language) :
        Instances For
          Equations
          Instances For
            Equations
            Instances For
              Equations
              Instances For
                @[reducible]
                def Flypitch.fol.Lhom.comp {L₁ L₂ L₃ : Language} (g : L₂ →ᴸ L₃) (f : L₁ →ᴸ L₂) :
                L₁ →ᴸ L₃
                Equations
                Instances For
                  theorem Flypitch.fol.Lhom.Lhom_funext {L₁ L₂ : Language} {F G : L₁ →ᴸ L₂} (h_fun : ∀ (n : ) (x : L₁.functions n), F.on_function x = G.on_function x) (h_rel : ∀ (n : ) (x : L₁.relations n), F.on_relation x = G.on_relation x) :
                  F = G
                  theorem Flypitch.fol.Lhom.ext {L₁ L₂ : Language} {F G : L₁ →ᴸ L₂} (h_fun : ∀ (n : ) (x : L₁.functions n), F.on_function x = G.on_function x) (h_rel : ∀ (n : ) (x : L₁.relations n), F.on_relation x = G.on_relation x) :
                  F = G
                  theorem Flypitch.fol.Lhom.ext_iff {L₁ L₂ : Language} {F G : L₁ →ᴸ L₂} :
                  F = G (∀ (n : ) (x : L₁.functions n), F.on_function x = G.on_function x) ∀ (n : ) (x : L₁.relations n), F.on_relation x = G.on_relation x
                  @[simp]
                  theorem Flypitch.fol.Lhom.id_is_left_identity {L₁ L₂ : Language} {F : L₁ →ᴸ L₂} :
                  (Lhom.id L₂).comp F = F
                  @[simp]
                  theorem Flypitch.fol.Lhom.id_is_right_identity {L₁ L₂ : Language} {F : L₁ →ᴸ L₂} :
                  F.comp (Lhom.id L₁) = F
                  @[simp]
                  theorem Flypitch.fol.Lhom.comp_assoc {L₁ L₂ L₃ L₀ : Language} (g : L₂ →ᴸ L₃) (f : L₁ →ᴸ L₂) (e : L₀ →ᴸ L₁) :
                  (g.comp f).comp e = g.comp (f.comp e)
                  @[simp]
                  theorem Flypitch.fol.Lhom.comp_on_function {L₁ L₂ L₃ : Language} (g : L₂ →ᴸ L₃) (f : L₁ →ᴸ L₂) {n : } (x : L₁.functions n) :
                  @[simp]
                  theorem Flypitch.fol.Lhom.comp_on_relation {L₁ L₂ L₃ : Language} (g : L₂ →ᴸ L₃) (f : L₁ →ᴸ L₂) {n : } (x : L₁.relations n) :
                  structure Flypitch.fol.Lhom.is_injective {L L' : Language} (ϕ : L →ᴸ L') :
                  Instances For
                    Instances
                      def Flypitch.fol.Lhom.on_symbol {L L' : Language} (ϕ : L →ᴸ L') :
                      L.symbolsL'.symbols
                      Equations
                      Instances For
                        def Flypitch.fol.Lhom.on_term {L L' : Language} (ϕ : L →ᴸ L') {l : } :
                        preterm L lpreterm L' l
                        Equations
                        Instances For
                          @[simp]
                          theorem Flypitch.fol.Lhom.on_term_lift_at {L L' : Language} (ϕ : L →ᴸ L') {l : } (t : preterm L l) (n m : ) :
                          ϕ.on_term (t ↑' n # m) = ϕ.on_term t ↑' n # m
                          @[simp]
                          theorem Flypitch.fol.Lhom.on_term_lift {L L' : Language} (ϕ : L →ᴸ L') {l : } (n : ) (t : preterm L l) :
                          ϕ.on_term (t n) = ϕ.on_term t n
                          @[simp]
                          theorem Flypitch.fol.Lhom.on_term_subst {L L' : Language} (ϕ : L →ᴸ L') {l : } (t : preterm L l) (s : term L) (n : ) :
                          ϕ.on_term (t[s // n]) = ϕ.on_term t[ϕ.on_term s // n]
                          @[simp]
                          theorem Flypitch.fol.Lhom.on_term_apps {L L' : Language} (ϕ : L →ᴸ L') {l : } (t : preterm L l) (ts : dvector (term L) l) :
                          ϕ.on_term (apps t ts) = apps (ϕ.on_term t) (dvector.map ϕ.on_term ts)
                          @[simp]
                          theorem Flypitch.fol.Lhom.on_term_comp {L L' L₂ : Language} (ψ : L' →ᴸ L₂) (ϕ : L →ᴸ L') {l : } (t : preterm L l) :
                          (ψ.comp ϕ).on_term t = ψ.on_term (ϕ.on_term t)
                          @[simp]
                          theorem Flypitch.fol.Lhom.on_term_id {L : Language} {l : } (t : preterm L l) :
                          (Lhom.id L).on_term t = t
                          theorem Flypitch.fol.Lhom.not_mem_symbols_in_term_on_term {L L' : Language} (ϕ : L →ᴸ L') {s : L'.symbols} (h : sSet.range ϕ.on_symbol) {l : } (t : preterm L l) :
                          @[simp]
                          theorem Flypitch.fol.Lhom.on_formula_lift_at {L L' : Language} (ϕ : L →ᴸ L') {l : } (n m : ) (f : preformula L l) :
                          @[simp]
                          theorem Flypitch.fol.Lhom.on_formula_lift {L L' : Language} (ϕ : L →ᴸ L') {l : } (n : ) (f : preformula L l) :
                          @[simp]
                          theorem Flypitch.fol.Lhom.on_formula_subst {L L' : Language} (ϕ : L →ᴸ L') {l : } (f : preformula L l) (s : term L) (n : ) :
                          @[simp]
                          theorem Flypitch.fol.Lhom.on_formula_apps_rel {L L' : Language} (ϕ : L →ᴸ L') {l : } (f : preformula L l) (ts : dvector (term L) l) :
                          @[simp]
                          theorem Flypitch.fol.Lhom.on_formula_comp {L L' L₂ : Language} (ψ : L' →ᴸ L₂) (ϕ : L →ᴸ L') {l : } (f : preformula L l) :
                          (ψ.comp ϕ).on_formula f = ψ.on_formula (ϕ.on_formula f)
                          @[simp]
                          theorem Flypitch.fol.Lhom.not_mem_function_in_formula_on_formula {L L' : Language} (ϕ : L →ᴸ L') {l' : } {f' : L'.functions l'} (h : f'Set.range ϕ.on_function) {l : } (f : preformula L l) :
                          theorem Flypitch.fol.Lhom.bounded_term_at_on_term {L L' : Language} (ϕ : L →ᴸ L') {l : } {t : preterm L l} {n : } :
                          def Flypitch.fol.Lhom.on_bounded_term {L L' : Language} (ϕ : L →ᴸ L') {n l : } (t : bounded_preterm L n l) :
                          Equations
                          Instances For
                            @[simp]
                            theorem Flypitch.fol.Lhom.on_bounded_term_fst {L L' : Language} (ϕ : L →ᴸ L') {n l : } (t : bounded_preterm L n l) :
                            theorem Flypitch.fol.Lhom.on_bounded_term_comp {L L' L₂ : Language} (ψ : L' →ᴸ L₂) (ϕ : L →ᴸ L') {n l : } (t : bounded_preterm L n l) :
                            Equations
                            Instances For
                              @[simp]
                              theorem Flypitch.fol.Lhom.on_bounded_formula_comp {L L' L₂ : Language} (ψ : L' →ᴸ L₂) (ϕ : L →ᴸ L') {n l : } (f : bounded_preformula L n l) :
                              Equations
                              Instances For
                                def Flypitch.fol.Lhom.on_sentence {L L' : Language} (ϕ : L →ᴸ L') (f : sentence L) :
                                Equations
                                Instances For
                                  @[simp]
                                  theorem Flypitch.fol.Lhom.on_sentence_fst {L L' : Language} (ϕ : L →ᴸ L') (f : sentence L) :
                                  (ϕ.on_sentence f) = ϕ.on_formula f
                                  @[reducible]
                                  Equations
                                  Instances For
                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      Equations
                                      Instances For
                                        noncomputable def Flypitch.fol.Lhom.on_prf {L L' : Language} (ϕ : L →ᴸ L') {Γ : Set (formula L)} {f : formula L} (h : Γ f) :
                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For
                                          @[reducible]
                                          def Flypitch.fol.Lhom.Theory_induced {L L' : Language} (ϕ : L →ᴸ L') (T : Theory L) :
                                          Equations
                                          Instances For
                                            @[simp]
                                            noncomputable def Flypitch.fol.Lhom.on_sprf {L L' : Language} (ϕ : L →ᴸ L') {T : Theory L} {f : sentence L} (h : T f) :
                                            Equations
                                            Instances For
                                              def Flypitch.fol.Lhom.reduct {L L' : Language} (ϕ : L →ᴸ L') (M : Structure L') :
                                              Equations
                                              • One or more equations did not get rendered due to their size.
                                              Instances For
                                                @[simp]
                                                theorem Flypitch.fol.Lhom.reduct_coe {L L' : Language} (ϕ : L →ᴸ L') (M : Structure L') :
                                                @[simp]
                                                theorem Flypitch.fol.Lhom.reduct_term_eq {L L' : Language} (ϕ : L →ᴸ L') {M : Structure L'} {l : } (v : M.carrier) (t : preterm L l) (xs : dvector M.carrier l) :
                                                realize_term v (ϕ.on_term t) xs = realize_term v t xs
                                                theorem Flypitch.fol.Lhom.reduct_formula_iff {L L' : Language} (ϕ : L →ᴸ L') {M : Structure L'} {l : } (v : M.carrier) (f : preformula L l) (xs : dvector M.carrier l) :
                                                noncomputable def Flypitch.fol.Lhom.reflect_term {L L' : Language} (ϕ : L →ᴸ L') [hdec : ϕ.has_decidable_range] (t : term L') (m : ) :
                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                Instances For
                                                  theorem Flypitch.fol.Lhom.reflect_term_apps_pos {L L' : Language} (ϕ : L →ᴸ L') [ϕ.has_decidable_range] {l : } {f : L'.functions l} (hf : f Set.range ϕ.on_function) (ts : dvector (term L') l) (m : ) :
                                                  ϕ.reflect_term (apps (preterm.func f) ts) m = apps (preterm.func (Classical.choose hf)) (dvector.map (fun (t : term L') => ϕ.reflect_term t m) ts)
                                                  theorem Flypitch.fol.Lhom.reflect_term_apps_neg {L L' : Language} (ϕ : L →ᴸ L') [ϕ.has_decidable_range] {l : } {f : L'.functions l} (hf : fSet.range ϕ.on_function) (ts : dvector (term L') l) (m : ) :
                                                  @[simp]
                                                  theorem Flypitch.fol.Lhom.reflect_term_var {L L' : Language} (ϕ : L →ᴸ L') [hdec : ϕ.has_decidable_range] (k m : ) :
                                                  ϕ.reflect_term (&k) m = &k ↑' 1 # m
                                                  @[simp]
                                                  theorem Flypitch.fol.Lhom.reflect_term_on_term {L L' : Language} (ϕ : L →ᴸ L') [hdec : ϕ.has_decidable_range] ( : ϕ.is_injective) (t : term L) (m : ) :
                                                  ϕ.reflect_term (ϕ.on_term t) m = t ↑' 1 # m
                                                  theorem Flypitch.fol.Lhom.reflect_term_lift_at {L L' : Language} (ϕ : L →ᴸ L') [ϕ.has_decidable_range] ( : ϕ.is_injective) {n m m' : } (h : m m') (t : term L') :
                                                  ϕ.reflect_term (t ↑' n # m) (m' + n) = ϕ.reflect_term t m' ↑' n # m
                                                  theorem Flypitch.fol.Lhom.reflect_term_lift {L L' : Language} (ϕ : L →ᴸ L') [ϕ.has_decidable_range] ( : ϕ.is_injective) {n m : } (t : term L') :
                                                  ϕ.reflect_term (t n) (m + n) = ϕ.reflect_term t m n
                                                  noncomputable def Flypitch.fol.Lhom.reflect_formula {L L' : Language} (ϕ : L →ᴸ L') [ϕ.has_decidable_range] (f : formula L') :
                                                  formula L
                                                  Equations
                                                  • One or more equations did not get rendered due to their size.
                                                  Instances For
                                                    theorem Flypitch.fol.Lhom.reflect_formula_apps_rel_neg {L L' : Language} (ϕ : L →ᴸ L') [ϕ.has_decidable_range] {l : } {R : L'.relations l} (hR : RSet.range ϕ.on_relation) (ts : dvector (term L') l) (m : ) :
                                                    @[simp]
                                                    theorem Flypitch.fol.Lhom.reflect_formula_equal {L L' : Language} (ϕ : L →ᴸ L') [ϕ.has_decidable_range] (t₁ t₂ : term L') (m : ) :
                                                    ϕ.reflect_formula (t₁ t₂) m = ϕ.reflect_term t₁ m ϕ.reflect_term t₂ m
                                                    @[simp]
                                                    theorem Flypitch.fol.Lhom.reflect_formula_imp {L L' : Language} (ϕ : L →ᴸ L') [ϕ.has_decidable_range] (f₁ f₂ : formula L') (m : ) :
                                                    ϕ.reflect_formula (f₁ f₂) m = ϕ.reflect_formula f₁ m ϕ.reflect_formula f₂ m
                                                    @[simp]
                                                    theorem Flypitch.fol.Lhom.reflect_formula_all {L L' : Language} (ϕ : L →ᴸ L') [ϕ.has_decidable_range] (f : formula L') (m : ) :
                                                    theorem Flypitch.fol.Lhom.reflect_formula_lift_at {L L' : Language} (ϕ : L →ᴸ L') [ϕ.has_decidable_range] ( : ϕ.is_injective) {n m m' : } (h : m m') (f : formula L') :
                                                    theorem Flypitch.fol.Lhom.reflect_term_subst {L L' : Language} (ϕ : L →ᴸ L') [ϕ.has_decidable_range] ( : ϕ.is_injective) (t s : term L') (n m : ) :
                                                    ϕ.reflect_term (t[s // n]) (m + n) = ϕ.reflect_term t (m + n + 1)[ϕ.reflect_term s m // n]
                                                    theorem Flypitch.fol.Lhom.reflect_formula_subst {L L' : Language} (ϕ : L →ᴸ L') [ϕ.has_decidable_range] ( : ϕ.is_injective) (f : formula L') (t : term L') (n m : ) :
                                                    ϕ.reflect_formula (subst_formula f t n) (m + n) = subst_formula (ϕ.reflect_formula f (m + n + 1)) (ϕ.reflect_term t m) n
                                                    @[simp]
                                                    theorem Flypitch.fol.Lhom.reflect_formula_subst0 {L L' : Language} (ϕ : L →ᴸ L') [ϕ.has_decidable_range] ( : ϕ.is_injective) (f : formula L') (t : term L') (m : ) :
                                                    noncomputable def Flypitch.fol.Lhom.reflect_prf_gen {L L' : Language} (ϕ : L →ᴸ L') [ϕ.has_decidable_range] ( : ϕ.is_injective) {Γ : Set (formula L')} {f : formula L'} (m : ) (h : Γ f) :
                                                    (fun (g : formula L') => ϕ.reflect_formula g m) '' Γ ϕ.reflect_formula f m
                                                    Equations
                                                    • One or more equations did not get rendered due to their size.
                                                    Instances For
                                                      noncomputable def Flypitch.fol.Lhom.reflect_prf {L L' : Language} (ϕ : L →ᴸ L') [ϕ.has_decidable_range] ( : ϕ.is_injective) {Γ : Set (formula L)} {f : formula L} (h : ϕ.on_formula '' Γ ϕ.on_formula f) :
                                                      Γ f
                                                      Equations
                                                      Instances For
                                                        noncomputable def Flypitch.fol.Lhom.reflect_sprf {L L' : Language} (ϕ : L →ᴸ L') [ϕ.has_decidable_range] ( : ϕ.is_injective) {T : Theory L} {f : sentence L} (h : ϕ.Theory_induced T ϕ.on_sentence f) :
                                                        T f
                                                        Equations
                                                        Instances For
                                                          noncomputable def Flypitch.fol.Lhom.generalize_constant {L : Language} {Γ : Set (formula L)} (c : L.constants) ( : Sum.inl 0, c⋃₀ (symbols_in_formula '' Γ)) {f : formula L} (hf : Sum.inl 0, csymbols_in_formula f) (H : Γ subst_formula f (preterm.func c) 0) :
                                                          Γ ∀' f

                                                          Generalize away a fresh constant appearing only as the witness in a derivation.

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

                                                            Sentence-level specialization of generalize_constant for bounded formulas.

                                                            Equations
                                                            Instances For