Substitutionless first-order logic w/ identity

In summary, the conversation discusses the use of axiom schemes in first-order logic with identity, specifically in regards to proving properties of equality through the process of substitution. The conversation goes into detail about rules of inference and axiom schemes for propositional and predicate calculus, as well as the difficulties in proving the usual properties of equality using these axioms. The conversation concludes with a discussion about proving symmetry and transitivity using these axioms.
  • #1
techmologist
306
12
I have been trying to familiarize myself with a particular system of first-order logic with identity, in which the process of substitution is achieved by replacing, one at a time, one occurrence of a variable with a term. (see axiom schemes 6) and 7)). I want to use these axioms to prove the properties of equality (identity), namely reflexivity, symmetry, and transitivity. In particular, I'd like to show that they hold for terms, not just variables. A term could be a variable, a constant or some arithmetic composition of variables and constants. But I'm having trouble doing that. First, some preliminaries:

Axiom schemes: each axiom scheme stands for infinitely many individual axioms.

F, G, and H stand for any formulas. x stands for any variable. t stands for any term.[tex]\exists x[/tex] is here taken to be an abbreviation for [tex]\neg\forall x \neg[/tex].

Propositional calculus:
1)[tex]F \supset(G \supset F)[/tex]
2)[tex](F \supset (G \supset H)) \supset ((F \supset G) \supset (F \supset H))[/tex]
3)[tex](\neg F \supset \neg G) \supset (G \supset F)[/tex]

Predicate calculus:
4)[tex]\forall x(F \supset G) \supset (\forall x F \supset \forall x G)[/tex]
5)[tex]F \supset \forall x F[/tex] provided x does not occur in F
6)[tex]\exists x (x = t)[/tex] provided x does not occur in the term t
7)[tex]x = t \supset (Y_1 \supset Y_2)[/tex] where Y2 is obtained from atomic formula Y1 by replacing any one occurrence of x with t. An atomic formula is a formula of the form t1 = t2, where t1 and t2 are terms.


Rules of inference: Modus Ponens and Universal Generalization, i.e. from theorem F infer [tex]\forall x F[/tex]. Here it doesn't matter whether or not x occurs in F.

There are also the axiom schemes for arithmetic and mathematical induction, but I'm leaving them out because I don't think they are important here. I might be wrong about that, though. But it is because of the inclusion of arithmetic that I need to consider terms and not just variables.

I am having trouble proving the usual properties of equality using these axioms. Reflexivity is easy enough:

From 7), we get [tex]x=t \supset (x=t \supset t=t)[/tex].

This is equivalent to

[tex]x=t \supset t=t[/tex]

And from this we can infer

[tex]\exists x(x=t) \supset t=t[/tex], which gives us the theorem t = t for any term t. I can show a limited form of symmetry:

[tex]x=t \supset (x=x \supset t=x)[/tex]
[tex]x=x \supset (x=t \supset t=x)[/tex]
[tex]x=t \supset t=x[/tex]

But I haven't figured out how to show [tex]t=x \supset x=t[/tex], much less [tex]t_1 = t_2 \supset t_2 = t_1[/tex].

Axiom scheme 7) itself gives a limited form of transitivity, i.e.

[tex]x=t_1 \supset (x = t_2 \supset t_1=t_2)[/tex]

But I don't know how to show [tex]x=t_1 \supset (t_1=t_2 \supset x = t_2)[/tex], which I assume is valid. Note that symmetry and transitivity are easily proved when we restrict t to being a variable. But I'm pretty sure these properties of equality are supposed to hold for more general terms. It seems they would have to, or else this method of replacement would not achieve the same results as the more normal method of substitution. Any suggestions on how to prove these? Thanks.

edit: with my old browser, I can't tell, but it looks like the tildes don't show up in LaTeX, so I guess I'll change them to \neg
 
Last edited:
Physics news on Phys.org
  • #2
Symmetry:

