Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Free of English errors. Not semantic errors. We don't even know it's a "liar".


Precisely, but as far as a compiler/interpreter is concerned syntax is semantics.

You can't codify moral judgments.


Not sure if you are trolling, but here we go...

In the case at hand, correctness of the validator expression V clearly means "V determines well-formedness of any regular expressions" which is clearly not implied by "V is well-formed" (a much weaker statement because ".*" is well-formed but matches everything). Therefore, when applying V to itself, we only learn if a weak requirement for V's correctness holds.

Similar, perhaps, to validating whether a given number is a Gödel number of a well-formed logical statement rather than assessing the verity of the logical statement it encodes.

Also, I am not saying whether it is or is not possible to build such a regular expression. Rather, the question just doesn't tick the boxes of either, the Liar's Paradox, nor Gödel's Incompleteness result -- contrary to what was suggested. So you could still be right but for different reasons.


You are axiomatically assuming that the proposition "V determines well-formedness of any regular expressions" to be true.

I am asking you to prove that. Constructively.


It's not possible to do this for regular expressions, but it is possible to do it for context free grammars. You can write a context-free grammar in Backus-Naur form that recognizes all context-free grammars in Backus-Naur form:

   <syntax>         ::= <rule> | <rule> <syntax>
   <rule>           ::= <opt-whitespace> "<" <rule-name> ">" <opt-whitespace> "::=" <opt-whitespace> <expression> <line-end>
   <opt-whitespace> ::= " " <opt-whitespace> | ""
   <expression>     ::= <list> | <list> <opt-whitespace> "|" <opt-whitespace> <expression>
   <line-end>       ::= <opt-whitespace> <EOL> | <line-end> <line-end>
   <list>           ::= <term> | <term> <opt-whitespace> <list>
   <term>           ::= <literal> | "<" <rule-name> ">"
   <literal>        ::= '"' <text1> '"' | "'" <text2> "'"
   <text1>          ::= "" | <character1> <text1>
   <text2>          ::= '' | <character2> <text2>
   <character>      ::= <letter> | <digit> | <symbol>
   <letter>         ::= "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" | "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z"
   <digit>          ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
   <symbol>         ::=  "|" | " " | "!" | "#" | "$" | "%" | "&" | "(" | ")" | "*" | "+" | "," | "-" | "." | "/" | ":" | ";" | ">" | "=" | "<" | "?" | "@" | "[" | "\" | "]" | "^" | "_" | "`" | "{" | "}" | "~"
   <character1>     ::= <character> | "'"
   <character2>     ::= <character> | '"'
   <rule-name>      ::= <letter> | <rule-name> <rule-char>
   <rule-char>      ::= <letter> | <digit> | "-"
I got this from Wikipedia: https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form#Furth...


Sure. Total functional programming (provably terminating code) comes at the cost of Turing-completeness.

The choice exists.

https://en.wikipedia.org/wiki/Total_functional_programming

Observe though that BNF is just a notation. Parsers for BNF are not implemented in BNF. Bison. Yacc.


:-)


So we agree then that when the system says "I am free of errors", some (most?) of the time it's a lie ? ;)

All models are wrong - some are useful.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: