TLDR; do you know of any general purpose languages that can also compile a function to some representation of AND/OR gates (or NAND gates, or whatever)?

Edit: actually any algebra/formal-logical system is also fine (not just boolean algebra).

Yes, a A LOT of additional info is needed, like defining how input/output is defined, and I am interested in how those would be specified. I’m not interested in printing an actual circuit, just the boolean-logic level. And I’m mostly asking because I feel like most compilers can’t generate a clean/mathematical representation from their AST. There’s AST to IR, there’s hard-coded optimizations on the IR, and then there’s hard-coded mappings from the IR to assembly, but at no point (AFAIK) is the code turned into a algebraic/logical system where something like De Morgan’s Law can be applied. And that seems really sad to me.

So you could say my real question is: what compilers have a strong logical/algebraic internal representation of their own AST?

Maybe something like Haskell or Prolog do this. The Wolfram Language almost certainly does but it’s closed source.

  • Tubbles@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    I can highly recommend you have a look at some HDL languages, eg Verilog can look roughly like your example and synthesizes down to logic elements

    • jeffhykin@lemm.eeOP
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      Cool I’ll give them I shot! I’ll admit I haven’t heard great things about typical HDL langs, so I haven’t looked into them much