$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] [Concepts] Definition. Was [GSoC] [Boost.Hana] Formal review request
From: Roland Bock (rbock_at_[hidden])
Date: 2014-08-05 12:38:02
On 2014-08-05 15:17, Mostafa wrote:
> On Tue, 05 Aug 2014 04:58:35 -0700, Roland Bock <rbock_at_[hidden]> wrote:
>
>> On 2014-08-05 12:13, Mostafa wrote:
>>> On Tue, 05 Aug 2014 00:07:42 -0700, Roland Bock <rbock_at_[hidden]>
>>> wrote:
>>>
>>>> On 2014-08-05 02:08, Mostafa wrote:
>>>>> On Mon, 04 Aug 2014 08:39:36 -0700, Roland Bock <rbock_at_[hidden]>
>>>>> wrote:
>>>
>>> [snip]
>>>
>>>>> Additionally, if concepts were sets of type requirements than the
>>>>> phrase "T is DefaultConstructible" reads awkwardly, it almost sounds
>>>>> as if T were a type requirement itself, when we actually mean to say
>>>>> that T satisfies the requirements of default constructibility. And
>>>>> the
>>>>> language "x satisfies abc" usually connotates set membership.
>>>> Sure, that type is a member of T(DefaultConstructible).
>>>>
>>>> I don't get your argument at all. If you say "this car is green", you
>>>> say both "this car is a member of the set of green things" and
>>>> "this car
>>>> meets the requirements of being green". It does neither imply that
>>>> "green is the set of green things" (endless recursion) nor does it say
>>>> that "green is a set of being-green-requirements" (also endless
>>>> recursion). Still, everyone knows what is meant without feeling
>>>> awkward
>>>> about it.
>>>
>>> Unfortunately English can be ambiguous, so let's be more precise. When
>>> one says "this car is green" one actually means "this car is a green
>>> thing" (green is being used as a noun, not as an adjective like "green
>>> balloon"). That means "this car is a member of GreenThings". If
>>> GreenThings were a set of requirements then that means "this car" is
>>> also a requirement, which obviously it's not.
>>
>> You're only ever seeing your view :-)
>> Another option is: When one says "this car is green", one actually means
>> "this car emits light with a wavelength around 510nm". So the concept
>> "green" is not a set of green things, it is a set of requirements (in
>> this case with one element, namely "emits light with a wavelength around
>> 510nm").
>
> No, I see your pov, I just claim you're view is logically flawed. I
> find this topic interesting, so if I may, I shall try to prove the flaw.
I find it interesting, too, so OK, here goes again.
>
> 1) I claim that when one says "this car is green" one means "this car
> is a green thing", that's because by the rules of English syntax
> "green" in the original sentence has to be a noun
I am not a native english speaker, but I am pretty sure that "green" is
an adjective, which is not a noun. It is something that describes a noun.
> , and because "green" is neither a person nor a place, it must be a
> thing.
> 2) So the question becomes what is a "green thing"? I claim that a
> "green thing" is any thing that satisfies being "green".
> 3) Let's assume for the sake of argument that "green" is a set of
> requirements. What is a requirement? It's a logical predicate, which
> is itself a boolean-valued function. So the "green" concept can be
> defined as follows:
> green := { p = { (x, p(x)) | p(x) = "does x emit light at ...} }
>
> 4) How does a thing satisfy being "green"? Since "green" is a set, the
> thing in question satisfies being "green" by being a member of that set.
Well, I say there's your flaw. You claim that "a is b" automatically
means "a is a member of b" if b is a set. I am pretty sure that's not
backed by anything, not even math.
I'll try to illustrate with a more common example.
"x is rational" means two things
a) "x is a member of the set of rational numbers, called R"
b) "x meets the requirement that there are natural numbers a and b!=0
such that x = a/b"
Note that rational != R. rational is a predicate expressing a) and b).
Translating it to "this car is green": green is neither the set of green
things nor the set of requirements. It is a predicate that can express
set membership and/or met requirements.
Now, when we say "T is DefaultConstructible" and DefaultConstructible is
a concept, neither your nor my view of concept fits directly since
neither one is a predicate. I therefore think that it is question of
convention whether this means
a) T is one of the types of DefaultConstructible
b) T meets the requirements of DefaultConstructible
And if it is just a question of convention, you know my preference. And
see Robert's post and my reply to it, too.
Regards,
Roland