I'm curious if you've considered adding some form of compiler-time enforcement to prevent witness malleability? With that, Ivy could help to resolve for it's users one of the things that can make Bitcoin scripts more complicated to write, instead of simply type-checking and providing a high-level language mapped 1-to-1 with Bitcoin script.

On December 18, 2017 8:32:17 PM UTC, Daniel Robinson via bitcoin-dev <bitcoin-dev@lists.linuxfoundation.org> wrote:
Today, we’re releasing Ivy, a prototype higher-level language and development environment for creating custom Bitcoin Script programs. You can see the full announcement here, or check out the docs and source code.

Ivy is a simple smart contract language that can compile to Bitcoin Script. It aims to improve on the useability of Bitcoin Script by adding affordances like named variables and clauses, static (and domain-specific) types, and familiar syntax for function calls.

To try out Ivy, you can use the Ivy Playground for Bitcoin, which allows you to create and test simulated contracts in a sandboxed environment.

This is prototype software intended for educational and research purposes only. Please don't try to use Ivy to control real or testnet Bitcoins.