[itex]x=t_1 \rightarrow (x \neq t_2 \rightarrow t_1 \neq t_2)[/itex], i.e. [itex]x=t_1 \rightarrow (t_1=t_2 \rightarrow x=t_2)[/itex]
[itex]x=t_2 \rightarrow (x = t_1 \rightarrow t_2 = t_1)[/itex], i.e. [itex]x=t_1 \rightarrow (x=t_2 \rightarrow t_2 = t_1)[/itex], therefore
[itex](x=t_1) \rightarrow (t_1=t_2 \rightarrow t_2=t_1)[/itex], so
[itex]\forall x (x=t_1 \rightarrow (t_1=t_2 \rightarrow t_2=t_1))[/itex], i.e. (assuming we've chosen x so that x is not free in [itex]t_1[/itex] or [itex]t_2[/itex]) [itex]\exists x (x=t_1) \rightarrow (t_1 = t_2 \rightarrow t_2 = t_1) [/itex], but
[itex]\exists x (x=t_1)[/itex], therefore
[itex]t_1 = t_2 \rightarrow t_2 = t_1[/itex]

Transitivity is easier:

[itex]x=t_1 \rightarrow (t_1 = t_2 \rightarrow x=t_2)[/itex]
[itex]x=t_2 \rightarrow (t_2 = t_3 \rightarrow x=t_3)[/itex]
[itex](t_1 = t_2) \rightarrow (t_2 = t_3 \rightarrow (x=t_1 \rightarrow x=t_3))[/itex]
[itex]\forall x ((t_1 = t_2) \rightarrow (t_2 = t_3 \rightarrow (x=t_1 \rightarrow x=t_3)))[/itex]
[itex]t_1 = t_2 \rightarrow (t_2 = t_3 \rightarrow (t_1=t_1 \rightarrow t_1 = t_3))[/itex], but we already know that [itex]t_1 = t_1[/itex], so:
[itex]t_1 = t_2 \rightarrow (t_2 = t_3 \rightarrow t_1 = t_3)[/itex]

Hope I didn't make any blunders there.
 
Last edited:
  • #3
Preno, thanks for your reply.

Preno said:
Symmetry:

[itex]x=t_1 \rightarrow (x \neq t_2 \rightarrow t_1 \neq t_2)[/itex], i.e. [itex]x=t_1 \rightarrow (t_1=t_2 \rightarrow x=t_2)[/itex]
[itex]x=t_2 \rightarrow (x = t_1 \rightarrow t_2 = t_1)[/itex], i.e. [itex]x=t_1 \rightarrow (x=t_2 \rightarrow t_2 = t_1)[/itex], therefore
[itex](x=t_1) \rightarrow (t_1=t_2 \rightarrow t_2=t_1)[/itex], so
[itex]\forall x (x=t_1 \rightarrow (t_1=t_2 \rightarrow t_2=t_1))[/itex], i.e. (assuming we've chosen x so that x is not free in [itex]t_1[/itex] or [itex]t_2[/itex]) [itex]\exists x (x=t_1) \rightarrow (t_1 = t_2 \rightarrow t_2 = t_1) [/itex], but
[itex]\exists x (x=t_1)[/itex], therefore
[itex]t_1 = t_2 \rightarrow t_2 = t_1[/itex]

I see what you're doing in the proof of symmetry...I think it is the right idea. But since [tex]x \neq t_2[/tex] is not an atomic formula, the first line is not an instance of axiom scheme 7). So that line would need to be proved first. Maybe that part is easy and I'm just missing something.

Transitivity is easier:

[itex]x=t_1 \rightarrow (t_1 = t_2 \rightarrow x=t_2)[/itex]
[itex]x=t_2 \rightarrow (t_2 = t_3 \rightarrow x=t_3)[/itex]
[itex](t_1 = t_2) \rightarrow (t_2 = t_3 \rightarrow (x=t_1 \rightarrow x=t_3))[/itex]
[itex]\forall x ((t_1 = t_2) \rightarrow (t_2 = t_3 \rightarrow (x=t_1 \rightarrow x=t_3)))[/itex]
[itex]t_1 = t_2 \rightarrow (t_2 = t_3 \rightarrow (t_1=t_1 \rightarrow t_1 = t_3))[/itex], but we already know that [itex]t_1 = t_1[/itex], so:
[itex]t_1 = t_2 \rightarrow (t_2 = t_3 \rightarrow t_1 = t_3)[/itex]

In going from the 4th line to the 5th line, it looks like you made use of [tex]\forall xF(x) \rightarrow F(t_1)[/tex]. But that is a theorem I haven't been able to prove yet. In fact, I think it depends on the identities we are trying to prove now. However, I can prove

[tex]\forall xF(x) \rightarrow F(y)[/tex] where y is also a variable. It's really inconvenient not having substitution (of terms for variables) as a rule of inference, but apparently it is helpful for theoretical reasons.
 
  • #4
techmologist said:
I see what you're doing in the proof of symmetry...I think it is the right idea. But since [tex]x \neq t_2[/tex] is not an atomic formula, the first line is not an instance of axiom scheme 7). So that line would need to be proved first. Maybe that part is easy and I'm just missing something.
Ah, you're right.
In going from the 4th line to the 5th line, it looks like you made use of [tex]\forall xF(x) \rightarrow F(t_1)[/tex]. But that is a theorem I haven't been able to prove yet. In fact, I think it depends on the identities we are trying to prove now. However, I can prove

[tex]\forall xF(x) \rightarrow F(y)[/tex] where y is also a variable. It's really inconvenient not having substitution (of terms for variables) as a rule of inference, but apparently it is helpful for theoretical reasons.
Well, it is a theorem of classical predicate logic (without identity), and I was assuming that we already know that the system includes classical predicate logic and that identity is the problematic bit. But I see I was mistaken, we do have to use the equality axioms to prove it in this system.

The best I could do is ([itex]\sigma \equiv (t_1 = t_2 \rightarrow (t_2 = t_3 \rightarrow t_1 = t_3))[/itex]):

...
[itex]t_1 = t_2 \rightarrow (t_2 = t_3 \rightarrow (x=t_1 \rightarrow x=t_3))[/itex]
[itex]x=t_1 \rightarrow \sigma[/itex] (7 + propositional logic)
[itex]\forall x (\neg\sigma \rightarrow x \neq t_1)[/itex]
[itex]\forall x (\neg\sigma \rightarrow x \neq t_1) \rightarrow (\neg\forall x x\neq t_1 \rightarrow \neg \forall x \neg \sigma)[/itex] (axiom 4)
[itex]\neg\forall x x \neq t_1[/itex] (axiom 6)
[itex]\exists x \sigma[/itex] (where [itex]\sigma[/itex] obviously doesn't include [itex]x[/itex])

This is a curious system you've got there, I'll have to think about it some more.

[Edit]: ah, I got it:

[itex]\neg\forall x \neg \sigma[/itex]
[itex]\neg\sigma\rightarrow \forall x \neg\sigma[/itex] (axiom 5)
[itex]\sigma[/itex] (propositional logic)

The same trick works for [itex]\forall x F(x) \rightarrow F(t)[/itex]:
...
[itex]\forall x F(x) \rightarrow F(y)[/itex] (y not in F except when substituted for x)
[itex]y=t \rightarrow (\forall x F(x) \rightarrow F(t))[/itex] (axiom 7 + prop. logic)
and you use the same method, this time setting [itex]\sigma \equiv \forall x F(x) \rightarrow F(t)[/itex].

This also proves symmetry, as you already know that [itex]x=t_2 \rightarrow t_2=x[/itex] and can in effect substitute [itex]t_1[/itex] for x.

edit: out of curiosity, where did you come across this system / who proposed it?
 
Last edited:
  • #5
Preno said:
Ah, you're right.
Well, it is a theorem of classical predicate logic (without identity), and I was assuming that we already know that the system includes classical predicate logic and that identity is the problematic bit. But I see I was mistaken, we do have to use the equality axioms to prove it in this system.

Yes, this system is supposed to do all that classical predicate logic does without using substitution as a rule of inference. I am new to all this, but my understanding is that substitution is hard to arithmetize. In other words, find arithmetic statements which state this formula can be derived from that formula(s). The formulas are referenced by their Godel numbers.

The best I could do is ([itex]\sigma \equiv (t_1 = t_2 \rightarrow (t_2 = t_3 \rightarrow t_1 = t_3))[/itex]):

...
[itex]t_1 = t_2 \rightarrow (t_2 = t_3 \rightarrow (x=t_1 \rightarrow x=t_3))[/itex]
[itex]x=t_1 \rightarrow \sigma[/itex] (7 + propositional logic)
[itex]\forall x (\neg\sigma \rightarrow x \neq t_1)[/itex]
[itex]\forall x (\neg\sigma \rightarrow x \neq t_1) \rightarrow (\neg\forall x x\neq t_1 \rightarrow \neg \forall x \neg \sigma)[/itex] (axiom 4)
[itex]\neg\forall x x \neq t_1[/itex] (axiom 6)
[itex]\exists x \sigma[/itex] (where [itex]\sigma[/itex] obviously doesn't include [itex]x[/itex])

I follow this proof, but doesn't the first line depend on your earlier assumption that
[tex]x=t_1 \rightarrow (x \neq t_2 \rightarrow t_1 \neq t_2)[/tex], which is still in doubt?

This is a curious system you've got there, I'll have to think about it some more.

[Edit]: ah, I got it:

[itex]\neg\forall x \neg \sigma[/itex]
[itex]\neg\sigma\rightarrow \forall x \neg\sigma[/itex] (axiom 5)
[itex]\sigma[/itex] (propositional logic)

Yes.

The same trick works for [itex]\forall x F(x) \rightarrow F(t)[/itex]:
...
[itex]\forall x F(x) \rightarrow F(y)[/itex] (y not in F except when substituted for x)
[itex]y=t \rightarrow (\forall x F(x) \rightarrow F(t))[/itex] (axiom 7 + prop. logic)...

I'm not sure about this part. I have only been able to show that

[tex]x=y \rightarrow (F(x) \rightarrow F(y))[/tex]

When I try to show this with a term t instead of a variable y, I run into trouble when the formula involves negations.

edit: out of curiosity, where did you come across this system / who proposed it?

It is an improvement by Richard Montague and Donald Kalish on an idea of Alfred Tarski's. I came across it in Raymond Smullyan's book, https://www.amazon.com/dp/0195046722/?tag=pfamazon01-20

Here is the abstract of the paper:

http://www.springerlink.com/content/t51u21nk217u581l/

Too bad I don't have free institutional access to the full paper. It's like $34 to buy a copy of it :rolleyes:
 
Last edited by a moderator:
  • #6
It seems that

[tex]x=t_1 \rightarrow (t_1 = t_2 \rightarrow x = t_2) [/tex]

is the crucial formula that needs to be proved. Everything else falls in place after that, and we get the same results as classical predicate logic. I can show that it follows from

[tex]y=t_1 \rightarrow(x=y \rightarrow (t_1 = t_2 \rightarrow x = t_2)) [/tex].

Of course, I can't prove this formula (call it [tex]\psi[/tex]) either, but I can show

[tex]y=t_2 \rightarrow \psi[/tex].

So if it could be shown that [tex]y \neq t_2 \rightarrow \psi[/tex] also holds, that would provide a proof by contradiction. Just trying to lay out some possible lines of attack. This really has me stumped.
 
  • #7
techmologist said:
It seems that

[tex]x=t_1 \rightarrow (t_1 = t_2 \rightarrow x = t_2) [/tex]

is the crucial formula that needs to be proved. Everything else falls in place after that, and we get the same results as classical predicate logic.

I spoke to soon here. What I really need is another identity formula like axiom scheme 7), but with negations, i.e.

[tex]x=t \rightarrow (\neg Y_1 \rightarrow \neg Y_2)[/tex] where Y2 is obtained from atomic formula Y1 by replacing one occurrence of x with t. Whether this can be proved or has to be taken as another axiom, I don't know. But using this formula and 7), I can show

[tex]x=t \rightarrow (Y(x) \rightarrow Y(t))[/tex] and
[tex]x=t \rightarrow (Y(t) \rightarrow Y(x))[/tex]

for any atomic formula Y(x) by induction on the number of times the variable x occurs in Y(x). Using this result as a base case, I can further show that

[tex]x=t \rightarrow (F(x) \rightarrow F(t))[/tex] (*) and
[tex]x=t \rightarrow (F(t) \rightarrow F(x))[/tex] (**)

for any formula F(x) (where x occurs only as a free variable) by induction on the degree of F(x). The degree of a formula is the number of occurrences of the symbols [tex]\neg[/tex], [tex]\forall[/tex], and [tex]\rightarrow[/tex] in the formula (in unabbreviated form). An atomic formula obviously has degree zero. A formula F(x) of degree n has one of the following three forms:

i) [tex]\neg G[/tex] where G is of degree n-1
ii) [tex]\forall y G[/tex] where G is of degree n-1
iii) [tex]G \rightarrow H[/tex] where the degrees of G and H add to n-1

For cases i) and ii), the induction step is very easy. Case iii) goes like this:

[tex]x=t \rightarrow (H(x) \rightarrow H(t))[/tex]
[tex]x=t \rightarrow (G(t) \rightarrow G(x))[/tex] by hypothesis since both G and H are of degree less than n.

From the first we get:
[tex]x=t \rightarrow ((G(t) \rightarrow H(x)) \rightarrow (G(t) \rightarrow H(t)))[/tex]
[tex](x=t \rightarrow (G(t) \rightarrow H(x))) \rightarrow (x=t \rightarrow (G(t) \rightarrow H(t)))[/tex]

from the second:
[tex]x=t \rightarrow ((G(x) \rightarrow H(x)) \rightarrow (G(t) \rightarrow H(x)))[/tex]
[tex](G(x) \rightarrow H(x)) \rightarrow (x=t \rightarrow (G(t) \rightarrow H(x)))[/tex]

and finally

[tex](G(x) \rightarrow H(x)) \rightarrow (x=t \rightarrow (G(t) \rightarrow H(t)))[/tex]
[tex]x=t \rightarrow ((G(x) \rightarrow H(x)) \rightarrow (G(t) \rightarrow H(t)))[/tex]

as hoped for. Of course, [tex]x=t \rightarrow ((G(t) \rightarrow H(t)) \rightarrow (G(x) \rightarrow H(x)))[/tex] is proved the same way with x and t switched throughout.
 
  • #8
