Tuesday, June 25, 2013

Proposal: Bracketeering

Times Out and Passes 4-0-1. -RaichuKFM

Adminned at 27 Jun 2013 10:44:11 UTC

In the list of Axioms, replace

For all a and b, if b is a list, then a:b is a non-empty list.

with

For all a and b, if b is a list, then {a}:b is a non-empty list.

Replace

For all a, if a is a non-empty list, then there exist b and c such that a = b:c and c is a list.

with

For all a, if a is a non-empty list, then there exist b and c such that a = {b}:c and c is a list.

Replace

For all a, b, c, and d, if b and d are lists, then [a:b = c:d if and only if [a = c and b = d]].

with

For all a, b, c, and d, if b and d are lists, then [{a}:b = {c}:d if and only if [a = c and b = d]].

Replace

For all a and b, if b is a list, then [the head of a:b is a, and the tail of a:b is b].

with

For all a and b, if b is a list, then [the head of {a}:b is a, and the tail of {a}:b is b].

Replace

For all a, b and c, if c is a list, then [a is an element of b:c if and only if [a = b or a is an element of c]]

with

For all a, b and c, if c is a list, then [a is an element of {b}:c if and only if [a = b or a is an element of c]]

And replace

For all a, b and c, if b and c are lists, then (a:b) ++ c = a:(b ++ c).

with

For all a, b and c, if b and c are lists, then ({a}:b) ++ c = {a}:(b ++ c).

Travos and I were having this discussion on his Challenge Post. I think the list containing a_1:a_2, and the list containing a_1 *and* a_2 are both legally written a_1:a_2:{} despite not being the same list. This would force us to write them as {a_1:a_2}:{} and {a_1}:{a_2}:{}, making them clearly different lists.

Comments

nqeron:

25-06-2013 18:41:12 UTC

for

Tavros:

26-06-2013 01:52:54 UTC

imperial

RaichuKFM: she/her

26-06-2013 18:52:39 UTC

for

Skju:

26-06-2013 20:03:19 UTC

I’m all for disambiguation, but why isn’t : associative?

Clucky: he/him

26-06-2013 21:16:50 UTC

Because ‘a_1:a_2’ can be an element of a list

{a_1:a_2}:a_3 contains a_1:a_2 and a_3
a_1:{a_2:a_3} contains a_1 and a_2:a_3

Tavros:

27-06-2013 00:08:26 UTC

a_3 is not generally an element of (a_1:a_2):a_3, nor is a_2:a_3 generally an element of a_1:(a_2:a_3),

Clucky: he/him

27-06-2013 00:13:56 UTC

well I mean a_1:(a_2:a_3) isn’t even a list. The :{} at the end was implied.

To be formal:

{a_1:a_2}:a_3:{} contains a_1:a_2 and a_3
a_1:{a_2:a_3}:{} contains a_1 and a_2:a_3
a_1:a_2:a_3:{} contains a_1 and a_2 and a_3
{a_1:a_2:a_3}:{} contains a_1:a_2:a_3

under the current rules, they are all technically written as

a_1:a_2:a_3:{}

right?

Tavros:

27-06-2013 01:17:58 UTC

The current version of Axiom 4 entails that if a_2:a_3 is a list, then a_1:(a_2:a_3) is a list,

Currently, curly braces don’t have a defined meaning unless there’s nothing between them; you seem to be using them as a grouping symbol, but I’m not sure. If you are using them as a grouping symbol, then your statements about {a_1:a_2}:a_3:{} and the like are correct,

I would not say that these lists are “all technically written as a_1:a_2:a_3:{}”, because there is nothing allowing all of them to be written that way. Indeed, there is nothing in the rules allowing *any* of them to be written that way; the only way they would be written that way is if there is some convention determining the associativity of the : operator, because in the absence of such a convention, the expression “a_1:a_2:a_3:{}” is ambiguous and therefore disallowed,

Clucky: he/him

27-06-2013 07:26:22 UTC

The currrent version of Axiom 4 entails that if a_2:a_3 is a list, then a_1:a_2:a_3 is a list. I don’t see what rule you are using to let you infer adding the parens.

Tavros:

27-06-2013 14:34:45 UTC

The rule I’m using is the fact that putting parentheses around an expression never changes its value,

quirck: he/him

27-06-2013 16:25:40 UTC

for