C*: Unifying Programming and Verification in C

(arxiv.org)

16 points | by rramadass 1 hour ago

5 comments

  • gavinray 17 minutes ago
    I really think that verification aware languages are going to become a necessity

    Wrote a bit about this recently

    https://gavinray97.github.io/blog/design-by-contract-and-eff...

  • Taikonerd 20 minutes ago
    The authors cite this, but just to mention it: this sounds like F*, another proof-oriented language. (https://fstar-lang.org/)

    F* is in the ML family of languages, so it looks pretty different from C*.

  • theokrueger 5 minutes ago
    formal verification is great and all, but you can never make it as ergonomic as functional verification. this matters for agents and real people alike.

    formal verification requires a deeper understanding of underlying mechanisms to write correctly. yet nothing prevents you or your agent from changing invariants to fit the algorithm and making it incorrect.

  • rramadass 58 minutes ago
    The "C*" language website - https://cstarlang.org/en/intro.html

    See in particular, usage benefits with LLMs (last para of https://cstarlang.org/en/intro.html) and how to use it with LLMs (https://cstarlang.org/en/tutorial/cstar-mcp.html).

  • glitchc 40 minutes ago
    Great idea, terrible syntax.
    • ahknight 15 minutes ago
      I say this about C every day.
    • rramadass 28 minutes ago
      What's terrible about the syntax? Using "[[require/ensure/invariant/proof/assert/etc.]]" is actually pretty neat.

      And given that almost all C programmers are also C++ programmers, no mere syntax can faze us :-)

      • binaryturtle 17 minutes ago
        In my own ranking of favourite programming languages C is at the first place. C++ comes in last. I personally hate it when people write C/C++ as if it's the very same thing. I'm quite sure there's more like me out there. :)

        Interestingly Perl comes in second, even I use it rarely (aka not at all) these days. But that's a slightly off-topic side note. :)

        • ahknight 8 minutes ago
          Perl is just C with less type safety.

          And yes, for the most part. C++ as simple shorthand for struct-attached functions and automatic memory management (no, not smart pointers; RAAI) is good. Every single thing added after that is misery and should push a modern developer to Rust, Go, or Zig (roughly in that order) where such things are implemented sanely or not at all.