Boost logo

Boost :

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


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk