Supporting results for pointwise provable equality.
Terms of first-order logic #
This file defines the terms of first-order logic.
The bounded variables are denoted by #x for x : Fin n, and free variables are denoted by
&x for x : ξ.
t : Semiterm L ξ n is a (semi-)term of language L with bounded variables of Fin n and free
variables of ξ.
A semiterm of language L, with bound variables indexed by Fin n and free variables indexed
by ξ. In FFL.FirstOrder.Semiformula, bound variables are de Bruijn indices with a separate
type from free variables.
- bvar {L : Language} {ξ : Type u_1} {n : ℕ} : Fin n → Semiterm L ξ n
- fvar {L : Language} {ξ : Type u_1} {n : ℕ} : ξ → Semiterm L ξ n
- func {L : Language} {ξ : Type u_1} {n arity : ℕ} : L.Func arity → (Fin arity → Semiterm L ξ n) → Semiterm L ξ n
Instances For
&x is the free variable indexed by the element x : ξ.
Equations
- One or more equations did not get rendered due to their size.
Instances For
#x is the bound variable with de Bruijn index x.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The Term construction in FFL.FirstOrder.
Equations
Instances For
The Closed Semiterm construction in FFL.FirstOrder.
Equations
Instances For
The Closed Term construction in FFL.FirstOrder.
Equations
Instances For
The Syntactic Semiterm construction in FFL.FirstOrder.
Equations
Instances For
The Syntactic Term construction in FFL.FirstOrder.
Equations
Instances For
The to Str construction in FFL.FirstOrder.Semiterm.
Equations
- (PointwiseComposition.FFL.FirstOrder.Semiterm.bvar x_1).toStr = "x_{" ++ toString (n - 1 - ↑x_1) ++ "}"
- (PointwiseComposition.FFL.FirstOrder.Semiterm.fvar x_1).toStr = "z_{" ++ toString x_1 ++ "}"
- (PointwiseComposition.FFL.FirstOrder.Semiterm.func c a).toStr = toString c
- (PointwiseComposition.FFL.FirstOrder.Semiterm.func f v).toStr = ("{" ++ toString f ++ "} \\left(" ++ PointwiseComposition.String.vecToStr fun (i : Fin (n_1 + 1)) => (v i).toStr) ++ "\\right)"
Instances For
Equations
- PointwiseComposition.FFL.FirstOrder.Semiterm.instRepr = { reprPrec := fun (t : PointwiseComposition.FFL.FirstOrder.Semiterm L ξ n) (x : ℕ) => Std.Format.text t.toStr }
The has Dec Eq construction in FFL.FirstOrder.Semiterm.
Equations
- One or more equations did not get rendered due to their size.
- (PointwiseComposition.FFL.FirstOrder.Semiterm.bvar x_2).hasDecEq (PointwiseComposition.FFL.FirstOrder.Semiterm.bvar y) = ⋯.mpr (decEq x_2 y)
- (PointwiseComposition.FFL.FirstOrder.Semiterm.bvar a).hasDecEq (PointwiseComposition.FFL.FirstOrder.Semiterm.fvar a_1) = isFalse ⋯
- (PointwiseComposition.FFL.FirstOrder.Semiterm.bvar a).hasDecEq (PointwiseComposition.FFL.FirstOrder.Semiterm.func a_1 a_2) = isFalse ⋯
- (PointwiseComposition.FFL.FirstOrder.Semiterm.fvar a).hasDecEq (PointwiseComposition.FFL.FirstOrder.Semiterm.bvar a_1) = isFalse ⋯
- (PointwiseComposition.FFL.FirstOrder.Semiterm.fvar x_2).hasDecEq (PointwiseComposition.FFL.FirstOrder.Semiterm.fvar y) = ⋯.mpr (decEq x_2 y)
- (PointwiseComposition.FFL.FirstOrder.Semiterm.fvar a).hasDecEq (PointwiseComposition.FFL.FirstOrder.Semiterm.func a_1 a_2) = isFalse ⋯
- (PointwiseComposition.FFL.FirstOrder.Semiterm.func a a_1).hasDecEq (PointwiseComposition.FFL.FirstOrder.Semiterm.bvar a_2) = isFalse ⋯
- (PointwiseComposition.FFL.FirstOrder.Semiterm.func a a_1).hasDecEq (PointwiseComposition.FFL.FirstOrder.Semiterm.fvar a_2) = isFalse ⋯
Instances For
The complexity of a semiterm, taking suprema at function symbols.
Equations
- (PointwiseComposition.FFL.FirstOrder.Semiterm.bvar a).complexity = 0
- (PointwiseComposition.FFL.FirstOrder.Semiterm.fvar a).complexity = 0
- (PointwiseComposition.FFL.FirstOrder.Semiterm.func a v).complexity = (Finset.univ.sup fun (i : Fin arity) => (v i).complexity) + 1
Instances For
The func! construction in FFL.FirstOrder.Semiterm.
Equations
Instances For
The set of bound variables occurring in a semiterm.
Equations
- (PointwiseComposition.FFL.FirstOrder.Semiterm.bvar a).bv = {a}
- (PointwiseComposition.FFL.FirstOrder.Semiterm.fvar a).bv = ∅
- (PointwiseComposition.FFL.FirstOrder.Semiterm.func a v).bv = Finset.univ.biUnion fun (i : Fin arity) => (v i).bv
Instances For
The set of free variables occuring in a semiterm.
Equations
Instances For
The FVar? construction in FFL.FirstOrder.Semiterm.
Equations
- t.HasFreeVariable x = (x ∈ t.freeVariables)
Instances For
The map on terms induced from a homomorphism between languages.
Equations
- One or more equations did not get rendered due to their size.
- PointwiseComposition.FFL.FirstOrder.Semiterm.lMap Φ (PointwiseComposition.FFL.FirstOrder.Semiterm.bvar a) = PointwiseComposition.FFL.FirstOrder.Semiterm.bvar a
- PointwiseComposition.FFL.FirstOrder.Semiterm.lMap Φ (PointwiseComposition.FFL.FirstOrder.Semiterm.fvar a) = PointwiseComposition.FFL.FirstOrder.Semiterm.fvar a
Instances For
The fvar List construction in FFL.FirstOrder.Semiterm.
Equations
Instances For
The idx Of FVar construction in FFL.FirstOrder.Semiterm.
Equations
- t.idxOfFVar a = List.idxOf a t.fvarList
Instances For
The enumerate FVar construction in FFL.FirstOrder.Semiterm.