With that out of the way, one can prove some useful theorems.

T1) [tex]\exists x F \rightarrow F[/tex] provided x does not occur in F

proof:
[tex]\neg F \rightarrow \forall x \neg F[/tex] axiom 5)
[tex]\neg \forall x \neg F \rightarrow F[/tex]

T2) [tex]\forall x F \rightarrow \exists xF[/tex] provided x does not occur in F
(and therefore [tex]\forall x F \rightarrow F[/tex] under those conditions)

proof:
[tex]\neg F \rightarrow (F \rightarrow x \neq t)[/tex] prop. calc.
[tex]\forall x(\neg F) \rightarrow (\forall x F \rightarrow \forall x (x \neq t))[/tex] Generalization and axiom 4)
[tex]\forall x F \rightarrow (\forall x(\neg F) \rightarrow \forall x (x \neq t))[/tex]
[tex]\forall x F \rightarrow (\exists x(x = t) \rightarrow \exists x F)[/tex]
[tex]\exists x(x = t) \rightarrow (\forall x F \rightarrow \exists x F)[/tex]

T3) [tex]\forall x F(x) \rightarrow F(t)[/tex]

proof:
from (*) above,
[tex]x=t \rightarrow (F(x) \rightarrow F(t))[/tex]
[tex]F(x) \rightarrow (x=t \rightarrow F(t))[/tex]
[tex]F(x) \rightarrow (\neg F(t) \rightarrow x \neq t)[/tex]
[tex]\forall xF(x) \rightarrow (\forall x \neg F(t) \rightarrow \forall x(x \neq t))[/tex]
[tex]\forall xF(x) \rightarrow (\exists x (x=t) \rightarrow \exists xF(t))[/tex]
[tex]\exists x(x=t) \rightarrow (\forall x F(x) \rightarrow \exists xF(t))[/tex]
[tex]\forall x F(x) \rightarrow \exists xF(t)[/tex], and then use T1) to get T3)

T4) [tex]F(t) \rightarrow \exists x F(x)[/tex]
T5) [tex]\forall x F(x) \rightarrow \exists x F(x)[/tex]

T6) [tex]\forall x F(x) \rightarrow \forall y F(y)[/tex]

proof:
as a special case of T3)
[tex]\forall x F(x) \rightarrow F(y)[/tex]
[tex]\forall y \forall x F(x) \rightarrow \forall yF(y)[/tex] generalization and axiom 4)
[tex]\forall x F(x) \rightarrow \forall y F(y)[/tex] axiom 5)

Similarly, [tex]\exists x F(x) \rightarrow \exists y F(y)[/tex]

This result allows the relaxation of the earlier requirement that x not occur bound in formulas in which it is also free. Now if it occurs bound also, the formula is equivalent to one in which it doesn't. I normally avoid formulas in which the same variable occurs bound and free, but their possibility has to be allowed for.

T7) [tex] F(t) \rightarrow \forall x(x=t \rightarrow F(x))[/tex]

proof:
from (**)
[tex]x=t \rightarrow (F(t) \rightarrow F(x))[/tex]
[tex]F(t) \rightarrow (x=t \rightarrow F(x))[/tex]
[tex]\forall x F(t) \rightarrow \forall x(x=t \rightarrow F(x))[/tex] , and T7) comes from applying axiom 5)

