Okay, I made up an incomplete, very simple, very mini minigrammar for English -- call it Pfenglish. It might seem like overkill, but I think it would help to see that natural languages aren't so spooky and mysterioso. Take it, leave it, delete it, whatever.
____
Phrase Structure Rules
S --> S C S
S --> DP VP
DP --> D NP
NP --> A NP
NP --> N (PP)
PP --> P DP
VP --> V (DP) (PP)
Lexicon
C = {and, implies, because}
D = {the, his, her, its}
A = {blue, slimy, virile, lackadaisical, sweet}
N = {frog, prince, princess, face, pond, castle}
P = {on, in, of}
V = {jumped, kicked, kissed, put}
____
Call the sets in the lexicon lexical categories. You generate phrase structures by starting with a phrase structure rule that has S on the LHS (of the arrow '-->') and applying other rules until your structure consists of only lexical categories. You apply the rules by simply replacing the LHS with the RHS. Letters in parentheses are optional. Here's an abbreviated derivation with the applied rule noted on the right:
(0) S
(1) DP VP [S --> DP VP]
(2) DP V DP PP [VP --> V (DP) (PP)]
(3) DP V DP P DP [PP --> P DP]
(4) D NP V D NP P D NP [DP --> D NP]
(5) D A NP V D A NP P D A NP [NP --> A NP]
(6) D A N PP V D A N P D A N [NP --> N (PP)]
(7) D A N P DP V D A N P D A N [PP --> P DP]
(8) D A N P D NP V D A N P D A N [PP --> D NP]
(9) D A N P D N V D A N P D A N [NP --> N (PP)]
Now we can select and insert members from the appropriate lexical categories, replacing a D with a member of the lexical category D, etc.
(10) The slimy prince of the castle kissed the blue frog in the slimy pond.
If a member of C appears in a sentence S, call S compound; otherwise, call S simple. Let m be a map from the set of simple sentences to {0, 1}. Extend m to include compound sentences like so:
m(S
1 implies S
2) = {0 iff m(S
1) = 1 and m(S
2) = 0; 1 otherwise}
m(S
1 and S
2) = {1 iff m(S
1) = 1 and m(S
2) = 1; 0 otherwise}
m(S
1 because S
2) = {1 iff m(S
1) = 1 and m(S
2) = 1 and m(S
1b2) = 1; 0 otherwise}
where S
1b2 is the simple sentence derived from S
1 and S
2 that says basically
S2 caused S1, with the appropriate changes.
Caused would be a member of V, but I didn't include it for the sake of simplicity because it needs more complex structures. Classical logic doesn't even use connectives like
because for this very reason -- they are not truth-functional. (A connective C is truth-functional iff m(S
x C S
y) depends only on m(S
x) and m(S
y).) I included
because just for this comparison. Pfenglish can't use
because either since it doesn't have the rules and verb for deriving S
xby.
Anywho, now if anyone wants to, we can talk a little more clearly about the meaning of sentences in both logic and Pfenglish. I included some real and apparent lexical and structural ambiguities in (10).
One could argue that the 'meaning' of Pfenglish connectives is simply what they contribute to the m-values of the sentences in which they appear. That is, knowing what
and means is simply knowing that
m(S
1 and S
2) = {1 iff m(S
1) = 1 and m(S
2) = 1; 0 otherwise}
i.e., knowing the conditions under which
S1 and S2 is true under a given interpretation, if we interpret 1 to mean 'true'.
To assign meaning to simple S, you can make a world, say, Pfearth. Let Pfearth contain a set of entities.
E = {frog, prince, princess, pond, castle}
and so on. You can just build whatever you need in order to interpret any S in Pfenglish.
You'll probably notice that the current rules allow you to generate sentences such as
(11) The frog put the sweet princess.
(12) The castle jumped the frog in the prince.
To rule these out, you just have to add more rules:
____
Argument structures & selectional restrictions
jumped - 1: agent(animate)
kicked - 2: agent(animate), patient
kissed - 2: agent(animate), patient
put - 3: agent(animate), patient, locative
...
____
Maybe you don't care this much. I just don't see any reason to keep pussyfooting around about natural language, so I'm offering up Pfenglish.