> RESET-BINDINGS > {sequential(print,print(list-elements(list-nil)))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {print(1)} ->* {null-value<>,standard-out = 1} > {sequential(print(1),print(2))} ->* {null-value<>,standard-out = 1,2} > {sequential(print(1),null-value)} ->* {null-value<>,standard-out = 1} > {sequential(null-value,print(1),null-value)} ->* {null-value<>,standard-out = 1} > RESET-BINDINGS > {sequential(print(1),print(2,3),print(true),print(sequential(print(tuple(null-value)),"OK")))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2,3,true,tuple(null-value),"OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {sequential(print(tuple(interleave)),interleave(print(1)),effect(tuple(interleave(print(2),print(3)))),effect(tuple(interleave(sequential(print(4),print(5)),print(6)))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(tuple,1,2,3,4,5,6)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {sequential(do-while(print(1),false),else(do-while(sequential(print(2),fail),sequential(print("ERROR"),true)),print("OK")))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2,"OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {sequential(print(tuple(left-to-right)),effect(left-to-right(print(1))),effect(tuple(left-to-right(print(2),print(3)))),effect(tuple(left-to-right(print(4),print(5),print(6)))),effect(integer-add(left-to-right(sequential(print(7),7),sequential(print(8),8)))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(tuple,1,2,3,4,5,6,7,8)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {sequential(while(false,sequential(print("ERROR"),fail)),else(while(sequential(print(1),true),sequential(print(2),fail)),print("OK")))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2,"OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {seq(null,3)} ~>* {3} > {seq(null,3)} ->* {3} > {seq(null,integer-add(1,2))} ->* {3} > {seq(effect(integer-add(1,5)),integer-add(1,2))} ->* {3} > {left-to-right(print(1),print(2))} ->* {null-value<>,null-value<>,standard-out = 1,2} > {right-to-left(print(1),print(2))} ->* {null-value<>,null-value<>,standard-out = 2,1} > {effect(left-to-right(print(1),print(2)))} ->* {null-value<>,standard-out = 1,2} > {effect(tuple(left-to-right(print(1),print(2))))} ->* {null-value<>,standard-out = 1,2} > {tuple(print(1),print(2))} ->* {tuple,null-value<>>,standard-out = 1,2} > {list(print(1),print(2))} ->* {list,null-value<>>,standard-out = 1,2} > RESET-BINDINGS > {if-true-else(not(false),if-true-else(not(true),fail,print("OK")),fail)} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {sequential(sequential(print(1),print(2)),print(sequential(print(3),print(4),5)))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2,3,4,5)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {effect(sequential(print(1),2))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {sequential(print(choice(1)),choice(print(2),print(3)),choice(print(4),print(5),print(6)))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,3,6)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-storing(give(allocate-initialised-variable(booleans,false),sequential(assign(given,true),else(assign(given,42),print("OK")))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-storing(give(tuple(allocate-initialised-variable(booleans,false),42,allocate-initialised-variable(booleans,true)),sequential(structural-assign(given,tuple(true,42,false)),else(structural-assign(given,list(true,42,false)),structural-assign(given,tuple(true,99,false)),structural-assign(given,false),print("OK")))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-storing(give(map(tuple("a",allocate-initialised-variable(booleans,false)),tuple("b",42),tuple("c",allocate-initialised-variable(booleans,true))),sequential(structural-assign(map,map),structural-assign(given,map(tuple("a",true),tuple("b",42),tuple("c",false))),structural-assign(true,true),else(structural-assign(given,map(tuple("a",true),tuple("b",99),tuple("c",false))),structural-assign(given,map(tuple("a",true),tuple("c",false))),structural-assign(given,map),structural-assign(given,map(tuple("a",true),tuple("b",42),tuple("c",false),tuple("d"))),structural-assign(true,false),print("OK")))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-storing(give(give(allocate-variable(booleans),sequential(initialise-variable(given,true),given)),else(initialise-variable(given,true),print("OK"))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-storing(not(is-equal(allocate-variable(values),allocate-variable(values))))} ->* {Result} with {true} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-storing(give(allocate-initialised-variable(booleans,true),check-true(structural-assigned(given))))} ->* {Result} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-storing(sequential(effect(allocate-variable(booleans)),store-clear))} ->* {Result,store = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {map} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-storing(print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-storing(sequential(check-true(is-equal(current-value(allocate-initialised-variable(integers,42)),42)),check-true(is-equal(current-value(42),42))))} ->* {Result} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-storing(give(allocate-variable(booleans),recycle-variables(given)))} ->* {Result,store = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {map} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-storing(give(allocate-initialised-variable(booleans,true),check-true(assigned(given))))} ->* {Result} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-storing(give(fresh-atom,and(is-in-type(map,stores),is-in-type(map(tuple(given,true)),stores),is-in-type(map(tuple(given,true),tuple(fresh-atom)),stores))))} ->* {Result} with {true} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-storing(is-in-type(fresh-atom,locations))} ->* {Result} with {true} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {store-clear} ->* {null-value<>,store = Q} > {initialise-storing(2)} ->* {2} > RESET-BINDINGS > {_map-empty} ->* {Sigma} > {use-atom-not-in(dom(Sigma))} ~>* {GenAtom} > {Sigma} ~>* {_Y2} > {GenAtom,store = _Y2} -> {L,store = Sigma'} > {map-override(map-singleton(L,null),Sigma')} ~>* {Sigma''} > {Sigma''} ~>* {_Y3} > {variable(L,values)} ~>* {variable<_,_>} > RESET-BINDINGS > {allocate-variable(values),store = _map-empty} -> {Q1,store = Sto1} > {allocate-variable(values),store = _map-empty} ->* {Q2,store = Sto2} > {initialise-storing(allocate-variable(values))} ->* {Q3,store = Sto3} > {assign(Q3,1),store = Sto3} ->* {null-value<>,store = Sto3'} > {initialise-variable(Q3,2),store = Sto3} ->* {null-value<>,store = Sto3''} > {sequential(initialise-variable(Q3,3),Q3),store = Sto3} ->* {Q3,store = Sto3'''} > {assigned(Q3),store = Sto3'''} ->* {3,store = Sto3'''} > {_map} ~>* {MapEmpty} > {lookup(MapEmpty,Q3)} ~>* {#} > {store-clear,store = Sto3'''} ->* {null-value<>,store = MapEmpty} > {assigned(Q3),store = MapEmpty} -> {Q,store = MapEmpty} > RESET-BINDINGS > {initialise-storing(allocate-variable(values))} ->* {Var2,store = Sto2} > {initialise-storing(allocate-initialised-variable(values,1))} ->* {Var,store = Sto1} > RESET-BINDINGS > {initialise-storing(current-value(42))} ->* {42} > {initialise-storing(some-element(current-value(set(42))))} ->* {42} > {initialise-storing(give(3,given))} ->* {3} > RESET-BINDINGS > {initialise-storing(give(map(tuple("a",allocate-initialised-variable(booleans,true)),tuple("b",42),tuple("c",allocate-initialised-variable(booleans,false))),sequential(check-true(is-equal(structural-assigned(map),map)),check-true(is-equal(structural-assigned(given),map(tuple("a",true),tuple("b",42),tuple("c",false)))),check-true(is-equal(structural-assigned(set(42)),set(42))))))} ->* {Result} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-storing(give(allocate-initialised-variable(booleans,true),sequential(check-true(assigned(given)),un-assign(given),else(assigned(given),print("OK")))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-storing(give(allocate-initialised-variable(booleans,true),sequential(check-true(assigned(given)),store-clear,else(assigned(given),print("OK")))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-storing(give(allocate-initialised-variable(booleans,false),sequential(structural-assign(given,true),else(structural-assign(given,42),print("OK")))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-storing(give(map(tuple("a",allocate-initialised-variable(booleans,false)),tuple("b",42),tuple("c",allocate-initialised-variable(booleans,true)),tuple("d",13)),sequential(check-true(is-equal(structural-assigned(map),map)),check-true(is-equal(structural-assigned(given),map(tuple("a",false),tuple("b",42),tuple("c",true),tuple("d",13)))),check-true(is-equal(structural-assigned(set(42)),set(42))))))} ->* {Result} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-storing(give(tuple(allocate-initialised-variable(booleans,false),42,allocate-initialised-variable(booleans,true)),check-true(is-equal(structural-assigned(given),tuple(false,42,true)))))} ->* {Result} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-linking(give(fresh-link(booleans),sequential(set-link(given,true),print("OK"),else(set-link(given,false),print("OK")))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK","OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-linking(print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-linking(not(is-equal(fresh-initialised-link(integers,42),fresh-initialised-link(integers,42))))} ->* {Result} with {true} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {fresh-link(values)} ~> {link(_)} > {initialise-linking(link(182))} ->* {link<182>} > {initialise-linking(42)} ->* {42} > {initialise-linking(fresh-link(values))} ->* {Q} > {initialise-linking(fresh-initialised-link(values,2))} ->* {Q} > {initialise-storing(allocate-variable(values))} ->* {VAR} > {links,link(VAR)} =ty=>* {true<>} > {links,42} =ty=>* {false<>} > {tyunion(links,null-type),42} =ty=>* {false<>} > {follow-if-link(42)} ->* {42} > {initialise-linking(follow-if-link(fresh-initialised-link(values,42)))} ->* {42} > RESET-BINDINGS > {initialise-linking(not(is-equal(fresh-link(values),fresh-link(values))))} ->* {Result} with {true} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-linking(give(fresh-link(booleans),sequential(set-link(given,true),print("OK"),if-true-else(follow-link(given),print("OK"),fail))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK","OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-linking(is-in-type(link(allocate-variable(values)),links))} ->* {Result} with {true} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-linking(give(fresh-link(booleans),sequential(set-link(given,true),if-true-else(follow-if-link(given),if-true-else(is-equal(follow-if-link(42),42),print("OK"),fail),fail))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(sequential(print(list(interleave-filter(true))),tuple(interleave-filter(sequential(print(given),is-less(given,3)),1,2,3))))} ->* {Result,standard-out = Q1} with {tuple(1,2)} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(list,1,2,3)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(give(1,no-given(else(print(given),print("OK")))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(sequential(print(list(left-to-right-repeat(fail,2,1))),tuple(left-to-right-repeat(sequential(print(integer-add(given,2)),given),sequential(print(1),1),sequential(print(2),3)))))} ->* {Result,standard-out = Q1} with {tuple(1,2,3)} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(list,1,2,3,4,5)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(give(sequential(print(1),2),sequential(print(given),give(3,print(given)),print(integer-add(given,2)))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2,3,4)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(sequential(print(list(fold-left(fail,1))),fold-left(sequential(print(given),given),1,2,3)))} ->* {Result,standard-out = Q1} with {tuple(tuple(1,2),3)} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(list(1),tuple(1,2),tuple(tuple(1,2),3))} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > {no-given(3)} ->* {3} > {no-given(give(2,given))} ->* {2} > {no-given(if-true-else(true,true,false))} ~>* {true<>} > {interleave-map(integer-add(1,given))} ->* {#} > {interleave-map(integer-add(1,given),1)} ->* {2} > {interleave-map(integer-add(1,given),1,2)} ->* {2,3} > {interleave-map(integer-add(1,given),1,2,3)} ->* {2,3,4} > {list(interleave-map(fail))} ->* {list<>} > {interleave-map(print(given),1,2)} ->* {null-value<>,null-value<>,standard-out = 1,2} > {interleave-map(print(given),sequential(print(1),1),2)} ->* {null-value<>,null-value<>,standard-out = 1,1,2} > {interleave-map(print(given),tuple-elements(tuple))} ->* {#,standard-out = #} > RESET-BINDINGS > {initialise-giving(sequential(print(list(interleave-map(fail))),tuple(interleave-map(sequential(print(integer-add(given,2)),given),sequential(print(1),1),sequential(print(2),2)))))} ->* {Result,standard-out = Q1} with {tuple(1,2)} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(list,1,2,3,4)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(sequential(print(list(left-to-right-filter(true))),tuple(left-to-right-filter(sequential(print(given),is-less(given,42)),42,1,43,44,2,3,45))))} ->* {Result,standard-out = Q1} with {tuple(1,2,3)} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(list,42,1,43,44,2,3,45)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(sequential(print(list(interleave-repeat(fail,2,1))),tuple(interleave-repeat(sequential(print(integer-add(given,2)),given),sequential(print(1),1),sequential(print(2),3)))))} ->* {Result,standard-out = Q1} with {tuple(1,2,3)} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(list,1,2,3,4,5)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(sequential(print(list(fold-right(fail,1))),fold-right(sequential(print(given),given),1,2,3)))} ->* {Result,standard-out = Q1} with {tuple(3,tuple(2,1))} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(list(1),tuple(2,1),tuple(3,tuple(2,1)))} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-generating(give(fresh-atom,check-true(not(is-equal(given,fresh-atom)))))} ->* {Result} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-generating(give(fresh-atom,print(is-equal(use-atom-not-in(set(given)),use-atom-not-in(set(given))))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(true)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-generating(fresh-atom)} ->* {Q} > {no-given(initialise-generating(fresh-atom))} ->* {Q2} > RESET-BINDINGS > {and(is-in-type(map,environments),is-in-type(map(tuple("x",true)),environments),is-in-type(map(tuple("x",true),tuple("y",false)),environments))} ->* {Result} with {true} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-binding(print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-generating(not(is-equal(fresh-identifier,fresh-identifier)))} ->* {Result} with {true} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-binding(scope(map(tuple("x",true),tuple("y",fresh-link(booleans))),and(bound-directly("x"),is-in-type(bound-directly("y"),links),else(bound-directly("z"),true))))} ->* {Result} with {true} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {and(is-in-type("x",identifiers),is-in-type(identifier-tagged("x",false),identifiers),is-in-type(identifier-tagged(identifier-tagged("x",true),false),identifiers),is-in-type(identifier-tagged("x",identifier-tagged("x",true)),identifiers))} ->* {Result} with {true} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-binding(scope(bind-recursively("x",thunk(closure(is-value(bound-value("x"))))),force(bound-value("x"))))} ->* {Result} with {true} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-binding(tuple(accumulate,accumulate(bind-value("x",true)),accumulate(bind-value("x",true),bind-value("y",bound-directly("x"))),accumulate(bind-value("x",true),bind-value("y",bound-directly("x")),bind-value("z",bound-directly("x"))),accumulate(bind-value("x",true),bind-value("y",true),bind-value("x",bound-directly("x")))))} ->* {Result} with {tuple(map,map(tuple("x",true)),map(tuple("x",true),tuple("y",true)),map(tuple("x",true),tuple("y",true),tuple("z",true)),map(tuple("y",true),tuple("x",true)))} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {bind-value("x",true)} ~>* {MAP} > {map-elements(MAP)} ~>* {POINTS} > {lists[tuples[values]],list,tuple<3>,tuple<3>>} =ty=>* {true<>} > {tystar(tuples[identifiers[],values]),POINTS} =ty=>* {Q1} > {environments} ~>* {ENVS} > {map-elements(bind-value("x",true))} ~>* {BINDINGS} > {map-elements(map(tuple(1,true),tuple(2,false)))} ~>* {BINDINGS2} with seq-variable(BINDINGS2,0,#,LONGEST) > {tuples(identifiers,tyopt(values)),BINDINGS} =ty=>* {true<>} > {tystar(tuples(integers,tyopt(values))),BINDINGS2} =ty=>* {true<>} > {maps(identifiers,tyopt(values)),map(tuple("x",true))} =ty=>* {true<>} > {maps(identifiers,tyopt(values)),map(tuple("x"))} =ty=>* {true<>} > {environments,bind-value("x",true)} =ty=>* {Q2} > {scope(bind-value("x",true),true)} ->* {true<>} > {initialise-binding(scope(bind-value("x",true),bound-directly("x")))} ->* {true<>} > {initialise-binding(scope(bind-value("x",true),not(bound-directly("x"))))} ->* {false<>} > {initialise-binding(scope(bind-value("x",true),bound-value("x")))} ->* {true<>} > {initialise-binding(scope(bind-value("x",true),not(bound-value("x"))))} ->* {false<>} > {initialise-giving(initialise-binding(closed(give(2,given))))} ->* {2} > RESET-BINDINGS > {initialise-binding(and(scope(bind-value("x",false),scope(bind-value("x",true),bound-directly("x"))),scope(bind-value("x",false),true)))} ->* {Result} with {true} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-binding(tuple(collateral,collateral(bind-value("x",true)),collateral(bind-value("x",true),bind-value("y",false)),collateral(bind-value("x",true),bind-value("y",false),unbind("z")),scope(bind-value("x",true),collateral(bind-value("x",false),bind-value("y",true),bind-value("z",bound-directly("x"))))))} ->* {Result} with {tuple(map,map(tuple("x",true)),map(tuple("x",true),tuple("y",false)),map(tuple("x",true),tuple("y",false),tuple("z")),map(tuple("x",false),tuple("y",true),tuple("z",true)))} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-binding(scope(map(tuple("x",1)),closed(else(bound-directly("x"),true))))} ->* {Result} with {true} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {unbind("x")} ->* {Result} with {map(tuple("x"))} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-binding(scope(map(tuple("x",true),tuple("y",fresh-initialised-link(booleans,true))),and(bound-value("x"),bound-value("y"),else(bound-value("z"),true))))} ->* {Result} with {true} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {bind-value("x",1)} ->* {Result} with {map(tuple("x",1))} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-binding(scope(recursive(set("x"),bind-value("x",thunk(closure(if-true-else(not(is-equal(null-value,bound-value("x"))),true,false))))),force(bound-value("x"))))} ->* {Result} with {true} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > {true,if-true-else(true,give(true,given),false)} ->* {true<>,true<>} > {if-true-else(true,give(true,given),false),true} ->* {true<>,true<>} > {true,if-true-else(true,give(true,given),false),true} ->* {true<>,true<>,true<>} > {give(1,sequential(print(given),give(2,print(given)),print(integer-add(2,given))))} ->* {null-value<>,standard-out = 1,2,3} > {initialise-binding(sequential(scope(bind("x",false),print("OK")),else(bound-directly("x"),true)))} ->* {true<>,standard-out = "OK"} > RESET-BINDINGS > {finalise-abrupting(sequential(print(handle-abrupt(1,fail)),handle-abrupt(print(2),fail),handle-abrupt(sequential(print(3),abrupt(sequential(print(4),5))),print(given))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2,3,4,5)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {finally(2,print(1))} ->* {2,standard-out = 1} > {finally(print(2),print(1))} ->* {null-value<>,standard-out = 2,1,abrupted = #} > {finally(abrupt(3),print(1))} ->* {stuck(),standard-out = 1,abrupted = 3} > {finally(abrupt(2),print(1))} ->* {stuck(),standard-out = 1,abrupted = 2} > {finally(throw(2),print(1))} ->* {stuck(),standard-out = 1,abrupted = thrown<2>} > RESET-BINDINGS > {finalise-abrupting(sequential(print(finally(2,print(1))),finally(print(3),print(4)),else(finally(fail,print(5)),print(6))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2,3,4,5,6)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {finalise-returning(sequential(print(handle-return(1)),handle-return(print(2)),print(handle-return(sequential(print(3),return(sequential(print(4),5)))))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2,3,4,5)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-binding(finalise-throwing(sequential(handle-thrown(throw(1),catch-else-throw(1,print(1))),handle-thrown(handle-thrown(throw(2),catch-else-throw(1,fail)),catch-else-throw(2,print(2))))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {finalise-throwing(sequential(print(handle-thrown(1,fail)),handle-thrown(print(2),fail),handle-thrown(sequential(print(3),throw(sequential(print(4),5))),print(given))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2,3,4,5)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {finalise-failing(finalise-abrupting(sequential(else-choice(print(1)),else-choice(fail,fail,fail,print(2),fail,print(3)))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {finalise-failing(sequential(effect(checked(true)),print(1),else(effect(checked),print(2)),else(effect(checked(map-lookup(map,1))),print(3)),print(checked(map-lookup(map(tuple(0,1),tuple(1,4)),1)))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2,3,4)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {check-true(false)} ~> {fail()} > {check-true(is-equal(nil,list<1>))} ~>* {X} > {X} -> {stuck()} > {check-true(true)} ~>* {null-value<>} > {else(fail,2)} ->* {2} > {finalise-abrupting(else(fail,2))} ->* {2} > {finalise-failing(finalise-abrupting(else(fail,2)))} ->* {2} > {print(else(2,fail))} ->* {null-value<>,standard-out = 2} > {print(else(fail,2))} ->* {null-value<>,standard-out = 2} > {handle-abrupt(else(fail,2),throw(2))} ->* {2,abrupted = #} > {handle-abrupt(else(fail,abrupt(2)),print(given))} ->* {null-value<>,standard-out = 2,abrupted = #} > {handle-abrupt(else(abrupt(2),print(99)),print(given))} ->* {null-value<>,standard-out = 2,abrupted = #} > {else(fail,fail,fail,3)} ->* {3} > {else(give(3,fail),5)} ->* {5} > RESET-BINDINGS > {finalise-failing(sequential(effect(checked(42)),print(1),else(checked(sequential(print(2),lookup(map-empty,"x"))),print(3))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2,3)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {finalise-failing(finalise-abrupting(sequential(else(fail,print(1)),print(else(2,fail)),else(print(3),fail),handle-abrupt(else(abrupt(true),print(99)),print(4)),else(fail,fail,print(5)))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2,3,4,5)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {finalise-failing(sequential(check-true(true),print(1),else(check-true(false),print(2)),check-true(not(false)),print(3),print(sequential(check-true(true),4))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2,3,4)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {finalise-breaking(sequential(print(sequential(handle-break(null-value),0)),handle-break(print(1)),print(sequential(handle-break(sequential(print(2),break,fail)),3))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(0,1,2,3)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {finalise-continuing(sequential(print(sequential(handle-continue(null-value),0)),handle-continue(print(1)),print(sequential(handle-continue(sequential(print(2),continue,fail)),3))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(0,1,2,3)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {sequential(check-true(is-in-type(true,booleans)),check-true(is-in-type(0,natural-numbers)),check-true(is-in-type(true,values)),check-true(is-in-type(true,ground-values)),check-true(is-in-type(true,tyunion(booleans,natural-numbers))),check-true(is-in-type(0,tyneg(booleans))),check-true(is-in-type(0,tyunion(booleans,natural-numbers))),check-true(is-in-type(booleans,value-types)),check-true(is-in-type(value-types,value-types)),check-true(is-in-type(empty-type,value-types)),check-true(is-in-type(ground-values,value-types)),check-true(is-in-type(tyunion(booleans,natural-numbers),value-types)),check-true(is-in-type(tyinter(booleans,natural-numbers),value-types)),check-true(is-in-type(tyneg(booleans),value-types)),check-true(not(is-in-type(0,booleans))),check-true(not(is-in-type(true,natural-numbers))),check-true(not(is-in-type(true,empty-type))),check-true(not(is-in-type(true,tyinter(booleans,natural-numbers)))),check-true(not(is-in-type(true,tyneg(values)))),check-true(not(is-in-type(abstraction(fail),ground-values))),print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {values} ~>* {VALS} > {integers} ~>* {INTS} > {identifiers} ~>* {IDS} > {values,3} =ty=>* {true<>} > {integers,3} =ty=>* {true<>} > {integers,true} =ty=>* {false<>} > {bools,true} =ty=>* {true<>} > {tyopt(values)} =ty=>* {true<>} > {values,3} =ty=>* {true<>} > {null-type,null} =ty=>* {true<>} > {values,1} =ty=>* {true<>} > {tystar(values)} =ty=>* {true<>} > {tystar(values),2,3} =ty=>* {true<>} > {strings,"x"} =ty=>* {true<>} > {identifiers,"x"} =ty=>* {true<>} > {integers,42} =ty=>* {true<>} > {tuples[identifiers[],identifiers[]],tuple<"x","y">} =ty=> {true<>} > {lists[VALS],list} =ty=> {true<>} > {lists[tyunion],list} =ty=> {true<>} > {null-type,null<>} =ty=>* {true<>} > {null-type[],3} =ty=> {false<>} > {maps(values,tyopt(values))} ~>* {maps[VALS,tyopt]} > {maps(identifiers,values)} ~>* {maps[identifiers[],VALS]} > {tuples(identifiers,integers)} ~>* {tuples[identifiers[],_]} > {maps(values,values),map(tuple("x",true))} =ty=>* {true<>} > {maps(strings,integers),map(tuple("x",2))} =ty=>* {true<>} > {maps(strings,integers),map(tuple("x",3),tuple("y",4))} =ty=>* {true<>} > {maps(values,integers),map(tuple("x",1))} =ty=>* {true<>} > {maps(values,integers),map(tuple("x",true))} =ty=>* {false<>} > {maps(identifiers,integers),map(tuple("x",2))} =ty=>* {true<>} > {maps(identifiers,integers),map(tuple("x",3),tuple("y",4))} =ty=>* {true<>} > {maps(identifiers,values),map(tuple("x",true),tuple(3,false))} =ty=>* {false<>} > {maps(identifiers,tyopt(integers)),map(tuple("x",3),tuple("y",4))} =ty=>* {true<>} > {maps(identifiers,tyopt(booleans)),map(tuple("x",3),tuple("y",4))} =ty=>* {false<>} > {maps(identifiers,tyopt(integers)),map(tuple("x",3),tuple("y"))} =ty=>* {true<>} > {tystar(tuples(identifiers,tyopt(integers))),tuple("x",3),tuple("y")} =ty=>* {true<>} > {tyseq(identifiers,tyopt(values)),"x"} =ty=>* {true<>} > {INTS,1} =ty=> {true<>} > {tyseq,1} =ty=> {true<>} > {tyseq,"x"} =ty=> {true<>} > {tyseq,1,2} =ty=> {true<>} > {tyseq,1,"x"} =ty=> {true<>} > {tyseq,"x",1} =ty=> {true<>} > {tyseq,"x",true} =ty=> {false<>} > {tyseq,1,2,3} =ty=> {false<>} > {tyseq,1,2,3} =ty=> {false<>} > {tyseq,1,2,3} =ty=> {true<>} > {tyseq>,1,2} =ty=> {true<>} > {tyseq>,1} =ty=> {true<>} > {tyseq>,1,2,3} =ty=> {false<>} > {tuples[integers],tuple<1>} =ty=> {true<>} > {tuples(identifiers),tuple("x")} =ty=>* {true<>} > {tuples(integers,values),tuple(1,2)} =ty=>* {true<>} > {tuples(integers,identifiers),tuple(1,"x")} =ty=>* {true<>} > {tuples(values,integers),tuple("x",1)} =ty=>* {true<>} > {tuples(values,integers),tuple("x",true)} =ty=>* {false<>} > {VALS,1,2,3} =ty=> {false<>} > {tuples(values),tuple(1,2,3)} =ty=>* {false<>} > {tuples(values,values),tuple(1,2,3)} =ty=>* {false<>} > {tuples(values,values,values),tuple(1,2,3)} =ty=>* {true<>} > {lists(identifiers),list} =ty=>* {true<>} > {lists(identifiers),list("x","y")} =ty=>* {true<>} > {lists(identifiers),list("x",1)} =ty=>* {false<>} > {lists(integers),list(true)} =ty=>* {false<>} > {lists(tuples(values,integers)),list(tuple(true,false))} =ty=>* {false<>} > {lists(tuples(values,integers)),list(tuple(true,3))} =ty=>* {true<>} > {tystar(tuples(values,integers)),map-elements(map(tuple("x",1)))} =ty=>* {true<>} > {tystar(tuples(values,integers)),map-elements(map(tuple("x",true)))} =ty=>* {false<>} > {tystar(tuples(values,integers)),map-elements(map-empty)} =ty=>* {true<>} > {typlus(tuples(values,integers)),map-elements(map(tuple("x",1)))} =ty=>* {true<>} > {typlus(tuples(values,integers)),map-elements(map(tuple("x",true)))} =ty=>* {false<>} > {typlus(tuples(values,integers)),map-elements(map-empty)} =ty=>* {false<>} > {sets(identifiers),set("x","y")} =ty=>* {true<>} > {sets(identifiers),set("x",1)} =ty=>* {false<>} > {sets(values),set("x",1)} =ty=>* {true<>} > {is-equal(null,null)} ~>* {true<>} > {is-equal(null,1)} ~>* {false<>} > {is-equal(1,1)} ~>* {true<>} > {is-equal(list<1,2>,list<1,2>)} ~>* {true<>} > {is-equal(list<2,1>,list<1,2>)} ~>* {false<>} > {is-equal(list<1,2>,list<1>)} ~>* {false<>} > {lists[tuples[values,values]],list,tuple<2,3>,tuple<4,3>>} =ty=>* {true<>} > {tycomp(identifiers,booleans)} ~>* {tycomp} > {tycomp,true<>} =ty=> {true<>} > {tycomp,5} =ty=> {false<>} > {tycomp,give(true,given)} =ty=>* {true<>} > {tyseq,tyopt>} =ty=> {true<>} > {tyseq,tyopt>,true<>} =ty=> {true<>} > {tyseq,tyopt>,true<>,true<>} =ty=> {true<>} > {tyseq,tyopt>,true<>,true<>,true<>} =ty=> {false<>} > {tystar} =ty=> {true<>} > {tystar,true<>} =ty=> {true<>} > {tystar,true<>,false<>} =ty=> {true<>} > {tystar,true<>,false<>,2} =ty=> {true<>} > {tyopt} =ty=> {true<>} > {tyopt,true<>} =ty=> {true<>} > {tyopt,true<>,false<>} =ty=> {false<>} > {tyopt,true<>,false<>,2} =ty=> {false<>} > {typlus} =ty=> {false<>} > {typlus,true<>} =ty=> {true<>} > {typlus,true<>,false<>} =ty=> {true<>} > {typlus,true<>,false<>,2} =ty=> {true<>} > {values,and(true<>,true<>)} =ty=>* {true<>} > {tystar(values)} =ty=>* {true<>} > {tystar(values),and(true<>,true<>)} =ty=>* {true<>} > {tystar(values),and(true<>,true<>),and(true<>,false<>)} =ty=>* {true<>} > {tystar(values),and(true<>,true<>),and(true<>,false<>),integer-add(1,1)} =ty=>* {true<>} > {tyopt(values)} =ty=>* {true<>} > {tyopt(values),and(true<>,true<>)} =ty=>* {true<>} > {tyopt(values),and(true<>,true<>),and(true<>,false<>)} =ty=>* {false<>} > {tyopt(values),and(true<>,true<>),and(true<>,false<>),integer-add(1,1)} =ty=>* {false<>} > {typlus(values)} =ty=>* {false<>} > {typlus(values),and(true<>,true<>)} =ty=>* {true<>} > {typlus(values),and(true<>,true<>),and(true<>,false<>)} =ty=>* {true<>} > {typlus(values),and(true<>,true<>),and(true<>,false<>),integer-add(1,1)} =ty=>* {true<>} > {tyunion(booleans,integers),true<>} =ty=>* {true<>} > {tyunion(booleans,integers),42} =ty=>* {true<>} > {tyunion(booleans,integers),values} =ty=>* {false<>} > {tyinter(booleans,integers),true<>} =ty=>* {false<>} > {tyinter(booleans,values),true<>} =ty=>* {true<>} > {tyinter(integers,values),true<>} =ty=>* {false<>} > {tyinter(integers,tyopt(values)),42} =ty=>* {true<>} > {tyneg(booleans),true<>} =ty=>* {false<>} > {tyneg(integers),true<>} =ty=>* {true<>} > {tyneg(values),true<>} =ty=>* {false<>} > {tyneg(values),42} =ty=>* {false<>} > {tyneg(tyinter(booleans,integers)),true<>} =ty=>* {true<>} > {tyneg(tyinter(booleans,values)),true<>} =ty=>* {false<>} > {tyneg(tyinter(integers,values)),true<>} =ty=>* {true<>} > {tyneg(tyinter(integers,tyopt(values))),42} =ty=>* {false<>} > {tyneg(tyunion(tyneg(booleans),tyneg(integers))),true<>} =ty=>* {false<>} > {tyneg(tyunion(tyneg(booleans),tyneg(values))),true<>} =ty=>* {true<>} > {tyneg(tyunion(tyneg(integers),tyneg(values))),true<>} =ty=>* {false<>} > {tyneg(tyunion(tyneg(integers),typower(values,2))),42} =ty=>* {true<>} > {typower(values,0)} =ty=>* {true<>} > {typower(values,1)} =ty=>* {false<>} > {typower(values,2)} =ty=>* {false<>} > {typower(integers,0)} =ty=>* {true<>} > {integers} ~>* {INTS} > {typower,1} =ty=>* {true<>} > {typower,1} =ty=>* {false<>} > {typower,1} =ty=>* {false<>} > {typower,1} =ty=>* {false<>} > {typower(values,1),1,2} =ty=>* {false<>} > {typower(values,2),1,2} =ty=>* {true<>} > {typower(values,3),1,2} =ty=>* {false<>} > {typower(values,4),1,2} =ty=>* {false<>} > {typower(values,1),1,2,3} =ty=>* {false<>} > {typower(values,2),1,2,3} =ty=>* {false<>} > {typower(values,3),1,2,3} =ty=>* {true<>} > {typower(values,4),1,2,3} =ty=>* {false<>} > {typower(values,1),1,2,3,4} =ty=>* {false<>} > {typower(values,2),1,2,3,4} =ty=>* {false<>} > {typower(values,3),1,2,3,4} =ty=>* {false<>} > {typower(values,4),1,2,3,4} =ty=>* {true<>} > RESET-BINDINGS > {sequential(check-true(is-equal(cast-to-type(false,booleans),false)),check-true(is-equal(cast-to-type(false,values),false)),check-true(not(is-value(cast-to-type(false,natural-numbers)))),check-true(not(is-value(cast-to-type(false,empty-type)))),print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {sequential(check-true(is-equal(when-true(true,0),0)),check-true(not(is-value(when-true(false,0)))),print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {sequential(check-true(is-equal(false,false)),check-true(is-equal(0,0)),check-true(not(is-equal(false,true))),check-true(not(is-equal(false,0))),check-true(not(is-equal(abstraction(fail),abstraction(fail)))),check-true(not(is-equal(abstraction(fail),false))),check-true(not(is-equal(false,abstraction(fail)))),print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {sequential(check-true(is-value(false)),check-true(not(is-value)),print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {tuple-elements(tuple)} ~>* {#} > {tuple-elements(tuple)} ->* {#} > {map(tuple("a",1),tuple("b",2),tuple("c",3),tuple("d",4))} ~>* {FOUR} > {map(tuple("a",1),tuple("b",2),tuple("a",3),tuple("d",4))} ~>* {null-value<>} > {map(tuple("a",1),tuple("b",2),tuple("c",null))} ~>* {THREE} > {set-size(domain(FOUR))} ~>* {4} > {set-size(domain(THREE))} ~>* {3} > {map-elements(FOUR)} ~>* {POINTS} with seq-variable(POINTS,0,#,LONGEST) > {POINTS} ~>* {tuple<"a",1>,tuple<"b",2>,tuple<"c",3>,tuple<"d",4>} > {maps(identifiers,integers)} ~>* {maps[identifiers[],_]} > {tystar(tuples(strings,integers)),POINTS} =ty=>* {true<>} > {tystar(tuples(strings,strings)),POINTS} =ty=>* {false<>} > {tystar(tuples(integers,integers)),POINTS} =ty=>* {false<>} > {maps(strings,integers),FOUR} =ty=>* {true<>} > {maps(strings,strings),FOUR} =ty=>* {false<>} > RESET-BINDINGS > {set-elements(set(1,2,3,4))} ~>* {1,2,3,4} > {set-elements(set("x","y"))} ~>* {"x","y"} > {tystar(strings),set-elements(set("x","y"))} =ty=>* {true<>} > {variant(tuple-elements(tuple("tag","value")))} ->* {variant<"tag","value">} > {variant(tuple-elements(tuple("tag","value")))} ~>* {variant<"tag","value">} > RESET-BINDINGS > {sequential(check-true(is-equal(tuple(reverse),tuple)),check-true(is-equal(tuple(reverse(1)),tuple(1))),check-true(is-equal(tuple(reverse(1,2)),tuple(2,1))),check-true(is-equal(tuple(reverse(1,2,3)),tuple(3,2,1))),print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {sequential(check-true(is-equal(third(1,2,3),3)),check-true(is-equal(third(1,2,3,4),3)),print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {sequential(check-true(is-equal(index(1,1),1)),check-true(is-equal(index(1,1,2),1)),check-true(is-equal(index(2,1,2),2)),check-true(is-equal(index(2,1,2,3),2)),check-true(not(is-value(index(0)))),check-true(not(is-value(index(0,1)))),check-true(not(is-value(index(0,1,2)))),check-true(not(is-value(index(1)))),check-true(not(is-value(index(2)))),check-true(not(is-value(index(2,1)))),check-true(not(is-value(index(3,1,2)))),print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {sequential(check-true(is-equal(tuple,tuple(first-n(0,1,2,3,4,5)))),check-true(is-equal(tuple(1),tuple(first-n(1,1,2,3,4,5)))),check-true(is-equal(tuple(1,2),tuple(first-n(2,1,2,3,4,5)))),check-true(is-equal(tuple(1,2,3),tuple(first-n(3,1,2,3,4,5)))),print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {sequential(check-true(is-equal(second(1,2),2)),check-true(is-equal(second(1,2,3),2)),print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {sequential(check-true(is-equal(tuple(intersperse(42)),tuple)),check-true(is-equal(tuple(intersperse(42,1)),tuple(1))),check-true(is-equal(tuple(intersperse(0,1,2)),tuple(1,0,2))),check-true(is-equal(tuple(intersperse(0,1,2,3)),tuple(1,0,2,0,3))),print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {sequential(check-true(is-equal(first(1),1)),check-true(is-equal(first(1,2,3),1)),print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {sequential(check-true(is-equal(length,0)),check-true(is-equal(length(1),1)),check-true(is-equal(length(1,2,3),3)),print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {first(1,2,3)} ->* {1} > {second(1,2,3)} ->* {2} > {third(1,2,3)} ->* {3} > {tuple-elements(tuple(1,2,3))} ->* {1,2,3} > {first(tuple-elements(tuple(1,2,3)))} ->* {1} > {second(tuple-elements(tuple(1,2,3)))} ->* {2} > {third(tuple-elements(tuple(1,2,3)))} ->* {3} > {index(0,1,2,3)} ->* {#} > {index(1,1,2,3)} ->* {1} > {index(2,1,2,3)} ->* {2} > {index(3,1,2,3)} ->* {3} > {index(4,1,2,3)} ->* {#} > RESET-BINDINGS > {sequential(check-true(is-equal(tuple(1,2,3,4,5),tuple(drop-first-n(0,1,2,3,4,5)))),check-true(is-equal(tuple(2,3,4,5),tuple(drop-first-n(1,1,2,3,4,5)))),check-true(is-equal(tuple(3,4,5),tuple(drop-first-n(2,1,2,3,4,5)))),check-true(is-equal(tuple(4,5),tuple(drop-first-n(3,1,2,3,4,5)))),print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {sequential(check-true(is-in(1,1)),check-true(is-in(1,1,2)),check-true(is-in(2,1,2)),check-true(is-in(3,1,2,3,4,5)),check-true(not(is-in(0))),check-true(not(is-in(1))),check-true(not(is-in(0,1))),check-true(not(is-in(3,1,2))),print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {sequential(check-true(is-equal(tuple(n-of(0,42)),tuple)),check-true(is-equal(tuple(n-of(1,2)),tuple(2))),check-true(is-equal(tuple(n-of(2,3)),tuple(3,3))),check-true(is-equal(tuple(n-of(3,4)),tuple(4,4,4))),print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {nil} ->* {list<>} > {length} ->* {0} > {_nat-succ(1)} ->* {2} > {length(1)} ->* {1} > {length(1,2)} ->* {2} > {length(1,2,3)} ->* {3} > {_adt-fields(list<1,2,3>)} ~>* {Q0} > {list-elements(list<1,2,3>)} ~> {1,2,3} > {_adt-constructor(list<>)} ~>* {"list"} > {_adt-fields(list<>)} ~>* {list<>} > {list-elements(list<>)} ~> {#} > {list-elements(list<>)} ~>* {#} > {list<>} ~>* {list<>} > {list-elements(list<>)} ~>* {#} > {list-elements(nil)} ~>* {#} > {#} ~>* {#} > {list-length(nil)} ->* {0} > RESET-BINDINGS > {null} ~>* {null-value<>} > {head(nil)} ~>* {#} > {cons(1,nil)} ~>* {list<1>} > {cons(2,cons(1,nil))} ~>* {list<2,1>} > {list(1,2)} ~>* {list<1,2>} > {head(list(1,2))} ~>* {1} > {head(cons(1,nil))} ~>* {1} > {tail(cons(1,nil))} ~>* {list<>} > {list(1,2,3,4)} ~>* {list<1,2,3,4>} > {list-elements(list<1,2,3,4>)} ~>* {Xs} with seq-variable(Xs,0,#,LONGEST) > {list(1,2,3,4)} ~>* {FOUR} > {list-length(FOUR)} ~>* {4} > {tail(FOUR)} ~>* {list<2,3,4>} > {head(FOUR)} ~>* {1} > {reverse(list-elements(FOUR))} ~>* {Ys} with seq-variable(Ys,0,#,LONGEST) > {list(3,2,1)} ~>* {THREE} > {list-length(THREE)} ~>* {3} > {head(list-append(THREE,FOUR))} ~>* {3} > {tail(list-append(THREE,FOUR))} ~>* {list<2,1,1,2,3,4>} > {list-length(list-append(THREE,FOUR))} ~>* {7} > {list-length(tail(list-append(THREE,FOUR)))} ~>* {6} > RESET-BINDINGS > {sequential(check-true(not(is-value(head(nil)))),check-true(not(is-value(tail(nil)))),check-true(is-equal(0,list-length(nil))),print("OK"))} ->* {Q,standard-out = Q1} with seq-variable(Q,0,#,LONGEST) seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {tuple-elements(tuple(1,2,3))} ~>* {1,2,3} > RESET-BINDINGS > {sequential(check-true(is-equal(tuple(tuple-zip(tuple,tuple)),tuple)),check-true(is-equal(tuple(tuple-zip(tuple(1),tuple(2))),tuple(tuple(1,2)))),check-true(is-equal(tuple(tuple-zip(tuple(1,3),tuple(2,4))),tuple(tuple(1,2),tuple(3,4)))),check-true(is-equal(tuple(tuple-zip(tuple(1,3,5),tuple(2,4,6))),tuple(tuple(1,2),tuple(3,4),tuple(5,6)))),check-true(is-equal(tuple(tuple-zip(tuple(1),tuple)),tuple)),check-true(is-equal(tuple(tuple-zip(tuple,tuple(1))),tuple)),print("OK"))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {bit-vector(true,false)} ~>* {Q0} > {bit-vectors(4)} ~>* {Q1} > {bytes} ~>* {Q2} > {typower(values,2),true,false} =ty=>* {true<>} > {typower(bits,2),true,false} =ty=>* {true<>} > {bit-vectors(2),bit-vector(true,false)} =ty=>* {true<>} > {bit-vectors(2),bit-vector(true,false)} ~>* {QS} with seq-variable(QS,0,#,LONGEST) > {QS} =ty=> {Q3} > {is-in-type(bit-vector(true,false,true,false),bit-vectors(4))} ->* {true<>} > {is-in-type(bit-vector(true,false,true,false),bit-vectors(integer-add(2,4)))} ->* {false<>} > {is-in-type(bit-vector(true,false,true,false),bytes)} ->* {false<>} > {is-in-type(bit-vector(true,false,true,false,true,false,false,true),bytes)} ->* {true<>} > RESET-BINDINGS > {integer-add} ->* {0} > RESET-BINDINGS > {initialise-giving(initialise-binding(scope(bind-value("x",99),give(tuple(99,thunk(abstraction(sequential(print(bound-value("x")),print(first(tuple-elements(bound-value("tup")))))))),scope(collateral(bind-value("x",42),bind-value("tup",tuple(42,second(tuple-elements(given))))),force(second(tuple-elements(given))))))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(42,42)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(scope(bind-value("x",99),give(tuple(99,thunk(closure(sequential(print(bound-value("x")),print(first(tuple-elements(bound-value("tup")))))))),scope(collateral(bind-value("x",42),bind-value("tup",tuple(42,second(tuple-elements(given))))),else(force(second(tuple-elements(given))),print(77)))))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(99,77)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(sequential(check-true(is-equal(match(list,list),map)),check-true(is-equal(match(list(false),list(pattern-bind("b"))),map(tuple("b",false)))),check-true(is-equal(match(list(false,true),list(pattern-bind("a"),pattern-bind("b"))),map(tuple("a",false),tuple("b",true)))),check-true(is-equal(match(map,map),map)),check-true(is-equal(match(map(tuple("a",false),tuple("b",true)),map(tuple("b",pattern-bind("d")),tuple("a",pattern-bind("c")))),map(tuple("c",false),tuple("d",true)))),check-true(is-equal(match(true,true),map)),else(effect(match(list,list(false))),effect(match(list(false),list(false,false))),effect(match(list(false,true),list(pattern-bind("a"),pattern-bind("a")))),effect(match(map,map(tuple("a",true)))),effect(match(map(tuple("b",true)),map(tuple("b",pattern-any),tuple("c",pattern-any)))),effect(match(false,true)),print("OK")))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(sequential(check-true(is-equal(match(false,pattern-type(booleans)),map)),check-true(is-equal(match(list(42),pattern-type(lists(integers))),map)),check-true(is-equal(match(abstraction(null-value),pattern-type(abstractions(tycomp(values,values)))),map)),check-true(is-equal(match(list(true),pattern-type(lists(booleans))),map)),check-true(is-equal(match(tuple(42,true),pattern-type(tuples(integers,booleans))),map)),effect(else(match(true,pattern-type(integers)),match(list(42),pattern-type(lists(booleans))),match(abstraction(null-value),pattern-type(atoms)),match(list(true),pattern-type(lists(integers))),match(tuple(42,true),pattern-type(tuples(booleans,integers))),print("OK"))))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(sequential(check-true(is-equal(match(false,pattern-else(pattern-bind("a"),pattern-bind("b"))),map(tuple("a",false)))),check-true(is-equal(match(false,pattern-else(pattern-type(integers),pattern-bind("b"))),map(tuple("b",false)))),else(effect(match(false,pattern-else(pattern-type(integers),pattern-type(atoms)))),print("OK")))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(sequential(check-true(is-equal(match(false,pattern-unite(pattern-bind("a"),pattern-bind("b"))),map(tuple("a",false),tuple("b",false)))),check-true(is-equal(match(false,pattern-unite(pattern-type(booleans),pattern-bind("b"))),map(tuple("b",false)))),else(effect(match(false,pattern-unite(pattern-bind("a"),pattern-bind("a")))),print("OK")))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(give(map(tuple("a",false),tuple("b",true)),case-match(map(tuple("b",pattern-bind("d")),tuple("a",pattern-bind("c"))),bound-value("d")))))} ->* {Result} with {true} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(give(map(tuple("a",false),tuple("b",true)),case-match-loosely(map(tuple("b",pattern-bind("d"))),bound-value("d")))))} ->* {Result} with {true} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(sequential(check-true(is-equal(match-loosely(list,list),map)),check-true(is-equal(match-loosely(list(false),list(pattern-bind("b"))),map(tuple("b",false)))),check-true(is-equal(match-loosely(list(false,true),list(pattern-bind("a"),pattern-bind("b"))),map(tuple("a",false),tuple("b",true)))),check-true(is-equal(match-loosely(map(tuple("a",false)),map),map)),check-true(is-equal(match-loosely(map(tuple("a",false),tuple("b",true)),map(tuple("b",pattern-bind("d")))),map(tuple("d",true)))),check-true(is-equal(match-loosely(true,true),map)),else(effect(match-loosely(list,list(false))),effect(match-loosely(list(false),list(false,false))),effect(match-loosely(list(false,true),list(pattern-bind("a"),pattern-bind("a")))),effect(match-loosely(map,map(tuple("a",true)))),effect(match-loosely(map(tuple("a",true)),map(tuple("a",false)))),effect(match-loosely(map(tuple("b",true)),map(tuple("b",pattern-any),tuple("c",pattern-any)))),effect(match-loosely(false,true)),print("OK")))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(sequential(check-true(is-equal(match(not(true),pattern-any),map)),check-true(is-equal(match(list(42),pattern-any),map)),check-true(is-equal(match(abstraction(null-value),pattern-any),map)),check-true(is-equal(match(list(42),pattern-any),map)),check-true(is-equal(match(tuple(42),pattern-any),map)),print("OK"))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(sequential(check-true(is-equal(match(false,pattern-bind("it")),map(tuple("it",false)))),check-true(is-equal(match(list(42),pattern-bind("it")),map(tuple("it",list(42))))),check-true(is-equal(dom(match(abstraction(null-value),pattern-bind("it"))),set("it"))),check-true(is-equal(match(abstraction(12),abstraction(pattern-bind("it"))),map(tuple("it",12)))),check-true(is-equal(match(vector(42),pattern-bind("it")),map(tuple("it",vector(42))))),check-true(is-equal(match(tuple(42),pattern-bind("it")),map(tuple("it",tuple(42))))),print("OK"))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list("OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(give(variant("a",true),sequential(print(case-variant-value("a")),else(effect(case-variant-value("b")),print("OK"))))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(true,"OK")} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(scope(bind-value("f",function(abstraction(print(given)))),apply(apply(curry(bound-value("f")),1),2))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(tuple(1,2))} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(force(supply(sequential(print(1),function(abstraction(print(given)))),sequential(print(2),3)))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2,3)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(scope(bind-value("f",uncurry(function(abstraction(sequential(print(given),function(abstraction(print(given)))))))),apply(bound-value("f"),tuple(1,2)))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(scope(bind-value("x",4),give(99,give(function(closure(sequential(print(given),print(bound-value("x"))))),scope(bind-value("x",99),apply(sequential(print(1),given),sequential(print(2),3))))))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2,3,4)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(scope(bind-value("x",99),give(99,give(function(abstraction(sequential(print(given),print(bound-value("x"))))),scope(bind-value("x",4),apply(sequential(print(1),given),sequential(print(2),3))))))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2,3,4)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(scope(bind-value("f",function(abstraction(sequential(print(given),integer-add(1,given))))),print(apply(compose(bound-value("f"),function(abstraction(sequential(print(1),2)))),99)))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2,3)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(scope(bind-value("f",function(abstraction(print(given)))),apply(partial-apply(bound-value("f"),1),2))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(tuple(1,2))} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(apply(sequential(print(1),function(abstraction(print(given)))),sequential(print(2),3))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(1,2,3)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {code(give(true,given))} ~>* {CODE} > {abstractions(tycomp(values,values)),abstraction(give(true,given))} =ty=>* {true<>} > {initialise-binding(closure(given))} ->* {abstraction<_>} > {initialise-binding(closure(given))} ->* {abstraction<_>} > {initialise-binding(enact(closure(print(2))))} ->* {null-value<>,out = list<2>} > RESET-BINDINGS > {initialise-giving(initialise-binding(scope(bind-value("x",99),give(tuple(99,abstraction(sequential(print(first(tuple-elements(given))),print(bound-value("x"))))),scope(bind-value("x",42),give(tuple(42,second(tuple-elements(given))),enact(second(tuple-elements(given)))))))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(42,42)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) > RESET-BINDINGS > {initialise-giving(initialise-binding(scope(bind-value("x",42),give(tuple(99,closure(sequential(print(first(tuple-elements(given))),print(bound-value("x"))))),scope(bind-value("x",99),give(tuple(42,second(tuple-elements(given))),enact(second(tuple-elements(given)))))))))} ->* {Result,standard-out = Q1} with {null-value} ~>* {Result'} _is-equal(Result,Result') |> true<> ------ seq-variable(Result,0,#,LONGEST) {list(42,42)} ~>* {Q1'} _is-equal(Result,Result') |> true<> ------ seq-variable(Q1,0,#,LONGEST) relation(~>) relation(->) terminal(->,VALUES) terminal(~>,VALUES) # (1) ------ {X} ~>* {X} {X} ~> {X'} {X'} ~>* {X''} (2) ------ {X} ~>* {X''} with seq-variable(X',0,#,LONGEST) seq-variable(X'',0,#,LONGEST) # (10) ------ {#} ~>* {#} {X} ~>* {X'} {Xp} ~>* {Xp'} (10) ------ {X,Xp} ~>* {X',Xp'} with seq-variable(X',0,#,LONGEST) seq-variable(Xp,1,#,LONGEST) seq-variable(Xp',0,#,LONGEST) {Xp} ~>* {Vs} {tystar(values),Vs} =ty=>* {true<>} (0) ------ {Xp} ->* {Vs} with seq-variable(Xp,1,#,LONGEST) seq-variable(Vs,0,#,LONGEST) {X} ~>* {X'} {X'} -> {Y} {Y} ->* {V} (1) ------ {X} ->* {V} with seq-variable(X',0,#,LONGEST) seq-variable(Y,0,#,LONGEST) seq-variable(V,0,#,LONGEST) # (0) ------ {Xs,abrupted = V} ->* {Xs,abrupted = V} with seq-variable(Xs,0,#,LONGEST) {X} ~>* {Xs} {Xs} -> {X'} (10) ------ {X,Xp} -> {X',Xp} with seq-variable(Xp,1,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {X} ~>* {Vs} {tystar(values),Vs} =ty=>* {true<>} {Xp} ~>* {Xs} {Xs} -> {Xp'} (10) ------ {X,Xp} -> {Vs,Xp'} with seq-variable(Xp,1,#,LONGEST) seq-variable(Xp',1,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {X,Xp} -> {IM} {IM} ->* {RES} (10) ------ {X,Xp} ->* {RES} with seq-variable(Xp,1,#,LONGEST) seq-variable(IM,0,#,LONGEST) seq-variable(RES,0,#,LONGEST) {Xp} ~>* {Xp'} is_terminal(~>,Xp') (10) ------ {datatype-value(Xp)} ~> {_adt-construct(Xp')} with seq-variable(Xp,1,#,LONGEST) seq-variable(Xp',1,#,LONGEST) {Xp} -> {Xp'} (10) ------ {datatype-value(Xp)} -> {datatype-value(Xp')} with seq-variable(Xp,1,#,LONGEST) seq-variable(Xp',1,#,LONGEST) {X} ~>* {X'} is_terminal(~>,X') {Xp} ~>* {Xp'} (10) ------ {non-strict-datatype-value(X,Xp)} ~> {_adt-construct(X',Xp')} with seq-variable(Xp,0,#,LONGEST) seq-variable(Xp',0,#,LONGEST) {X} ~>* {X'} is_terminal(~>,X') (10) ------ {non-strict-datatype-value(X)} ~> {_adt-construct(X')} {X} -> {X'} (10) ------ {non-strict-datatype-value(X,Xs)} -> {non-strict-datatype-value(X',Xs)} with seq-variable(Xs,0,#,LONGEST) entity(env,_map-empty) entity(environment,_map-empty) entity(given-value,#) entity(atom-gen,_atom_seed) entity(used-atom-set,_set) entity(store,_map-empty) entity(abrupted,#) entity(standard-out,#) relation(=ty=>) _type_member(XV,YV) |> true<> (10) ------ {YV,XV} =ty=> {true<>} # (8) ------ {T,Vs} =ty=> {false<>} with seq-variable(Vs,0,#,LONGEST) # (10) ------ {tystar} =ty=> {true<>} with seq-variable(Xs,0,#,LONGEST) {T,X} =ty=> {true<>} {tystar,Xs} =ty=> {true<>} (10) ------ {tystar,X,Xs} =ty=> {true<>} with seq-variable(Xs,0,#,LONGEST) # (10) ------ {tyseq<>} =ty=> {true<>} # (10) ------ {tyseq,Pre,Post} =ty=> {true<>} with {tyseq,Post} =ty=> {true<>} ------ seq-variable(Post,0,#,LONGEST) {T,Pre} =ty=> {true<>} ------ seq-variable(Pre,0,#,LONGEST) seq-variable(Ts,0,#,LONGEST) {TT,V} =ty=> {R} (10) ------ {tycomp,V} =ty=> {R} is_non_terminal(~>,X) (11) ------ {tycomp,X} =ty=>* {true<>} is_non_terminal(~>,X) (11) ------ {tycomp(FT,TT),X} =ty=>* {true<>} {T,X} =ty=> {true<>} {typlus,Xp} =ty=> {true<>} (10) ------ {typlus,X,Xp} =ty=> {true<>} with seq-variable(Xp,1,#,LONGEST) {T,X} =ty=> {true<>} (10) ------ {typlus,X} =ty=> {true<>} {T,V} =ty=> {true<>} (10) ------ {tyopt,V} =ty=> {true<>} # (10) ------ {tyopt} =ty=> {true<>} {Xs} ~>* {Xs'} is_terminal(~>,Xs') {Xs'} =ty=> {R} (10) ------ {Xs} =ty=>* {R} with seq-variable(Xs,1,#,LONGEST) seq-variable(Xs',1,#,LONGEST) {T1,X} =ty=> {true<>} (10) ------ {tyunion,X} =ty=> {true<>} {T2,X} =ty=> {true<>} (10) ------ {tyunion,X} =ty=> {true<>} {T1,X} =ty=> {true<>} {T2,X} =ty=> {true<>} (10) ------ {tyinter,X} =ty=> {true<>} {T1,X} =ty=> {false<>} (10) ------ {tyneg,X} =ty=> {true<>} # (10) ------ {typower} =ty=> {true<>} {T1,X} =ty=> {true<>} _integer-subtract(N,1) |> N' {typower,Xs} =ty=> {true<>} (10) ------ {typower,X,Xs} =ty=> {true<>} with seq-variable(Xs,0,#,LONGEST) {types} ~>* {TS'} _is-equal(TS,TS') |> true<> {type-operators,X} =ty=>* {true<>} (11) ------ {TS,X} =ty=> {true<>} # (10) ------ {type-operators()} ~> {_adt-type("type-operators")} {_Y2} ~>* {_Y3} {_Y3} -> {_Y4} (10) ------ {type-operators(_Y1,_Y2,_Y5)} -> {type-operators(_Y1,_Y4,_Y5)} with seq-variable(_Y5,0,#,SHORTEST) {values,_Y1} =ty=>* {true<>} ------ seq-variable(_Y1,0,#,LONGEST) {values,_X1} =ty=>* {true<>} (10) ------ {tystar(_X1)} ~> {datatype-value("tystar",_X1)} {X} ~>* {_Y1} {_Y1} -> {X'} (10) ------ {tystar(Vs,X,Ys)} -> {tystar(Vs,X',Ys)} with seq-variable(Ys,0,#,SHORTEST) {tystar(values),Vs} =ty=>* {true<>} ------ seq-variable(Vs,0,#,LONGEST) {types,_Y1} =ty=>* {true<>} (10) ------ {type-operators[],tystar<_Y1>} =ty=> {true<>} {tystar(values),_X1s} =ty=>* {true<>} (10) ------ {tyseq(_X1s)} ~> {datatype-value("tyseq",_X1s)} with seq-variable(_X1s,0,#,SHORTEST) {X} ~>* {_Y1} {_Y1} -> {X'} (10) ------ {tyseq(Vs,X,Ys)} -> {tyseq(Vs,X',Ys)} with seq-variable(Ys,0,#,SHORTEST) {tystar(values),Vs} =ty=>* {true<>} ------ seq-variable(Vs,0,#,LONGEST) # (10) ------ {type-operators[],tyseq<_Y1>} =ty=> {true<>} with {tystar(types),_Y1} =ty=>* {true<>} ------ seq-variable(_Y1,0,#,LONGEST) {values,_X1} =ty=>* {true<>} (10) ------ {typlus(_X1)} ~> {datatype-value("typlus",_X1)} {X} ~>* {_Y1} {_Y1} -> {X'} (10) ------ {typlus(Vs,X,Ys)} -> {typlus(Vs,X',Ys)} with seq-variable(Ys,0,#,SHORTEST) {tystar(values),Vs} =ty=>* {true<>} ------ seq-variable(Vs,0,#,LONGEST) {types,_Y1} =ty=>* {true<>} (10) ------ {type-operators[],typlus<_Y1>} =ty=> {true<>} {values,_X1} =ty=>* {true<>} (10) ------ {tyopt(_X1)} ~> {datatype-value("tyopt",_X1)} {X} ~>* {_Y1} {_Y1} -> {X'} (10) ------ {tyopt(Vs,X,Ys)} -> {tyopt(Vs,X',Ys)} with seq-variable(Ys,0,#,SHORTEST) {tystar(values),Vs} =ty=>* {true<>} ------ seq-variable(Vs,0,#,LONGEST) {types,_Y1} =ty=>* {true<>} (10) ------ {type-operators[],tyopt<_Y1>} =ty=> {true<>} {values,_X1} =ty=>* {true<>} {values,_X2} =ty=>* {true<>} (10) ------ {typower(_X1,_X2)} ~> {datatype-value("typower",_X1,_X2)} {X} ~>* {_Y1} {_Y1} -> {X'} (10) ------ {typower(Vs,X,Ys)} -> {typower(Vs,X',Ys)} with seq-variable(Ys,0,#,SHORTEST) {tystar(values),Vs} =ty=>* {true<>} ------ seq-variable(Vs,0,#,LONGEST) {types,_Y1} =ty=>* {true<>} {naturals,_Y2} =ty=>* {true<>} (10) ------ {type-operators[],typower<_Y1,_Y2>} =ty=> {true<>} {values,_X1} =ty=>* {true<>} {values,_X2} =ty=>* {true<>} (10) ------ {tyunion(_X1,_X2)} ~> {datatype-value("tyunion",_X1,_X2)} {X} ~>* {_Y1} {_Y1} -> {X'} (10) ------ {tyunion(Vs,X,Ys)} -> {tyunion(Vs,X',Ys)} with seq-variable(Ys,0,#,SHORTEST) {tystar(values),Vs} =ty=>* {true<>} ------ seq-variable(Vs,0,#,LONGEST) {types,_Y1} =ty=>* {true<>} {types,_Y2} =ty=>* {true<>} (10) ------ {type-operators[],tyunion<_Y1,_Y2>} =ty=> {true<>} {values,_X1} =ty=>* {true<>} {values,_X2} =ty=>* {true<>} (10) ------ {tyinter(_X1,_X2)} ~> {datatype-value("tyinter",_X1,_X2)} {X} ~>* {_Y1} {_Y1} -> {X'} (10) ------ {tyinter(Vs,X,Ys)} -> {tyinter(Vs,X',Ys)} with seq-variable(Ys,0,#,SHORTEST) {tystar(values),Vs} =ty=>* {true<>} ------ seq-variable(Vs,0,#,LONGEST) {types,_Y1} =ty=>* {true<>} {types,_Y2} =ty=>* {true<>} (10) ------ {type-operators[],tyinter<_Y1,_Y2>} =ty=> {true<>} {values,_X1} =ty=>* {true<>} {values,_X2} =ty=>* {true<>} (10) ------ {tycomp(_X1,_X2)} ~> {datatype-value("tycomp",_X1,_X2)} {X} ~>* {_Y1} {_Y1} -> {X'} (10) ------ {tycomp(Vs,X,Ys)} -> {tycomp(Vs,X',Ys)} with seq-variable(Ys,0,#,SHORTEST) {tystar(values),Vs} =ty=>* {true<>} ------ seq-variable(Vs,0,#,LONGEST) {types,_Y1} =ty=>* {true<>} {types,_Y2} =ty=>* {true<>} (10) ------ {type-operators[],tycomp<_Y1,_Y2>} =ty=> {true<>} {values,_X1} =ty=>* {true<>} (10) ------ {tyneg(_X1)} ~> {datatype-value("tyneg",_X1)} {X} ~>* {_Y1} {_Y1} -> {X'} (10) ------ {tyneg(Vs,X,Ys)} -> {tyneg(Vs,X',Ys)} with seq-variable(Ys,0,#,SHORTEST) {tystar(values),Vs} =ty=>* {true<>} ------ seq-variable(Vs,0,#,LONGEST) {types,_Y1} =ty=>* {true<>} (10) ------ {type-operators[],tyneg<_Y1>} =ty=> {true<>} relation(=ct=>) _term-constructor(X) |> CONS _term-arguments(X) |> ARGS {ARGS} =ct=> {ARGS'} (10) ------ {X} =ct=> {_term-construct(CONS,ARGS')} with seq-variable(ARGS,1,#,LONGEST) seq-variable(ARGS',1,#,LONGEST) _term-arguments(X) |> # (10) ------ {X} =ct=> {X} is_terminal(->,V) (10) ------ {V} =ct=> {V} {V} =ct=> {V'} {Vp} =ct=> {Vp'} (10) ------ {V,Vp} =ct=> {V',Vp'} with seq-variable(Vp,1,#,LONGEST) seq-variable(Vp',1,#,LONGEST) relation(=ul=>) {X} =ul=> {A} (11) ------ {meta-up(X)} =ct=> {A} {X} =ul=> {M} {M} =ul=> {N} (11) ------ {meta-up(X)} =ul=> {N} {X} =ct=> {M'} (11) ------ {meta-down(X)} =ul=> {M'} _value_type(X) |> T (10) ------ {X} =ul=> {ast-value} _term-constructor(X) |> CONS _term-arguments(X) |> ARGS {ARGS} =ul=> {ARGS'} (10) ------ {X} =ul=> {ast-term(CONS,ARGS')} with seq-variable(ARGS,1,#,LONGEST) seq-variable(ARGS',1,#,LONGEST) _term-constructor(X) |> CONS _term-arguments(X) |> # (10) ------ {X} =ul=> {ast-term} {X} =ul=> {X'} {Xp} =ul=> {Xp'} (10) ------ {X,Xp} =ul=> {X',Xp'} with seq-variable(Xp,1,#,LONGEST) seq-variable(Xp',1,#,LONGEST) relation(=dl=>) {X} =dl=> {X'} {Xp} =dl=> {Xp'} (10) ------ {X,Xp} =dl=> {X',Xp'} with seq-variable(Xp,1,#,LONGEST) seq-variable(Xp',1,#,LONGEST) {X} =ct=> {XC} {XC} ->* {MA} {MA} ~>* {A} {A} =dl=> {N} (11) ------ {meta-down(X)} =ct=> {N} {T,V} =ty=> {true<>} (10) ------ {ast-value} =dl=> {V} {ARGS'} =dl=> {ARGS} (10) ------ {ast-term} =dl=> {_term-construct(CONS,ARGS)} with seq-variable(ARGS,1,#,LONGEST) seq-variable(ARGS',1,#,LONGEST) # (10) ------ {ast-term} =dl=> {_term-construct(CONS)} {X} =ul=> {A} (10) ------ {code(X)} ~> {A} {A'} ~>* {A} {A} =dl=> {Y} (10) ------ {eval(A')} ~> {Y} {X} ~>* {X'} {X'} -> {X''} (10) ------ {eval(X)} -> {eval(X'')} {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {print(Xs)} -> {print(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {Vs} ~>* {_Y2} {tystar(values),Vs} =ty=>* {true<>} (10) ------ {print(Vs),standard-out = _Y1} -> {null-value,standard-out = _Y1,_Y2} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) # (10) ------ {read()} -> {V} # (10) ------ {read()} -> {fail} {Xs} ~>* {Xs'} {Xs'} -> {Xs''} (11) ------ {left-to-right(Xs)} -> {left-to-right(Xs'')} with seq-variable(Xs,0,#,LONGEST) seq-variable(Xs',0,#,LONGEST) seq-variable(Xs'',0,#,LONGEST) {Vs} ~>* {Vs'} {tystar(values),Vs'} =ty=>* {true<>} (11) ------ {left-to-right(Vs)} ~> {Vs'} with seq-variable(Vs,0,#,LONGEST) seq-variable(Vs',0,#,LONGEST) {Y} ~>* {Y'} {Y'} -> {Y''} (11) ------ {right-to-left(Xs,Y)} -> {right-to-left(Xs,Y'')} with seq-variable(Xs,0,#,SHORTEST) {Y} ~>* {Y'} {Y'} -> {Y''} (11) ------ {right-to-left(Xs,Y,Vs)} -> {right-to-left(Xs,Y'',Vs')} with seq-variable(Xs,0,#,SHORTEST) {Vs} ~>* {Vs'} is_terminal(->,Vs') ------ seq-variable(Vs,0,#,LONGEST) seq-variable(Vs',0,#,LONGEST) # (11) ------ {right-to-left(Vs)} ~> {Vs'} with {Vs} ~>* {Vs'} is_terminal(->,Vs') ------ seq-variable(Vs,0,#,LONGEST) seq-variable(Vs',0,#,LONGEST) {tystar(values),Vs} =ty=>* {true<>} (10) ------ {left-to-right(Vs)} ~> {Vs} with seq-variable(Vs,0,#,LONGEST) {Y} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Y'} {tystar(values),Vs} =ty=>* {true<>} (10) ------ {left-to-right(Vs,Y,Zs)} -> {left-to-right(Vs,Y',Zs)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Zs,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) {tystar(values),Vs} =ty=>* {true<>} (10) ------ {l-to-r(Vs)} ~> {Vs} with seq-variable(Vs,0,#,LONGEST) {Y} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Y'} {tystar(values),Vs} =ty=>* {true<>} (10) ------ {l-to-r(Vs,Y,Zs)} -> {left-to-right(Vs,Y',Zs)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Zs,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) {tystar(values),Vs} =ty=>* {true<>} (10) ------ {right-to-left(Vs)} ~> {Vs} with seq-variable(Vs,0,#,LONGEST) {Y} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Y'} {tystar(values),Vs} =ty=>* {true<>} (10) ------ {right-to-left(Xs,Y,Vs)} -> {right-to-left(Xs,Y',Vs)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {tystar(values),Vs} =ty=>* {true<>} (10) ------ {r-to-l(Vs)} ~> {Vs} with seq-variable(Vs,0,#,LONGEST) {Y} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Y'} {tystar(values),Vs} =ty=>* {true<>} (10) ------ {r-to-l(Xs,Y,Vs)} -> {right-to-left(Xs,Y',Vs)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {null-value<>} (10) ------ {sequential(_Y1,Yp)} ~> {sequential(Yp)} with seq-variable(Yp,1,#,LONGEST) # (10) ------ {sequential(Y)} ~> {Y} {X} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X'} (10) ------ {sequential(X,Yp)} -> {sequential(X',Yp)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Yp,1,#,LONGEST) {_Y1} ~>* {null-value<>} (10) ------ {seq(_Y1,Yp)} ~> {sequential(Yp)} with seq-variable(Yp,1,#,LONGEST) # (10) ------ {seq(Y)} ~> {Y} {X} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X'} (10) ------ {seq(X,Yp)} -> {sequential(X',Yp)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Yp,1,#,LONGEST) {_Y1} ~>* {Vs} {tystar(values),Vs} =ty=>* {true<>} (10) ------ {effect(_Y1)} ~> {null-value} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {effect(Xs)} -> {effect(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) # (10) ------ {choice(Xs,Y,Zs)} ~> {Y} with seq-variable(Zs,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {true<>} (10) ------ {if-true-else(_Y1,X,Y)} ~> {X} {_Y1} ~>* {false<>} (10) ------ {if-true-else(_Y1,X,Y)} ~> {Y} {X1} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X1'} (10) ------ {if-true-else(X1,X2,X3)} -> {if-true-else(X1',X2,X3)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {true<>} (10) ------ {if-else(_Y1,X,Y)} ~> {X} {_Y1} ~>* {false<>} (10) ------ {if-else(_Y1,X,Y)} ~> {Y} {X1} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X1'} (10) ------ {if-else(X1,X2,X3)} -> {if-true-else(X1',X2,X3)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) # (10) ------ {while-true(B,X)} ~> {if-true-else(B,sequential(X,while-true(B,X)),null-value)} # (10) ------ {while(B,X)} ~> {if-true-else(B,sequential(X,while-true(B,X)),null-value)} # (10) ------ {do-while-true(X,B)} ~> {sequential(X,if-true-else(B,do-while-true(X,B),null-value))} # (10) ------ {do-while(X,B)} ~> {sequential(X,if-true-else(B,do-while-true(X,B),null-value))} {_Y1} ~>* {Vs} {tystar(values),Vs} =ty=>* {true<>} (10) ------ {interleave(_Y1)} ~> {Vs} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {interleave(Xs)} -> {interleave(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) # (10) ------ {yielding()} ~> {yielding[]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {yielding(_Y1)} -> {yielding(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) # (10) ------ {signal()} ~> {datatype-value("signal")} # (10) ------ {yielding[],signal<>} =ty=> {true<>} # (10) ------ {yield()} ~> {yield-on-value(null-value)} {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {yield-on-value(Xs)} -> {yield-on-value(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {signal} ~>* {_Y1} {values,V} =ty=>* {true<>} (10) ------ {yield-on-value(V),yielded = #} -> {V,yielded = _Y1} with seq-variable(V,1,1,LONGEST) {values,V} =ty=>* {true<>} (10) ------ {yield-on-abrupt(V)} ~> {V} with seq-variable(V,1,1,LONGEST) {X} ~>* {_Y1} {_Y1,abrupt = #,yielded = #} -> {_Y3} {_Y3} ->* {X',abrupt = V,yielded = _Y2} {V} ~>* {_Y4} {signal} ~>* {_Y5} {values,V} =ty=>* {true<>} (10) ------ {yield-on-abrupt(X),yielded = #,abrupt = #} -> {yield-on-abrupt(X'),yielded = _Y5,abrupt = _Y4} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,1,LONGEST) seq-variable(V,1,1,LONGEST) seq-variable(_Y1,0,#,LONGEST) {X} ~>* {_Y1} {_Y1,abrupt = #} -> {_Y2} {_Y2} ->* {X',abrupt = #} (10) ------ {yield-on-abrupt(X),abrupt = #} -> {yield-on-abrupt(X'),abrupt = #} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) # (10) ------ {locations()} ~> {atoms} # (10) ------ {locs()} ~> {atoms} # (10) ------ {stores()} ~> {maps(locations,tyopt(values))} {map} ~>* {_Y2} (10) ------ {store-clear(),store = _Y1} -> {null-value,store = _Y2} # (10) ------ {initialise-storing(X)} ~> {sequential(store-clear,initialise-giving(initialise-generating(X)))} # (10) ------ {init-storing(X)} ~> {sequential(store-clear,initialise-giving(initialise-generating(X)))} # (10) ------ {variables()} ~> {variables[]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {variables(_Y1)} -> {variables(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) # (10) ------ {vars()} ~> {vars[]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {vars(_Y1)} -> {vars(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_X1,_X2} {tyopt(values),_X1} =ty=>* {true<>} {tyopt(values),_X2} =ty=>* {true<>} (10) ------ {variable(_Y1)} ~> {datatype-value("variable",_X1,_X2)} with seq-variable(_Y1,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {variable(Xs)} -> {variable(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {_X1,_X2} {tyopt(values),_X1} =ty=>* {true<>} {tyopt(values),_X2} =ty=>* {true<>} (10) ------ {var(_Y1)} ~> {datatype-value("variable",_X1,_X2)} with seq-variable(_Y1,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {var(Xs)} -> {variable(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {locations,_Y1} =ty=>* {true<>} {value-types,_Y2} =ty=>* {true<>} (10) ------ {variables[],variable<_Y1,_Y2>} =ty=> {true<>} {locations,_Y1} =ty=>* {true<>} {value-types,_Y2} =ty=>* {true<>} (10) ------ {vars[],variable<_Y1,_Y2>} =ty=> {true<>} {locations,_Y1} =ty=>* {true<>} {value-types,_Y2} =ty=>* {true<>} (10) ------ {variables[],var<_Y1,_Y2>} =ty=> {true<>} {locations,_Y1} =ty=>* {true<>} {value-types,_Y2} =ty=>* {true<>} (10) ------ {vars[],var<_Y1,_Y2>} =ty=> {true<>} {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {allocate-variable(Xs)} -> {allocate-variable(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {Sigma} ~>* {_Y2} {types,T} =ty=>* {true<>} {use-atom-not-in(dom(Sigma))} ~>* {_Y1} {_Y1,store = _Y2} -> {_Y3} {_Y3} ->* {L,store = Sigma'} {map-override(map(tuple(L)),Sigma')} ~>* {Sigma''} {Sigma''} ~>* {_Y4} (10) ------ {allocate-variable(T),store = Sigma} -> {variable(L,T),store = _Y4} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(T,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {alloc(Xs)} -> {allocate-variable(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {Sigma} ~>* {_Y2} {types,T} =ty=>* {true<>} {use-atom-not-in(dom(Sigma))} ~>* {_Y1} {_Y1,store = _Y2} -> {_Y3} {_Y3} ->* {L,store = Sigma'} {map-override(map(tuple(L)),Sigma')} ~>* {Sigma''} {Sigma''} ~>* {_Y4} (10) ------ {alloc(T),store = Sigma} -> {variable(L,T),store = _Y4} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(T,1,1,LONGEST) {_Y1} ~>* {Var,Varp} {typlus(variables),Varp} =ty=>* {true<>} {variables,Var} =ty=>* {true<>} (10) ------ {recycle-variables(_Y1)} ~> {sequential(recycle-variables(Var),recycle-variables(Varp))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Varp,1,#,LONGEST) seq-variable(Var,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {recycle-variables(Xs)} -> {recycle-variables(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {variable} {is-in-set(L,dom(Sigma))} ~>* {true<>} {map-delete(Sigma,set(L))} ~>* {_Y2} (10) ------ {recycle-variables(_Y1),store = Sigma} -> {null-value,store = _Y2} with seq-variable(T,1,1,LONGEST) seq-variable(L,1,1,LONGEST) {Sigma} ~>* {_Y2} {_Y1} ~>* {variable} {is-in-set(L,dom(Sigma))} ~>* {false<>} (10) ------ {recycle-variables(_Y1),store = Sigma} -> {fail,store = _Y2} with seq-variable(T,1,1,LONGEST) seq-variable(L,1,1,LONGEST) {_Y1} ~>* {Var,Varp} {typlus(variables),Varp} =ty=>* {true<>} {variables,Var} =ty=>* {true<>} (10) ------ {recycle(_Y1)} ~> {sequential(recycle-variables(Var),recycle-variables(Varp))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Varp,1,#,LONGEST) seq-variable(Var,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {recycle(Xs)} -> {recycle-variables(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {variable} {is-in-set(L,dom(Sigma))} ~>* {true<>} {map-delete(Sigma,set(L))} ~>* {_Y2} (10) ------ {recycle(_Y1),store = Sigma} -> {null-value,store = _Y2} with seq-variable(T,1,1,LONGEST) seq-variable(L,1,1,LONGEST) {Sigma} ~>* {_Y2} {_Y1} ~>* {variable} {is-in-set(L,dom(Sigma))} ~>* {false<>} (10) ------ {recycle(_Y1),store = Sigma} -> {fail,store = _Y2} with seq-variable(T,1,1,LONGEST) seq-variable(L,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {initialise-variable(Xs)} -> {initialise-variable(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {variable} {and(is-in-set(L,dom(Sigma)),not(is-value(map-lookup(Sigma,L))),is-in-type(Val,T))} ~>* {true<>} {map-override(map(tuple(L,Val)),Sigma)} ~>* {_Y2} {values,Val} =ty=>* {true<>} (10) ------ {initialise-variable(_Y1,Val),store = Sigma} -> {null-value,store = _Y2} with seq-variable(Val,1,1,LONGEST) seq-variable(T,1,1,LONGEST) seq-variable(L,1,1,LONGEST) {Sigma} ~>* {_Y2} {_Y1} ~>* {variable} {and(is-in-set(L,dom(Sigma)),not(is-value(map-lookup(Sigma,L))),is-in-type(Val,T))} ~>* {false<>} {values,Val} =ty=>* {true<>} (10) ------ {initialise-variable(_Y1,Val),store = Sigma} -> {fail,store = _Y2} with seq-variable(Val,1,1,LONGEST) seq-variable(T,1,1,LONGEST) seq-variable(L,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {init(Xs)} -> {initialise-variable(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {variable} {and(is-in-set(L,dom(Sigma)),not(is-value(map-lookup(Sigma,L))),is-in-type(Val,T))} ~>* {true<>} {map-override(map(tuple(L,Val)),Sigma)} ~>* {_Y2} {values,Val} =ty=>* {true<>} (10) ------ {init(_Y1,Val),store = Sigma} -> {null-value,store = _Y2} with seq-variable(Val,1,1,LONGEST) seq-variable(T,1,1,LONGEST) seq-variable(L,1,1,LONGEST) {Sigma} ~>* {_Y2} {_Y1} ~>* {variable} {and(is-in-set(L,dom(Sigma)),not(is-value(map-lookup(Sigma,L))),is-in-type(Val,T))} ~>* {false<>} {values,Val} =ty=>* {true<>} (10) ------ {init(_Y1,Val),store = Sigma} -> {fail,store = _Y2} with seq-variable(Val,1,1,LONGEST) seq-variable(T,1,1,LONGEST) seq-variable(L,1,1,LONGEST) {T,Val} =ty=>* {true<>} (10) ------ {allocate-initialised-variable(T,Val)} ~> {give(allocate-variable(T),sequential(initialise-variable(given,Val),given))} with seq-variable(Val,1,1,LONGEST) {X2} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X2'} (10) ------ {allocate-initialised-variable(X1,X2)} -> {allocate-initialised-variable(X1,X2')} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {T,Val} =ty=>* {true<>} (10) ------ {alloc-init(T,Val)} ~> {give(allocate-variable(T),sequential(initialise-variable(given,Val),given))} with seq-variable(Val,1,1,LONGEST) {X2} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X2'} (10) ------ {alloc-init(X1,X2)} -> {allocate-initialised-variable(X1,X2')} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {assign(Xs)} -> {assign(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {variable} {and(is-in-set(L,dom(Sigma)),is-in-type(Val,T))} ~>* {true<>} {map-override(map(tuple(L,Val)),Sigma)} ~>* {_Y2} {values,Val} =ty=>* {true<>} (10) ------ {assign(_Y1,Val),store = Sigma} -> {null-value,store = _Y2} with seq-variable(Val,1,1,LONGEST) seq-variable(T,1,1,LONGEST) seq-variable(L,1,1,LONGEST) {Sigma} ~>* {_Y2} {_Y1} ~>* {variable} {and(is-in-set(L,dom(Sigma)),is-in-type(Val,T))} ~>* {false<>} {values,Val} =ty=>* {true<>} (10) ------ {assign(_Y1,Val),store = Sigma} -> {fail,store = _Y2} with seq-variable(Val,1,1,LONGEST) seq-variable(T,1,1,LONGEST) seq-variable(L,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {assigned(Xs)} -> {assigned(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {Sigma} ~>* {_Y2} {_Y1} ~>* {variable} {map-lookup(Sigma,L)} ~>* {Val} {values,Val} =ty=>* {true<>} (10) ------ {assigned(_Y1),store = Sigma} -> {Val,store = _Y2} with seq-variable(Val,1,1,LONGEST) seq-variable(T,1,1,LONGEST) seq-variable(L,1,1,LONGEST) {Sigma} ~>* {_Y2} {_Y1} ~>* {variable} {map-lookup(Sigma,L)} ~>* {#} (10) ------ {assigned(_Y1),store = Sigma} -> {fail,store = _Y2} with seq-variable(T,1,1,LONGEST) seq-variable(L,1,1,LONGEST) {_Y1} ~>* {Var} {variables,Var} =ty=>* {true<>} (10) ------ {current-value(_Y1)} ~> {assigned(Var)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Var,1,1,LONGEST) {_Y1} ~>* {U} {tyneg(variables),U} =ty=>* {true<>} (10) ------ {current-value(_Y1)} ~> {U} with seq-variable(_Y1,0,#,LONGEST) seq-variable(U,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {current-value(Xs)} -> {current-value(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {un-assign(Xs)} -> {un-assign(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {variable} {is-in-set(L,dom(Sigma))} ~>* {true<>} {map-override(map(tuple(L)),Sigma)} ~>* {_Y2} (10) ------ {un-assign(_Y1),store = Sigma} -> {null-value,store = _Y2} with seq-variable(T,1,1,LONGEST) seq-variable(L,1,1,LONGEST) {Sigma} ~>* {_Y2} {_Y1} ~>* {variable} {is-in-set(L,dom(Sigma))} ~>* {false<>} (10) ------ {un-assign(_Y1),store = Sigma} -> {fail,store = _Y2} with seq-variable(T,1,1,LONGEST) seq-variable(L,1,1,LONGEST) {_Y1} ~>* {V1,V2} {values,V2} =ty=>* {true<>} {variables,V1} =ty=>* {true<>} (10) ------ {structural-assign(_Y1)} ~> {assign(V1,V2)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(V2,1,1,LONGEST) seq-variable(V1,1,1,LONGEST) {_Y1} ~>* {V1,V2} {V1} ~>* {_Y2} {V2} ~>* {_Y4} {_Y2} ~>* {_Y3} {_Y4} ~>* {_Y5} {datatype-values,V1} =ty=>* {true<>} {datatype-values,V2} =ty=>* {true<>} {list-elements(adt-fields(_Y3))} ~>* {V1s} {list-elements(adt-fields(_Y5))} ~>* {V2s} {tystar(values),V1s} =ty=>* {true<>} {tystar(values),V2s} =ty=>* {true<>} {tystar(values),_Y3} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} {variables,V1} =ty=>* {false<>} {_adt-constructor(_Y3)} ~>* {I1} {_adt-constructor(_Y5)} ~>* {I2} (10) ------ {structural-assign(_Y1)} ~> {sequential(check-true(is-equal(I1,I2)),effect(tuple(interleave-map(structural-assign(tuple-elements(given)),tuple-zip(tuple(V1s),tuple(V2s))))),null-value)} with seq-variable(V2s,0,#,LONGEST) seq-variable(I2,1,1,LONGEST) seq-variable(V1s,0,#,LONGEST) seq-variable(I1,1,1,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(V2,1,1,LONGEST) seq-variable(V1,1,1,LONGEST) {_Y1} ~>* {M1,M2} {dom(M1)} ~>* {_Y2} {maps(tyopt(values),tyopt(values)),M1} =ty=>* {true<>} {maps(tyopt(values),tyopt(values)),M2} =ty=>* {true<>} {set} ~>* {_Y3} {tystar(values),_Y2} =ty=>* {true<>} {tystar(values),_Y3} =ty=>* {true<>} _is-equal(_Y2,_Y3) |> true<> (10) ------ {structural-assign(_Y1)} ~> {check-true(is-equal(dom(M2),set))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(M2,1,1,LONGEST) seq-variable(M1,1,1,LONGEST) {_Y1} ~>* {M1,M2} {maps(tyopt(values),tyopt(values)),M1} =ty=>* {true<>} {maps(tyopt(values),tyopt(values)),M2} =ty=>* {true<>} {some-element(dom(M1))} ~>* {K} (10) ------ {structural-assign(_Y1)} ~> {sequential(check-true(is-in-set(K,dom(M2))),structural-assign(map-lookup(M1,K),map-lookup(M2,K)),structural-assign(map-delete(M1,set(K)),map-delete(M2,set(K))))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(M2,1,1,LONGEST) seq-variable(M1,1,1,LONGEST) {_Y1} ~>* {V1,V2} {tyunion(datatype-values,maps(tyopt(values),tyopt(values))),V1} =ty=>* {false<>} {values,V1} =ty=>* {true<>} {values,V2} =ty=>* {true<>} (10) ------ {structural-assign(_Y1)} ~> {check-true(is-equal(V1,V2))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(V2,1,1,LONGEST) seq-variable(V1,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {structural-assign(Xs)} -> {structural-assign(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {Var} {variables,Var} =ty=>* {true<>} (10) ------ {structural-assigned(_Y1)} ~> {assigned(Var)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Var,1,1,LONGEST) {_Y1} ~>* {V} {V} ~>* {_Y2} {_Y2} ~>* {_Y3} {datatype-values,V} =ty=>* {true<>} {list-elements(adt-fields(_Y3))} ~>* {Vs} {tystar(values),Vs} =ty=>* {true<>} {tystar(values),_Y3} =ty=>* {true<>} {variables,V} =ty=>* {false<>} {_adt-constructor(_Y3)} ~>* {I} (10) ------ {structural-assigned(_Y1)} ~> {datatype-value(I,interleave-map(structural-assigned(given),Vs))} with seq-variable(Vs,0,#,LONGEST) seq-variable(I,1,1,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {_Y1} ~>* {M} {maps(tyopt(values),tyopt(values)),M} =ty=>* {true<>} (10) ------ {structural-assigned(_Y1)} ~> {map(interleave-map(structural-assigned(given),map-elements(M)))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(M,1,1,LONGEST) {_Y1} ~>* {U} {tyunion(datatype-values,maps(tyopt(values),tyopt(values))),U} =ty=>* {false<>} {values,U} =ty=>* {true<>} (10) ------ {structural-assigned(_Y1)} ~> {U} with seq-variable(_Y1,0,#,LONGEST) seq-variable(U,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {structural-assigned(Xs)} -> {structural-assigned(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) # (10) ------ {links()} ~> {links[]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {links(_Y1)} -> {links(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_X1} {tyopt(values),_X1} =ty=>* {true<>} (10) ------ {link(_Y1)} ~> {datatype-value("link",_X1)} with seq-variable(_Y1,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {link(Xs)} -> {link(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {variables,_Y1} =ty=>* {true<>} (10) ------ {links[],link<_Y1>} =ty=> {true<>} # (10) ------ {initialise-linking(X)} ~> {initialise-storing(X)} # (10) ------ {fresh-link(T)} ~> {link(allocate-variable(T))} {T,V} =ty=>* {true<>} (10) ------ {fresh-initialised-link(T,V)} ~> {link(allocate-initialised-variable(T,V))} with seq-variable(V,1,1,LONGEST) {X2} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X2'} (10) ------ {fresh-initialised-link(X1,X2)} -> {fresh-initialised-link(X1,X2')} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {T,V} =ty=>* {true<>} (10) ------ {fresh-init-link(T,V)} ~> {link(allocate-initialised-variable(T,V))} with seq-variable(V,1,1,LONGEST) {X2} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X2'} (10) ------ {fresh-init-link(X1,X2)} -> {fresh-initialised-link(X1,X2')} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1,V} {_Y1} ~>* {link} {values,V} =ty=>* {true<>} (10) ------ {set-link(_Y2)} ~> {initialise-variable(Var,V)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(V,1,1,LONGEST) seq-variable(Var,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {set-link(Xs)} -> {set-link(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {link} (10) ------ {follow-link(_Y2)} ~> {assigned(Var)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(Var,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {follow-link(Xs)} -> {follow-link(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {link} (10) ------ {follow-if-link(_Y2)} ~> {assigned(Var)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(Var,1,1,LONGEST) {_Y1} ~>* {V} {tyneg(links),V} =ty=>* {true<>} (10) ------ {follow-if-link(_Y1)} ~> {V} with seq-variable(_Y1,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {follow-if-link(Xs)} -> {follow-if-link(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) # (10) ------ {initialise-giving(X)} ~> {no-given(X)} {values,W} =ty=>* {true<>} {values,_Y1} =ty=>* {true<>} (10) ------ {give(_Y1,W)} ~> {W} with seq-variable(W,1,1,LONGEST) seq-variable(_Y1,1,1,LONGEST) {X1} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X1'} (10) ------ {give(X1,X2)} -> {give(X1',X2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {V} ~>* {_Y4} {Y} ~>* {_Y3} {_Y1} ~>* {_Y2} {_Y3,given-value = _Y4} -> {_Y5} {_Y5} ->* {Y'} {values,V} =ty=>* {true<>} (10) ------ {give(V,Y),given-value = _Y1} -> {give(V,Y'),given-value = _Y1} with seq-variable(_Y5,0,#,LONGEST) seq-variable(_Y4,0,#,LONGEST) seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,1,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {_Y1} ~>* {V} {values,V} =ty=>* {true<>} (10) ------ {given(),given-value = _Y1} -> {V,given-value = _Y1} with seq-variable(V,1,1,LONGEST) seq-variable(_Y1,0,#,LONGEST) # (10) ------ {given(),given-value = #} -> {fail,given-value = #} {values,U} =ty=>* {true<>} (10) ------ {no-given(U)} ~> {U} with seq-variable(U,1,1,LONGEST) {#} ~>* {_Y4} {X} ~>* {_Y3} {_Y1} ~>* {_Y2} {_Y3,given-value = _Y4} -> {_Y5} {_Y5} ->* {X'} (10) ------ {no-given(X),given-value = _Y1} -> {no-given(X'),given-value = _Y1} with seq-variable(_Y5,0,#,LONGEST) seq-variable(_Y4,0,#,LONGEST) seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,1,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {V,Vs} {tystar(values),Vs} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {left-to-right-map(F,_Y1)} ~> {left-to-right(give(V,F),left-to-right-map(F,Vs))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {_Y2} ~>* {#} (10) ------ {left-to-right-map(_Y1,_Y2)} ~> {#} with seq-variable(_Y2,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {left-to-right-map(X1,Xs)} -> {left-to-right-map(X1,Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {V,Vs} {tystar(values),Vs} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {interleave-map(F,_Y1)} ~> {interleave(give(V,F),interleave-map(F,Vs))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {_Y2} ~>* {#} (10) ------ {interleave-map(_Y1,_Y2)} ~> {#} with seq-variable(_Y2,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {interleave-map(X1,Xs)} -> {interleave-map(X1,Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {integers,M} =ty=>* {true<>} {integers,N} =ty=>* {true<>} {is-less-or-equal(M,N)} ~>* {true<>} (10) ------ {left-to-right-repeat(F,M,N)} ~> {left-to-right(give(M,F),left-to-right-repeat(F,int-add(M,1),N))} with seq-variable(N,1,1,LONGEST) seq-variable(M,1,1,LONGEST) {integers,M} =ty=>* {true<>} {integers,N} =ty=>* {true<>} {is-less-or-equal(M,N)} ~>* {false<>} (10) ------ {left-to-right-repeat(_Y1,M,N)} ~> {#} with seq-variable(N,1,1,LONGEST) seq-variable(M,1,1,LONGEST) {X2} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X2'} (10) ------ {left-to-right-repeat(X1,X2,X3)} -> {left-to-right-repeat(X1,X2',X3)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {X3} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X3'} {values,X2} =ty=>* {true<>} (10) ------ {left-to-right-repeat(X1,X2,X3)} -> {left-to-right-repeat(X1,X2,X3')} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(X2,1,1,LONGEST) {integers,M} =ty=>* {true<>} {integers,N} =ty=>* {true<>} {is-less-or-equal(M,N)} ~>* {true<>} (10) ------ {interleave-repeat(F,M,N)} ~> {interleave(give(M,F),interleave-repeat(F,int-add(M,1),N))} with seq-variable(N,1,1,LONGEST) seq-variable(M,1,1,LONGEST) {integers,M} =ty=>* {true<>} {integers,N} =ty=>* {true<>} {is-less-or-equal(M,N)} ~>* {false<>} (10) ------ {interleave-repeat(_Y1,M,N)} ~> {#} with seq-variable(N,1,1,LONGEST) seq-variable(M,1,1,LONGEST) {X2} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X2'} (10) ------ {interleave-repeat(X1,X2,X3)} -> {interleave-repeat(X1,X2',X3)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {X3} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X3'} {values,X2} =ty=>* {true<>} (10) ------ {interleave-repeat(X1,X2,X3)} -> {interleave-repeat(X1,X2,X3')} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(X2,1,1,LONGEST) {_Y1} ~>* {V,Vs} {tystar(values),Vs} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {left-to-right-filter(P,_Y1)} ~> {left-to-right(when-true(give(V,P),V),left-to-right-filter(P,Vs))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {_Y2} ~>* {#} (10) ------ {left-to-right-filter(_Y1,_Y2)} ~> {#} with seq-variable(_Y2,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {left-to-right-filter(X1,Xs)} -> {left-to-right-filter(X1,Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {V,Vs} {tystar(values),Vs} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {interleave-filter(P,_Y1)} ~> {interleave(when-true(give(V,P),V),interleave-filter(P,Vs))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {_Y2} ~>* {#} (10) ------ {interleave-filter(_Y1,_Y2)} ~> {#} with seq-variable(_Y2,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {interleave-filter(X1,Xs)} -> {interleave-filter(X1,Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y2} ~>* {#} {values,A} =ty=>* {true<>} (10) ------ {fold-left(_Y1,A,_Y2)} ~> {A} with seq-variable(_Y2,0,#,LONGEST) seq-variable(A,1,1,LONGEST) {_Y1} ~>* {V,Vs} {tystar(values),Vs} =ty=>* {true<>} {values,A} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {fold-left(F,A,_Y1)} ~> {fold-left(F,give(tuple(A,V),F),Vs)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(V,1,1,LONGEST) seq-variable(A,1,1,LONGEST) {X2} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X2'} (10) ------ {fold-left(X1,X2,Xs)} -> {fold-left(X1,X2',Xs)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} {tyopt(values),X2} =ty=>* {true<>} (10) ------ {fold-left(X1,X2,Xs)} -> {fold-left(X1,X2,Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y2} ~>* {#} {values,A} =ty=>* {true<>} (10) ------ {fold-right(_Y1,A,_Y2)} ~> {A} with seq-variable(_Y2,0,#,LONGEST) seq-variable(A,1,1,LONGEST) {_Y1} ~>* {Vs,V} {tystar(values),Vs} =ty=>* {true<>} {values,A} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {fold-right(F,A,_Y1)} ~> {give(tuple(V,fold-right(F,A,Vs)),F)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(V,1,1,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(A,1,1,LONGEST) {X2} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X2'} (10) ------ {fold-right(X1,X2,Xs)} -> {fold-right(X1,X2',Xs)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} {tyopt(values),X2} =ty=>* {true<>} (10) ------ {fold-right(X1,X2,Xs)} -> {fold-right(X1,X2,Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {element-not-in(atoms,SA)} ~>* {A} {set-insert(A,SA)} ~>* {_Y1} (10) ------ {fresh-atom(),used-atom-set = SA} -> {A,used-atom-set = _Y1} {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {use-atom-not-in(Xs)} -> {use-atom-not-in(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {element-not-in(atoms,SA)} ~>* {A} {set-insert(A,SA')} ~>* {_Y1} {sets(atoms),SA} =ty=>* {true<>} (10) ------ {use-atom-not-in(SA),used-atom-set = SA'} -> {A,used-atom-set = _Y1} with seq-variable(SA,1,1,LONGEST) # (10) ------ {initialise-generating(P),used-atom-set = _} -> {P,used-atom-set = _set} # (10) ------ {environments()} ~> {maps(identifiers,tyopt(values))} # (10) ------ {envs()} ~> {maps(identifiers,tyopt(values))} {strings,_Y1} =ty=>* {true<>} (10) ------ {identifiers[],_Y1} =ty=> {true<>} # (10) ------ {identifiers()} ~> {identifiers[]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {identifiers(_Y1)} -> {identifiers(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {strings,_Y1} =ty=>* {true<>} (10) ------ {ids[],_Y1} =ty=> {true<>} # (10) ------ {ids()} ~> {ids[]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {ids(_Y1)} -> {ids(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_X1,_X2} {tyopt(values),_X1} =ty=>* {true<>} {tyopt(values),_X2} =ty=>* {true<>} (10) ------ {identifier-tagged(_Y1)} ~> {datatype-value("identifier-tagged",_X1,_X2)} with seq-variable(_Y1,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {identifier-tagged(Xs)} -> {identifier-tagged(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {_X1,_X2} {tyopt(values),_X1} =ty=>* {true<>} {tyopt(values),_X2} =ty=>* {true<>} (10) ------ {id-tagged(_Y1)} ~> {datatype-value("identifier-tagged",_X1,_X2)} with seq-variable(_Y1,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {id-tagged(Xs)} -> {identifier-tagged(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {identifiers,_Y1} =ty=>* {true<>} {values,_Y2} =ty=>* {true<>} (10) ------ {identifiers[],identifier-tagged<_Y1,_Y2>} =ty=> {true<>} {identifiers,_Y1} =ty=>* {true<>} {values,_Y2} =ty=>* {true<>} (10) ------ {ids[],identifier-tagged<_Y1,_Y2>} =ty=> {true<>} {identifiers,_Y1} =ty=>* {true<>} {values,_Y2} =ty=>* {true<>} (10) ------ {identifiers[],id-tagged<_Y1,_Y2>} =ty=> {true<>} {identifiers,_Y1} =ty=>* {true<>} {values,_Y2} =ty=>* {true<>} (10) ------ {ids[],id-tagged<_Y1,_Y2>} =ty=> {true<>} # (10) ------ {fresh-identifier()} ~> {identifier-tagged("generated",fresh-atom)} # (10) ------ {initialise-binding(X)} ~> {initialise-linking(initialise-generating(closed(X)))} {_Y1} ~>* {I,V} {identifiers,I} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {bind-value(_Y1)} ~> {map(tuple(I,V))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(V,1,1,LONGEST) seq-variable(I,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {bind-value(Xs)} -> {bind-value(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {I,V} {identifiers,I} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {bind(_Y1)} ~> {map(tuple(I,V))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(V,1,1,LONGEST) seq-variable(I,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {bind(Xs)} -> {bind-value(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {I} {identifiers,I} =ty=>* {true<>} (10) ------ {unbind(_Y1)} ~> {map(tuple(I))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(I,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {unbind(Xs)} -> {unbind(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {bound-directly(Xs)} -> {bound-directly(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {identifiers,I} =ty=>* {true<>} {lookup(Rho,I)} ~>* {V} {values,V} =ty=>* {true<>} (10) ------ {bound-directly(I),environment = Rho} -> {V,environment = Rho} with seq-variable(V,1,1,LONGEST) seq-variable(I,1,1,LONGEST) {identifiers,I} =ty=>* {true<>} {lookup(Rho,I)} ~>* {#} (10) ------ {bound-directly(I),environment = Rho} -> {fail,environment = Rho} with seq-variable(I,1,1,LONGEST) {_Y1} ~>* {I} {identifiers,I} =ty=>* {true<>} (10) ------ {bound-value(_Y1)} ~> {follow-if-link(bound-directly(I))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(I,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {bound-value(Xs)} -> {bound-value(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {I} {identifiers,I} =ty=>* {true<>} (10) ------ {bound(_Y1)} ~> {follow-if-link(bound-directly(I))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(I,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {bound(Xs)} -> {bound-value(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {values,V} =ty=>* {true<>} (10) ------ {closed(V)} ~> {V} with seq-variable(V,1,1,LONGEST) {X} ~>* {_Y2} {map} ~>* {_Y3} {_Y2,environment = _Y3} -> {_Y4} {_Y4} ->* {X'} (10) ------ {closed(X),environment = _Y1} -> {closed(X'),environment = _Y1} with seq-variable(_Y4,0,#,LONGEST) seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) {environments,_Y1} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {scope(_Y1,V)} ~> {V} with seq-variable(V,1,1,LONGEST) seq-variable(_Y1,1,1,LONGEST) {X1} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X1'} (10) ------ {scope(X1,X2)} -> {scope(X1',X2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {X} ~>* {_Y1} {environments,Rho1} =ty=>* {true<>} {map-override(Rho1,Rho0)} ~>* {_Y2} {_Y1,environment = _Y2} -> {_Y3} {_Y3} ->* {X'} (10) ------ {scope(Rho1,X),environment = Rho0} -> {scope(Rho1,X'),environment = Rho0} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Rho1,1,1,LONGEST) {environments,Rho1} =ty=>* {true<>} (10) ------ {accumulate(Rho1,D2)} ~> {scope(Rho1,map-override(D2,Rho1))} with seq-variable(Rho1,1,1,LONGEST) # (10) ------ {accumulate()} ~> {map} # (10) ------ {accumulate(D1)} ~> {D1} # (10) ------ {accumulate(D1,D2,Dp)} ~> {accumulate(D1,accumulate(D2,Dp))} with seq-variable(Dp,1,#,LONGEST) {D1} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {D1'} (10) ------ {accumulate(D1,D2)} -> {accumulate(D1',D2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {Rhos} {tystar(environments),Rhos} =ty=>* {true<>} (10) ------ {collateral(_Y1)} ~> {checked(map-unite(Rhos))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Rhos,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {collateral(Xs)} -> {collateral(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {identifiers,I} =ty=>* {true<>} (10) ------ {bind-recursively(I,E)} ~> {recursive(set(I),bind-value(I,E))} with seq-variable(I,1,1,LONGEST) {X1} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X1'} (10) ------ {bind-recursively(X1,X2)} -> {bind-recursively(X1',X2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {sets(identifiers),SI} =ty=>* {true<>} (10) ------ {recursive(SI,D)} ~> {re-close(bind-to-forward-links(SI),D)} with seq-variable(SI,1,1,LONGEST) {X1} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X1'} (10) ------ {recursive(X1,X2)} -> {recursive(X1',X2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {maps(identifiers,links),M} =ty=>* {true<>} (10) ------ {re-close(M,D)} ~> {accumulate(scope(M,D),sequential(set-forward-links(M),map))} with seq-variable(M,1,1,LONGEST) {X1} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X1'} (10) ------ {re-close(X1,X2)} -> {re-close(X1',X2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {SI} {sets(identifiers),SI} =ty=>* {true<>} (10) ------ {bind-to-forward-links(_Y1)} ~> {map-unite(interleave-map(bind-value(given,fresh-link(values)),set-elements(SI)))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(SI,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {bind-to-forward-links(Xs)} -> {bind-to-forward-links(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {M} {maps(identifiers,links),M} =ty=>* {true<>} (10) ------ {set-forward-links(_Y1)} ~> {effect(interleave-map(set-link(map-lookup(M,given),bound-value(given)),set-elements(map-domain(M))))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(M,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {set-forward-links(Xs)} -> {set-forward-links(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) # (10) ------ {finalise-abrupting(X)} ~> {handle-abrupt(X,null-value)} {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {abrupt(Xs)} -> {abrupt(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {V} ~>* {_Y1} {values,V} =ty=>* {true<>} (10) ------ {abrupt(V),abrupted = #} -> {stuck,abrupted = _Y1} with seq-variable(V,1,1,LONGEST) {values,V} =ty=>* {true<>} (10) ------ {handle-abrupt(V,Y)} ~> {V} with seq-variable(V,1,1,LONGEST) {X} ~>* {_Y1} {_Y1,abrupted = #} -> {_Y2} {_Y2} ->* {X',abrupted = #} (10) ------ {handle-abrupt(X,Y),abrupted = #} -> {handle-abrupt(X',Y),abrupted = #} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {X} ~>* {_Y1} {_Y1,abrupted = #} -> {_Y2} {_Y2} ->* {X',abrupted = V} {values,V} =ty=>* {true<>} (10) ------ {handle-abrupt(X,Y),abrupted = #} -> {give(V,Y),abrupted = #} with seq-variable(_Y2,0,#,LONGEST) seq-variable(V,1,1,LONGEST) seq-variable(_Y1,0,#,LONGEST) {values,V} =ty=>* {true<>} (10) ------ {finally(V,Y)} ~> {sequential(Y,V)} with seq-variable(V,1,1,LONGEST) {X} ~>* {_Y1} {_Y1,abrupted = #} -> {_Y2} {_Y2} ->* {X',abrupted = #} (10) ------ {finally(X,Y),abrupted = #} -> {finally(X',Y),abrupted = #} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {X} ~>* {_Y1} {_Y1,abrupted = #} -> {_Y2} {_Y2} ->* {X',abrupted = V} {values,V} =ty=>* {true<>} (10) ------ {finally(X,Y),abrupted = #} -> {sequential(Y,abrupt(V)),abrupted = #} with seq-variable(_Y2,0,#,LONGEST) seq-variable(V,1,1,LONGEST) seq-variable(_Y1,0,#,LONGEST) # (10) ------ {returning()} ~> {returning[]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {returning(_Y1)} -> {returning(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_X1} {tyopt(values),_X1} =ty=>* {true<>} (10) ------ {returned(_Y1)} ~> {datatype-value("returned",_X1)} with seq-variable(_Y1,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {returned(Xs)} -> {returned(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {values,_Y1} =ty=>* {true<>} (10) ------ {returning[],returned<_Y1>} =ty=> {true<>} # (10) ------ {finalise-returning(X)} ~> {finalise-abrupting(X)} {_Y1} ~>* {V} {values,V} =ty=>* {true<>} (10) ------ {return(_Y1)} ~> {abrupt(returned(V))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {return(Xs)} -> {return(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {values,V} =ty=>* {true<>} (10) ------ {handle-return(V)} ~> {V} with seq-variable(V,1,1,LONGEST) {X} ~>* {_Y1} {_Y1,abrupted = #} -> {_Y2} {_Y2} ->* {X',abrupted = #} (10) ------ {handle-return(X),abrupted = #} -> {handle-return(X'),abrupted = #} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {X} ~>* {_Y1} {_Y1,abrupted = #} -> {_Y3} {_Y3} ->* {X',abrupted = _Y2} {_Y2} ~>* {returned} (10) ------ {handle-return(X),abrupted = #} -> {V,abrupted = #} with seq-variable(_Y3,0,#,LONGEST) seq-variable(V,1,1,LONGEST) seq-variable(_Y1,0,#,LONGEST) {X} ~>* {_Y1} {_Y1,abrupted = #} -> {_Y2} {_Y2} ->* {X',abrupted = V'} {V'} ~>* {_Y3} {tyneg(returning),V'} =ty=>* {true<>} (10) ------ {handle-return(X),abrupted = #} -> {handle-return(X'),abrupted = _Y3} with seq-variable(_Y2,0,#,LONGEST) seq-variable(V',1,1,LONGEST) seq-variable(_Y1,0,#,LONGEST) # (10) ------ {throwing()} ~> {throwing[]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {throwing(_Y1)} -> {throwing(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_X1} {tyopt(values),_X1} =ty=>* {true<>} (10) ------ {thrown(_Y1)} ~> {datatype-value("thrown",_X1)} with seq-variable(_Y1,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {thrown(Xs)} -> {thrown(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {values,_Y1} =ty=>* {true<>} (10) ------ {throwing[],thrown<_Y1>} =ty=> {true<>} # (10) ------ {finalise-throwing(X)} ~> {finalise-abrupting(X)} {_Y1} ~>* {V} {values,V} =ty=>* {true<>} (10) ------ {throw(_Y1)} ~> {abrupt(thrown(V))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {throw(Xs)} -> {throw(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {values,V} =ty=>* {true<>} (10) ------ {handle-thrown(V,Y)} ~> {V} with seq-variable(V,1,1,LONGEST) {X} ~>* {_Y1} {_Y1,abrupted = #} -> {_Y2} {_Y2} ->* {X',abrupted = #} (10) ------ {handle-thrown(X,Y),abrupted = #} -> {handle-thrown(X',Y),abrupted = #} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {X} ~>* {_Y1} {_Y1,abrupted = #} -> {_Y3} {_Y3} ->* {X',abrupted = _Y2} {_Y2} ~>* {thrown} (10) ------ {handle-thrown(X,Y),abrupted = #} -> {give(V'',Y),abrupted = #} with seq-variable(_Y3,0,#,LONGEST) seq-variable(V'',1,1,LONGEST) seq-variable(_Y1,0,#,LONGEST) {X} ~>* {_Y1} {_Y1,abrupted = #} -> {_Y2} {_Y2} ->* {X',abrupted = V'} {V'} ~>* {_Y3} {tyneg(throwing),V'} =ty=>* {true<>} (10) ------ {handle-thrown(X,Y),abrupted = #} -> {handle-thrown(X',Y),abrupted = _Y3} with seq-variable(_Y2,0,#,LONGEST) seq-variable(V',1,1,LONGEST) seq-variable(_Y1,0,#,LONGEST) # (10) ------ {handle-recursively(X,Y)} ~> {handle-thrown(X,else(handle-recursively(Y,Y),throw(given)))} {values,P} =ty=>* {true<>} (10) ------ {catch-else-throw(P,Y)} ~> {else(case-match(P,Y),throw(given))} with seq-variable(P,1,1,LONGEST) {X1} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X1'} (10) ------ {catch-else-throw(X1,X2)} -> {catch-else-throw(X1',X2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) # (10) ------ {failing()} ~> {failing[]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {failing(_Y1)} -> {failing(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) # (10) ------ {failed()} ~> {datatype-value("failed")} # (10) ------ {failing[],failed<>} =ty=> {true<>} # (10) ------ {finalise-failing(X)} ~> {finalise-abrupting(X)} # (10) ------ {fail()} ~> {abrupt(failed)} {values,V} =ty=>* {true<>} (10) ------ {else(V,Y)} ~> {V} with seq-variable(V,1,1,LONGEST) # (10) ------ {else(X,Y,Zp)} ~> {else(X,else(Y,Zp))} with seq-variable(Zp,1,#,LONGEST) {X} ~>* {_Y1} {_Y1,abrupted = #} -> {_Y2} {_Y2} ->* {X',abrupted = #} (10) ------ {else(X,Y),abrupted = #} -> {else(X',Y),abrupted = #} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {X} ~>* {_Y2} {_Y2,abrupted = #} -> {_Y4} {_Y4} ->* {_Y1,abrupted = _Y3} {_Y3} ~>* {failed<>} (10) ------ {else(X,Y),abrupted = #} -> {Y,abrupted = #} with seq-variable(_Y4,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) {X} ~>* {_Y1} {_Y1,abrupted = #} -> {_Y2} {_Y2} ->* {X',abrupted = V} {V} ~>* {_Y3} {tyneg(failing),V} =ty=>* {true<>} (10) ------ {else(X,Y),abrupted = #} -> {else(X',Y),abrupted = _Y3} with seq-variable(_Y2,0,#,LONGEST) seq-variable(V,1,1,LONGEST) seq-variable(_Y1,0,#,LONGEST) # (10) ------ {else-choice(Ws,X,Y,Zs)} ~> {choice(else(X,else-choice(Ws,Y,Zs),else(Y,else-choice(Ws,X,Zs))))} with seq-variable(Zs,0,#,LONGEST) seq-variable(Ws,0,#,LONGEST) # (10) ------ {else-choice(X)} ~> {X} {_Y2} ~>* {_Y1} {_Y1} ~>* {true<>} (10) ------ {check-true(_Y2)} ~> {null-value} with seq-variable(_Y2,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {false<>} (10) ------ {check-true(_Y2)} ~> {fail} with seq-variable(_Y2,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {check-true(Xs)} -> {check-true(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {true<>} (10) ------ {check(_Y2)} ~> {null-value} with seq-variable(_Y2,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {false<>} (10) ------ {check(_Y2)} ~> {fail} with seq-variable(_Y2,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {check(Xs)} -> {check-true(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {V} {values,V} =ty=>* {true<>} (10) ------ {checked(_Y1)} ~> {V} with seq-variable(_Y1,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {_Y1} ~>* {#} (10) ------ {checked(_Y1)} ~> {fail} with seq-variable(_Y1,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {checked(Xs)} -> {checked(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) # (10) ------ {breaking()} ~> {breaking[]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {breaking(_Y1)} -> {breaking(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) # (10) ------ {broken()} ~> {datatype-value("broken")} # (10) ------ {breaking[],broken<>} =ty=> {true<>} # (10) ------ {finalise-breaking(X)} ~> {finalise-abrupting(X)} # (10) ------ {break()} ~> {abrupt(broken)} {_Y1} ~>* {null-value<>} (10) ------ {handle-break(_Y1)} ~> {null-value} {X} ~>* {_Y1} {_Y1,abrupted = #} -> {_Y2} {_Y2} ->* {X',abrupted = #} (10) ------ {handle-break(X),abrupted = #} -> {handle-break(X'),abrupted = #} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {X} ~>* {_Y2} {_Y2,abrupted = #} -> {_Y4} {_Y4} ->* {_Y1,abrupted = _Y3} {_Y3} ~>* {broken<>} (10) ------ {handle-break(X),abrupted = #} -> {null-value,abrupted = #} with seq-variable(_Y4,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) {X} ~>* {_Y1} {_Y1,abrupted = #} -> {_Y2} {_Y2} ->* {X',abrupted = V} {V} ~>* {_Y3} {tyneg(breaking),V} =ty=>* {true<>} (10) ------ {handle-break(X),abrupted = #} -> {handle-break(X'),abrupted = _Y3} with seq-variable(_Y2,0,#,LONGEST) seq-variable(V,1,1,LONGEST) seq-variable(_Y1,0,#,LONGEST) # (10) ------ {continuing()} ~> {continuing[]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {continuing(_Y1)} -> {continuing(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) # (10) ------ {continued()} ~> {datatype-value("continued")} # (10) ------ {continuing[],continued<>} =ty=> {true<>} # (10) ------ {finalise-continuing(X)} ~> {finalise-abrupting(X)} # (10) ------ {continue()} ~> {abrupt(continued)} {_Y1} ~>* {null-value<>} (10) ------ {handle-continue(_Y1)} ~> {null-value} {X} ~>* {_Y1} {_Y1,abrupted = #} -> {_Y2} {_Y2} ->* {X',abrupted = #} (10) ------ {handle-continue(X),abrupted = #} -> {handle-continue(X'),abrupted = #} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {X} ~>* {_Y2} {_Y2,abrupted = #} -> {_Y4} {_Y4} ->* {_Y1,abrupted = _Y3} {_Y3} ~>* {continued<>} (10) ------ {handle-continue(X),abrupted = #} -> {null-value,abrupted = #} with seq-variable(_Y4,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) {X} ~>* {_Y1} {_Y1,abrupted = #} -> {_Y2} {_Y2} ->* {X',abrupted = V} {V} ~>* {_Y3} {tyneg(continuing),V} =ty=>* {true<>} (10) ------ {handle-continue(X),abrupted = #} -> {handle-continue(X'),abrupted = _Y3} with seq-variable(_Y2,0,#,LONGEST) seq-variable(V,1,1,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {V,T} {T,V} =ty=>* {true<>} {types,T} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {is-in-type(_Y1)} ~> {true} with seq-variable(_Y1,0,#,LONGEST) seq-variable(T,1,1,LONGEST) seq-variable(V,1,1,LONGEST) {_Y1} ~>* {V,T} {T,V} =ty=>* {false<>} {types,T} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {is-in-type(_Y1)} ~> {false} with seq-variable(_Y1,0,#,LONGEST) seq-variable(T,1,1,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {is-in-type(Xs)} -> {is-in-type(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {V,T} {T,V} =ty=>* {true<>} {types,T} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {is(_Y1)} ~> {true} with seq-variable(_Y1,0,#,LONGEST) seq-variable(T,1,1,LONGEST) seq-variable(V,1,1,LONGEST) {_Y1} ~>* {V,T} {T,V} =ty=>* {false<>} {types,T} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {is(_Y1)} ~> {false} with seq-variable(_Y1,0,#,LONGEST) seq-variable(T,1,1,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {is(Xs)} -> {is-in-type(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y2} ~>* {_Y1} {values,_Y1} =ty=>* {true<>} (10) ------ {is-value(_Y2)} ~> {true} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,1,1,LONGEST) {_Y1} ~>* {#} (10) ------ {is-value(_Y1)} ~> {false} with seq-variable(_Y1,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {is-value(Xs)} -> {is-value(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y2} ~>* {_Y1} {values,_Y1} =ty=>* {true<>} (10) ------ {is-val(_Y2)} ~> {true} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,1,1,LONGEST) {_Y1} ~>* {#} (10) ------ {is-val(_Y1)} ~> {false} with seq-variable(_Y1,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {is-val(Xs)} -> {is-value(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y2} ~>* {_Y1,V} {_Y1} ~>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {when-true(_Y2)} ~> {V} with seq-variable(_Y2,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {_Y2} ~>* {_Y1,V} {_Y1} ~>* {false<>} {values,V} =ty=>* {true<>} (10) ------ {when-true(_Y2)} ~> {#} with seq-variable(_Y2,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {when-true(Xs)} -> {when-true(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y2} ~>* {_Y1,V} {_Y1} ~>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {when(_Y2)} ~> {V} with seq-variable(_Y2,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {_Y2} ~>* {_Y1,V} {_Y1} ~>* {false<>} {values,V} =ty=>* {true<>} (10) ------ {when(_Y2)} ~> {#} with seq-variable(_Y2,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {when(Xs)} -> {when-true(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {V,T} {T,V} =ty=>* {true<>} {types,T} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {cast-to-type(_Y1)} ~> {V} with seq-variable(_Y1,0,#,LONGEST) seq-variable(T,1,1,LONGEST) seq-variable(V,1,1,LONGEST) {_Y1} ~>* {V,T} {T,V} =ty=>* {false<>} {types,T} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {cast-to-type(_Y1)} ~> {#} with seq-variable(_Y1,0,#,LONGEST) seq-variable(T,1,1,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {cast-to-type(Xs)} -> {cast-to-type(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {V,T} {T,V} =ty=>* {true<>} {types,T} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {cast(_Y1)} ~> {V} with seq-variable(_Y1,0,#,LONGEST) seq-variable(T,1,1,LONGEST) seq-variable(V,1,1,LONGEST) {_Y1} ~>* {V,T} {T,V} =ty=>* {false<>} {types,T} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {cast(_Y1)} ~> {#} with seq-variable(_Y1,0,#,LONGEST) seq-variable(T,1,1,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {cast(Xs)} -> {cast-to-type(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {V,W} {V} ~>* {_Y2} {W} ~>* {_Y3} {ground-values,V} =ty=>* {true<>} {ground-values,W} =ty=>* {true<>} {tystar(values),_Y2} =ty=>* {true<>} {tystar(values),_Y3} =ty=>* {true<>} _is-equal(_Y2,_Y3) |> true<> (10) ------ {is-equal(_Y1)} ~> {true} with seq-variable(_Y1,0,#,LONGEST) seq-variable(W,1,1,LONGEST) seq-variable(V,1,1,LONGEST) {_Y1} ~>* {V,W} {V} ~>* {_Y2} {W} ~>* {_Y3} {ground-values,V} =ty=>* {true<>} {ground-values,W} =ty=>* {true<>} {tystar(values),_Y2} =ty=>* {true<>} {tystar(values),_Y3} =ty=>* {true<>} _is-equal(_Y2,_Y3) |> false<> (10) ------ {is-equal(_Y1)} ~> {false} with seq-variable(_Y1,0,#,LONGEST) seq-variable(W,1,1,LONGEST) seq-variable(V,1,1,LONGEST) {_Y1} ~>* {V,W} {tyneg(ground-values),V} =ty=>* {true<>} {values,W} =ty=>* {true<>} (10) ------ {is-equal(_Y1)} ~> {false} with seq-variable(_Y1,0,#,LONGEST) seq-variable(W,1,1,LONGEST) seq-variable(V,1,1,LONGEST) {_Y1} ~>* {V,W} {tyneg(ground-values),W} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {is-equal(_Y1)} ~> {false} with seq-variable(_Y1,0,#,LONGEST) seq-variable(W,1,1,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {is-equal(Xs)} -> {is-equal(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {V,W} {V} ~>* {_Y2} {W} ~>* {_Y3} {ground-values,V} =ty=>* {true<>} {ground-values,W} =ty=>* {true<>} {tystar(values),_Y2} =ty=>* {true<>} {tystar(values),_Y3} =ty=>* {true<>} _is-equal(_Y2,_Y3) |> true<> (10) ------ {is-eq(_Y1)} ~> {true} with seq-variable(_Y1,0,#,LONGEST) seq-variable(W,1,1,LONGEST) seq-variable(V,1,1,LONGEST) {_Y1} ~>* {V,W} {V} ~>* {_Y2} {W} ~>* {_Y3} {ground-values,V} =ty=>* {true<>} {ground-values,W} =ty=>* {true<>} {tystar(values),_Y2} =ty=>* {true<>} {tystar(values),_Y3} =ty=>* {true<>} _is-equal(_Y2,_Y3) |> false<> (10) ------ {is-eq(_Y1)} ~> {false} with seq-variable(_Y1,0,#,LONGEST) seq-variable(W,1,1,LONGEST) seq-variable(V,1,1,LONGEST) {_Y1} ~>* {V,W} {tyneg(ground-values),V} =ty=>* {true<>} {values,W} =ty=>* {true<>} (10) ------ {is-eq(_Y1)} ~> {false} with seq-variable(_Y1,0,#,LONGEST) seq-variable(W,1,1,LONGEST) seq-variable(V,1,1,LONGEST) {_Y1} ~>* {V,W} {tyneg(ground-values),W} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {is-eq(_Y1)} ~> {false} with seq-variable(_Y1,0,#,LONGEST) seq-variable(W,1,1,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {is-eq(Xs)} -> {is-equal(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {adt-construct(_Y1)} -> {adt-construct(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {adt-construct(_Y1)} ~> {_adt-construct(_Y2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {adt-constructor(_Y1)} -> {adt-constructor(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {adt-constructor(_Y2)} ~> {_adt-constructor(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {adt-fields(_Y1)} -> {adt-fields(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {adt-fields(_Y2)} ~> {_adt-fields(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {adt-type(_Y1)} -> {adt-type(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {adt-type(_Y1)} ~> {_adt-type(_Y2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {adt-type-construct(_Y1)} -> {adt-type-construct(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {adt-type-construct(_Y1)} ~> {_adt-type-construct(_Y2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {adts(_Y1)} -> {adts(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {adts(_Y1)} ~> {_adts} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {ascii-character(_Y1)} -> {ascii-character(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {ascii-character(_Y2)} ~> {_ascii-character(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {ascii-characters(_Y1)} -> {ascii-characters(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {ascii-characters(_Y1)} ~> {_ascii-characters} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {atom(_Y1)} -> {atom(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {atom(_Y2)} ~> {_atom(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {atom-seed(_Y1)} -> {atom-seed(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {atom-seed(_Y1)} ~> {_atom-seed} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {atoms(_Y1)} -> {atoms(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {atoms(_Y1)} ~> {_atoms} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {characters(_Y1)} -> {characters(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {characters(_Y1)} ~> {_characters} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {cons(_Y1)} -> {cons(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {cons(_Y3)} ~> {_cons(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {datatype-values(_Y1)} -> {datatype-values(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {datatype-values(_Y1)} ~> {_datatype-values} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {decimal-natural(_Y1)} -> {decimal-natural(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {decimal-natural(_Y2)} ~> {_decimal-natural(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {dom(_Y1)} -> {dom(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {dom(_Y2)} ~> {_dom(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {domain(_Y1)} -> {domain(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {domain(_Y2)} ~> {_domain(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {element-not-in(_Y1)} -> {element-not-in(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {element-not-in(_Y3)} ~> {_element-not-in(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {empty-tuple(_Y1)} -> {empty-tuple(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {empty-tuple(_Y1)} ~> {_empty-tuple} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {empty-type(_Y1)} -> {empty-type(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {empty-type(_Y1)} ~> {_empty-type} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {from(_Y1)} -> {from(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {from(_Y2)} ~> {_from(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {ground-values(_Y1)} -> {ground-values(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {ground-values(_Y1)} ~> {_ground-values} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {head(_Y1)} -> {head(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {head(_Y2)} ~> {_head(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {int-add(_Y1)} -> {int-add(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {int-add(_Y1)} ~> {_int-add(_Y2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {int-div(_Y1)} -> {int-div(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {int-div(_Y3)} ~> {_int-div(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {int-mod(_Y1)} -> {int-mod(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {int-mod(_Y3)} ~> {_int-mod(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {int-mul(_Y1)} -> {int-mul(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {int-mul(_Y1)} ~> {_int-mul(_Y2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {int-pow(_Y1)} -> {int-pow(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {int-pow(_Y3)} ~> {_int-pow(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {int-sub(_Y1)} -> {int-sub(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {int-sub(_Y3)} ~> {_int-sub(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {integer-absolute-value(_Y1)} -> {integer-absolute-value(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {integer-absolute-value(_Y2)} ~> {_integer-absolute-value(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {integer-add(_Y1)} -> {integer-add(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {integer-add(_Y1)} ~> {_integer-add(_Y2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {integer-divide(_Y1)} -> {integer-divide(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {integer-divide(_Y3)} ~> {_integer-divide(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {integer-is-greater(_Y1)} -> {integer-is-greater(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {integer-is-greater(_Y3)} ~> {_integer-is-greater(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {integer-is-greater-or-equal(_Y1)} -> {integer-is-greater-or-equal(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {integer-is-greater-or-equal(_Y3)} ~> {_integer-is-greater-or-equal(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {integer-is-less(_Y1)} -> {integer-is-less(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {integer-is-less(_Y3)} ~> {_integer-is-less(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {integer-is-less-or-equal(_Y1)} -> {integer-is-less-or-equal(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {integer-is-less-or-equal(_Y3)} ~> {_integer-is-less-or-equal(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {integer-list(_Y1)} -> {integer-list(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {integer-list(_Y3)} ~> {_integer-list(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {integer-mod(_Y1)} -> {integer-mod(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {integer-mod(_Y3)} ~> {_integer-mod(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {integer-modulo(_Y1)} -> {integer-modulo(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {integer-modulo(_Y3)} ~> {_integer-modulo(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {integer-multiply(_Y1)} -> {integer-multiply(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {integer-multiply(_Y1)} ~> {_integer-multiply(_Y2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {integer-power(_Y1)} -> {integer-power(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {integer-power(_Y3)} ~> {_integer-power(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {integer-sub(_Y1)} -> {integer-sub(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {integer-sub(_Y3)} ~> {_integer-sub(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {integer-subtract(_Y1)} -> {integer-subtract(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {integer-subtract(_Y3)} ~> {_integer-subtract(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {integers(_Y1)} -> {integers(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {integers(_Y1)} ~> {_integers} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {integers-from(_Y1)} -> {integers-from(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {integers-from(_Y2)} ~> {_integers-from(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {integers-up-to(_Y1)} -> {integers-up-to(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {integers-up-to(_Y2)} ~> {_integers-up-to(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {is-empty(_Y1)} -> {is-empty(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {is-empty(_Y2)} ~> {_is-empty(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {is-equal(_Y1)} -> {is-equal(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {is-equal(_Y3)} ~> {_is-equal(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {is-greater(_Y1)} -> {is-greater(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {is-greater(_Y3)} ~> {_is-greater(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {is-greater-or-equal(_Y1)} -> {is-greater-or-equal(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {is-greater-or-equal(_Y3)} ~> {_is-greater-or-equal(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {is-in-domain(_Y1)} -> {is-in-domain(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {is-in-domain(_Y3)} ~> {_is-in-domain(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {is-in-set(_Y1)} -> {is-in-set(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {is-in-set(_Y3)} ~> {_is-in-set(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {is-int(_Y1)} -> {is-int(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {is-int(_Y2)} ~> {_is-int(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {is-integer(_Y1)} -> {is-integer(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {is-integer(_Y2)} ~> {_is-integer(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {is-less(_Y1)} -> {is-less(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {is-less(_Y3)} ~> {_is-less(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {is-less-or-equal(_Y1)} -> {is-less-or-equal(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {is-less-or-equal(_Y3)} ~> {_is-less-or-equal(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {is-map-empty(_Y1)} -> {is-map-empty(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {is-map-empty(_Y2)} ~> {_is-map-empty(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {is-nil(_Y1)} -> {is-nil(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {is-nil(_Y2)} ~> {_is-nil(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {is-string(_Y1)} -> {is-string(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {is-string(_Y2)} ~> {_is-string(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {is-subset(_Y1)} -> {is-subset(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {is-subset(_Y3)} ~> {_is-subset(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {list(_Y1)} -> {list(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {list(_Y1)} ~> {_list(_Y2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {list-append(_Y1)} -> {list-append(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {list-append(_Y3)} ~> {_list-append(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {list-concat(_Y1)} -> {list-concat(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {list-concat(_Y1)} ~> {_list-concat(_Y2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {list-singleton(_Y1)} -> {list-singleton(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {list-singleton(_Y2)} ~> {_list-singleton(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {lists(_Y1)} -> {lists(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {lists(_Y2)} ~> {_lists(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {lookup(_Y1)} -> {lookup(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {lookup(_Y3)} ~> {_lookup(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {map(_Y1)} -> {map(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {map(_Y1)} ~> {_map(_Y2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {map-delete(_Y1)} -> {map-delete(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {map-delete(_Y3)} ~> {_map-delete(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {map-domain(_Y1)} -> {map-domain(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {map-domain(_Y2)} ~> {_map-domain(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {map-elements(_Y1)} -> {map-elements(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {map-elements(_Y2)} ~> {_map-elements(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {map-empty(_Y1)} -> {map-empty(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {map-empty(_Y1)} ~> {_map-empty} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {map-insert(_Y1)} -> {map-insert(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y4} ~>* {_Y1,_Y2,_Y3} {_Y1} ~>* {_Y5} {_Y2} ~>* {_Y6} {_Y3} ~>* {_Y7} {tystar(values),_Y5} =ty=>* {true<>} {tystar(values),_Y6} =ty=>* {true<>} {tystar(values),_Y7} =ty=>* {true<>} (10) ------ {map-insert(_Y4)} ~> {_map-insert(_Y5,_Y6,_Y7)} with seq-variable(_Y4,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {map-lookup(_Y1)} -> {map-lookup(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {map-lookup(_Y3)} ~> {_map-lookup(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {map-override(_Y1)} -> {map-override(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {map-override(_Y1)} ~> {_map-override(_Y2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {map-singleton(_Y1)} -> {map-singleton(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {map-singleton(_Y3)} ~> {_map-singleton(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {map-unite(_Y1)} -> {map-unite(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {map-unite(_Y1)} ~> {_map-unite(_Y2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {maps(_Y1)} -> {maps(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {maps(_Y3)} ~> {_maps(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {nat-pred(_Y1)} -> {nat-pred(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {nat-pred(_Y2)} ~> {_nat-pred(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {nat-succ(_Y1)} -> {nat-succ(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {nat-succ(_Y2)} ~> {_nat-succ(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {nat-successor(_Y1)} -> {nat-successor(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {nat-successor(_Y2)} ~> {_nat-successor(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {natural-predecessor(_Y1)} -> {natural-predecessor(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {natural-predecessor(_Y2)} ~> {_natural-predecessor(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {natural-successor(_Y1)} -> {natural-successor(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {natural-successor(_Y2)} ~> {_natural-successor(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {next-atom(_Y1)} -> {next-atom(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {next-atom(_Y2)} ~> {_next-atom(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {nil(_Y1)} -> {nil(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {nil(_Y1)} ~> {_nil} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {non-grounded(_Y1)} -> {non-grounded(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {non-grounded(_Y2)} ~> {_non-grounded(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {non-grounded-values(_Y1)} -> {non-grounded-values(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {non-grounded-values(_Y1)} ~> {_non-grounded-values} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {none(_Y1)} -> {none(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {none(_Y1)} ~> {_none} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {optionals(_Y1)} -> {optionals(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {optionals(_Y2)} ~> {_optionals(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {set(_Y1)} -> {set(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {set(_Y1)} ~> {_set(_Y2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {set-difference(_Y1)} -> {set-difference(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {set-difference(_Y1)} ~> {_set-difference(_Y2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {set-elements(_Y1)} -> {set-elements(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {set-elements(_Y2)} ~> {_set-elements(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {set-empty(_Y1)} -> {set-empty(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {set-empty(_Y1)} ~> {_set-empty} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {set-insert(_Y1)} -> {set-insert(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {set-insert(_Y3)} ~> {_set-insert(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {set-intersect(_Y1)} -> {set-intersect(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {set-intersect(_Y1)} ~> {_set-intersect(_Y2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {set-size(_Y1)} -> {set-size(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {set-size(_Y2)} ~> {_set-size(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {set-unite(_Y1)} -> {set-unite(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {set-unite(_Y1)} ~> {_set-unite(_Y2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {sets(_Y1)} -> {sets(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {sets(_Y2)} ~> {_sets(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {some(_Y1)} -> {some(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {some(_Y2)} ~> {_some(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {some-element(_Y1)} -> {some-element(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {some-element(_Y2)} ~> {_some-element(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {strings(_Y1)} -> {strings(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {strings(_Y1)} ~> {_strings} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {tail(_Y1)} -> {tail(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {tail(_Y2)} ~> {_tail(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {to-string(_Y1)} -> {to-string(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {to-string(_Y2)} ~> {_to-string(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {tuple(_Y1)} -> {tuple(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {tuple(_Y1)} ~> {_tuple(_Y2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {tuple-head(_Y1)} -> {tuple-head(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {tuple-head(_Y2)} ~> {_tuple-head(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {tuple-index(_Y1)} -> {tuple-index(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {tuple-index(_Y3)} ~> {_tuple-index(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {tuple-prepend(_Y1)} -> {tuple-prepend(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {tuple-prepend(_Y3)} ~> {_tuple-prepend(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {tuple-tail(_Y1)} -> {tuple-tail(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {tuple-tail(_Y2)} ~> {_tuple-tail(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {tuples(_Y1)} -> {tuples(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {tuples(_Y1)} ~> {_tuples(_Y2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {type-member(_Y1)} -> {type-member(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {_Y4} {_Y2} ~>* {_Y5} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y5} =ty=>* {true<>} (10) ------ {type-member(_Y3)} ~> {_type-member(_Y4,_Y5)} with seq-variable(_Y3,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {types(_Y1)} -> {types(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {types(_Y1)} ~> {_types} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {unicode(_Y1)} -> {unicode(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {unicode(_Y2)} ~> {_unicode(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {unicode-character-code(_Y1)} -> {unicode-character-code(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {unicode-character-code(_Y2)} ~> {_unicode-character-code(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {up-to(_Y1)} -> {up-to(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {up-to(_Y2)} ~> {_up-to(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {value-type(_Y1)} -> {value-type(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {_Y3} {tystar(values),_Y3} =ty=>* {true<>} (10) ------ {value-type(_Y2)} ~> {_value-type(_Y3)} with seq-variable(_Y2,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {value-types(_Y1)} -> {value-types(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {value-types(_Y1)} ~> {_value-types} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {values(_Y1)} -> {values(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {values(_Y1)} ~> {_values} with seq-variable(_Y1,0,#,LONGEST) # (10) ------ {tags()} ~> {strings} # (10) ------ {asts()} ~> {asts[]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {asts(_Y1)} -> {asts(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_X1,_X2} {tyopt(values),_X1} =ty=>* {true<>} {tyopt(values),_X2} =ty=>* {true<>} (10) ------ {ast-value(_Y1)} ~> {datatype-value("ast-value",_X1,_X2)} with seq-variable(_Y1,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {ast-value(Xs)} -> {ast-value(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {types,_Y1} =ty=>* {true<>} {values,_Y2} =ty=>* {true<>} (10) ------ {asts[],ast-value<_Y1,_Y2>} =ty=> {true<>} {_Y1} ~>* {_X1,_X2s} {tyopt(values),_X1} =ty=>* {true<>} {tystar(tyopt(values)),_X2s} =ty=>* {true<>} (10) ------ {ast-term(_Y1)} ~> {datatype-value("ast-term",_X1,_X2s)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(_X2s,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {ast-term(Xs)} -> {ast-term(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {tags,_Y1} =ty=>* {true<>} {tystar(asts),_Y2} =ty=>* {true<>} (10) ------ {asts[],ast-term<_Y1,_Y2>} =ty=> {true<>} with seq-variable(_Y2,0,#,LONGEST) {tystar,_map-elements(MAP)} =ty=> {true<>} (10) ------ {maps[KTY,VTY],MAP} =ty=> {true<>} # (10) ------ {strings()} ~> {lists(characters)} {_Y1} ~>* {Cs} {tystar(characters),Cs} =ty=>* {true<>} (10) ------ {string(_Y1)} ~> {list(Cs)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Cs,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {string(Xs)} -> {string(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {Ss} {tystar(strings),Ss} =ty=>* {true<>} (10) ------ {string-append(_Y1)} ~> {list-append(Ss)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Ss,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {string-append(Xs)} -> {string-append(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {T} ~>* {_Y1} {tystar(values),_Y1} =ty=>* {true<>} (10) ------ {vectors(T)} ~> {vectors[_Y1]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {vectors(_Y1)} -> {vectors(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_X1s} {tystar(tyopt(values)),_X1s} =ty=>* {true<>} (10) ------ {vector(_Y1)} ~> {datatype-value("vector",_X1s)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(_X1s,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {vector(Xs)} -> {vector(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {tystar(T),_Y1} =ty=>* {true<>} (10) ------ {vectors[T],vector<_Y1>} =ty=> {true<>} with seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {vector} {tystar(values),Vs} =ty=>* {true<>} (10) ------ {vector-elements(_Y2)} ~> {Vs} with seq-variable(_Y2,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {vector-elements(Xs)} -> {vector-elements(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {tystar,_set-elements(SET)} =ty=> {true<>} (10) ------ {sets[TY],SET} =ty=> {true<>} {T} ~>* {_Y1} {tystar(values),_Y1} =ty=>* {true<>} (10) ------ {variants(T)} ~> {variants[_Y1]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {variants(_Y1)} -> {variants(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_X1,_X2} {tyopt(values),_X1} =ty=>* {true<>} {tyopt(values),_X2} =ty=>* {true<>} (10) ------ {variant(_Y1)} ~> {datatype-value("variant",_X1,_X2)} with seq-variable(_Y1,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {variant(Xs)} -> {variant(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {T,_Y2} =ty=>* {true<>} {identifiers,_Y1} =ty=>* {true<>} (10) ------ {variants[T],variant<_Y1,_Y2>} =ty=> {true<>} {_Y3} ~>* {_Y1} {_Y1} ~>* {variant} (10) ------ {variant-id(_Y3)} ~> {I} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,1,1,LONGEST) seq-variable(I,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {variant-id(Xs)} -> {variant-id(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y3} ~>* {_Y1} {_Y1} ~>* {variant<_Y2,V>} (10) ------ {variant-value(_Y3)} ~> {V} with seq-variable(_Y3,0,#,LONGEST) seq-variable(V,1,1,LONGEST) seq-variable(_Y2,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {variant-value(Xs)} -> {variant-value(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {length(_Y1)} ~> {0} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {V,Vs} {tystar(values),Vs} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {length(_Y1)} ~> {natural-successor(length(Vs))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {length(Xs)} -> {length(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {V,V',Vs} {tystar(values),Vs} =ty=>* {true<>} {values,V} =ty=>* {true<>} {values,V'} =ty=>* {true<>} (10) ------ {is-in(_Y1)} ~> {or(is-equal(V,V'),is-in(V,Vs))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(V',1,1,LONGEST) seq-variable(V,1,1,LONGEST) {_Y1} ~>* {V} {values,V} =ty=>* {true<>} (10) ------ {is-in(_Y1)} ~> {false} with seq-variable(_Y1,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {is-in(Xs)} -> {is-in(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {1,V,Vs} {tystar(values),Vs} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {index(_Y1)} ~> {V} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {_Y2} ~>* {N,_Y1,Vs} {natural-predecessor(N)} ~>* {N'} {positive-integers,N} =ty=>* {true<>} {tystar(values),Vs} =ty=>* {true<>} {values,_Y1} =ty=>* {true<>} (10) ------ {index(_Y2)} ~> {index(N',Vs)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(_Y1,1,1,LONGEST) seq-variable(N,1,1,LONGEST) {_Y1} ~>* {0,Vs} {tystar(values),Vs} =ty=>* {true<>} (10) ------ {index(_Y1)} ~> {#} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) {_Y2} ~>* {_Y1} {positive-integers,_Y1} =ty=>* {true<>} (10) ------ {index(_Y2)} ~> {#} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {index(Xs)} -> {index(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {V,Vs} {tystar(values),Vs} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {first(_Y1)} ~> {V} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {first(Xs)} -> {first(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y2} ~>* {_Y1,V,Vs} {tystar(values),Vs} =ty=>* {true<>} {values,V} =ty=>* {true<>} {values,_Y1} =ty=>* {true<>} (10) ------ {second(_Y2)} ~> {V} with seq-variable(_Y2,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(V,1,1,LONGEST) seq-variable(_Y1,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {second(Xs)} -> {second(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2,V,Vs} {tystar(values),Vs} =ty=>* {true<>} {values,V} =ty=>* {true<>} {values,_Y1} =ty=>* {true<>} {values,_Y2} =ty=>* {true<>} (10) ------ {third(_Y3)} ~> {V} with seq-variable(_Y3,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(V,1,1,LONGEST) seq-variable(_Y2,1,1,LONGEST) seq-variable(_Y1,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {third(Xs)} -> {third(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {0,Vs} {tystar(values),Vs} =ty=>* {true<>} (10) ------ {first-n(_Y1)} ~> {#} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) {_Y1} ~>* {N,V,Vs} {natural-predecessor(N)} ~>* {N'} {positive-integers,N} =ty=>* {true<>} {tystar(values),Vs} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {first-n(_Y1)} ~> {V,first-n(N',Vs)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(V,1,1,LONGEST) seq-variable(N,1,1,LONGEST) {_Y1} ~>* {N} {positive-integers,N} =ty=>* {true<>} (10) ------ {first-n(_Y1)} ~> {#} with seq-variable(_Y1,0,#,LONGEST) seq-variable(N,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {first-n(Xs)} -> {first-n(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {0,Vs} {tystar(values),Vs} =ty=>* {true<>} (10) ------ {drop-first-n(_Y1)} ~> {Vs} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) {_Y2} ~>* {N,_Y1,Vs} {natural-predecessor(N)} ~>* {N'} {positive-integers,N} =ty=>* {true<>} {tystar(values),Vs} =ty=>* {true<>} {values,_Y1} =ty=>* {true<>} (10) ------ {drop-first-n(_Y2)} ~> {drop-first-n(N',Vs)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(_Y1,1,1,LONGEST) seq-variable(N,1,1,LONGEST) {_Y1} ~>* {N} {positive-integers,N} =ty=>* {true<>} (10) ------ {drop-first-n(_Y1)} ~> {#} with seq-variable(_Y1,0,#,LONGEST) seq-variable(N,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {drop-first-n(Xs)} -> {drop-first-n(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {reverse(_Y1)} ~> {#} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {V,Vs} {tystar(values),Vs} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {reverse(_Y1)} ~> {reverse(Vs),V} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {reverse(Xs)} -> {reverse(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y2} ~>* {0,_Y1} {values,_Y1} =ty=>* {true<>} (10) ------ {n-of(_Y2)} ~> {#} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,1,1,LONGEST) {_Y1} ~>* {N,V} {natural-predecessor(N)} ~>* {N'} {positive-integers,N} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {n-of(_Y1)} ~> {V,n-of(N',V)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(V,1,1,LONGEST) seq-variable(N,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {n-of(Xs)} -> {n-of(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y2} ~>* {_Y1} {values,_Y1} =ty=>* {true<>} (10) ------ {intersperse(_Y2)} ~> {#} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,1,1,LONGEST) {_Y2} ~>* {_Y1,V} {values,_Y1} =ty=>* {true<>} (10) ------ {intersperse(_Y2)} ~> {V} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,1,1,LONGEST) {_Y1} ~>* {V',V1,V2,Vs} {tystar(values),Vs} =ty=>* {true<>} {values,V'} =ty=>* {true<>} {values,V1} =ty=>* {true<>} {values,V2} =ty=>* {true<>} (10) ------ {intersperse(_Y1)} ~> {V1,V',intersperse(V',V2,Vs)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(V2,1,1,LONGEST) seq-variable(V1,1,1,LONGEST) seq-variable(V',1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {intersperse(Xs)} -> {intersperse(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {T} ~>* {_Y1} {tystar(values),_Y1} =ty=>* {true<>} (10) ------ {lists(T)} ~> {lists[_Y1]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {lists(_Y1)} -> {lists(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_X1s} {tystar(tyopt(values)),_X1s} =ty=>* {true<>} (10) ------ {list(_Y1)} ~> {datatype-value("list",_X1s)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(_X1s,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {list(Xs)} -> {list(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {tystar(T),_Y1} =ty=>* {true<>} (10) ------ {lists[T],list<_Y1>} =ty=> {true<>} with seq-variable(_Y1,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {list} {tystar(values),Vs} =ty=>* {true<>} (10) ------ {list-elements(_Y2)} ~> {Vs} with seq-variable(_Y2,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {list-elements(Xs)} -> {list-elements(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) # (10) ------ {list-nil()} ~> {list<>} # (10) ------ {nil()} ~> {list<>} {_Y3} ~>* {V,_Y1} {_Y1} ~>* {_Y2} {list-elements(adt-fields(_Y2))} ~>* {Vs} {tystar(values),Vs} =ty=>* {true<>} {tystar(values),_Y2} =ty=>* {true<>} {values,V} =ty=>* {true<>} {_adt-constructor(_Y2)} ~>* {"list"} (10) ------ {list-cons(_Y3)} ~> {list(V,Vs)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {list-cons(Xs)} -> {list-cons(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y3} ~>* {V,_Y1} {_Y1} ~>* {_Y2} {list-elements(adt-fields(_Y2))} ~>* {Vs} {tystar(values),Vs} =ty=>* {true<>} {tystar(values),_Y2} =ty=>* {true<>} {values,V} =ty=>* {true<>} {_adt-constructor(_Y2)} ~>* {"list"} (10) ------ {cons(_Y3)} ~> {list(V,Vs)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {cons(Xs)} -> {list-cons(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y4} ~>* {_Y2} {_Y2} ~>* {_Y3} {list-elements(adt-fields(_Y3))} ~>* {V,_Y1} {tystar(values),_Y1} =ty=>* {true<>} {tystar(values),_Y3} =ty=>* {true<>} {_adt-constructor(_Y3)} ~>* {"list"} (10) ------ {list-head(_Y4)} ~> {V} with seq-variable(_Y4,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {_Y3} ~>* {_Y1} {_Y1} ~>* {_Y2} {list-elements(adt-fields(_Y2))} ~>* {#} {tystar(values),_Y2} =ty=>* {true<>} {_adt-constructor(_Y2)} ~>* {"list"} (10) ------ {list-head(_Y3)} ~> {#} with seq-variable(_Y3,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {list-head(Xs)} -> {list-head(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y4} ~>* {_Y2} {_Y2} ~>* {_Y3} {list-elements(adt-fields(_Y3))} ~>* {V,_Y1} {tystar(values),_Y1} =ty=>* {true<>} {tystar(values),_Y3} =ty=>* {true<>} {_adt-constructor(_Y3)} ~>* {"list"} (10) ------ {head(_Y4)} ~> {V} with seq-variable(_Y4,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {_Y3} ~>* {_Y1} {_Y1} ~>* {_Y2} {list-elements(adt-fields(_Y2))} ~>* {#} {tystar(values),_Y2} =ty=>* {true<>} {_adt-constructor(_Y2)} ~>* {"list"} (10) ------ {head(_Y3)} ~> {#} with seq-variable(_Y3,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {head(Xs)} -> {list-head(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y4} ~>* {_Y2} {_Y2} ~>* {_Y3} {list-elements(adt-fields(_Y3))} ~>* {_Y1,Vs} {tystar(values),Vs} =ty=>* {true<>} {tystar(values),_Y3} =ty=>* {true<>} {_adt-constructor(_Y3)} ~>* {"list"} (10) ------ {list-tail(_Y4)} ~> {list(Vs)} with seq-variable(_Y4,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(_Y1,1,1,LONGEST) {_Y3} ~>* {_Y1} {_Y1} ~>* {_Y2} {list-elements(adt-fields(_Y2))} ~>* {#} {tystar(values),_Y2} =ty=>* {true<>} {_adt-constructor(_Y2)} ~>* {"list"} (10) ------ {list-tail(_Y3)} ~> {#} with seq-variable(_Y3,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {list-tail(Xs)} -> {list-tail(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y4} ~>* {_Y2} {_Y2} ~>* {_Y3} {list-elements(adt-fields(_Y3))} ~>* {_Y1,Vs} {tystar(values),Vs} =ty=>* {true<>} {tystar(values),_Y3} =ty=>* {true<>} {_adt-constructor(_Y3)} ~>* {"list"} (10) ------ {tail(_Y4)} ~> {list(Vs)} with seq-variable(_Y4,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) seq-variable(_Y1,1,1,LONGEST) {_Y3} ~>* {_Y1} {_Y1} ~>* {_Y2} {list-elements(adt-fields(_Y2))} ~>* {#} {tystar(values),_Y2} =ty=>* {true<>} {_adt-constructor(_Y2)} ~>* {"list"} (10) ------ {tail(_Y3)} ~> {#} with seq-variable(_Y3,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {tail(Xs)} -> {list-tail(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y3} ~>* {_Y1} {_Y1} ~>* {_Y2} {list-elements(adt-fields(_Y2))} ~>* {Vs} {tystar(values),Vs} =ty=>* {true<>} {tystar(values),_Y2} =ty=>* {true<>} {_adt-constructor(_Y2)} ~>* {"list"} (10) ------ {list-length(_Y3)} ~> {length(Vs)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {list-length(Xs)} -> {list-length(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y5} ~>* {_Y1,_Y3} {_Y1} ~>* {_Y2} {_Y3} ~>* {_Y4} {list-elements(adt-fields(_Y2))} ~>* {V1s} {list-elements(adt-fields(_Y4))} ~>* {V2s} {tystar(values),V1s} =ty=>* {true<>} {tystar(values),V2s} =ty=>* {true<>} {tystar(values),_Y2} =ty=>* {true<>} {tystar(values),_Y4} =ty=>* {true<>} {_adt-constructor(_Y2)} ~>* {"list"} {_adt-constructor(_Y4)} ~>* {"list"} (10) ------ {list-append(_Y5)} ~> {list(V1s,V2s)} with seq-variable(_Y5,0,#,LONGEST) seq-variable(V2s,0,#,LONGEST) seq-variable(V1s,0,#,LONGEST) {_Y1} ~>* {L1,L2,L3,Ls} {lists(tyopt(values)),L1} =ty=>* {true<>} {lists(tyopt(values)),L2} =ty=>* {true<>} {lists(tyopt(values)),L3} =ty=>* {true<>} {tystar(lists(tyopt(values))),Ls} =ty=>* {true<>} (10) ------ {list-append(_Y1)} ~> {list-append(L1,list-append(L2,L3,Ls))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Ls,0,#,LONGEST) seq-variable(L3,1,1,LONGEST) seq-variable(L2,1,1,LONGEST) seq-variable(L1,1,1,LONGEST) {_Y1} ~>* {#} (10) ------ {list-append(_Y1)} ~> {list<>} with seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {L} {lists(tyopt(values)),L} =ty=>* {true<>} (10) ------ {list-append(_Y1)} ~> {L} with seq-variable(_Y1,0,#,LONGEST) seq-variable(L,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {list-append(Xs)} -> {list-append(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {Ts} ~>* {_Y1} {tystar(values),_Y1} =ty=>* {true<>} (10) ------ {tuples(Ts)} ~> {tuples[_Y1]} with seq-variable(Ts,0,#,LONGEST) {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {tuples(_Y1)} -> {tuples(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_X1s} {tystar(tyopt(values)),_X1s} =ty=>* {true<>} (10) ------ {tuple(_Y1)} ~> {datatype-value("tuple",_X1s)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(_X1s,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {tuple(Xs)} -> {tuple(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {tyseq(Ts),_Y1} =ty=>* {true<>} (10) ------ {tuples[Ts],tuple<_Y1>} =ty=> {true<>} with seq-variable(_Y1,0,#,LONGEST) seq-variable(Ts,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {tuple} {tystar(values),Vs} =ty=>* {true<>} (10) ------ {tuple-elements(_Y2)} ~> {Vs} with seq-variable(_Y2,0,#,LONGEST) seq-variable(Vs,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {tuple-elements(Xs)} -> {tuple-elements(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {tuple} {_Y2} ~>* {tuple} {tystar(values),V1s} =ty=>* {true<>} {tystar(values),V2s} =ty=>* {true<>} (10) ------ {tuple-zip(_Y3)} ~> {tuple(V1,V2),tuple-zip(tuple(V1s),tuple(V2s))} with seq-variable(_Y3,0,#,LONGEST) seq-variable(V2s,0,#,LONGEST) seq-variable(V2,1,1,LONGEST) seq-variable(V1s,0,#,LONGEST) seq-variable(V1,1,1,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {tuple<>} {_Y2} ~>* {tuple<>} (10) ------ {tuple-zip(_Y3)} ~> {#} with seq-variable(_Y3,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {tuple} {_Y2} ~>* {tuple<>} {typlus(values),V1p} =ty=>* {true<>} (10) ------ {tuple-zip(_Y3)} ~> {#} with seq-variable(_Y3,0,#,LONGEST) seq-variable(V1p,1,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {tuple<>} {_Y2} ~>* {tuple} {typlus(values),V2p} =ty=>* {true<>} (10) ------ {tuple-zip(_Y3)} ~> {#} with seq-variable(_Y3,0,#,LONGEST) seq-variable(V2p,1,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {tuple-zip(Xs)} -> {tuple-zip(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) # (10) ------ {bits()} ~> {booleans} {N} ~>* {_Y1} {tystar(values),_Y1} =ty=>* {true<>} (10) ------ {bit-vectors(N)} ~> {bit-vectors[_Y1]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {bit-vectors(_Y1)} -> {bit-vectors(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_X1s} {tystar(tyopt(values)),_X1s} =ty=>* {true<>} (10) ------ {bit-vector(_Y1)} ~> {datatype-value("bit-vector",_X1s)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(_X1s,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {bit-vector(Xs)} -> {bit-vector(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {typower(bits,N),_Y1} =ty=>* {true<>} (10) ------ {bit-vectors[N],bit-vector<_Y1>} =ty=> {true<>} with seq-variable(_Y1,0,#,LONGEST) # (10) ------ {bytes()} ~> {bit-vectors(8)} # (10) ------ {octets()} ~> {bit-vectors(8)} {_Y1} ~>* {N} {natural-numbers,N} =ty=>* {true<>} (10) ------ {unsigned-bit-vector-maximum(_Y1)} ~> {integer-subtract(integer-power(2,N),1)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(N,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {unsigned-bit-vector-maximum(Xs)} -> {unsigned-bit-vector-maximum(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {N} {natural-numbers,N} =ty=>* {true<>} (10) ------ {signed-bit-vector-maximum(_Y1)} ~> {integer-subtract(integer-power(2,integer-subtract(N,1)),1)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(N,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {signed-bit-vector-maximum(Xs)} -> {signed-bit-vector-maximum(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {N} {natural-numbers,N} =ty=>* {true<>} (10) ------ {signed-bit-vector-minimum(_Y1)} ~> {integer-negate(integer-power(2,integer-subtract(N,1)))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(N,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {signed-bit-vector-minimum(Xs)} -> {signed-bit-vector-minimum(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {M,N} {integers,M} =ty=>* {true<>} {natural-numbers,N} =ty=>* {true<>} (10) ------ {is-in-signed-bit-vector(_Y1)} ~> {and(integer-is-less-or-equal(M,signed-bit-vector-maximum(N)),integer-is-greater-or-equal(M,signed-bit-vector-minimum(N)))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(N,1,1,LONGEST) seq-variable(M,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {is-in-signed-bit-vector(Xs)} -> {is-in-signed-bit-vector(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {M,N} {integers,M} =ty=>* {true<>} {natural-numbers,N} =ty=>* {true<>} (10) ------ {is-in-unsigned-bit-vector(_Y1)} ~> {and(integer-is-less-or-equal(M,unsigned-bit-vector-maximum(N)),integer-is-greater-or-equal(M,0))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(N,1,1,LONGEST) seq-variable(M,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {is-in-unsigned-bit-vector(Xs)} -> {is-in-unsigned-bit-vector(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) # (10) ------ {booleans()} ~> {booleans[]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {booleans(_Y1)} -> {booleans(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) # (10) ------ {bools()} ~> {bools[]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {bools(_Y1)} -> {bools(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) # (10) ------ {true()} ~> {datatype-value("true")} # (10) ------ {booleans[],true<>} =ty=> {true<>} # (10) ------ {bools[],true<>} =ty=> {true<>} # (10) ------ {false()} ~> {datatype-value("false")} # (10) ------ {booleans[],false<>} =ty=> {true<>} # (10) ------ {bools[],false<>} =ty=> {true<>} {_Y2} ~>* {_Y1} {_Y1} ~>* {false<>} (10) ------ {not(_Y2)} ~> {true} with seq-variable(_Y2,0,#,LONGEST) {_Y2} ~>* {_Y1} {_Y1} ~>* {true<>} (10) ------ {not(_Y2)} ~> {false} with seq-variable(_Y2,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {not(Xs)} -> {not(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {false<>} {_Y2} ~>* {false<>} (10) ------ {implies(_Y3)} ~> {true} with seq-variable(_Y3,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {false<>} {_Y2} ~>* {true<>} (10) ------ {implies(_Y3)} ~> {true} with seq-variable(_Y3,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {true<>} {_Y2} ~>* {true<>} (10) ------ {implies(_Y3)} ~> {true} with seq-variable(_Y3,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {true<>} {_Y2} ~>* {false<>} (10) ------ {implies(_Y3)} ~> {false} with seq-variable(_Y3,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {implies(Xs)} -> {implies(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {and(_Y1)} ~> {true} with seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {false<>} {tystar(booleans),_Y2} =ty=>* {true<>} (10) ------ {and(_Y3)} ~> {false} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) {_Y2} ~>* {_Y1,Bs} {_Y1} ~>* {true<>} {tystar(booleans),Bs} =ty=>* {true<>} (10) ------ {and(_Y2)} ~> {and(Bs)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(Bs,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {and(Xs)} -> {and(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {#} (10) ------ {or(_Y1)} ~> {false} with seq-variable(_Y1,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {true<>} {tystar(booleans),_Y2} =ty=>* {true<>} (10) ------ {or(_Y3)} ~> {true} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) {_Y2} ~>* {_Y1,Bs} {_Y1} ~>* {false<>} {tystar(booleans),Bs} =ty=>* {true<>} (10) ------ {or(_Y2)} ~> {or(Bs)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(Bs,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {or(Xs)} -> {or(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {false<>} {_Y2} ~>* {false<>} (10) ------ {exclusive-or(_Y3)} ~> {false} with seq-variable(_Y3,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {false<>} {_Y2} ~>* {true<>} (10) ------ {exclusive-or(_Y3)} ~> {true} with seq-variable(_Y3,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {true<>} {_Y2} ~>* {false<>} (10) ------ {exclusive-or(_Y3)} ~> {true} with seq-variable(_Y3,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {true<>} {_Y2} ~>* {true<>} (10) ------ {exclusive-or(_Y3)} ~> {false} with seq-variable(_Y3,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {exclusive-or(Xs)} -> {exclusive-or(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {false<>} {_Y2} ~>* {false<>} (10) ------ {xor(_Y3)} ~> {false} with seq-variable(_Y3,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {false<>} {_Y2} ~>* {true<>} (10) ------ {xor(_Y3)} ~> {true} with seq-variable(_Y3,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {true<>} {_Y2} ~>* {false<>} (10) ------ {xor(_Y3)} ~> {true} with seq-variable(_Y3,0,#,LONGEST) {_Y3} ~>* {_Y1,_Y2} {_Y1} ~>* {true<>} {_Y2} ~>* {true<>} (10) ------ {xor(_Y3)} ~> {false} with seq-variable(_Y3,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {xor(Xs)} -> {exclusive-or(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) # (10) ------ {null-type()} ~> {null-type[]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {null-type(_Y1)} -> {null-type(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) # (10) ------ {null-value()} ~> {datatype-value("null-value")} # (10) ------ {null()} ~> {datatype-value("null-value")} # (10) ------ {null-type[],null-value<>} =ty=> {true<>} # (10) ------ {null-type[],null<>} =ty=> {true<>} {_Y1} ~>* {M,N} {integers,M} =ty=>* {true<>} {integers,N} =ty=>* {true<>} (10) ------ {bounded-integers(_Y1)} ~> {tyinter(integers-from(M),integers-up-to(N))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(N,1,1,LONGEST) seq-variable(M,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {bounded-integers(Xs)} -> {bounded-integers(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {M,N} {integers,M} =ty=>* {true<>} {integers,N} =ty=>* {true<>} (10) ------ {bounded-ints(_Y1)} ~> {tyinter(integers-from(M),integers-up-to(N))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(N,1,1,LONGEST) seq-variable(M,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {bounded-ints(Xs)} -> {bounded-integers(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) # (10) ------ {positive-integers()} ~> {integers-from(1)} # (10) ------ {pos-ints()} ~> {integers-from(1)} # (10) ------ {negative-integers()} ~> {integers-up-to(-1)} # (10) ------ {neg-ints()} ~> {integers-up-to(-1)} # (10) ------ {natural-numbers()} ~> {integers-from(0)} # (10) ------ {nats()} ~> {integers-from(0)} {_Y1} ~>* {N} {integers,N} =ty=>* {true<>} (10) ------ {integer-negate(_Y1)} ~> {integer-subtract(0,N)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(N,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {integer-negate(Xs)} -> {integer-negate(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {N} {integers,N} =ty=>* {true<>} (10) ------ {int-neg(_Y1)} ~> {integer-subtract(0,N)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(N,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {int-neg(Xs)} -> {integer-negate(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {M,N} {integers,M} =ty=>* {true<>} {integers,N} =ty=>* {true<>} {is-greater(M,N)} ~>* {false<>} (10) ------ {integer-sequence(_Y1)} ~> {M,integer-sequence(integer-add(M,1),N)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(N,1,1,LONGEST) seq-variable(M,1,1,LONGEST) {_Y1} ~>* {M,N} {integers,M} =ty=>* {true<>} {integers,N} =ty=>* {true<>} {is-greater(M,N)} ~>* {true<>} (10) ------ {integer-sequence(_Y1)} ~> {#} with seq-variable(_Y1,0,#,LONGEST) seq-variable(N,1,1,LONGEST) seq-variable(M,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {integer-sequence(Xs)} -> {integer-sequence(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {T} ~>* {_Y1} {tystar(values),_Y1} =ty=>* {true<>} (10) ------ {thunks(T)} ~> {thunks[_Y1]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {thunks(_Y1)} -> {thunks(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_X1} {tyopt(values),_X1} =ty=>* {true<>} (10) ------ {thunk(_Y1)} ~> {datatype-value("thunk",_X1)} with seq-variable(_Y1,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {thunk(Xs)} -> {thunk(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {abstractions(tycomp(null-type,T)),_Y1} =ty=>* {true<>} (10) ------ {thunks[T],thunk<_Y1>} =ty=> {true<>} {_Y3} ~>* {_Y1} {_Y1} ~>* {thunk<_Y2>} {_Y2} ~>* {abstraction} (10) ------ {force(_Y3)} ~> {no-given(X)} with seq-variable(_Y3,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {force(Xs)} -> {force(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) # (10) ------ {patterns()} ~> {patterns[]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {patterns(_Y1)} -> {patterns(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_X1} {tyopt(values),_X1} =ty=>* {true<>} (10) ------ {pattern(_Y1)} ~> {datatype-value("pattern",_X1)} with seq-variable(_Y1,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {pattern(Xs)} -> {pattern(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {abstractions(tycomp(values,environments)),_Y1} =ty=>* {true<>} (10) ------ {patterns[],pattern<_Y1>} =ty=> {true<>} # (10) ------ {pattern-any()} ~> {pattern(abstraction(map))} {_Y1} ~>* {I} {identifiers,I} =ty=>* {true<>} (10) ------ {pattern-bind(_Y1)} ~> {pattern(abstraction(bind-value(I,given)))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(I,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {pattern-bind(Xs)} -> {pattern-bind(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) # (10) ------ {pattern-type(T)} ~> {pattern(abstraction(if-true-else(is-in-type(given,T),map,fail)))} {_Y1} ~>* {P1,P2} {values,P1} =ty=>* {true<>} {values,P2} =ty=>* {true<>} (10) ------ {pattern-else(_Y1)} ~> {pattern(abstraction(else(match(given,P1),match(given,P2))))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(P2,1,1,LONGEST) seq-variable(P1,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {pattern-else(Xs)} -> {pattern-else(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {P1,P2} {values,P1} =ty=>* {true<>} {values,P2} =ty=>* {true<>} (10) ------ {pattern-unite(_Y1)} ~> {pattern(abstraction(collateral(match(given,P1),match(given,P2))))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(P2,1,1,LONGEST) seq-variable(P1,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {pattern-unite(Xs)} -> {pattern-unite(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y3} ~>* {V,_Y1} {_Y1} ~>* {pattern<_Y2>} {_Y2} ~>* {abstraction} {values,V} =ty=>* {true<>} (10) ------ {match(_Y3)} ~> {give(V,X)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {_Y5} ~>* {_Y1,_Y3} {_Y1} ~>* {_Y2} {_Y3} ~>* {_Y4} {"pattern"} ~>* {_Y7} {list-elements(adt-fields(_Y2))} ~>* {V1s} {list-elements(adt-fields(_Y4))} ~>* {V2s} {tystar(values),V1s} =ty=>* {true<>} {tystar(values),V2s} =ty=>* {true<>} {tystar(values),_Y2} =ty=>* {true<>} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y7} =ty=>* {true<>} {_adt-constructor(_Y2)} ~>* {I1} {_adt-constructor(_Y4)} ~>* {I2} {I2} ~>* {_Y6} {tystar(values),_Y6} =ty=>* {true<>} _is-equal(_Y6,_Y7) |> false<> (10) ------ {match(_Y5)} ~> {sequential(check-true(is-equal(I1,I2)),check-true(is-equal(length(V1s),length(V2s))),collateral(interleave-map(match(tuple-elements(given)),tuple-zip(tuple(V1s),tuple(V2s)))))} with seq-variable(_Y5,0,#,LONGEST) seq-variable(V2s,0,#,LONGEST) seq-variable(I2,1,1,LONGEST) seq-variable(V1s,0,#,LONGEST) seq-variable(I1,1,1,LONGEST) {_Y1} ~>* {M1,M2} {dom(M2)} ~>* {_Y2} {maps(tyopt(values),tyopt(values)),M1} =ty=>* {true<>} {maps(tyopt(values),tyopt(values)),M2} =ty=>* {true<>} {set} ~>* {_Y3} {tystar(values),_Y2} =ty=>* {true<>} {tystar(values),_Y3} =ty=>* {true<>} _is-equal(_Y2,_Y3) |> true<> (10) ------ {match(_Y1)} ~> {if-true-else(is-equal(dom(M1),set),map,fail)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(M2,1,1,LONGEST) seq-variable(M1,1,1,LONGEST) {_Y1} ~>* {M1,M2} {dom(M2)} ~>* {_Y2} {maps(tyopt(values),tyopt(values)),M1} =ty=>* {true<>} {maps(tyopt(values),tyopt(values)),M2} =ty=>* {true<>} {set} ~>* {_Y3} {some-element(dom(M2))} ~>* {K} {tystar(values),_Y2} =ty=>* {true<>} {tystar(values),_Y3} =ty=>* {true<>} _is-equal(_Y2,_Y3) |> false<> (10) ------ {match(_Y1)} ~> {if-true-else(is-in-set(K,dom(M1)),collateral(match(map-lookup(M1,K),map-lookup(M2,K)),match(map-delete(M1,set(K)),map-delete(M2,set(K)))),fail)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(M2,1,1,LONGEST) seq-variable(M1,1,1,LONGEST) {_Y1} ~>* {V,P} {tyunion(datatype-values,maps(tyopt(values),tyopt(values))),P} =ty=>* {false<>} {values,P} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {match(_Y1)} ~> {if-true-else(is-equal(V,P),map,fail)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(P,1,1,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {match(Xs)} -> {match(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y3} ~>* {V,_Y1} {_Y1} ~>* {pattern<_Y2>} {_Y2} ~>* {abstraction} {values,V} =ty=>* {true<>} (10) ------ {match-loosely(_Y3)} ~> {give(V,X)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {_Y5} ~>* {_Y1,_Y3} {_Y1} ~>* {_Y2} {_Y3} ~>* {_Y4} {"pattern"} ~>* {_Y7} {list-elements(adt-fields(_Y2))} ~>* {V1s} {list-elements(adt-fields(_Y4))} ~>* {V2s} {tystar(values),V1s} =ty=>* {true<>} {tystar(values),V2s} =ty=>* {true<>} {tystar(values),_Y2} =ty=>* {true<>} {tystar(values),_Y4} =ty=>* {true<>} {tystar(values),_Y7} =ty=>* {true<>} {_adt-constructor(_Y2)} ~>* {I1} {_adt-constructor(_Y4)} ~>* {I2} {I2} ~>* {_Y6} {tystar(values),_Y6} =ty=>* {true<>} _is-equal(_Y6,_Y7) |> false<> (10) ------ {match-loosely(_Y5)} ~> {sequential(check-true(is-equal(I1,I2)),check-true(is-equal(length(V1s),length(V2s))),collateral(interleave-map(match-loosely(tuple-elements(given)),tuple-zip(tuple(V1s),tuple(V2s)))))} with seq-variable(_Y5,0,#,LONGEST) seq-variable(V2s,0,#,LONGEST) seq-variable(I2,1,1,LONGEST) seq-variable(V1s,0,#,LONGEST) seq-variable(I1,1,1,LONGEST) {_Y1} ~>* {M1,M2} {dom(M2)} ~>* {_Y2} {maps(tyopt(values),tyopt(values)),M1} =ty=>* {true<>} {maps(tyopt(values),tyopt(values)),M2} =ty=>* {true<>} {set} ~>* {_Y3} {tystar(values),_Y2} =ty=>* {true<>} {tystar(values),_Y3} =ty=>* {true<>} _is-equal(_Y2,_Y3) |> true<> (10) ------ {match-loosely(_Y1)} ~> {map} with seq-variable(_Y1,0,#,LONGEST) seq-variable(M2,1,1,LONGEST) seq-variable(M1,1,1,LONGEST) {_Y1} ~>* {M1,M2} {dom(M2)} ~>* {_Y2} {maps(tyopt(values),tyopt(values)),M1} =ty=>* {true<>} {maps(tyopt(values),tyopt(values)),M2} =ty=>* {true<>} {set} ~>* {_Y3} {some-element(dom(M2))} ~>* {K} {tystar(values),_Y2} =ty=>* {true<>} {tystar(values),_Y3} =ty=>* {true<>} _is-equal(_Y2,_Y3) |> false<> (10) ------ {match-loosely(_Y1)} ~> {if-true-else(is-in-set(K,dom(M1)),collateral(match-loosely(map-lookup(M1,K),map-lookup(M2,K)),match-loosely(map-delete(M1,set(K)),map-delete(M2,set(K)))),fail)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(M2,1,1,LONGEST) seq-variable(M1,1,1,LONGEST) {_Y1} ~>* {DV,P} {tyunion(datatype-values,maps(tyopt(values),tyopt(values))),P} =ty=>* {false<>} {values,DV} =ty=>* {true<>} {values,P} =ty=>* {true<>} (10) ------ {match-loosely(_Y1)} ~> {if-true-else(is-equal(DV,P),map,fail)} with seq-variable(_Y1,0,#,LONGEST) seq-variable(P,1,1,LONGEST) seq-variable(DV,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {match-loosely(Xs)} -> {match-loosely(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {values,P} =ty=>* {true<>} (10) ------ {case-match(P,X)} ~> {scope(match(given,P),X)} with seq-variable(P,1,1,LONGEST) {X1} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X1'} (10) ------ {case-match(X1,X2)} -> {case-match(X1',X2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {values,P} =ty=>* {true<>} (10) ------ {case-match-loosely(P,X)} ~> {scope(match-loosely(given,P),X)} with seq-variable(P,1,1,LONGEST) {X1} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {X1'} (10) ------ {case-match-loosely(X1,X2)} -> {case-match-loosely(X1',X2)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {I} {identifiers,I} =ty=>* {true<>} (10) ------ {case-variant-value(_Y1)} ~> {case-match(variant(I,pattern-any),variant-value(given))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(I,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {case-variant-value(Xs)} -> {case-variant-value(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {T} ~>* {_Y1} {T'} ~>* {_Y2} {tystar(values),_Y1} =ty=>* {true<>} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {functions(T,T')} ~> {functions[_Y1,_Y2]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {functions(_Y1)} -> {functions(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) {_Y1} ~>* {_X1} {tyopt(values),_X1} =ty=>* {true<>} (10) ------ {function(_Y1)} ~> {datatype-value("function",_X1)} with seq-variable(_Y1,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {function(Xs)} -> {function(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {abstractions(tycomp(T,T')),_Y1} =ty=>* {true<>} (10) ------ {functions[T,T'],function<_Y1>} =ty=> {true<>} {_Y3} ~>* {_Y1,V} {_Y1} ~>* {function<_Y2>} {_Y2} ~>* {abstraction} {values,V} =ty=>* {true<>} (10) ------ {apply(_Y3)} ~> {give(V,X)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {apply(Xs)} -> {apply(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y3} ~>* {_Y1,V} {_Y1} ~>* {function<_Y2>} {_Y2} ~>* {abstraction} {values,V} =ty=>* {true<>} (10) ------ {supply(_Y3)} ~> {thunk(abstraction(give(V,X)))} with seq-variable(_Y3,0,#,LONGEST) seq-variable(V,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {supply(Xs)} -> {supply(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y5} ~>* {_Y1,_Y3} {_Y1} ~>* {function<_Y2>} {_Y2} ~>* {abstraction} {_Y3} ~>* {function<_Y4>} {_Y4} ~>* {abstraction} (10) ------ {compose(_Y5)} ~> {function(abstraction(give(X,Y)))} with seq-variable(_Y5,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {compose(Xs)} -> {compose(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {F} {functions(values,functions(values,values)),F} =ty=>* {true<>} (10) ------ {uncurry(_Y1)} ~> {function(abstraction(apply(apply(F,checked(index(1,tuple-elements(given)))),checked(index(2,tuple-elements(given))))))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(F,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {uncurry(Xs)} -> {uncurry(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {F} {functions(tuples(values,values),values),F} =ty=>* {true<>} (10) ------ {curry(_Y1)} ~> {function(abstraction(partial-apply(F,given)))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(F,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {curry(Xs)} -> {curry(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {F,V} {functions(tuples(values,values),values),F} =ty=>* {true<>} {values,V} =ty=>* {true<>} (10) ------ {partial-apply(_Y1)} ~> {function(abstraction(apply(F,tuple(V,given))))} with seq-variable(_Y1,0,#,LONGEST) seq-variable(V,1,1,LONGEST) seq-variable(F,1,1,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {partial-apply(Xs)} -> {partial-apply(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST) {_Y1} ~>* {_Y2} {tystar(values),_Y2} =ty=>* {true<>} (10) ------ {abstractions(_Y1)} ~> {abstractions[_Y2]} {_Y1} ~>* {_Y2} {_Y2} -> {_Y3} (10) ------ {abstractions(_Y1)} -> {abstractions(_Y3)} with seq-variable(_Y3,0,#,LONGEST) seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) # (10) ------ {abstraction(_X1)} ~> {non-strict-datatype-value("abstraction",_X1)} {tycomp(Tq,T),_Y1} =ty=>* {true<>} (10) ------ {abstractions[tycomp],abstraction<_Y1>} =ty=> {true<>} # (10) ------ {closure(X),environment = Rho} -> {abstraction(closed(scope(Rho,X))),environment = Rho} {_Y2} ~>* {_Y1} {_Y1} ~>* {abstraction} (10) ------ {enact(_Y2)} ~> {X} with seq-variable(_Y2,0,#,LONGEST) {Xs} ~>* {_Y1} {_Y1} -> {_Y2} {_Y2} ->* {Ys} (10) ------ {enact(Xs)} -> {enact(Ys)} with seq-variable(_Y2,0,#,LONGEST) seq-variable(_Y1,0,#,LONGEST) seq-variable(Ys,0,#,LONGEST) seq-variable(Xs,0,#,LONGEST)