cprint { S scenario1 = autoUnindent_mls([[ There is a plan The plan works ]]); S scenario2 = autoUnindent_mls([[ There is this idea This idea is a plan This idea works ]]); NLABlock nla1, nla2; S output; visual jvsplit( jhsplit( hgridWithSpacing( jCenteredSection("Scenario 1 (in Natural Language Assembly)", dm_textAreaAsSection scenario1()), jCenteredSection("Scenario 2 (in Natural Language Assembly)", dm_textAreaAsSection scenario2())), dm_textAreaAsSection output()), super); start { dm_onFieldChange scenario1(r calc); dm_onFieldChangeAndNow scenario2(r calc); } void calc { setField(nla1 := nla_simplifyIntroductions(scenario1)); setField(nla2 := nla_simplifyIntroductions(scenario2)); printWithIndent("nla1: ", nla1); printWithIndent("nla2: ", nla2); L> mappings = nla_partialMappings(nla1, nla2); if (empty(mappings)) setField(output := "Scenarios incompatible"); else setField(output := "Scenarios compatible:\n\n" + lines(mappings)); } }