T8) [tex]\forall x(x=t \rightarrow F(x)) \rightarrow F(t)[/tex]

proof:
[tex]x=t \rightarrow (F(x) \rightarrow F(t))[/tex]
[tex](x=t \rightarrow F(x)) \rightarrow (x=t \rightarrow F(t))[/tex]
[tex](x=t \rightarrow F(x)) \rightarrow (\neg F(t) \rightarrow x \neq t)[/tex]
[tex]\neg F(t) \rightarrow ((x=t \rightarrow F(x)) \rightarrow x \neq t)[/tex]
[tex]\neg F(t) \rightarrow (\forall x(x=t \rightarrow F(x)) \rightarrow \forall x (x \neq t))[/tex]
[tex]\forall x(x=t \rightarrow F(x)) \rightarrow (\neg F(t) \rightarrow \forall x (x \neq t))[/tex]
[tex]\forall x(x=t \rightarrow F(x)) \rightarrow (\exists x(x=t) \rightarrow F(t))[/tex]
[tex]\exists x(x=t) \rightarrow (\forall x(x=t \rightarrow F(x)) \rightarrow F(t))[/tex]

Taken together, T7) and T8) allow you to obtain a formula equivalent to the result of substituting t for all free occurrences of x in F(x), without appealing to substitution as a rule of inference.
 
Last edited:

Related to Substitutionless first-order logic w/ identity

What is substitutionless first-order logic with identity?

Substitutionless first-order logic with identity is a formal system of logic that extends first-order logic by adding identity as a primitive notion, without allowing for substitution of terms for other terms in logical expressions. This means that the variables in the expressions cannot be replaced by other terms, which allows for a more precise representation of mathematical and logical concepts.

What is the purpose of using substitutionless first-order logic with identity?

The purpose of using substitutionless first-order logic with identity is to avoid certain paradoxes and inconsistencies that can arise when substitution is allowed. It also allows for a more precise and rigorous treatment of mathematical and logical concepts, especially those involving identity.

What are the advantages of substitutionless first-order logic with identity?

Some advantages of substitutionless first-order logic with identity include a more precise and consistent representation of mathematical and logical concepts, as well as the ability to avoid certain paradoxes and inconsistencies that can arise with substitution. It also allows for a more elegant and compact formalization of certain mathematical and logical theories.

What are the limitations of substitutionless first-order logic with identity?

The main limitation of substitutionless first-order logic with identity is that it is a more complex and restrictive formal system compared to traditional first-order logic. This can make it more difficult to work with and may require additional axioms or rules to prove certain logical statements. Additionally, it may not be suitable for all mathematical or logical theories, as some may require the use of substitution in order to be properly formalized.

How does substitutionless first-order logic with identity differ from traditional first-order logic?

The main difference between substitutionless first-order logic with identity and traditional first-order logic is the absence of substitution in the former. This means that the variables in logical expressions cannot be replaced by other terms, which can lead to a more precise and consistent representation of mathematical and logical concepts. Additionally, substitutionless first-order logic with identity includes the concept of identity as a primitive notion, while traditional first-order logic does not.

Similar threads

  • Set Theory, Logic, Probability, Statistics
Replies
6
Views
1K
  • Set Theory, Logic, Probability, Statistics
Replies
27
Views
3K
  • Set Theory, Logic, Probability, Statistics
Replies
4
Views
989
  • Set Theory, Logic, Probability, Statistics
Replies
9
Views
2K
  • Set Theory, Logic, Probability, Statistics
Replies
1
Views
1K
Replies
3
Views
935
  • Set Theory, Logic, Probability, Statistics
Replies
2
Views
1K
  • Set Theory, Logic, Probability, Statistics
Replies
9
Views
2K
  • Classical Physics
Replies
0
Views
489
  • Set Theory, Logic, Probability, Statistics
Replies
2
Views
1K
Back
Top